Initial commit

This commit is contained in:
Claude Paroz 2024-06-03 16:49:01 +02:00
commit 793bb6a488
182 changed files with 17153 additions and 0 deletions

1
aemo/static/css/autocomplete.min.css vendored Normal file
View file

@ -0,0 +1 @@
.autocomplete{background:#fff;z-index:1000;font:14px/22px "-apple-system",BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;overflow:auto;box-sizing:border-box;border:1px solid rgba(50,50,50,.6)}.autocomplete *{font:inherit}.autocomplete>div{padding:0 4px}.autocomplete .group{background:#eee}.autocomplete>div.selected,.autocomplete>div:hover:not(.group){background:#FFF3F3;cursor:pointer}

359
aemo/static/css/main.css Normal file
View file

@ -0,0 +1,359 @@
header { background-color: #fff3f3; }
a { text-decoration: none; }
a:hover:not(.btn) {text-decoration: underline; }
#logo-cr { display: block; height: 70px; margin: 4px; }
#bandeau-cr { display: block; width: 100%; height: 15px; }
#menu_crne { font-size: 80%; }
/* This CSS allows the footer to be always at bottom */
div.top-container { display: flex; min-height: 100vh; flex-direction: column; }
.main-content { flex: 1; }
.hidden { display: none; }
.red { color: red; }
.green { color: green; }
.orange { color: orange; }
.footer {
font-size: 80%;
background-color: #f8f9fa;
color: #9a1629;
margin-top: 2rem;
}
.spaceabovetr > td { padding-top: 0.7em; }
#bg_home {
background: url(../img/SRK_DL_Portal.jpg) no-repeat center fixed;
background-size: cover;
}
#home-app-line { position:absolute; bottom:112px; left:5%; }
.small { font-size: 0.9rem; }
.nowrap { white-space: nowrap; }
.icon-ui { display: inline-block; width: 1rem; height: 1rem; }
img.ficon { height: 1.5em; width: 1.5em; vertical-align: bottom; }
input[readonly] { background-color: #eee; }
#search-button, #reset-button { height: 2rem; min-width: 2.7rem; }
#reset-button img { height: 18px; }
td.zero { color: #ccc; }
#user-bar { position:absolute; top:40px; right:5vw; font-size:80%; }
#user-bar a, #user-bar button { color: #9c1717; font-weight: bold; }
#user-bar button { font-size: inherit; text-decoration: none; }
#user-bar button:hover { text-decoration: underline; }
#user-tools * { vertical-align: middle; }
/* For usage inside bs modal */
.select2-dropdown { z-index: 1100 !important; }
ul.errorlist, ul.nobullets { list-style-type: none; padding-left: 0; }
ul.errorlist li {
background-color: #f8d7da;
color: #721c24;
font-weight: bold;
padding: .75rem 1.25rem;
margin-bottom: 1rem;
border: 1px solid #ebcccc;
border-radius: .25rem;
}
form.inline { display: inline-block; }
form label { font-weight: bold; }
.custom-file-label::after { content: 'Choisir'; }
form[name=LoginForm] input[type=text], form[name=LoginForm] input[type=password] { width: 20em; }
input[type=text], input[type=email] { width: 100%; }
#id_auth-username { width: auto; }
#id_mois, #id_annee { width: auto; display: inline-block; }
input:disabled + span.datetimeshortcuts { display: none; }
input:disabled + label { color: #999; font-style: italic }
input.card-text { width: 4em; }
textarea { min-height: 3em; }
textarea#id_note { width: 35em; height: 2em; }
textarea#id_scolarite, textarea#id_loisirs, textarea#id_activite{ width: 100%; height: 4em; }
textarea#id_referent_note, textarea#id_allergies, textarea#id_remarque, textarea#id_remarque_privee,
textarea#id_remarques {
width: 100%; height: 2em;
}
textarea#id_projet, textarea#id_texte { width: 100%; height: 15em; }
select#id_motif_fin_suivi { width: 100%; }
#id_niveau_interv { width: 5em; }
#id_equipe.immediate-submit { width: auto; display: inline-block; }
form[name=DemandeForm] th { width: 25%; }
form[name=DemandeForm] input[type=text] { width: 100% }
form[name=DemandeForm] textarea#id_remarque { width: 100%; height: 2em; }
form[name=DemandeForm] textarea#id_autres_contacts { width: 100%; height:2em; }
form[name=PrestationForm] textarea#id_texte { width: 100%; }
form[name=PrestationForm] th { width: 12em; }
form[name=Suivi] input#id_service_annonceur { width: 80%; }
form[name=Suivi] textarea { width: 100%; height: 2em;}
form[name=JournalForm] textarea#id_texte { width: 100%; }
form[name=FamilleForm] textarea#id_motif_detail { width: 100%; height: 5em; }
input.vDateField { width: 7em; display: inline-block; }
input.TimeField { width: 4em; margin-left: 0.5em; }
input#id_duree { width: 6em; }
input#id_username { width: none; }
input#id_npa, input#id_npa_actuelle { width: 4em; }
input#id_sigle { width: 8em; }
#id_groups label, .choicearray label, .filter-form label, #id_lib_prestation label,
#id_membres label, #id_sig_interv label, #id_pres_interv label, #id_roles label { font-weight: normal; }
#id_roles { column-count: 2; }
tr.decedee td:first-child:before {
content: '† ';
}
tr.decedee td {
font-style: italic;
opacity: 0.8;
}
span.date_theorique { color:#FF8000; font-style: italic; }
span.hoverimage { visibility: hidden; }
span.hoverimage img { cursor: pointer; }
div:hover > span.hoverimage, summary:hover > span.hoverimage { visibility: visible; }
#benef_table > tbody > tr > td { padding: 2px 0.3em; line-height: 1.2em; }
table.statut_suivi td {
min-width: 35px;
padding: 0;
font-size: 10px;
background-color: #eee;
border: 1px solid #ccc;
text-align: center;
}
table.statut_suivi { margin-top: 4px;}
table.statut_suivi td.filled { background-color: #AACDAA; }
table.statut_suivi td.current { background-color: #FFDB78; }
table.statut_suivi td div.filled { background-color: #AACDAA; }
table.statut_suivi td div.next { background-color: #F2F5A9; }
table.statut_suivi td div.urgent { background-color: #FF8000; }
table.statut_suivi td div.depasse { background-color: #FF0000; }
.stat_table th { padding-top: 1.5em; text-align: right; }
.stat_table th.month { text-align: right; width: 90px; }
.stat_table th.total { text-align: right; width: 90px; }
.stat_table th.left { text-align: left; }
.stat_table .app_line { background-color: #eee; }
.stat_table td.num { text-align: right; }
.stat_table tr.first td { border-top: 1px solid #999; }
.stat_table .subdiv2 td { background-color: beige; font-style: italic; }
p.app_line { background-color: #eee; padding: 0.2em 0 0.6em 0.2em; }
#id_mandat_ope, #id_motif_demande, #id_demarche {
display: flex; flex-wrap: wrap;
}
#id_mandat_ope > div, #id_motif_demande > div, #id_demarche > div {
padding-right: 1.5em;
}
#id_mandat_ope label, #id_motif_demande label, #id_demarche label {
font-weight: normal; padding-right: 2em;
}
/* padding needed for bootstrap style */
#id_motif_demande { padding-left: 2rem; }
#id_demande_prioritaire label { padding-left: 2rem; }
table-condensed td{ padding:1px; }
.btn-mini {
line-height:14px;
font-weight:800;
}
.btn-xs {
padding: .2rem .2rem;
font-size: .750rem;
line-height: 1;
border-radius: .2rem;
}
.modal-lg input[type=text] { margin-bottom: 1em; }
.modal-lg input[name=theme] { width: 160%; }
.modal-lg textarea { width: 160%; }
th {
vertical-align: top;
}
a[role=button] { margin-left: 0.4em; }
.topnav-right {font-size: 95%;}
.selection_form { display: flex; justify-content: flex-end; flex-wrap: wrap; }
.select-container { margin-left: 0.5em; }
select#id_interv { max-width: 12em; }
input#id_letter { width:10em; }
ul.nav-prestations .nav-link.active {
font-weight: bold;
font-size: 110%;
}
.left-label { width: 15em; }
.icon { width:20px; height:20px; }
.icon-xs {width:15px; height:15px; }
.table-absence {
display: block;
overflow-y: scroll;
max-height:300px;
}
.table-fixed tbody {
height: 300px;
overflow-y: auto;
width: 100%;
}
.table-fixed thead,
.table-fixed tbody,
.table-fixed tr,
.table-fixed td,
.table-fixed th {
display: block;
background-color: white;
}
.table-fixed tbody td,
.table-fixed tbody th,
.table-fixed thead > tr > th {
float: left;
position: relative;
&::after {
content: '';
clear: both;
display: block;
}
}
.bg-success-2 { background-color: #d3ffd0;}
.bg-warning-2 { background-color: #FAF1B8; }
.bg-primary-2 { background-color: #B8C3FA; }
.bg-danger-2 { background-color: #F7E4E3 }
.bg-danger-3 { background-color: #fff5f5; }
.bg-success-3 { background-color: #edfced; }
.calendarbox { z-index:1100; background: white; }
/* Needed because of bootstrap reboot */
.calendar caption { caption-side: top; background: #fff3f3; }
.popup textarea#id_texte { width:100%; height:2em; }
.table-ext-bordered {
border-width:1px;
border-style:solid;
border-color:lightgray;
padding:2px;
}
.table-wrapper { display: block; position: relative; overflow: auto; }
.prestation_titre { background-color: #fcf0c6; font-weight: bold; }
table.prestations th { position: sticky; top: 0; }
table.prestations td.total { font-weight: 600; background-color: #eee; text-align: center; }
table.prestations th.mesprest, table.prestations td.mesprest { text-align: right; }
table.prestations th.action, table.prestations td.action { text-align: right; }
p.secret {
background-color: #eee;
border-radius: 0.5em;
padding: 0.5rem;
font-style: italic;
}
/* Image modal styles */
div.modal-image {
display: none; position: fixed; z-index: 100; padding-top: 100px;
left: 0; top: 0; width: 100%; height: 100%; overflow: auto;
background-color: rgba(0,0,0,0.6);
}
img.modal-content {
margin: auto;
display: block;
width: 80%;
max-width: 700px;
}
#modalClose {
position: absolute;
top: 15px;
right: 35px;
color: #f1f1f1;
font-size: 40px;
font-weight: bold;
transition: 0.3s;
}
#modalClose:hover, #modalClose:focus {
color: #bbb;
text-decoration: none;
cursor: pointer;
}
/* End of Image modal styles */
#id_rythme { width: 100%; height:4em; }
.red {color: red;}
.table-sortable > thead > tr > th[data-col] {
cursor: pointer;
position: relative;
}
.table-sortable > thead > tr > th[data-col]:after,
.table-sortable > thead > tr > th[data-col]:after,
.table-sortable > thead > tr > th[data-col]:after {
content: ' ';
position: absolute;
height: 0;
width: 0;
right: 10px;
top: 16px;
}
.table-sortable > thead > tr > th[data-col]:after {
border-left: 5px solid transparent;
border-right: 5px solid transparent;
border-top: 5px solid #ccc;
border-bottom: 0px solid transparent;
}
.table-sortable > thead > tr > th[data-col]:hover:after {
border-top: 5px solid #888;
}
.table-sortable > thead > tr > th.desc:after {
border-left: 5px solid transparent;
border-right: 5px solid transparent;
border-top: 0px solid transparent;
border-bottom: 5px solid #333;
}
.table-sortable > thead > tr > th.desc:hover:after {
border-bottom: 5px solid #888;
}
.table-sortable > thead > tr > th.asc:after {
border-left: 5px solid transparent;
border-right: 5px solid transparent;
border-top: 5px solid #333;
border-bottom: 5px solid transparent;
}
.vDateField-rounded {
padding: 0.375rem 0.75rem;
line-height: 1.5;
border-radius: 0.375rem;
border: 1px solid #ced4da;
}
.search-form-fields {
width: 200px !important;
margin-bottom: 5px;
}

View file

@ -0,0 +1,33 @@
th[role=columnheader]:not(.no-sort) {
cursor: pointer;
}
th[role=columnheader]:not(.no-sort):after {
content: '';
float: right;
margin-top: 7px;
border-width: 0 4px 4px;
border-style: solid;
border-color: #404040 transparent;
visibility: hidden;
opacity: 0;
-ms-user-select: none;
-webkit-user-select: none;
-moz-user-select: none;
user-select: none;
}
th[aria-sort=ascending]:not(.no-sort):after {
border-bottom: none;
border-width: 4px 4px 0;
}
th[aria-sort]:not(.no-sort):after {
visibility: visible;
opacity: 0.4;
}
th[role=columnheader]:not(.no-sort):hover:after {
visibility: visible;
opacity: 1;
}

Binary file not shown.

BIN
aemo/static/favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 592 B

View file

@ -0,0 +1,2 @@
Many thanks to Daniel M. Hendricks, http://daniel.hn
https://github.com/dmhendricks/file-icon-vectors/

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st1{fill:#2372ba}</style><path fill="#fff" d="M0 0h100v100H0z"/><path class="st1" d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7"/><path class="st1" d="M27.6 27l7.9 29.7L45.2 27h9.5l9.8 29.7L72.4 27H85L71.2 73H59l-9-26.7L41 73H28.8L15 27h12.6z"/></svg>

After

Width:  |  Height:  |  Size: 319 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st1{fill:#5b2d8d}</style><path fill="#fff" d="M0 0h100v100H0z"/><path class="st1" d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7"/><circle class="st1" cx="32.4" cy="35" r="8"/><path class="st1" d="M78.9 47.3l-9.7-9.6L50 57l-9.6-9.7-19.3 19.3V73h57.8z"/></svg>

After

Width:  |  Height:  |  Size: 326 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><path fill="#fff" d="M0 0h100v100H0z"/><path d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7" fill="#bababa"/><path d="M71 36.3L57.8 23.1c-.4-.4-.9-.6-1.4-.6h-26c-1.1 0-2 .9-2 2v51.1c0 1.1.9 2 2 2h39.3c1.1 0 2-.9 2-2V37.7c-.1-.5-.3-1-.7-1.4zm-3.9 2.3H55.5V27l11.6 11.6zm.1 34.5H32.8V26.9h18.5v13.3c0 1.4 1.2 2.6 2.6 2.6h13.3v30.3z" fill="#bababa" stroke="#bababa" stroke-miterlimit="10"/></svg>

After

Width:  |  Height:  |  Size: 452 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><path fill="#fff" d="M0 0h100v100H0z"/><path d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7" fill="#c11e07"/><path d="M46.2 21.8c-3.5 0-6.3 2.9-6.3 6.3 0 4.3 2.4 9.6 4.9 14.7-2 6.1-4.1 12.7-7 18.2-5.8 2.3-11 4-14 6.6l-.2.2c-1.1 1.2-1.8 2.7-1.8 4.4 0 3.5 2.9 6.3 6.3 6.3 1.7 0 3.4-.6 4.4-1.8 0 0 .2 0 .2-.2 2.3-2.7 5-7.8 7.5-12.2 5.5-2.1 11.5-4.4 16.9-5.8 4.1 3.4 10.1 5.5 15 5.5 3.5 0 6.3-2.9 6.3-6.3 0-3.5-2.9-6.3-6.3-6.3-4 0-9.6 1.4-13.9 2.9-3.5-3.4-6.7-7.5-9.2-11.9C50.6 37 52.6 32 52.6 28c-.2-3.5-2.9-6.2-6.4-6.2zm0 3.6c1.4 0 2.4 1.1 2.4 2.4 0 1.8-1.1 5.3-2.1 9-1.5-3.7-2.9-7.2-2.9-9 .1-1.2 1.2-2.4 2.6-2.4zm1.1 21.5c1.8 3.1 4.1 5.8 6.6 8.2-3.7 1.1-7.3 2.3-11 3.7 1.8-3.8 3.1-7.9 4.4-11.9zM72 55c1.4 0 2.4 1.1 2.4 2.4 0 1.4-1.1 2.4-2.4 2.4-2.9 0-6.9-1.2-10.1-3.1C65.6 56 69.7 55 72 55zM34.6 66.2c-1.8 3.2-3.5 6.1-4.7 7.6-.5.5-.9.6-1.7.6-1.4 0-2.4-1.1-2.4-2.4 0-.6.3-1.4.6-1.7 1.3-1.2 4.5-2.6 8.2-4.1z" fill="#c11e07" stroke="#c11e07" stroke-width="1.25" stroke-miterlimit="10"/></svg>

After

Width:  |  Height:  |  Size: 1 KiB

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>.st1{fill:#30723f}</style><path fill="#fff" d="M0 0h100v100H0z"/><path class="st1" d="M100 100H0V0h100v100zM9.7 90h80.7V10H9.7"/><path class="st1" d="M41.8 48.5L23.9 27h18.5l7.8 11.9L59.8 27h18.5l-19 21.5L80.7 73H62.4L50.9 58 37.4 73H19.3l22.5-24.5z"/></svg>

After

Width:  |  Height:  |  Size: 327 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 466 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 255 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

8
aemo/static/img/edit.svg Normal file
View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<polygon points="128,448 32,448 32,352 "/>
<rect x="45.7" y="140.1" transform="matrix(0.7071 -0.7071 0.7071 0.7071 -67.4113 253.2548)" width="452.5" height="135.8"/>
<path d="M32,512v-32h352v32H32z"/>
</svg>

After

Width:  |  Height:  |  Size: 555 B

BIN
aemo/static/img/eduqua.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

BIN
aemo/static/img/family.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View file

@ -0,0 +1,76 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
enable-background="new 0 0 24 24"
height="24px"
viewBox="0 0 24 24"
width="24px"
fill="#000000"
version="1.1"
id="svg14"
sodipodi:docname="filter_off.svg"
inkscape:version="1.0.2 (e86c870879, 2021-01-15)">
<metadata
id="metadata20">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs18" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1296"
inkscape:window-height="894"
id="namedview16"
showgrid="false"
inkscape:zoom="30.625"
inkscape:cx="12"
inkscape:cy="12"
inkscape:window-x="26"
inkscape:window-y="23"
inkscape:window-maximized="0"
inkscape:current-layer="svg14" />
<g
id="g4">
<rect
fill="none"
height="24"
width="24"
id="rect2" />
</g>
<g
id="g12"
style="fill:#666666">
<g
id="g10"
style="fill:#666666">
<path
d="M19.79,5.61C20.3,4.95,19.83,4,19,4H6.83l7.97,7.97L19.79,5.61z"
id="path6"
style="fill:#666666" />
<path
d="M2.81,2.81L1.39,4.22L10,13v6c0,0.55,0.45,1,1,1h2c0.55,0,1-0.45,1-1v-2.17l5.78,5.78l1.41-1.41L2.81,2.81z"
id="path8"
style="fill:#666666" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

BIN
aemo/static/img/help.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 543 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

BIN
aemo/static/img/journal.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

BIN
aemo/static/img/logo-cr.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

219
aemo/static/img/logo-cr.svg Normal file
View file

@ -0,0 +1,219 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 1238.1333 262.01334"
height="262.01334"
width="1238.1333"
xml:space="preserve"
id="svg2"
version="1.1"><metadata
id="metadata8"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs6" /><g
transform="matrix(1.3333333,0,0,-1.3333333,0,262.01333)"
id="g10"><g
transform="scale(0.1)"
id="g12"><path
id="path14"
style="fill:#d92838;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 9286.04,1310.05 h -655.02 v 655.02 H 7976 V 1310.05 H 7320.97 V 655.031 H 7976 V 0 h 655.02 v 655.031 h 655.02 v 655.019" /><path
id="path16"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 282.129,1211.91 c -13.301,3.5 -25.902,5.6 -39.203,5.6 -91.707,0 -131.617,-83.3 -131.617,-164.51 0,-78.41 39.91,-175.02 130.914,-175.02 13.304,0 26.605,3.489 39.906,7.7 v -98.711 c -15.399,-6.309 -31.5,-9.098 -48.305,-9.098 C 83.3086,777.871 0,913.68 0,1052.29 c 0,130.92 86.8086,265.34 228.922,265.34 18.203,0 35.703,-3.51 53.207,-9.81 v -95.91" /><path
id="path18"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 424.207,1137 v -42.7 h 1.398 c 18.2,30.81 42.004,52.5 80.508,56 v -95.91 c -4.902,0.71 -9.797,1.41 -15.398,1.41 -65.813,0 -66.508,-43.41 -66.508,-95.921 V 783.469 H 325.496 V 1137 h 98.711" /><path
id="path20"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 627.203,959.879 c 0,-20.289 1.399,-95.199 35.703,-95.199 34.305,0 35.703,74.91 35.703,95.199 0,20.305 -1.398,95.221 -35.703,95.221 -34.304,0 -35.703,-74.916 -35.703,-95.221 z m 170.117,0 c 0,-90.297 -28.707,-183.418 -134.414,-183.418 -105.711,0 -134.414,93.121 -134.414,183.418 0,90.321 28.703,184.121 134.414,184.121 105.707,0 134.414,-93.8 134.414,-184.121" /><path
id="path22"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="M 940.793,1137 V 783.469 H 842.082 V 1137 Z m -112.012,105.71 c 0,35.71 28.699,62.31 64.403,62.31 34.304,0 60.91,-30.1 60.91,-63.7 0,-33.61 -28.707,-62.31 -63.008,-62.31 -34.301,0 -62.305,28.7 -62.305,63.7" /><path
id="path24"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 1098.99,1137 28.01,-53.91 10.5,-21.7 39.9,75.61 h 102.21 L 1189.3,973.887 1293.61,783.469 H 1189.3 l -51.8,97.312 -52.51,-97.312 H 983.484 L 1084.99,973.887 996.785,1137 h 102.205" /><path
id="path26"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 1511.3,1041.39 v -93.101 h -175.02 v 93.101 h 175.02" /><path
id="path28"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 1693.29,1084.5 18.2,-0.7 c 47.61,0 66.51,32.2 66.51,75.6 0,37.81 -18.2,68.62 -70.71,65.81 h -14 z M 1588.98,783.469 v 527.861 h 105.01 c 66.51,0 185.52,-7.01 185.52,-151.22 0,-58.11 -23.1,-107.82 -74.91,-136.52 l 91.72,-240.121 H 1786.4 l -91.71,243.621 h -1.4 V 783.469 h -104.31" /><path
id="path30"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 2014.59,959.879 c 0,-20.289 1.4,-95.199 35.7,-95.199 34.31,0 35.71,74.91 35.71,95.199 0,20.305 -1.4,95.221 -35.71,95.221 -34.3,0 -35.7,-74.916 -35.7,-95.221 z m 170.12,0 c 0,-90.297 -28.71,-183.418 -134.42,-183.418 -105.71,0 -134.41,93.121 -134.41,183.418 0,90.321 28.7,184.121 134.41,184.121 105.71,0 134.42,-93.8 134.42,-184.121" /><path
id="path32"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="M 2342.88,1137 V 943.082 c 0,-19.602 -7.7,-74.203 25.2,-74.203 26.61,0 24.51,35 24.51,52.512 l 0.7,215.609 h 98.01 V 911.582 c 0,-81.902 -38.51,-135.121 -126.02,-135.121 -112.01,0 -121.11,84.019 -121.11,148.418 V 1137 h 98.71" /><path
id="path34"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 2706.18,961.988 c 0,19.602 -1.4,94.502 -35,94.502 -33.61,0 -35.7,-74.205 -35.7,-94.502 0,-22.398 1.39,-95.207 37.09,-95.207 31.51,0 33.61,76.301 33.61,95.207 z m -78.41,-225.429 c 1.4,-22.399 7.71,-50.399 35.71,-50.399 44.1,0 37.8,66.5 37.8,96.61 v 44.812 h -1.4 c -6.3,-12.613 -14,-25.91 -23.8,-35.012 -9.8,-9.8 -22.41,-16.109 -39.91,-16.109 -36.4,0 -60.9,28.711 -76.31,58.809 -17.5,35 -23.1,80.511 -23.1,119.718 0,61.602 11.21,189.012 95.21,189.012 32.9,0 56.71,-21.7 67.91,-49.7 h 1.4 v 42.7 h 98.71 V 752.66 c 0,-103.609 -46.2,-144.91 -132.31,-144.91 -84.01,0 -122.52,48.301 -127.41,128.809 h 87.5" /><path
id="path36"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 3027.48,1003.29 c 0,23.1 -4.9,65.11 -35.7,65.11 -30.1,0 -36.41,-40.61 -36.41,-63.01 v -10.499 h 72.11 z m 83.31,-69.31 h -156.12 c 0.7,-25.898 -0.7,-81.898 37.11,-81.898 25.2,0 31.5,19.598 31.5,40.59 h 84.01 c -4.2,-32.192 -14,-61.602 -32.21,-82.602 -17.5,-21 -43.4,-33.609 -79.8,-33.609 -100.11,0 -135.82,88.918 -135.82,176.43 0,84.709 30.81,191.109 133.72,191.109 65.1,0 125.31,-58.1 119.71,-169.41 l -2.1,-40.61" /><path
id="path38"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 3431.35,1082.4 h 1.41 c 13.3,33.6 43.4,61.6 81.9,61.6 72.82,0 66.52,-81.2 66.52,-132.31 V 783.469 h -98.71 v 193.922 c 0,18.203 7,67.209 -24.5,67.209 -22.41,0 -26.62,-23.11 -26.62,-40.61 V 783.469 h -98.7 V 1137 h 98.7 v -54.6" /><path
id="path40"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 3793.96,1003.29 c 0,23.1 -4.9,65.11 -35.7,65.11 -30.11,0 -36.41,-40.61 -36.41,-63.01 v -10.499 h 72.11 z m 83.31,-69.31 h -156.12 c 0.7,-25.898 -0.69,-81.898 37.11,-81.898 25.2,0 31.5,19.598 31.5,40.59 h 84.01 c -4.2,-32.192 -14,-61.602 -32.2,-82.602 -17.51,-21 -43.41,-33.609 -79.82,-33.609 -100.1,0 -135.81,88.918 -135.81,176.43 0,84.709 30.8,191.109 133.71,191.109 65.11,0 125.32,-58.1 119.72,-169.41 l -2.1,-40.61" /><path
id="path42"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="M 4023.55,1137 V 943.082 c 0,-19.602 -7.7,-74.203 25.21,-74.203 26.6,0 24.5,35 24.5,52.512 l 0.69,215.609 h 98.02 V 911.582 c 0,-81.902 -38.51,-135.121 -126.02,-135.121 -112.01,0 -121.11,84.019 -121.11,148.418 V 1137 h 98.71" /><path
id="path44"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 4403.65,789.07 c -18.2,-8.41 -36.41,-12.609 -56.71,-12.609 -95.91,0 -129.51,100.809 -129.51,181.32 0,88.919 35,186.219 137.22,186.219 17.5,0 32.9,-3.49 49,-10.5 v -86.8 c -9.1,8.4 -16.81,11.2 -28.7,11.2 -48.31,0 -58.81,-58.107 -58.81,-94.509 0,-37.809 7.69,-94.512 57.4,-94.512 11.2,0 21.01,4.191 30.11,10.492 V 789.07" /><path
id="path46"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="M 4545.73,1348.43 V 1082.4 h 1.4 c 13.3,33.6 43.4,61.6 81.91,61.6 72.8,0 66.5,-81.2 66.5,-132.31 V 783.469 h -98.71 v 193.922 c 0,18.203 7,67.209 -24.5,67.209 -22.4,0 -26.6,-23.11 -26.6,-40.61 V 783.469 h -98.71 v 564.961 h 98.71" /><path
id="path48"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 4909.73,961.988 c 0,19.602 -2.1,94.502 -35.7,94.502 -32.9,0 -35,-74.205 -35,-94.502 0,-22.398 1.4,-95.207 36.41,-95.207 31.5,0 34.29,76.301 34.29,95.207 z m 72.81,260.422 -42.7,-43.4 -59.51,49.01 -61.6,-49.01 -38.51,49.01 100.11,79.1 z m -79.81,-399.039 h -1.4 c -13.3,-26.601 -33.6,-46.91 -65.1,-46.91 -79.81,0 -95.91,127.418 -95.91,184.121 0,60.908 11.9,183.418 94.51,183.418 32.9,0 55.3,-21.7 66.5,-50.4 h 1.4 v 43.4 h 98.71 V 783.469 h -98.71 v 39.902" /><path
id="path50"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="M 5182.02,1235.02 V 1137 h 40.61 v -81.2 h -40.61 V 783.469 h -98.71 V 1055.8 h -34.29 v 81.2 h 34.29 v 98.02 h 98.71" /><path
id="path52"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 5415.57,1003.29 c 0,23.1 -4.9,65.11 -35.7,65.11 -30.11,0 -36.41,-40.61 -36.41,-63.01 v -10.499 h 72.11 z m 83.31,-69.31 h -156.12 c 0.7,-25.898 -0.69,-81.898 37.11,-81.898 25.2,0 31.5,19.598 31.5,40.59 h 84.01 c -4.2,-32.192 -14.01,-61.602 -32.2,-82.602 -17.51,-21 -43.41,-33.609 -79.81,-33.609 -100.11,0 -135.81,88.918 -135.81,176.43 0,84.709 30.8,191.109 133.71,191.109 65.1,0 125.31,-58.1 119.71,-169.41 l -2.1,-40.61" /><path
id="path54"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="M 5645.16,1348.43 V 783.469 h -98.71 v 564.961 h 98.71" /><path
id="path56"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 5788.66,959.879 c 0,-20.289 1.39,-95.199 35.7,-95.199 34.31,0 35.7,74.91 35.7,95.199 0,20.305 -1.39,95.221 -35.7,95.221 -34.31,0 -35.7,-74.916 -35.7,-95.221 z m 170.12,0 c 0,-90.297 -28.71,-183.418 -134.42,-183.418 -105.71,0 -134.41,93.121 -134.41,183.418 0,90.321 28.7,184.121 134.41,184.121 105.71,0 134.42,-93.8 134.42,-184.121" /><path
id="path58"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="M 6102.25,1137 V 783.469 h -98.71 V 1137 Z m -112.01,105.71 c 0,35.71 28.71,62.31 64.41,62.31 34.3,0 60.9,-30.1 60.9,-63.7 0,-33.61 -28.7,-62.31 -63,-62.31 -34.3,0 -62.31,28.7 -62.31,63.7" /><path
id="path60"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 6331.16,1041.8 c -14.01,12.59 -27.31,23.1 -47.61,23.1 -17.5,0 -26.6,-10.51 -26.6,-25.91 1.4,-41.295 112.7,-32.9 112.7,-138.611 0,-70.008 -40.59,-123.918 -113.4,-123.918 -37.81,0 -77.01,16.109 -106.41,40.609 l 43.4,70.012 c 14.71,-12.602 29.4,-23.113 49,-23.113 15.4,0 28.71,11.203 28.71,29.41 1.4,46.902 -112.71,35.012 -112.71,147.021 0,67.21 56,103.6 118.31,103.6 35.7,0 65.81,-9.1 94.51,-30.09 l -39.9,-72.11" /><path
id="path62"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 6581.05,1003.29 c 0,23.1 -4.9,65.11 -35.7,65.11 -30.11,0 -36.41,-40.61 -36.41,-63.01 v -10.499 h 72.11 z m 83.31,-69.31 h -156.12 c 0.7,-25.898 -0.69,-81.898 37.11,-81.898 25.2,0 31.5,19.598 31.5,40.59 h 84.01 c -4.2,-32.192 -14,-61.602 -32.2,-82.602 -17.51,-21 -43.41,-33.609 -79.82,-33.609 -100.1,0 -135.81,88.918 -135.81,176.43 0,84.709 30.8,191.109 133.71,191.109 65.11,0 125.32,-58.1 119.72,-169.41 l -2.1,-40.61" /><path
id="path64"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 1120.11,225.961 -21.5,124.258 c -3.87,21.929 -5.59,44.293 -8.17,66.222 h -1.72 c -3.01,-21.929 -5.16,-44.293 -8.6,-66.222 L 1061.2,225.961 Z m 49.02,-92.891 h -32.25 l -12.04,66.66 h -68.8 l -11.6,-66.66 h -32.26 l 63.64,324.219 h 28.38 l 64.93,-324.219" /><path
id="path66"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 1272.76,308.512 h -0.86 c -8.17,11.617 -21.07,22.359 -36.55,22.359 -16.77,0 -27.52,-12.902 -27.52,-29.242 0,-21.07 18.06,-33.969 35.69,-48.578 18.06,-15.051 35.69,-31.403 35.69,-60.211 0,-35.25 -23.65,-63.199 -60.2,-63.199 -13.76,0 -29.24,6.441 -39.99,15.05 v 32.668 c 10.75,-11.179 22.36,-21.488 39.13,-21.488 19.35,0 32.25,15.051 32.25,33.527 0,21.942 -17.63,36.563 -35.69,52.461 -17.63,15.481 -35.69,32.68 -35.69,58.911 0,33.121 21.93,56.332 55.04,56.332 14.19,0 27.52,-5.59 38.7,-14.192 v -34.398" /><path
id="path68"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 1392.31,308.512 h -0.87 c -8.17,11.617 -21.07,22.359 -36.55,22.359 -16.77,0 -27.52,-12.902 -27.52,-29.242 0,-21.07 18.06,-33.969 35.69,-48.578 18.06,-15.051 35.69,-31.403 35.69,-60.211 0,-35.25 -23.65,-63.199 -60.2,-63.199 -13.76,0 -29.24,6.441 -39.99,15.05 v 32.668 c 10.75,-11.179 22.36,-21.488 39.13,-21.488 19.35,0 32.25,15.051 32.25,33.527 0,21.942 -17.63,36.563 -35.69,52.461 -17.63,15.481 -35.69,32.68 -35.69,58.911 0,33.121 21.93,56.332 55.04,56.332 14.19,0 27.52,-5.59 38.71,-14.192 v -34.398" /><path
id="path70"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 1449.92,243.582 c 0,-21.5 0.86,-87.711 34.41,-87.711 33.53,0 34.39,66.211 34.39,87.711 0,21.078 -0.86,87.289 -34.39,87.289 -33.55,0 -34.41,-66.211 -34.41,-87.289 z m 97.61,0 c 0,-41.711 -5.16,-113.941 -63.2,-113.941 -58.06,0 -63.22,72.23 -63.22,113.941 0,41.277 5.16,113.52 63.22,113.52 58.04,0 63.2,-72.243 63.2,-113.52" /><path
id="path72"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 1668.79,316.25 c -6.88,7.309 -15.91,14.621 -26.66,14.621 -36.12,0 -39.56,-62.781 -39.56,-88.152 0,-21.93 4.73,-86.848 37.84,-86.848 12.9,0 21.07,9.879 27.52,19.77 h 0.86 V 140.82 c -8.17,-6.89 -21.07,-11.179 -31.82,-11.179 -50.74,0 -63.21,71.371 -63.21,109.218 0,41.7 8.6,118.243 64.5,118.243 10.32,0 21.5,-3.012 30.53,-8.602 v -32.25" /><path
id="path74"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 1727.7,133.07 h -27.95 v 220.59 h 27.95 z m -13.76,264.879 c -11.6,0 -21.07,9.461 -21.07,21.071 0,11.179 9.47,20.64 21.07,20.64 11.18,0 20.64,-9.461 20.64,-20.64 0,-11.61 -9.46,-21.071 -20.64,-21.071" /><path
id="path76"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 1821.44,334.309 c -30.96,0 -32.68,-49.02 -32.68,-86.43 0,-91.149 15.05,-95.457 31.39,-95.457 27.09,0 32.25,25.367 32.25,94.598 0,47.73 -3.44,87.289 -30.96,87.289 z m 56.33,-201.239 h -27.95 v 17.2 h -0.86 c -8.17,-12.469 -20.64,-20.629 -36.55,-20.629 -35.26,0 -52.46,19.769 -52.46,116.089 0,49.45 1.72,111.372 55.04,111.372 15.48,0 25.37,-6.454 33.97,-18.493 h 0.86 v 15.051 h 27.95 V 133.07" /><path
id="path78"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 1992.58,327.859 h -36.55 V 133.07 h -27.95 v 194.789 h -23.64 v 25.801 h 23.64 v 60.199 h 27.95 V 353.66 h 36.55 v -25.801" /><path
id="path80"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 2034.71,133.07 h -27.95 v 220.59 h 27.95 z m -13.76,264.879 c -11.6,0 -21.07,9.461 -21.07,21.071 0,11.179 9.47,20.64 21.07,20.64 11.18,0 20.64,-9.461 20.64,-20.64 0,-11.61 -9.46,-21.071 -20.64,-21.071" /><path
id="path82"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 2095.77,243.582 c 0,-21.5 0.86,-87.711 34.41,-87.711 33.53,0 34.39,66.211 34.39,87.711 0,21.078 -0.86,87.289 -34.39,87.289 -33.55,0 -34.41,-66.211 -34.41,-87.289 z m 97.61,0 c 0,-41.711 -5.16,-113.941 -63.2,-113.941 -58.06,0 -63.22,72.23 -63.22,113.941 0,41.277 5.16,113.52 63.22,113.52 58.04,0 63.2,-72.243 63.2,-113.52" /><path
id="path84"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 2254.01,336.031 c 11.18,12.899 26.23,21.071 43.43,21.071 39.12,0 42.57,-36.122 42.57,-66.223 V 133.07 h -27.95 v 154.801 c 0,26.231 -1.72,46.438 -24.94,46.438 -31.82,0 -33.11,-34.829 -33.11,-58.047 V 133.07 h -27.95 v 220.59 h 27.95 v -17.629" /><path
id="path86"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 2556.72,316.25 c -6.88,7.309 -15.91,14.621 -26.66,14.621 -36.12,0 -39.56,-62.781 -39.56,-88.152 0,-21.93 4.73,-86.848 37.84,-86.848 12.9,0 21.07,9.879 27.52,19.77 h 0.86 V 140.82 c -8.17,-6.89 -21.07,-11.179 -31.82,-11.179 -50.74,0 -63.21,71.371 -63.21,109.218 0,41.7 8.6,118.243 64.5,118.243 10.32,0 21.5,-3.012 30.53,-8.602 v -32.25" /><path
id="path88"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 2642.72,334.309 c -30.96,0 -32.68,-49.02 -32.68,-86.43 0,-91.149 15.05,-95.457 31.39,-95.457 27.09,0 32.25,25.367 32.25,94.598 0,47.73 -3.44,87.289 -30.96,87.289 z m 56.32,-201.239 h -27.94 v 17.2 h -0.86 c -8.17,-12.469 -20.64,-20.629 -36.55,-20.629 -35.26,0 -52.46,19.769 -52.46,116.089 0,49.45 1.72,111.372 55.04,111.372 15.48,0 25.37,-6.454 33.97,-18.493 h 0.86 v 15.051 h 27.94 V 133.07" /><path
id="path90"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 2765.69,336.031 c 11.19,12.899 26.24,21.071 43.44,21.071 39.12,0 42.57,-36.122 42.57,-66.223 V 133.07 h -27.95 v 154.801 c 0,26.231 -1.72,46.438 -24.94,46.438 -31.82,0 -33.12,-34.829 -33.12,-58.047 V 133.07 h -27.94 v 220.59 h 27.94 v -17.629" /><path
id="path92"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 2966.51,327.859 h -36.56 V 133.07 H 2902 v 194.789 h -23.64 V 353.66 H 2902 v 60.199 h 27.95 V 353.66 h 36.56 v -25.801" /><path
id="path94"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 3003.05,243.582 c 0,-21.5 0.86,-87.711 34.4,-87.711 33.54,0 34.4,66.211 34.4,87.711 0,21.078 -0.86,87.289 -34.4,87.289 -33.54,0 -34.4,-66.211 -34.4,-87.289 z m 97.61,0 c 0,-41.711 -5.16,-113.941 -63.21,-113.941 -58.05,0 -63.21,72.23 -63.21,113.941 0,41.277 5.16,113.52 63.21,113.52 58.05,0 63.21,-72.243 63.21,-113.52" /><path
id="path96"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 3161.28,336.031 c 11.18,12.899 26.23,21.071 43.44,21.071 39.12,0 42.57,-36.122 42.57,-66.223 V 133.07 h -27.95 v 154.801 c 0,26.231 -1.72,46.438 -24.94,46.438 -31.82,0 -33.12,-34.829 -33.12,-58.047 V 133.07 h -27.95 v 220.59 h 27.95 v -17.629" /><path
id="path98"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 3341.02,334.309 c -30.96,0 -32.68,-49.02 -32.68,-86.43 0,-91.149 15.05,-95.457 31.39,-95.457 27.09,0 32.25,25.367 32.25,94.598 0,47.73 -3.44,87.289 -30.96,87.289 z m 56.33,-201.239 h -27.95 v 17.2 h -0.86 c -8.17,-12.469 -20.64,-20.629 -36.55,-20.629 -35.26,0 -52.46,19.769 -52.46,116.089 0,49.45 1.72,111.372 55.04,111.372 15.48,0 25.37,-6.454 33.97,-18.493 h 0.86 v 15.051 h 27.95 V 133.07" /><path
id="path100"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 3464,133.07 h -27.95 v 344 H 3464 v -344" /><path
id="path102"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 3589.56,261.211 -0.43,3.879 c -0.86,21.058 -1.72,65.781 -30.96,65.781 -26.66,0 -32.68,-49.883 -32.68,-69.66 z m -64.5,-23.641 v -6.461 c 0,-21.918 3.87,-75.238 34.4,-75.238 24.51,0 27.95,34.391 27.95,52.02 h 28.81 c -0.43,-33.539 -13.33,-78.25 -54.18,-78.25 -58.05,0 -65.79,68.8 -65.79,113.078 0,39.562 8.61,114.383 61.92,114.383 51.6,0 59.77,-67.512 59.77,-106.204 V 237.57 h -92.88" /><path
id="path104"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 3794.65,334.309 c -31.39,0 -32.68,-55.028 -32.68,-86.43 0,-20.641 -4.29,-95.457 31.39,-95.457 29.67,0 32.26,36.547 32.26,94.598 0,50.312 -5.17,87.289 -30.97,87.289 z m 28.38,-184.039 h -0.86 c -8.16,-12.469 -20.64,-20.629 -36.54,-20.629 -46.02,0 -52.46,55.898 -52.46,116.089 0,60.211 6.01,111.372 55.03,111.372 15.48,0 25.38,-6.454 33.97,-18.493 h 0.86 V 477.07 h 27.95 v -344 h -27.95 v 17.2" /><path
id="path106"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 3976.54,261.211 -0.43,3.879 c -0.85,21.058 -1.71,65.781 -30.96,65.781 -26.65,0 -32.68,-49.883 -32.68,-69.66 z m -64.5,-23.641 v -6.461 c 0,-21.918 3.87,-75.238 34.41,-75.238 24.5,0 27.95,34.391 27.95,52.02 h 28.8 c -0.43,-33.539 -13.33,-78.25 -54.18,-78.25 -58.04,0 -65.79,68.8 -65.79,113.078 0,39.562 8.61,114.383 61.92,114.383 51.6,0 59.77,-67.512 59.77,-106.204 V 237.57 h -92.88" /><path
id="path108"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 4154.54,133.07 h -27.95 v 344 h 27.95 v -344" /><path
id="path110"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 4248.28,334.309 c -30.95,0 -32.67,-49.02 -32.67,-86.43 0,-91.149 15.05,-95.457 31.38,-95.457 27.09,0 32.26,25.367 32.26,94.598 0,47.73 -3.45,87.289 -30.97,87.289 z m 56.33,-201.239 h -27.95 v 17.2 h -0.86 c -8.16,-12.469 -20.63,-20.629 -36.54,-20.629 -35.26,0 -52.46,19.769 -52.46,116.089 0,49.45 1.72,111.372 55.04,111.372 15.48,0 25.37,-6.454 33.96,-18.493 h 0.86 v 15.051 h 27.95 V 133.07" /><path
id="path112"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 4558.31,142.109 c -11.18,-7.75 -27.09,-13.328 -41.28,-13.328 -76.11,0 -87.29,99.321 -87.29,154.789 0,52.461 1.72,178.02 90.3,178.02 12.04,0 28.38,-3.008 38.27,-10.32 v -33.11 c -12.04,8.172 -22.79,14.192 -37.84,14.192 -52.46,0 -59.78,-76.114 -59.78,-136.313 0,-37.84 0,-138.019 57.63,-138.019 14.62,0 28.38,6.441 39.99,14.621 v -30.532" /><path
id="path114"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 4618.5,324.422 h 0.86 c 6.02,15.476 18.06,33.109 36.55,32.68 v -32.68 l -5.59,0.43 c -28.8,0 -31.82,-27.954 -31.82,-63.211 V 133.07 h -27.95 v 220.59 h 27.95 v -29.238" /><path
id="path116"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 4701.06,243.582 c 0,-21.5 0.86,-87.711 34.4,-87.711 33.54,0 34.4,66.211 34.4,87.711 0,21.078 -0.86,87.289 -34.4,87.289 -33.54,0 -34.4,-66.211 -34.4,-87.289 z m 97.6,0 c 0,-41.711 -5.15,-113.941 -63.2,-113.941 -58.06,0 -63.21,72.23 -63.21,113.941 0,41.277 5.15,113.52 63.21,113.52 58.05,0 63.2,-72.243 63.2,-113.52" /><path
id="path118"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 4859.29,133.07 h -27.95 v 220.59 h 27.95 z m -13.76,264.879 c -11.6,0 -21.07,9.461 -21.07,21.071 0,11.179 9.47,20.64 21.07,20.64 11.18,0 20.64,-9.461 20.64,-20.64 0,-11.61 -9.46,-21.071 -20.64,-21.071" /><path
id="path120"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 4966.79,245.73 49.45,-112.66 h -30.96 l -22.79,58.051 c -4.72,12.039 -9.46,24.078 -11.61,36.981 h -1.72 c -1.72,-12.903 -6.01,-25.372 -10.75,-37.411 l -21.92,-57.621 h -31.4 l 50.74,112.66 -45.57,107.93 h 30.95 l 18.06,-49.019 c 5.17,-14.621 9.89,-29.243 12.9,-44.719 h 1.72 c 3.88,15.476 6.88,30.957 12.9,46.019 l 18.49,47.719 h 30.96 l -49.45,-107.93" /><path
id="path122"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 5022.69,287.441 h 67.08 V 253.48 h -67.08 v 33.961" /><path
id="path124"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 5145.67,316.25 h 10.75 c 42.14,0 49.01,14.621 49.01,57.191 0,51.168 -15.48,56.329 -53.75,56.329 h -6.01 z m -30.1,-183.18 v 324.219 h 32.24 c 45.16,0 88.59,-3.437 88.59,-82.559 0,-41.269 -9.04,-81.691 -61.07,-83.421 l 71.81,-158.239 h -31.82 l -68.8,158.68 h -0.85 V 133.07 h -30.1" /><path
id="path126"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 5295.3,243.582 c 0,-21.5 0.86,-87.711 34.41,-87.711 33.54,0 34.4,66.211 34.4,87.711 0,21.078 -0.86,87.289 -34.4,87.289 -33.55,0 -34.41,-66.211 -34.41,-87.289 z m 97.62,0 c 0,-41.711 -5.16,-113.941 -63.21,-113.941 -58.06,0 -63.22,72.23 -63.22,113.941 0,41.277 5.16,113.52 63.22,113.52 58.05,0 63.21,-72.243 63.21,-113.52" /><path
id="path128"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="M 5451.82,353.66 V 215.199 c 0,-30.09 1.72,-59.328 29.24,-59.328 28.38,0 29.67,29.238 30.1,59.328 V 353.66 h 27.95 V 191.551 c 0,-36.969 -18.07,-61.91 -57.62,-61.91 -39.12,0 -57.62,24.507 -57.62,61.91 V 353.66 h 27.95" /><path
id="path130"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 5633.29,155.871 c 29.67,0 30.95,43.43 30.95,91.578 0,40.422 -2.57,86.86 -33.12,86.86 -20.2,0 -32.68,-13.75 -32.68,-94.59 0,-24.09 -0.43,-83.848 34.85,-83.848 z m 56.33,-30.973 c 0,-41.2769 -1.72,-79.5386 -57.64,-79.5386 -38.69,0 -56.76,23.2109 -56.76,61.0506 v 8.18 h 27.52 v -3.879 c 0,-20.629 5.61,-39.1212 29.69,-39.1212 31.38,0 28.81,27.5196 28.81,51.1602 v 25.801 c -9.48,-10.75 -21.08,-15.481 -35.71,-15.481 -55.04,0 -55.89,76.121 -55.89,115.239 0,36.98 4.29,108.793 55.46,108.793 15.06,0 27.52,-6.883 35.71,-18.493 h 0.86 v 15.051 h 27.95 V 124.898" /><path
id="path132"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 5815.16,261.211 -0.43,3.879 c -0.86,21.058 -1.72,65.781 -30.95,65.781 -26.66,0 -32.68,-49.883 -32.68,-69.66 z m -64.49,-23.641 v -6.461 c 0,-21.918 3.87,-75.238 34.39,-75.238 24.52,0 27.95,34.391 27.95,52.02 h 28.81 c -0.43,-33.539 -13.32,-78.25 -54.18,-78.25 -58.04,0 -65.78,68.8 -65.78,113.078 0,39.562 8.6,114.383 61.92,114.383 51.6,0 59.76,-67.512 59.76,-106.204 V 237.57 h -92.87" /><path
id="path134"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 6049.5,308.512 h -0.86 c -8.17,11.617 -21.08,22.359 -36.54,22.359 -16.78,0 -27.52,-12.902 -27.52,-29.242 0,-21.07 18.04,-33.969 35.68,-48.578 18.07,-15.051 35.68,-31.403 35.68,-60.211 0,-35.25 -23.65,-63.199 -60.19,-63.199 -13.75,0 -29.24,6.441 -39.98,15.05 v 32.668 c 10.74,-11.179 22.34,-21.488 39.12,-21.488 19.35,0 32.25,15.051 32.25,33.527 0,21.942 -17.62,36.563 -35.69,52.461 -17.64,15.481 -35.68,32.68 -35.68,58.911 0,33.121 21.91,56.332 55.04,56.332 14.18,0 27.52,-5.59 38.69,-14.192 v -34.398" /><path
id="path136"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="M 6110.98,353.66 V 215.199 c 0,-30.09 1.72,-59.328 29.24,-59.328 28.4,0 29.69,29.238 30.12,59.328 V 353.66 h 27.95 V 191.551 c 0,-36.969 -18.07,-61.91 -57.64,-61.91 -39.12,0 -57.62,24.507 -57.62,61.91 V 353.66 h 27.95" /><path
id="path138"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 6263.21,133.07 h -27.95 v 220.59 h 27.95 z m -13.77,264.879 c -11.6,0 -21.05,9.461 -21.05,21.071 0,11.179 9.45,20.64 21.05,20.64 11.19,0 20.64,-9.461 20.64,-20.64 0,-11.61 -9.45,-21.071 -20.64,-21.071" /><path
id="path140"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 6386.2,308.512 h -0.88 c -8.17,11.617 -21.06,22.359 -36.54,22.359 -16.76,0 -27.52,-12.902 -27.52,-29.242 0,-21.07 18.06,-33.969 35.68,-48.578 18.07,-15.051 35.7,-31.403 35.7,-60.211 0,-35.25 -23.65,-63.199 -60.19,-63.199 -13.77,0 -29.24,6.441 -40,15.05 v 32.668 c 10.76,-11.179 22.36,-21.488 39.14,-21.488 19.33,0 32.24,15.051 32.24,33.527 0,21.942 -17.63,36.563 -35.7,52.461 -17.62,15.481 -35.68,32.68 -35.68,58.911 0,33.121 21.93,56.332 55.04,56.332 14.2,0 27.52,-5.59 38.71,-14.192 v -34.398" /><path
id="path142"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 6505.73,308.512 h -0.86 c -8.16,11.617 -21.07,22.359 -36.54,22.359 -16.78,0 -27.52,-12.902 -27.52,-29.242 0,-21.07 18.04,-33.969 35.68,-48.578 18.07,-15.051 35.68,-31.403 35.68,-60.211 0,-35.25 -23.65,-63.199 -60.19,-63.199 -13.75,0 -29.24,6.441 -39.98,15.05 v 32.668 c 10.74,-11.179 22.34,-21.488 39.12,-21.488 19.35,0 32.25,15.051 32.25,33.527 0,21.942 -17.62,36.563 -35.69,52.461 -17.63,15.481 -35.68,32.68 -35.68,58.911 0,33.121 21.91,56.332 55.04,56.332 14.18,0 27.52,-5.59 38.69,-14.192 v -34.398" /><path
id="path144"
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 6627.86,261.211 -0.43,3.879 c -0.86,21.058 -1.72,65.781 -30.98,65.781 -26.64,0 -32.67,-49.883 -32.67,-69.66 z m -64.51,-23.641 v -6.461 c 0,-21.918 3.86,-75.238 34.41,-75.238 24.49,0 27.95,34.391 27.95,52.02 h 28.81 c -0.43,-33.539 -13.34,-78.25 -54.18,-78.25 -58.05,0 -65.8,68.8 -65.8,113.078 0,39.562 8.61,114.383 61.91,114.383 51.6,0 59.79,-67.512 59.79,-106.204 V 237.57 h -92.89" /></g></g></svg>

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 8.9 KiB

BIN
aemo/static/img/printer.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
aemo/static/img/reseau.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

BIN
aemo/static/img/stat.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

View file

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="currentColor" class="bi bi-exclamation-triangle-fill flex-shrink-0 me-2" viewBox="0 0 16 16" role="img" aria-label="Warning:">
<path d="M8.982 1.566a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566zM8 5c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 5.995A.905.905 0 0 1 8 5zm.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2z"/>
</svg>

After

Width:  |  Height:  |  Size: 466 B

View file

@ -0,0 +1,424 @@
/*global Calendar, findPosX, findPosY, get_format, gettext, gettext_noop, interpolate, ngettext, quickElement*/
// Inserts shortcut buttons after all of the following:
// <input type="text" class="vDateField">
// <input type="text" class="vTimeField">
'use strict';
{
const DateTimeShortcuts = {
calendars: [],
calendarInputs: [],
clockInputs: [],
clockHours: {
default_: [
[gettext_noop('Now'), -1],
[gettext_noop('Midnight'), 0],
[gettext_noop('6 a.m.'), 6],
[gettext_noop('Noon'), 12],
[gettext_noop('6 p.m.'), 18]
]
},
dismissClockFunc: [],
dismissCalendarFunc: [],
calendarDivName1: 'calendarbox', // name of calendar <div> that gets toggled
calendarDivName2: 'calendarin', // name of <div> that contains calendar
calendarLinkName: 'calendarlink', // name of the link that is used to toggle
clockDivName: 'clockbox', // name of clock <div> that gets toggled
clockLinkName: 'clocklink', // name of the link that is used to toggle
shortCutsClass: 'datetimeshortcuts', // class of the clock and cal shortcuts
timezoneWarningClass: 'timezonewarning', // class of the warning for timezone mismatch
timezoneOffset: 0,
init: function(selector) {
selector = selector || document;
const serverOffset = document.body.dataset.adminUtcOffset;
if (serverOffset) {
const localOffset = new Date().getTimezoneOffset() * -60;
DateTimeShortcuts.timezoneOffset = localOffset - serverOffset;
}
for (const inp of selector.getElementsByTagName('input')) {
if (inp.type === 'text' && inp.classList.contains('vTimeField')) {
DateTimeShortcuts.addClock(inp);
DateTimeShortcuts.addTimezoneWarning(inp);
}
else if (inp.type === 'text' && inp.classList.contains('vDateField')) {
DateTimeShortcuts.addCalendar(inp);
DateTimeShortcuts.addTimezoneWarning(inp);
}
}
},
// Return the current time while accounting for the server timezone.
now: function() {
const serverOffset = document.body.dataset.adminUtcOffset;
if (serverOffset) {
const localNow = new Date();
const localOffset = localNow.getTimezoneOffset() * -60;
localNow.setTime(localNow.getTime() + 1000 * (serverOffset - localOffset));
return localNow;
} else {
return new Date();
}
},
// Add a warning when the time zone in the browser and backend do not match.
addTimezoneWarning: function(inp) {
const warningClass = DateTimeShortcuts.timezoneWarningClass;
let timezoneOffset = DateTimeShortcuts.timezoneOffset / 3600;
// Only warn if there is a time zone mismatch.
if (!timezoneOffset) {
return;
}
// Check if warning is already there.
if (inp.parentNode.querySelectorAll('.' + warningClass).length) {
return;
}
let message;
if (timezoneOffset > 0) {
message = ngettext(
'Note: You are %s hour ahead of server time.',
'Note: You are %s hours ahead of server time.',
timezoneOffset
);
}
else {
timezoneOffset *= -1;
message = ngettext(
'Note: You are %s hour behind server time.',
'Note: You are %s hours behind server time.',
timezoneOffset
);
}
message = interpolate(message, [timezoneOffset]);
const warning = document.createElement('span');
warning.className = warningClass;
warning.textContent = message;
inp.parentNode.appendChild(document.createElement('br'));
inp.parentNode.appendChild(warning);
},
// Add clock widget to a given field
addClock: function(inp) {
const num = DateTimeShortcuts.clockInputs.length;
DateTimeShortcuts.clockInputs[num] = inp;
DateTimeShortcuts.dismissClockFunc[num] = function() { DateTimeShortcuts.dismissClock(num); return true; };
// Shortcut links (clock icon and "Now" link)
const shortcuts_span = document.createElement('span');
shortcuts_span.className = DateTimeShortcuts.shortCutsClass;
inp.parentNode.insertBefore(shortcuts_span, inp.nextSibling);
const now_link = document.createElement('a');
now_link.href = "#";
now_link.textContent = gettext('Now');
now_link.addEventListener('click', function(e) {
e.preventDefault();
DateTimeShortcuts.handleClockQuicklink(num, -1);
});
const clock_link = document.createElement('a');
clock_link.href = '#';
clock_link.id = DateTimeShortcuts.clockLinkName + num;
clock_link.addEventListener('click', function(e) {
e.preventDefault();
// avoid triggering the document click handler to dismiss the clock
e.stopPropagation();
DateTimeShortcuts.openClock(num);
});
quickElement(
'span', clock_link, '',
'class', 'clock-icon',
'title', gettext('Choose a Time')
);
shortcuts_span.appendChild(document.createTextNode('\u00A0'));
shortcuts_span.appendChild(now_link);
shortcuts_span.appendChild(document.createTextNode('\u00A0|\u00A0'));
shortcuts_span.appendChild(clock_link);
// Create clock link div
//
// Markup looks like:
// <div id="clockbox1" class="clockbox module">
// <h2>Choose a time</h2>
// <ul class="timelist">
// <li><a href="#">Now</a></li>
// <li><a href="#">Midnight</a></li>
// <li><a href="#">6 a.m.</a></li>
// <li><a href="#">Noon</a></li>
// <li><a href="#">6 p.m.</a></li>
// </ul>
// <p class="calendar-cancel"><a href="#">Cancel</a></p>
// </div>
const clock_box = document.createElement('div');
clock_box.style.display = 'none';
clock_box.className = 'clockbox module';
clock_box.id = DateTimeShortcuts.clockDivName + num;
document.body.appendChild(clock_box);
// cpa: Make it work with bootstrap
clock_box.style.position = clock_box.closest('body').classList.contains('modal-open') ? 'fixed' : 'absolute';
clock_box.addEventListener('click', function(e) { e.stopPropagation(); });
quickElement('h2', clock_box, gettext('Choose a time'));
const time_list = quickElement('ul', clock_box);
time_list.className = 'timelist';
// The list of choices can be overridden in JavaScript like this:
// DateTimeShortcuts.clockHours.name = [['3 a.m.', 3]];
// where name is the name attribute of the <input>.
const name = typeof DateTimeShortcuts.clockHours[inp.name] === 'undefined' ? 'default_' : inp.name;
DateTimeShortcuts.clockHours[name].forEach(function(element) {
const time_link = quickElement('a', quickElement('li', time_list), gettext(element[0]), 'href', '#');
time_link.addEventListener('click', function(e) {
e.preventDefault();
DateTimeShortcuts.handleClockQuicklink(num, element[1]);
});
});
const cancel_p = quickElement('p', clock_box);
cancel_p.className = 'calendar-cancel';
const cancel_link = quickElement('a', cancel_p, gettext('Cancel'), 'href', '#');
cancel_link.addEventListener('click', function(e) {
e.preventDefault();
DateTimeShortcuts.dismissClock(num);
});
document.addEventListener('keyup', function(event) {
if (event.which === 27) {
// ESC key closes popup
DateTimeShortcuts.dismissClock(num);
event.preventDefault();
}
});
},
openClock: function(num) {
const clock_box = document.getElementById(DateTimeShortcuts.clockDivName + num);
const clock_link = document.getElementById(DateTimeShortcuts.clockLinkName + num);
// Recalculate the clockbox position
// is it left-to-right or right-to-left layout ?
if (window.getComputedStyle(document.body).direction !== 'rtl') {
clock_box.style.left = findPosX(clock_link) + 17 + 'px';
}
else {
// since style's width is in em, it'd be tough to calculate
// px value of it. let's use an estimated px for now
clock_box.style.left = findPosX(clock_link) - 110 + 'px';
}
clock_box.style.top = Math.max(0, findPosY(clock_link) - 30) + 'px';
// Show the clock box
clock_box.style.display = 'block';
document.addEventListener('click', DateTimeShortcuts.dismissClockFunc[num]);
},
dismissClock: function(num) {
document.getElementById(DateTimeShortcuts.clockDivName + num).style.display = 'none';
document.removeEventListener('click', DateTimeShortcuts.dismissClockFunc[num]);
},
handleClockQuicklink: function(num, val) {
let d;
if (val === -1) {
d = DateTimeShortcuts.now();
}
else {
d = new Date(1970, 1, 1, val, 0, 0, 0);
}
DateTimeShortcuts.clockInputs[num].value = d.strftime(get_format('TIME_INPUT_FORMATS')[0]);
DateTimeShortcuts.clockInputs[num].focus();
DateTimeShortcuts.dismissClock(num);
// Added by cpa:
DateTimeShortcuts.clockInputs[num].dispatchEvent(new Event('change'));
},
// Add calendar widget to a given field.
addCalendar: function(inp) {
const num = DateTimeShortcuts.calendars.length;
DateTimeShortcuts.calendarInputs[num] = inp;
DateTimeShortcuts.dismissCalendarFunc[num] = function() { DateTimeShortcuts.dismissCalendar(num); return true; };
// Shortcut links (calendar icon and "Today" link)
const shortcuts_span = document.createElement('span');
shortcuts_span.className = DateTimeShortcuts.shortCutsClass;
inp.parentNode.insertBefore(shortcuts_span, inp.nextSibling);
const today_link = document.createElement('a');
today_link.href = '#';
today_link.appendChild(document.createTextNode(gettext('Today')));
today_link.addEventListener('click', function(e) {
e.preventDefault();
DateTimeShortcuts.handleCalendarQuickLink(num, 0);
});
const cal_link = document.createElement('a');
cal_link.href = '#';
cal_link.id = DateTimeShortcuts.calendarLinkName + num;
cal_link.addEventListener('click', function(e) {
e.preventDefault();
// avoid triggering the document click handler to dismiss the calendar
e.stopPropagation();
DateTimeShortcuts.openCalendar(num);
});
quickElement(
'span', cal_link, '',
'class', 'date-icon',
'title', gettext('Choose a Date')
);
shortcuts_span.appendChild(document.createTextNode('\u00A0'));
// CUSTOMIZED: Today link removed.
//shortcuts_span.appendChild(today_link);
//shortcuts_span.appendChild(document.createTextNode('\u00A0|\u00A0'));
shortcuts_span.appendChild(cal_link);
// Create calendarbox div.
//
// Markup looks like:
//
// <div id="calendarbox3" class="calendarbox module">
// <h2>
// <a href="#" class="link-previous">&lsaquo;</a>
// <a href="#" class="link-next">&rsaquo;</a> February 2003
// </h2>
// <div class="calendar" id="calendarin3">
// <!-- (cal) -->
// </div>
// <div class="calendar-shortcuts">
// <a href="#">Yesterday</a> | <a href="#">Today</a> | <a href="#">Tomorrow</a>
// </div>
// <p class="calendar-cancel"><a href="#">Cancel</a></p>
// </div>
const cal_box = document.createElement('div');
cal_box.style.display = 'none';
cal_box.className = 'calendarbox module';
cal_box.id = DateTimeShortcuts.calendarDivName1 + num;
document.body.appendChild(cal_box);
// cpa: Make it work with bootstrap
cal_box.style.position = cal_box.closest('body').classList.contains('modal-open') ? 'fixed' : 'absolute';
cal_box.addEventListener('click', function(e) { e.stopPropagation(); });
// next-prev links
const cal_nav = quickElement('div', cal_box);
const cal_nav_prev = quickElement('a', cal_nav, '<', 'href', '#');
cal_nav_prev.className = 'calendarnav-previous';
cal_nav_prev.addEventListener('click', function(e) {
e.preventDefault();
DateTimeShortcuts.drawPrev(num);
});
const cal_nav_next = quickElement('a', cal_nav, '>', 'href', '#');
cal_nav_next.className = 'calendarnav-next';
cal_nav_next.addEventListener('click', function(e) {
e.preventDefault();
DateTimeShortcuts.drawNext(num);
});
// main box
const cal_main = quickElement('div', cal_box, '', 'id', DateTimeShortcuts.calendarDivName2 + num);
cal_main.className = 'calendar';
DateTimeShortcuts.calendars[num] = new Calendar(DateTimeShortcuts.calendarDivName2 + num, DateTimeShortcuts.handleCalendarCallback(num));
DateTimeShortcuts.calendars[num].drawCurrent();
// calendar shortcuts
const shortcuts = quickElement('div', cal_box);
shortcuts.className = 'calendar-shortcuts';
let day_link = quickElement('a', shortcuts, gettext('Yesterday'), 'href', '#');
day_link.addEventListener('click', function(e) {
e.preventDefault();
DateTimeShortcuts.handleCalendarQuickLink(num, -1);
});
shortcuts.appendChild(document.createTextNode('\u00A0|\u00A0'));
day_link = quickElement('a', shortcuts, gettext('Today'), 'href', '#');
day_link.addEventListener('click', function(e) {
e.preventDefault();
DateTimeShortcuts.handleCalendarQuickLink(num, 0);
});
shortcuts.appendChild(document.createTextNode('\u00A0|\u00A0'));
day_link = quickElement('a', shortcuts, gettext('Tomorrow'), 'href', '#');
day_link.addEventListener('click', function(e) {
e.preventDefault();
DateTimeShortcuts.handleCalendarQuickLink(num, +1);
});
// cancel bar
const cancel_p = quickElement('p', cal_box);
cancel_p.className = 'calendar-cancel';
const cancel_link = quickElement('a', cancel_p, gettext('Cancel'), 'href', '#');
cancel_link.addEventListener('click', function(e) {
e.preventDefault();
DateTimeShortcuts.dismissCalendar(num);
});
document.addEventListener('keyup', function(event) {
if (event.which === 27) {
// ESC key closes popup
DateTimeShortcuts.dismissCalendar(num);
event.preventDefault();
}
});
},
openCalendar: function(num) {
const cal_box = document.getElementById(DateTimeShortcuts.calendarDivName1 + num);
const cal_link = document.getElementById(DateTimeShortcuts.calendarLinkName + num);
const inp = DateTimeShortcuts.calendarInputs[num];
// Determine if the current value in the input has a valid date.
// If so, draw the calendar with that date's year and month.
if (inp.value) {
const format = get_format('DATE_INPUT_FORMATS')[0];
const selected = inp.value.strptime(format);
const year = selected.getUTCFullYear();
const month = selected.getUTCMonth() + 1;
const re = /\d{4}/;
if (re.test(year.toString()) && month >= 1 && month <= 12) {
DateTimeShortcuts.calendars[num].drawDate(month, year, selected);
}
}
// Recalculate the clockbox position
// is it left-to-right or right-to-left layout ?
if (window.getComputedStyle(document.body).direction !== 'rtl') {
cal_box.style.left = findPosX(cal_link) + 17 + 'px';
}
else {
// since style's width is in em, it'd be tough to calculate
// px value of it. let's use an estimated px for now
cal_box.style.left = findPosX(cal_link) - 180 + 'px';
}
cal_box.style.top = Math.max(0, findPosY(cal_link) - 75) + 'px';
cal_box.style.display = 'block';
document.addEventListener('click', DateTimeShortcuts.dismissCalendarFunc[num]);
},
dismissCalendar: function(num) {
document.getElementById(DateTimeShortcuts.calendarDivName1 + num).style.display = 'none';
document.removeEventListener('click', DateTimeShortcuts.dismissCalendarFunc[num]);
},
drawPrev: function(num) {
DateTimeShortcuts.calendars[num].drawPreviousMonth();
},
drawNext: function(num) {
DateTimeShortcuts.calendars[num].drawNextMonth();
},
handleCalendarCallback: function(num) {
let format = get_format('DATE_INPUT_FORMATS')[0];
// the format needs to be escaped a little
format = format.replace('\\', '\\\\')
.replace('\r', '\\r')
.replace('\n', '\\n')
.replace('\t', '\\t')
.replace("'", "\\'");
return function(y, m, d) {
DateTimeShortcuts.calendarInputs[num].value = new Date(y, m - 1, d).strftime(format);
DateTimeShortcuts.calendarInputs[num].focus();
document.getElementById(DateTimeShortcuts.calendarDivName1 + num).style.display = 'none';
// Added by cpa:
DateTimeShortcuts.calendarInputs[num].dispatchEvent(new Event('change'));
};
},
handleCalendarQuickLink: function(num, offset) {
const d = DateTimeShortcuts.now();
d.setDate(d.getDate() + offset);
DateTimeShortcuts.calendarInputs[num].value = d.strftime(get_format('DATE_INPUT_FORMATS')[0]);
DateTimeShortcuts.calendarInputs[num].focus();
DateTimeShortcuts.dismissCalendar(num);
}
};
// CUSTOMIZED: We call it ourselves.
//window.addEventListener('load', DateTimeShortcuts.init);
window.DateTimeShortcuts = DateTimeShortcuts;
}

1
aemo/static/js/autocomplete.min.js vendored Normal file
View file

@ -0,0 +1 @@
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).autocomplete=t()}(this,(function(){"use strict";return function(e){var t,n,o=document,i=o.createElement("div"),r=i.style,f=navigator.userAgent,l=-1!==f.indexOf("Firefox")&&-1!==f.indexOf("Mobile"),u=e.debounceWaitMs||0,a=e.preventSubmit||!1,s=e.disableAutoSelect||!1,d=l?"input":"keyup",c=[],p="",v=2,m=e.showOnFocus,g=0;if(void 0!==e.minLength&&(v=e.minLength),!e.input)throw new Error("input undefined");var h=e.input;function E(){n&&window.clearTimeout(n)}function w(){return!!i.parentNode}function L(){var e;g++,c=[],p="",t=void 0,(e=i.parentNode)&&e.removeChild(i)}function b(){for(;i.firstChild;)i.removeChild(i.firstChild);var n=function(e,t){var n=o.createElement("div");return n.textContent=e.label||"",n};e.render&&(n=e.render);var f=function(e,t){var n=o.createElement("div");return n.textContent=e,n};e.renderGroup&&(f=e.renderGroup);var l=o.createDocumentFragment(),u="#9?$";if(c.forEach((function(o){if(o.group&&o.group!==u){u=o.group;var i=f(o.group,p);i&&(i.className+=" group",l.appendChild(i))}var r=n(o,p);r&&(r.addEventListener("click",(function(t){e.onSelect(o,h),L(),t.preventDefault(),t.stopPropagation()})),o===t&&(r.className+=" selected"),l.appendChild(r))})),i.appendChild(l),c.length<1){if(!e.emptyMsg)return void L();var a=o.createElement("div");a.className="empty",a.textContent=e.emptyMsg,i.appendChild(a)}i.parentNode||o.body.appendChild(i),function(){if(w()){r.height="auto",r.width=h.offsetWidth+"px";var t,n=0;f(),f(),e.customize&&t&&e.customize(h,t,i,n)}function f(){var e=o.documentElement,i=e.clientTop||o.body.clientTop||0,f=e.clientLeft||o.body.clientLeft||0,l=window.pageYOffset||e.scrollTop,u=window.pageXOffset||e.scrollLeft,a=(t=h.getBoundingClientRect()).top+h.offsetHeight+l-i,s=t.left+u-f;r.top=a+"px",r.left=s+"px",(n=window.innerHeight-(t.top+h.offsetHeight))<0&&(n=0),r.top=a+"px",r.bottom="",r.left=s+"px",r.maxHeight=n+"px"}}(),function(){var e=i.getElementsByClassName("selected");if(e.length>0){var t=e[0],n=t.previousElementSibling;if(n&&-1!==n.className.indexOf("group")&&!n.previousElementSibling&&(t=n),t.offsetTop<i.scrollTop)i.scrollTop=t.offsetTop;else{var o=t.offsetTop+t.offsetHeight,r=i.scrollTop+i.offsetHeight;o>r&&(i.scrollTop+=o-r)}}}()}function y(){w()&&b()}function x(){y()}function C(e){e.target!==i?y():e.preventDefault()}function T(e){for(var t=e.which||e.keyCode||0,n=0,o=[38,13,27,39,37,16,17,18,20,91,9];n<o.length;n++){if(t===o[n])return}t>=112&&t<=123||40===t&&w()||D(0)}function N(n){var o=n.which||n.keyCode||0;if(38===o||40===o||27===o){var i=w();if(27===o)L();else{if(!i||c.length<1)return;38===o?function(){if(c.length<1)t=void 0;else if(t===c[0])t=c[c.length-1];else for(var e=c.length-1;e>0;e--)if(t===c[e]||1===e){t=c[e-1];break}}():function(){if(c.length<1&&(t=void 0),t&&t!==c[c.length-1]){for(var e=0;e<c.length-1;e++)if(t===c[e]){t=c[e+1];break}}else t=c[0]}(),b()}return n.preventDefault(),void(i&&n.stopPropagation())}13===o&&(t&&(e.onSelect(t,h),L()),a&&n.preventDefault())}function k(){m&&D(1)}function D(o){var i=++g,r=h.value;r.length>=v||1===o?(E(),n=window.setTimeout((function(){e.fetch(r,(function(e){g===i&&e&&(p=r,t=(c=e).length<1||s?void 0:c[0],b())}),o)}),0===o?u:0)):L()}function H(){setTimeout((function(){o.activeElement!==h&&L()}),200)}return i.className="autocomplete "+(e.className||""),r.position="absolute",i.addEventListener("mousedown",(function(e){e.stopPropagation(),e.preventDefault()})),i.addEventListener("focus",(function(){return h.focus()})),h.addEventListener("keydown",N),h.addEventListener(d,T),h.addEventListener("blur",H),h.addEventListener("focus",k),window.addEventListener("resize",x),o.addEventListener("scroll",C,!0),{destroy:function(){h.removeEventListener("focus",k),h.removeEventListener("keydown",N),h.removeEventListener(d,T),h.removeEventListener("blur",H),window.removeEventListener("resize",x),o.removeEventListener("scroll",C,!0),E(),L()}}}}));

6
aemo/static/js/autosize.min.js vendored Normal file
View file

@ -0,0 +1,6 @@
/*!
autosize 4.0.2
license: MIT
http://www.jacklmoore.com/autosize
*/
!function(e,t){if("function"==typeof define&&define.amd)define(["module","exports"],t);else if("undefined"!=typeof exports)t(module,exports);else{var n={exports:{}};t(n,n.exports),e.autosize=n.exports}}(this,function(e,t){"use strict";var n,o,p="function"==typeof Map?new Map:(n=[],o=[],{has:function(e){return-1<n.indexOf(e)},get:function(e){return o[n.indexOf(e)]},set:function(e,t){-1===n.indexOf(e)&&(n.push(e),o.push(t))},delete:function(e){var t=n.indexOf(e);-1<t&&(n.splice(t,1),o.splice(t,1))}}),c=function(e){return new Event(e,{bubbles:!0})};try{new Event("test")}catch(e){c=function(e){var t=document.createEvent("Event");return t.initEvent(e,!0,!1),t}}function r(r){if(r&&r.nodeName&&"TEXTAREA"===r.nodeName&&!p.has(r)){var e,n=null,o=null,i=null,d=function(){r.clientWidth!==o&&a()},l=function(t){window.removeEventListener("resize",d,!1),r.removeEventListener("input",a,!1),r.removeEventListener("keyup",a,!1),r.removeEventListener("autosize:destroy",l,!1),r.removeEventListener("autosize:update",a,!1),Object.keys(t).forEach(function(e){r.style[e]=t[e]}),p.delete(r)}.bind(r,{height:r.style.height,resize:r.style.resize,overflowY:r.style.overflowY,overflowX:r.style.overflowX,wordWrap:r.style.wordWrap});r.addEventListener("autosize:destroy",l,!1),"onpropertychange"in r&&"oninput"in r&&r.addEventListener("keyup",a,!1),window.addEventListener("resize",d,!1),r.addEventListener("input",a,!1),r.addEventListener("autosize:update",a,!1),r.style.overflowX="hidden",r.style.wordWrap="break-word",p.set(r,{destroy:l,update:a}),"vertical"===(e=window.getComputedStyle(r,null)).resize?r.style.resize="none":"both"===e.resize&&(r.style.resize="horizontal"),n="content-box"===e.boxSizing?-(parseFloat(e.paddingTop)+parseFloat(e.paddingBottom)):parseFloat(e.borderTopWidth)+parseFloat(e.borderBottomWidth),isNaN(n)&&(n=0),a()}function s(e){var t=r.style.width;r.style.width="0px",r.offsetWidth,r.style.width=t,r.style.overflowY=e}function u(){if(0!==r.scrollHeight){var e=function(e){for(var t=[];e&&e.parentNode&&e.parentNode instanceof Element;)e.parentNode.scrollTop&&t.push({node:e.parentNode,scrollTop:e.parentNode.scrollTop}),e=e.parentNode;return t}(r),t=document.documentElement&&document.documentElement.scrollTop;r.style.height="",r.style.height=r.scrollHeight+n+"px",o=r.clientWidth,e.forEach(function(e){e.node.scrollTop=e.scrollTop}),t&&(document.documentElement.scrollTop=t)}}function a(){u();var e=Math.round(parseFloat(r.style.height)),t=window.getComputedStyle(r,null),n="content-box"===t.boxSizing?Math.round(parseFloat(t.height)):r.offsetHeight;if(n<e?"hidden"===t.overflowY&&(s("scroll"),u(),n="content-box"===t.boxSizing?Math.round(parseFloat(window.getComputedStyle(r,null).height)):r.offsetHeight):"hidden"!==t.overflowY&&(s("hidden"),u(),n="content-box"===t.boxSizing?Math.round(parseFloat(window.getComputedStyle(r,null).height)):r.offsetHeight),i!==n){i=n;var o=c("autosize:resized");try{r.dispatchEvent(o)}catch(e){}}}}function i(e){var t=p.get(e);t&&t.destroy()}function d(e){var t=p.get(e);t&&t.update()}var l=null;"undefined"==typeof window||"function"!=typeof window.getComputedStyle?((l=function(e){return e}).destroy=function(e){return e},l.update=function(e){return e}):((l=function(e,t){return e&&Array.prototype.forEach.call(e.length?e:[e],function(e){return r(e)}),e}).destroy=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],i),e},l.update=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],d),e}),t.default=l,e.exports=t.default});

241
aemo/static/js/main.js Normal file
View file

@ -0,0 +1,241 @@
function htmlToElem(html) {
let temp = document.createElement('template');
html = html.trim(); // Never return a space text node as a result
temp.innerHTML = html;
return temp.content.firstChild;
}
function dateFormat(input) {
if (input) {
var dt = new Date(input);
return dt.toLocaleDateString("fr-CH");
}
return '-';
}
var changed = false;
function check_changed(ev) {
if (changed) {
alert("Vos données n'ont pas été sauvegardées !");
ev.preventDefault();
return false;
}
}
function toggle_read_more(ev) {
ev.preventDefault();
const link = ev.target;
link.innerHTML = (link.innerHTML == 'Afficher la suite') ? 'Réduire' : 'Afficher la suite';
link.parentNode.querySelector('.long').classList.toggle('hidden');
link.parentNode.querySelector('.short').classList.toggle('hidden');
}
function showImage(ev) {
var modal = document.getElementById('imgModal'); /* Present in base.html */
var imgTag = document.getElementById("img01");
var captionText = document.getElementById("caption");
ev.preventDefault();
modal.style.display = "block";
imgTag.src = this.href;
captionText.innerHTML = this.textContent;
}
function setConfirmHandlers(section) {
if (typeof section === 'undefined') section = document;
const selector = section.querySelectorAll(".btn-danger, .confirm");
selector.forEach(button => {
button.addEventListener('click', ev => {
if (button.dataset.confirm) {
ev.preventDefault();
if (!confirm(button.dataset.confirm)) {
return false;
} else {
if (button.getAttribute('formaction')) button.form.action = button.formAction;
button.form.submit();
}
}
});
});
}
function openFormInModal(url) {
const popup = document.querySelector('#popup0');
function setupForm() {
DateTimeShortcuts.init(popup);
setConfirmHandlers(popup);
document.querySelectorAll("#popup0 form").forEach((form) => {
form.addEventListener('submit', (ev) => {
ev.preventDefault();
const form = ev.target;
const formData = new FormData(form);
// GET/POST with fetch
let url = form.action;
let params = {method: form.method};
if (form.method == 'post') {
params['body'] = formData;
}
fetch(url, params).then(res => {
if (res.redirected) {
window.location.reload(true);
return '';
}
return res.text();
}).then(html => {
if (html) {
// Redisplay form with errors or display confirm page
popup.querySelector('.modal-body').innerHTML = html;
setupForm();
}
}).catch((err) => {
console.log(err);
alert("Désolé, une erreur s'est produite");
});
});
});
}
return fetch(url).then(res => res.text()).then(html => {
const modal = new bootstrap.Modal(popup);
popup.querySelector('.modal-body').innerHTML = html;
modal.show();
setupForm();
return popup;
});
}
function resetForm(ev) {
const form = ev.target.closest('form');
Array.from(form.elements).forEach(el => { el.value = ''; });
form.submit();
}
function submitFilterForm(form) {
let action = form.action || '.';
const formData = new FormData(form);
action += '?' + new URLSearchParams(formData).toString();
fetch(action, {
method: 'get',
headers: {'X-Requested-With': 'Fetch'}
}).then(response => { return response.text(); }).then(output => {
const parser = new DOMParser();
const doc = parser.parseFromString(output, "text/html");
const tableBody = doc.querySelector('.table-sortable tbody');
document.querySelector('.table-sortable tbody').replaceWith(tableBody);
const pagination = doc.querySelector('#pagination');
document.querySelector('#pagination').replaceWith(pagination);
});
}
function sortColumn(ev) {
const header = ev.target;
const form = document.querySelector('.selection_form');
const desc = header.classList.contains('asc');
form.elements['sort_by'].value = (desc ? '-' : '') + header.dataset.col;
submitFilterForm(form);
// Reset colums classes
Array.from(header.parentNode.children).forEach(head => {
head.classList.remove('desc');
head.classList.remove('asc');
});
header.classList.add(desc ? 'desc': 'asc');
}
document.addEventListener("DOMContentLoaded", () => {
if (typeof DateTimeShortcuts !== 'undefined') {
DateTimeShortcuts.init();
}
autosize(document.querySelectorAll('textarea'));
$("form").not(".selection_form").not("[method='get']").change(function() {
changed = true;
});
$("#menu_crne, #aemo_buttons, #aemo_print_buttons").click
(check_changed);
setConfirmHandlers();
$("table.sortable").each(function(idx) {
new Tablesort(this);
});
$(".table-sortable th").click(sortColumn);
$('a.read_more').click(toggle_read_more);
// Attachment images
$('a.image').click(showImage);
$('#modalClose').click(function(ev) {$(this).closest('div').hide(); });
$('input[name=dh_debut_1]').change(function(){
var dateFin = $('input[name=dh_fin_0]');
if (dateFin.val() == '') {
// Copier date de début vers date de fin
dateFin.val($('input[name=dh_debut_0]').val());
}
var heureFin = $('input[name=dh_fin_1]');
if (heureFin.val() == '') {
// Mettre heure de fin 1 heure après heure de début
var dh = $('input[name=dh_debut_1]').val().split(":");
h = parseInt(dh[0]) + 1;
heureFin.val(h.toString() + ":" + dh[1]);
}
});
document.querySelectorAll('.immediate-submit').forEach(immediate => {
//immediate.addEventListener('click', immediateSubmit);
// With screen readers, users don't click but change the radio value
immediate.addEventListener('change', (ev) => {
ev.target.form.submit()
});
});
$(".js-add, .js-edit").click(function(e) {
const url = this.dataset.url || this.href;
e.preventDefault();
openFormInModal(url);
return false;
});
// Activation des tooltips
const tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'))
tooltipTriggerList.map((el) => new bootstrap.Tooltip(el));
$('#reset-button').click(resetForm);
});
function debounce(func, timeout=300) {
let timer;
return (...args) => {
if (timeout <= 0) func.apply(this, args);
else {
clearTimeout(timer);
timer = setTimeout(() => { func.apply(this, args); }, timeout);
}
};
}
async function archiveFamilies(ev) {
const btn = ev.target;
const archiveUrl = btn.dataset.archiveurl;
const counterSpan = document.querySelector('#archive-counter');
const totalSpan = document.querySelector('#archive-total');
bootstrap.Modal.getInstance(document.getElementById('archiveModal')).hide();
document.getElementById('archive-message').removeAttribute('hidden');
const resp = await fetch(btn.dataset.getarchivableurl);
const data = await resp.json();
let compteur = 0;
totalSpan.textContent = data.length;
const formData = new FormData();
formData.append('csrfmiddlewaretoken', document.querySelector('[name=csrfmiddlewaretoken]').value);
for (let i = 0; i < data.length; i++) {
const archResp = await fetch(
archiveUrl.replace('999', data[i]),
{method: 'POST', headers: {'X-Requested-With': 'Fetch'}, body: formData}
);
const jsonResp = await archResp.json();
compteur += 1;
counterSpan.textContent = compteur;
}
const messageP = document.querySelector("#archive-message p");
messageP.textContent = `${compteur} dossiers ont été archivés avec succès.`;
messageP.classList.remove('alert-danger');
messageP.classList.add('alert-success');
}

View file

@ -0,0 +1,6 @@
/*!
* tablesort v5.1.0 (2020-01-22)
* http://tristen.ca/tablesort/demo/
* Copyright (c) 2020 ; Licensed MIT
*/
!function(){var a=function(a){return a=a.replace(/\-/g,"/"),a=a.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{2,4})/,"$3-$2-$1"),new Date(a).getTime()||-1};Tablesort.extend("date",function(b){return(-1!==b.search(/(Mon|Tue|Wed|Thu|Fri|Sat|Sun)\.?\,?\s*/i)||-1!==b.search(/\d{1,2}[\/\-]\d{1,2}[\/\-]\d{2,4}/)||-1!==b.search(/(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)/i))&&!isNaN(a(b))},function(b,c){return b=b.toLowerCase(),c=c.toLowerCase(),a(c)-a(b)})}();

View file

@ -0,0 +1,6 @@
/*!
* tablesort v5.1.0 (2020-01-22)
* http://tristen.ca/tablesort/demo/
* Copyright (c) 2020 ; Licensed MIT
*/
!function(){var a=function(a){return a.replace(/[^\-?0-9.]/g,"")},b=function(a,b){return a=parseFloat(a),b=parseFloat(b),a=isNaN(a)?0:a,b=isNaN(b)?0:b,a-b};Tablesort.extend("number",function(a){return a.match(/^[-+]?[£\x24Û¢´€]?\d+\s*([,\.]\d{0,2})/)||a.match(/^[-+]?\d+\s*([,\.]\d{0,2})?[£\x24Û¢´€]/)||a.match(/^[-+]?(\d)*-?([,\.]){0,1}-?(\d)+([E,e][\-+][\d]+)?%?$/)},function(c,d){return c=a(c),d=a(d),b(d,c)})}();

6
aemo/static/js/tablesort.min.js vendored Normal file
View file

@ -0,0 +1,6 @@
/*!
* tablesort v5.1.0 (2020-01-22)
* http://tristen.ca/tablesort/demo/
* Copyright (c) 2020 ; Licensed MIT
*/
!function(){function a(b,c){if(!(this instanceof a))return new a(b,c);if(!b||"TABLE"!==b.tagName)throw new Error("Element must be a table");this.init(b,c||{})}var b=[],c=function(a){var b;return window.CustomEvent&&"function"==typeof window.CustomEvent?b=new CustomEvent(a):(b=document.createEvent("CustomEvent"),b.initCustomEvent(a,!1,!1,void 0)),b},d=function(a){return a.getAttribute("data-sort")||a.textContent||a.innerText||""},e=function(a,b){return a=a.trim().toLowerCase(),b=b.trim().toLowerCase(),a===b?0:a<b?1:-1},f=function(a,b){return[].slice.call(a).find(function(a){return a.getAttribute("data-sort-column-key")===b})},g=function(a,b){return function(c,d){var e=a(c.td,d.td);return 0===e?b?d.index-c.index:c.index-d.index:e}};a.extend=function(a,c,d){if("function"!=typeof c||"function"!=typeof d)throw new Error("Pattern and sort must be a function");b.push({name:a,pattern:c,sort:d})},a.prototype={init:function(a,b){var c,d,e,f,g=this;if(g.table=a,g.thead=!1,g.options=b,a.rows&&a.rows.length>0)if(a.tHead&&a.tHead.rows.length>0){for(e=0;e<a.tHead.rows.length;e++)if("thead"===a.tHead.rows[e].getAttribute("data-sort-method")){c=a.tHead.rows[e];break}c||(c=a.tHead.rows[a.tHead.rows.length-1]),g.thead=!0}else c=a.rows[0];if(c){var h=function(){g.current&&g.current!==this&&g.current.removeAttribute("aria-sort"),g.current=this,g.sortTable(this)};for(e=0;e<c.cells.length;e++)f=c.cells[e],f.setAttribute("role","columnheader"),"none"!==f.getAttribute("data-sort-method")&&(f.tabindex=0,f.addEventListener("click",h,!1),null!==f.getAttribute("data-sort-default")&&(d=f));d&&(g.current=d,g.sortTable(d))}},sortTable:function(a,h){var i=this,j=a.getAttribute("data-sort-column-key"),k=a.cellIndex,l=e,m="",n=[],o=i.thead?0:1,p=a.getAttribute("data-sort-method"),q=a.getAttribute("aria-sort");if(i.table.dispatchEvent(c("beforeSort")),h||(q="ascending"===q?"descending":"descending"===q?"ascending":i.options.descending?"descending":"ascending",a.setAttribute("aria-sort",q)),!(i.table.rows.length<2)){if(!p){for(var r;n.length<3&&o<i.table.tBodies[0].rows.length;)r=j?f(i.table.tBodies[0].rows[o].cells,j):i.table.tBodies[0].rows[o].cells[k],m=r?d(r):"",m=m.trim(),m.length>0&&n.push(m),o++;if(!n)return}for(o=0;o<b.length;o++)if(m=b[o],p){if(m.name===p){l=m.sort;break}}else if(n.every(m.pattern)){l=m.sort;break}for(i.col=k,o=0;o<i.table.tBodies.length;o++){var s,t=[],u={},v=0,w=0;if(!(i.table.tBodies[o].rows.length<2)){for(s=0;s<i.table.tBodies[o].rows.length;s++){var r;m=i.table.tBodies[o].rows[s],"none"===m.getAttribute("data-sort-method")?u[v]=m:(r=j?f(m.cells,j):m.cells[i.col],t.push({tr:m,td:r?d(r):"",index:v})),v++}for("descending"===q?t.sort(g(l,!0)):(t.sort(g(l,!1)),t.reverse()),s=0;s<v;s++)u[s]?(m=u[s],w++):m=t[s-w].tr,i.table.tBodies[o].appendChild(m)}}i.table.dispatchEvent(c("afterSort"))}},refresh:function(){void 0!==this.current&&this.sortTable(this.current,!0)}},"undefined"!=typeof module&&module.exports?module.exports=a:window.Tablesort=a}();