Switched layout from `flex column` to `flex row` to be responsive and adaptive\n + corrected `timestamp` into history's view

This commit is contained in:
xdrm-brackets 2017-01-10 17:26:50 +01:00
parent e9b6b4186d
commit 88f4839cd3
4 changed files with 468 additions and 543 deletions

View File

@ -292,18 +292,19 @@
/* [2-2] INLINE-ROW pour afficher des lignes /* [2-2] INLINE-ROW pour afficher des lignes
=========================================================*/ =========================================================*/
& > section.fstart{ & > section.fstart{
flex-direction: column; flex-direction: row;
flex-wrap: nowrap; flex-wrap: wrap;
justify-content: flex-start; justify-content: flex-start;
align-items: center; align-items: center;
.searchbar{ .searchbar{
flex: 1em 0 0; flex: auto 1 1;
width: calc( 100% - 3em - 2*2em );
} }
} }
& > section.active > .inline-row{ flex: auto 1 1; }
& > section > .inline-row{ & > section > .inline-row{
width: calc( 100% - 4em - 2*1em ); width: calc( 100% - 4em - 2*1em );

View File

@ -14,492 +14,424 @@
/* [3] Formulaires /* [3] Formulaires
=========================================================*/ =========================================================*/
/* (1) Champs de texte */ /* (1) Champs de texte */
/* (2) Boutons */ /* (2) Boutons */ }
} #WRAPPER > #CONTAINER > section {
#WRAPPER > #CONTAINER > section { display: none;
display: none; flex-grow: 1; }
flex-grow: 1; #WRAPPER > #CONTAINER > section.active {
} display: flex;
#WRAPPER > #CONTAINER > section.active { flex-direction: row;
display: flex; align-items: flex-start;
flex-direction: row; justify-content: flex-start;
align-items: flex-start; flex-wrap: wrap; }
justify-content: flex-start; #WRAPPER > #CONTAINER > section.active .inline-box {
flex-wrap: wrap; flex: 0 0 1; }
} #WRAPPER > #CONTAINER > section.active .inline-row {
#WRAPPER > #CONTAINER > section.active .inline-box { flex: 3em 0 1; }
flex: 0 0 1; #WRAPPER > #CONTAINER > section.active .searchbar {
} display: inline-block;
#WRAPPER > #CONTAINER > section.active .inline-row { position: relative;
flex: 3em 0 1; flex: calc( 100% - 2*1em - 2*1em );
} margin: 1em;
#WRAPPER > #CONTAINER > section.active .searchbar { padding: .5em 1em;
display: inline-block; padding-left: 2em;
position: relative; border-radius: 3px;
flex: calc( 100% - 2*1em - 2*1em ); border: 1px solid #b1b1b1;
margin: 1em; background: #fff url("/src/static/sub-menu-side/search@b1b1b1.svg") 0.5em center no-repeat;
padding: .5em 1em; background-size: 1em;
padding-left: 2em; transition: border .4s ease-in-out; }
border-radius: 3px; #WRAPPER > #CONTAINER > section.active .searchbar:hover, #WRAPPER > #CONTAINER > section.active .searchbar:focus {
border: 1px solid #b1b1b1; border-color: #5630ed; }
background: #fff url("/src/static/sub-menu-side/search@b1b1b1.svg") 0.5em center no-repeat; #WRAPPER > #CONTAINER > section.active .error {
background-size: 1em; display: inline-block;
transition: border .4s ease-in-out; position: relative;
} width: calc( 100% - 2*1em - 2*1em );
#WRAPPER > #CONTAINER > section.active .searchbar:hover, #WRAPPER > #CONTAINER > section.active .searchbar:focus { height: 1em;
border-color: #5630ed; margin: 1em;
} padding: 1em;
#WRAPPER > #CONTAINER > section.active .error { border-radius: 3px;
display: inline-block; border: 1px solid #d52918;
position: relative; background: #d52918;
width: calc( 100% - 2*1em - 2*1em ); color: #fff;
height: 1em; text-shadow: 1px 1px #a72013; }
margin: 1em; #WRAPPER > #CONTAINER > section > .inline-box, #WRAPPER > #CONTAINER > section > .inline-row {
padding: 1em; display: inline-block;
border-radius: 3px; position: relative;
border: 1px solid #d52918; flex: calc( 50% - 2*1em - 2*1em );
background: #d52918; margin: 1em;
color: #fff; padding: 1em;
text-shadow: 1px 1px #a72013; border-radius: 3px;
} box-shadow: 0 0 1px #b7b7b7;
#WRAPPER > #CONTAINER > section > .inline-box, #WRAPPER > #CONTAINER > section > .inline-row { background-color: #fff;
display: inline-block; /* (1) Titre de l'element */
position: relative; /* (2) Code RFID */
flex: calc( 50% - 2*1em - 2*1em ); /* (3) Adresse mail */
margin: 1em; /* (4) Groupes */
padding: 1em; /* (5) Lien vers la modification */
border-radius: 3px; /* (6) Lien vers la suppression */ }
box-shadow: 0 0 1px #b7b7b7; #WRAPPER > #CONTAINER > section > .inline-box.hidden, #WRAPPER > #CONTAINER > section > .inline-row.hidden {
background-color: #fff; display: none; }
/* (1) Titre de l'element */ #WRAPPER > #CONTAINER > section > .inline-box a, #WRAPPER > #CONTAINER > section > .inline-row a {
/* (2) Code RFID */ text-decoration: none;
/* (3) Adresse mail */ color: inherit; }
/* (4) Groupes */ #WRAPPER > #CONTAINER > section > .inline-box.selected, #WRAPPER > #CONTAINER > section > .inline-row.selected {
/* (5) Lien vers la modification */ border: 1px solid #7362ff;
/* (6) Lien vers la suppression */ transition: box-shadow .2s ease-in-out; }
} #WRAPPER > #CONTAINER > section > .inline-box.selected:hover, #WRAPPER > #CONTAINER > section > .inline-row.selected:hover {
#WRAPPER > #CONTAINER > section > .inline-box.hidden, #WRAPPER > #CONTAINER > section > .inline-row.hidden { box-shadow: 2px 2px 7px #aaa; }
display: none; #WRAPPER > #CONTAINER > section > .inline-box .title, #WRAPPER > #CONTAINER > section > .inline-row .title {
} display: inline-block;
#WRAPPER > #CONTAINER > section > .inline-box a, #WRAPPER > #CONTAINER > section > .inline-row a { font-size: 1.15em;
text-decoration: none; font-weight: bold;
color: inherit; color: #ea4c06;
} white-space: nowrap; }
#WRAPPER > #CONTAINER > section > .inline-box.selected, #WRAPPER > #CONTAINER > section > .inline-row.selected { #WRAPPER > #CONTAINER > section > .inline-box .title > span, #WRAPPER > #CONTAINER > section > .inline-row .title > span {
border: 1px solid #7362ff; font-size: .8em;
transition: box-shadow .2s ease-in-out; color: #333; }
} #WRAPPER > #CONTAINER > section > .inline-box .code,
#WRAPPER > #CONTAINER > section > .inline-box.selected:hover, #WRAPPER > #CONTAINER > section > .inline-row.selected:hover { #WRAPPER > #CONTAINER > section > .inline-box .mail, #WRAPPER > #CONTAINER > section > .inline-row .code,
box-shadow: 2px 2px 7px #aaa; #WRAPPER > #CONTAINER > section > .inline-row .mail {
} display: block;
#WRAPPER > #CONTAINER > section > .inline-box .title, #WRAPPER > #CONTAINER > section > .inline-row .title { margin: 1em;
display: inline-block; color: #333;
font-size: 1.15em; white-space: nowrap; }
font-weight: bold; #WRAPPER > #CONTAINER > section > .inline-box .code svg,
color: #ea4c06; #WRAPPER > #CONTAINER > section > .inline-box .mail svg, #WRAPPER > #CONTAINER > section > .inline-row .code svg,
white-space: nowrap; #WRAPPER > #CONTAINER > section > .inline-row .mail svg {
} display: inline-block;
#WRAPPER > #CONTAINER > section > .inline-box .title > span, #WRAPPER > #CONTAINER > section > .inline-row .title > span { position: relative;
font-size: .8em; margin-left: .5em;
color: #333; margin-right: .5em;
} margin-bottom: -.6em;
#WRAPPER > #CONTAINER > section > .inline-box .code, width: 1.5em;
#WRAPPER > #CONTAINER > section > .inline-box .mail, #WRAPPER > #CONTAINER > section > .inline-row .code, height: 2em;
#WRAPPER > #CONTAINER > section > .inline-row .mail { pointer-events: none; }
display: block; #WRAPPER > #CONTAINER > section > .inline-box .code svg path#stylisable,
margin: 1em; #WRAPPER > #CONTAINER > section > .inline-box .mail svg path#stylisable, #WRAPPER > #CONTAINER > section > .inline-row .code svg path#stylisable,
color: #333; #WRAPPER > #CONTAINER > section > .inline-row .mail svg path#stylisable {
white-space: nowrap; fill: #333 !important;
} pointer-events: none; }
#WRAPPER > #CONTAINER > section > .inline-box .code svg, #WRAPPER > #CONTAINER > section > .inline-box .code svg path#stroke-stylisable,
#WRAPPER > #CONTAINER > section > .inline-box .mail svg, #WRAPPER > #CONTAINER > section > .inline-row .code svg, #WRAPPER > #CONTAINER > section > .inline-box .mail svg path#stroke-stylisable, #WRAPPER > #CONTAINER > section > .inline-row .code svg path#stroke-stylisable,
#WRAPPER > #CONTAINER > section > .inline-row .mail svg { #WRAPPER > #CONTAINER > section > .inline-row .mail svg path#stroke-stylisable {
display: inline-block; stroke: #333 !important;
position: relative; pointer-events: none; }
margin-left: .5em; #WRAPPER > #CONTAINER > section > .inline-box .groups, #WRAPPER > #CONTAINER > section > .inline-row .groups {
margin-right: .5em; display: block;
margin-bottom: -.6em; margin: 1em;
width: 1.5em; color: #333; }
height: 2em; #WRAPPER > #CONTAINER > section > .inline-box .groups svg, #WRAPPER > #CONTAINER > section > .inline-row .groups svg {
pointer-events: none; display: inline-block;
} position: relative;
#WRAPPER > #CONTAINER > section > .inline-box .code svg path#stylisable, margin-left: .5em;
#WRAPPER > #CONTAINER > section > .inline-box .mail svg path#stylisable, #WRAPPER > #CONTAINER > section > .inline-row .code svg path#stylisable, margin-right: .5em;
#WRAPPER > #CONTAINER > section > .inline-row .mail svg path#stylisable { margin-bottom: -.6em;
fill: #333 !important; width: 1.5em;
pointer-events: none; height: 2em;
} pointer-events: none; }
#WRAPPER > #CONTAINER > section > .inline-box .code svg path#stroke-stylisable, #WRAPPER > #CONTAINER > section > .inline-box .groups svg path, #WRAPPER > #CONTAINER > section > .inline-row .groups svg path {
#WRAPPER > #CONTAINER > section > .inline-box .mail svg path#stroke-stylisable, #WRAPPER > #CONTAINER > section > .inline-row .code svg path#stroke-stylisable, fill: #333 !important;
#WRAPPER > #CONTAINER > section > .inline-row .mail svg path#stroke-stylisable { pointer-events: none; }
stroke: #333 !important; #WRAPPER > #CONTAINER > section > .inline-box .groups > span, #WRAPPER > #CONTAINER > section > .inline-row .groups > span {
pointer-events: none; display: inline-block;
} position: relative;
#WRAPPER > #CONTAINER > section > .inline-box .groups, #WRAPPER > #CONTAINER > section > .inline-row .groups { padding: .1em .5em;
display: block; margin-right: calc( .4em + 2em );
margin: 1em; margin-bottom: .5em;
color: #333; border-radius: 3px 0 0 3px;
} border: 1px solid #bdbdbd;
#WRAPPER > #CONTAINER > section > .inline-box .groups svg, #WRAPPER > #CONTAINER > section > .inline-row .groups svg { box-shadow: inset 0 0 2px #fafafa;
display: inline-block; background-color: #f9f9f9;
position: relative; color: #333;
margin-left: .5em; cursor: default; }
margin-right: .5em; #WRAPPER > #CONTAINER > section > .inline-box .groups > span.add-group, #WRAPPER > #CONTAINER > section > .inline-box .groups > span.add-member, #WRAPPER > #CONTAINER > section > .inline-row .groups > span.add-group, #WRAPPER > #CONTAINER > section > .inline-row .groups > span.add-member {
margin-bottom: -.6em; border-radius: 3px;
width: 1.5em; cursor: pointer; }
height: 2em; #WRAPPER > #CONTAINER > section > .inline-box .groups > span > span.rem-group, #WRAPPER > #CONTAINER > section > .inline-box .groups > span > span.rem-member, #WRAPPER > #CONTAINER > section > .inline-row .groups > span > span.rem-group, #WRAPPER > #CONTAINER > section > .inline-row .groups > span > span.rem-member {
pointer-events: none; display: block;
} position: absolute;
#WRAPPER > #CONTAINER > section > .inline-box .groups svg path, #WRAPPER > #CONTAINER > section > .inline-row .groups svg path { top: -1px;
fill: #333 !important; left: 100%;
pointer-events: none; width: 1em;
} height: calc( 100% - .1em - 2px );
#WRAPPER > #CONTAINER > section > .inline-box .groups > span, #WRAPPER > #CONTAINER > section > .inline-row .groups > span { padding: .12em .5em;
display: inline-block; border-radius: 0 3px 3px 0;
position: relative; border: 1px solid #bdbdbd;
padding: .1em .5em; box-shadow: inset 0 0 2px #fafafa;
margin-right: calc( .4em + 2em ); background: url("/src/static/sub-menu-side/remove.svg") center center no-repeat;
margin-bottom: .5em; background-size: auto 70%;
border-radius: 3px 0 0 3px; background-color: #f9f9f9;
border: 1px solid #bdbdbd; color: inherit;
box-shadow: inset 0 0 2px #fafafa; cursor: pointer; }
background-color: #f9f9f9; #WRAPPER > #CONTAINER > section > .inline-box .groups > span > span.rem-group:hover, #WRAPPER > #CONTAINER > section > .inline-box .groups > span > span.rem-member:hover, #WRAPPER > #CONTAINER > section > .inline-row .groups > span > span.rem-group:hover, #WRAPPER > #CONTAINER > section > .inline-row .groups > span > span.rem-member:hover {
color: #333; background-image: url("/src/static/sub-menu-side/remove@d52918.svg"); }
cursor: default; #WRAPPER > #CONTAINER > section > .inline-box .link_edit,
} #WRAPPER > #CONTAINER > section > .inline-box .link_remove, #WRAPPER > #CONTAINER > section > .inline-row .link_edit,
#WRAPPER > #CONTAINER > section > .inline-box .groups > span.add-group, #WRAPPER > #CONTAINER > section > .inline-box .groups > span.add-member, #WRAPPER > #CONTAINER > section > .inline-row .groups > span.add-group, #WRAPPER > #CONTAINER > section > .inline-row .groups > span.add-member { #WRAPPER > #CONTAINER > section > .inline-row .link_remove {
border-radius: 3px; display: inline-block;
cursor: pointer; float: right;
} position: relative;
#WRAPPER > #CONTAINER > section > .inline-box .groups > span > span.rem-group, #WRAPPER > #CONTAINER > section > .inline-box .groups > span > span.rem-member, #WRAPPER > #CONTAINER > section > .inline-row .groups > span > span.rem-group, #WRAPPER > #CONTAINER > section > .inline-row .groups > span > span.rem-member { width: 1em;
display: block; height: 1em;
position: absolute; margin-left: 1em;
top: -1px; cursor: pointer; }
left: 100%; #WRAPPER > #CONTAINER > section > .inline-box .link_edit > svg,
width: 1em; #WRAPPER > #CONTAINER > section > .inline-box .link_remove > svg, #WRAPPER > #CONTAINER > section > .inline-row .link_edit > svg,
height: calc( 100% - .1em - 2px ); #WRAPPER > #CONTAINER > section > .inline-row .link_remove > svg {
padding: .12em .5em; width: 100%;
border-radius: 0 3px 3px 0; height: 100%;
border: 1px solid #bdbdbd; fill: #ddd !important;
box-shadow: inset 0 0 2px #fafafa; transition: fill .4s ease-in-out;
background: url("/src/static/sub-menu-side/remove.svg") center center no-repeat; pointer-events: none; }
background-size: auto 70%; #WRAPPER > #CONTAINER > section > .inline-box .link_edit:hover > svg,
background-color: #f9f9f9; #WRAPPER > #CONTAINER > section > .inline-box .link_remove:hover > svg, #WRAPPER > #CONTAINER > section > .inline-row .link_edit:hover > svg,
color: inherit; #WRAPPER > #CONTAINER > section > .inline-row .link_remove:hover > svg {
cursor: pointer; fill: #2193e6 !important; }
} #WRAPPER > #CONTAINER > section > .inline-box .link_remove:hover > svg, #WRAPPER > #CONTAINER > section > .inline-row .link_remove:hover > svg {
#WRAPPER > #CONTAINER > section > .inline-box .groups > span > span.rem-group:hover, #WRAPPER > #CONTAINER > section > .inline-box .groups > span > span.rem-member:hover, #WRAPPER > #CONTAINER > section > .inline-row .groups > span > span.rem-group:hover, #WRAPPER > #CONTAINER > section > .inline-row .groups > span > span.rem-member:hover { fill: #d52918 !important; }
background-image: url("/src/static/sub-menu-side/remove@d52918.svg"); #WRAPPER > #CONTAINER > section.fstart {
} flex-direction: row;
#WRAPPER > #CONTAINER > section > .inline-box .link_edit, flex-wrap: wrap;
#WRAPPER > #CONTAINER > section > .inline-box .link_remove, #WRAPPER > #CONTAINER > section > .inline-row .link_edit, justify-content: flex-start;
#WRAPPER > #CONTAINER > section > .inline-row .link_remove { align-items: center; }
display: inline-block; #WRAPPER > #CONTAINER > section.fstart .searchbar {
float: right; flex: auto 1 1; }
position: relative; #WRAPPER > #CONTAINER > section.active > .inline-row {
width: 1em; flex: auto 1 1; }
height: 1em; #WRAPPER > #CONTAINER > section > .inline-row {
margin-left: 1em; width: calc( 100% - 4em - 2*1em );
cursor: pointer; display: flex;
} flex-direction: row;
#WRAPPER > #CONTAINER > section > .inline-box .link_edit > svg, flex-wrap: nowrap;
#WRAPPER > #CONTAINER > section > .inline-box .link_remove > svg, #WRAPPER > #CONTAINER > section > .inline-row .link_edit > svg, justify-content: space-between;
#WRAPPER > #CONTAINER > section > .inline-row .link_remove > svg { align-items: center;
width: 100%; overflow: hidden; }
height: 100%; #WRAPPER > #CONTAINER > section > .inline-row > span {
fill: #ddd !important; display: flex;
transition: fill .4s ease-in-out; flex-direction: column;
pointer-events: none; justify-content: space-around;
} flex: 100% 1 1;
#WRAPPER > #CONTAINER > section > .inline-box .link_edit:hover > svg, border-left: 1px solid #ddd;
#WRAPPER > #CONTAINER > section > .inline-box .link_remove:hover > svg, #WRAPPER > #CONTAINER > section > .inline-row .link_edit:hover > svg, text-align: center; }
#WRAPPER > #CONTAINER > section > .inline-row .link_remove:hover > svg { #WRAPPER > #CONTAINER > section > .inline-row > span:first-child {
fill: #2193e6 !important; border-left: 0; }
} #WRAPPER > #CONTAINER > section > .inline-row button {
#WRAPPER > #CONTAINER > section > .inline-box .link_remove:hover > svg, #WRAPPER > #CONTAINER > section > .inline-row .link_remove:hover > svg { flex: auto;
fill: #d52918 !important; width: 5em; }
} #WRAPPER > #CONTAINER > section > form, #WRAPPER > #CONTAINER .form {
#WRAPPER > #CONTAINER > section.fstart { display: inline-block;
flex-direction: column; position: relative;
flex-wrap: nowrap; left: 50%;
justify-content: flex-start; margin: .3em 0;
align-items: center; padding: 1em;
} border-radius: 3px;
#WRAPPER > #CONTAINER > section.fstart .searchbar { border-color: #d52918;
flex: 1em 0 0; box-shadow: 0 0 1px #b7b7b7;
width: calc( 100% - 3em - 2*2em ); background-color: #fff;
} transform: translateX(-50%); }
#WRAPPER > #CONTAINER > section > .inline-row { #WRAPPER > #CONTAINER > section > form.valid, #WRAPPER > #CONTAINER .form.valid {
width: calc( 100% - 4em - 2*1em ); border-color: #27a560; }
display: flex; #WRAPPER > #CONTAINER > section > form.neutral, #WRAPPER > #CONTAINER .form.neutral {
flex-direction: row; border-color: #2193e6; }
flex-wrap: nowrap; #WRAPPER > #CONTAINER > section > form.search, #WRAPPER > #CONTAINER .form.search {
justify-content: space-between; border-color: #2193e6; }
align-items: center; #WRAPPER > #CONTAINER > section > form .edit_search_view,
overflow: hidden; #WRAPPER > #CONTAINER > section > form .remove_search_view, #WRAPPER > #CONTAINER .form .edit_search_view,
} #WRAPPER > #CONTAINER .form .remove_search_view {
#WRAPPER > #CONTAINER > section > .inline-row > span { display: inline-block;
display: flex; width: 100%;
flex-direction: column; text-align: center;
justify-content: space-around; color: #aaaaaa; }
flex: 100% 1 1; #WRAPPER > #CONTAINER > section > form .edit_search_view span,
border-left: 1px solid #ddd; #WRAPPER > #CONTAINER > section > form .remove_search_view span, #WRAPPER > #CONTAINER .form .edit_search_view span,
text-align: center; #WRAPPER > #CONTAINER .form .remove_search_view span {
} color: #888888; }
#WRAPPER > #CONTAINER > section > .inline-row > span:first-child { #WRAPPER > #CONTAINER input[type=text],
border-left: 0; #WRAPPER > #CONTAINER input[type=mail],
} #WRAPPER > #CONTAINER input[type=password],
#WRAPPER > #CONTAINER > section > .inline-row button { #WRAPPER > #CONTAINER select, #WRAPPER > #CONTAINER.invalid > input[type=text], #WRAPPER > #CONTAINER.invalid > input[type=mail], #WRAPPER > #CONTAINER.invalid > input[type=password], #WRAPPER > #CONTAINER.invalid > select,
flex: auto; #WRAPPER > #CONTAINER input.invalid[type=text],
width: 5em; #WRAPPER > #CONTAINER input.invalid[type=mail],
} #WRAPPER > #CONTAINER input.invalid[type=password],
#WRAPPER > #CONTAINER > section > form, #WRAPPER > #CONTAINER .form { #WRAPPER > #CONTAINER select.invalid {
display: inline-block; display: inline-block;
position: relative; margin: 1em 0;
left: 50%; padding: .7em 1em;
margin: .3em 0; border-radius: 3px;
padding: 1em; border: 1px solid #d7dde8;
border-radius: 3px; color: #2f3033;
border-color: #d52918; transition: border .4s ease-in-out; }
box-shadow: 0 0 1px #b7b7b7; #WRAPPER > #CONTAINER input[type=text]:focus, #WRAPPER > #CONTAINER input[type=text]:hover,
background-color: #fff; #WRAPPER > #CONTAINER input[type=mail]:focus,
transform: translateX(-50%); #WRAPPER > #CONTAINER input[type=mail]:hover,
} #WRAPPER > #CONTAINER input[type=password]:focus,
#WRAPPER > #CONTAINER > section > form.valid, #WRAPPER > #CONTAINER .form.valid { #WRAPPER > #CONTAINER input[type=password]:hover,
border-color: #27a560; #WRAPPER > #CONTAINER select:focus,
} #WRAPPER > #CONTAINER select:hover, #WRAPPER > #CONTAINER.invalid > input[type=text]:focus, #WRAPPER > #CONTAINER.invalid > input[type=text]:hover, #WRAPPER > #CONTAINER.invalid > input[type=mail]:focus, #WRAPPER > #CONTAINER.invalid > input[type=mail]:hover, #WRAPPER > #CONTAINER.invalid > input[type=password]:focus, #WRAPPER > #CONTAINER.invalid > input[type=password]:hover, #WRAPPER > #CONTAINER.invalid > select:focus, #WRAPPER > #CONTAINER.invalid > select:hover,
#WRAPPER > #CONTAINER > section > form.neutral, #WRAPPER > #CONTAINER .form.neutral { #WRAPPER > #CONTAINER input.invalid[type=text]:focus,
border-color: #2193e6; #WRAPPER > #CONTAINER input.invalid[type=text]:hover,
} #WRAPPER > #CONTAINER input.invalid[type=mail]:focus,
#WRAPPER > #CONTAINER > section > form.search, #WRAPPER > #CONTAINER .form.search { #WRAPPER > #CONTAINER input.invalid[type=mail]:hover,
border-color: #2193e6; #WRAPPER > #CONTAINER input.invalid[type=password]:focus,
} #WRAPPER > #CONTAINER input.invalid[type=password]:hover,
#WRAPPER > #CONTAINER > section > form .edit_search_view, #WRAPPER > #CONTAINER select.invalid:focus,
#WRAPPER > #CONTAINER > section > form .remove_search_view, #WRAPPER > #CONTAINER .form .edit_search_view, #WRAPPER > #CONTAINER select.invalid:hover {
#WRAPPER > #CONTAINER .form .remove_search_view { border-color: #d52918; }
display: inline-block; #WRAPPER > #CONTAINER select {
width: 100%; width: 100%;
text-align: center; display: block;
color: #aaaaaa; background: #fff; }
} #WRAPPER > #CONTAINER select option {
#WRAPPER > #CONTAINER > section > form .edit_search_view span, padding: .5em; }
#WRAPPER > #CONTAINER > section > form .remove_search_view span, #WRAPPER > #CONTAINER .form .edit_search_view span, #WRAPPER > #CONTAINER .valid > input[type=text]:focus, #WRAPPER > #CONTAINER .valid > input[type=text]:hover,
#WRAPPER > #CONTAINER .form .remove_search_view span { #WRAPPER > #CONTAINER .valid > input[type=mail]:focus,
color: #888888; #WRAPPER > #CONTAINER .valid > input[type=mail]:hover,
} #WRAPPER > #CONTAINER .valid > input[type=password]:focus,
#WRAPPER > #CONTAINER input[type=text], #WRAPPER > #CONTAINER .valid > input[type=password]:hover,
#WRAPPER > #CONTAINER input[type=mail], #WRAPPER > #CONTAINER .valid > select:focus,
#WRAPPER > #CONTAINER input[type=password], #WRAPPER > #CONTAINER .valid > select:hover,
#WRAPPER > #CONTAINER select, #WRAPPER > #CONTAINER.invalid > input[type=text], #WRAPPER > #CONTAINER.invalid > input[type=mail], #WRAPPER > #CONTAINER.invalid > input[type=password], #WRAPPER > #CONTAINER.invalid > select, #WRAPPER > #CONTAINER input.valid[type=text]:focus,
#WRAPPER > #CONTAINER input.invalid[type=text], #WRAPPER > #CONTAINER input.valid[type=text]:hover,
#WRAPPER > #CONTAINER input.invalid[type=mail], #WRAPPER > #CONTAINER input.valid[type=mail]:focus,
#WRAPPER > #CONTAINER input.invalid[type=password], #WRAPPER > #CONTAINER input.valid[type=mail]:hover,
#WRAPPER > #CONTAINER select.invalid { #WRAPPER > #CONTAINER input.valid[type=password]:focus,
display: inline-block; #WRAPPER > #CONTAINER input.valid[type=password]:hover,
margin: 1em 0; #WRAPPER > #CONTAINER select.valid:focus,
padding: .7em 1em; #WRAPPER > #CONTAINER select.valid:hover {
border-radius: 3px; border-color: #27a560; }
border: 1px solid #d7dde8; #WRAPPER > #CONTAINER .neutral > input[type=text]:focus, #WRAPPER > #CONTAINER .neutral > input[type=text]:hover,
color: #2f3033; #WRAPPER > #CONTAINER .neutral > input[type=mail]:focus,
transition: border .4s ease-in-out; #WRAPPER > #CONTAINER .neutral > input[type=mail]:hover,
} #WRAPPER > #CONTAINER .neutral > input[type=password]:focus,
#WRAPPER > #CONTAINER input[type=text]:focus, #WRAPPER > #CONTAINER input[type=text]:hover, #WRAPPER > #CONTAINER .neutral > input[type=password]:hover,
#WRAPPER > #CONTAINER input[type=mail]:focus, #WRAPPER > #CONTAINER .neutral > select:focus,
#WRAPPER > #CONTAINER input[type=mail]:hover, #WRAPPER > #CONTAINER .neutral > select:hover,
#WRAPPER > #CONTAINER input[type=password]:focus, #WRAPPER > #CONTAINER input.neutral[type=text]:focus,
#WRAPPER > #CONTAINER input[type=password]:hover, #WRAPPER > #CONTAINER input.neutral[type=text]:hover,
#WRAPPER > #CONTAINER select:focus, #WRAPPER > #CONTAINER input.neutral[type=mail]:focus,
#WRAPPER > #CONTAINER select:hover, #WRAPPER > #CONTAINER.invalid > input[type=text]:focus, #WRAPPER > #CONTAINER.invalid > input[type=text]:hover, #WRAPPER > #CONTAINER.invalid > input[type=mail]:focus, #WRAPPER > #CONTAINER.invalid > input[type=mail]:hover, #WRAPPER > #CONTAINER.invalid > input[type=password]:focus, #WRAPPER > #CONTAINER.invalid > input[type=password]:hover, #WRAPPER > #CONTAINER.invalid > select:focus, #WRAPPER > #CONTAINER.invalid > select:hover, #WRAPPER > #CONTAINER input.neutral[type=mail]:hover,
#WRAPPER > #CONTAINER input.invalid[type=text]:focus, #WRAPPER > #CONTAINER input.neutral[type=password]:focus,
#WRAPPER > #CONTAINER input.invalid[type=text]:hover, #WRAPPER > #CONTAINER input.neutral[type=password]:hover,
#WRAPPER > #CONTAINER input.invalid[type=mail]:focus, #WRAPPER > #CONTAINER select.neutral:focus,
#WRAPPER > #CONTAINER input.invalid[type=mail]:hover, #WRAPPER > #CONTAINER select.neutral:hover {
#WRAPPER > #CONTAINER input.invalid[type=password]:focus, border-color: #2193e6; }
#WRAPPER > #CONTAINER input.invalid[type=password]:hover, #WRAPPER > #CONTAINER .search > input[type=text]:focus, #WRAPPER > #CONTAINER .search > input[type=text]:hover,
#WRAPPER > #CONTAINER select.invalid:focus, #WRAPPER > #CONTAINER .search > input[type=mail]:focus,
#WRAPPER > #CONTAINER select.invalid:hover { #WRAPPER > #CONTAINER .search > input[type=mail]:hover,
border-color: #d52918; #WRAPPER > #CONTAINER .search > input[type=password]:focus,
} #WRAPPER > #CONTAINER .search > input[type=password]:hover,
#WRAPPER > #CONTAINER select { #WRAPPER > #CONTAINER .search > select:focus,
width: 100%; #WRAPPER > #CONTAINER .search > select:hover,
display: block; #WRAPPER > #CONTAINER input.search[type=text]:focus,
background: #fff; #WRAPPER > #CONTAINER input.search[type=text]:hover,
} #WRAPPER > #CONTAINER input.search[type=mail]:focus,
#WRAPPER > #CONTAINER select option { #WRAPPER > #CONTAINER input.search[type=mail]:hover,
padding: .5em; #WRAPPER > #CONTAINER input.search[type=password]:focus,
} #WRAPPER > #CONTAINER input.search[type=password]:hover {
#WRAPPER > #CONTAINER .valid > input[type=text]:focus, #WRAPPER > #CONTAINER .valid > input[type=text]:hover, border-color: #5630ed; }
#WRAPPER > #CONTAINER .valid > input[type=mail]:focus, #WRAPPER > #CONTAINER button,
#WRAPPER > #CONTAINER .valid > input[type=mail]:hover, #WRAPPER > #CONTAINER button.invalid,
#WRAPPER > #CONTAINER .valid > input[type=password]:focus, #WRAPPER > #CONTAINER .invalid > button {
#WRAPPER > #CONTAINER .valid > input[type=password]:hover, display: inline-block;
#WRAPPER > #CONTAINER .valid > select:focus, position: relative;
#WRAPPER > #CONTAINER .valid > select:hover, left: 50%;
#WRAPPER > #CONTAINER input.valid[type=text]:focus, padding: .7em 1em;
#WRAPPER > #CONTAINER input.valid[type=text]:hover, border-radius: 3px;
#WRAPPER > #CONTAINER input.valid[type=mail]:focus, border: 1px solid #d52918;
#WRAPPER > #CONTAINER input.valid[type=mail]:hover, background: #d52918 center center no-repeat;
#WRAPPER > #CONTAINER input.valid[type=password]:focus, color: #fff;
#WRAPPER > #CONTAINER input.valid[type=password]:hover, transition: background .4s ease-in-out;
#WRAPPER > #CONTAINER select.valid:focus, transform: translateX(-50%); }
#WRAPPER > #CONTAINER select.valid:hover { #WRAPPER > #CONTAINER button:hover, #WRAPPER > #CONTAINER button:focus, #WRAPPER > #CONTAINER button:disabled,
border-color: #27a560; #WRAPPER > #CONTAINER button.invalid:hover,
} #WRAPPER > #CONTAINER button.invalid:focus,
#WRAPPER > #CONTAINER .neutral > input[type=text]:focus, #WRAPPER > #CONTAINER .neutral > input[type=text]:hover, #WRAPPER > #CONTAINER button.invalid:disabled,
#WRAPPER > #CONTAINER .neutral > input[type=mail]:focus, #WRAPPER > #CONTAINER .invalid > button:hover,
#WRAPPER > #CONTAINER .neutral > input[type=mail]:hover, #WRAPPER > #CONTAINER .invalid > button:focus,
#WRAPPER > #CONTAINER .neutral > input[type=password]:focus, #WRAPPER > #CONTAINER .invalid > button:disabled {
#WRAPPER > #CONTAINER .neutral > input[type=password]:hover, background-color: #fff;
#WRAPPER > #CONTAINER .neutral > select:focus, color: #d52918; }
#WRAPPER > #CONTAINER .neutral > select:hover, #WRAPPER > #CONTAINER button.valid,
#WRAPPER > #CONTAINER input.neutral[type=text]:focus, #WRAPPER > #CONTAINER .valid > button {
#WRAPPER > #CONTAINER input.neutral[type=text]:hover, border-color: #27a560;
#WRAPPER > #CONTAINER input.neutral[type=mail]:focus, background-color: #27a560; }
#WRAPPER > #CONTAINER input.neutral[type=mail]:hover, #WRAPPER > #CONTAINER button.valid:hover, #WRAPPER > #CONTAINER button.valid:focus, #WRAPPER > #CONTAINER button.valid:disabled,
#WRAPPER > #CONTAINER input.neutral[type=password]:focus, #WRAPPER > #CONTAINER .valid > button:hover,
#WRAPPER > #CONTAINER input.neutral[type=password]:hover, #WRAPPER > #CONTAINER .valid > button:focus,
#WRAPPER > #CONTAINER select.neutral:focus, #WRAPPER > #CONTAINER .valid > button:disabled {
#WRAPPER > #CONTAINER select.neutral:hover { background-color: #fff;
border-color: #2193e6; color: #27a560; }
} #WRAPPER > #CONTAINER button.neutral,
#WRAPPER > #CONTAINER .search > input[type=text]:focus, #WRAPPER > #CONTAINER .search > input[type=text]:hover, #WRAPPER > #CONTAINER .neutral > button {
#WRAPPER > #CONTAINER .search > input[type=mail]:focus, border-color: #2193e6;
#WRAPPER > #CONTAINER .search > input[type=mail]:hover, background-color: #2193e6; }
#WRAPPER > #CONTAINER .search > input[type=password]:focus, #WRAPPER > #CONTAINER button.neutral:hover, #WRAPPER > #CONTAINER button.neutral:focus, #WRAPPER > #CONTAINER button.neutral:disabled,
#WRAPPER > #CONTAINER .search > input[type=password]:hover, #WRAPPER > #CONTAINER .neutral > button:hover,
#WRAPPER > #CONTAINER .search > select:focus, #WRAPPER > #CONTAINER .neutral > button:focus,
#WRAPPER > #CONTAINER .search > select:hover, #WRAPPER > #CONTAINER .neutral > button:disabled {
#WRAPPER > #CONTAINER input.search[type=text]:focus, background-color: #fff;
#WRAPPER > #CONTAINER input.search[type=text]:hover, color: #2193e6; }
#WRAPPER > #CONTAINER input.search[type=mail]:focus, #WRAPPER > #CONTAINER button.search,
#WRAPPER > #CONTAINER input.search[type=mail]:hover, #WRAPPER > #CONTAINER .search > button {
#WRAPPER > #CONTAINER input.search[type=password]:focus, border-color: #5630ed;
#WRAPPER > #CONTAINER input.search[type=password]:hover { background-color: #5630ed; }
border-color: #5630ed; #WRAPPER > #CONTAINER button.search:hover, #WRAPPER > #CONTAINER button.search:focus, #WRAPPER > #CONTAINER button.search:disabled,
} #WRAPPER > #CONTAINER .search > button:hover,
#WRAPPER > #CONTAINER button, #WRAPPER > #CONTAINER .search > button:focus,
#WRAPPER > #CONTAINER button.invalid, #WRAPPER > #CONTAINER .search > button:disabled {
#WRAPPER > #CONTAINER .invalid > button { background-color: #fff;
display: inline-block; color: #5630ed; }
position: relative; #WRAPPER > #CONTAINER .invalid > button.active,
left: 50%; #WRAPPER > #CONTAINER button.invalid.active,
padding: .7em 1em; #WRAPPER > #CONTAINER button.active {
border-radius: 3px; background-color: #fff;
border: 1px solid #d52918; background-image: url("/src/static/container/active@d52918.svg") !important;
background: #d52918 center center no-repeat; background-size: 1em auto;
color: #fff; color: transparent !important; }
transition: background .4s ease-in-out; #WRAPPER > #CONTAINER button.valid.active,
transform: translateX(-50%); #WRAPPER > #CONTAINER .valid > button.active {
} background-image: url("/src/static/container/active@27a560.svg") !important; }
#WRAPPER > #CONTAINER button:hover, #WRAPPER > #CONTAINER button:focus, #WRAPPER > #CONTAINER button:disabled, #WRAPPER > #CONTAINER button.neutral.active,
#WRAPPER > #CONTAINER button.invalid:hover, #WRAPPER > #CONTAINER .neutral > button.active {
#WRAPPER > #CONTAINER button.invalid:focus, background-image: url("/src/static/container/active@2193e6.svg") !important; }
#WRAPPER > #CONTAINER button.invalid:disabled, #WRAPPER > #CONTAINER button.search.active,
#WRAPPER > #CONTAINER .invalid > button:hover, #WRAPPER > #CONTAINER .search > button.active {
#WRAPPER > #CONTAINER .invalid > button:focus, background-image: url("/src/static/container/active@5630ed.svg") !important; }
#WRAPPER > #CONTAINER .invalid > button:disabled { #WRAPPER > #CONTAINER hr.OR[data-label] {
background-color: #fff; display: block;
color: #d52918; position: relative;
} width: 100%;
#WRAPPER > #CONTAINER button.valid, height: 0;
#WRAPPER > #CONTAINER .valid > button { border: 0;
border-color: #27a560; border-bottom: 1px dashed #d52918; }
background-color: #27a560; #WRAPPER > #CONTAINER hr.OR[data-label]:before {
} content: attr(data-label);
#WRAPPER > #CONTAINER button.valid:hover, #WRAPPER > #CONTAINER button.valid:focus, #WRAPPER > #CONTAINER button.valid:disabled, display: inline-block;
#WRAPPER > #CONTAINER .valid > button:hover, position: relative;
#WRAPPER > #CONTAINER .valid > button:focus, top: 50%;
#WRAPPER > #CONTAINER .valid > button:disabled { left: 50%;
background-color: #fff; padding: 0 1em;
color: #27a560; background-color: #fff;
} color: #d52918;
#WRAPPER > #CONTAINER button.neutral, transform: translateX(-50%) translatey(-50%); }
#WRAPPER > #CONTAINER .neutral > button { #WRAPPER > #CONTAINER .valid > hr.OR,
border-color: #2193e6; #WRAPPER > #CONTAINER hr.OR.valid {
background-color: #2193e6; border-bottom: 1px dashed #27a560; }
} #WRAPPER > #CONTAINER .valid > hr.OR:before,
#WRAPPER > #CONTAINER button.neutral:hover, #WRAPPER > #CONTAINER button.neutral:focus, #WRAPPER > #CONTAINER button.neutral:disabled, #WRAPPER > #CONTAINER hr.OR.valid:before {
#WRAPPER > #CONTAINER .neutral > button:hover, color: #27a560; }
#WRAPPER > #CONTAINER .neutral > button:focus, #WRAPPER > #CONTAINER .neutral > hr.OR,
#WRAPPER > #CONTAINER .neutral > button:disabled { #WRAPPER > #CONTAINER hr.OR.neutral {
background-color: #fff; border-bottom: 1px dashed #2193e6; }
color: #2193e6; #WRAPPER > #CONTAINER .neutral > hr.OR:before,
} #WRAPPER > #CONTAINER hr.OR.neutral:before {
#WRAPPER > #CONTAINER button.search, color: #2193e6; }
#WRAPPER > #CONTAINER .search > button { #WRAPPER > #CONTAINER .search > hr.OR,
border-color: #5630ed; #WRAPPER > #CONTAINER hr.OR.search {
background-color: #5630ed; border-bottom: 1px dashed #5630ed; }
} #WRAPPER > #CONTAINER .search > hr.OR:before,
#WRAPPER > #CONTAINER button.search:hover, #WRAPPER > #CONTAINER button.search:focus, #WRAPPER > #CONTAINER button.search:disabled, #WRAPPER > #CONTAINER hr.OR.search:before {
#WRAPPER > #CONTAINER .search > button:hover, color: #5630ed; }
#WRAPPER > #CONTAINER .search > button:focus,
#WRAPPER > #CONTAINER .search > button:disabled {
background-color: #fff;
color: #5630ed;
}
#WRAPPER > #CONTAINER .invalid > button.active,
#WRAPPER > #CONTAINER button.invalid.active,
#WRAPPER > #CONTAINER button.active {
background-color: #fff;
background-image: url("/src/static/container/active@d52918.svg") !important;
background-size: 1em auto;
color: transparent !important;
}
#WRAPPER > #CONTAINER button.valid.active,
#WRAPPER > #CONTAINER .valid > button.active {
background-image: url("/src/static/container/active@27a560.svg") !important;
}
#WRAPPER > #CONTAINER button.neutral.active,
#WRAPPER > #CONTAINER .neutral > button.active {
background-image: url("/src/static/container/active@2193e6.svg") !important;
}
#WRAPPER > #CONTAINER button.search.active,
#WRAPPER > #CONTAINER .search > button.active {
background-image: url("/src/static/container/active@5630ed.svg") !important;
}
#WRAPPER > #CONTAINER hr.OR[data-label] {
display: block;
position: relative;
width: 100%;
height: 0;
border: 0;
border-bottom: 1px dashed #d52918;
}
#WRAPPER > #CONTAINER hr.OR[data-label]:before {
content: attr(data-label);
display: inline-block;
position: relative;
top: 50%;
left: 50%;
padding: 0 1em;
background-color: #fff;
color: #d52918;
transform: translateX(-50%) translatey(-50%);
}
#WRAPPER > #CONTAINER .valid > hr.OR,
#WRAPPER > #CONTAINER hr.OR.valid {
border-bottom: 1px dashed #27a560;
}
#WRAPPER > #CONTAINER .valid > hr.OR:before,
#WRAPPER > #CONTAINER hr.OR.valid:before {
color: #27a560;
}
#WRAPPER > #CONTAINER .neutral > hr.OR,
#WRAPPER > #CONTAINER hr.OR.neutral {
border-bottom: 1px dashed #2193e6;
}
#WRAPPER > #CONTAINER .neutral > hr.OR:before,
#WRAPPER > #CONTAINER hr.OR.neutral:before {
color: #2193e6;
}
#WRAPPER > #CONTAINER .search > hr.OR,
#WRAPPER > #CONTAINER hr.OR.search {
border-bottom: 1px dashed #5630ed;
}
#WRAPPER > #CONTAINER .search > hr.OR:before,
#WRAPPER > #CONTAINER hr.OR.search:before {
color: #5630ed;
}
/* [4] Tableau à cocher /* [4] Tableau à cocher
=========================================================*/ =========================================================*/
@ -509,47 +441,40 @@ article.check-table {
flex-wrap: wrap; flex-wrap: wrap;
justify-content: space-between; justify-content: space-between;
border-radius: 3px; border-radius: 3px;
border: 1px solid #ddd; border: 1px solid #ddd; }
} article.check-table > div {
article.check-table > div { display: flex;
display: flex; flex-direction: row;
flex-direction: row; flex-wrap: nowrap;
flex-wrap: nowrap; justify-content: space-between;
justify-content: space-between; flex: 100%;
flex: 100%; padding: .8em 0;
padding: .8em 0; color: #333;
color: #333; background: #f8f8f8;
background: #f8f8f8; border-bottom: 1px solid #eee;
border-bottom: 1px solid #eee; transition: background .2s ease-in-out;
transition: background .2s ease-in-out; overflow: hidden; }
overflow: hidden; article.check-table > div:nth-child(2n) {
} background: #fdfdfd; }
article.check-table > div:nth-child(2n) { article.check-table > div > span {
background: #fdfdfd; flex: 100%;
} display: flex;
article.check-table > div > span { flex-direction: row;
flex: 100%; flex-wrap: nowrap;
display: flex; justify-content: center;
flex-direction: row; /* (1) Gestion du checkbox hack */ }
flex-wrap: nowrap; article.check-table > div > span input[type='checkbox'] {
justify-content: center; display: none; }
/* (1) Gestion du checkbox hack */ article.check-table > div > span input[type='checkbox'] + label[for] {
} display: inline-block;
article.check-table > div > span input[type='checkbox'] { position: absolute;
display: none; width: 1.2em;
} height: 1.2em;
article.check-table > div > span input[type='checkbox'] + label[for] { background: url("/src/static/container/checkbox.svg") center center no-repeat;
display: inline-block; background-size: 100% auto;
position: absolute; transition: box-shadow .2s ease-in-out;
width: 1.2em; cursor: pointer; }
height: 1.2em; article.check-table > div > span input[type='checkbox']:checked + label[for] {
background: url("/src/static/container/checkbox.svg") center center no-repeat; background-image: url("/src/static/container/checkbox@checked.svg"); }
background-size: 100% auto;
transition: box-shadow .2s ease-in-out;
cursor: pointer;
}
article.check-table > div > span input[type='checkbox']:checked + label[for] {
background-image: url("/src/static/container/checkbox@checked.svg");
}
/*# sourceMappingURL=container.css.map */ /*# sourceMappingURL=container.css.map */

View File

@ -63,7 +63,7 @@
$selected = Table::get('history') $selected = Table::get('history')
->join('id_machine', $mac) ->join('id_machine', $mac)
->select('timestamp', Rows::SEL_MAX) ->select('timestamp', Rows::SEL_MAX)
->select('id_history', Rows::SEL_COUNT, Rows::SEL_DISTINCT) ->select('id_history')
->fetch(); ->fetch();
@ -76,12 +76,12 @@
foreach($selected as $m=>$mac){ foreach($selected as $m=>$mac){
echo "<article class='inline-row'>"; echo "<article class='inline-row' data-history='".$mac['id_history']."'>";
echo "<span class='title'><span>#".$mac['name']."</span></span>"; echo "<span class='title'><span>#".$mac['name']."</span></span>";
echo "<span>"; echo "<span>";
echo "<span>".date('d/m/Y H:i:s', $mac['last'])."</span>"; echo "<span>".date('d/m/Y H:i:s', $mac['timestamp'])."</span>";
echo "<span style='color:#aaa;'>Il y a xx jours et yy heures</span>"; echo "<span style='color:#aaa;'>Il y a xx jours et yy heures</span>";
echo "</span>"; echo "</span>";

View File

@ -47,16 +47,15 @@
<!-- MENU DE LA PAGE --> <!-- MENU DE LA PAGE -->
<nav id='MENU-SIDE'> <nav id='MENU-SIDE'>
<span data-link='profile' data-desc='Profil' class='mb' ><?= file_get_contents(__PUBLIC__.'/src/static/menu-side/profile.svg'); ?></span> <span data-link='profile' data-desc='Profil' class='mb' ><?= file_get_contents(__PUBLIC__.'/src/static/menu-side/profile.svg'); ?></span>
<span data-link='history' data-desc='Journal des accès' class='apart' ><?= file_get_contents(__PUBLIC__.'/src/static/menu-side/history.svg'); ?></span>
<span data-link='machines' data-desc='Systèmes' ><?= file_get_contents(__PUBLIC__.'/src/static/menu-side/device.svg'); ?></span>
<span data-link='users' data-desc='Utilisateurs' ><?= file_get_contents(__PUBLIC__.'/src/static/menu-side/users.svg'); ?></span>
<span data-link='groups' data-desc='Gestion des groupes' ><?= file_get_contents(__PUBLIC__.'/src/static/menu-side/groups.svg'); ?></span>
<span data-link='analytics' data-desc='Statistiques et analyse' ><?= file_get_contents(__PUBLIC__.'/src/static/menu-side/analytics.svg'); ?></span>
<span data-link='history' data-desc='Tableau de bord' class='apart' ><?= file_get_contents(__PUBLIC__.'/src/static/menu-side/history.svg'); ?></span> <span data-link='settings' data-desc='Paramètres' class='mt' ><?= file_get_contents(__PUBLIC__.'/src/static/menu-side/settings.svg'); ?></span>
<span data-link='machines' data-desc='Systèmes' ><?= file_get_contents(__PUBLIC__.'/src/static/menu-side/device.svg'); ?></span>
<span data-link='users' data-desc='Utilisateurs' ><?= file_get_contents(__PUBLIC__.'/src/static/menu-side/users.svg'); ?></span>
<span data-link='groups' data-desc='Gestion des groupes' ><?= file_get_contents(__PUBLIC__.'/src/static/menu-side/groups.svg'); ?></span>
<span data-link='analytics' data-desc='Statistiques et analyse' ><?= file_get_contents(__PUBLIC__.'/src/static/menu-side/analytics.svg'); ?></span>
<span data-link='settings' data-desc='Paramètres' class='mt' ><?= file_get_contents(__PUBLIC__.'/src/static/menu-side/settings.svg'); ?></span>
</nav> </nav>