2 * Copyright 2016-2017 ZTE Corporation.
\r
4 * Licensed under the Apache License, Version 2.0 (the "License");
\r
5 * you may not use this file except in compliance with the License.
\r
6 * You may obtain a copy of the License at
\r
8 * http://www.apache.org/licenses/LICENSE-2.0
\r
10 * Unless required by applicable law or agreed to in writing, software
\r
11 * distributed under the License is distributed on an "AS IS" BASIS,
\r
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
13 * See the License for the specific language governing permissions and
\r
14 * limitations under the License.
\r
16 var serverPageTable = {};
\r
17 /* Bootstrap style full number pagination control */
\r
18 $.fn.dataTableExt.oApi.fnPagingInfo = function ( oSettings )
\r
21 "iStart": oSettings._iDisplayStart,
\r
22 "iEnd": oSettings.fnDisplayEnd(),
\r
23 "iLength": oSettings._iDisplayLength,
\r
24 "iTotal": oSettings.fnRecordsTotal(),
\r
25 "iFilteredTotal": oSettings.fnRecordsDisplay(),
\r
26 "iPage": Math.ceil( oSettings._iDisplayStart / oSettings._iDisplayLength ),
\r
27 "iTotalPages": Math.ceil( oSettings.fnRecordsDisplay() / oSettings._iDisplayLength )
\r
31 $.extend( $.fn.dataTableExt.oPagination, {
\r
32 "bootstrap_extended": {
\r
33 "fnInit": function( oSettings, nPaging, fnDraw ) {
\r
34 var oLang = oSettings.oLanguage.oPaginate;
\r
35 var oPaging = oSettings.oInstance.fnPagingInfo();
\r
37 var fnClickHandler = function ( e ) {
\r
39 if ( oSettings.oApi._fnPageChange(oSettings, e.data.action) ) {
\r
40 fnDraw( oSettings );
\r
45 '<div class="pagination-panel"> ' + oLang.sPage + ' ' +
\r
46 '<a href="#" class="btn btn-sm default prev disabled" title="' + oLang.sPrevious + '"><i class="fa fa-angle-left"></i></a>' +
\r
47 '<input type="text" class="pagination-panel-input input-mini input-inline input-sm" maxlenght="5" style="text-align:center; margin: 0 4px; border: 1px solid rgb(169, 169, 169);height: 28px;">' +
\r
48 '<a href="#" class="btn btn-sm default next disabled" title="' + oLang.sNext + '"><i class="fa fa-angle-right"></i></a> ' +
\r
49 oLang.sPageOf + ' <span class="pagination-panel-total"></span>' +
\r
53 var els = $('a', nPaging);
\r
55 $(els[0]).bind('click.DT', { action: "previous" }, fnClickHandler );
\r
56 $(els[1]).bind('click.DT', { action: "next" }, fnClickHandler);
\r
58 $('.pagination-panel-input', nPaging).bind('change.DT', function(e) {
\r
59 var oPaging = oSettings.oInstance.fnPagingInfo();
\r
61 var page = parseInt($(this).val());
\r
62 if (page > 0 && page < oPaging.iTotalPages) {
\r
63 if ( oSettings.oApi._fnPageChange(oSettings, page-1) ) {
\r
64 fnDraw( oSettings );
\r
67 $(this).val(oPaging.iPage + 1);
\r
71 $('.pagination-panel-input', nPaging).bind('keypress.DT', function(e) {
\r
72 var oPaging = oSettings.oInstance.fnPagingInfo();
\r
73 if (e.which == 13) {
\r
74 var page = parseInt($(this).val());
\r
75 if (page > 0 && page < oSettings.oInstance.fnPagingInfo().iTotalPages) {
\r
76 if ( oSettings.oApi._fnPageChange(oSettings, page-1) ) {
\r
77 fnDraw( oSettings );
\r
80 $(this).val(oPaging.iPage + 1);
\r
87 "fnUpdate": function ( oSettings, fnDraw ) {
\r
88 var iListLength = 5;
\r
89 var oPaging = oSettings.oInstance.fnPagingInfo();
\r
90 var an = oSettings.aanFeatures.p;
\r
91 var i, j, sClass, iStart, iEnd, iHalf=Math.floor(iListLength/2);
\r
93 if ( oPaging.iTotalPages < iListLength) {
\r
95 iEnd = oPaging.iTotalPages;
\r
97 else if ( oPaging.iPage <= iHalf ) {
\r
100 } else if ( oPaging.iPage >= (oPaging.iTotalPages-iHalf) ) {
\r
101 iStart = oPaging.iTotalPages - iListLength + 1;
\r
102 iEnd = oPaging.iTotalPages;
\r
104 iStart = oPaging.iPage - iHalf + 1;
\r
105 iEnd = iStart + iListLength - 1;
\r
109 for ( i=0, iLen=an.length ; i<iLen ; i++ ) {
\r
110 var wrapper = $(an[i]).parents(".dataTables_wrapper");
\r
112 if (oPaging.iTotalPages <= 0) {
\r
113 $('.pagination-panel, .dataTables_length', wrapper).hide();
\r
115 $('.pagination-panel, .dataTables_length', wrapper).show();
\r
118 $('.pagination-panel-total', an[i]).html(oPaging.iTotalPages);
\r
119 $('.pagination-panel-input', an[i]).val(oPaging.iPage + 1);
\r
121 // Remove the middle elements
\r
122 $('li:gt(1)', an[i]).filter(':not(.next)').remove();
\r
124 // Add the new list items and their event handlers
\r
125 for ( j=iStart ; j<=iEnd ; j++ ) {
\r
126 sClass = (j==oPaging.iPage+1) ? 'class="active"' : '';
\r
127 $('<li '+sClass+'><a href="#">'+j+'</a></li>')
\r
128 .insertBefore( $('li.next:first', an[i])[0] )
\r
129 .bind('click', function (e) {
\r
130 e.preventDefault();
\r
131 oSettings._iDisplayStart = (parseInt($('a', this).text(),10)-1) * oPaging.iLength;
\r
132 fnDraw( oSettings );
\r
136 // Add / remove disabled classes from the static elements
\r
137 if ( oPaging.iPage === 0 ) {
\r
138 $('a.prev', an[i]).addClass('disabled');
\r
140 $('a.prev', an[i]).removeClass('disabled');
\r
143 if ( oPaging.iPage === oPaging.iTotalPages-1 || oPaging.iTotalPages === 0 ) {
\r
144 $('a.next', an[i]).addClass('disabled');
\r
146 $('a.next', an[i]).removeClass('disabled');
\r
153 serverPageTable.getRestPara = function( cond , tableSetting ){
\r
154 var pageNo=tableSetting._iDisplayStart/tableSetting._iDisplayLength+1;
\r
155 var pageSize = tableSetting._iDisplayLength;
\r
156 var queryParameter={"pageNo":pageNo,"pageSize":tableSetting._iDisplayLength,groupId:["it.group.database=02","it.group.server=01"]},
\r
157 newData={"data":JSON.stringify(queryParameter)};
\r
158 //put the pageinfo in cond if there is a pageinfo
\r
159 var pageInfo = vm.logInfo[vm.logType].pageInfo;
\r
160 if(pageInfo != null && serverPageTable.perpagenumber == pageSize){
\r
161 cond.idEnd = pageInfo.pageStart[pageNo - 1];
\r
162 cond.idStart = pageInfo.pageStart[pageNo];
\r
163 if(!cond.idStart){ //the last page
\r
168 delete cond.idStart;
\r
170 vm.logInfo[vm.logType].pageInfo = null;
\r
172 tableSetting._iDisplayStart = 0;
\r
175 cond:JSON.stringify(cond),
\r
176 perpagenumber:pageSize,
\r
178 needPageInfo:vm.logInfo[vm.logType].pageInfo == null
\r
180 serverPageTable.perpagenumber = pageSize;
\r
184 serverPageTable.initTableWithoutLib = function( setting ,cond , divId) {
\r
186 var column = setting.columns;
\r
188 $('#'+ divId).children().remove();
\r
189 var tableId = setting.tableId;
\r
190 var tableEleStr = '<table class="table table-striped table-bordered table-hover" id= '+ tableId + '>'
\r
192 +'<tr role="row" class="heading" >'
\r
198 $('#'+ divId).append(tableEleStr);
\r
199 //$('#'+ tableId).append(' <thead><tr role="row" class="heading" ></tr></thead><tbody></tbody>');
\r
200 var trEle = $('#'+ tableId + ' > thead >tr');
\r
201 //var dataTableColumn = [];
\r
202 for ( var one in column){
\r
203 var th = '<th>' + column[one].name + '</th>';
\r
206 var table = $("#" + tableId).dataTable({
\r
207 //"sDom" : "tr<'row'<'col-md-6 col-sm-12'><'col-md-6 col-sm-12'pli>>", // datatable layout
\r
208 //"sDom" : "<'row'<'col-md-12 col-sm-12'lip>r><'table-scrollable't>>",
\r
209 //"sDom": '<"top"rt><"bottom"lip>',
\r
210 "sDom": '<"top"rt>',
\r
211 "oLanguage": setting.language,//language
\r
212 //"bJQueryUI": true,
\r
213 "bPaginate": setting.paginate,// page button
\r
214 "bFilter": false,// search bar
\r
215 "bAutoWidth":true,//automatically set colum width
\r
216 "bLengthChange": true,// record number in each row
\r
217 "iDisplayLength": 10,// row number in each page
\r
218 "bSort": setting.sort ? true : false,// sort
\r
219 "bInfo": setting.info,// Showing 1 to 10 of 23 entries
\r
221 "bScrollCollapse": true,
\r
222 "sPaginationType": "bootstrap_extended", // page, a total of two kinds of style, another one is two_button
\r
223 "bProcessing": true,
\r
224 "bServerSide": false,
\r
226 "bSortCellsTop": true,
\r
227 "sAjaxSource": setting.restUrl,
\r
228 "aoColumns": setting.columns,
\r
231 sDefaultContent: '',
\r
232 aTargets: [ '_all' ]
\r
235 "fnServerData": function (sSource, aoData, fnCallback, oSettings) {
\r
236 oSettings.jqXHR = $.ajax({
\r
239 "dataType": "json",
\r
240 //"data":serverPageTable.getRestPara(cond,oSettings),
\r
241 "success": function (resp) {
\r
242 oSettings.iDraw = oSettings.iDraw + 1;
\r
246 data.aaData = resp;
\r
247 var totalCounts = resp.length;
\r
249 data.iTotalRecords = totalCounts;
\r
250 data.iTotalDisplayRecords = totalCounts;
\r
251 data.sEcho = oSettings;
\r
254 "error": function(resp) {
\r
257 var totalCounts = 0;
\r
259 data.iTotalRecords = totalCounts;
\r
260 data.iTotalDisplayRecords = totalCounts;
\r
261 data.sEcho = oSettings;
\r
269 serverPageTable.initDataTable = function( setting ,cond , divId) {
\r
271 var column = setting.columns;
\r
273 $('#'+ divId).children().remove();
\r
274 var tableId = setting.tableId;
\r
275 var tableEleStr = '<table class="table table-striped table-bordered table-hover" id= '+ tableId + '>'
\r
277 +'<tr role="row" class="heading" >'
\r
283 $('#'+ divId).append(tableEleStr);
\r
284 //$('#'+ tableId).append(' <thead><tr role="row" class="heading" ></tr></thead><tbody></tbody>');
\r
285 var trEle = $('#'+ tableId + ' > thead >tr');
\r
286 //var dataTableColumn = [];
\r
287 for ( var one in column){
\r
288 var th = '<th>' + column[one].name + '</th>';
\r
291 var table = $("#" + tableId).dataTable({
\r
292 //"sDom" : "tr<'row'<'col-md-6 col-sm-12'><'col-md-6 col-sm-12'pli>>", // datatable layout
\r
293 //"sDom" : "<'row'<'col-md-12 col-sm-12'lip>r><'table-scrollable't>>",
\r
294 "sDom": '<"top"rt><"bottom"lip>',
\r
295 "oLanguage": setting.language,//language
\r
296 //"bJQueryUI": true,
\r
297 "bPaginate": setting.paginate,// page button
\r
298 "bFilter": false,// search bar
\r
299 "bAutoWidth":true,//automatically set colum width
\r
300 "bLengthChange": true,// record number in each row
\r
301 "iDisplayLength": 10,// row number in each page
\r
302 "bSort": setting.sort ? true : false,// sort
\r
303 "bInfo": setting.info,// Showing 1 to 10 of 23 entries
\r
305 "bScrollCollapse": true,
\r
306 "sPaginationType": "bootstrap_extended", // page, a total of two kinds of style, another one is two_button
\r
307 "bProcessing": true,
\r
308 "bServerSide": false,
\r
310 "bSortCellsTop": true,
\r
311 "sAjaxSource": setting.restUrl,
\r
312 "aoColumns": setting.columns,
\r
315 sDefaultContent: '',
\r
316 aTargets: [ '_all' ]
\r
319 "fnServerData": function (sSource, aoData, fnCallback, oSettings) {
\r
320 oSettings.jqXHR = $.ajax({
\r
323 "dataType": "json",
\r
324 //"data":serverPageTable.getRestPara(cond,oSettings),
\r
325 "success": function (resp) {
\r
326 oSettings.iDraw = oSettings.iDraw + 1;
\r
330 data.aaData = resp;
\r
331 var totalCounts = resp.length;
\r
333 data.iTotalRecords = totalCounts;
\r
334 data.iTotalDisplayRecords = totalCounts;
\r
335 data.sEcho = oSettings;
\r
338 "error": function(resp) {
\r
341 var totalCounts = 0;
\r
343 data.iTotalRecords = totalCounts;
\r
344 data.iTotalDisplayRecords = totalCounts;
\r
345 data.sEcho = oSettings;
\r
353 serverPageTable.initTableWithData = function( setting , divId , tableData) {
\r
355 var column = setting.columns;
\r
357 $('#'+ divId).children().remove();
\r
358 var tableId = setting.tableId;
\r
359 var tableEleStr = '<table class="table table-striped table-bordered table-hover" id= '+ tableId + '>'
\r
361 +'<tr role="row" class="heading" >'
\r
367 $('#'+ divId).append(tableEleStr);
\r
368 var trEle = $('#'+ tableId + ' > thead >tr');
\r
369 for ( var one in column){
\r
370 var th = '<th>' + column[one].name + '</th>';
\r
373 var table = $("#" + tableId).dataTable({
\r
374 "sDom" : "<'row'<'col-md-12 col-sm-12'lip>r>>",
\r
375 "oLanguage": setting.language,//language
\r
376 //"bJQueryUI": true,
\r
377 "bPaginate": setting.paginate,// page button
\r
378 "bFilter": false,// search bar
\r
379 "bAutoWidth":true,//automatically set the column width
\r
380 "bLengthChange": true,// record number in each row
\r
381 "iDisplayLength": 10,// row number in each page
\r
382 "bSort": setting.sort ? true : false,// sort
\r
383 "bInfo": setting.info,// Showing 1 to 10 of 23 entries
\r
385 "bScrollCollapse": true,
\r
386 "sPaginationType": "bootstrap_extended", // page, a total of two kinds of style, another one is two_button
\r
387 "bProcessing": false,
\r
388 "bServerSide": false,
\r
390 "bSortCellsTop": true,
\r
391 "sAjaxSource": tableData,
\r
392 "aoColumns": setting.columns,
\r
393 "fnServerData": function (sSource, aoData, fnCallback, oSettings) {
\r
394 oSettings.iDraw = oSettings.iDraw + 1;
\r
395 var resp = tableData || [];
\r
397 data.aaData = resp;
\r
398 var totalCounts = resp.length;
\r
400 data.iTotalRecords = totalCounts;
\r
401 data.iTotalDisplayRecords = totalCounts;
\r
402 data.sEcho = oSettings;
\r
409 serverPageTable.initDataTableForEvent = function( setting ,cond , divId) {
\r
411 var column = setting.columns;
\r
413 $('#'+ divId).children().remove();
\r
414 var tableId = setting.tableId;
\r
415 var tableEleStr = '<table class="table table-striped table-bordered table-hover" id= '+ tableId + '>'
\r
417 +'<tr role="row" class="heading" >'
\r
423 $('#'+ divId).append(tableEleStr);
\r
424 var trEle = $('#'+ tableId + ' > thead >tr');
\r
425 for ( var one in column){
\r
426 var th = '<th>' + column[one].name + '</th>';
\r
429 var table = $("#" + tableId).dataTable({
\r
430 "sDom": '<"top"rt><"bottom"lip>',
\r
431 "oLanguage": setting.language,//language
\r
432 //"bJQueryUI": true,
\r
433 "bPaginate": setting.paginate,// page button
\r
434 "bFilter": false,// search bar
\r
435 "bAutoWidth":true,//automatically set the column width
\r
436 "bLengthChange": true,// record number in each row
\r
437 "iDisplayLength": 10,// row number in each page
\r
438 "bSort": setting.sort ? true : false,
\r
439 "bInfo": setting.info,// Showing 1 to 10 of 23 entries
\r
441 "bScrollCollapse": true,
\r
442 "sPaginationType": "bootstrap_extended", // page, a total of two kinds of style, another one is two_button
\r
443 "bProcessing": true,
\r
444 "bServerSide": false,
\r
446 "bSortCellsTop": true,
\r
447 "sAjaxSource": setting.restUrl,
\r
448 "aoColumns": setting.columns,
\r
451 sDefaultContent: '',
\r
452 aTargets: [ '_all' ]
\r
455 "fnServerData": function (sSource, aoData, fnCallback, oSettings) {
\r
456 oSettings.jqXHR = $.ajax({
\r
459 "dataType": "json",
\r
460 //"data":serverPageTable.getRestPara(cond,oSettings),
\r
461 "success": function (resp) {
\r
462 oSettings.iDraw = oSettings.iDraw + 1;
\r
465 for(var i=0;i<resp.length;i++) {
\r
466 result.push(resp[i].currentStepInfo);
\r
469 data.aaData = result;
\r
470 var totalCounts = result.length;
\r
472 data.iTotalRecords = totalCounts;
\r
473 data.iTotalDisplayRecords = totalCounts;
\r
474 data.sEcho = oSettings;
\r
477 "error": function(resp) {
\r
480 var totalCounts = 0;
\r
482 data.iTotalRecords = totalCounts;
\r
483 data.iTotalDisplayRecords = totalCounts;
\r
484 data.sEcho = oSettings;
\r