:root { --color-present: #6bdb83; --color-absent: #e62a11; --color-absent-clair: rgb(252, 151, 50); --color-retard: #f0c865; --color-justi: #29b1b9; --color-justi-clair: #48f6ff; --color-justi-invalide: #a84476; --color-nonwork: #badfff; --color-absent-justi: #ff86d7; --color-retard-justi: #e8c6eb; --color-error: #e62a11; --color-warning: #eec660; --color-information: #658ef0; --color-def: #d61616; --color-conflit: #ff00009c; --color-bg-def: #c8c8c8; --color-primary: #7059ff; --color-secondary: #6f9fff; --color-defaut: #fff; --color-defaut-dark: #444; --color-default-text: #1f1f1f; --motif-justi: repeating-linear-gradient( 135deg, transparent, transparent 4px, var(--color-justi) 4px, var(--color-justi) 8px ); --motif-justi-invalide: repeating-linear-gradient( -135deg, transparent, transparent 4px, var(--color-justi-invalide) 4px, var(--color-justi-invalide) 8px ); } * { box-sizing: border-box; } .selectors > * { margin: 10px 0; } .selectors:disabled { opacity: 0.5; } #validate_selectors { margin: 15px 0; } .no-display { display: none !important; } /* === Gestion de la timeline === */ #tl_date { visibility: hidden; width: 0px; height: 0px; position: absolute; left: 15%; } .infos-button { position: relative; display: inline-block; vertical-align: middle; } .infos { position: relative; display: flex; justify-content: start; align-content: center; gap: 10px; } #datestr { cursor: pointer; background-color: white; border: 1px #444 solid; border-radius: 5px; padding: 5px; min-width: 250px; display: inline-block; min-height: 20px; } #tl_slider { width: 90%; cursor: grab; /* visibility: hidden; */ } #datestr, #time { width: fit-content; } .ui-slider-handle.tl_handle { background: none; width: 25px; height: 25px; visibility: visible; background-position: top; background-size: cover; border: none; top: -180%; cursor: grab; } #l_handle { background-image: url(../icons/l_handle.svg); } #r_handle { background-image: url(../icons/r_handle.svg); } .ui-slider-range.ui-widget-header.ui-corner-all { background-color: var(--color-warning); background-image: none; opacity: 0.5; visibility: visible; } /* === Gestion des etuds row === */ .etud_row { display: grid; grid-template-columns: 2% 20% 55% auto; gap: 16px; background-color: white; border-radius: 15px; padding: 4px 16px; margin: 0.5% 0; box-shadow: -1px 12px 5px -8px rgba(68, 68, 68, 0.61); -webkit-box-shadow: -1px 12px 5px -8px rgba(68, 68, 68, 0.61); -moz-box-shadow: -1px 12px 5px -8px rgba(68, 68, 68, 0.61); max-width: 800px; } .etud_row * { display: flex; justify-content: center; align-items: center; height: 50px; } .etud_row.def, .etud_row.dem { background-color: var(--color-bg-def); } /* --- Index --- */ .etud_row .index_field { grid-column: 1; } /* --- Nom étud --- */ .etud_row .name_field { grid-column: 2; height: 100%; justify-content: start; } .etud_row .name_field .name_set { flex-direction: column; align-items: flex-start; margin: 0 5%; cursor: pointer; } .etud_row.def .nom::after, .tr.def .td.sticky span::after { display: block; content: " (Déf.)"; color: var(--color-def); margin-left: 2px; } .etud_row.dem .nom::after, .tr.dem .td.sticky span::after { display: block; content: " (Dém.)"; color: var(--color-def); margin-left: 2px; } .etud_row .name_field .name_set * { padding: 0; margin: 0; } .etud_row .name_field .name_set h4 { font-size: small; font-weight: 600; } .etud_row .name_field .name_set h5 { font-size: x-small; } .etud_row .pdp { border-radius: 15px; } /* --- Barre assiduités --- */ .etud_row .assiduites_bar { display: grid; grid-template-columns: 7px 1fr; gap: 13px; grid-column: 3; position: relative; } .etud_row .assiduites_bar .filler { height: 5px; width: 90%; background-color: white; border: 1px solid #444; } .etud_row .assiduites_bar #prevDateAssi { height: 7px; width: 7px; background-color: white; border: 1px solid #444; margin: 0px 8px; } .etud_row .assiduites_bar #prevDateAssi.single { height: 9px; width: 9px; } .etud_row.conflit { background-color: var(--color-conflit); } .etud_row .assiduites_bar .absent, .demo.absent { background-color: var(--color-absent) !important; } .etud_row .assiduites_bar .present, .demo.present { background-color: var(--color-present) !important; } .etud_row .assiduites_bar .retard, .demo.retard { background-color: var(--color-retard) !important; } .demo.nonwork { background-color: var(--color-nonwork) !important; } .etud_row .assiduites_bar .justified, .demo.justified { background-image: var(--motif-justi); } .etud_row .assiduites_bar .invalid_justified, .demo.invalid_justified { background-image: var(--motif-justi-invalide); } /* --- Boutons assiduités --- */ .etud_row .btns_field { grid-column: 4; } .btns_field:disabled { opacity: 0.7; } .etud_row .btns_field * { margin: 0 5%; cursor: pointer; width: 35px; height: 35px; } .rbtn { -webkit-appearance: none; appearance: none; cursor: pointer; } .rbtn::before { content: ""; display: inline-block; width: 35px; height: 35px; background-position: center; background-size: cover; border-radius: 5px; border: 1px solid var(--color-defaut-dark); } .rbtn.present::before { background-image: url(../icons/present.svg); background-color: var(--color-present); } .rbtn.absent::before { background-color: var(--color-absent); background-image: url(../icons/absent.svg); } .rbtn.aucun::before { background-image: url(../icons/aucun.svg); background-color: var(--color-defaut-dark); } .rbtn.retard::before { background-color: var(--color-retard); background-image: url(../icons/retard.svg); } .rbtn:checked:before { outline: 5px solid var(--color-primary); border-radius: 50%; } .rbtn:focus { outline: none !important; } /*<== Modal conflit ==>*/ .modal { display: block; position: fixed; z-index: 500; left: 0; top: 0; width: 100%; height: 100%; overflow: auto; background-color: rgba(0, 0, 0, 0.4); } .modal-content { background-color: #fefefe; margin: 5% auto; padding: 20px; border: 1px solid #888; width: 80%; height: 320px; position: relative; border-radius: 10px; } .close { color: #111; position: absolute; right: 5px; top: 0px; font-size: 28px; font-weight: bold; cursor: pointer; } /* Ajout de styles pour la frise chronologique */ .modal-timeline { display: flex; flex-direction: column; align-items: stretch; margin-bottom: 20px; } .time-labels, .assiduites-container { display: flex; justify-content: space-between; position: relative; } .time-label { font-size: 14px; margin-bottom: 4px; } .assiduite { position: absolute; top: 20px; cursor: pointer; border-radius: 4px; z-index: 10; height: 100px; padding: 4px; } .assiduite-info { display: flex; flex-direction: column; height: 100%; justify-content: space-between; } .assiduite-id, .assiduite-period, .assiduite-state, .assiduite-user_id { font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; text-align: center; } .assiduites-container { min-height: 20px; height: calc(50% - 60px); /* Augmentation de la hauteur du conteneur des assiduités */ position: relative; margin-bottom: 10px; } .action-buttons { position: absolute; text-align: center; display: flex; justify-content: space-evenly; align-items: center; height: 60px; width: 100%; bottom: 5%; } /* Ajout de la classe CSS pour la bordure en pointillés */ .assiduite.selected { border: 2px dashed black; } .assiduite-special { height: 120px; position: absolute; z-index: 5; border: 2px solid #000; background-color: rgba(36, 36, 36, 0.25); background-image: repeating-linear-gradient( 135deg, transparent, transparent 5px, rgba(81, 81, 81, 0.61) 5px, rgba(81, 81, 81, 0.61) 10px ); border-radius: 5px; } /*<== Info sur l'assiduité sélectionnée ==>*/ .modal-assiduite-content { background-color: #fefefe; margin: 5% auto; padding: 20px; border: 1px solid #888; width: max-content; position: relative; border-radius: 10px; display: none; } .modal-assiduite-content.show { display: block; } .modal-assiduite-content .infos { display: flex; flex-direction: column; justify-content: space-evenly; align-items: flex-start; } /*<=== Mass Action ==>*/ .mass-selection { display: flex; justify-content: flex-start; align-items: center; width: 100%; margin: 2% 0; } .mass-selection span { margin: 0 1%; } .mass-selection .rbtn { background-color: transparent; cursor: pointer; } /*<== Loader ==> */ .loader-container { display: none; /* Cacher le loader par défaut */ position: fixed; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(0, 0, 0, 0.5); /* Fond semi-transparent pour bloquer les clics */ z-index: 9999; /* Placer le loader au-dessus de tout le contenu */ } .loader { border: 6px solid #f3f3f3; border-radius: 50%; border-top: 6px solid var(--color-primary); width: 60px; height: 60px; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); animation: spin 2s linear infinite; } @keyframes spin { 0% { transform: translate(-50%, -50%) rotate(0deg); } 100% { transform: translate(-50%, -50%) rotate(360deg); } } .fieldsplit { display: flex; justify-content: flex-start; align-items: center; flex-direction: column; } .fieldsplit legend { margin: 0; } #page-assiduite-content { display: flex; flex-wrap: wrap; gap: 5%; flex-direction: column; } #page-assiduite-content > * { margin: 1.5% 0; } .rouge { color: var(--color-error); } .legende { border: 1px dashed #333; width: 75%; padding: 20px; } .order { background-image: url(../icons/sort.svg); } .filter { background-image: url(../icons/filter.svg); } .download { background-image: url(../icons/download.svg); } .iconline { display: flex; justify-content: flex-start; gap: min(2%, 15px); align-items: center; } [name="destroyFile"] { -webkit-appearance: none; appearance: none; cursor: pointer; background-image: url(../icons/trash.svg); } [name="destroyFile"]:checked { background-image: url(../icons/remove_circle.svg); } .icon { display: block; width: 24px; height: 24px; outline: none !important; border: none !important; cursor: pointer; margin: 0 2px !important; } .icon:focus { outline: none; border: none; } #forcemodule { border-radius: 8px; background: var(--color-error); max-width: fit-content; padding: 5px; color: white; } .demo { width: 23px; height: 13px; display: inline-block; border: solid 1px #333; } .assi-liste { border: 1px solid gray; border-radius: 12px; margin-right: 12px; padding: 12px; } #options-tableau label { font-weight: normal; margin-right: 12px; } section.assi-form { margin-bottom: 12px; } table.liste_assi td.date { width: 140px; } table.liste_assi.dataTable tbody td.date-debut { padding-left: 12px; } table.liste_assi td.actions { white-space: nowrap; /* boutons horizontalement */ } table.liste_assi td.actions a:last-child { padding-right: 12px; } tr.row-assiduite td { border-bottom: 1px solid grey; } table.liste_assi tbody tr td.assi-type { padding-left: 8px; padding-right: 4px; } tr.row-assiduite.absent td.assi-type { background-color: var(--color-absent-clair); } tr.row-assiduite.absent.justifiee td.assi-type { background-color: var(--color-absent-justi); } tr.row-assiduite.retard td.assi-type { background-color: var(--color-retard); } tr.row-assiduite.present td.assi-type { background-color: var(--color-present); } tr.row-justificatif.valide td.assi-type { background-color: var(--color-justi); }