<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> 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>
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() {
$("#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);
"(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
- });
}