auto commit on 2019-03-08 17:32
authorKilian Saffran <ksaffran@dks.lu>
Fri, 8 Mar 2019 16:32:23 +0000 (17:32 +0100)
committerKilian Saffran <ksaffran@dks.lu>
Fri, 8 Mar 2019 16:32:23 +0000 (17:32 +0100)
app_v3/chrome/content/js/system.js
app_v3/chrome/content/modules/staff/coworker.html
app_v3/chrome/content/modules/staff/js/coworker.js

index 207051f..6be1ac3 100644 (file)
@@ -1,10 +1,11 @@
 //Source-code licensed under EUPL v1.2 ( Copyright 2019 By DKS s.à r.l. - Kilian Saffran - Luxembourg ) 
 
-//  function jsdump(str) {
-//    Components.classes['@mozilla.org/consoleservice;1']
-//              .getService(Components.interfaces.nsIConsoleService)
-//              .logStringMessage(str);
-//  }
+ function jsdump(str) {
+   
+   Components.classes['@mozilla.org/consoleservice;1']
+             .getService(Components.interfaces.nsIConsoleService)
+             .logStringMessage(str);
+ }
 
 Components.utils["import"]("resource://gre/modules/FileUtils.jsm");
 Components.utils["import"]("resource://gre/modules/Services.jsm");
index 572013d..2368b11 100644 (file)
   <meta http-equiv="pragma" content="no-cache" />
   <link href="../../web/css/bootstrap.min.css" rel="stylesheet" type="text/css">
   <!--<link href="../../web/css/bootstrap-theme.min.css" rel="stylesheet" type="text/css">-->
-  <link href="../../web/css/datatables.min.css" rel="stylesheet" type="text/css">
-  <link href="../../web/css/dataTables.bootstrap.min.css" rel="stylesheet" type="text/css">
+  <!--<link href="../../web/css/datatables.min.css" rel="stylesheet" type="text/css">
+  <link href="../../web/css/dataTables.bootstrap.min.css" rel="stylesheet" type="text/css">-->
+  <link href="../../web/vendor/bootstrap-table/bootstrap-table.css" rel="stylesheet" type="text/css">
   <link href="../../web/css/bootstrap-datetimepicker.min.css" rel="stylesheet" type="text/css">
   <!-- <link href="../../web/css/bootstrap-timepicker.min.css" rel="stylesheet" type="text/css"> -->
   <link href="../../web/css/glyphicons.css" rel="stylesheet" type="text/css">
   <link href="../../web/css/jquery.minicolors.css" rel="stylesheet" type="text/css">
   <link href="../../web/css/creorga.css" rel="stylesheet" type="text/css">
+  <style>
+    #tbl_vacancy  tbody {
+      display:block;
+      overflow-y: scroll;
+      height:200px;
+      width:100%;
+    }
+    #tbl_vacancy thead tr{
+      display:block;
+    }
+  </style>
 </head>
 
 <body>
 
             <div class="tab-content">
               
-              <div id="activity" class="tab-pane">
+              <div id="activity" class="tab-pane" id="mnuactivity">
                 <div class="form-group form-inline">
                       <label for="year_organisation">Année:</label>
                       <div class="input-group">
                     </div>
                 <button onclick="dlg_event({'uuid':''},'ins');" class="btn btn-primary" type="button"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span>&nbsp;Activité</button>
                 </div>
-                 <table id="tbl_activity" class="table table-striped">
-                  
+                 <table id="tbl_activity" class="table table-striped table-bordered">
+                  <thead></thead>
+                  <tfoot></tfoot>
+                  <tbody></tbody>
                 </table>
               </div>
               <div id="vacancy" class="tab-pane">
-                <div class="form-group form-inline">
+                <div class="form-group form-inline" id="mnuvac">
                       <label for="year_vacancy">Année:</label>
                       <div class="input-group">
                         <select id="year_vacancy" class="selyear">
                         </div>
                         
                       </div>
-                      <!--<div class="form-group">
-                        <label for="vacancylastyearrest">congé à récupérer</label>
-                        
-                        <div class="input-group" style="width: 120px;">
-                          <input type="text" id="vacancylastyearrest" class="form-control" value="0" readonly="1">
-                          <span class="input-group-addon">h</span>
-                        </div>
-                        
-                      </div>-->
                 </div>
-              
-                        <table id="tbl_vacancy" class="table table-striped">
-                          
+                    <div style="width: 1220px;">
+                        <table id="tbl_vacancy" class="table table-striped table-bordered" >
+                          <thead>
+                            <tr>
+                                <th class="noprint" rowspan="2" style="width: 120px;"></th>
+                                <th  rowspan="2" style="width: 80px;">année</th>
+                                <th colspan="2">Date</th>
+                                <th>Heures</th>
+                                <th rowspan="2" style="width: 250px;">Description</th>
+                                <th  rowspan="2" style="width: 100px;">type</th>
+                                <th colspan="3">demandé</th>
+                                <th colspan="3">validé</th>
+                            </tr>
+                            <tr>
+                                
+                                
+                                <th style="width: 100px;">début</th>
+                                <th style="width: 100px;">fin</th>
+                                <th  style="width: 60px;">par jour</th>
+                                
+                                <th  style="width: 60px;">normal</th>
+                                <th  style="width: 60px;">except.</th>
+                                <th  style="width: 60px;">maladie</th>
+                                <th  style="width: 60px;">normal</th>
+                                <th  style="width: 60px;">except.</th>
+                                <th  style="width: 60px;">maladie</th>
+                           </tr>
+                          </thead>      
+                          <tbody></tbody>
+                          <tfoot></tfoot>
                         </table>
-                    
+                      </div>    
               
               <div id="vacancystatus" style=" white-space: nowrap; width: 100%; text-align: center;"></div>  
               
       </div>
   <script src="../../web/js/jquery.min.js" type="text/javascript"></script>
   <script src="../../web/js/bootstrap.min.js" type="text/javascript"></script>
-  <script src="../../web/js/datatables.min.js" type="text/javascript"></script>
+  <!-- <script src="../../web/js/datatables.min.js" type="text/javascript"></script> -->
+  <script src="../../web/vendor/bootstrap-table/bootstrap-table.min.js" type="text/javascript"></script>
+  <script src="../../web/vendor/bootstrap-table/locale/bootstrap-table-fr-FR.js" type="text/javascript"></script> 
   <script src="../../web/js/moment-with-locales.js" type="text/javascript"></script>
   <script src="../../web/js/bootstrap-datetimepicker.min.js" type="text/javascript"></script>
   <script src="../../web/js/jquery.minicolors.min.js" type="text/javascript"></script>
index f72bd96..0cbcdef 100644 (file)
@@ -2,12 +2,13 @@
 var pconfig = null;
 var delplan = null;
 var delvacation = null;
-var wh= window.innerHeight -440;
+var wh= window.innerHeight -320;
 var curdatediff = null;
 var redate = /\d\d.\d\d.\d\d\d\d/;
 var curfreq ={};
 var maxdayhours = null;
 var maxhalfdayhours = null;
+var tblvac = null;
 //var lictype = apppref.getpreference("support.lictype"); 
 
 function initdata() {
@@ -297,52 +298,23 @@ function load_event_data() {
   $("#tbl_activity").append(tblbody.join(''));
   $("#tbl_activity").append("</tbody>");
 
-  tblcal = $("#tbl_activity").dataTable({
-    "language": {
-      "url": "../../web/js/locale/datatable_fr.json"
-    },
-    "paging": false,
-    "scrollY": wh + "px",
-    "scrollCollapse": true,
-    "ordering": true,
-    "info": false,
-    "filter": false,
-    "destroy": true
+  $("#tbl_activity").bootstrapTable({
+    locale: 'fr-FR',
+    pagination: false,
+    search: false,
+    height: wh,
+    toolbar: "#mnuact"
   });
   
-  //$('#tbl_activity').on( 'search.dt', function () {
-  //  
-  //  pconfig.filter = tblcal.api().search();
-  //
-  //  apppref.setpreference("pageconfig.calactivity",pconfig);
-  //} );
-
-  //$('#tbl_activity').on( 'order.dt', function () {
-  //  pconfig.order= tblcal.fnSettings().aaSorting;
-  //
-  //  apppref.setpreference("pageconfig.calactivity",pconfig);
-  //  
-  //} );
-  
-//    if (pconfig.filter) {
-//      tblcal.fnFilter(pconfig.filter);
-//    }
-    if (pconfig.order) {
-      tblcal.fnSort(pconfig.order);
-    }
-    if (/*(!pconfig.filter) && */ (!pconfig.order)) {
-      tblcal.fnDraw();
-    }
 }
 
 function load_table_vacancy() {
-       //maxdayhours = (parseFloat($("#staff_weekhours").val())/5).toFixed(2);
-  //maxhalfdayhours = (maxdayhours/2).toFixed(2);
+  tblvac =null;
   var yearvacanysql = "select hours from staffvacancydays where staffuuid='"+ pconfig.uuid+"' and vacancyyear='"+ $("#year_vacancy").val() +"';";
   var yearvac = appdb.dbquery(yearvacanysql);
   var nvyear = "";
-  //jsdump("XXSQL:" + JSON.stringify(yearvac) + "\n");
-  if (yearvac.sqldata){
+  if ((yearvac) && (yearvac.sqldata.length > 0)){
     nvyear = yearvac.sqldata[0].hours;
   }
   $("#vacancyyeartotal").val(nvyear);
@@ -362,39 +334,56 @@ function load_table_vacancy() {
   "(select count(v.vacancydate) from vacancy v where v.vacancydateto is null and strftime('%s',v.vacancydate) not in ('0','6') and v.vacancydate between vc.datefrom and vc.dateto) as vdays,st.weekhours,st.weekhours / maxdayhours as days_per_week,vc.timefrom,vc.timeto,st.maxdayhours, " +
   "cast(cast(strftime(\"%s\",vc.timeto) as int)- cast(strftime(\"%s\",vc.timefrom) as int) as real)/3600 as hours " +
   "from vacancycalendar vc join staff st on (vc.staffuuid=st.uuid) where vc.staffuuid='"+ pconfig.uuid+"' and vc.vacyear=" + pconfig.year+");";
-  //   var vacdatasql = "SELECT '<button type=\"button\" class=\"btn btn-primary\" onclick=\"dlg_vacancy({''uuid'':'''|| uuid || '''},''upd'');\"><span class=\"glyphicon glyphicon-pencil\"></span></button> <button type=\"button\" class=\"btn btn-danger\" onclick=\"confirm_delete_vacancy(''' || uuid || ''');\"><span class=\"glyphicon glyphicon-remove\"></span></button>' AS action,vacyear," +
-//    "CASE WHEN datefrom!=dateto THEN 'du:' || strftime('%d.%m.%Y', CASE WHEN datefrom < DATE('"+ pconfig.year +"-01-01') THEN DATE('"+ pconfig.year +"-01-01') ELSE datefrom END) || '<br/>au: ' || strftime('%d.%m.%Y', CASE WHEN dateto > DATE('"+ pconfig.year +"-12-31') THEN DATE('"+ pconfig.year +"-12-31') ELSE dateto END) ELSE strftime('%d.%m.%Y',datefrom) END AS planningdaterange," +
-//   //"case when datefrom!=dateto then strftime('%d.%m.%Y',case when datefrom < date('"+ pconfig.year +"-01-01') then 'de: ' date('"+ pconfig.year +"-01-01') else datefrom end) || '<br/>à: ' || strftime('%d.%m.%Y',case when dateto > date('"+ pconfig.year +"-12-31') then date('"+ pconfig.year +"-12-31') else dateto end) else strftime('%d.%m.%Y',datefrom) end as planningdaterange, " +
-// "case when  timefrom=timeto then '"+ maxdayhours+ "' || 'h' else printf(\"%.2f\",cast(cast(strftime(\"%s\",timeto) as int)- cast(strftime(\"%s\",timefrom) as int) as real)/3600) || 'h' || case when timefrom!='00:00' then '<br/> à partir de ' || timefrom else '' end end as hourrange," +
-//    //"case when  timefrom=timeto then '8h' when  (cast(substr(timeto,1,2) as int) - cast(substr(timefrom,1,2) as int))= 4 then '4h' || case when timefrom!='00:00' then '<br/> à partir de ' || timefrom else '' end else (cast(substr(timeto,1,2) as int) - cast(substr(timefrom,1,2) as int)) || 'h' || case when timefrom!='00:00' then '<br/> à partir de ' || timefrom else '' end end as hourrange, "+ 
-// "description, " +
-// "case when type=0 then 'normal' when type=1 then 'exceptionnelle' when type=-1 then 'maladie' end as vacancytype,case when accepted='1' and type != -1 then '<span style=\"font-weight: bold; color: green;\">OUI</span>' else '<span style=\"font-weight: bold; color: red\">NON</span>' end as accepted FROM vacancycalendar where staffuuid='"+ pconfig.uuid +"' and (strftime('%Y',dateto)='"+ pconfig.year +"' or strftime('%Y',datefrom)='"+ pconfig.year +"');";
-//jsdump("XXSQL:" + vacdatasql + "\n");
-var vacdata = appdb.dbqueryarray(vacdatasql);
-//jsdump("XXSQL:" + JSON.stringify(vacdata) + "\n");
   
-  $('#tbl_vacancy').html("");
-  //$('#tbl_vacancy').append('<tfoot><tr><th></th><th colspan="4" style="text-align: center;"></th></tr></tfoot>');
-  //getlastyearsrest();
-  //calcvacancy();
-  //vacdata.sqlhead.join(",") + "\n");
-  var headerdata = getlabels(vacdata.sqlhead.join(","));
+//jsdump("XXSQL:" + vacdatasql + "\n");
+var vacdata = appdb.dbquery(vacdatasql);
   
+  // $('#tbl_vacancy').html("");
+  // var headerdata = getlabelswithkey("action,vacyear,datefrom,dateto,dayhours,description,thnormalnv,thextranv,thillnv,thnormalval,thextraval,thillval,vacancytype,accepted");
+  $("#tbl_vacancy > tbody").html("");
+  //$("#tbl_vacancy > tfoot").html("");
+  // $("#tbl_vacancy > thead").html("");
+  // var tblheader = '<tr>';
+  // for (var h in headerdata){
+  //   if ((headerdata[h].keyname == 'act') && (headerdata[h].class.indexOf('action1btn') == -1)){
+  //     headerdata[h].class +=" action1btn";
+  //   }
+  //   tblheader += '<th class="' + headerdata[h].class +'" data-sortable="true" style="height: 80px;">'+ headerdata[h].title+'</th>';
+  // }
+  // tblheader += '</tr>';
+  // $("#tbl_vacancy").append('<thead>'+ tblheader + '</thead>');
+  // jsdump(tblheader);
+  // $("#tbl_vacancy").append('<tbody>');
+  for (var i in vacdata.sqldata){
+    var row = vacdata.sqldata[i];
+    
+        var tr = '<tr>';
+        tr += '<td style="width: 120px;">' + row.action + '</td>';
+        tr += '<td style="width: 80px;">' + row.vacyear + '</td>';
+        tr += '<td style="width: 100px;">' + row.datefrom + '</td>';
+        tr += '<td style="width: 100px;">' + row.dateto + '</td>';
+        tr += '<td style="width: 60px;">' + row.dayhours + '</td>';
+        tr += '<td style="width: 250px;">' + row.description + '</td>';
+        tr += '<td style="width: 100px;">' + row.vacancytype + '</td>';
+        tr += '<td style="color: red;width: 60px;">' + row.thnormalnv + '</td>';
+        tr += '<td style="color: red;width: 60px;">' + row.thextranv + '</td>';
+        tr += '<td style="color: red;width: 60px;">' + row.thillnv + '</td>';
+        tr += '<td style="color: green;width: 60px;">' + row.thnormalval + '</td>';
+        tr += '<td style="color: green;width: 60px;">' + row.thextraval + '</td>';
+        tr += '<td style="color: green;width: 60px;">' + row.thillval + '</td>';
+        tr += '<tr>';
+        $("#tbl_vacancy > tbody").append(tr);
+
+    }
+//  $("#tbl_vacancy").bootstrapTable({
+//     locale: 'fr-FR',
+//     pagination: false,
+//     search: false,
+//     //height: wh,
+//     toolbar: "#mnuvac"
+//   });
+
   
-  $("#tbl_vacancy").dataTable({
-    "language": {
-      "url": "../../web/js/locale/datatable_fr.json"
-    },
-    "data": vacdata.sqldata,
-    "columns": headerdata,
-    "paging": false,
-    "scrollY": wh + "px",
-    "scrollCollapse": true,
-    "ordering": true,
-    "info": false,
-    "filter": false,
-    "destroy": true
-  });
   
 }