-backoffice/api/lib/perl5
-backoffice/data/output/pot
-backoffice/data/tmp
-
-
+website/app
desktopapp/node_modules
desktopapp/node_modules/package-lock.json
OLD/
show: false,
icon: __dirname + '/img/POT-logo.png',
minWidth: 1260,
- minHeight: 600,
+ minHeight: 720,
title: "POT",
backgroundColor: "#fff",
webPreferences: {
// nodeIntegration: true
}
})
- const glshort = globalShortcut.register('CommandOrControl+X', () => {
+ const glshort = globalShortcut.register('CommandOrControl+Shift+I', () => {
//console.log('CommandOrControl+X is pressed')
mainWindow.webContents.openDevTools({detached: true});
})
<glyph unicode="" glyph-name="staff" d="M852.529 206.541c-40.953 0.285-74.344-32.751-74.586-73.619-0.285-41.010 32.708-74.331 73.589-74.616 40.981-0.285 74.373 32.609 74.629 73.619 0.256 40.868-32.708 74.331-73.632 74.616zM853.184 311.346c15.493 0 30.472-2.421 44.755-6.123l5.909-39.159c14.453-5.696 27.795-13.385 39.529-23.068l37.065 13.955c20.847-21.502 36.211-48.13 44.213-77.891l-31.042-24.777c1.153-7.405 1.908-15.094 1.837-22.784-0.086-7.832-0.897-15.379-2.136-22.784l30.743-25.204c-8.415-29.619-24.122-56.105-45.224-77.322l-36.866 14.525c-11.876-9.541-25.332-17.088-39.813-22.641l-6.436-39.017c-14.353-3.702-29.333-5.696-44.812-5.696-15.521 0.142-30.472 2.421-44.811 6.265l-5.852 39.159c-14.439 5.554-27.824 13.385-39.557 23.068l-37.065-13.955c-20.818 21.36-36.211 48.13-44.242 77.891l31.070 24.635c-1.139 7.547-1.88 15.094-1.837 22.926 0.085 7.689 0.897 15.379 2.136 22.784l-30.743 25.062c8.387 29.761 24.122 56.105 45.21 77.464l36.909-14.525c11.847 9.541 25.318 17.088 39.828 22.499l6.365 39.159c14.382 3.56 29.362 5.696 44.868 5.553zM409.028 371.574l49.657-49.694-38.586-38.587 39.825-46.143-52.696-157.924-54.289 156.107 44.44 48.528-38.046 38.019zM618.515 376.928c38.144-7.169 73.391-22.554 103.826-44.248l0.426-0.317-2.897-1.86c-63.883-43.209-105.968-116.325-105.968-199.009 0-41.386 10.521-80.353 29.028-114.37l0.909-1.579h-643.838v102.668c0 127.586 90.779 233.999 211.264 258.14l194.355-304.663zM344.453 820.627c-25.958 0.065-58.686-6.617-62.522-39.908 0 0 0-64.687-17.265-73.32l-4.285-60.371-17.266 17.252 6.459-81.938 32.358-2.176c0 0 8.634-166.017 166.052-133.689 0 0 75.464 23.726 92.699 133.689l25.901 2.176 6.459 73.32-10.776-2.173c0 0-6.491 62.544-12.949 88.412l-4.317 62.531c0 0-36.645 30.199-90.556 4.316 0 0-62.546 2.173-77.637 8.633 0 0-14.592 3.203-32.352 3.248zM418.251 942.627c73.513 0.006 124.602-38.985 124.602-38.985 94.873-75.478 43.136-204.866 43.136-204.866 21.551-12.933 19.41-23.709 19.41-23.709 0-140.181-38.819-129.388-38.819-129.388-21.583-90.57-105.648-131.53-105.648-131.53-163.908-40.977-204.867 129.371-204.867 129.371-34.503 4.316-38.819 84.095-38.819 84.095-10.809 53.91 19.409 75.477 19.409 75.477-64.718 150.938 51.737 196.216 51.737 196.216 46.692 32.612 91.352 43.315 129.859 43.318z" />
<glyph unicode="" glyph-name="back" d="M580.895 960h273.723l-413.813-509.791 2.338-2.896 415.046-511.313h-273.736l-280.542 345.584-1.234-1.48-136.868 168.605 136.868 168.646z" />
<glyph unicode="" glyph-name="next" d="M165.81 960h273.728l280.547-345.583 1.234 1.48 136.87-168.604-415.080-511.292h-273.741l413.82 509.792-2.338 2.896-99.387 122.396z" />
+<glyph unicode="" glyph-name="sendemail" d="M27.191 706.781c-25.772-241.871 124.762-457.551 339.243-483.692 130.086-15.899 254.021 41.716 338.899 143.179l-99.362 77.659 417.947 168.715-62.835-446.319-94.675 73.987c-102.159-126.221-264.94-198.635-437.993-177.524-267.144 32.56-457.349 275.497-424.787 542.664 4.313 35.279 12.355 69.116 23.562 101.329zM119.785 802.29l301.541-301.517c9.96-9.956 26.039-9.956 35.971 0l300.424 300.37c6.124-4.049 10.197-10.971 10.197-18.876v-222.443l-254.765-102.9 107.427-83.946h-452.099c-22.788 22.312-43.559 47.202-61.051 74.628v334.661c0 8.758 5.061 16.291 12.355 20.023zM154.8 854.39h569.177c-0.319-5.431-2.529-10.81-6.738-14.938l-263.022-261.552c-8.813-8.573-22.738-8.625-31.099-0.080l-262.357 260.383c-4.368 4.42-6.284 10.331-5.962 16.186z" />
+<glyph unicode="" glyph-name="exit" d="M826.547 713.055l174.681-174.731-174.681-174.856v116.127h-324.501v117.521h324.501zM22.578 960h748.846v-322.493h-85.415v233.478h-527.32l143.325-93.695v-571.717h383.995v233.478h85.415v-322.493h-469.41v-180.559l-279.436 180.559z" />
+<glyph unicode="" glyph-name="key" d="M738.8 883.463c-8.706 0-17.411-3.312-24.038-9.937-13.313-13.315-13.313-34.816 0-48.13l148.772-148.899c13.318-13.25 34.83-13.25 48.143 0.064 13.308 13.25 13.308 34.816-0.067 48.13l-148.768 148.835c-6.63 6.625-15.336 9.937-24.042 9.937zM711.352 960c26.51 0.008 53.012-10.118 73.233-30.404l177.155-177.025c40.447-40.509 40.447-106.138 0-146.523l-213.276-213.222c-40.389-40.436-106.026-40.436-146.535 0l-20.948 20.956-146.829-147.025-75.136 22.819 16.939-80.955-78.011 19.881 12.629-85.271-86.701 11.249 16.942-80.95-78.887 18.878 15.316-82.52-74.011-74.080-81.386 174.416 431.31 431.342 110.665-110.618-138.919 138.968c-40.498 40.383-40.498 106.017 0 146.523l213.17 213.157c20.255 20.253 46.773 30.396 73.283 30.404z" />
</font></defs></svg>
\ No newline at end of file
@font-face {
font-family: 'pot';
src:
- url('fonts/pot.ttf?acr332') format('truetype'),
- url('fonts/pot.woff?acr332') format('woff'),
- url('fonts/pot.svg?acr332#pot') format('svg');
+ url('fonts/pot.ttf?26rj7t') format('truetype'),
+ url('fonts/pot.woff?26rj7t') format('woff'),
+ url('fonts/pot.svg?26rj7t#pot') format('svg');
font-weight: normal;
font-style: normal;
font-display: block;
-moz-osx-font-smoothing: grayscale;
}
+.icon-sendemail:before {
+ content: "\e946";
+}
+.icon-exit:before {
+ content: "\e947";
+}
+.icon-key:before {
+ content: "\e948";
+}
.icon-back:before {
content: "\e944";
}
background-color: #293146;
color: #fff;
padding:8px!important;
+ margin-bottom: 10px;
}
.modal-content > footer {
return false;
}
-function fillformbydataclass(dataclass,data,readonly = false){
- var frm = document.querySelectorAll('.data_'+ dataclass);
- if (data){
- for (var f in frm){
- if (data[frm[f].id]){
- if (readonly){ frm[f].readonly = true;}
- if (frm[f].tagName == 'INPUT'){
- if (frm[f].type == "checkbox"){
- if (data[frm[f].id] == "1"){
- frm[f].checked = true;
- } else {
- frm[f].checked = false;
- }
- } else if (frm[f].classList.contains("datefield")){
- frm[f]._flatpickr.setDate(data[frm[f].id]);
- } else if (frm[f].classList.contains("timefield")){
- frm[f]._flatpickr.setDate(data[frm[f].id]);
- }else if (frm[f].classList.contains("choices__input")){
- if ((data[frm[f].id] != null) && (data[frm[f].id] != '[""]')){
- choice[dataclass][frm[f].id].setValue(JSON.parse(data[frm[f].id]));
- }
- } else {
- frm[f].value=data[frm[f].id];
- }
- }
- if (frm[f].tagName == 'SELECT'){
- if (frm[f].classList.contains("choices__input")){
- if (frm[f].multiple == true){
- choice[dataclass][frm[f].id].setChoiceByValue(JSON.parse(data[frm[f].id]));
- }else {
- choice[dataclass][frm[f].id].setChoiceByValue(data[frm[f].id]);
- }
- } else {
- frm[f].value=data[frm[f].id];
- }
+// function fillformbydataclass(dataclass,data,readonly = false){
+// var frm = document.querySelectorAll('.data_'+ dataclass);
+// if (data){
+// for (var f in frm){
+// if (data[frm[f].id]){
+// if (readonly){ frm[f].readonly = true;}
+// if (frm[f].tagName == 'INPUT'){
+// if (frm[f].type == "checkbox"){
+// if (data[frm[f].id] == "1"){
+// frm[f].checked = true;
+// } else {
+// frm[f].checked = false;
+// }
+// } else if (frm[f].classList.contains("datefield")){
+// frm[f]._flatpickr.setDate(data[frm[f].id]);
+// } else if (frm[f].classList.contains("timefield")){
+// frm[f]._flatpickr.setDate(data[frm[f].id]);
+// }else if (frm[f].classList.contains("choices__input")){
+// if ((data[frm[f].id] != null) && (data[frm[f].id] != '[""]')){
+// choice[dataclass][frm[f].id].setValue(JSON.parse(data[frm[f].id]));
+// }
+// } else {
+// frm[f].value=data[frm[f].id];
+// }
+// }
+// if (frm[f].tagName == 'SELECT'){
+// if (frm[f].classList.contains("choices__input")){
+// if (frm[f].multiple == true){
+// choice[dataclass][frm[f].id].setChoiceByValue(JSON.parse(data[frm[f].id]));
+// }else {
+// choice[dataclass][frm[f].id].setChoiceByValue(data[frm[f].id]);
+// }
+// } else {
+// frm[f].value=data[frm[f].id];
+// }
- }
- }
- }
- }
-}
+// }
+// }
+// }
+// }
+// }
function fillformbydataclass2(dataclass,choices,data,onblur){
var frm = document.querySelectorAll('.data_'+ dataclass);
+ console.log("Data to fill");
+ console.log(data);
if (data){
for (var f in frm){
+ console.log(frm[f].id);
+ if (frm[f].id){
+ frm[f].dataset.id=data['id'];
+ }
if (data[frm[f].id]){
+ console.log("=>");
+ console.log(data[frm[f].id]);
// if (onblur){
// frm[f].addEventListener('blur',onblur);
// }
- frm[f].dataset.id=data['id'];
+
+ //frm[f].dataset.id=data['id'];
if (frm[f].tagName == 'INPUT'){
if (frm[f].type == "checkbox"){
if (data[frm[f].id] == "1"){
border-bottom: 1px solid #ccc;
/* border-radius: 2.5px; */
/* font-size: 14px; */
- min-height: 32px;
+ min-height: 28px;
overflow: hidden;
/* font-weight: bold; */
}
.choices__list--single {
display: inline-block;
- padding: 6px 2px 2px 2px;
+ padding: 2px 2px 2px 2px;
width: 100%;
}
[% END -%]\r
[% MACRO fieldcheckbox(column,table,title,size,state,value,blurevent) BLOCK -%]\r
<div class="container">\r
- <br/>\r
- <input class="check data_[% table %] [% IF state.length > 0 %][% state %][% END %]" id="[% column %]" name="[% table %]_[% column %]" data-column="[% column %]" data-table="[% table %]" data-id="" value="[% value %]" type="checkbox" [% IF state.length > 0 %][% state %][% END %] [% IF blurevent %]onblur="[% blurevent %]"[% END %]>\r
- <label>[% title %]</label>\r
+ <div class="cell-row">\r
+ <div class="cell" style="width: 40px;">\r
+ <input class="check data_[% table %] [% IF state.length > 0 %][% state %][% END %]" id="[% column %]" name="[% table %]_[% column %]" data-column="[% column %]" data-table="[% table %]" data-id="" value="[% value %]" type="checkbox" [% IF state.length > 0 %][% state %][% END %] [% IF blurevent %]onblur="[% blurevent %]"[% END %]>\r
+ </div>\r
+ <div class="cell">\r
+ [% title %]\r
+ </div> \r
+ \r
</div>\r
[% END -%]\r
\r
<div id="tbl_companies"></div>
</div>
<div class="cell" >
+ <div class="panel" id="pnl_nodata">
+ <div class="bar moduletoolbar">
+ <div class="bar-item PageHeadTitle"> </div>
+ </div>
+ <div class="row center" style="margin-top: 200px;">
+ <img src="[% abpspath%][% staticpath %]img/toplogo.png" style="margin: auto;">
+ </div>
+ </div>
+ <div class="panel" id="pnl_basedata" style="display: none;">
<div class="bar moduletoolbar">
<div class="bar-item PageHeadTitle">Données de base</div>
</div>
<div class="cell">
<div class="row">
<div class="cell">
+ <div class="row" style="margin-top: 5px;">
+ <div class="cell" style="width: 300px;">
+ [% fieldeditbox('datasetname','companies','DataSet','','','','','record.savefield(this);') %]
+ </div>
+
+ </div>
<div class="row" style="margin-top: 5px;">
<div class="cell" style="width: 300px;">
- [% fieldeditbox('company','companies','Entreprise','','','','') %]
+ [% fieldeditbox('company','companies','Entreprise','','','','','record.savefield(this);') %]
</div>
<div class="cell" style="width: 100px;">
- [% fieldeditbox('socialtype','companies','dénom. Sociale','','','','') %]
+ [% fieldeditbox('socialtype','companies','dénom. Sociale','','','','','record.savefield(this);') %]
</div>
</div>
<div class="row">
- <div class="cell" style="width: 120px;">[% fieldeditbox('comregister','companies','No. RCS','','','','B123456') %]</div>
- <div class="cell" style="width: 150px;">[% fieldeditbox('vatnumber','companies','No TVA Internationale','','','','LU12345678') %]</div>
+ <div class="cell" style="width: 120px;">[% fieldeditbox('comregister','companies','No. RCS','','','','','record.savefield(this);') %]</div>
+ <div class="cell" style="width: 150px;">[% fieldeditbox('vatnumber','companies','No TVA Internationale','','','','','record.savefield(this);') %]</div>
</div>
<div class="row">
- <div class="cell" style="width: 250px;">[% fieldeditbox('email','companies','E-Mail','','','','') %]</div>
+ <div class="cell" style="width: 250px;">[% fieldeditbox('email','companies','E-Mail','','','','','record.savefield(this);') %]</div>
<div class="cell">[% rdonly = 'readonly' %]
[% IF (session.usergroup == 'admin') %]
- [% fieldeditbox('schemata','companies','Database-Schema','half','readonly','','') %]
+ [% fieldeditbox('schemata','companies','Database-Schema','','readonly','','') %]
[% rdonly = '' %]
[% END %]</div>
</div>
<div class="cell">
<div class="row">
<div class="cell" style="width: 400px;">
- [% fieldeditbox('address','companies','Adresse','','','','') %]
+ [% fieldeditbox('address','companies','Adresse','','','','','record.savefield(this);') %]
</div>
</div>
<div class="row">
<div class="cell" style="width: 70px;">
- [% fieldeditbox('zip','companies','CP','','','','') %]
+ [% fieldeditbox('zip','companies','CP','','','','','record.savefield(this);') %]
</div>
<div class="cell" style="width: 170px;">
- [% fieldeditbox('city','companies','Ville','','','','') %]
+ [% fieldeditbox('city','companies','Ville','','','','','record.savefield(this);') %]
</div>
<div class="cell" style="width: 160px;">
- [% fieldeditbox('country','companies','Pays','','','','') %]
+ [% fieldeditbox('country','companies','Pays','','','','','record.savefield(this);') %]
</div>
</div>
<div class="row">
- <div class="cell" style="width: 250px;">[% fieldeditbox('phone','companies','Téléphone','','','','') %]</div>
+ <div class="cell" style="width: 250px;">[% fieldeditbox('phone','companies','Téléphone','','','','','record.savefield(this);') %]</div>
</div>
</div>
</div>
</div>
<div class="row" style="margin-top: 5px;">
- <div class="cell">[% fielddatebox("reportperiodstart","companies","début",'','','','') %] </div>
+ <div class="cell">[% fielddatebox("reportperiodstart","companies","début",'','','','','record.savefield(this);') %] </div>
<div class="cell" style="width: 60px;">[% fieldnumberbox("reportperiodlength","companies","Durée",'','','','',1,'',1) %]</div>
<div class="cell" style="width: 120px;">[% fieldselectbox("reportperiodunit","companies","Unité",'','','','') %]</div>
</div>
tbl: null,
current_company: null,
current_schemata: null,
+ current_view: 'basedata',
name: "companies",
choices:{"reportperiodunit":null},
initform: function(){
- // flatpickr("#reportperiodstart",{altInput: true,
- // altFormat: "d.m.Y",
- // dateFormat: "Y-m-d",
- // "locale": "fr",
- // });
+ flatpickr("#reportperiodstart",{altInput: true,
+ altFormat: "d.m.Y",
+ dateFormat: "Y-m-d",
+ "locale": "fr",
+ });
companies.choices["reportperiodunit"] = new Choices('#reportperiodunit',{
searchEnabled: false,
itemSelectText: '',
},
rowContext:function(e, row){e.preventDefault();},
columns:[
- {title:"entreprise",field:"company"}
+ {title:"entreprise",field:"company",resizeable: false}
// {title:"address",field:"address",headerFilter:"input"},
// {title:"cp",field:"zip",headerFilter:"input"},
// {title:"ville",field:"city",headerFilter:"input"},
},
gettbldata: function(){
[% IF session.usergroup == 'admin' %]
- req.reqdata("POST", "db.cgi", { "get": "companies" + "list","schemata":schemata}, companies.loadtbldata);
+ req.reqdata("POST", "db.cgi", { "get": "companieslist","schemata":schemata}, companies.loadtbldata);
[% ELSE %]
req.reqdata("POST", "db.cgi", { "get": "userschemaaccess","schemata":schemata, "filter": " id_user='[% session.id %]'"}, companies.loadtbldata);
[% END %]
req.reqdata("POST", "db.cgi", { "get": "companies" + "data","schemata":schemata, "filter":"id='" + udata[0].id + "'"}, companies.fillform);
staffgroups.gettbldata();
worktimes.gettbldata();
+ companies.setview(companies.current_view);
//module.viewpanel('frm_' +"companies");
}
},
afterdeletecallback: function(data){
companies.gettbldata();
module.viewpanel('tbl_' + "companies");
+ },
+ setview: function(viewname){
+ companies.current_view = viewname;
+ // if (viewname == 'periods'){
+ // staffperiods.gettbldata();
+ // }
+ // if (viewname == 'basedata'){
+ // //staff.edit();
+ // }
+ module.viewpanel(viewname);
+
}
}
inittable: function(){
worktimes.tbl = new Tabulator("#tbl_" + "worktimes", {
headerFilterPlaceholder: "filter...",
- height: "calc(100vh - 503px)",
+ height: "calc(100vh - 517px)",
layout: "fitData",
selectable: 1,
rowContext:function(e, row){ e.preventDefault(); },
<div class="bar moduletoolbar">
<button class="bar-item toolbarbtn" onclick="staff.viewtable();"><span class="icon-table" style="font-size: 16px;"></span><br/>Tableau</button>
<div class="bar-item PageHeadTitle">Périodes de références</div>
- <div class="toolbar" id="tbar_tbl_reportperiod">
+ <div class="toolbar paneltoolbar" id="tlb_periods">
<button class="bar-item toolbarbtn right" onclick="reportperiod.add();"><span class="icon-plus" style="font-size: 16px;"><br/>ajouter</button>
- <button class="bar-item toolbarbtn right" onclick="staffperiodweeks.loadplan();"><span class="icon-edit" style="font-size: 16px;"><br/>éditer</button>
+ <button class="bar-item toolbarbtn right" onclick="reportperiod.editplan();"><span class="icon-edit" style="font-size: 16px;"><br/>éditer</button>
<button class="bar-item toolbarbtn right" onclick="reportperiod.generatereport();"><span class="icon-pdf" style="font-size: 16px;"><br/>PDF</button>
<button class="bar-item toolbarbtn right" onclick="reportperiod.datarefresh();"><span class="icon-datarefresh" style="font-size: 16px;"><br/>actualiser</button>
<button class="bar-item toolbarbtn right" onclick="reportperiod.showdlgpayedhours();"><span class="icon-pay" style="font-size: 16px;"><br/>heures payées</button>
<button class="bar-item toolbarbtn right" onclick="staff.edit();"><span class="icon-edit" style="font-size: 16px;"><br/>éditer</button>-->
</div>
</div>
-</div>
- <div class="display-container panel" id="pnl_tbl_reportperiod">
- <div class="cell-row">
- <div class="cell" style="width: 200px;">
- <div id="tbl_reportperiodfilter"></div>
- </div>
- <div class="cell">
- <div id="tbl_reportperiod"></div>
- </div>
- </div>
+</div>
+
+<div class="display-container" >
+ <div class="cell-row">
+ <div class="cell" style="width: 200px;">
+ <div id="tbl_reportperiodfilter"></div>
</div>
- <div class="display-container panel" id="pnl_tbl_staffreportperiodweeks" style="display: none;">
- <div id="tbl_staffreportperiodweeks"></div>
+ <div class="cell">
+ <div class="panel" id="pnl_nodata">
+ <div class="bar moduletoolbar">
+ <div class="bar-item PageHeadTitle"> </div>
+ </div>
+ <div class="row center" style="margin-top: 200px;">
+ <img src="[% abpspath%][% staticpath %]img/toplogo.png" style="margin: auto;">
+ </div>
+ </div>
+ <div class="panel" id="pnl_periods" style="display: none;">
+ <div id="tbl_reportperiod"></div>
+ </div>
+ <div class="panel" id="pnl_staffperiodweeks" style="display: none;">
+ <div class="bar moduletoolbar">
+ <button class="bar-item toolbarbtn" onclick="reportperiod.setview('periods'); return false;"><span class="icon-back" style="font-size: 16px;"><br/>retour</button>
+ <div class="bar-item PageHeadTitle" id="periodtitle" style="display: none;"></div>
+ <div class="bar-item PageHeadTitle" id="stafftitle"></div>
+ <button class="bar-item toolbarbtn right" onclick="staffperiodweeks.edit(); return false;"><span class="icon-edit" style="font-size: 16px;"><br/>editer</button>
+ </div>
+ <div id="tbl_staffperiodweeks" ></div>
+ </div>
</div>
+ </div>
+</div>
+
[% #INCLUDE %]
[% INCLUDE block/dlgdeleterow.tt %]
[% INCLUDE block/dlgdataload.tt %]
[% INCLUDE block/dlgreport.tt %]
[% INCLUDE block/dlgaction.tt %]
+ [% INCLUDE block/dlgstaffperioddays.tt %]
<script src="periods/reportperiod.js"></script>
<script src="periods/staffperiodweeks.js"></script>
\ No newline at end of file
tblfilter: null,
tbl: null,
selected: null,
- name: "reportperiod",
+ current_view: 'periods',
+ // name: "reportperiod",
choices:{},
initform: function(){},
inittable: function(){
let fsel = reportperiod.tblfilter.getSelectedData();
console.log(fsel);
reportperiod.gettbldata(fsel[0].id);
+ reportperiod.setview(reportperiod.current_view);
//invoices.gettbldata(fsel);
//invoices.getsums(fsel);
},
// ],
columns: [
- {title: "Début",field: "startdate",headerSort:"datetime",formatter:"datetime",formatterParams:{inputFormat:"YYYY-MM-DD",outputFormat:"DD.MM.YYYY",invalidPlaceholder:""} },
- {title: "Fin",field: "enddate",sorter:"datetime",formatter:"datetime",formatterParams:{inputFormat:"YYYY-MM-DD",outputFormat:"DD.MM.YYYY",invalidPlaceholder:""} },
+ {title: "Début",field: "startdate",headerSort:"datetime",formatter:"datetime",resizable: false,formatterParams:{inputFormat:"YYYY-MM-DD",outputFormat:"DD.MM.YYYY",invalidPlaceholder:""} },
+ {title: "Fin",field: "enddate",sorter:"datetime",resizable: false,formatter:"datetime",formatterParams:{inputFormat:"YYYY-MM-DD",outputFormat:"DD.MM.YYYY",invalidPlaceholder:""} },
// {title: "Département",field:"groupname"}
// {title: "Contrat", field:"contracthours",headerSort: false},
// {title: "Travail", field:"workhours",headerSort: false},
formsaved({});
req.reqdata("POST","index.cgi",rpdata,reportperiod.gettbldata);
return false;
+ },
+ setview: function(viewname){
+ reportperiod.current_view = viewname;
+ // if (viewname == 'periods'){
+ // staffperiods.gettbldata();
+ // }
+ // if (viewname == 'basedata'){
+ // //staff.edit();
+ // }
+ module.viewpanel(viewname);
+
+ },
+ editplan(){
+ let sel = reportperiod.tbl.getSelectedData();
+ if (sel[0]){
+ staffperiodweeks.loadplan(reportperiod.tbl);
+ }
}
}
\ No newline at end of file
],
columns: [
{ title: "Date",field: "daydate",align:"right",sorter:"datetime",formatter:"datetime",formatterParams:{inputFormat:"YYYY-MM-DD",outputFormat:"dd, DD.MM.YYYY",invalidPlaceholder:""}},
- { title: "Début 1",field: "timestart1",sorter: false,align:"right"},
- { title: "Fin 1",field: "timeend1",sorter:false,align:"right"},
- { title: "Coup.",field: "interruptionhours",sorter:false,align:"right"},
- { title: "Début 2",field: "timestart2",sorter: false,align:"right"},
- { title: "Fin 2",field: "timeend2",sorter: false,align:"right"},
- { title: "Pause",field: "timepause",sorter: false,align:"right"},
- { title: "Travail",field: "workhours",sorter: false,align:"right",bottomCalc:staffperiodweeks.setweekworkhours},
- { title: "Congé",field: "vacancyhours",sorter: false,align:"right",bottomCalc:staffperiodweeks.setweekvacancyhours},
- { title: "Récup.",field: "recuperationhours",align:"right",sorter: false,bottomCalc:staffperiodweeks.setweekrecuperationhours},
- { title: "Total",field: "dayhours",align:"right",sorter: false,bottomCalc:staffperiodweeks.setweektotalhours},
- { title: "Diff",field:"diffhours",align:"right",formatter:nullFormatter,sorter:false,bottomCalc:staffperiodweeks.setweekdiffhours}
+ { title: "Début 1",field: "timestart1",sorter: false,hozAlign:"right"},
+ { title: "Fin 1",field: "timeend1",sorter:false,hozAlign:"right"},
+ { title: "Coup.",field: "interruptionhours",sorter:false,hozAlign:"right"},
+ { title: "Début 2",field: "timestart2",sorter: false,hozAlign:"right"},
+ { title: "Fin 2",field: "timeend2",sorter: false,hozAlign:"right"},
+ { title: "Pause",field: "timepause",sorter: false,hozAlign:"right"},
+ { title: "Travail",field: "workhours",sorter: false,hozAlign:"right",bottomCalc:staffperiodweeks.setweekworkhours},
+ { title: "Congé",field: "vacancyhours",sorter: false,hozAlign:"right",bottomCalc:staffperiodweeks.setweekvacancyhours},
+ { title: "Récup.",field: "recuperationhours",hozAlign:"right",sorter: false,bottomCalc:staffperiodweeks.setweekrecuperationhours},
+ { title: "Total",field: "dayhours",hozAlign:"right",sorter: false,bottomCalc:staffperiodweeks.setweektotalhours},
+ { title: "Diff",field:"diffhours",hozAlign:"right",formatter:nullFormatter,sorter:false,bottomCalc:staffperiodweeks.setweekdiffhours}
]
});
staffperiodweeks.initform();
loadplan: function(parenttbl){
staffperiodweeks.parenttbl = parenttbl;
var selrp = staffperiodweeks.parenttbl.getSelectedData();
+ console.log(selrp);
if (selrp[0]) {
document.getElementById("periodtitle").innerHTML=" Période " + moment(selrp[0].startdate).lang("fr").format('DD.MM.YYYY') + "-" + moment(selrp[0].enddate).lang("fr").format('DD.MM.YYYY');
+ document.getElementById("stafftitle").innerHTML= selrp[0].staffname + "(" + selrp[0].groupname + ")";
staffperiodweeks.gettbldata();
module.viewpanel('staffperiodweeks');
}
\r
[% PROCESS macro/fields.tt %]\r
-<div class="display-container margin">\r
- <div class="container padding-24 card margin-bottom">\r
+[% quserdata = dksdb.query("select * from users where id='${session.id}';") %]\r
+[% user = quserdata.get_all() %]\r
+\r
+<div class="display-container margin center">\r
+<div class="cell-row ">\r
+ <div class="cell container padding-24 margin-bottom left-align" style="width: 400px;">\r
<form id="frm_account">\r
- <h3>données d'accès</h3>\r
+ <fieldset>\r
+ <legend>données d'accès</legend>\r
+ \r
<div class="row-padding">\r
- <div class="container half">\r
- [% #fieldhidden('users','id','ident') %]\r
- [% fieldeditbox('username','users','E-Mail (Login)','','readonly','') %]\r
<div class="container">\r
- <button class="button blue-grey margin" onclick="opendlgusername();return false;">Changer E-Mail (Login)</button>\r
+ [% #fieldhidden('users','id','ident') %]\r
+ [% fieldeditbox('username','users','E-Mail (Login)','','readonly',user.0.username) %]\r
+ <div class="bar-block">\r
+ <button class="bar-item button blue-grey" onclick="opendlgusername();return false;">Changer E-Mail (Login)</button>\r
+ <div class="bar-item right"> </div>\r
+ <button class="bar-item button blue-grey" onclick="opendlgpassword();return false;">Changer mot de passe</button>\r
+ \r
+ \r
</div> \r
</div>\r
- <div class="container half margin-top padding">\r
+ <div class="container margin-top padding">\r
\r
- <button class="button blue-grey" onclick="opendlgpassword();return false;">Changer mot de passe</button>\r
+ \r
</div>\r
</div>\r
+ </fieldset>\r
</form>\r
</div>\r
- \r
- <div class="container padding-24 card margin-bottom">\r
+ <!-- <div class="container cell padding-24 card margin-bottom">\r
<form id="frm_users">\r
<h3>données personelles</h3>\r
<div class="row-padding"> \r
<div class="container">\r
- [% fieldhidden('id','users','ident') %]\r
- [% fieldeditbox('surname','users','Nom','half','') %]\r
- [% fieldeditbox('prename','users','Prénom','half','') %]\r
- [% fieldeditbox('job','users','Position','half','') %]\r
- [% fieldeditbox('phone','users','Téléphone','half','') %]\r
+ <div></div>\r
+ [% #fieldhidden('id','users','ident') %]\r
+ [% fieldeditbox('surname','users','Nom','','') %]\r
+ [% fieldeditbox('prename','users','Prénom','','') %]\r
+ [% fieldeditbox('job','users','Position','','') %]\r
+ [% fieldeditbox('address','users','Adresse','','') %]\r
+ [% fieldeditbox('country','users','Pays','','') %]\r
+ [% fieldeditbox('zip','users','CP','','') %]\r
+ [% fieldeditbox('city','users','Ville','','') %]\r
+ [% fieldeditbox('phone','users','Téléphone','','') %]\r
</div>\r
<div class="container right-align">\r
<button class="button blue-grey margin" id="btnsave_users" onclick="saveform('users');return false;"><span class="icon-Save"></span> Sauvegarder</button>\r
\r
</div>\r
</form> \r
- </div>\r
+ </div> -->\r
+</div>\r
+ \r
+ \r
+ \r
</div> \r
\r
[% #INCLUDE block/dlgcropper.tt %]\r
<header>
<span onclick="document.getElementById('dlgpassword').style.display='none'; return false;"
class="button toolbarbtn display-topright" ><span class="icon-remove" style="font-size: 18px;"></span></span>
- <h2>changement mot de passe</h2>
+ <h3>changement mot de passe</h3>
</header>
<div class="container">
<div id="msg">
- <div class="panel blue-grey padding">
+ <div class="panel orange padding">
Votre mot de passe doit avoir:
<ul>
<li>au moins 10 charatères</li>
</div>
<footer>
<button class="button theme-light margin-right border" onclick="document.getElementById('dlgpassword').style.display='none'; return false;"><span class="icon-remove"></span> Annuler</button>
- <button class="button theme-l2 margin-right border" onclick="savepassword();return false;">changer mot de passe</button>
+ <button class="button blue-grey margin-right border" onclick="savepassword();return false;">changer mot de passe</button>
</footer>
</div>
</div>
<header>
<span onclick="document.getElementById('dlgusername').style.display='none'; return false;"
class="button toolbarbtn display-topright" ><span class="icon-remove" style="font-size: 18px;"></span></span>
- <h2>Changement de l'email resp. login</h2>
+ <h3>Changement de l'email resp. login</h3>
</header>
<div class="container">
<div id="nunmsg" ></div>
</div>
<div class="cell" >
- <div class="panel" id="pnl_basedata">
+ <div class="panel" id="pnl_nodata">
+ <div class="bar moduletoolbar">
+ <div class="bar-item PageHeadTitle"> </div>
+ </div>
+ <div class="row center" style="margin-top: 200px;">
+ <img src="[% abpspath%][% staticpath %]img/toplogo.png" style="margin: auto;">
+ </div>
+ </div>
+ <div class="panel" id="pnl_basedata" style="display: none;">
<div class="bar moduletoolbar">
<div class="bar-item PageHeadTitle">Données de base</div>
<div id="pnl_staffperiodweeks" class="panel" style="display: none;">
<div class="bar moduletoolbar">
<button class="bar-item toolbarbtn" onclick="staff.setview('periods'); return false;"><span class="icon-back" style="font-size: 16px;"><br/>retour</button>
- <div class="bar-item PageHeadTitle" id="periodtitle">Périodes de Référence DD.MM.YYYY - DD.MM.YYYY</div>
+ <div class="bar-item PageHeadTitle" id="periodtitle"></div>
+ <div class="bar-item PageHeadTitle" id="stafftitle" style="display: none;"></div>
<button class="bar-item toolbarbtn right" onclick="staffperiodweeks.edit(); return false;"><span class="icon-edit" style="font-size: 16px;"><br/>editer</button>
</div>
<div id="tbl_staffperiodweeks" ></div>
// {title:"#", formatter:"rownum",align:"right",sorter:false},
// {title: "No.", field: "staffnumber",sorter: "String", headerFilter: "input" },
{title: "Départment", field: "groupname", visible: false },
- {title: "Nom", field: "surname" },
- {title: "Prénom",field: "prename"},
+ {title: "Nom", field: "surname" ,resizeable: false },
+ {title: "Prénom",field: "prename",resizeable: false},
// {title: "Job", field: "job",sorter: "String", headerFilter: "input" },
]
req.reqdata("POST", "db.cgi", { "get": staff.name + "data","schemata":schemata, "filter":"id='" + udata[0].id + "'"}, staff.fillform);
staffcontract.gettbldata();
staffperiods.gettbldata();
+ staff.setview(staff.current_view);
//module.viewpanel("frm_" + staff.name);
}
},
staffperiods.gettbldata();
}
if (viewname == 'basedata'){
- staff.edit();
+ //staff.edit();
}
module.viewpanel(viewname);
[% PROCESS macro/fields.tt %]
<div class="display-container">
<div class="bar moduletoolbar">
- <button class="bar-item toolbarbtn" onclick="module.viewpanel('tbl_users');"><span class="icon-table" style="font-size: 16px;"></span><br/>Tableau</button>
+ <button class="bar-item toolbarbtn" onclick="users.viewtable();"><span class="icon-table" style="font-size: 16px;"></span><br/>Tableau</button>
<div class="bar-item PageHeadTitle">Utilisateurs</div>
<div class="toolbar" id="tbar_tbl_users">
<button class="bar-item toolbarbtn right" onclick="users.remove();"><span class="icon-remove text-red" style="font-size: 16px;"></span><br/>supprimer</button>
- <button class="bar-item toolbarbtn right" onclick="users.edit();"><span class="icon-edit" style="font-size: 16px;"><br/>éditer</button>
+ <!-- <button class="bar-item toolbarbtn right" onclick="users.edit();"><span class="icon-edit" style="font-size: 16px;"><br/>éditer</button> -->
<button class="bar-item toolbarbtn right" onclick="users.add();"><span class="icon-plus" style="font-size: 16px;"><br/>ajouter</button>
+ <button class="bar-item toolbarbtn right" onclick="users.sendnewpassword(); return false;"><span class="icon-sendemail" style="font-size: 16px;"><br/>envoyer mot de passe</button>
</div>
-<div class="toolbar" id="tbar_frm_staff" style="display: none;">
+ </div>
</div>
+<div class="display-container">
+<div class="cell-row">
+<div class="cell" style="width: 400px;">
+ <div id="tbl_users"></div>
+ </div>
+<div class="cell" >
+ <div class="panel" id="pnl_nodata">
+ <div class="bar moduletoolbar">
+ <div class="bar-item PageHeadTitle"> </div>
+ </div>
+ <div class="row center" style="margin-top: 200px;">
+ <img src="[% abpspath%][% staticpath %]img/toplogo.png" style="margin: auto;">
</div>
- <div class="display-container panel" id="pnl_tbl_users">
- <div id="tbl_users"></div>
+ </div>
+ <div class="panel" id="pnl_users" style="display: none;">
+ <div class="bar moduletoolbar">
+ <div class="bar-item PageHeadTitle">Données de base du utilisateur</div>
+
+ </div>
+ <form id="frm_users">
+ [% ro = 'readonly' %]
+ [% IF session.usergroup == 'admin' %]
+ [% ro = '' %]
+ [% END %]
+ [% fieldhidden('id','users','ident') %]
+ <div class="row" style="margin-top: 5px;">
+ <div class="row">
+ <div class="cell" style="width: 300px;">
+ [% fieldeditbox("username","users","Login / E-Mail",'','','','','record.savefield(this);') %]
+ </div>
+ <div class="cell" style="width: 200px;">
+ [% fieldcheckbox("blocked","users","compte blocké",'',ro,'1') %]
+ </div>
+ </div>
+ <div class="row">
+ <div class="cell" style="width: 250px;">
+ [% fieldeditbox('surname','users','Nom','','','','','record.savefield(this);') %]
+ </div>
+ <div class="cell" style="width: 250px;">
+ [% fieldeditbox('prename','users','Prénom','','','','','record.savefield(this);') %]
+ </div>
+ </div>
+ <div class="row">
+ <div class="cell" style="width: 250px;">
+ [% fieldeditbox('job','users','Position','','','','','record.savefield(this);') %]
+ </div>
+ <div class="cell" style="width: 250px;">
+ [% fieldeditbox('phone','users','Téléphone','','','','','record.savefield(this);') %]
+ </div>
+ </div>
+
+
+
+
+ </div>
+ <div class="row">
+ <div class="bar moduletoolbar">
+ <div class="bar-item PageHeadTitle">Accès du utilisateur</div>
+
+ </div>
+ <div class="cell-row" style="margin-top: 5px;">
+ <div class="cell" style="width: 250px;">
+ [% fieldselectbox('id_company','users','Entreprise','','','','') %]
+ </div>
+ <div class="cell" style="width: 250px;">
+ [% fieldselectbox("id_usergroup","users","Accès Groupe",'','','') %]
+ </div>
+ <div class="cell">
+ [% fieldmultiselectbox("schemaaccess","users","Accès DataSet",'',ro,'') %]
+ </div>
+ </div>
+ </div>
+ </div>
+ </form>
+
</div>
</div>
+</div>
+</div>
+
[% INCLUDE block/dlgdeleterow.tt %]
[% INCLUDE block/dlgmessage.tt %]
</header>
<div class="container">
<div id="usermsg" ></div>
- <form id="frm_users">
- [% ro = 'readonly' %]
- [% IF session.usergroup == 'admin' %]
- [% ro = '' %]
- [% END %]
- [% fieldhidden('id','users','ident') %]
- [% fieldeditbox("username","users","Login / E-Mail",'twothird','','') %]
-
- [% fieldcheckbox("blocked","users","compte blocké",'third',ro,'1') %]
-
- [% fieldeditbox('surname','users','Nom','half','') %]
- [% fieldeditbox('prename','users','Prénom','half','') %]
- [% fieldeditbox('job','users','Position','half','') %]
- [% fieldeditbox('phone','users','Téléphone','half','') %]
-
- [% fieldselectbox('id_company','users','Entreprise','',ro,'','') %]
- [% fieldselectbox("id_usergroup","users","Accès Groupe",'',ro,'') %]
- [% fieldmultiselectbox("schemaaccess","users","Accès Entreprise",'',ro,'') %]
-
- </form>
+
</div>
<footer>
<button class="button orange border" id="btnnewpasswd" onclick="users.sendnewpassword(); return false;">Envoyer mot de passe</button>
var currentview = null;
function initpage(){
users.inittable();
- module.viewpanel("tbl_users");
+ //module.viewpanel("tbl_users");
}
var users ={
tbl: null,
current_user: "[% session.id %]",
- name: "users",
choices:{"schemaaccess":null},
initform: function(){
users.choices["id_company"] = new Choices('#id_company',{
},
inittable: function(){
users.initform();
- users.tbl = new Tabulator("#tbl_" + users.name, {
- headerFilterPlaceholder: "filter...",
- height: "92vh",
- layout: "fitData",
+ users.tbl = new Tabulator("#tbl_" + "users", {
+ height: "calc(100vh - 120px)",
+ layout: "fitDataStretch",
selectable: 1,
+ rowClick:function(e, row){
+ console.log("Filter selected");
+ let fsel = users.tbl.getSelectedData();
+ console.log(fsel);
+ users.edit();
+ //invoices.gettbldata(fsel);
+ //invoices.getsums(fsel);
+ },
rowContext:function(e, row){ e.preventDefault();},
columns:[
- {title:"Entreprise", field:"company",headerFilter:"input"},
- {title:"Nom", field:"surname",headerFilter:"input"},
- {title:"Prénom", field:"prename",headerFilter:"input"},
- {title:"Accès",field:"groupname",headerFilter:"input"},
- {title:"Position",field:"job"},
- {title:"Téléphone",field:"phone"},
- {title:"E-mail",field:"username"},
- {title:"Bloqué", field:"blocked",formatter:"tickCross",align:"center",
- formatterParams:{allowEmpty:true,allowTruthy:true,tickElement:'<span style="color: green;">✔</span>'}},
+ // {title:"Entreprise", field:"company",headerFilter:"input"},
+ {title:"Nom", field:"surname",resizable: false},
+ {title:"Prénom", field:"prename",resizeable: false},
+ // {title:"Accès",field:"groupname",headerFilter:"input"},
+ // {title:"Position",field:"job"},
+ // {title:"Téléphone",field:"phone"},
+ // {title:"E-mail",field:"username"},
+ // {title:"Bloqué", field:"blocked",formatter:"tickCross",align:"center",
+ // formatterParams:{allowEmpty:true,allowTruthy:true,tickElement:'<span style="color: green;">✔</span>'}},
],
});
users.gettbldata();
},
gettbldata: function(){
- console.log("[% session.usergroup %]");
- [% IF session.usergroup == 'admin' %]
- req.reqdata("POST", "db.cgi", { "get": users.name + "list","schemata":schemata}, users.loadtbldata);
- [% ELSE %]
- req.reqdata("POST", "db.cgi", { "get": users.name + "list","schemata":schemata,"filter":"id_company=(select id from "+ schemata+".users where id='[% session.id %]')"}, users.loadtbldata);
- [% END %]
+ //console.log("[% session.usergroup %]");
+ // [% IF session.usergroup == 'admin' %]
+ // req.reqdata("POST", "db.cgi", { "get": "users" + "list","schemata":schemata}, users.loadtbldata);
+ // [% ELSE %]
+ var ds = document.getElementById('schemata').value;
+ req.reqdata("POST", "db.cgi", { "get": "userslist","schemata":schemata,"filter":"schemaaccess='" + ds + "'"}, users.loadtbldata);
+ // [% END %]
},
loadtbldata: function(data){
if (data && data.sqldata) { users.tbl.setData(data.sqldata);}
},
add: function(){
cleanform2("users",users.choices);
- module.viewdialog(users.name);
+ module.viewdialog("users");
},
edit: function(){
var udata = users.tbl.getSelectedData();
if (udata[0]) {
- cleanform2(users.name,users.choices);
- req.reqdata("POST", "db.cgi", { "get": users.name + "data","schemata":schemata, "filter":"id='" + udata[0].id + "'"}, users.fillform);
- module.viewdialog(users.name);
+ cleanform2("users",users.choices);
+ req.reqdata("POST", "db.cgi", { "get": "users" + "data","schemata":schemata, "filter":"id='" + udata[0].id + "'"}, users.fillform);
+ //module.viewdialog("users");
}
},
fillform: function(data){
if (data && data.sqldata){
- fillformbydataclass2(users.name,users.choices,data.sqldata[0]);
+ fillformbydataclass2("users",users.choices,data.sqldata[0]);
}
},
remove: function(){
users.gettbldata();
document.getElementById('dlg_users').style.display='none';
formsaved(null);
+ },
+ viewtable: function(){
+ users.gettbldata();
}
}
+++ /dev/null
-../../pot_lu/webapp
\ No newline at end of file