"newline":"LF",
"drop-empty-elements": false,
"hide-comments": false,
-}
-
+},
+"minify.minifyExistingOnSave": true,
+ "minify.js": {
+
+ "mangle": true,
+ "compress": {
+ "sequences": true,
+ "properties": false,
+ "dead_code": true,
+ "drop_debugger": true,
+ "unsafe": false,
+ "unsafe_comps": false,
+ "conditionals": true,
+ "comparisons": true,
+ "evaluate": true,
+ "booleans": true,
+ "loops": true,
+ "unused": true,
+ "hoist_funs": true,
+ "keep_fargs": true,
+ "keep_fnames": true,
+ "hoist_vars": false,
+ "if_return": true,
+ "join_vars": true,
+ "collapse_vars": false,
+ "reduce_vars": false,
+ "side_effects": true,
+ "pure_getters": false,
+ "pure_funcs": null,
+ "negate_iife": false,
+ "drop_console": true,
+ "passes": 1,
+ "global_defs": {}
+ },
+ "output": {
+ "ascii_only": false,
+ "inline_script": false,
+ "max_line_len": 32000,
+ "braces": false,
+ "semicolons": false,
+ "comments": "some",
+ "shebang": true,
+ "preamble": null,
+ "quote_style": "best"
+ }
+ }
}
elsif ($p->{fn} eq "invalidate_period"){
$html->{result} = $pd->invalidatePeriod($schema,$db->securetext($p->{id_period}),$db->securetext($p->{id_staff}));
}
- } elsif ($p->{fn} =~ /add_workplan$|del_workplan$|duplicate_workplan$|workplan_replaceday$/) {
+ } elsif ($p->{fn} =~ /add_workplan$|del_workplan$|duplicate_workplan$|workplan_replaceday$|workplan_saveday$/) {
my $wp = POT::Workplan->new({db => $db});
# print STDERR $p->{fn}.": Workplan\n";
if ($p->{fn} eq "add_workplan"){
$html->{result} = $wp->duplicateWorkplan($schema,$db->securetext($p->{id}));
} elsif ($p->{fn} eq "workplan_replaceday"){
$html->{result} = $wp->replaceWorkplanDay($schema,$db->securetext($p->{copyid}),$db->securetext($p->{pasteid}));
+ } elsif ($p->{fn} eq "workplan_saveday"){
+ #print STDERR Dumper($p->{workplanday});
+ $html->{result} = $wp->saveWorkplanDay($schema,$p->{workplanday},$db->securetext($p->{id}));
}
} elsif ($p->{fn} =~ /del_worktimes$/) {
# print STDERR $p->{fn}.": Worktime\n";
--- /dev/null
+package POT::TimeTrackSync;
+
+use strict;
+
+sub new {
+ my $class = shift;
+ my $p = shift;
+ my $self = bless {}, $class;
+ $self->{db} = $p->{db};
+ return $self;
+}
+
+sub GetPOTData() {
+ my $self = shift;
+ my $schema = shift;
+ my $id_staff = shift;
+ my $wh = "";
+ if (ref($id_staff) eq "ARRAY"){
+ $wh = "id_staff in ('".join("','",@{$id_staff})."')";
+ } elsif ($id_staff ne "") {
+ $wh = "id_staff = '".$id_staff."'";
+ }
+
+ my $ret = ();
+ #my $sqlbase = "select id,prename,surname,istimetrackenabled,isdeleted from ".$schema.".staff where id='".$id_staff."';";
+ my $sqldata = "select id,id_staff,daydate,
+to_char(timestart1,'HH24:MI') as timestart1,
+to_char(timeend1,'HH24:MI') as timeend1,
+to_char(timestart2,'HH24:MI') as timestart2,
+to_char(timeend2,'HH24:MI') as timeend2
+from ".$schema.".staffreportperioddays where daydate >= CURRENT_DATE and id_staff in (select id from ".$schema.".staff where isdeleted is null) and (timestart1 is not null or timestart2 is not null) ".((length($wh) > 0)?" AND ".$wh:"").";";
+ $ret->{data} = $self->{db}->querysorted($sqldata);
+ return $ret;
+}
+
+sub GetUsers(){
+ my $self = shift;
+ my $schema = shift;
+ my $sql = "select id,prename,surname,istimetrackenabled,isdeleted from ".$schema.".staff;";
+ return $self->{db}->querysorted($sql);
+}
+
+1;
sub getWorkplans(){
my $self = shift;
my $schema = shift;
- my $sql = "SELECT wp.id,wp.workplan,wp.isdefault,
- (((((wp.workplan || ' / ') || \"substring\"(wp.weekhours::text, 1, 5)) || 'h / ') || wp.weekdays) || 'j / libre: ') || (( SELECT string_agg(ww.wday, ',') AS string_agg
- FROM ( SELECT day_name(json_array_elements_text(wp.freeweekdayslist)) AS wday) ww)) AS dspworkplandetail
+ my $sql = "SELECT wp.id,wp.workplan,wp.isdefault,wp.weekhours,wp.weekdays,
+ coalesce((((((wp.workplan || ' / ') ||substr(wp.weekhours::text, 1, 5)) || 'h / ') || wp.weekdays) || 'j / libre: ') || (( SELECT string_agg(ww.wday, ',') AS string_agg FROM ( SELECT public.day_name(json_array_elements_text(wp.freeweekdayslist)) AS wday) ww)),wp.workplan ) AS dspworkplandetail
FROM ".$schema.".workplans wp
ORDER BY wp.isdefault, wp.workplan;";
return $self->{db}->querysorted($sql);
my $id = shift;
return $self->{db}->query("SELECT * FROM ".$schema.".workplandays where id='".$id."';");
}
+
+sub saveWorkplanDay(){
+ my $self = shift;
+ my $schema = shift;
+ my $data = shift;
+ my $id = shift;
+ if ($data->{start1} eq "" || $data->{end1} eq ""){
+ $data->{start1} = "";
+ $data->{end1} = "";
+ }
+ if ($data->{start2} eq "" || $data->{end2} eq ""){
+ $data->{start2} = "";
+ $data->{end2} = "";
+ }
+ if ($data->{pausestart1} eq "" || $data->{pauseend1} eq "" || $data->{start1} eq ""){
+ $data->{pausestart1} = "";
+ $data->{pauseend1} = "";
+ }
+ if ($data->{pausestart2} eq "" || $data->{pauseend2} eq "" || $data->{start2} eq ""){
+ $data->{pausestart2} = "";
+ $data->{pauseend2} = "";
+ }
+ if ($data->{pausestart1} eq "" && $data->{pausestart2} eq ""){
+ $data->{pause} = "";
+ }
+ my $sql = "UPDATE ".$schema.".workplandays SET start1=".$self->{db}->value($data->{start1}).", end1=".$self->{db}->value($data->{end1}).", start2=".$self->{db}->value($data->{start2}).", end2=".$self->{db}->value($data->{end2}).", pause=".$self->{db}->value($data->{pause}).", pausestart1=".$self->{db}->value($data->{pausestart1}).", pauseend1=".$self->{db}->value($data->{pauseend1}).", pausestart2=".$self->{db}->value($data->{pausestart2}).", pauseend2=".$self->{db}->value($data->{pauseend2})." WHERE id='".$id."';";
+ $self->{db}->exec($sql);
+ my $wid = $self->{db}->query("select id_workplan from ".$schema.".workplandays WHERE id='".$id."'");
+ $self->updateWorplanData($schema,$wid->{id_workplan});
+ return 1;
+}
+
+sub updateWorplanData(){
+ my $self = shift;
+ my $schema = shift;
+ my $workplan_id = shift;
+ my $ispayedpause = $self->{db}->query("select payedpauses from public.companies where schemata='".$schema."'");
+ my $payedpauses = "";
+ if ($ispayedpause->{payedpauses} ne "1"){
+ $payedpauses = " - coalesce(pause, '00:00:00'::time without time zone)";
+ }
+ my $sql = "select '[\"' || string_agg(case when start1 is null and start2 is null then weekday::text else null end,'\",\"') || '\"]' as freedays, sum (case when start1 is not null or start2 is not null then 1 else 0 end) as weekdays, sum( coalesce(case when start1 > end1 then '24:00:00'::time without time zone - (start1 - end1)::time without time zone else end1 - start1 end, '00:00:00'::interval) + coalesce(case when start2 > end2 and start1 is not null then '24:00:00'::time without time zone - (start2 - end2)::time without time zone else end2 - start2 end, '00:00:00'::interval) ".$payedpauses.") as weekhours from ".$schema.".workplandays where id_workplan='".$workplan_id."' group by id_workplan;";
+ my $wddata = $self->{db}->query($sql);
+ my $updsql = "UPDATE ".$schema.".workplans SET weekhours='".$wddata->{weekhours}."', weekdays=".$wddata->{weekdays}.", freeweekdayslist='".$wddata->{freedays}."' WHERE id='".$workplan_id."'";
+ $self->{db}->exec($updsql);
+ return 1;
+}
+
1;
\ No newline at end of file
my $class = shift;
my $p = shift;
my $self = bless {}, $class;
- $self->{debug} = 0;
+ $self->{debug} = 1;
$self->{dbh} = DBI->connect($p->{dsn},$p->{dbuser},$p->{dbpassword},{PrintError=>1,RaiseError=>1,AutoCommit=>1}) or return "query Connection Error!".$!;
return $self;
}
--- /dev/null
+#!/usr/local/bin/perl
+use strict;
+use lib ('./lib/perl5');
+use lib ('./lib');
+use CGI;
+use CGI::Cookie;
+# use CGI::Carp qw/fatalsToBrowser/;
+use File::Basename;
+use JSON::PP;
+use Data::Dumper;
+use POT::TimeTrackSync;
+use dksconfig qw/$sitecfg/;
+use dksdb;
+
+use session;
+
+my $cgi = new CGI();
+my $scriptpath = $cgi->url(-absolute => 1);
+my $p = ();
+
+my $html->{result} = ();
+my $db = dksdb->new({dsn => $sitecfg->{dsn},dbuser => $sitecfg->{dbuser},dbpassword => $sitecfg->{dbpassword}});
+$p->{sid} = $cgi->cookie($sitecfg->{cookiename});
+
+my $se = session->new({db => $db});
+my $sess = $se->getsession($p->{sid});
+print $cgi->header(-type=>"application/json", -charset => "utf-8");
+if ($sess == undef){
+ $html->{error} = "No Authorisation";
+ print JSON::PP::encode_json($html);
+ exit(0);
+}
+if (($cgi->request_method() eq "GET") || ($cgi->request_method() eq "POST")){
+
+ my @params = $cgi->param();
+
+ foreach my $pp (@params){
+ $p->{$pp} = $cgi->param($pp);
+ }
+ if (exists($p->{"POSTDATA"})){
+ my $pdj = ();
+ if ($p->{"POSTDATA"} =~ /^\{.*\}$/ ){
+ $pdj = JSON::PP::decode_json($p->{"POSTDATA"});
+ }
+
+ foreach my $k (keys(%{$pdj})){
+ $p->{$k} = $pdj->{$k};
+ }
+ }
+ #$html->{params} = $p;
+ if (exists($p->{get})){
+ my @retdata = ();
+ my $hres;
+ my $schema = "public";
+ if (exists($p->{schemata})){
+ $schema = $db->securetext($p->{schemata});
+ }
+ if ($p->{get} =~ /getusers$|getpotdata$/){
+ my $tts = POT::TimeTrackSync->new({db => $db});
+ if ($p->{get} eq 'getusers'){
+ $hres = $tts->GetUsers($schema);
+ }
+ if ($p->{get} eq 'getpotdata'){
+ $hres = $tts->GetPotData($schema,$p->{id_staff});
+ }
+ $html->{result}->{$p->{get}} = $hres;
+ }
+ if ($p->{set} =~ //)
+ }
+}
+$db->disconnect();
+print JSON::PP::encode_json($html);
<form id="frm_replaceworkplan">
<div class="container padding">
<div class="row">
- <div class="cell" style="width: 100%">
+ <div class="cell" style="width: 600px;">
- <div class="container ">
+ <div class="container" style="width: 600px;">
- <select class="select data_replace " id="id_workplan" data-column="id_workplan" data-table="replace" data-id="" value="" name="replace_id_workplan" >
+ <select class="select data_replace" id="id_workplan" data-column="id_workplan" data-table="replace" data-id="" value="" name="replace_id_workplan" >
</select>
<label for="replace_id_workplan" class="label ">POT (Modèle)</label>
</div>
-[% appversion = '0.9.9.8' %]
+[% appversion = '0.9.10.0' %]
[% minify = '' %]
<!DOCTYPE html>
<html lang="fr">
-schemata="public",currentview=null;let periodunits=[{value:"week",text:"Semaine(s)"},{value:"month",text:"Mois"}],periodtypes=[{value:"1-14",text:"1-14"},{value:"15-49",text:"15-49"},{value:">=50",text:">=50"}];function initpage(){companies.inittable(),staffgroups.inittable(),worktimes.inittable(),users.inittable(),schemadataset.initform()}let companies={tbl:null,current_company:null,current_schemata:null,current_view:"basedata",name:"companies",choices:{reportperiodunit:null,payedpauses:null,periodtypes:null},initform:function(){flatpickr("#reportperiodstart",{altInput:!0,altFormat:"d.m.Y",dateFormat:"Y-m-d",locale:"fr",onClose:function(selectedDates,dateStr,instance){dataform.saveschemafield(document.getElementById("reportperiodstart"),"public")}}),companies.choices.reportperiodunit=new SlimSelect({select:"#reportperiodunit",showSearch:!1,afterClose:function(){dataform.saveschemafield(document.getElementById("reportperiodunit"),"public")}}),companies.choices.payedpauses=new SlimSelect({select:"#payedpauses",showSearch:!1,afterClose:function(){dataform.saveschemafield(document.getElementById("payedpauses"),"public")}}),companies.choices.periodtypes=new SlimSelect({select:"#periodtypes",showSearch:!1,afterClose:function(){dataform.saveschemafield(document.getElementById("periodtypes"),"public")}}),dataform.fillselectlist(companies.choices.reportperiodunit,periodunits,"value","text"),companies.getCompanySizes()},inittable:function(){companies.initform(),companies.tbl=new Tabulator("#tbl_companies",{height:"calc(100vh - 55px)",layout:"fitDataFill",selectable:1,rowClick:function(e,row){companies.edit()},rowContext:function(e,row){e.preventDefault()},columns:[{title:"entreprise",field:"company",resizable:!1},{title:"dataset",field:"datasetname",resizable:!1}]}),companies.gettbldata()},gettbldata:function(id){companies.current_company=id||null,postData("db.cgi",{get:"companiesdata",schemata:"public"}).then(data=>{companies.tbl.setData(data.result.sqldata).then((function(){companies.current_company&&companies.tbl.table.selectRow(companies.current_company)}))})},edit:function(){let udata=companies.tbl.getSelectedData();udata[0]?(companies.current_schemata=udata[0].schemata,dataform.cleanform2("companies",companies.choices),postData("db.cgi",{get:"company",schemata:udata[0].schemata}).then(data=>{dataform.fillformbydataclass2("companies",companies.choices,data.result.data)}),staffgroups.gettbldata(),worktimes.gettbldata(),users.gettbldata(),companies.setview(companies.current_view)):app.viewpanel("nodata")},save:function(){dataform.saveform("companies",schemata,null),app.viewpanel("tbl_companies")},afterdeletecallback:function(data){companies.gettbldata(),app.viewpanel("tbl_companies")},setview:function(viewname){let sel;companies.tbl.getSelectedData()[0]&&(companies.current_view=viewname,app.viewpanel(viewname))},getCompanySizes:function(){postData("db.cgi",{get:"companysize",schemata:"public"}).then(data=>{dataform.fillselectlist(companies.choices.periodtypes,data.result.sqldata,"periodtype","periodtype")})}};
\ No newline at end of file
+function initpage(){companies.inittable(),staffgroups.inittable(),worktimes.inittable(),users.inittable(),schemadataset.initform()}schemata="public",currentview=null
+let periodunits=[{value:"week",text:"Semaine(s)"},{value:"month",text:"Mois"}],periodtypes=[{value:"1-14",text:"1-14"},{value:"15-49",text:"15-49"},{value:">=50",text:">=50"}],companies={tbl:null,current_company:null,current_schemata:null,current_view:"basedata",name:"companies",choices:{reportperiodunit:null,payedpauses:null,periodtypes:null},initform:function(){flatpickr("#reportperiodstart",{altInput:!0,altFormat:"d.m.Y",dateFormat:"Y-m-d",locale:"fr",onClose:function(e,t,a){dataform.saveschemafield(document.getElementById("reportperiodstart"),"public")}}),companies.choices["reportperiodunit"]=new SlimSelect({select:"#reportperiodunit",showSearch:!1,afterClose:function(){dataform.saveschemafield(document.getElementById("reportperiodunit"),"public")}}),companies.choices["payedpauses"]=new SlimSelect({select:"#payedpauses",showSearch:!1,afterClose:function(){dataform.saveschemafield(document.getElementById("payedpauses"),"public")}}),companies.choices["periodtypes"]=new SlimSelect({select:"#periodtypes",showSearch:!1,afterClose:function(){dataform.saveschemafield(document.getElementById("periodtypes"),"public")}}),dataform.fillselectlist(companies.choices["reportperiodunit"],periodunits,"value","text"),companies.getCompanySizes()},inittable:function(){companies.initform(),companies.tbl=new Tabulator("#tbl_companies",{height:"calc(100vh - 55px)",layout:"fitDataFill",selectable:1,rowClick:function(e,t){companies.edit()},rowContext:function(e,t){e.preventDefault()},columns:[{title:"entreprise",field:"company",resizable:!1},{title:"dataset",field:"datasetname",resizable:!1}]}),companies.gettbldata()},gettbldata:function(e){companies.current_company=e||null,postData("db.cgi",{get:"companiesdata",schemata:"public"}).then(e=>{companies.tbl.setData(e.result.sqldata).then(function(){companies.current_company&&companies.tbl.table.selectRow(companies.current_company)})})},edit:function(){let e=companies.tbl.getSelectedData()
+e[0]?(companies.current_schemata=e[0].schemata,dataform.cleanform2("companies",companies.choices),postData("db.cgi",{get:"company",schemata:e[0].schemata}).then(e=>{dataform.fillformbydataclass2("companies",companies.choices,e.result.data)}),staffgroups.gettbldata(),worktimes.gettbldata(),users.gettbldata(),companies.setview(companies.current_view)):app.viewpanel("nodata")},save:function(){dataform.saveform("companies",schemata,null),app.viewpanel("tbl_companies")},afterdeletecallback:function(e){companies.gettbldata(),app.viewpanel("tbl_companies")},setview:function(e){let t=companies.tbl.getSelectedData()
+t[0]&&(companies.current_view=e,app.viewpanel(e))},getCompanySizes:function(){postData("db.cgi",{get:"companysize",schemata:"public"}).then(e=>{dataform.fillselectlist(companies.choices["periodtypes"],e.result.sqldata,"periodtype","periodtype")})}}
add: function(){
dataform.cleanform2("dataset",{});
app.viewdialog("dataset");
- },
+ },
remove: function(){
let udata = companies.tbl.getSelectedData();
if (udata[0]) {
-let schemadataset={choices:{newsector:null,periodtype:null},initform:function(){schemadataset.choices.newsector=new SlimSelect({select:"#newsector",showSearch:!1}),schemadataset.choices.periodtype=new SlimSelect({select:"#periodtype",showSearch:!1}),schemadataset.getsectors(),schemadataset.getperiodtypes()},add:function(){dataform.cleanform2("dataset",{}),app.viewdialog("dataset")},remove:function(){let udata=companies.tbl.getSelectedData();udata[0]&&(flds={},flds.fn="del_company",flds.id=udata[0].id,flds.schemata="public",showinfodlg("Supprimer","Êtes vous sûre de supprimer l'entreprise sélectionnée?",schemadataset.removedata,flds,'<span class="icon-Save"></span>Supprimer','<span class="icon-remove"></span>Annuler'))},removedata:function(data){postData("db.cgi",data).then(remdata=>{companies.gettbldata()})},checkschema(){let datasetname=document.getElementById("newdataset").value;postData("db.cgi",{fn:"getfreeschema",datasetname:datasetname}).then(data=>{document.getElementById("newschemata").value=data.result.newschema})},save:function(){document.getElementById("dlg_dataset").style.display="none",showdataloaddlg("",'<div class="xxlarge">Attendez s.v.p.!</div>'),postData("db.cgi",{fn:"installschema",schemaname:document.getElementById("newschemata").value,datasetname:document.getElementById("newdataset").value,sector:schemadataset.choices.newsector.selected(),periodtype:schemadataset.choices.periodtype.selected()}).then(data=>{companies.gettbldata(),closedataloaddlg()}).catch(e=>{companies.gettbldata(),closedataloaddlg()})},getsectors:function(){postData("db.cgi",{get:"sectors",schemata:"public"}).then(data=>{dataform.fillselectlist(schemadataset.choices.newsector,data.result.sqldata,"sector","sector")})},getperiodtypes:function(){postData("db.cgi",{get:"companysize",schemata:"public"}).then(data=>{dataform.fillselectlist(schemadataset.choices.periodtype,data.result.sqldata,"periodtype","periodtype")})}};
\ No newline at end of file
+let schemadataset={choices:{newsector:null,periodtype:null},initform:function(){schemadataset.choices["newsector"]=new SlimSelect({select:"#newsector",showSearch:!1}),schemadataset.choices["periodtype"]=new SlimSelect({select:"#periodtype",showSearch:!1}),schemadataset.getsectors(),schemadataset.getperiodtypes()},add:function(){dataform.cleanform2("dataset",{}),app.viewdialog("dataset")},remove:function(){let e=companies.tbl.getSelectedData()
+e[0]&&(flds={},flds["fn"]="del_company",flds["id"]=e[0].id,flds["schemata"]="public",showinfodlg("Supprimer","Êtes vous sûre de supprimer l'entreprise sélectionnée?",schemadataset.removedata,flds,'<span class="icon-Save"></span>Supprimer','<span class="icon-remove"></span>Annuler'))},removedata:function(e){postData("db.cgi",e).then(e=>{companies.gettbldata()})},checkschema(){let e=document.getElementById("newdataset").value
+postData("db.cgi",{fn:"getfreeschema",datasetname:e}).then(e=>{document.getElementById("newschemata").value=e.result.newschema})},save:function(){document.getElementById("dlg_dataset").style.display="none",showdataloaddlg("",'<div class="xxlarge">Attendez s.v.p.!</div>'),postData("db.cgi",{fn:"installschema",schemaname:document.getElementById("newschemata").value,datasetname:document.getElementById("newdataset").value,sector:schemadataset.choices["newsector"].selected(),periodtype:schemadataset.choices["periodtype"].selected()}).then(e=>{companies.gettbldata(),closedataloaddlg()}).catch(e=>{companies.gettbldata(),closedataloaddlg()})},getsectors:function(){postData("db.cgi",{get:"sectors",schemata:"public"}).then(e=>{dataform.fillselectlist(schemadataset.choices["newsector"],e.result.sqldata,"sector","sector")})},getperiodtypes:function(){postData("db.cgi",{get:"companysize",schemata:"public"}).then(e=>{dataform.fillselectlist(schemadataset.choices["periodtype"],e.result.sqldata,"periodtype","periodtype")})}}
// } else {
// app.viewpanel('nodata');
// }
- },
+ },
save: function(){
// dataform.saveform("companies",schemata,null);
// app.viewpanel("tbl_companies");
-function initpage(){sector.inittable()}schemata="public",currentview=null;let sector={tbl:null,initform:function(){},inittable:function(){sector.initform(),sector.tbl=new Tabulator("#tbl_sectors",{headerFilterPlaceholder:"filter...",height:"calc(100vh - 111px)",layout:"fitDataFill",selectable:1,rowContext:function(e,row){e.preventDefault()},columns:[{title:"secteur",field:"sector",headerFilter:"input",headerSort:!0},{title:"nbr. salariés",field:"periodtype",headerFilter:"input",headerSort:!0},{title:"début",field:"startdate",headerSort:!0,formatter:"datetime",formatterParams:{inputFormat:"YYYY-MM-DD",outputFormat:"DD.MM.YYYY",invalidPlaceholder:""}},{title:"fin",field:"enddate",headerSort:!0,formatter:"datetime",formatterParams:{inputFormat:"YYYY-MM-DD",outputFormat:"DD.MM.YYYY",invalidPlaceholder:""}},{title:"max heures/jour",field:"maxdayhours",headerSort:!1,formatter:timeFormatter},{title:"H/Sem.",field:"defaultweekhours",headerSort:!1,formatter:timeFormatter},{title:"max heures/semaine",field:"maxweekhours",headerSort:!1,formatter:timeFormatter},{title:"max coupure",field:"maxinterruptionhours",headerSort:!1,formatter:timeFormatter},{title:"min h. libres<br/>quotidienne",field:"mindailyrecuperation",headerSort:!1,formatter:timeFormatter},{title:"standard",field:"isdefault",headerSort:!1,formatter:"tickCross",hozAlign:"center",formatterParams:{allowEmpty:!0,allowTruthy:!0,tickElement:"<span>✔</span>"}}]}),sector.gettbldata()},gettbldata:function(id){postData("db.cgi",{get:"sectordata",schemata:"public"}).then(data=>{sector.tbl.setData(data.result.sqldata)})},add:function(){},confirmremove:function(){},remove:function(){},edit:function(){},save:function(){},setview:function(viewname){}},timeFormatter=function(cell,formatterParams){return cell.getValue().length>5?cell.getValue().substring(0,5):cell.getValue()};
\ No newline at end of file
+function initpage(){sector.inittable()}schemata="public",currentview=null
+let sector={tbl:null,initform:function(){},inittable:function(){sector.initform(),sector.tbl=new Tabulator("#tbl_sectors",{headerFilterPlaceholder:"filter...",height:"calc(100vh - 111px)",layout:"fitDataFill",selectable:1,rowContext:function(t,e){t.preventDefault()},columns:[{title:"secteur",field:"sector",headerFilter:"input",headerSort:!0},{title:"nbr. salariés",field:"periodtype",headerFilter:"input",headerSort:!0},{title:"début",field:"startdate",headerSort:!0,formatter:"datetime",formatterParams:{inputFormat:"YYYY-MM-DD",outputFormat:"DD.MM.YYYY",invalidPlaceholder:""}},{title:"fin",field:"enddate",headerSort:!0,formatter:"datetime",formatterParams:{inputFormat:"YYYY-MM-DD",outputFormat:"DD.MM.YYYY",invalidPlaceholder:""}},{title:"max heures/jour",field:"maxdayhours",headerSort:!1,formatter:timeFormatter},{title:"H/Sem.",field:"defaultweekhours",headerSort:!1,formatter:timeFormatter},{title:"max heures/semaine",field:"maxweekhours",headerSort:!1,formatter:timeFormatter},{title:"max coupure",field:"maxinterruptionhours",headerSort:!1,formatter:timeFormatter},{title:"min h. libres<br/>quotidienne",field:"mindailyrecuperation",headerSort:!1,formatter:timeFormatter},{title:"standard",field:"isdefault",headerSort:!1,formatter:"tickCross",hozAlign:"center",formatterParams:{allowEmpty:!0,allowTruthy:!0,tickElement:"<span>✔</span>"}}]}),sector.gettbldata()},gettbldata:function(t){postData("db.cgi",{get:"sectordata",schemata:"public"}).then(t=>{sector.tbl.setData(t.result.sqldata)})},add:function(){},confirmremove:function(){},remove:function(){},edit:function(){},save:function(){},setview:function(t){}},timeFormatter=function(t,e){return t.getValue().length>5?t.getValue().substring(0,5):t.getValue()}
//console.log(data);
dataform.fillformbydataclass2("staffgroups",{},data.result.data);
app.viewdialog("staffgroups");
- });
+ });
}
},
-let staffgroups={tbl:null,choices:{},initform:function(){},inittable:function(){staffgroups.tbl=new Tabulator("#tbl_staffgroups",{height:"254px",layout:"fitDataStretch",selectable:1,rowContext:function(e,row){e.preventDefault()},columns:[{title:"Département",field:"groupname"},{title:"salarié(s)",field:"staffmembers"}]})},gettbldata:function(){sel=companies.tbl.getSelectedData(),sel[0]&&postData("db.cgi",{get:"staffgroups",schemata:sel[0].schemata}).then(data=>{staffgroups.tbl.setData(data.result.sqldata)})},add:function(){dataform.cleanform2("staffgroups",staffgroups.choices),app.viewdialog("staffgroups")},edit:function(){let udata=staffgroups.tbl.getSelectedData();udata[0]&&(dataform.cleanform2("staffgroups",staffgroups.choices),postData("db.cgi",{get:"staffgroup",schemata:companies.current_schemata,id:udata[0].id}).then(data=>{data.result.data.id_staffgroups=data.result.data.id,dataform.fillformbydataclass2("staffgroups",{},data.result.data),app.viewdialog("staffgroups")}))},remove:function(){let udata=staffgroups.tbl.getSelectedData();var data;if(staffgroups.tbl.getData().length<=1)return!1;if(udata[0]){if(parseInt(udata[0].staffmembers)>0)return!1;flds={},flds.fn="del_staffgroup",flds.id=udata[0].id,flds.schemata=companies.current_schemata,showinfodlg("Supprimer","Êtes vous sûre de supprimer le département sélectionné?",staffgroups.removedata,flds,'<span class="icon-Save"></span>Supprimer','<span class="icon-remove"></span>Annuler')}},removedata:function(data){postData("db.cgi",data).then(remdata=>{staffgroups.gettbldata()})},save:function(){let wkdata={fn:"set_staffgroup",schemata:companies.current_schemata,id_staffgroup:document.getElementById("id_staffgroups").value,groupname:document.getElementById("groupname").value};return postData("db.cgi",wkdata).then(data=>{staffgroups.gettbldata(),document.getElementById("dlg_staffgroups").style.display="none",dataform.formsaved({})}),!1},afterdeletecallback:function(data){staffgroups.gettbldata()}};
\ No newline at end of file
+let staffgroups={tbl:null,choices:{},initform:function(){},inittable:function(){staffgroups.tbl=new Tabulator("#tbl_staffgroups",{height:"254px",layout:"fitDataStretch",selectable:1,rowContext:function(t,a){t.preventDefault()},columns:[{title:"Département",field:"groupname"},{title:"salarié(s)",field:"staffmembers"}]})},gettbldata:function(){sel=companies.tbl.getSelectedData(),sel[0]&&postData("db.cgi",{get:"staffgroups",schemata:sel[0].schemata}).then(t=>{staffgroups.tbl.setData(t.result.sqldata)})},add:function(){dataform.cleanform2("staffgroups",staffgroups.choices),app.viewdialog("staffgroups")},edit:function(){let t=staffgroups.tbl.getSelectedData()
+t[0]&&(dataform.cleanform2("staffgroups",staffgroups.choices),postData("db.cgi",{get:"staffgroup",schemata:companies.current_schemata,id:t[0].id}).then(t=>{t.result.data["id_staffgroups"]=t.result.data["id"],dataform.fillformbydataclass2("staffgroups",{},t.result.data),app.viewdialog("staffgroups")}))},remove:function(){let t=staffgroups.tbl.getSelectedData()
+var a=staffgroups.tbl.getData()
+if(a.length<=1)return!1
+if(t[0]){if(parseInt(t[0].staffmembers)>0)return!1
+flds={},flds["fn"]="del_staffgroup",flds["id"]=t[0].id,flds["schemata"]=companies.current_schemata,showinfodlg("Supprimer","Êtes vous sûre de supprimer le département sélectionné?",staffgroups.removedata,flds,'<span class="icon-Save"></span>Supprimer','<span class="icon-remove"></span>Annuler')}},removedata:function(t){postData("db.cgi",t).then(t=>{staffgroups.gettbldata()})},save:function(){let t={fn:"set_staffgroup",schemata:companies.current_schemata,id_staffgroup:document.getElementById("id_staffgroups").value,groupname:document.getElementById("groupname").value}
+return postData("db.cgi",t).then(t=>{staffgroups.gettbldata(),document.getElementById("dlg_staffgroups").style.display="none",dataform.formsaved({})}),!1},afterdeletecallback:function(t){staffgroups.gettbldata()}}
let users ={
tbl: null,
current_user: "[% session.id %]",
- edit: null,
+ edit: null,
choices:{"schemaaccess":null,"user_id_staffgroups":null,"id_company":null,"id_usergroup":null},
initform: function(){
users.choices["id_company"] = new SlimSelect({
users.choices["id_usergroup"] = new SlimSelect({
select: "#id_usergroup",
showSearch: false
- });
+ });
users.choices["schemaaccess"] = new SlimSelect({
select: "#schemaaccess",
users.getusergroups();
users.getschemata();
users.getUserStaffGroups();
- },
+ },
inittable: function(){
users.initform();
users.tbl = new Tabulator("#tbl_users", {
users.getUserStaffGroups();
dataform.cleanform2("users",users.choices);
postData("db.cgi",{ "get": "user","id": udata[0].id}).then(data => {
- console.log("users",data.result.data);
+ //console.log("users",data.result.data);
dataform.fillformbydataclass2("users",users.choices,data.result.data);
app.viewdialog("users");
});
return false;
}
users.checkemail();
- return false;
+ return false;
},
confirmchangepassword: function(){
- /*![% IF session.usergroup == 'admin' %]*/
+ /* @preserve [% IF session.usergroup == 'admin' %]*/
let sel =users.tbl.getSelectedData();
if (sel[0]){
showinfodlg("Nouveau Mot de Passe","Êtes vous sûre changer le mot de passe?",users.setnewpassword,{},"<span class=\"icon-Save\"></span>Oui","<span class=\"icon-remove\"></span>Non");
}
- /*![% END %]*/
- },
+ /* @preserve [% END %]*/
+ },
setnewpassword: function(){
- /*![% IF session.usergroup == 'admin' %]*/
+ /* @preserve [% IF session.usergroup == 'admin' %]*/
let sel =users.tbl.getSelectedData();
if (sel[0]){
let fndata = {"fn":"setnewpassword","email":sel[0].username};
}
});
}
- /*![% END %]*/
+ /* @preserve [% END %]*/
},
validatenewlogin: function(){
let newusername = document.getElementById("newuseremail").value;
if (users.validateEmail(newusername)){
postData("db.cgi",{"fn":"validatelogin","username":newusername}).then(data => {
- console.log("validated",data.result);
+ //console.log("validated",data.result);
if (data && data.result.found > "0"){
document.getElementById("nunmsg").innerHTML= '<div class="panel red">Il existe déjà uncompte avec cette addresse E-Mail!</div>';
} else {
}
},
dlgchangelogin: function(){
- /*![% IF session.usergroup == 'admin' %]*/
+ /* @preserve[% IF session.usergroup == 'admin' %]*/
let sel = users.tbl.getSelectedData();
if (sel[0]){
document.getElementById("nunmsg").innerHTML= "";
document.getElementById("newuseremail").value=sel[0].username;
document.getElementById('dlgusername').style.display='block';
}
- /*![% END %]*/
+ /* @preserve[% END %]*/
},
afterdeletecallback: function(data){
users.gettbldata();
//console.log("cschema",companies.current_schemata);
if (sel[0]){
postData("db.cgi",{"get":"staffgroups","schemata":sel[0].schemata}).then(data => {
- console.log("staffgroups",data.result);
+ //console.log("staffgroups",data.result);
dataform.fillselectlist(users.choices["user_id_staffgroups"],data.result.sqldata,'id','groupname');
});
}
flds["ident_users_id"] = flds["ident_users_id_users"];
delete flds["null"];
delete flds["ident_users_id_users"];
- console.log(flds);
+ //console.log(flds);
postData("db.cgi",flds).then(data2 => {
users.gettbldata();
document.getElementById('dlg_users').style.display='none';
-let users={tbl:null,current_user:"[% session.id %]",edit:null,choices:{schemaaccess:null,user_id_staffgroups:null,id_company:null,id_usergroup:null},initform:function(){users.choices.id_company=new SlimSelect({select:"#id_company",showSearch:!1}),users.choices.id_usergroup=new SlimSelect({select:"#id_usergroup",showSearch:!1}),users.choices.schemaaccess=new SlimSelect({select:"#schemaaccess",showSearch:!1}),users.choices.user_id_staffgroups=new SlimSelect({select:"#user_id_staffgroups",showSearch:!1}),users.getcompanies(),users.getusergroups(),users.getschemata(),users.getUserStaffGroups()},inittable:function(){users.initform(),users.tbl=new Tabulator("#tbl_users",{height:"calc(100vh - 111px)",layout:"fitDataFill",selectable:1,rowContext:function(e,row){e.preventDefault()},columns:[{title:"Nom",field:"surname"},{title:"Prénom",field:"prename"},{title:"Login",field:"username"},{title:"Accès",field:"groupname"},{title:"Accès Département",field:"staffgroups"},{title:"Bloqué",field:"isblocked",formatter:"tickCross",hozAlign:"center",formatterParams:{allowEmpty:!0,allowTruthy:!0,tickElement:'<span style="color: red;">✔</span>'}}]})},gettbldata:function(){let sel;companies.tbl.getSelectedData()[0]&&postData("db.cgi",{get:"userlist",schemata:companies.current_schemata}).then(data=>{users.tbl.setData(data.result.sqldata)})},add:function(){document.getElementById("username").disabled=!1,dataform.cleanform2("users",users.choices),users.getUserStaffGroups(),app.viewdialog("users")},edit:function(){let udata=users.tbl.getSelectedData();udata[0]&&(document.getElementById("username").disabled=!0,users.getUserStaffGroups(),dataform.cleanform2("users",users.choices),postData("db.cgi",{get:"user",id:udata[0].id}).then(data=>{console.log("users",data.result.data),dataform.fillformbydataclass2("users",users.choices,data.result.data),app.viewdialog("users")}))},remove:function(){let udata=users.tbl.getSelectedData();if(udata[0].id==users.current_user)return!1;udata[0]&&(flds={},flds.fn="del_user",flds.id=udata[0].id,flds.schemata="public",showinfodlg("Supprimer","Êtes vous sûre de supprimer l'utilisateur sélectionné?",users.removedata,flds,'<span class="icon-Save"></span>Supprimer','<span class="icon-remove"></span>Annuler'))},removedata:function(data){postData("db.cgi",data).then(remdata=>{users.gettbldata()})},validateform:function(){let idcompany,usergroups,schemaaccess;return""==users.choices.id_company.selected()?(document.getElementById("usermsg").innerHTML='<div class="panel red">Entreprise ne doit pas être vide!</div>',!1):0==users.choices.id_usergroup.selected().length?(document.getElementById("usermsg").innerHTML='<div class="panel red">Accès Groupe ne doit pas être vide!</div>',!1):0==users.choices.schemaaccess.selected().length?(document.getElementById("usermsg").innerHTML='<div class="panel red">Accès Entreprise ne doit pas être vide!</div>',!1):(users.checkemail(),!1)},confirmchangepassword:function(){
-/*![% IF session.usergroup == 'admin' %]*/
-let sel;users.tbl.getSelectedData()[0]&&showinfodlg("Nouveau Mot de Passe","Êtes vous sûre changer le mot de passe?",users.setnewpassword,{},'<span class="icon-Save"></span>Oui','<span class="icon-remove"></span>Non')
-/*![% END %]*/},setnewpassword:function(){
-/*![% IF session.usergroup == 'admin' %]*/
-let sel=users.tbl.getSelectedData();if(sel[0]){let fndata={fn:"setnewpassword",email:sel[0].username};postData("db.cgi",fndata).then(data=>{document.getElementById("dlg_users").style.display="none",data&&data.result.data.password?showmessagedlg("Nouveau mot de passe!",'<div class="container"><input class="input" type="text" value="'+data.result.data.username+'" readonly> <label class="label" for="staffgroups_groupname">Utilisateur</label></div><div class="container"><input class="input" type="text" value="'+data.result.data.password+'" readonly> <label class="label" for="staffgroups_groupname">Nouveau Mot de passe</label></div>'):showmessagedlg("Erreur!","Une erreur c'est produite pour l'envoie d'un nouveau mot de passe!")})}
-/*![% END %]*/},validatenewlogin:function(){let newusername=document.getElementById("newuseremail").value;users.validateEmail(newusername)?postData("db.cgi",{fn:"validatelogin",username:newusername}).then(data=>{console.log("validated",data.result),data&&data.result.found>"0"?document.getElementById("nunmsg").innerHTML='<div class="panel red">Il existe déjà uncompte avec cette addresse E-Mail!</div>':(dataform.saveschemafield(document.getElementById("newuseremail"),"public"),users.gettbldata(),document.getElementById("dlgusername").style.display="none")}):document.getElementById("nunmsg").innerHTML='<div class="panel red">inserez un email valide s.v.p.!</div>'},dlgchangelogin:function(){
-/*![% IF session.usergroup == 'admin' %]*/
-let sel=users.tbl.getSelectedData();sel[0]&&(document.getElementById("nunmsg").innerHTML="",document.getElementById("newuseremail").dataset.id=sel[0].id,document.getElementById("newuseremail").value=sel[0].username,document.getElementById("dlgusername").style.display="block")
-/*![% END %]*/},afterdeletecallback:function(data){users.gettbldata()},afteruseradded:function(data){return users.gettbldata(),document.getElementById("dlg_users").style.display="none",!1},getcompanies:function(){postData("db.cgi",{get:"companiesdata",schemata:"public"}).then(data=>{dataform.fillselectlist(users.choices.id_company,data.result.sqldata,"id","company")})},getusergroups:function(){postData("db.cgi",{get:"usergrouplist",schemata:"public"}).then(data=>{dataform.fillselectlist(users.choices.id_usergroup,data.result.sqldata,"id","groupname")})},getUserStaffGroups:function(){let sel=companies.tbl.getSelectedData();sel[0]&&postData("db.cgi",{get:"staffgroups",schemata:sel[0].schemata}).then(data=>{console.log("staffgroups",data.result),dataform.fillselectlist(users.choices.user_id_staffgroups,data.result.sqldata,"id","groupname")})},getschemata:function(){postData("db.cgi",{get:"allschemalist",schemata:"public"}).then(data=>{dataform.fillselectlist(users.choices.schemaaccess,data.result.sqldata,"schemata","datasetname")})},checkemail:function(){return users.saveform(),!1},saveform:function(){let flds=dataform.getformcontent("users",users.choices);flds.schemata="public",flds.fn="saveform",flds.table="users",flds.ident_users_id=flds.ident_users_id_users,delete flds.null,delete flds.ident_users_id_users,console.log(flds),postData("db.cgi",flds).then(data2=>{users.gettbldata(),document.getElementById("dlg_users").style.display="none",dataform.formsaved(null)})},validateEmail:function(email){let re;return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(String(email).toLowerCase())},viewtable:function(){users.gettbldata()}};
\ No newline at end of file
+let users={tbl:null,current_user:"[% session.id %]",edit:null,choices:{schemaaccess:null,user_id_staffgroups:null,id_company:null,id_usergroup:null},initform:function(){users.choices["id_company"]=new SlimSelect({select:"#id_company",showSearch:!1}),users.choices["id_usergroup"]=new SlimSelect({select:"#id_usergroup",showSearch:!1}),users.choices["schemaaccess"]=new SlimSelect({select:"#schemaaccess",showSearch:!1}),users.choices["user_id_staffgroups"]=new SlimSelect({select:"#user_id_staffgroups",showSearch:!1}),users.getcompanies(),users.getusergroups(),users.getschemata(),users.getUserStaffGroups()},inittable:function(){users.initform(),users.tbl=new Tabulator("#tbl_users",{height:"calc(100vh - 111px)",layout:"fitDataFill",selectable:1,rowContext:function(e,s){e.preventDefault()},columns:[{title:"Nom",field:"surname"},{title:"Prénom",field:"prename"},{title:"Login",field:"username"},{title:"Accès",field:"groupname"},{title:"Accès Département",field:"staffgroups"},{title:"Bloqué",field:"isblocked",formatter:"tickCross",hozAlign:"center",formatterParams:{allowEmpty:!0,allowTruthy:!0,tickElement:'<span style="color: red;">✔</span>'}}]})},gettbldata:function(){let e=companies.tbl.getSelectedData()
+e[0]&&postData("db.cgi",{get:"userlist",schemata:companies.current_schemata}).then(e=>{users.tbl.setData(e.result.sqldata)})},add:function(){document.getElementById("username").disabled=!1,dataform.cleanform2("users",users.choices),users.getUserStaffGroups(),app.viewdialog("users")},edit:function(){let e=users.tbl.getSelectedData()
+e[0]&&(document.getElementById("username").disabled=!0,users.getUserStaffGroups(),dataform.cleanform2("users",users.choices),postData("db.cgi",{get:"user",id:e[0].id}).then(e=>{dataform.fillformbydataclass2("users",users.choices,e.result.data),app.viewdialog("users")}))},remove:function(){let e=users.tbl.getSelectedData()
+if(e[0].id==users.current_user)return!1
+e[0]&&(flds={},flds["fn"]="del_user",flds["id"]=e[0].id,flds["schemata"]="public",showinfodlg("Supprimer","Êtes vous sûre de supprimer l'utilisateur sélectionné?",users.removedata,flds,'<span class="icon-Save"></span>Supprimer','<span class="icon-remove"></span>Annuler'))},removedata:function(e){postData("db.cgi",e).then(e=>{users.gettbldata()})},validateform:function(){let e=users.choices["id_company"].selected()
+if(""==e)return document.getElementById("usermsg").innerHTML='<div class="panel red">Entreprise ne doit pas être vide!</div>',!1
+let s=users.choices["id_usergroup"].selected()
+if(0==s.length)return document.getElementById("usermsg").innerHTML='<div class="panel red">Accès Groupe ne doit pas être vide!</div>',!1
+let t=users.choices["schemaaccess"].selected()
+return 0==t.length?(document.getElementById("usermsg").innerHTML='<div class="panel red">Accès Entreprise ne doit pas être vide!</div>',!1):(users.checkemail(),!1)},confirmchangepassword:function(){
+/* @preserve [% IF session.usergroup == 'admin' %]*/
+let e=users.tbl.getSelectedData()
+e[0]&&showinfodlg("Nouveau Mot de Passe","Êtes vous sûre changer le mot de passe?",users.setnewpassword,{},'<span class="icon-Save"></span>Oui','<span class="icon-remove"></span>Non')
+/* @preserve [% END %]*/},setnewpassword:function(){
+/* @preserve [% IF session.usergroup == 'admin' %]*/
+let e=users.tbl.getSelectedData()
+if(e[0]){let s={fn:"setnewpassword",email:e[0].username}
+postData("db.cgi",s).then(e=>{document.getElementById("dlg_users").style.display="none",e&&e.result.data.password?showmessagedlg("Nouveau mot de passe!",'<div class="container"><input class="input" type="text" value="'+e.result.data.username+'" readonly> <label class="label" for="staffgroups_groupname">Utilisateur</label></div><div class="container"><input class="input" type="text" value="'+e.result.data.password+'" readonly> <label class="label" for="staffgroups_groupname">Nouveau Mot de passe</label></div>'):showmessagedlg("Erreur!","Une erreur c'est produite pour l'envoie d'un nouveau mot de passe!")})}
+/* @preserve [% END %]*/},validatenewlogin:function(){let e=document.getElementById("newuseremail").value
+users.validateEmail(e)?postData("db.cgi",{fn:"validatelogin",username:e}).then(e=>{e&&e.result.found>"0"?document.getElementById("nunmsg").innerHTML='<div class="panel red">Il existe déjà uncompte avec cette addresse E-Mail!</div>':(dataform.saveschemafield(document.getElementById("newuseremail"),"public"),users.gettbldata(),document.getElementById("dlgusername").style.display="none")}):document.getElementById("nunmsg").innerHTML='<div class="panel red">inserez un email valide s.v.p.!</div>'},dlgchangelogin:function(){
+/* @preserve[% IF session.usergroup == 'admin' %]*/
+let e=users.tbl.getSelectedData()
+e[0]&&(document.getElementById("nunmsg").innerHTML="",document.getElementById("newuseremail").dataset.id=e[0].id,document.getElementById("newuseremail").value=e[0].username,document.getElementById("dlgusername").style.display="block")
+/* @preserve[% END %]*/},afterdeletecallback:function(e){users.gettbldata()},afteruseradded:function(e){return users.gettbldata(),document.getElementById("dlg_users").style.display="none",!1},getcompanies:function(){postData("db.cgi",{get:"companiesdata",schemata:"public"}).then(e=>{dataform.fillselectlist(users.choices["id_company"],e.result.sqldata,"id","company")})},getusergroups:function(){postData("db.cgi",{get:"usergrouplist",schemata:"public"}).then(e=>{dataform.fillselectlist(users.choices["id_usergroup"],e.result.sqldata,"id","groupname")})},getUserStaffGroups:function(){let e=companies.tbl.getSelectedData()
+e[0]&&postData("db.cgi",{get:"staffgroups",schemata:e[0].schemata}).then(e=>{dataform.fillselectlist(users.choices["user_id_staffgroups"],e.result.sqldata,"id","groupname")})},getschemata:function(){postData("db.cgi",{get:"allschemalist",schemata:"public"}).then(e=>{dataform.fillselectlist(users.choices["schemaaccess"],e.result.sqldata,"schemata","datasetname")})},checkemail:function(){return users.saveform(),!1},saveform:function(){let e=dataform.getformcontent("users",users.choices)
+e["schemata"]="public",e["fn"]="saveform",e["table"]="users",e["ident_users_id"]=e["ident_users_id_users"],delete e["null"],delete e["ident_users_id_users"],postData("db.cgi",e).then(e=>{users.gettbldata(),document.getElementById("dlg_users").style.display="none",dataform.formsaved(null)})},validateEmail:function(e){let s=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
+return s.test(String(e).toLowerCase())},viewtable:function(){users.gettbldata()}}
{title:"Date",field:"daydate",headerFilter:"input",headerSort:"date",formatter:"datetime",resizable: false,formatterParams:{inputFormat:"YYYY-MM-DD",outputFormat:"DD.MM.YYYY",invalidPlaceholder:""}},
{title:"Nom",field:"vacancyname",headerFilter:"input"},
]
- });
+ });
vacancydays.gettbldata();
},
gettbldata: function(id){
-function initpage(){vacancydays.inittable()}schemata="public";let vacancydays={tbl:null,initform:function(){},inittable:function(){var cyear=moment(new Date).year();vacancydays.initform(),vacancydays.tbl=new Tabulator("#tbl_vacancydays",{headerFilterPlaceholder:"filtrage...",initialHeaderFilter:[{field:"daydate",value:cyear}],height:"calc(100vh - 96px)",layout:"fitDataFill",selectable:1,rowClick:function(e,row){vacancydays.edit()},rowContext:function(e,row){e.preventDefault()},columns:[{title:"Date",field:"daydate",headerFilter:"input",headerSort:"date",formatter:"datetime",resizable:!1,formatterParams:{inputFormat:"YYYY-MM-DD",outputFormat:"DD.MM.YYYY",invalidPlaceholder:""}},{title:"Nom",field:"vacancyname",headerFilter:"input"}]}),vacancydays.gettbldata()},gettbldata:function(id){postData("db.cgi",{get:"vacancydays",schemata:"public"}).then(data=>{vacancydays.tbl.setData(data.result.sqldata)})},add:function(){},confirmremove:function(){},remove:function(){},edit:function(){},save:function(){}};
\ No newline at end of file
+function initpage(){vacancydays.inittable()}schemata="public"
+let vacancydays={tbl:null,initform:function(){},inittable:function(){var a=moment(new Date).year()
+vacancydays.initform(),vacancydays.tbl=new Tabulator("#tbl_vacancydays",{headerFilterPlaceholder:"filtrage...",initialHeaderFilter:[{field:"daydate",value:a}],height:"calc(100vh - 96px)",layout:"fitDataFill",selectable:1,rowClick:function(a,t){vacancydays.edit()},rowContext:function(a,t){a.preventDefault()},columns:[{title:"Date",field:"daydate",headerFilter:"input",headerSort:"date",formatter:"datetime",resizable:!1,formatterParams:{inputFormat:"YYYY-MM-DD",outputFormat:"DD.MM.YYYY",invalidPlaceholder:""}},{title:"Nom",field:"vacancyname",headerFilter:"input"}]}),vacancydays.gettbldata()},gettbldata:function(a){postData("db.cgi",{get:"vacancydays",schemata:"public"}).then(a=>{vacancydays.tbl.setData(a.result.sqldata)})},add:function(){},confirmremove:function(){},remove:function(){},edit:function(){},save:function(){}}
]
});
vacancytypes.gettbldata();
- },
+ },
gettbldata: function(){
postData("db.cgi", { "get": "gvacancytypes","schemata":"public"}).then(data => {
vacancytypes.tbl.setData(data.result.sqldata);
-function initpage(){vacancytypes.inittable()}schemata="public";let vacancytypes={tbl:null,initform:function(){},inittable:function(){var cyear=moment(new Date).year();vacancytypes.initform(),vacancytypes.tbl=new Tabulator("#tbl_vacancytypes",{headerFilterPlaceholder:"filtrage...",height:"calc(100vh - 96px)",layout:"fitDataFill",selectable:1,rowClick:function(e,row){vacancytypes.edit()},rowContext:function(e,row){e.preventDefault()},columns:[{title:"Type",field:"vacancytype",headerFilter:"input"},{title:"Nom",field:"vacancyname",headerFilter:"input"},{title:"Couleur",field:"color"},{title:"Legende",field:"legend"}]}),vacancytypes.gettbldata()},gettbldata:function(){postData("db.cgi",{get:"gvacancytypes",schemata:"public"}).then(data=>{vacancytypes.tbl.setData(data.result.sqldata)})},add:function(){},confirmremove:function(){},remove:function(){},edit:function(){},save:function(){}};
\ No newline at end of file
+function initpage(){vacancytypes.inittable()}schemata="public"
+let vacancytypes={tbl:null,initform:function(){},inittable:function(){moment(new Date).year()
+vacancytypes.initform(),vacancytypes.tbl=new Tabulator("#tbl_vacancytypes",{headerFilterPlaceholder:"filtrage...",height:"calc(100vh - 96px)",layout:"fitDataFill",selectable:1,rowClick:function(t,e){vacancytypes.edit()},rowContext:function(t,e){t.preventDefault()},columns:[{title:"Type",field:"vacancytype",headerFilter:"input"},{title:"Nom",field:"vacancyname",headerFilter:"input"},{title:"Couleur",field:"color"},{title:"Legende",field:"legend"}]}),vacancytypes.gettbldata()},gettbldata:function(){postData("db.cgi",{get:"gvacancytypes",schemata:"public"}).then(t=>{vacancytypes.tbl.setData(t.result.sqldata)})},add:function(){},confirmremove:function(){},remove:function(){},edit:function(){},save:function(){}}
{ title: "standard", field: "isdefault",headerSort: false,formatter:"tickCross",hozAlign:"center",
formatterParams:{allowEmpty:true,allowTruthy:true,tickElement:'<span>✔</span>'}}
]
- });
+ });
worktimes.initform();
},
gettbldata: function(){
-let worktimes={tbl:null,choices:{},initform:function(){flatpickr("#startdate",{altInput:!0,altFormat:"d.m.Y",dateFormat:"Y-m-d",locale:"fr"}),flatpickr("#enddate",{altInput:!0,altFormat:"d.m.Y",dateFormat:"Y-m-d",locale:"fr"})},inittable:function(){worktimes.tbl=new Tabulator("#tbl_worktimes",{headerFilterPlaceholder:"filter...",height:"calc(100vh - 111px)",layout:"fitDataFill",selectable:1,rowContext:function(e,row){e.preventDefault()},columns:[{title:"début",field:"startdate",headerSort:!0,formatter:"datetime",formatterParams:{inputFormat:"YYYY-MM-DD",outputFormat:"DD.MM.YYYY",invalidPlaceholder:""}},{title:"fin",field:"enddate",headerSort:!0,formatter:"datetime",formatterParams:{inputFormat:"YYYY-MM-DD",outputFormat:"DD.MM.YYYY",invalidPlaceholder:""}},{title:"max heures/jour",field:"maxdayhours",headerSort:!1},{title:"H/Sem.",field:"defaultweekhours",headerSort:!1},{title:"max heures/semaine",field:"maxweekhours",headerSort:!1},{title:"max coupure",field:"maxinterruptionhours",headerSort:!1},{title:"min h. libres<br/>quotidienne",field:"mindailyrecuperation",headerSort:!1},{title:"standard",field:"isdefault",headerSort:!1,formatter:"tickCross",hozAlign:"center",formatterParams:{allowEmpty:!0,allowTruthy:!0,tickElement:"<span>✔</span>"}}]}),worktimes.initform()},gettbldata:function(){let sel=companies.tbl.getSelectedData();sel[0]&&postData("db.cgi",{get:"worktimeslist",schemata:sel[0].schemata}).then(data=>{worktimes.tbl.setData(data.result.sqldata)})},add:function(){dataform.cleanform2("worktimes",worktimes.choices),app.viewdialog("worktimes")},edit:function(){let udata=worktimes.tbl.getSelectedData();udata[0]&&(dataform.cleanform2("worktimes",worktimes.choices),postData("db.cgi",{get:"worktime",schemata:companies.current_schemata,id:udata[0].id}).then(data=>{data.result.data.id_worktimes=data.result.data.id,"1"==data.result.data.isdefault?document.getElementById("worktimedates").style.display="none":document.getElementById("worktimedates").style.display="block",dataform.fillformbydataclass2("worktimes",worktimes.choices,data.result.data),app.viewdialog("worktimes")}))},remove:function(){let udata=worktimes.tbl.getSelectedData();if(udata[0].isdefault)return showmessagedlg("Info","Le heures Standard ne peuvent pas être supprimés!"),!1;udata[0]&&(flds={},flds.fn="del_worktimes",flds.id=udata[0].id,flds.schemata=schemata,showinfodlg("Supprimer","Êtes vous sûre de supprimer les heures sélectionné?",worktimes.removedata,flds,'<span class="icon-Save"></span>Supprimer','<span class="icon-remove"></span>Annuler'))},removedata:function(data){postData("db.cgi",data).then(remdata=>{worktimes.gettbldata()})},save:function(){let wkdata=dataform.getformcontent("worktimes");return wkdata.fn="saveform",wkdata.table="worktimes",wkdata.ident_worktimes_id=wkdata.ident_worktimes_id_worktimes,delete wkdata.ident_worktimes_id_worktimes,delete wkdata.null,wkdata.schemata=schemata,postData("db.cgi",wkdata).then(data=>{worktimes.gettbldata(),document.getElementById("dlg_worktimes").style.display="none"}),!1}};
\ No newline at end of file
+let worktimes={tbl:null,choices:{},initform:function(){flatpickr("#startdate",{altInput:!0,altFormat:"d.m.Y",dateFormat:"Y-m-d",locale:"fr"}),flatpickr("#enddate",{altInput:!0,altFormat:"d.m.Y",dateFormat:"Y-m-d",locale:"fr"})},inittable:function(){worktimes.tbl=new Tabulator("#tbl_worktimes",{headerFilterPlaceholder:"filter...",height:"calc(100vh - 111px)",layout:"fitDataFill",selectable:1,rowContext:function(t,e){t.preventDefault()},columns:[{title:"début",field:"startdate",headerSort:!0,formatter:"datetime",formatterParams:{inputFormat:"YYYY-MM-DD",outputFormat:"DD.MM.YYYY",invalidPlaceholder:""}},{title:"fin",field:"enddate",headerSort:!0,formatter:"datetime",formatterParams:{inputFormat:"YYYY-MM-DD",outputFormat:"DD.MM.YYYY",invalidPlaceholder:""}},{title:"max heures/jour",field:"maxdayhours",headerSort:!1},{title:"H/Sem.",field:"defaultweekhours",headerSort:!1},{title:"max heures/semaine",field:"maxweekhours",headerSort:!1},{title:"max coupure",field:"maxinterruptionhours",headerSort:!1},{title:"min h. libres<br/>quotidienne",field:"mindailyrecuperation",headerSort:!1},{title:"standard",field:"isdefault",headerSort:!1,formatter:"tickCross",hozAlign:"center",formatterParams:{allowEmpty:!0,allowTruthy:!0,tickElement:"<span>✔</span>"}}]}),worktimes.initform()},gettbldata:function(){let t=companies.tbl.getSelectedData()
+t[0]&&postData("db.cgi",{get:"worktimeslist",schemata:t[0].schemata}).then(t=>{worktimes.tbl.setData(t.result.sqldata)})},add:function(){dataform.cleanform2("worktimes",worktimes.choices),app.viewdialog("worktimes")},edit:function(){let t=worktimes.tbl.getSelectedData()
+t[0]&&(dataform.cleanform2("worktimes",worktimes.choices),postData("db.cgi",{get:"worktime",schemata:companies.current_schemata,id:t[0].id}).then(t=>{t.result.data["id_worktimes"]=t.result.data["id"],"1"==t.result.data.isdefault?document.getElementById("worktimedates").style.display="none":document.getElementById("worktimedates").style.display="block",dataform.fillformbydataclass2("worktimes",worktimes.choices,t.result.data),app.viewdialog("worktimes")}))},remove:function(){let t=worktimes.tbl.getSelectedData()
+if(t[0].isdefault)return showmessagedlg("Info","Le heures Standard ne peuvent pas être supprimés!"),!1
+t[0]&&(flds={},flds["fn"]="del_worktimes",flds["id"]=t[0].id,flds["schemata"]=schemata,showinfodlg("Supprimer","Êtes vous sûre de supprimer les heures sélectionné?",worktimes.removedata,flds,'<span class="icon-Save"></span>Supprimer','<span class="icon-remove"></span>Annuler'))},removedata:function(t){postData("db.cgi",t).then(t=>{worktimes.gettbldata()})},save:function(){let t=dataform.getformcontent("worktimes")
+return t["fn"]="saveform",t["table"]="worktimes",t["ident_worktimes_id"]=t["ident_worktimes_id_worktimes"],delete t["ident_worktimes_id_worktimes"],delete t["null"],t["schemata"]=schemata,postData("db.cgi",t).then(t=>{worktimes.gettbldata(),document.getElementById("dlg_worktimes").style.display="none"}),!1}}
});
dataform.fillselectlist(company.choices["reportperiodunit"],periodunits,'value','text');
},
-
+
edit: function(){
company.current_schemata = schemata;
dataform.cleanform2("company",company.choices);
-schemata="public",currentview=null;let periodunits=[{value:"week",text:"Semaine(s)"},{value:"month",text:"Mois"}];function initpage(){company.initform(),staffgroups.inittable(),users.inittable(),company.edit()}let company={current_company:null,current_schemata:null,current_view:"basedata",choices:{reportperiodunit:null,payedapuses:null},initform:function(){flatpickr("#reportperiodstart",{altInput:!0,altFormat:"d.m.Y",dateFormat:"Y-m-d",locale:"fr"}),company.choices.reportperiodunit=new SlimSelect({select:"#reportperiodunit",showSearch:!1,disabled:!0}),company.choices.payedpauses=new SlimSelect({select:"#payedpauses",showSearch:!1,disabled:!0}),dataform.fillselectlist(company.choices.reportperiodunit,periodunits,"value","text")},edit:function(){company.current_schemata=schemata,dataform.cleanform2("company",company.choices),postData("db.cgi",{get:"company",schemata:"public",schemata:schemata}).then(data=>{dataform.fillformbydataclass2("companies",company.choices,data.result.data),company.current_company=data.result.data.id,staffgroups.gettbldata(),users.gettbldata(),company.setview(company.current_view)})},setview:function(viewname){company.current_view=viewname,app.viewpanel(viewname)}};
\ No newline at end of file
+function initpage(){company.initform(),staffgroups.inittable(),users.inittable(),company.edit()}schemata="public",currentview=null
+let periodunits=[{value:"week",text:"Semaine(s)"},{value:"month",text:"Mois"}],company={current_company:null,current_schemata:null,current_view:"basedata",choices:{reportperiodunit:null,payedapuses:null},initform:function(){flatpickr("#reportperiodstart",{altInput:!0,altFormat:"d.m.Y",dateFormat:"Y-m-d",locale:"fr"}),company.choices["reportperiodunit"]=new SlimSelect({select:"#reportperiodunit",showSearch:!1,disabled:!0}),company.choices["payedpauses"]=new SlimSelect({select:"#payedpauses",showSearch:!1,disabled:!0}),dataform.fillselectlist(company.choices["reportperiodunit"],periodunits,"value","text")},edit:function(){company.current_schemata=schemata,dataform.cleanform2("company",company.choices),postData("db.cgi",{get:"company",schemata:"public",schemata:schemata}).then(e=>{dataform.fillformbydataclass2("companies",company.choices,e.result.data),company.current_company=e.result.data.id,staffgroups.gettbldata(),users.gettbldata(),company.setview(company.current_view)})},setview:function(e){company.current_view=e,app.viewpanel(e)}}
});
}
- },
+ },
remove: function(){
let udata = staffgroups.tbl.getSelectedData();
var data = staffgroups.tbl.getData();
-let staffgroups={tbl:null,choices:{},initform:function(){},inittable:function(){staffgroups.tbl=new Tabulator("#tbl_staffgroups",{height:"254px",layout:"fitDataFill",selectable:1,rowContext:function(e,row){e.preventDefault()},columns:[{title:"Département",field:"groupname"},{title:"salarié(s)",field:"staffmembers"}]})},gettbldata:function(){postData("db.cgi",{get:"staffgroups",schemata:schemata}).then(data=>{staffgroups.tbl.setData(data.result.sqldata)})},add:function(){dataform.cleanform2("staffgroups",staffgroups.choices),app.viewdialog("staffgroups")},edit:function(){let udata=staffgroups.tbl.getSelectedData();udata[0]&&(dataform.cleanform2("staffgroups",staffgroups.choices),postData("db.cgi",{get:"staffgroup",schemata:schemata,id:udata[0].id}).then(data=>{data.result.id_staffgroups=data.result.id,dataform.fillformbydataclass2("staffgroups",staffgroups.choices,data.result),app.viewdialog("staffgroups")}))},remove:function(){let udata=staffgroups.tbl.getSelectedData();var data;if(staffgroups.tbl.getData().length<=1)return!1;if(udata[0]){if(parseInt(udata[0].staffmembers)>0)return!1;flds={},flds.fn="del_staffgroup",flds.id=udata[0].id,flds.schemata=schemata,showinfodlg("Supprimer","Êtes vous sûre de supprimer le departement sélectionné?",staffgroups.removedata,flds,'<span class="icon-Save"></span>Supprimer','<span class="icon-remove"></span>Annuler')}},removedata:function(data){postData("db.cgi",data).then(remdata=>{staffgroups.gettbldata()})},save:function(){let udata=staffgroups.tbl.getSelectedData(),wkdata=dataform.getformcontent("staffgroups");return wkdata.ident_staffgroups_id=wkdata.ident_staffgroups_id_staffgroups,delete wkdata.ident_staffgroups_id_staffgroups,delete wkdata.null,wkdata.table="staffgroups",dataform.saveformdata(wkdata,staffgroups.aftersavedcallback,schemata),!1},afterdeletecallback:function(data){staffgroups.gettbldata()},aftersavedcallback:function(){return staffgroups.gettbldata(),document.getElementById("dlg_staffgroups").style.display="none",!1}};
\ No newline at end of file
+let staffgroups={tbl:null,choices:{},initform:function(){},inittable:function(){staffgroups.tbl=new Tabulator("#tbl_staffgroups",{height:"254px",layout:"fitDataFill",selectable:1,rowContext:function(t,a){t.preventDefault()},columns:[{title:"Département",field:"groupname"},{title:"salarié(s)",field:"staffmembers"}]})},gettbldata:function(){postData("db.cgi",{get:"staffgroups",schemata:schemata}).then(t=>{staffgroups.tbl.setData(t.result.sqldata)})},add:function(){dataform.cleanform2("staffgroups",staffgroups.choices),app.viewdialog("staffgroups")},edit:function(){let t=staffgroups.tbl.getSelectedData()
+t[0]&&(dataform.cleanform2("staffgroups",staffgroups.choices),postData("db.cgi",{get:"staffgroup",schemata:schemata,id:t[0].id}).then(t=>{t.result["id_staffgroups"]=t.result["id"],dataform.fillformbydataclass2("staffgroups",staffgroups.choices,t.result),app.viewdialog("staffgroups")}))},remove:function(){let t=staffgroups.tbl.getSelectedData()
+var a=staffgroups.tbl.getData()
+if(a.length<=1)return!1
+if(t[0]){if(parseInt(t[0].staffmembers)>0)return!1
+flds={},flds["fn"]="del_staffgroup",flds["id"]=t[0].id,flds["schemata"]=schemata,showinfodlg("Supprimer","Êtes vous sûre de supprimer le departement sélectionné?",staffgroups.removedata,flds,'<span class="icon-Save"></span>Supprimer','<span class="icon-remove"></span>Annuler')}},removedata:function(t){postData("db.cgi",t).then(t=>{staffgroups.gettbldata()})},save:function(){staffgroups.tbl.getSelectedData()
+let t=dataform.getformcontent("staffgroups")
+return t["ident_staffgroups_id"]=t["ident_staffgroups_id_staffgroups"],delete t["ident_staffgroups_id_staffgroups"],delete t["null"],t["table"]="staffgroups",dataform.saveformdata(t,staffgroups.aftersavedcallback,schemata),!1},afterdeletecallback:function(t){staffgroups.gettbldata()},aftersavedcallback:function(){return staffgroups.gettbldata(),document.getElementById("dlg_staffgroups").style.display="none",!1}}
});
},
confirmchangepassword: function(){
- /*![% IF session.usergroup == 'admin' || session.usergroup == 'manager' %]*/
+ /* @preserve[% IF session.usergroup == 'admin' || session.usergroup == 'manager' %]*/
let sel =users.tbl.getSelectedData();
if (sel[0]){
showinfodlg("Nouveau Mot de Passe","Êtes vous sûre changer le mot de passe?",users.setnewpassword,{},"<span class=\"icon-Save\"></span>Oui","<span class=\"icon-remove\"></span>Non");
}
- /*![% END %]*/
- },
+ /* @preserve[% END %]*/
+ },
setnewpassword: function(){
- /*![% IF session.usergroup == 'admin' || session.usergroup == 'manager' %]*/
+ /* @preserve[% IF session.usergroup == 'admin' || session.usergroup == 'manager' %]*/
let sel =users.tbl.getSelectedData();
if (sel[0]){
let fndata = {"fn":"setnewpassword","email":sel[0].username};
}
});
}
- /*![% END %]*/
+ /* @preserve[% END %]*/
}
}
-let users={tbl:null,current_user:"[% session.id %]",choices:{schemaaccess:null},initform:function(){},inittable:function(){users.initform(),users.tbl=new Tabulator("#tbl_users",{height:"calc(100vh - 111px)",layout:"fitDataFill",selectable:1,rowContext:function(e,row){e.preventDefault()},columns:[{title:"Nom",field:"surname"},{title:"Prénom",field:"prename"},{title:"Login",field:"username"},{title:"Accès",field:"groupname"},{title:"Accès Département",field:"staffgroups"},{title:"Bloqué",field:"isblocked",formatter:"tickCross",hozAlign:"center",formatterParams:{allowEmpty:!0,allowTruthy:!0,tickElement:'<span style="color: red;">✔</span>'}}]})},gettbldata:function(){postData("db.cgi",{get:"userlist",schemata:company.current_schemata}).then(data=>{users.tbl.setData(data.result.sqldata)})},confirmchangepassword:function(){
-/*![% IF session.usergroup == 'admin' || session.usergroup == 'manager' %]*/
-let sel;users.tbl.getSelectedData()[0]&&showinfodlg("Nouveau Mot de Passe","Êtes vous sûre changer le mot de passe?",users.setnewpassword,{},'<span class="icon-Save"></span>Oui','<span class="icon-remove"></span>Non')
-/*![% END %]*/},setnewpassword:function(){
-/*![% IF session.usergroup == 'admin' || session.usergroup == 'manager' %]*/
-let sel=users.tbl.getSelectedData();if(sel[0]){let fndata={fn:"setnewpassword",email:sel[0].username};postData("db.cgi",fndata).then(data=>{document.getElementById("dlg_users").style.display="none",data&&data.result.data.password?showmessagedlg("Nouveau mot de passe!",'<div class="container"><input class="input" type="text" value="'+data.result.data.username+'" readonly> <label class="label" for="staffgroups_groupname">Utilisateur</label></div><div class="container"><input class="input" type="text" value="'+data.result.data.password+'" readonly> <label class="label" for="staffgroups_groupname">Nouveau Mot de passe</label></div>'):showmessagedlg("Erreur!","Une erreur c'est produite pour l'envoie d'un nouveau mot de passe!")})}
-/*![% END %]*/}};
\ No newline at end of file
+let users={tbl:null,current_user:"[% session.id %]",choices:{schemaaccess:null},initform:function(){},inittable:function(){users.initform(),users.tbl=new Tabulator("#tbl_users",{height:"calc(100vh - 111px)",layout:"fitDataFill",selectable:1,rowContext:function(e,s){e.preventDefault()},columns:[{title:"Nom",field:"surname"},{title:"Prénom",field:"prename"},{title:"Login",field:"username"},{title:"Accès",field:"groupname"},{title:"Accès Département",field:"staffgroups"},{title:"Bloqué",field:"isblocked",formatter:"tickCross",hozAlign:"center",formatterParams:{allowEmpty:!0,allowTruthy:!0,tickElement:'<span style="color: red;">✔</span>'}}]})},gettbldata:function(){postData("db.cgi",{get:"userlist",schemata:company.current_schemata}).then(e=>{users.tbl.setData(e.result.sqldata)})},confirmchangepassword:function(){
+/* @preserve[% IF session.usergroup == 'admin' || session.usergroup == 'manager' %]*/
+let e=users.tbl.getSelectedData()
+e[0]&&showinfodlg("Nouveau Mot de Passe","Êtes vous sûre changer le mot de passe?",users.setnewpassword,{},'<span class="icon-Save"></span>Oui','<span class="icon-remove"></span>Non')
+/* @preserve[% END %]*/},setnewpassword:function(){
+/* @preserve[% IF session.usergroup == 'admin' || session.usergroup == 'manager' %]*/
+let e=users.tbl.getSelectedData()
+if(e[0]){let s={fn:"setnewpassword",email:e[0].username}
+postData("db.cgi",s).then(e=>{document.getElementById("dlg_users").style.display="none",e&&e.result.data.password?showmessagedlg("Nouveau mot de passe!",'<div class="container"><input class="input" type="text" value="'+e.result.data.username+'" readonly> <label class="label" for="staffgroups_groupname">Utilisateur</label></div><div class="container"><input class="input" type="text" value="'+e.result.data.password+'" readonly> <label class="label" for="staffgroups_groupname">Nouveau Mot de passe</label></div>'):showmessagedlg("Erreur!","Une erreur c'est produite pour l'envoie d'un nouveau mot de passe!")})}
+/* @preserve[% END %]*/}}
schemata = app.getCurrentSchemata();
reportperiod.inittable();
staffperiodweeks.inittable();
-}
+}
let reportperiod ={
tblfilter: null,
-let currentview=null;function initpage(){schemata=app.getCurrentSchemata(),reportperiod.inittable(),staffperiodweeks.inittable()}let reportperiod={tblfilter:null,tbl:null,selected:null,current_view:"periods",choices:{},initform:function(){},inittable:function(){reportperiod.tblfilter=new Tabulator("#tbl_reportperiodfilter",{height:"calc(100vh - 56px)",layout:"fitDataStretch",selectable:1,rowClick:function(e,row){reportperiod.setview("periods")},rowContext:function(e,row){e.preventDefault()},columns:[{title:"Début",field:"startdate",headerSort:"datetime",formatter:"datetime",resizable:!1,formatterParams:{inputFormat:"YYYY-MM-DD",outputFormat:"DD.MM.YYYY",invalidPlaceholder:""}},{title:"Fin",field:"enddate",sorter:"datetime",resizable:!1,formatter:"datetime",formatterParams:{inputFormat:"YYYY-MM-DD",outputFormat:"DD.MM.YYYY",invalidPlaceholder:""}}]}),reportperiod.tbl=new Tabulator("#tbl_reportperiod",{height:"calc(100vh - 56px)",layout:"fitDataFill",selectable:1,rowContext:function(e,row){e.preventDefault()},groupBy:["groupname"],groupStartOpen:[!0],groupClosedShowCalcs:!0,groupHeader:[function(value,count,data){return value}],columns:[{title:"Département",field:"groupname",visible:!1},{title:'<span style="font-size: 9pt;">Prénom</span>',field:"prename",headerSort:!1},{title:'<span style="font-size: 9pt;">Nom</span>',field:"surname",headerSort:!1},{title:'<span style="font-size: 9pt;">Contrat</span>',field:"contracthours",hozAlign:"right",headerSort:!1},{title:'<span style="font-size: 9pt;">Travail</span>',field:"workhours",hozAlign:"right",headerSort:!1},{title:'<span style="font-size: 9pt;">Récup</span>',field:"recuperationhours",hozAlign:"right",headerSort:!1,formatter:periodRecupFormatter},{title:'<span style="font-size: 9pt;">Congé</span>',field:"vacancynormal",hozAlign:"right",headerSort:!1},{title:'<span style="font-size: 9pt;">Congé<br/>maladie</span>',field:"vacancyill",hozAlign:"right",headerSort:!1},{title:'<span style="font-size: 9pt;">Total</span>',field:"totalhours",hozAlign:"right",headerSort:!1,formatter:periodTotalFormatter},{title:'<span style="font-size: 9pt;">Décompte<br/>reporté</span>',field:"transferedhours",hozAlign:"right",headerSort:!1},{title:'<span style="font-size: 9pt;">h. suppl.<br/>payés</span>',field:"payedhours",hozAlign:"right",headerSort:!1,headerVertical:!0},{title:'<span style="font-size: 9pt;">Décompte<br/>fin POT</span>',field:"hoursdiff",hozAlign:"right",headerSort:!1},{title:'<span style="font-size: 9pt;">suppl.<br/>+44h</span>',field:"suppvacancy44hours",hozAlign:"right",headerSort:!1,headerVertical:!0},{title:'<span style="font-size: 9pt;">suppl.<br/>trav. dim.</span>',field:"suppvacancysunwork",hozAlign:"right",headerSort:!1,headerVertical:!0},{title:"moy.<br/>hebd.",field:"avgtotalweekhours",hozAlign:"right",headerSort:!1,formatter:periodAVGFormatter},{title:"validé",field:"isvalidated",hozAlign:"center",headerSort:!1,formatter:"tickCross",formatterParams:{allowEmpty:!0,allowTruthy:!1}}]}),reportperiod.gettbldatafilter()},gettbldata:function(){let fsel=reportperiod.tblfilter.getSelectedData();fsel[0]?postData("db.cgi",{get:"staffperiods",schemata:schemata,id_period:fsel[0].id}).then(data=>{reportperiod.tbl.setData(data.result.sqldata)}):reportperiod.loadtbldata({sqldata:[]})},gettbldatafilter:function(){postData("db.cgi",{get:"periods",schemata:schemata}).then(data=>{reportperiod.tblfilter.setData(data.result.sqldata)})},reloadview:function(){reportperiod.gettbldata(),app.viewpanel("tbl_reportperiod")},add:function(){let act={fn:"add_reportperiod"};return act.schemata=schemata,showinfodlg("Ajouter Période de référence","Ajouter prochaine periode?",reportperiod.afteraddconfirm,act,'<span class="icon-Save"></span>Ajouter','<span class="icon-remove"></span>Annuler'),!1},afteraddconfirm(data){postData("db.cgi",data).then(data=>{reportperiod.gettbldata()})},generatereport:function(){let udata=reportperiod.tblfilter.getSelectedData(),sdata=reportperiod.tbl.getSelectedData(),staffexcl=[];for(var s in sdata)staffexcl.push(sdata[s].id_staff);let repdata={schemata:schemata,id_reportperiod:udata[0].id,staff_exclude:staffexcl};udata[0]&&report.generate("pot","periode_"+moment(udata[0].startdate).format("YYYYMMDD")+"-"+moment(udata[0].enddate).format("YYYYMMDD"),repdata)},datarefresh:function(){return showdataloaddlg("",'<div class="xxlarge">Attendez s.v.p.!</div>'),postData("db.cgi",{fn:"refresh_periods",schemata:schemata}).then(data=>{reportperiod.gettbldata(),closedataloaddlg()}).catch(e=>{closedataloaddlg()}),!1},periodrestsum:function(values,data,calcParams){let mts=0;for(let m in values)mts+=timecalc.IntervalToMinutes(values[m]);return timecalc.MinutesToInterval(mts)},setview:function(viewname){"periods"==viewname&&reportperiod.gettbldata(),reportperiod.current_view=viewname,app.viewpanel(viewname)},editplan(){let sel;reportperiod.tbl.getSelectedData()[0]&&staffperiodweeks.loadplan(reportperiod.tbl)}},periodRecupFormatter=function(cell,formatterParams){return null!=cell._cell.row.data.transferedhours&&cell.getValue()<cell._cell.row.data.transferedhours&&(cell.getElement().style.color="red"),cell.getValue()},periodTotalFormatter=function(cell,formatterParams){return cell._cell.row.data.hoursdiff.startsWith("-")&&(cell.getElement().style.color="red"),cell.getValue()},periodAVGFormatter=function(cell,formatterParams){return cell._cell.row.data.hoursdiff.startsWith("-")&&(cell.getElement().style.color="red"),cell.getValue()};
\ No newline at end of file
+function initpage(){schemata=app.getCurrentSchemata(),reportperiod.inittable(),staffperiodweeks.inittable()}let currentview=null,reportperiod={tblfilter:null,tbl:null,selected:null,current_view:"periods",choices:{},initform:function(){},inittable:function(){reportperiod.tblfilter=new Tabulator("#tbl_reportperiodfilter",{height:"calc(100vh - 56px)",layout:"fitDataStretch",selectable:1,rowClick:function(t,e){reportperiod.setview("periods")},rowContext:function(t,e){t.preventDefault()},columns:[{title:"Début",field:"startdate",headerSort:"datetime",formatter:"datetime",resizable:!1,formatterParams:{inputFormat:"YYYY-MM-DD",outputFormat:"DD.MM.YYYY",invalidPlaceholder:""}},{title:"Fin",field:"enddate",sorter:"datetime",resizable:!1,formatter:"datetime",formatterParams:{inputFormat:"YYYY-MM-DD",outputFormat:"DD.MM.YYYY",invalidPlaceholder:""}}]}),reportperiod.tbl=new Tabulator("#tbl_reportperiod",{height:"calc(100vh - 56px)",layout:"fitDataFill",selectable:1,rowContext:function(t,e){t.preventDefault()},groupBy:["groupname"],groupStartOpen:[!0],groupClosedShowCalcs:!0,groupHeader:[function(t,e,r){return t}],columns:[{title:"Département",field:"groupname",visible:!1},{title:'<span style="font-size: 9pt;">Prénom</span>',field:"prename",headerSort:!1},{title:'<span style="font-size: 9pt;">Nom</span>',field:"surname",headerSort:!1},{title:'<span style="font-size: 9pt;">Contrat</span>',field:"contracthours",hozAlign:"right",headerSort:!1},{title:'<span style="font-size: 9pt;">Travail</span>',field:"workhours",hozAlign:"right",headerSort:!1},{title:'<span style="font-size: 9pt;">Récup</span>',field:"recuperationhours",hozAlign:"right",headerSort:!1,formatter:periodRecupFormatter},{title:'<span style="font-size: 9pt;">Congé</span>',field:"vacancynormal",hozAlign:"right",headerSort:!1},{title:'<span style="font-size: 9pt;">Congé<br/>maladie</span>',field:"vacancyill",hozAlign:"right",headerSort:!1},{title:'<span style="font-size: 9pt;">Total</span>',field:"totalhours",hozAlign:"right",headerSort:!1,formatter:periodTotalFormatter},{title:'<span style="font-size: 9pt;">Décompte<br/>reporté</span>',field:"transferedhours",hozAlign:"right",headerSort:!1},{title:'<span style="font-size: 9pt;">h. suppl.<br/>payés</span>',field:"payedhours",hozAlign:"right",headerSort:!1,headerVertical:!0},{title:'<span style="font-size: 9pt;">Décompte<br/>fin POT</span>',field:"hoursdiff",hozAlign:"right",headerSort:!1},{title:'<span style="font-size: 9pt;">suppl.<br/>+44h</span>',field:"suppvacancy44hours",hozAlign:"right",headerSort:!1,headerVertical:!0},{title:'<span style="font-size: 9pt;">suppl.<br/>trav. dim.</span>',field:"suppvacancysunwork",hozAlign:"right",headerSort:!1,headerVertical:!0},{title:"moy.<br/>hebd.",field:"avgtotalweekhours",hozAlign:"right",headerSort:!1,formatter:periodAVGFormatter},{title:"validé",field:"isvalidated",hozAlign:"center",headerSort:!1,formatter:"tickCross",formatterParams:{allowEmpty:!0,allowTruthy:!1}}]}),reportperiod.gettbldatafilter()},gettbldata:function(){let t=reportperiod.tblfilter.getSelectedData()
+t[0]?postData("db.cgi",{get:"staffperiods",schemata:schemata,id_period:t[0].id}).then(t=>{reportperiod.tbl.setData(t.result.sqldata)}):reportperiod.loadtbldata({sqldata:[]})},gettbldatafilter:function(){postData("db.cgi",{get:"periods",schemata:schemata}).then(t=>{reportperiod.tblfilter.setData(t.result.sqldata)})},reloadview:function(){reportperiod.gettbldata(),app.viewpanel("tbl_reportperiod")},add:function(){let t={fn:"add_reportperiod"}
+return t.schemata=schemata,showinfodlg("Ajouter Période de référence","Ajouter prochaine periode?",reportperiod.afteraddconfirm,t,'<span class="icon-Save"></span>Ajouter','<span class="icon-remove"></span>Annuler'),!1},afteraddconfirm(t){postData("db.cgi",t).then(t=>{reportperiod.gettbldata()})},generatereport:function(){let t=reportperiod.tblfilter.getSelectedData(),e=reportperiod.tbl.getSelectedData(),r=[]
+for(var a in e)r.push(e[a].id_staff)
+let o={schemata:schemata,id_reportperiod:t[0].id,staff_exclude:r}
+t[0]&&report.generate("pot","periode_"+moment(t[0].startdate).format("YYYYMMDD")+"-"+moment(t[0].enddate).format("YYYYMMDD"),o)},datarefresh:function(){return showdataloaddlg("",'<div class="xxlarge">Attendez s.v.p.!</div>'),postData("db.cgi",{fn:"refresh_periods",schemata:schemata}).then(t=>{reportperiod.gettbldata(),closedataloaddlg()}).catch(t=>{closedataloaddlg()}),!1},periodrestsum:function(t,e,r){let a=0
+for(let e in t)a+=timecalc.IntervalToMinutes(t[e])
+return timecalc.MinutesToInterval(a)},setview:function(t){"periods"==t&&reportperiod.gettbldata(),reportperiod.current_view=t,app.viewpanel(t)},editplan(){let t=reportperiod.tbl.getSelectedData()
+t[0]&&staffperiodweeks.loadplan(reportperiod.tbl)}},periodRecupFormatter=function(t,e){return null!=t._cell.row.data.transferedhours&&t.getValue()<t._cell.row.data.transferedhours&&(t.getElement().style.color="red"),t.getValue()},periodTotalFormatter=function(t,e){return t._cell.row.data.hoursdiff.startsWith("-")&&(t.getElement().style.color="red"),t.getValue()},periodAVGFormatter=function(t,e){return t._cell.row.data.hoursdiff.startsWith("-")&&(t.getElement().style.color="red"),t.getValue()}
choices:{"id_vacancytype":null,"id_recuperationtype":null,"id_workplan":null},
disablesave: false,
initform: function(){
+ console.log("staffperiodweeks");
staffperiodweeks.choices["id_vacancytype"] = new SlimSelect({
select: "#id_vacancytype",
showSearch: false,
staffperiodweeks.parenttbl = parenttbl;
let selrp = staffperiodweeks.parenttbl.getSelectedData();
if (selrp[0]) {
- /*![% IF session.usergroup == 'temleader' %] */
+ /* @preserve[% IF session.usergroup == 'temleader' %] */
if (selrp[0].isvalidated == "1"){
document.getElementById("tbl_editweeks").style.display = 'none';
} else {
document.getElementById("tbl_editweeks").style.display = 'inline';
}
- /*![% ELSE %] */
+ /* @preserve[% ELSE %] */
document.getElementById("tbl_editweeks").style.display = 'inline';
- /*![% END %] */
+ /* @preserve[% END %] */
document.getElementById("periodtitle").innerHTML=" Période " + moment(selrp[0].startdate).format('DD.MM.YYYY') + "-" + moment(selrp[0].enddate).format('DD.MM.YYYY');
document.getElementById("stafftitle").innerHTML= selrp[0].staffname + "(" + selrp[0].groupname + ")";
staffperiodweeks.gettbldata();
s2 = timecalc.TimeToMinutes(ods2.value);
e2 = timecalc.TimeToMinutes(ode2.value);
if (e2 < s2) {e2 = e2 + 1440;}
- console.log("H2 " + e2 + " - " + s2);
+ //("H2 " + e2 + " - " + s2);
mt2 = e2-s2;
}
if (ope1.value && ops1.value){
}
},
getwptemplates: function(){
- postData("db.cgi",{"get":"workplanlist","schemata":schemata}).then(data => {dataform.fillselectlist(staffperiodweeks.choices["id_workplan"],data.result.sqldata,'id','dspworkplandetail');});
+ postData("db.cgi",{"get":"workplanlist","schemata":schemata}).then(data => {
+ console.log(data.result);
+ dataform.fillselectlist(staffperiodweeks.choices["id_workplan"],data.result.sqldata,'id','dspworkplandetail');
+
+ }).catch(e => {console.log(e)});
},
replacedays: function(){
let sel = staffperiodweeks.tbl.getSelectedData();
-let staffperiodweeks={tbl:null,today:null,tbltimetracker:null,currentday:null,dayrefdata:null,parenttbl:null,copy_id:null,weekdata:null,daylimits:null,selectedid:null,vacancytypes:{},recuperationtypes:{},choices:{id_vacancytype:null,id_recuperationtype:null,id_workplan:null},disablesave:!1,initform:function(){staffperiodweeks.choices.id_vacancytype=new SlimSelect({select:"#id_vacancytype",showSearch:!1,allowDeselect:!0,deselectLabel:'<span class="text-red">✖</span>',onChange:function(){staffperiodweeks.setvacancyhours()}}),staffperiodweeks.choices.id_workplan=new SlimSelect({select:"#id_workplan",showSearch:!1}),staffperiodweeks.choices.id_recuperationtype=new SlimSelect({select:"#id_recuperationtype",showSearch:!1,allowDeselect:!0,deselectLabel:'<span class="text-red">✖</span>',onChange:function(){staffperiodweeks.setrecuperationhours()}}),staffperiodweeks.getvacancy(),staffperiodweeks.getrecuperation(),staffperiodweeks.getdefaultdaylimits();let tfields=document.getElementsByClassName("timefield");for(let i=0;i<tfields.length;i++)"vacancyhours"!=tfields[i].id&&"recuperationhours"!=tfields[i].id&&"workhours"!=tfields[i].id||tfields[i].addEventListener("change",(function(){staffperiodweeks.checkdaytime()}));document.getElementById("id_vacancytype").addEventListener("change",(function(event){})),document.getElementById("id_recuperationtype").addEventListener("change",(function(event){})),staffperiodweeks.getwptemplates(),document.getElementById("keepvacancy").setAttribute("checked",!0),document.getElementById("keeprecuperation").setAttribute("checked",!0)},inittable:function(){staffperiodweeks.tbl=new Tabulator("#tbl_staffperiodweeks",{height:"calc(100vh - 112px)",layout:"fitDataFill",selectable:!0,selectableRangeMode:"click",rowContext:function(e,row){e.preventDefault()},groupBy:["weekstart"],groupStartOpen:[!0],groupClosedShowCalcs:!0,groupHeader:[function(value,count,data){return staffperiodweeks.weekdata&&staffperiodweeks.weekdata[value]?staffperiodweeks.weekdata[value].calyear+" - "+staffperiodweeks.weekdata[value].calweek+" ("+moment(staffperiodweeks.weekdata[value].weekstart).format("DD.MM.YYYY")+" - "+moment(staffperiodweeks.weekdata[value].weekend).format("DD.MM.YYYY")+") (Contrat: "+staffperiodweeks.weekdata[value].contracthours+"h / "+parseInt(staffperiodweeks.weekdata[value].contractworkdays)+" jours)":value}],columns:[{title:"date",field:"daydate",hozAlign:"right",headerSort:"datetime",formatter:dateFormatter},{title:"heures de<br/>travail",field:"dspworkdata",headerSort:!1,hozAlign:"center",formatter:worktimeFormatter},{title:"heures de<br/>pause",field:"dsppausedata",headerSort:!1,hozAlign:"center",formatter:sizeFormatter},{title:"total<br/>pause",field:"timepause",headerSort:!1,hozAlign:"center"},{title:"Coup.",field:"interruptionhours",headerSort:!1,hozAlign:"center",formatter:interruptFormatter},{title:"Congé",field:"vacancyhours",headerSort:!1,hozAlign:"center",formatter:vacancyformatter,bottomCalc:staffperiodweeks.setweekvacancyhours},{title:"Récup",field:"recuperationhours",hozAlign:"center",headerSort:!1,formatter:recupformatter,bottomCalc:staffperiodweeks.setweekrecuperationhours},{title:"Total",field:"dayhours",hozAlign:"center",headerSort:!1,formatter:totalFormatter,bottomCalc:staffperiodweeks.setweektotalhours,bottomCalcFormatter:"html"},{title:"diff<br/>contrat",field:"diffhours",hozAlign:"center",formatter:nullFormatter,headerSort:!1,bottomCalc:staffperiodweeks.setweekdiffhours},{title:"moy.<br/>hebd.",field:"avgweekhours",hozAlign:"center",headerSort:!1,formatter:nullFormatter,bottomCalc:staffperiodweeks.setavgweekhours},{title:"heures libres<br/>après trav",field:"freehoursafter",hozAlign:"center",formatter:freetimeFormatter,headerSort:!1},{title:"pointages",field:"trackedtime",hozAlign:"center",formatter:timetrackFormatter,headerSort:!1}]}),staffperiodweeks.initform(),staffperiodweeks.inittimetracktable()},inittimetracktable:function(){staffperiodweeks.tbltimetracker=new Tabulator("#tbl_daytimetracker",{height:"400px",layout:"fitDataFill",selectable:!0,selectableRangeMode:"click",dataEdited:function(data){staffperiodweeks.timerowtracktotal(data)},rowContext:function(e,row){e.preventDefault()},columns:[{title:"Entrée",field:"stamp_in",headerSort:!1,hozAlign:"left",width:80,editor:"input",editorParams:{mask:"99:99",elementAttributes:{maxlength:5}}},{title:"Sortie",field:"stamp_out",headerSort:!1,hozAlign:"left",width:80,editor:"input",editorParams:{mask:"99:99",elementAttributes:{maxlength:5}}},{title:"Total",field:"total",headerSort:!1,hozAlign:"left",width:90,formatter:boldFormatter,bottomCalc:staffperiodweeks.settrackdaytotal,bottomCalcFormatter:"html"}]})},gettbldata:function(){staffperiodweeks.today=moment(new Date).format("YYYY-MM-DD");let selrp=staffperiodweeks.parenttbl.getSelectedData(),weekmonstart=moment(selrp[0].startdate).startOf("isoWeek").format("YYYY-MM-DD"),weeksunend=moment(selrp[0].enddate).endOf("isoWeek").format("YYYY-MM-DD");postData("db.cgi",{get:"periodweeksums",schemata:schemata,id_staff:selrp[0].id_staff,date_start:weekmonstart,date_end:weeksunend}).then(data=>{staffperiodweeks.weekdata=data.result.data,postData("db.cgi",{get:"perioddays",schemata:schemata,id_staff:selrp[0].id_staff,date_start:weekmonstart,date_end:weeksunend}).then(data=>{data&&data.result.sqldata&&staffperiodweeks.tbl.setData(data.result.sqldata).then(dd=>{null!=staffperiodweeks.selectedid&&(staffperiodweeks.tbl.selectRow(staffperiodweeks.selectedid),staffperiodweeks.tbl.scrollToRow(staffperiodweeks.selectedid,"center",!1))})})})},loadplan:function(parenttbl){staffperiodweeks.selectedrow=null,staffperiodweeks.parenttbl=parenttbl;let selrp=staffperiodweeks.parenttbl.getSelectedData();selrp[0]&&(
-/*![% IF session.usergroup == 'temleader' %] */
-"1"==selrp[0].isvalidated?document.getElementById("tbl_editweeks").style.display="none":document.getElementById("tbl_editweeks").style.display="inline"
-/*![% ELSE %] */,document.getElementById("tbl_editweeks").style.display="inline",
-/*![% END %] */
-document.getElementById("periodtitle").innerHTML=" Période "+moment(selrp[0].startdate).format("DD.MM.YYYY")+"-"+moment(selrp[0].enddate).format("DD.MM.YYYY"),document.getElementById("stafftitle").innerHTML=selrp[0].staffname+"("+selrp[0].groupname+")",staffperiodweeks.gettbldata(),app.viewpanel("staffperiodweeks"))},setweekworkhours:function(values,data,calcParams){return staffperiodweeks.weekdata&&staffperiodweeks.weekdata[data[0].weekstart]?staffperiodweeks.weekdata[data[0].weekstart].workhours:""},setweekvacancyhours:function(values,data,calcParams){return staffperiodweeks.weekdata&&staffperiodweeks.weekdata[data[0].weekstart]?staffperiodweeks.weekdata[data[0].weekstart].vacancyhours:""},setweekrecuperationhours:function(values,data,calcParams){return staffperiodweeks.weekdata&&staffperiodweeks.weekdata[data[0].weekstart]?staffperiodweeks.weekdata[data[0].weekstart].recuperationhours:""},setweektotalhours:function(values,data,calcParams){if(staffperiodweeks.weekdata&&staffperiodweeks.weekdata[data[0].weekstart]){var maxcolor="";return staffperiodweeks.weekdata[data[0].weekstart].totalhours>staffperiodweeks.weekdata[data[0].weekstart].defaultweekhours&&(maxcolor="color: orange;"),staffperiodweeks.weekdata[data[0].weekstart].totalhours>staffperiodweeks.weekdata[data[0].weekstart].maxweekhours&&(maxcolor="color: red;"),'<span style="'+maxcolor+'">'+staffperiodweeks.weekdata[data[0].weekstart].totalhours+"</span>"}return""},setweekdiffhours:function(values,data,calcParams){return staffperiodweeks.weekdata&&staffperiodweeks.weekdata[data[0].weekstart]?staffperiodweeks.weekdata[data[0].weekstart].diffhours:""},setavgweekhours:function(values,data,calcParams){return staffperiodweeks.weekdata&&staffperiodweeks.weekdata[data[0].weekstart]?staffperiodweeks.weekdata[data[0].weekstart].avgtotalhours:""},edit:function(){dataform.cleanform2("staffreportperioddays",staffperiodweeks.choices);let cday=staffperiodweeks.tbl.getSelectedData();staffperiodweeks.dayrefdata=null,cday[0]&&(staffperiodweeks.selectedid=cday[0].id,staffperiodweeks.disablesave=!1,document.getElementById("staffreportperioddays_errmsg").innerHTML="",staffperiodweeks.currentday=cday[0],document.getElementById("infomaxdayhours").value="",document.getElementById("infomaxweekhours").value="",document.getElementById("infomaxinterruptionhours").value="",document.getElementById("infomindailyrecuperation").value="",document.getElementById("infofreetimebefore").value="",document.getElementById("infofreetimeafter").value="",dataform.fillformbydataclass2("staffreportperioddays",staffperiodweeks.choices,staffperiodweeks.currentday),document.getElementById("display_date").innerHTML=moment(staffperiodweeks.currentday.daydate).format("dddd , DD.MM.YYY"),postData("db.cgi",{fn:"getworktimelimits",daydate:cday[0].daydate,id_staff:cday[0].id_staff,schemata:schemata}).then(data=>{data.result&&(staffperiodweeks.dayrefdata=data.result,document.getElementById("infomaxdayhours").value=data.result.maxdayhours,document.getElementById("infomaxinterruptionhours").value=data.result.maxinterruptionhours,document.getElementById("infomindailyrecuperation").value=data.result.mindailyrecuperation,document.getElementById("infomaxweekhours").value=data.result.maxweekhours,document.getElementById("infofreetimebefore").value=data.result.tiembefore,document.getElementById("infofreetimeafter").value=data.result.timeafter,staffperiodweeks.calcfreetime()),app.viewdialog("staffreportperioddays")}).catch(e=>{console.log(e)}))},save:function(){let datamsg="",wpdata=dataform.getformcontent("staffreportperioddays");return document.getElementById("dlg_staffreportperioddays").style.display="none",delete wpdata.staffreportperioddays_workhours,delete wpdata.staffreportperioddays_interruptionhours,delete wpdata.staffreportperioddays_dayhours,wpdata.fn="saveform",wpdata.table="staffreportperioddays",wpdata.schemata=schemata,showdataloaddlg("",'<div class="xxlarge">Attendez s.v.p.!</div>'),postData("db.cgi",wpdata).then(data=>{staffperiodweeks.updateWeekHours()}).catch(e=>{closedataloaddlg()}),!1},updateWeekHours:function(){let selrp=staffperiodweeks.parenttbl.getSelectedData();postData("db.cgi",{fn:"update_staff_in_period",schemata:schemata,id_period:selrp[0].id_reportperiod,id_staff:selrp[0].id_staff}).then(data=>{staffperiodweeks.gettbldata(),dataform.formsaved({}),closedataloaddlg()}).catch(e=>{closedataloaddlg()})},getvacancy:function(){postData("db.cgi",{get:"vacancytypes",schemata:schemata}).then(data=>{for(var v in dataform.fillselectlist(staffperiodweeks.choices.id_vacancytype,data.result.sqldata,"id","vacancyname"),data.result.sqldata)staffperiodweeks.vacancytypes[data.result.sqldata[v].id]=data.result.sqldata[v]})},getrecuperation:function(){postData("db.cgi",{get:"recuperationtypes",schemata:schemata}).then(data=>{for(var r in dataform.fillselectlist(staffperiodweeks.choices.id_recuperationtype,data.result.sqldata,"id","vacancyname"),data.result.sqldata)staffperiodweeks.recuperationtypes[data.result.sqldata[r].id]=data.result.sqldata[r]})},getdefaultdaylimits:function(){postData("db.cgi",{get:"recuperationtypes",schemata:schemata}).then(data=>{staffperiodweeks.daylimits=data.result.data})},setvacancyhours:function(){staffperiodweeks.choices.id_vacancytype.selected()?document.getElementById("vacancyhours").value||(document.getElementById("vacancyhours").value=staffperiodweeks.currentday.contracthours):document.getElementById("vacancyhours").value="",staffperiodweeks.checkdaytime()},setrecuperationhours:function(){staffperiodweeks.choices.id_recuperationtype.selected()?document.getElementById("recuperationhours").value||(document.getElementById("recuperationhours").value=staffperiodweeks.currentday.contracthours):document.getElementById("recuperationhours").value="",staffperiodweeks.checkdaytime()},checkworktime:function(id){staffperiodweeks.disablesave=!1;let mt1=0,mt2=0,mtp1=0,mtp2=0,mtp=0,s1=0,e1=0,s2=0,e2=0,ps1=0,pe1=0,ps2=0,pe2=0,irupt=0,ode1=document.getElementById("timeend1"),ods1=document.getElementById("timestart1"),ode2=document.getElementById("timeend2"),ods2=document.getElementById("timestart2"),ope1=document.getElementById("pauseend1"),ops1=document.getElementById("pausestart1"),ope2=document.getElementById("pauseend2"),ops2=document.getElementById("pausestart2"),odp=document.getElementById("timepause"),oirupt=document.getElementById("interruptionhours"),owkh=document.getElementById("workhours"),ppy=document.getElementById("payedpause"),msg="";ode1.value&&ods1.value&&(s1=timecalc.TimeToMinutes(ods1.value),e1=timecalc.TimeToMinutes(ode1.value),e1<s1&&(e1+=1440),mt1=e1-s1),ode2.value&&ods2.value&&(s2=timecalc.TimeToMinutes(ods2.value),e2=timecalc.TimeToMinutes(ode2.value),e2<s2&&(e2+=1440),console.log("H2 "+e2+" - "+s2),mt2=e2-s2),ope1.value&&ops1.value&&(ps1=timecalc.TimeToMinutes(ops1.value),pe1=timecalc.TimeToMinutes(ope1.value),pe1<ps1&&(pe1+=1440),mtp1=pe1-ps1,ps1<s1&&(staffperiodweeks.disablesave=!0,msg="les pauses doivent être dans les heures de travail!"),pe1>e1&&(staffperiodweeks.disablesave=!0,msg="les pauses doivent être dans les heures de travail!")),ope2.value&&ops2.value&&(ps2=timecalc.TimeToMinutes(ops2.value),pe2=timecalc.TimeToMinutes(ope2.value),pe2<ps2&&(pe2+=1440),mtp2=pe2-ps2,ps2<s2&&(staffperiodweeks.disablesave=!0,msg="les pauses doivent être dans les heures de travail!"),pe2>e2&&(staffperiodweeks.disablesave=!0,msg="les pauses doivent être dans les heures de travail!")),!0===staffperiodweeks.disablesave?document.getElementById("staffreportperioddays_errmsg").innerHTML='<div class="panel error-panel">'+msg+"</div>":document.getElementById("staffreportperioddays_errmsg").innerHTML="",mtp=mtp1+mtp2,document.getElementById("timepause").value=timecalc.MinutesToTime(mtp),mt2>0&&mt1>0?(irupt=timecalc.TimeToMinutes(ods2.value)-timecalc.TimeToMinutes(ode1.value),oirupt.value=timecalc.MinutesToTime(irupt),irupt>staffperiodweeks.dayrefdata.maxinterruptionhours?(oirupt.classList.remove("text-black"),oirupt.classList.add("text-red")):(oirupt.classList.remove("text-red"),oirupt.classList.add("text-black"))):(oirupt.classList.remove("text-red"),oirupt.classList.add("text-black"),oirupt.value="00:00"),ppy.checked&&!0===ppy.checked?(owkh.value=timecalc.MinutesToTime(mt1+mt2),console.log(mt1+" + "+mt2)):(owkh.value=timecalc.MinutesToTime(mt1+mt2-mtp),console.log(mt1+" + "+mt2-" - "+mtp)),staffperiodweeks.checkdaytime()},checkdaytime:function(){let wktime=0,vactime=0,reptime=0,owkh=document.getElementById("workhours"),ovach=document.getElementById("vacancyhours"),orech=document.getElementById("recuperationhours"),odyh=document.getElementById("dayhours"),oirupt=document.getElementById("interruptionhours");owkh.value&&(wktime=timecalc.TimeToMinutes(owkh.value)),ovach.value&&(vactime=timecalc.TimeToMinutes(ovach.value)),orech.value&&(reptime=timecalc.TimeToMinutes(orech.value));let fulldaytime=wktime+vactime+reptime;odyh.value=timecalc.MinutesToTime(fulldaytime),fulldaytime>timecalc.TimeToMinutes(staffperiodweeks.dayrefdata.maxdayhours)?(odyh.classList.remove("text-black"),odyh.classList.add("text-red"),staffperiodweeks.disablesave=!0):(odyh.classList.remove("text-red"),odyh.classList.add("text-black"),staffperiodweeks.disablesave=!1),staffperiodweeks.calcfreetime()},calcfreetime:function(){let startdatetime=document.getElementById("timestart1").value;if(""==startdatetime&&(startdatetime=document.getElementById("timestart2").value),staffperiodweeks.dayrefdata.datebefore&&""!=startdatetime){var mmtodaystart=new moment(staffperiodweeks.currentday.daydate+" "+startdatetime+":00","YYYY-MM-DD hh:mm:ss"),mmendbefore=new moment(staffperiodweeks.dayrefdata.datebefore+" "+staffperiodweeks.dayrefdata.timebefore+":00","YYYY-MM-DD hh:mm"),duration=moment.duration(mmendbefore.diff(mmtodaystart)).as("minutes");duration=Math.abs(duration),document.getElementById("infofreetimebefore").value=timecalc.MinutesToInterval(duration)}else document.getElementById("infofreetimebefore").value="";let enddatetime=document.getElementById("timeend2").value;if(""==enddatetime&&(enddatetime=document.getElementById("timeend1").value),this.dayrefdata.dateafter&&""!=enddatetime){var mmtodayend=new moment(staffperiodweeks.currentday.daydate+" "+enddatetime+":00","YYYY-MM-DD hh:mm:ss"),mmstartafter=new moment(staffperiodweeks.dayrefdata.dateafter+" "+staffperiodweeks.dayrefdata.timeafter+":00","YYYY-MM-DD hh:mm:ss"),duration=moment.duration(mmstartafter.diff(mmtodayend)).as("minutes");document.getElementById("infofreetimeafter").value=timecalc.MinutesToInterval(duration)}else document.getElementById("infofreetimeafter").value=""},copy:function(){let sel=staffperiodweeks.tbl.getSelectedData();sel[0]&&(staffperiodweeks.copy_id=sel[0].id,document.getElementById("spwpasteval").innerHTML=moment(sel[0].daydate).format("DD.MM.YYYY"))},paste:function(){let sel=staffperiodweeks.tbl.getSelectedData(),selrp=staffperiodweeks.parenttbl.getSelectedData();if(sel.length>0){for(staffperiodweeks.selectedid=sel[0].id,asel=[],s=0;s<sel.length;s++)asel.push(sel[s].id);postData("db.cgi",{schemata:schemata,fn:"clone_staffperiodweekdayhours",copyid:staffperiodweeks.copy_id,id_staff:selrp[0].id_staff,id_period:selrp[0].id_reportperiod,pasteids:asel}).then(data=>{staffperiodweeks.gettbldata()})}},clean:function(){let sel=staffperiodweeks.tbl.getSelectedData(),selrp=staffperiodweeks.parenttbl.getSelectedData();if(sel.length>0){for(staffperiodweeks.selectedid=sel[0].id,asel=[],s=0;s<sel.length;s++)asel.push(sel[s].id);postData("db.cgi",{schemata:schemata,fn:"clean_staffperiodday",id_staff:selrp[0].id_staff,id_period:selrp[0].id_reportperiod,ids:asel}).then(data=>{staffperiodweeks.gettbldata()})}},replacedlg:function(){let sel;staffperiodweeks.tbl.getSelectedData().length>0&&(document.getElementById("dlg_replacestaffdayworkplan").style.display="block")},getwptemplates:function(){postData("db.cgi",{get:"workplanlist",schemata:schemata}).then(data=>{dataform.fillselectlist(staffperiodweeks.choices.id_workplan,data.result.sqldata,"id","dspworkplandetail")})},replacedays:function(){let sel=staffperiodweeks.tbl.getSelectedData(),selrp=staffperiodweeks.parenttbl.getSelectedData();if(sel.length>0){staffperiodweeks.selectedid=sel[0].id;let id_workplan=staffperiodweeks.choices.id_workplan.selected(),keepvac=document.getElementById("keepvacancy").checked,keeprec=document.getElementById("keeprecuperation").checked;for(asel=[],s=0;s<sel.length;s++)asel.push(sel[s].id);postData("db.cgi",{schemata:schemata,fn:"replace_staffperiodweekdayhours",id_staff:selrp[0].id_staff,id_period:selrp[0].id_reportperiod,id_workplan:id_workplan,keepvac:keepvac,keeprec:keeprec,replaceids:asel}).then(data=>{document.getElementById("dlg_replacestaffdayworkplan").style.display="none",staffperiodweeks.gettbldata()}).catch(e=>{console.log("ERROR replaceids",e)})}},savetimetracker:function(){let sel=staffperiodweeks.tbl.getSelectedData(),flds={fn:"savetrackdatasets"};flds.schemata=schemata,flds.id_staff=sel[0].id_staff,flds.daydate=sel[0].daydate;let timetrackdata=staffperiodweeks.tbltimetracker.getData();staffperiodweeks.selectedid=sel[0].id,trdata=[];for(var i=0;i<timetrackdata.length;i++)if(timetrackdata[i].total>"00:00"){let stpoutday=sel[0].daydate;timetrackdata[i].stamp_in>timetrackdata[i].stamp_out&&(stoutday=monment(stpoutday).add(1,"d").format("YYYY-MM-DD")),trdata.push({id:timetrackdata[i].id,stamp_in:sel[0].daydate+" "+timetrackdata[i].stamp_in+":00",stamp_out:stpoutday+" "+timetrackdata[i].stamp_out+":00"})}flds.timetrackdata=trdata,postData("db.cgi",flds).then(data=>{staffperiodweeks.gettbldata(),document.getElementById("dlg_stafftimetracker").style.display="none"}).catch(e=>{document.getElementById("dlg_stafftimetracker").style.display="none"})},edittimetracker:function(){staffperiodweeks.inittimetracktable();let sel=staffperiodweeks.tbl.getSelectedData(),selrp=staffperiodweeks.parenttbl.getSelectedData();sel.length>0&&sel[0].daydate<staffperiodweeks.today&&(staffperiodweeks.selectedid=sel[0].id,postData("db.cgi",{get:"gettrackday",schemata:schemata,id_staff:sel[0].id_staff,daydate:sel[0].daydate}).then(data=>{staffperiodweeks.tbltimetracker.setData(data.result.sqldata),document.getElementById("dlg_stafftimetracker_staffname").innerHTML=selrp[0].staffname,document.getElementById("dlg_stafftimetracker_date").innerHTML=moment(sel[0].daydate).format("DD.MM.YYYY"),document.getElementById("dlg_stafftimetracker").style.display="block"}))},ttadd:function(){let sel=staffperiodweeks.tbl.getSelectedData();postData("db.cgi",{get:"emptytrackdataset",schemata:schemata,id_staff:sel[0].id_staff,daydate:sel[0].daydate}).then(data=>{staffperiodweeks.tbltimetracker.addRow(data.result.sqldata,!0)})},ttremove:function(){let sel=staffperiodweeks.tbltimetracker.getSelectedRows();staffperiodweeks.tbltimetracker.deleteRow(sel)},settrackdaytotal:function(values,data,calcParams){var calc=0;return values.forEach((function(value){calc+=timecalc.TimeToMinutes(value)})),timecalc.MinutesToTime(calc)},timerowtracktotal:function(data){let stpin=timecalc.TimeToMinutes(timecalc.StringToTime(data[0].stamp_in)),stpout=timecalc.TimeToMinutes(timecalc.StringToTime(data[0].stamp_out));stpoutcalc=stpout,stpin>stpoutcalc&&(stpoutcalc+=1500);let total=stpoutcalc-stpin;staffperiodweeks.tbltimetracker.updateData([{id:data[0].id,stamp_in:timecalc.MinutesToTime(stpin),stamp_out:timecalc.MinutesToTime(stpout),total:timecalc.MinutesToTime(total)}])}},nullFormatter=function(cell,formatterParams){return cell.getElement().style.backgroundColor="grey",""},boldFormatter=function(cell,formatterParams){return cell.getElement().style.fontWeight="bold",cell.getValue()},totalFormatter=function(cell,formatterParams){return cell.getElement().style.fontWeight="bold",cell.getValue()>"00:00"&&(cell.getValue()>cell._cell.row.data.defaultdayhours&&(cell.getElement().style.color="orange"),cell.getValue()>cell._cell.row.data.maxdayhours&&(cell.getElement().style.color="red")),cell.getValue()},interruptFormatter=function(cell,formatterParams){return cell.getValue()>"00:00"&&cell.getValue()>cell._cell.row.data.maxinterruptionhours&&(cell.getElement().style.color="red"),cell.getValue()},sizeFormatter=function(cell,formatterParams){return cell.getElement().style.fontSize="10pt",cell.getValue()},worktimeFormatter=function(cell,formatterParams){return""!=cell.getValue()?(cell.getElement().style.fontSize="10pt",cell.getValue()):null==cell._cell.row.data.dayhours?"jour de repos":cell.getValue()},freetimeFormatter=function(cell,formatterParams){return cell.getElement().style.color="grey",cell.getValue()>"00:00"&&5==cell.getValue().length&&cell.getValue()<cell._cell.row.data.mindailyrecuperation&&(cell.getElement().style.color="red"),cell.getValue()},vacancyformatter=function(cell,formatterParams){return cell.getValue()>"00:00"&&staffperiodweeks.vacancytypes[cell._cell.row.data.id_vacancytype]?(cell.getElement().style.backgroundColor=staffperiodweeks.vacancytypes[cell._cell.row.data.id_vacancytype].color,cell.getValue()+"<br/>"+staffperiodweeks.vacancytypes[cell._cell.row.data.id_vacancytype].vacancyname):cell.getValue()},recupformatter=function(cell,formatterParams){return cell.getValue()>"00:00"&&staffperiodweeks.recuperationtypes[cell._cell.row.data.id_recuperationtype]?(cell.getElement().style.backgroundColor=staffperiodweeks.recuperationtypes[cell._cell.row.data.id_recuperationtype].color,cell.getValue()+"<br/>"+staffperiodweeks.recuperationtypes[cell._cell.row.data.id_recuperationtype].vacancyname):cell.getValue()},dateFormatter=function(cell,formatterParams){return null!=cell._cell.row.data.vacancyname?moment(cell.getValue()).format("dd, DD.MM.YYYY")+"<br/>"+cell._cell.row.data.vacancyname:moment(cell.getValue()).format("dd, DD.MM.YYYY")},timetrackFormatter=function(cell,formatterParams){return null==cell.getValue()&&cell._cell.row.data.daydate<staffperiodweeks.today&&null!=cell._cell.row.data.dayhours?(cell.getElement().style.color="red","00:00"):(cell._cell.row.data.daydate<staffperiodweeks.today&&cell._cell.row.data.incompletetrack>0&&(cell.getElement().style.color="orange"),cell.getValue())};
\ No newline at end of file
+let staffperiodweeks={tbl:null,today:null,tbltimetracker:null,currentday:null,dayrefdata:null,parenttbl:null,copy_id:null,weekdata:null,daylimits:null,selectedid:null,vacancytypes:{},recuperationtypes:{},choices:{id_vacancytype:null,id_recuperationtype:null,id_workplan:null},disablesave:!1,initform:function(){staffperiodweeks.choices["id_vacancytype"]=new SlimSelect({select:"#id_vacancytype",showSearch:!1,allowDeselect:!0,deselectLabel:'<span class="text-red">✖</span>',onChange:function(){staffperiodweeks.setvacancyhours()}}),staffperiodweeks.choices["id_workplan"]=new SlimSelect({select:"#id_workplan",showSearch:!1}),staffperiodweeks.choices["id_recuperationtype"]=new SlimSelect({select:"#id_recuperationtype",showSearch:!1,allowDeselect:!0,deselectLabel:'<span class="text-red">✖</span>',onChange:function(){staffperiodweeks.setrecuperationhours()}}),staffperiodweeks.getvacancy(),staffperiodweeks.getrecuperation(),staffperiodweeks.getdefaultdaylimits()
+let e=document.getElementsByClassName("timefield")
+for(let t=0;t<e.length;t++)"vacancyhours"!=e[t].id&&"recuperationhours"!=e[t].id&&"workhours"!=e[t].id||e[t].addEventListener("change",function(){staffperiodweeks.checkdaytime()})
+document.getElementById("id_vacancytype").addEventListener("change",function(e){}),document.getElementById("id_recuperationtype").addEventListener("change",function(e){}),staffperiodweeks.getwptemplates(),document.getElementById("keepvacancy").setAttribute("checked",!0),document.getElementById("keeprecuperation").setAttribute("checked",!0)},inittable:function(){staffperiodweeks.tbl=new Tabulator("#tbl_staffperiodweeks",{height:"calc(100vh - 112px)",layout:"fitDataFill",selectable:!0,selectableRangeMode:"click",rowContext:function(e,t){e.preventDefault()},groupBy:["weekstart"],groupStartOpen:[!0],groupClosedShowCalcs:!0,groupHeader:[function(e,t,a){return staffperiodweeks.weekdata&&staffperiodweeks.weekdata[e]?staffperiodweeks.weekdata[e].calyear+" - "+staffperiodweeks.weekdata[e].calweek+" ("+moment(staffperiodweeks.weekdata[e].weekstart).format("DD.MM.YYYY")+" - "+moment(staffperiodweeks.weekdata[e].weekend).format("DD.MM.YYYY")+") (Contrat: "+staffperiodweeks.weekdata[e].contracthours+"h / "+parseInt(staffperiodweeks.weekdata[e].contractworkdays)+" jours)":e}],columns:[{title:"date",field:"daydate",hozAlign:"right",headerSort:"datetime",formatter:dateFormatter},{title:"heures de<br/>travail",field:"dspworkdata",headerSort:!1,hozAlign:"center",formatter:worktimeFormatter},{title:"heures de<br/>pause",field:"dsppausedata",headerSort:!1,hozAlign:"center",formatter:sizeFormatter},{title:"total<br/>pause",field:"timepause",headerSort:!1,hozAlign:"center"},{title:"Coup.",field:"interruptionhours",headerSort:!1,hozAlign:"center",formatter:interruptFormatter},{title:"Congé",field:"vacancyhours",headerSort:!1,hozAlign:"center",formatter:vacancyformatter,bottomCalc:staffperiodweeks.setweekvacancyhours},{title:"Récup",field:"recuperationhours",hozAlign:"center",headerSort:!1,formatter:recupformatter,bottomCalc:staffperiodweeks.setweekrecuperationhours},{title:"Total",field:"dayhours",hozAlign:"center",headerSort:!1,formatter:totalFormatter,bottomCalc:staffperiodweeks.setweektotalhours,bottomCalcFormatter:"html"},{title:"diff<br/>contrat",field:"diffhours",hozAlign:"center",formatter:nullFormatter,headerSort:!1,bottomCalc:staffperiodweeks.setweekdiffhours},{title:"moy.<br/>hebd.",field:"avgweekhours",hozAlign:"center",headerSort:!1,formatter:nullFormatter,bottomCalc:staffperiodweeks.setavgweekhours},{title:"heures libres<br/>après trav",field:"freehoursafter",hozAlign:"center",formatter:freetimeFormatter,headerSort:!1},{title:"pointages",field:"trackedtime",hozAlign:"center",formatter:timetrackFormatter,headerSort:!1}]}),staffperiodweeks.initform(),staffperiodweeks.inittimetracktable()},inittimetracktable:function(){staffperiodweeks.tbltimetracker=new Tabulator("#tbl_daytimetracker",{height:"400px",layout:"fitDataFill",selectable:!0,selectableRangeMode:"click",dataEdited:function(e){staffperiodweeks.timerowtracktotal(e)},rowContext:function(e,t){e.preventDefault()},columns:[{title:"Entrée",field:"stamp_in",headerSort:!1,hozAlign:"left",width:80,editor:"input",editorParams:{mask:"99:99",elementAttributes:{maxlength:5}}},{title:"Sortie",field:"stamp_out",headerSort:!1,hozAlign:"left",width:80,editor:"input",editorParams:{mask:"99:99",elementAttributes:{maxlength:5}}},{title:"Total",field:"total",headerSort:!1,hozAlign:"left",width:90,formatter:boldFormatter,bottomCalc:staffperiodweeks.settrackdaytotal,bottomCalcFormatter:"html"}]})},gettbldata:function(){staffperiodweeks.today=moment(new Date).format("YYYY-MM-DD")
+let e=staffperiodweeks.parenttbl.getSelectedData(),t=moment(e[0].startdate).startOf("isoWeek").format("YYYY-MM-DD"),a=moment(e[0].enddate).endOf("isoWeek").format("YYYY-MM-DD")
+postData("db.cgi",{get:"periodweeksums",schemata:schemata,id_staff:e[0].id_staff,date_start:t,date_end:a}).then(r=>{staffperiodweeks.weekdata=r.result.data,postData("db.cgi",{get:"perioddays",schemata:schemata,id_staff:e[0].id_staff,date_start:t,date_end:a}).then(e=>{e&&e.result.sqldata&&staffperiodweeks.tbl.setData(e.result.sqldata).then(e=>{null!=staffperiodweeks.selectedid&&(staffperiodweeks.tbl.selectRow(staffperiodweeks.selectedid),staffperiodweeks.tbl.scrollToRow(staffperiodweeks.selectedid,"center",!1))})})})},loadplan:function(e){staffperiodweeks.selectedrow=null,staffperiodweeks.parenttbl=e
+let t=staffperiodweeks.parenttbl.getSelectedData()
+t[0]&&(
+/* @preserve[% IF session.usergroup == 'temleader' %] */
+"1"==t[0].isvalidated?document.getElementById("tbl_editweeks").style.display="none":document.getElementById("tbl_editweeks").style.display="inline"
+/* @preserve[% ELSE %] */,document.getElementById("tbl_editweeks").style.display="inline",
+/* @preserve[% END %] */
+document.getElementById("periodtitle").innerHTML=" Période "+moment(t[0].startdate).format("DD.MM.YYYY")+"-"+moment(t[0].enddate).format("DD.MM.YYYY"),document.getElementById("stafftitle").innerHTML=t[0].staffname+"("+t[0].groupname+")",staffperiodweeks.gettbldata(),app.viewpanel("staffperiodweeks"))},setweekworkhours:function(e,t,a){return staffperiodweeks.weekdata&&staffperiodweeks.weekdata[t[0].weekstart]?staffperiodweeks.weekdata[t[0].weekstart].workhours:""},setweekvacancyhours:function(e,t,a){return staffperiodweeks.weekdata&&staffperiodweeks.weekdata[t[0].weekstart]?staffperiodweeks.weekdata[t[0].weekstart].vacancyhours:""},setweekrecuperationhours:function(e,t,a){return staffperiodweeks.weekdata&&staffperiodweeks.weekdata[t[0].weekstart]?staffperiodweeks.weekdata[t[0].weekstart].recuperationhours:""},setweektotalhours:function(e,t,a){if(staffperiodweeks.weekdata&&staffperiodweeks.weekdata[t[0].weekstart]){var r=""
+return staffperiodweeks.weekdata[t[0].weekstart].totalhours>staffperiodweeks.weekdata[t[0].weekstart].defaultweekhours&&(r="color: orange;"),staffperiodweeks.weekdata[t[0].weekstart].totalhours>staffperiodweeks.weekdata[t[0].weekstart].maxweekhours&&(r="color: red;"),'<span style="'+r+'">'+staffperiodweeks.weekdata[t[0].weekstart].totalhours+"</span>"}return""},setweekdiffhours:function(e,t,a){return staffperiodweeks.weekdata&&staffperiodweeks.weekdata[t[0].weekstart]?staffperiodweeks.weekdata[t[0].weekstart].diffhours:""},setavgweekhours:function(e,t,a){return staffperiodweeks.weekdata&&staffperiodweeks.weekdata[t[0].weekstart]?staffperiodweeks.weekdata[t[0].weekstart].avgtotalhours:""},edit:function(){dataform.cleanform2("staffreportperioddays",staffperiodweeks.choices)
+let e=staffperiodweeks.tbl.getSelectedData()
+staffperiodweeks.dayrefdata=null,e[0]&&(staffperiodweeks.selectedid=e[0].id,staffperiodweeks.disablesave=!1,document.getElementById("staffreportperioddays_errmsg").innerHTML="",staffperiodweeks.currentday=e[0],document.getElementById("infomaxdayhours").value="",document.getElementById("infomaxweekhours").value="",document.getElementById("infomaxinterruptionhours").value="",document.getElementById("infomindailyrecuperation").value="",document.getElementById("infofreetimebefore").value="",document.getElementById("infofreetimeafter").value="",dataform.fillformbydataclass2("staffreportperioddays",staffperiodweeks.choices,staffperiodweeks.currentday),document.getElementById("display_date").innerHTML=moment(staffperiodweeks.currentday.daydate).format("dddd , DD.MM.YYY"),postData("db.cgi",{fn:"getworktimelimits",daydate:e[0].daydate,id_staff:e[0].id_staff,schemata:schemata}).then(e=>{e.result&&(staffperiodweeks.dayrefdata=e.result,document.getElementById("infomaxdayhours").value=e.result.maxdayhours,document.getElementById("infomaxinterruptionhours").value=e.result.maxinterruptionhours,document.getElementById("infomindailyrecuperation").value=e.result.mindailyrecuperation,document.getElementById("infomaxweekhours").value=e.result.maxweekhours,document.getElementById("infofreetimebefore").value=e.result.tiembefore,document.getElementById("infofreetimeafter").value=e.result.timeafter,staffperiodweeks.calcfreetime()),app.viewdialog("staffreportperioddays")}).catch(e=>{}))},save:function(){let e=dataform.getformcontent("staffreportperioddays")
+return document.getElementById("dlg_staffreportperioddays").style.display="none",delete e.staffreportperioddays_workhours,delete e.staffreportperioddays_interruptionhours,delete e.staffreportperioddays_dayhours,e["fn"]="saveform",e["table"]="staffreportperioddays",e["schemata"]=schemata,showdataloaddlg("",'<div class="xxlarge">Attendez s.v.p.!</div>'),postData("db.cgi",e).then(e=>{staffperiodweeks.updateWeekHours()}).catch(e=>{closedataloaddlg()}),!1},updateWeekHours:function(){let e=staffperiodweeks.parenttbl.getSelectedData()
+postData("db.cgi",{fn:"update_staff_in_period",schemata:schemata,id_period:e[0].id_reportperiod,id_staff:e[0].id_staff}).then(e=>{staffperiodweeks.gettbldata(),dataform.formsaved({}),closedataloaddlg()}).catch(e=>{closedataloaddlg()})},getvacancy:function(){postData("db.cgi",{get:"vacancytypes",schemata:schemata}).then(e=>{for(var t in dataform.fillselectlist(staffperiodweeks.choices["id_vacancytype"],e.result.sqldata,"id","vacancyname"),e.result.sqldata)staffperiodweeks.vacancytypes[e.result.sqldata[t].id]=e.result.sqldata[t]})},getrecuperation:function(){postData("db.cgi",{get:"recuperationtypes",schemata:schemata}).then(e=>{for(var t in dataform.fillselectlist(staffperiodweeks.choices["id_recuperationtype"],e.result.sqldata,"id","vacancyname"),e.result.sqldata)staffperiodweeks.recuperationtypes[e.result.sqldata[t].id]=e.result.sqldata[t]})},getdefaultdaylimits:function(){postData("db.cgi",{get:"recuperationtypes",schemata:schemata}).then(e=>{staffperiodweeks.daylimits=e.result.data})},setvacancyhours:function(){staffperiodweeks.choices["id_vacancytype"].selected()?document.getElementById("vacancyhours").value||(document.getElementById("vacancyhours").value=staffperiodweeks.currentday.contracthours):document.getElementById("vacancyhours").value="",staffperiodweeks.checkdaytime()},setrecuperationhours:function(){staffperiodweeks.choices["id_recuperationtype"].selected()?document.getElementById("recuperationhours").value||(document.getElementById("recuperationhours").value=staffperiodweeks.currentday.contracthours):document.getElementById("recuperationhours").value="",staffperiodweeks.checkdaytime()},checkworktime:function(e){staffperiodweeks.disablesave=!1
+let t=0,a=0,r=0,s=0,d=0,o=0,i=0,l=0,n=0,c=0,f=0,u=0,m=0,p=0,k=document.getElementById("timeend1"),w=document.getElementById("timestart1"),y=document.getElementById("timeend2"),g=document.getElementById("timestart2"),h=document.getElementById("pauseend1"),v=document.getElementById("pausestart1"),b=document.getElementById("pauseend2"),_=document.getElementById("pausestart2"),E=(document.getElementById("timepause"),document.getElementById("interruptionhours")),D=document.getElementById("workhours"),M=document.getElementById("payedpause"),T=""
+k.value&&w.value&&(o=timecalc.TimeToMinutes(w.value),i=timecalc.TimeToMinutes(k.value),i<o&&(i+=1440),t=i-o),y.value&&g.value&&(l=timecalc.TimeToMinutes(g.value),n=timecalc.TimeToMinutes(y.value),n<l&&(n+=1440),a=n-l),h.value&&v.value&&(c=timecalc.TimeToMinutes(v.value),f=timecalc.TimeToMinutes(h.value),f<c&&(f+=1440),r=f-c,c<o&&(staffperiodweeks.disablesave=!0,T="les pauses doivent être dans les heures de travail!"),f>i&&(staffperiodweeks.disablesave=!0,T="les pauses doivent être dans les heures de travail!")),b.value&&_.value&&(u=timecalc.TimeToMinutes(_.value),m=timecalc.TimeToMinutes(b.value),m<u&&(m+=1440),s=m-u,u<l&&(staffperiodweeks.disablesave=!0,T="les pauses doivent être dans les heures de travail!"),m>n&&(staffperiodweeks.disablesave=!0,T="les pauses doivent être dans les heures de travail!")),!0===staffperiodweeks.disablesave?document.getElementById("staffreportperioddays_errmsg").innerHTML='<div class="panel error-panel">'+T+"</div>":document.getElementById("staffreportperioddays_errmsg").innerHTML="",d=r+s,document.getElementById("timepause").value=timecalc.MinutesToTime(d),a>0&&t>0?(p=timecalc.TimeToMinutes(g.value)-timecalc.TimeToMinutes(k.value),E.value=timecalc.MinutesToTime(p),p>staffperiodweeks.dayrefdata.maxinterruptionhours?(E.classList.remove("text-black"),E.classList.add("text-red")):(E.classList.remove("text-red"),E.classList.add("text-black"))):(E.classList.remove("text-red"),E.classList.add("text-black"),E.value="00:00"),M.checked&&!0===M.checked?D.value=timecalc.MinutesToTime(t+a):D.value=timecalc.MinutesToTime(t+a-d),staffperiodweeks.checkdaytime()},checkdaytime:function(){let e=0,t=0,a=0,r=document.getElementById("workhours"),s=document.getElementById("vacancyhours"),d=document.getElementById("recuperationhours"),o=document.getElementById("dayhours")
+document.getElementById("interruptionhours")
+r.value&&(e=timecalc.TimeToMinutes(r.value)),s.value&&(t=timecalc.TimeToMinutes(s.value)),d.value&&(a=timecalc.TimeToMinutes(d.value))
+let i=e+t+a
+o.value=timecalc.MinutesToTime(i),i>timecalc.TimeToMinutes(staffperiodweeks.dayrefdata.maxdayhours)?(o.classList.remove("text-black"),o.classList.add("text-red"),staffperiodweeks.disablesave=!0):(o.classList.remove("text-red"),o.classList.add("text-black"),staffperiodweeks.disablesave=!1),staffperiodweeks.calcfreetime()},calcfreetime:function(){let e=document.getElementById("timestart1").value
+if(""==e&&(e=document.getElementById("timestart2").value),staffperiodweeks.dayrefdata.datebefore&&""!=e){var t=new moment(staffperiodweeks.currentday.daydate+" "+e+":00","YYYY-MM-DD hh:mm:ss"),a=new moment(staffperiodweeks.dayrefdata.datebefore+" "+staffperiodweeks.dayrefdata.timebefore+":00","YYYY-MM-DD hh:mm"),r=moment.duration(a.diff(t)).as("minutes")
+r=Math.abs(r),document.getElementById("infofreetimebefore").value=timecalc.MinutesToInterval(r)}else document.getElementById("infofreetimebefore").value=""
+let s=document.getElementById("timeend2").value
+if(""==s&&(s=document.getElementById("timeend1").value),this.dayrefdata.dateafter&&""!=s){var d=new moment(staffperiodweeks.currentday.daydate+" "+s+":00","YYYY-MM-DD hh:mm:ss"),o=new moment(staffperiodweeks.dayrefdata.dateafter+" "+staffperiodweeks.dayrefdata.timeafter+":00","YYYY-MM-DD hh:mm:ss")
+r=moment.duration(o.diff(d)).as("minutes")
+document.getElementById("infofreetimeafter").value=timecalc.MinutesToInterval(r)}else document.getElementById("infofreetimeafter").value=""},copy:function(){let e=staffperiodweeks.tbl.getSelectedData()
+e[0]&&(staffperiodweeks.copy_id=e[0].id,document.getElementById("spwpasteval").innerHTML=moment(e[0]["daydate"]).format("DD.MM.YYYY"))},paste:function(){let e=staffperiodweeks.tbl.getSelectedData(),t=staffperiodweeks.parenttbl.getSelectedData()
+if(e.length>0){for(staffperiodweeks.selectedid=e[0].id,asel=[],s=0;s<e.length;s++)asel.push(e[s].id)
+postData("db.cgi",{schemata:schemata,fn:"clone_staffperiodweekdayhours",copyid:staffperiodweeks.copy_id,id_staff:t[0].id_staff,id_period:t[0].id_reportperiod,pasteids:asel}).then(e=>{staffperiodweeks.gettbldata()})}},clean:function(){let e=staffperiodweeks.tbl.getSelectedData(),t=staffperiodweeks.parenttbl.getSelectedData()
+if(e.length>0){for(staffperiodweeks.selectedid=e[0].id,asel=[],s=0;s<e.length;s++)asel.push(e[s].id)
+postData("db.cgi",{schemata:schemata,fn:"clean_staffperiodday",id_staff:t[0].id_staff,id_period:t[0].id_reportperiod,ids:asel}).then(e=>{staffperiodweeks.gettbldata()})}},replacedlg:function(){let e=staffperiodweeks.tbl.getSelectedData()
+e.length>0&&(document.getElementById("dlg_replacestaffdayworkplan").style.display="block")},getwptemplates:function(){postData("db.cgi",{get:"workplanlist",schemata:schemata}).then(e=>{dataform.fillselectlist(staffperiodweeks.choices["id_workplan"],e.result.sqldata,"id","dspworkplandetail")}).catch(e=>{})},replacedays:function(){let e=staffperiodweeks.tbl.getSelectedData(),t=staffperiodweeks.parenttbl.getSelectedData()
+if(e.length>0){staffperiodweeks.selectedid=e[0].id
+let a=staffperiodweeks.choices["id_workplan"].selected(),r=document.getElementById("keepvacancy").checked,d=document.getElementById("keeprecuperation").checked
+for(asel=[],s=0;s<e.length;s++)asel.push(e[s].id)
+postData("db.cgi",{schemata:schemata,fn:"replace_staffperiodweekdayhours",id_staff:t[0].id_staff,id_period:t[0].id_reportperiod,id_workplan:a,keepvac:r,keeprec:d,replaceids:asel}).then(e=>{document.getElementById("dlg_replacestaffdayworkplan").style.display="none",staffperiodweeks.gettbldata()}).catch(e=>{})}},savetimetracker:function(){let e=staffperiodweeks.tbl.getSelectedData(),t={fn:"savetrackdatasets"}
+t["schemata"]=schemata,t["id_staff"]=e[0].id_staff,t["daydate"]=e[0].daydate
+let a=staffperiodweeks.tbltimetracker.getData()
+staffperiodweeks.selectedid=e[0].id,trdata=[]
+for(var r=0;r<a.length;r++)if(a[r].total>"00:00"){let t=e[0].daydate
+a[r].stamp_in>a[r].stamp_out&&(stoutday=monment(t).add(1,"d").format("YYYY-MM-DD")),trdata.push({id:a[r].id,stamp_in:e[0].daydate+" "+a[r].stamp_in+":00",stamp_out:t+" "+a[r].stamp_out+":00"})}t["timetrackdata"]=trdata,postData("db.cgi",t).then(e=>{staffperiodweeks.gettbldata(),document.getElementById("dlg_stafftimetracker").style.display="none"}).catch(e=>{document.getElementById("dlg_stafftimetracker").style.display="none"})},edittimetracker:function(){staffperiodweeks.inittimetracktable()
+let e=staffperiodweeks.tbl.getSelectedData(),t=staffperiodweeks.parenttbl.getSelectedData()
+e.length>0&&e[0].daydate<staffperiodweeks.today&&(staffperiodweeks.selectedid=e[0].id,postData("db.cgi",{get:"gettrackday",schemata:schemata,id_staff:e[0].id_staff,daydate:e[0].daydate}).then(a=>{staffperiodweeks.tbltimetracker.setData(a.result.sqldata),document.getElementById("dlg_stafftimetracker_staffname").innerHTML=t[0].staffname,document.getElementById("dlg_stafftimetracker_date").innerHTML=moment(e[0].daydate).format("DD.MM.YYYY"),document.getElementById("dlg_stafftimetracker").style.display="block"}))},ttadd:function(){let e=staffperiodweeks.tbl.getSelectedData()
+postData("db.cgi",{get:"emptytrackdataset",schemata:schemata,id_staff:e[0].id_staff,daydate:e[0].daydate}).then(e=>{staffperiodweeks.tbltimetracker.addRow(e.result.sqldata,!0)})},ttremove:function(){let e=staffperiodweeks.tbltimetracker.getSelectedRows()
+staffperiodweeks.tbltimetracker.deleteRow(e)},settrackdaytotal:function(e,t,a){var r=0
+return e.forEach(function(e){r+=timecalc.TimeToMinutes(e)}),timecalc.MinutesToTime(r)},timerowtracktotal:function(e){let t=timecalc.TimeToMinutes(timecalc.StringToTime(e[0].stamp_in)),a=timecalc.TimeToMinutes(timecalc.StringToTime(e[0].stamp_out))
+stpoutcalc=a,t>stpoutcalc&&(stpoutcalc+=1500)
+let r=stpoutcalc-t
+staffperiodweeks.tbltimetracker.updateData([{id:e[0].id,stamp_in:timecalc.MinutesToTime(t),stamp_out:timecalc.MinutesToTime(a),total:timecalc.MinutesToTime(r)}])}},nullFormatter=function(e,t){return e.getElement().style.backgroundColor="grey",""},boldFormatter=function(e,t){return e.getElement().style.fontWeight="bold",e.getValue()},totalFormatter=function(e,t){return e.getElement().style.fontWeight="bold",e.getValue()>"00:00"&&(e.getValue()>e._cell.row.data.defaultdayhours&&(e.getElement().style.color="orange"),e.getValue()>e._cell.row.data.maxdayhours&&(e.getElement().style.color="red")),e.getValue()},interruptFormatter=function(e,t){return e.getValue()>"00:00"&&e.getValue()>e._cell.row.data.maxinterruptionhours&&(e.getElement().style.color="red"),e.getValue()},sizeFormatter=function(e,t){return e.getElement().style.fontSize="10pt",e.getValue()},worktimeFormatter=function(e,t){return""!=e.getValue()?(e.getElement().style.fontSize="10pt",e.getValue()):null==e._cell.row.data.dayhours?"jour de repos":e.getValue()},freetimeFormatter=function(e,t){return e.getElement().style.color="grey",e.getValue()>"00:00"&&5==e.getValue().length&&e.getValue()<e._cell.row.data.mindailyrecuperation&&(e.getElement().style.color="red"),e.getValue()},vacancyformatter=function(e,t){return e.getValue()>"00:00"&&staffperiodweeks.vacancytypes[e._cell.row.data.id_vacancytype]?(e.getElement().style.backgroundColor=staffperiodweeks.vacancytypes[e._cell.row.data.id_vacancytype].color,e.getValue()+"<br/>"+staffperiodweeks.vacancytypes[e._cell.row.data.id_vacancytype].vacancyname):e.getValue()},recupformatter=function(e,t){return e.getValue()>"00:00"&&staffperiodweeks.recuperationtypes[e._cell.row.data.id_recuperationtype]?(e.getElement().style.backgroundColor=staffperiodweeks.recuperationtypes[e._cell.row.data.id_recuperationtype].color,e.getValue()+"<br/>"+staffperiodweeks.recuperationtypes[e._cell.row.data.id_recuperationtype].vacancyname):e.getValue()},dateFormatter=function(e,t){return null!=e._cell.row.data.vacancyname?moment(e.getValue()).format("dd, DD.MM.YYYY")+"<br/>"+e._cell.row.data.vacancyname:moment(e.getValue()).format("dd, DD.MM.YYYY")},timetrackFormatter=function(e,t){return null==e.getValue()&&e._cell.row.data.daydate<staffperiodweeks.today&&null!=e._cell.row.data.dayhours?(e.getElement().style.color="red","00:00"):(e._cell.row.data.daydate<staffperiodweeks.today&&e._cell.row.data.incompletetrack>0&&(e.getElement().style.color="orange"),e.getValue())}
staff.choices["id_staffgroup"] = new SlimSelect({
select: "#id_staffgroup",
showSearch: false,
- /*![% IF session.usergroup == 'teamleader' %]*/
+ /* @preserve[% IF session.usergroup == 'teamleader' %]*/
disabled: true,
- /*![% ELSE %]*/
+ /* @preserve[% ELSE %]*/
afterClose: function(){dataform.savefield(document.getElementById('id_staffgroup'),staff.gettbldata);}
- /*![% END %]*/
+ /* @preserve[% END %]*/
});
staff.choices["addstaff_id_staffgroup"] = new SlimSelect({
select: "#addstaff_id_staffgroup",
showSearch: false,
});
- /*![% IF session.usergroup == 'teamleader' %]*/
+ /* @preserve[% IF session.usergroup == 'teamleader' %]*/
let stflds = document.getElementsByClassName("data_staff");
for (var f in stflds){
if (stflds[f]._flatpickr){
else { stflds[f].disabled = true;}
}
- /*![% END %]*/
+ /* @preserve[% END %]*/
staff.getstaffgroups();
},
inittable: function(){
-function initpage(){schemata=app.getCurrentSchemata(),staff.inittable(),staffcontract.inittable(),staffperiods.inittable(),staffperiodweeks.inittable()}let staff={tbl:null,tblperiodbase:null,current_user:null,current_id:null,current_view:"basedata",staff_defaultgroup:null,choices:{id_staffgroup:null,addstaff_id_staffgroup:null},initform:function(){flatpickr("#birthdate",{altInput:!0,altFormat:"d.m.Y",dateFormat:"Y-m-d",locale:"fr",onClose:function(selectedDates,dateStr,instance){dataform.savefield(document.getElementById("birthdate"),null)}}),flatpickr("#addstaff_startdate",{altInput:!0,altFormat:"d.m.Y",dateFormat:"Y-m-d",locale:"fr"}),flatpickr("#addstaff_enddate",{altInput:!0,altFormat:"d.m.Y",dateFormat:"Y-m-d",locale:"fr"}),staff.choices.id_staffgroup=new SlimSelect({select:"#id_staffgroup",showSearch:!1,
-/*![% IF session.usergroup == 'teamleader' %]*/
+function initpage(){schemata=app.getCurrentSchemata(),staff.inittable(),staffcontract.inittable(),staffperiods.inittable(),staffperiodweeks.inittable()}let staff={tbl:null,tblperiodbase:null,current_user:null,current_id:null,current_view:"basedata",staff_defaultgroup:null,choices:{id_staffgroup:null,addstaff_id_staffgroup:null},initform:function(){flatpickr("#birthdate",{altInput:!0,altFormat:"d.m.Y",dateFormat:"Y-m-d",locale:"fr",onClose:function(t,a,e){dataform.savefield(document.getElementById("birthdate"),null)}}),flatpickr("#addstaff_startdate",{altInput:!0,altFormat:"d.m.Y",dateFormat:"Y-m-d",locale:"fr"}),flatpickr("#addstaff_enddate",{altInput:!0,altFormat:"d.m.Y",dateFormat:"Y-m-d",locale:"fr"}),staff.choices["id_staffgroup"]=new SlimSelect({select:"#id_staffgroup",showSearch:!1,
+/* @preserve[% IF session.usergroup == 'teamleader' %]*/
disabled:!0,
-/*![% ELSE %]*/
+/* @preserve[% ELSE %]*/
afterClose:function(){dataform.savefield(document.getElementById("id_staffgroup"),staff.gettbldata)}
-/*![% END %]*/}),staff.choices.addstaff_id_staffgroup=new SlimSelect({select:"#addstaff_id_staffgroup",showSearch:!1});
-/*![% IF session.usergroup == 'teamleader' %]*/
-let stflds=document.getElementsByClassName("data_staff");for(var f in stflds)stflds[f]._flatpickr?stflds[f]._flatpickr._input.setAttribute("disabled","disabled"):stflds[f].disabled=!0;
-/*![% END %]*/staff.getstaffgroups()},inittable:function(){staff.initform(),staff.tbl=new Tabulator("#tbl_staff",{height:"calc(100vh - 56px)",layout:"fitDataFill",selectable:1,groupBy:["groupname"],groupStartOpen:[!0],groupHeader:[function(value,count,data){return value||""}],rowClick:function(e,row){staff.edit()},rowContext:function(e,row){e.preventDefault()},columns:[{title:"Départment",field:"groupname",visible:!1},{title:"Nom",field:"surname",resizable:!1},{title:"Prénom",field:"prename",resizable:!1}]}),staff.gettbldata()},gettbldata:function(id){let selectedData=staff.tbl.getSelectedData();postData("db.cgi",{get:"stafflist",schemata:schemata}).then(data=>{staff.tbl.setData(data.result.sqldata).then((function(){selectedData[0]&&staff.tbl.selectRow(selectedData[0].id)}))}).catch(e=>{console.log(e)})},add:function(){document.getElementById("dlg_addstaff_infomsg").innerHTML="",dataform.cleanform2("addstaff",staff.choices),document.getElementById("addstaff_weekhours").value="40:00",document.getElementById("addstaff_weekdays").value="6",document.getElementById("addstaff_startdate")._flatpickr.setDate(moment(new Date).format("YYYY-MM-DD")),staff.choices.addstaff_id_staffgroup.set(staff.staff_defaultgroup),app.viewdialog("addstaff")},savenew:function(){let flds=dataform.getformcontent("addstaff",staff.choices);for(let i in flds){var x;flds[i.replace("addstaff_","")]=flds[i],delete flds[i]}if(flds.schemata=schemata,flds.fn="add_staff",""==flds.startdate||""==flds.startdate||"weekhours"==flds.weekdays||""==flds.weekhours||""==flds.id_staffgroup)return document.getElementById("dlg_addstaff_infomsg").innerHTML='<div class="panel error-panel">les champs "date début","heures/semaine","jours/semaine" et "département" sont requis!</div>',!1;showdataloaddlg("",'<div class="xxlarge">Attendez s.v.p.!</div>'),postData("db.cgi",flds).then(data=>{document.getElementById("dlg_addstaff").style.display="none",staff.current_view="basedata",staff.gettbldata(),staff.setview(staff.current_view),closedataloaddlg()}).catch(e=>{document.getElementById("dlg_addstaff").style.display="none",closedataloaddlg()})},edit:function(){let udata=staff.tbl.getSelectedData();udata[0]?(staff.current_id=udata[0].id,dataform.cleanform2("staff",staff.choices),postData("db.cgi",{get:"staff",schemata:schemata,id:udata[0].id}).then(data=>{dataform.fillformbydataclass2("staff",staff.choices,data.result.data,"dataform.savefield(this,null);"),staffcontract.gettbldata(),staffperiods.gettbldata(),staff.setview(staff.current_view)})):app.viewpanel("nodata")},remove:function(){let udata=staff.tbl.getSelectedData();if(udata[0]){var flds={fn:"del_staff"};flds.id=udata[0].id,flds.schemata=schemata,showinfodlg("Supprimer","Êtes vous sûre de supprimer l'employé(e) sélectionnée?",staff.removedata,flds,'<span class="icon-Save"></span>Supprimer','<span class="icon-remove"></span>Annuler')}},removedata:function(data){postData("db.cgi",data).then(remdata=>{let x=staff.tbl.getSelectedData();x[0]&&staff.tbl.deselectRow(x.id),staff.gettbldata()})},viewtable:function(){return staff.gettbldata(),!1},save:function(){let fdata=dataform.getformcontent("staff");return fdata.ident="id",fdata.table="staff",dataform.saveformdata(fdata,staff.aftersavecallback,schemata),!1},aftersavecallback:function(data){return data&&data.id&&(staff.current_id=data.id,document.getElementById("section_staffcontract").style.display="block"),!1},getstaffgroups:function(){postData("db.cgi",{get:"staffgroups",schemata:schemata}).then(data=>{staff.staff_defaultgroup=data.result.sqldata[0].id,dataform.fillselectlist(staff.choices.addstaff_id_staffgroup,data.result.sqldata,"id","groupname"),dataform.fillselectlist(staff.choices.id_staffgroup,data.result.sqldata,"id","groupname")})},fillstaffgroups:function(data){dataform.fillselectlist(staff.choices.id_staffgroup,data.sqldata,"id","groupname")},setview:function(viewname){let sel;staff.tbl.getSelectedData()[0]&&(staff.current_view=viewname,"periods"==viewname&&staffperiods.gettbldata(),app.viewpanel(viewname))}};
\ No newline at end of file
+/* @preserve[% END %]*/}),staff.choices["addstaff_id_staffgroup"]=new SlimSelect({select:"#addstaff_id_staffgroup",showSearch:!1})
+
+;/* @preserve[% IF session.usergroup == 'teamleader' %]*/
+let t=document.getElementsByClassName("data_staff")
+for(var a in t)t[a]._flatpickr?t[a]._flatpickr._input.setAttribute("disabled","disabled"):t[a].disabled=!0
+
+;/* @preserve[% END %]*/staff.getstaffgroups()},inittable:function(){staff.initform(),staff.tbl=new Tabulator("#tbl_staff",{height:"calc(100vh - 56px)",layout:"fitDataFill",selectable:1,groupBy:["groupname"],groupStartOpen:[!0],groupHeader:[function(t,a,e){return t||""}],rowClick:function(t,a){staff.edit()},rowContext:function(t,a){t.preventDefault()},columns:[{title:"Départment",field:"groupname",visible:!1},{title:"Nom",field:"surname",resizable:!1},{title:"Prénom",field:"prename",resizable:!1}]}),staff.gettbldata()},gettbldata:function(t){let a=staff.tbl.getSelectedData()
+postData("db.cgi",{get:"stafflist",schemata:schemata}).then(t=>{staff.tbl.setData(t.result.sqldata).then(function(){a[0]&&staff.tbl.selectRow(a[0]["id"])})}).catch(t=>{})},add:function(){document.getElementById("dlg_addstaff_infomsg").innerHTML="",dataform.cleanform2("addstaff",staff.choices),document.getElementById("addstaff_weekhours").value="40:00",document.getElementById("addstaff_weekdays").value="6",document.getElementById("addstaff_startdate")._flatpickr.setDate(moment(new Date).format("YYYY-MM-DD")),staff.choices["addstaff_id_staffgroup"].set(staff.staff_defaultgroup),app.viewdialog("addstaff")},savenew:function(){let t=dataform.getformcontent("addstaff",staff.choices)
+for(let e in t){var a=e.replace("addstaff_","")
+t[a]=t[e],delete t[e]}if(t["schemata"]=schemata,t["fn"]="add_staff",""==t["startdate"]||""==t["startdate"]||"weekhours"==t["weekdays"]||""==t["weekhours"]||""==t["id_staffgroup"])return document.getElementById("dlg_addstaff_infomsg").innerHTML='<div class="panel error-panel">les champs "date début","heures/semaine","jours/semaine" et "département" sont requis!</div>',!1
+showdataloaddlg("",'<div class="xxlarge">Attendez s.v.p.!</div>'),postData("db.cgi",t).then(t=>{document.getElementById("dlg_addstaff").style.display="none",staff.current_view="basedata",staff.gettbldata(),staff.setview(staff.current_view),closedataloaddlg()}).catch(t=>{document.getElementById("dlg_addstaff").style.display="none",closedataloaddlg()})},edit:function(){let t=staff.tbl.getSelectedData()
+t[0]?(staff.current_id=t[0].id,dataform.cleanform2("staff",staff.choices),postData("db.cgi",{get:"staff",schemata:schemata,id:t[0].id}).then(t=>{dataform.fillformbydataclass2("staff",staff.choices,t.result.data,"dataform.savefield(this,null);"),staffcontract.gettbldata(),staffperiods.gettbldata(),staff.setview(staff.current_view)})):app.viewpanel("nodata")},remove:function(){let t=staff.tbl.getSelectedData()
+if(t[0]){var a={fn:"del_staff"}
+a["id"]=t[0].id,a["schemata"]=schemata,showinfodlg("Supprimer","Êtes vous sûre de supprimer l'employé(e) sélectionnée?",staff.removedata,a,'<span class="icon-Save"></span>Supprimer','<span class="icon-remove"></span>Annuler')}},removedata:function(t){postData("db.cgi",t).then(t=>{let a=staff.tbl.getSelectedData()
+a[0]&&staff.tbl.deselectRow(a["id"]),staff.gettbldata()})},viewtable:function(){return staff.gettbldata(),!1},save:function(){let t=dataform.getformcontent("staff")
+return t["ident"]="id",t["table"]="staff",dataform.saveformdata(t,staff.aftersavecallback,schemata),!1},aftersavecallback:function(t){return t&&t.id&&(staff.current_id=t.id,document.getElementById("section_staffcontract").style.display="block"),!1},getstaffgroups:function(){postData("db.cgi",{get:"staffgroups",schemata:schemata}).then(t=>{staff.staff_defaultgroup=t.result.sqldata[0].id,dataform.fillselectlist(staff.choices["addstaff_id_staffgroup"],t.result.sqldata,"id","groupname"),dataform.fillselectlist(staff.choices["id_staffgroup"],t.result.sqldata,"id","groupname")})},fillstaffgroups:function(t){dataform.fillselectlist(staff.choices["id_staffgroup"],t.sqldata,"id","groupname")},setview:function(t){let a=staff.tbl.getSelectedData()
+a[0]&&(staff.current_view=t,"periods"==t&&staffperiods.gettbldata(),app.viewpanel(t))}}
let wpdatanew = {};
for (let w in wpdata){
if ((!w.endsWith("dayhours")) && (!w.endsWith("interruptionhours"))){
- wpdatanew[w] = wpdata[w];
+ var wn = w.replace("workplandays_","");
+ wpdatanew[wn] = wpdata[w];
}
}
- if (wpdatanew["workplandays_pause"] == '00:00'){
- wpdatanew["workplandays_pause"] = '';
+ if (wpdatanew["pause"] == '00:00'){
+ wpdatanew["pause"] = '';
}
- wpdatanew["fn"] ="saveform";wpdatanew["table"] ="workplandays";
- wpdatanew["schemata"]=schemata;
- delete wpdatanew["null"];
- console.log(wpdatanew);
- postData("db.cgi",wpdatanew).then(data => {
+
+ let wps = {}
+ wps["fn"] ="workplan_saveday";
+ wps["schemata"]=schemata;
+ wps["id"] = wpdatanew["ident_id"];
+ delete wpdatanew["ident_id"];
+ wps["workplanday"] = wpdatanew;
+ console.log(wps);
+ postData("db.cgi",wps).then(data => {
document.getElementById('dlg_workplanday').style.display='none';
workplans.gettbldata();
});
-function initpage(){workplans.inittable()}weekdays=["","lundi","mardi","mercredi","jeudi","vendredi","samedi","dimanche"];let workplans={choices:{},tbl:null,tblfilter:null,copy_day_id:null,current_view:"workplans",disablesave:!1,payedpauses:null,initform:function(){let tfields=document.getElementsByClassName("timefield");for(let i=0;i<tfields.length;i++)tfields[i].addEventListener("change",(function(){workplans.checktime(this.id)}))},inittable:function(){workplans.tblfilter=new Tabulator("#tbl_workplans",{headerFilterPlaceholder:"filter...",height:"calc(100vh - 56px)",layout:"fitDataFill",selectable:1,rowClick:function(e,row){workplans.viewplan()},rowContext:function(e,row){e.preventDefault()},columns:[{title:"Modèle",field:"workplan",headerSort:!0},{title:"Standard",field:"isdefault",headerSort:!1,formatter:"tickCross",formatterParams:{allowEmpty:!0,allowTruthy:!0,tickElement:"<span class='icon-check'></span>",crossElement:"<span class='icon-remove'></span>"}}]}),workplans.tbl=new Tabulator("#tbl_workplandata",{headerFilterPlaceholder:"filter...",height:"calc(100vh - 111px)",layout:"fitDataFill",selectable:1,rowContext:function(e,row){e.preventDefault()},groupBy:["weeknum"],groupStartOpen:[!0],groupClosedShowCalcs:!0,groupHeader:[function(value,count,data){return"Semaine "+value}],columns:[{title:"jour",field:"weekday",formatter:wdayFormatter,headerSort:!1},{title:"heures de<br/>travail",field:"dspworkdata",headerSort:!1,hozAlign:"center",formatter:sizeFormatter},{title:"heures de<br/>pause",field:"dsppausedata",headerSort:!1,hozAlign:"center",formatter:sizeFormatter},{title:"total<br/>pause",field:"pause",width:80,headerSort:!1},{title:"coupure",field:"interruption",width:90,headerSort:!1},{title:"total<br/>travail",field:"dayhours",width:80,formatter:boldFormatter,headerSort:!1,bottomCalc:workplans.weekhourssum}]}),workplans.gettblfilterdata(),workplans.initform(),workplans.getcompanyconf()},gettblfilterdata:function(){postData("db.cgi",{get:"workplanlist",schemata:schemata}).then(data=>{workplans.tblfilter.setData(data.result.sqldata)})},getcompanyconf:function(){postData("db.cgi",{get:"company",schemata:"public",schemata:schemata}).then(data=>{workplans.payedpauses=data.result.data.payedpauses})},gettbldata:function(wkid){let wpsel=workplans.tblfilter.getSelectedData();wpsel[0]&&postData("db.cgi",{get:"workplandayslist",id_workplan:wpsel[0].id,schemata:schemata}).then(data=>{workplans.tbl.setData(data.result.sqldata)})},viewplan:function(){workplans.gettbldata(),workplans.setview("workplans")},setview:function(viewname){workplans.current_view=viewname,app.viewpanel(viewname)},edit:function(){dataform.cleanform("workplandays");let udata=workplans.tbl.getSelectedData();udata[0]&&(document.getElementById("display_date").innerHTML=weekdays[udata[0].weekday],postData("db.cgi",{get:"workplanday",id:udata[0].id,schemata:schemata}).then(data=>{dataform.fillformbydataclass2("workplandays",{},data.result.data),setTimeout(workplans.checktime("start1"),1e3),app.viewdialog("workplanday")}))},rename:function(){dataform.cleanform("workplan");let udata=workplans.tblfilter.getSelectedData();udata[0]&&postData("db.cgi",{get:"workplan",id:udata[0].id,schemata:schemata}).then(data=>{data.result.data.id_workplan=data.result.data.id,dataform.fillformbydataclass2("workplans",{},data.result.data),app.viewdialog("workplans")})},add:function(){dataform.cleanform("workplans"),app.viewdialog("workplans")},duplicate:function(){let sel=workplans.tblfilter.getSelectedData();sel[0]&&postData("db.cgi",{fn:"duplicate_workplan",schemata:schemata,id:sel[0].id}).then(data=>{workplans.gettblfilterdata()})},setcopyday:function(){let cdata=workplans.tbl.getSelectedData();cdata[0]&&(document.getElementById("pasteday").innerHTML=" "+weekdays[cdata[0].weekday],workplans.copy_day_id=cdata[0].id)},pasteday:function(){let cdata=workplans.tbl.getSelectedData();cdata[0]&&workplans.copy_day_id&&cdata[0].id!=workplans.copy_day_id&&postData("db.cgi",{fn:"workplan_replaceday",schemata:schemata,copyid:workplans.copy_day_id,pasteid:cdata[0].id}).then(data=>{workplans.gettbldata()})},remove:function(){let udata=workplans.tblfilter.getSelectedData();return udata[0].isdefault?(showmessagedlg("Info","Le plan Standard ne peut pas être supprimé!"),!1):parseInt(udata[0].staffcount)>0?(showmessagedlg("Info","Le plan ne peut pas être supprimé dès qu'il est utilisé par un salarié"),!1):void(udata[0]&&(flds={},flds.fn="del_workplan",flds.id=udata[0].id,flds.schemata=schemata,showinfodlg("Supprimer","Êtes vous sûre de supprimer le plan de travail '"+udata.workplan+"'?",workplans.removedata,flds,'<span class="icon-Save"></span>Supprimer','<span class="icon-remove"></span>Annuler')))},removedata:function(data){postData("db.cgi",data).then(remdata=>{workplans.gettblfilterdata()})},weekhourssum:function(values,data,calcParams){let mts=0;for(let m in values)mts+=timecalc.IntervalToMinutes(values[m]);return timecalc.MinutesToInterval(mts)},save:function(){let wpdata=dataform.getformcontent("workplandays"),wpdatanew={};for(let w in wpdata)w.endsWith("dayhours")||w.endsWith("interruptionhours")||(wpdatanew[w]=wpdata[w]);return"00:00"==wpdatanew.workplandays_pause&&(wpdatanew.workplandays_pause=""),wpdatanew.fn="saveform",wpdatanew.table="workplandays",wpdatanew.schemata=schemata,delete wpdatanew.null,console.log(wpdatanew),postData("db.cgi",wpdatanew).then(data=>{document.getElementById("dlg_workplanday").style.display="none",workplans.gettbldata()}),!1},saveworkplan:function(){let wpdata=dataform.getformcontent("workplans");return wpdata.ident_workplans_id=wpdata.ident_workplans_id_workplan,delete wpdata.ident_workplans_id_workplan,""==wpdata.ident_workplans_id?postData("db.cgi",{fn:"add_workplan",name:wpdata.workplans_workplan,schemata:schemata}).then(data=>{document.getElementById("dlg_workplans").style.display="none",workplans.gettblfilterdata()}):(delete wpdata.null,wpdata.fn="saveform",wpdata.schemata=schemata,postData("db.cgi",wpdata).then(data=>{document.getElementById("dlg_workplans").style.display="none",workplans.gettblfilterdata()})),!1},checktime:function(id){workplans.disablesave=!1;let mt1=0,mt2=0,mtp1=0,mtp2=0,mtp=0,s1=0,e1=0,s2=0,e2=0,ps1=0,pe1=0,ps2=0,pe2=0,irupt=0,ode1=document.getElementById("end1"),ods1=document.getElementById("start1"),ode2=document.getElementById("end2"),ods2=document.getElementById("start2"),ope1=document.getElementById("pauseend1"),ops1=document.getElementById("pausestart1"),ope2=document.getElementById("pauseend2"),ops2=document.getElementById("pausestart2"),odp=document.getElementById("pause"),oirupt=document.getElementById("interruptionhours"),owkh=document.getElementById("dayhours"),msg="";ode1.value&&ods1.value&&(s1=timecalc.TimeToMinutes(ods1.value),e1=timecalc.TimeToMinutes(ode1.value),e1<s1&&(e1+=1500),console.log(e1+" - "+s1),mt1=e1-s1),ode2.value&&ods2.value&&(s2=timecalc.TimeToMinutes(ods2.value),e2=timecalc.TimeToMinutes(ode2.value),e2<s2&&(e2+=1500),mt2=e2-s2),ope1.value&&ops1.value&&(ps1=timecalc.TimeToMinutes(ops1.value),pe1=timecalc.TimeToMinutes(ope1.value),pe1<ps1&&(pe1+=1500),mtp1=pe1-ps1,ps1<s1&&(workplans.disablesave=!0,msg="les pauses doivent être dans les heures de travail!"),pe1>e1&&(workplans.disablesave=!0,msg="les pauses doivent être dans les heures de travail!")),ope2.value&&ops2.value&&(ps2=timecalc.TimeToMinutes(ops2.value),pe2=timecalc.TimeToMinutes(ope2.value),pe2<ps2&&(pe2+=1500),mtp2=pe2-ps2,ps2<s2&&(workplans.disablesave=!0,msg="les pauses doivent être dans les heures de travail!"),pe2>e2&&(workplans.disablesave=!0,msg="les pauses doivent être dans les heures de travail!")),1==workplans.disablesave?document.getElementById("workplanday_errmsg").innerHTML='<div class="panel error-panel">'+msg+"</div>":document.getElementById("workplanday_errmsg").innerHTML="",mtp=mtp1+mtp2,document.getElementById("pause").value=timecalc.MinutesToTime(mtp),""!=document.getElementById("end1").value&&""!=document.getElementById("start2").value?(irupt=timecalc.TimeToMinutes(document.getElementById("start2").value)-timecalc.TimeToMinutes(document.getElementById("end1").value),document.getElementById("interruptionhours").value=timecalc.MinutesToTime(irupt)):document.getElementById("interruptionhours").value="","1"==workplans.payedpauses?owkh.value=timecalc.MinutesToTime(mt1+mt2):owkh.value=timecalc.MinutesToTime(mt1+mt2-mtp);let totaltester=/\d+:\d\d/,valcheck=document.getElementById("dayhours").value;valcheck&&""!=valcheck&&("00:00"!=valcheck&&totaltester.test(valcheck)||(document.getElementById("dayhours").value=""))}},wdayFormatter=function(cell,formatterParams){return weekdays[cell.getValue()]},boldFormatter=function(cell,formatterParams){return cell.getElement().style.fontWeight="bold",cell.getValue()},sizeFormatter=function(cell,formatterParams){return cell.getElement().style.fontSize="10pt",cell.getValue()},italicFormatter=function(cell,formatterParams){return cell.getElement().style.color="grey",cell.getValue()};
\ No newline at end of file
+function initpage(){workplans.inittable()}weekdays=["","lundi","mardi","mercredi","jeudi","vendredi","samedi","dimanche"];let workplans={choices:{},tbl:null,tblfilter:null,copy_day_id:null,current_view:"workplans",disablesave:!1,payedpauses:null,initform:function(){let tfields=document.getElementsByClassName("timefield");for(let i=0;i<tfields.length;i++)tfields[i].addEventListener("change",(function(){workplans.checktime(this.id)}))},inittable:function(){workplans.tblfilter=new Tabulator("#tbl_workplans",{headerFilterPlaceholder:"filter...",height:"calc(100vh - 56px)",layout:"fitDataFill",selectable:1,rowClick:function(e,row){workplans.viewplan()},rowContext:function(e,row){e.preventDefault()},columns:[{title:"Modèle",field:"workplan",headerSort:!0},{title:"Standard",field:"isdefault",headerSort:!1,formatter:"tickCross",formatterParams:{allowEmpty:!0,allowTruthy:!0,tickElement:"<span class='icon-check'></span>",crossElement:"<span class='icon-remove'></span>"}}]}),workplans.tbl=new Tabulator("#tbl_workplandata",{headerFilterPlaceholder:"filter...",height:"calc(100vh - 111px)",layout:"fitDataFill",selectable:1,rowContext:function(e,row){e.preventDefault()},groupBy:["weeknum"],groupStartOpen:[!0],groupClosedShowCalcs:!0,groupHeader:[function(value,count,data){return"Semaine "+value}],columns:[{title:"jour",field:"weekday",formatter:wdayFormatter,headerSort:!1},{title:"heures de<br/>travail",field:"dspworkdata",headerSort:!1,hozAlign:"center",formatter:sizeFormatter},{title:"heures de<br/>pause",field:"dsppausedata",headerSort:!1,hozAlign:"center",formatter:sizeFormatter},{title:"total<br/>pause",field:"pause",width:80,headerSort:!1},{title:"coupure",field:"interruption",width:90,headerSort:!1},{title:"total<br/>travail",field:"dayhours",width:80,formatter:boldFormatter,headerSort:!1,bottomCalc:workplans.weekhourssum}]}),workplans.gettblfilterdata(),workplans.initform(),workplans.getcompanyconf()},gettblfilterdata:function(){postData("db.cgi",{get:"workplanlist",schemata:schemata}).then(data=>{workplans.tblfilter.setData(data.result.sqldata)})},getcompanyconf:function(){postData("db.cgi",{get:"company",schemata:"public",schemata:schemata}).then(data=>{workplans.payedpauses=data.result.data.payedpauses})},gettbldata:function(wkid){let wpsel=workplans.tblfilter.getSelectedData();wpsel[0]&&postData("db.cgi",{get:"workplandayslist",id_workplan:wpsel[0].id,schemata:schemata}).then(data=>{workplans.tbl.setData(data.result.sqldata)})},viewplan:function(){workplans.gettbldata(),workplans.setview("workplans")},setview:function(viewname){workplans.current_view=viewname,app.viewpanel(viewname)},edit:function(){dataform.cleanform("workplandays");let udata=workplans.tbl.getSelectedData();udata[0]&&(document.getElementById("display_date").innerHTML=weekdays[udata[0].weekday],postData("db.cgi",{get:"workplanday",id:udata[0].id,schemata:schemata}).then(data=>{dataform.fillformbydataclass2("workplandays",{},data.result.data),setTimeout(workplans.checktime("start1"),1e3),app.viewdialog("workplanday")}))},rename:function(){dataform.cleanform("workplan");let udata=workplans.tblfilter.getSelectedData();udata[0]&&postData("db.cgi",{get:"workplan",id:udata[0].id,schemata:schemata}).then(data=>{data.result.data.id_workplan=data.result.data.id,dataform.fillformbydataclass2("workplans",{},data.result.data),app.viewdialog("workplans")})},add:function(){dataform.cleanform("workplans"),app.viewdialog("workplans")},duplicate:function(){let sel=workplans.tblfilter.getSelectedData();sel[0]&&postData("db.cgi",{fn:"duplicate_workplan",schemata:schemata,id:sel[0].id}).then(data=>{workplans.gettblfilterdata()})},setcopyday:function(){let cdata=workplans.tbl.getSelectedData();cdata[0]&&(document.getElementById("pasteday").innerHTML=" "+weekdays[cdata[0].weekday],workplans.copy_day_id=cdata[0].id)},pasteday:function(){let cdata=workplans.tbl.getSelectedData();cdata[0]&&workplans.copy_day_id&&cdata[0].id!=workplans.copy_day_id&&postData("db.cgi",{fn:"workplan_replaceday",schemata:schemata,copyid:workplans.copy_day_id,pasteid:cdata[0].id}).then(data=>{workplans.gettbldata()})},remove:function(){let udata=workplans.tblfilter.getSelectedData();return udata[0].isdefault?(showmessagedlg("Info","Le plan Standard ne peut pas être supprimé!"),!1):parseInt(udata[0].staffcount)>0?(showmessagedlg("Info","Le plan ne peut pas être supprimé dès qu'il est utilisé par un salarié"),!1):void(udata[0]&&(flds={},flds.fn="del_workplan",flds.id=udata[0].id,flds.schemata=schemata,showinfodlg("Supprimer","Êtes vous sûre de supprimer le plan de travail '"+udata.workplan+"'?",workplans.removedata,flds,'<span class="icon-Save"></span>Supprimer','<span class="icon-remove"></span>Annuler')))},removedata:function(data){postData("db.cgi",data).then(remdata=>{workplans.gettblfilterdata()})},weekhourssum:function(values,data,calcParams){let mts=0;for(let m in values)mts+=timecalc.IntervalToMinutes(values[m]);return timecalc.MinutesToInterval(mts)},save:function(){let wpdata=dataform.getformcontent("workplandays"),wpdatanew={};for(let w in wpdata){var wn;if(!w.endsWith("dayhours")&&!w.endsWith("interruptionhours"))wpdatanew[w.replace("workplandays_","")]=wpdata[w]}"00:00"==wpdatanew.pause&&(wpdatanew.pause="");let wps={fn:"workplan_saveday"};return wps.schemata=schemata,wps.id=wpdatanew.ident_id,delete wpdatanew.ident_id,wps.workplanday=wpdatanew,console.log(wps),postData("db.cgi",wps).then(data=>{document.getElementById("dlg_workplanday").style.display="none",workplans.gettbldata()}),!1},saveworkplan:function(){let wpdata=dataform.getformcontent("workplans");return wpdata.ident_workplans_id=wpdata.ident_workplans_id_workplan,delete wpdata.ident_workplans_id_workplan,""==wpdata.ident_workplans_id?postData("db.cgi",{fn:"add_workplan",name:wpdata.workplans_workplan,schemata:schemata}).then(data=>{document.getElementById("dlg_workplans").style.display="none",workplans.gettblfilterdata()}):(delete wpdata.null,wpdata.fn="saveform",wpdata.schemata=schemata,postData("db.cgi",wpdata).then(data=>{document.getElementById("dlg_workplans").style.display="none",workplans.gettblfilterdata()})),!1},checktime:function(id){workplans.disablesave=!1;let mt1=0,mt2=0,mtp1=0,mtp2=0,mtp=0,s1=0,e1=0,s2=0,e2=0,ps1=0,pe1=0,ps2=0,pe2=0,irupt=0,ode1=document.getElementById("end1"),ods1=document.getElementById("start1"),ode2=document.getElementById("end2"),ods2=document.getElementById("start2"),ope1=document.getElementById("pauseend1"),ops1=document.getElementById("pausestart1"),ope2=document.getElementById("pauseend2"),ops2=document.getElementById("pausestart2"),odp=document.getElementById("pause"),oirupt=document.getElementById("interruptionhours"),owkh=document.getElementById("dayhours"),msg="";ode1.value&&ods1.value&&(s1=timecalc.TimeToMinutes(ods1.value),e1=timecalc.TimeToMinutes(ode1.value),e1<s1&&(e1+=1500),console.log(e1+" - "+s1),mt1=e1-s1),ode2.value&&ods2.value&&(s2=timecalc.TimeToMinutes(ods2.value),e2=timecalc.TimeToMinutes(ode2.value),e2<s2&&(e2+=1500),mt2=e2-s2),ope1.value&&ops1.value&&(ps1=timecalc.TimeToMinutes(ops1.value),pe1=timecalc.TimeToMinutes(ope1.value),pe1<ps1&&(pe1+=1500),mtp1=pe1-ps1,ps1<s1&&(workplans.disablesave=!0,msg="les pauses doivent être dans les heures de travail!"),pe1>e1&&(workplans.disablesave=!0,msg="les pauses doivent être dans les heures de travail!")),ope2.value&&ops2.value&&(ps2=timecalc.TimeToMinutes(ops2.value),pe2=timecalc.TimeToMinutes(ope2.value),pe2<ps2&&(pe2+=1500),mtp2=pe2-ps2,ps2<s2&&(workplans.disablesave=!0,msg="les pauses doivent être dans les heures de travail!"),pe2>e2&&(workplans.disablesave=!0,msg="les pauses doivent être dans les heures de travail!")),1==workplans.disablesave?document.getElementById("workplanday_errmsg").innerHTML='<div class="panel error-panel">'+msg+"</div>":document.getElementById("workplanday_errmsg").innerHTML="",mtp=mtp1+mtp2,document.getElementById("pause").value=timecalc.MinutesToTime(mtp),""!=document.getElementById("end1").value&&""!=document.getElementById("start2").value?(irupt=timecalc.TimeToMinutes(document.getElementById("start2").value)-timecalc.TimeToMinutes(document.getElementById("end1").value),document.getElementById("interruptionhours").value=timecalc.MinutesToTime(irupt)):document.getElementById("interruptionhours").value="","1"==workplans.payedpauses?owkh.value=timecalc.MinutesToTime(mt1+mt2):owkh.value=timecalc.MinutesToTime(mt1+mt2-mtp);let totaltester=/\d+:\d\d/,valcheck=document.getElementById("dayhours").value;valcheck&&""!=valcheck&&("00:00"!=valcheck&&totaltester.test(valcheck)||(document.getElementById("dayhours").value=""))}},wdayFormatter=function(cell,formatterParams){return weekdays[cell.getValue()]},boldFormatter=function(cell,formatterParams){return cell.getElement().style.fontWeight="bold",cell.getValue()},sizeFormatter=function(cell,formatterParams){return cell.getElement().style.fontSize="10pt",cell.getValue()},italicFormatter=function(cell,formatterParams){return cell.getElement().style.color="grey",cell.getValue()};
\ No newline at end of file
POT LIVE: ksaffran@dks.lu -> ntHesDUDWeQVs\r
-POT LOCAL: ksaffran@dks.lu -> GSmO4BwBEJ4aA\r
+--POT LOCAL: ksaffran@dks.lu -> GSmO4BwBEJ4aA\r
\r
Login: marianne@elch.lu\r
Mot de Passe: r3vGjytohu4ZU\r
--- /dev/null
+#!/bin/bash
+curl -v -A "POT Hourtrax/v1.0.0" -X POST -d "btnlogin=1&login=ksaffran@dks.lu&password=GSmO4BwBEJ4aA" http://app.pot.lan
Disallow: /js/
Disallow: /css/
Disallow: /cgv/
-Disallow: /api/
Disallow: /downloads/
\ No newline at end of file