From: kilian Date: Thu, 15 Oct 2020 06:12:00 +0000 (+0200) Subject: v20201014 X-Git-Tag: 1.0.15~8 X-Git-Url: http://cloud.dks.lu/git/?a=commitdiff_plain;h=9282bf8e702c90434aa8ff0c7271569648e8a255;p=pot_lu.git v20201014 --- diff --git a/.vscode/settings.json b/.vscode/settings.json index 35c208e2..62e0ec42 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -14,6 +14,50 @@ "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" + } + } } diff --git a/app/db.cgi b/app/db.cgi index b8dc48e5..3e3af866 100644 --- a/app/db.cgi +++ b/app/db.cgi @@ -307,7 +307,7 @@ if (($cgi->request_method() eq "GET") || ($cgi->request_method() eq "POST")){ 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"){ @@ -318,6 +318,9 @@ if (($cgi->request_method() eq "GET") || ($cgi->request_method() eq "POST")){ $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"; diff --git a/app/lib/POT/TimeTrackSync.pm b/app/lib/POT/TimeTrackSync.pm new file mode 100644 index 00000000..39e1b4b7 --- /dev/null +++ b/app/lib/POT/TimeTrackSync.pm @@ -0,0 +1,43 @@ +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; diff --git a/app/lib/POT/Workplan.pm b/app/lib/POT/Workplan.pm index ec51f8b2..e31dd57c 100644 --- a/app/lib/POT/Workplan.pm +++ b/app/lib/POT/Workplan.pm @@ -68,9 +68,8 @@ sub replaceWorkplanDay(){ 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); @@ -138,4 +137,52 @@ sub getWorkplanDay(){ 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 diff --git a/app/lib/dksdb.pm b/app/lib/dksdb.pm index 60cf28bf..9e9317dd 100644 --- a/app/lib/dksdb.pm +++ b/app/lib/dksdb.pm @@ -20,7 +20,7 @@ sub new { 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; } diff --git a/app/synctimetrack.cgi b/app/synctimetrack.cgi new file mode 100644 index 00000000..0ce20d74 --- /dev/null +++ b/app/synctimetrack.cgi @@ -0,0 +1,72 @@ +#!/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); diff --git a/app/tmpl/block/dlg_replacestaffdayworkplan.tt b/app/tmpl/block/dlg_replacestaffdayworkplan.tt index 3180ee85..9f3768fa 100644 --- a/app/tmpl/block/dlg_replacestaffdayworkplan.tt +++ b/app/tmpl/block/dlg_replacestaffdayworkplan.tt @@ -10,11 +10,11 @@
-
+
-
+
-
diff --git a/app/tmpl/index.tt b/app/tmpl/index.tt index 5ccb4461..567d297f 100644 --- a/app/tmpl/index.tt +++ b/app/tmpl/index.tt @@ -1,4 +1,4 @@ -[% appversion = '0.9.9.8' %] +[% appversion = '0.9.10.0' %] [% minify = '' %] diff --git a/app/tmpl/module/admin/companies.min.js b/app/tmpl/module/admin/companies.min.js index 05cac7cf..62277551 100644 --- a/app/tmpl/module/admin/companies.min.js +++ b/app/tmpl/module/admin/companies.min.js @@ -1 +1,4 @@ -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")})}} diff --git a/app/tmpl/module/admin/schemadataset.js b/app/tmpl/module/admin/schemadataset.js index 0c4fec42..36cb572a 100644 --- a/app/tmpl/module/admin/schemadataset.js +++ b/app/tmpl/module/admin/schemadataset.js @@ -16,7 +16,7 @@ let schemadataset= { add: function(){ dataform.cleanform2("dataset",{}); app.viewdialog("dataset"); - }, + }, remove: function(){ let udata = companies.tbl.getSelectedData(); if (udata[0]) { diff --git a/app/tmpl/module/admin/schemadataset.min.js b/app/tmpl/module/admin/schemadataset.min.js index 284cac2c..2d05a5ec 100644 --- a/app/tmpl/module/admin/schemadataset.min.js +++ b/app/tmpl/module/admin/schemadataset.min.js @@ -1 +1,3 @@ -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,'Supprimer','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("",'
Attendez s.v.p.!
'),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,'Supprimer','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("",'
Attendez s.v.p.!
'),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")})}} diff --git a/app/tmpl/module/admin/sectors.js b/app/tmpl/module/admin/sectors.js index 68f09afe..04c6bbf9 100644 --- a/app/tmpl/module/admin/sectors.js +++ b/app/tmpl/module/admin/sectors.js @@ -63,7 +63,7 @@ let sector ={ // } else { // app.viewpanel('nodata'); // } - }, + }, save: function(){ // dataform.saveform("companies",schemata,null); // app.viewpanel("tbl_companies"); diff --git a/app/tmpl/module/admin/sectors.min.js b/app/tmpl/module/admin/sectors.min.js index b6766974..93786cb3 100644 --- a/app/tmpl/module/admin/sectors.min.js +++ b/app/tmpl/module/admin/sectors.min.js @@ -1 +1,2 @@ -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
quotidienne",field:"mindailyrecuperation",headerSort:!1,formatter:timeFormatter},{title:"standard",field:"isdefault",headerSort:!1,formatter:"tickCross",hozAlign:"center",formatterParams:{allowEmpty:!0,allowTruthy:!0,tickElement:""}}]}),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
quotidienne",field:"mindailyrecuperation",headerSort:!1,formatter:timeFormatter},{title:"standard",field:"isdefault",headerSort:!1,formatter:"tickCross",hozAlign:"center",formatterParams:{allowEmpty:!0,allowTruthy:!0,tickElement:""}}]}),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()} diff --git a/app/tmpl/module/admin/staffgroups.js b/app/tmpl/module/admin/staffgroups.js index 57a08c00..fd936d26 100644 --- a/app/tmpl/module/admin/staffgroups.js +++ b/app/tmpl/module/admin/staffgroups.js @@ -30,7 +30,7 @@ let staffgroups = { //console.log(data); dataform.fillformbydataclass2("staffgroups",{},data.result.data); app.viewdialog("staffgroups"); - }); + }); } }, diff --git a/app/tmpl/module/admin/staffgroups.min.js b/app/tmpl/module/admin/staffgroups.min.js index c1368b1f..8bd97a46 100644 --- a/app/tmpl/module/admin/staffgroups.min.js +++ b/app/tmpl/module/admin/staffgroups.min.js @@ -1 +1,7 @@ -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,'Supprimer','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,'Supprimer','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()}} diff --git a/app/tmpl/module/admin/users.js b/app/tmpl/module/admin/users.js index cbaeb70a..7d8defd8 100644 --- a/app/tmpl/module/admin/users.js +++ b/app/tmpl/module/admin/users.js @@ -3,7 +3,7 @@ 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({ @@ -13,7 +13,7 @@ let users ={ users.choices["id_usergroup"] = new SlimSelect({ select: "#id_usergroup", showSearch: false - }); + }); users.choices["schemaaccess"] = new SlimSelect({ select: "#schemaaccess", @@ -27,7 +27,7 @@ let users ={ users.getusergroups(); users.getschemata(); users.getUserStaffGroups(); - }, + }, inittable: function(){ users.initform(); users.tbl = new Tabulator("#tbl_users", { @@ -69,7 +69,7 @@ let 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"); }); @@ -111,18 +111,18 @@ let 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,{},"Oui","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}; @@ -135,13 +135,13 @@ let users ={ } }); } - /*![% 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= '
Il existe déjà uncompte avec cette addresse E-Mail!
'; } else { @@ -156,7 +156,7 @@ let users ={ } }, dlgchangelogin: function(){ - /*![% IF session.usergroup == 'admin' %]*/ + /* @preserve[% IF session.usergroup == 'admin' %]*/ let sel = users.tbl.getSelectedData(); if (sel[0]){ document.getElementById("nunmsg").innerHTML= ""; @@ -164,7 +164,7 @@ let users ={ document.getElementById("newuseremail").value=sel[0].username; document.getElementById('dlgusername').style.display='block'; } - /*![% END %]*/ + /* @preserve[% END %]*/ }, afterdeletecallback: function(data){ users.gettbldata(); @@ -189,7 +189,7 @@ let users ={ //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'); }); } @@ -233,7 +233,7 @@ let users ={ 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'; diff --git a/app/tmpl/module/admin/users.min.js b/app/tmpl/module/admin/users.min.js index 5b7c6600..f7d7f788 100644 --- a/app/tmpl/module/admin/users.min.js +++ b/app/tmpl/module/admin/users.min.js @@ -1,10 +1,27 @@ -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:''}}]})},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,'Supprimer','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='
Entreprise ne doit pas être vide!
',!1):0==users.choices.id_usergroup.selected().length?(document.getElementById("usermsg").innerHTML='
Accès Groupe ne doit pas être vide!
',!1):0==users.choices.schemaaccess.selected().length?(document.getElementById("usermsg").innerHTML='
Accès Entreprise ne doit pas être vide!
',!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,{},'Oui','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!",'
'):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='
Il existe déjà uncompte avec cette addresse E-Mail!
':(dataform.saveschemafield(document.getElementById("newuseremail"),"public"),users.gettbldata(),document.getElementById("dlgusername").style.display="none")}):document.getElementById("nunmsg").innerHTML='
inserez un email valide s.v.p.!
'},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:''}}]})},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,'Supprimer','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='
Entreprise ne doit pas être vide!
',!1 +let s=users.choices["id_usergroup"].selected() +if(0==s.length)return document.getElementById("usermsg").innerHTML='
Accès Groupe ne doit pas être vide!
',!1 +let t=users.choices["schemaaccess"].selected() +return 0==t.length?(document.getElementById("usermsg").innerHTML='
Accès Entreprise ne doit pas être vide!
',!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,{},'Oui','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!",'
'):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='
Il existe déjà uncompte avec cette addresse E-Mail!
':(dataform.saveschemafield(document.getElementById("newuseremail"),"public"),users.gettbldata(),document.getElementById("dlgusername").style.display="none")}):document.getElementById("nunmsg").innerHTML='
inserez un email valide s.v.p.!
'},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()}} diff --git a/app/tmpl/module/admin/vacancydays.js b/app/tmpl/module/admin/vacancydays.js index 67750abd..9b23da33 100644 --- a/app/tmpl/module/admin/vacancydays.js +++ b/app/tmpl/module/admin/vacancydays.js @@ -28,7 +28,7 @@ let vacancydays ={ {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){ diff --git a/app/tmpl/module/admin/vacancydays.min.js b/app/tmpl/module/admin/vacancydays.min.js index 4f37c6f2..3dedc1f6 100644 --- a/app/tmpl/module/admin/vacancydays.min.js +++ b/app/tmpl/module/admin/vacancydays.min.js @@ -1 +1,3 @@ -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(){}} diff --git a/app/tmpl/module/admin/vacancytypes.js b/app/tmpl/module/admin/vacancytypes.js index 06fc94b5..04b983f8 100644 --- a/app/tmpl/module/admin/vacancytypes.js +++ b/app/tmpl/module/admin/vacancytypes.js @@ -29,7 +29,7 @@ let vacancytypes ={ ] }); vacancytypes.gettbldata(); - }, + }, gettbldata: function(){ postData("db.cgi", { "get": "gvacancytypes","schemata":"public"}).then(data => { vacancytypes.tbl.setData(data.result.sqldata); diff --git a/app/tmpl/module/admin/vacancytypes.min.js b/app/tmpl/module/admin/vacancytypes.min.js index c56a5964..d2673fcf 100644 --- a/app/tmpl/module/admin/vacancytypes.min.js +++ b/app/tmpl/module/admin/vacancytypes.min.js @@ -1 +1,3 @@ -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(){}} diff --git a/app/tmpl/module/admin/worktimes.js b/app/tmpl/module/admin/worktimes.js index 72fee6c1..5a3fde00 100644 --- a/app/tmpl/module/admin/worktimes.js +++ b/app/tmpl/module/admin/worktimes.js @@ -31,7 +31,7 @@ let worktimes = { { title: "standard", field: "isdefault",headerSort: false,formatter:"tickCross",hozAlign:"center", formatterParams:{allowEmpty:true,allowTruthy:true,tickElement:''}} ] - }); + }); worktimes.initform(); }, gettbldata: function(){ diff --git a/app/tmpl/module/admin/worktimes.min.js b/app/tmpl/module/admin/worktimes.min.js index 584a86d6..757a919a 100644 --- a/app/tmpl/module/admin/worktimes.min.js +++ b/app/tmpl/module/admin/worktimes.min.js @@ -1 +1,6 @@ -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
quotidienne",field:"mindailyrecuperation",headerSort:!1},{title:"standard",field:"isdefault",headerSort:!1,formatter:"tickCross",hozAlign:"center",formatterParams:{allowEmpty:!0,allowTruthy:!0,tickElement:""}}]}),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,'Supprimer','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
quotidienne",field:"mindailyrecuperation",headerSort:!1},{title:"standard",field:"isdefault",headerSort:!1,formatter:"tickCross",hozAlign:"center",formatterParams:{allowEmpty:!0,allowTruthy:!0,tickElement:""}}]}),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,'Supprimer','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}} diff --git a/app/tmpl/module/company/company.js b/app/tmpl/module/company/company.js index b7f6d909..9f17d1c7 100644 --- a/app/tmpl/module/company/company.js +++ b/app/tmpl/module/company/company.js @@ -35,7 +35,7 @@ let company = { }); dataform.fillselectlist(company.choices["reportperiodunit"],periodunits,'value','text'); }, - + edit: function(){ company.current_schemata = schemata; dataform.cleanform2("company",company.choices); diff --git a/app/tmpl/module/company/company.min.js b/app/tmpl/module/company/company.min.js index 06d93841..4d37b912 100644 --- a/app/tmpl/module/company/company.min.js +++ b/app/tmpl/module/company/company.min.js @@ -1 +1,2 @@ -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)}} diff --git a/app/tmpl/module/company/staffgroups.js b/app/tmpl/module/company/staffgroups.js index c8ebe1d7..3bccfff6 100644 --- a/app/tmpl/module/company/staffgroups.js +++ b/app/tmpl/module/company/staffgroups.js @@ -32,7 +32,7 @@ let staffgroups = { }); } - }, + }, remove: function(){ let udata = staffgroups.tbl.getSelectedData(); var data = staffgroups.tbl.getData(); diff --git a/app/tmpl/module/company/staffgroups.min.js b/app/tmpl/module/company/staffgroups.min.js index f3bddaf8..4c235cb2 100644 --- a/app/tmpl/module/company/staffgroups.min.js +++ b/app/tmpl/module/company/staffgroups.min.js @@ -1 +1,8 @@ -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,'Supprimer','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,'Supprimer','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}} diff --git a/app/tmpl/module/company/users.js b/app/tmpl/module/company/users.js index ea8ded01..ea161c53 100644 --- a/app/tmpl/module/company/users.js +++ b/app/tmpl/module/company/users.js @@ -33,15 +33,15 @@ let users ={ }); }, 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,{},"Oui","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}; @@ -54,6 +54,6 @@ let users ={ } }); } - /*![% END %]*/ + /* @preserve[% END %]*/ } } diff --git a/app/tmpl/module/company/users.min.js b/app/tmpl/module/company/users.min.js index 85a73a73..ceb05781 100644 --- a/app/tmpl/module/company/users.min.js +++ b/app/tmpl/module/company/users.min.js @@ -1,7 +1,10 @@ -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:''}}]})},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,{},'Oui','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!",'
'):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:''}}]})},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,{},'Oui','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!",'
'):showmessagedlg("Erreur!","Une erreur c'est produite pour l'envoie d'un nouveau mot de passe!")})} +/* @preserve[% END %]*/}} diff --git a/app/tmpl/module/periods/reportperiod.js b/app/tmpl/module/periods/reportperiod.js index 8ab9e6ae..e23359b3 100644 --- a/app/tmpl/module/periods/reportperiod.js +++ b/app/tmpl/module/periods/reportperiod.js @@ -4,7 +4,7 @@ function initpage(){ schemata = app.getCurrentSchemata(); reportperiod.inittable(); staffperiodweeks.inittable(); -} +} let reportperiod ={ tblfilter: null, diff --git a/app/tmpl/module/periods/reportperiod.min.js b/app/tmpl/module/periods/reportperiod.min.js index 7e539f1a..047fcd6a 100644 --- a/app/tmpl/module/periods/reportperiod.min.js +++ b/app/tmpl/module/periods/reportperiod.min.js @@ -1 +1,9 @@ -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:'Prénom',field:"prename",headerSort:!1},{title:'Nom',field:"surname",headerSort:!1},{title:'Contrat',field:"contracthours",hozAlign:"right",headerSort:!1},{title:'Travail',field:"workhours",hozAlign:"right",headerSort:!1},{title:'Récup',field:"recuperationhours",hozAlign:"right",headerSort:!1,formatter:periodRecupFormatter},{title:'Congé',field:"vacancynormal",hozAlign:"right",headerSort:!1},{title:'Congé
maladie
',field:"vacancyill",hozAlign:"right",headerSort:!1},{title:'Total',field:"totalhours",hozAlign:"right",headerSort:!1,formatter:periodTotalFormatter},{title:'Décompte
reporté
',field:"transferedhours",hozAlign:"right",headerSort:!1},{title:'h. suppl.
payés
',field:"payedhours",hozAlign:"right",headerSort:!1,headerVertical:!0},{title:'Décompte
fin POT
',field:"hoursdiff",hozAlign:"right",headerSort:!1},{title:'suppl.
+44h
',field:"suppvacancy44hours",hozAlign:"right",headerSort:!1,headerVertical:!0},{title:'suppl.
trav. dim.
',field:"suppvacancysunwork",hozAlign:"right",headerSort:!1,headerVertical:!0},{title:"moy.
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,'Ajouter','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("",'
Attendez s.v.p.!
'),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()Prénom',field:"prename",headerSort:!1},{title:'Nom',field:"surname",headerSort:!1},{title:'Contrat',field:"contracthours",hozAlign:"right",headerSort:!1},{title:'Travail',field:"workhours",hozAlign:"right",headerSort:!1},{title:'Récup',field:"recuperationhours",hozAlign:"right",headerSort:!1,formatter:periodRecupFormatter},{title:'Congé',field:"vacancynormal",hozAlign:"right",headerSort:!1},{title:'Congé
maladie
',field:"vacancyill",hozAlign:"right",headerSort:!1},{title:'Total',field:"totalhours",hozAlign:"right",headerSort:!1,formatter:periodTotalFormatter},{title:'Décompte
reporté
',field:"transferedhours",hozAlign:"right",headerSort:!1},{title:'h. suppl.
payés
',field:"payedhours",hozAlign:"right",headerSort:!1,headerVertical:!0},{title:'Décompte
fin POT
',field:"hoursdiff",hozAlign:"right",headerSort:!1},{title:'suppl.
+44h
',field:"suppvacancy44hours",hozAlign:"right",headerSort:!1,headerVertical:!0},{title:'suppl.
trav. dim.
',field:"suppvacancysunwork",hozAlign:"right",headerSort:!1,headerVertical:!0},{title:"moy.
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,'Ajouter','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("",'
Attendez s.v.p.!
'),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() {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(); diff --git a/app/tmpl/module/periods/staffperiodweeks.min.js b/app/tmpl/module/periods/staffperiodweeks.min.js index 2d083b19..73ffb6fc 100644 --- a/app/tmpl/module/periods/staffperiodweeks.min.js +++ b/app/tmpl/module/periods/staffperiodweeks.min.js @@ -1,6 +1,53 @@ -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:'✖',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:'✖',onChange:function(){staffperiodweeks.setrecuperationhours()}}),staffperiodweeks.getvacancy(),staffperiodweeks.getrecuperation(),staffperiodweeks.getdefaultdaylimits();let tfields=document.getElementsByClassName("timefield");for(let i=0;itravail",field:"dspworkdata",headerSort:!1,hozAlign:"center",formatter:worktimeFormatter},{title:"heures de
pause",field:"dsppausedata",headerSort:!1,hozAlign:"center",formatter:sizeFormatter},{title:"total
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
contrat",field:"diffhours",hozAlign:"center",formatter:nullFormatter,headerSort:!1,bottomCalc:staffperiodweeks.setweekdiffhours},{title:"moy.
hebd.",field:"avgweekhours",hozAlign:"center",headerSort:!1,formatter:nullFormatter,bottomCalc:staffperiodweeks.setavgweekhours},{title:"heures libres
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;"),''+staffperiodweeks.weekdata[data[0].weekstart].totalhours+""}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("",'
Attendez s.v.p.!
'),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),e1e1&&(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),pe2e2&&(staffperiodweeks.disablesave=!0,msg="les pauses doivent être dans les heures de travail!")),!0===staffperiodweeks.disablesave?document.getElementById("staffreportperioddays_errmsg").innerHTML='
'+msg+"
":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{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{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{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"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.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()"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()+"
"+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()+"
"+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")+"
"+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.daydate0&&(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:'✖',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:'✖',onChange:function(){staffperiodweeks.setrecuperationhours()}}),staffperiodweeks.getvacancy(),staffperiodweeks.getrecuperation(),staffperiodweeks.getdefaultdaylimits() +let e=document.getElementsByClassName("timefield") +for(let t=0;ttravail",field:"dspworkdata",headerSort:!1,hozAlign:"center",formatter:worktimeFormatter},{title:"heures de
pause",field:"dsppausedata",headerSort:!1,hozAlign:"center",formatter:sizeFormatter},{title:"total
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
contrat",field:"diffhours",hozAlign:"center",formatter:nullFormatter,headerSort:!1,bottomCalc:staffperiodweeks.setweekdiffhours},{title:"moy.
hebd.",field:"avgweekhours",hozAlign:"center",headerSort:!1,formatter:nullFormatter,bottomCalc:staffperiodweeks.setavgweekhours},{title:"heures libres
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;"),''+staffperiodweeks.weekdata[t[0].weekstart].totalhours+""}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("",'
Attendez s.v.p.!
'),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),ii&&(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),mn&&(staffperiodweeks.disablesave=!0,T="les pauses doivent être dans les heures de travail!")),!0===staffperiodweeks.disablesave?document.getElementById("staffreportperioddays_errmsg").innerHTML='
'+T+"
":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{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{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{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"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.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()"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()+"
"+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()+"
"+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")+"
"+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.daydate0&&(e.getElement().style.color="orange"),e.getValue())} diff --git a/app/tmpl/module/staff/staff.js b/app/tmpl/module/staff/staff.js index fa08305c..c40ad173 100644 --- a/app/tmpl/module/staff/staff.js +++ b/app/tmpl/module/staff/staff.js @@ -37,17 +37,17 @@ let staff ={ 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){ @@ -56,7 +56,7 @@ let staff ={ else { stflds[f].disabled = true;} } - /*![% END %]*/ + /* @preserve[% END %]*/ staff.getstaffgroups(); }, inittable: function(){ diff --git a/app/tmpl/module/staff/staff.min.js b/app/tmpl/module/staff/staff.min.js index 363dcfaa..d8e962cf 100644 --- a/app/tmpl/module/staff/staff.min.js +++ b/app/tmpl/module/staff/staff.min.js @@ -1,9 +1,22 @@ -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='
les champs "date début","heures/semaine","jours/semaine" et "département" sont requis!
',!1;showdataloaddlg("",'
Attendez s.v.p.!
'),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,'Supprimer','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='
les champs "date début","heures/semaine","jours/semaine" et "département" sont requis!
',!1 +showdataloaddlg("",'
Attendez s.v.p.!
'),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,'Supprimer','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))}} diff --git a/app/tmpl/module/workplans/workplans.js b/app/tmpl/module/workplans/workplans.js index 902793b4..4d97ec0f 100644 --- a/app/tmpl/module/workplans/workplans.js +++ b/app/tmpl/module/workplans/workplans.js @@ -192,17 +192,22 @@ let workplans ={ 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(); }); diff --git a/app/tmpl/module/workplans/workplans.min.js b/app/tmpl/module/workplans/workplans.min.js index 973eb65f..83d511a5 100644 --- a/app/tmpl/module/workplans/workplans.min.js +++ b/app/tmpl/module/workplans/workplans.min.js @@ -1 +1 @@ -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",crossElement:""}}]}),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
travail",field:"dspworkdata",headerSort:!1,hozAlign:"center",formatter:sizeFormatter},{title:"heures de
pause",field:"dsppausedata",headerSort:!1,hozAlign:"center",formatter:sizeFormatter},{title:"total
pause",field:"pause",width:80,headerSort:!1},{title:"coupure",field:"interruption",width:90,headerSort:!1},{title:"total
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,'Supprimer','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),e1e1&&(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),pe2e2&&(workplans.disablesave=!0,msg="les pauses doivent être dans les heures de travail!")),1==workplans.disablesave?document.getElementById("workplanday_errmsg").innerHTML='
'+msg+"
":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",crossElement:""}}]}),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
travail",field:"dspworkdata",headerSort:!1,hozAlign:"center",formatter:sizeFormatter},{title:"heures de
pause",field:"dsppausedata",headerSort:!1,hozAlign:"center",formatter:sizeFormatter},{title:"total
pause",field:"pause",width:80,headerSort:!1},{title:"coupure",field:"interruption",width:90,headerSort:!1},{title:"total
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,'Supprimer','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),e1e1&&(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),pe2e2&&(workplans.disablesave=!0,msg="les pauses doivent être dans les heures de travail!")),1==workplans.disablesave?document.getElementById("workplanday_errmsg").innerHTML='
'+msg+"
":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 diff --git a/dev/potpwd.txt b/dev/potpwd.txt index 2b715ac7..903cfcfa 100644 --- a/dev/potpwd.txt +++ b/dev/potpwd.txt @@ -1,5 +1,5 @@ POT LIVE: ksaffran@dks.lu -> ntHesDUDWeQVs -POT LOCAL: ksaffran@dks.lu -> GSmO4BwBEJ4aA +--POT LOCAL: ksaffran@dks.lu -> GSmO4BwBEJ4aA Login: marianne@elch.lu Mot de Passe: r3vGjytohu4ZU diff --git a/dev/testcurl.sh b/dev/testcurl.sh new file mode 100644 index 00000000..c9dbb41f --- /dev/null +++ b/dev/testcurl.sh @@ -0,0 +1,2 @@ +#!/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 diff --git a/robots.txt b/website/robots.txt similarity index 65% rename from robots.txt rename to website/robots.txt index 4d72a568..9cbb5989 100644 --- a/robots.txt +++ b/website/robots.txt @@ -3,5 +3,4 @@ Allow: / Disallow: /js/ Disallow: /css/ Disallow: /cgv/ -Disallow: /api/ Disallow: /downloads/ \ No newline at end of file