2 Wrapper/Helper Class for datagrid based on jQuery Datatable Plugin
\r
4 var DatatableICT = function () {
\r
7 var tableOptions; // main options
\r
8 var dataTable; // datatable object
\r
9 var table; // actual table jquery object
\r
10 var tableContainer; // actual table container object
\r
11 var tableWrapper; // actual table wrapper jquery object
\r
12 var tableInitialized = false;
\r
13 var ajaxParams = []; // set filter mode
\r
15 var xsHiddenColumns;
\r
16 var smHiddenColumns;
\r
17 var columnMaxLength = 30;
\r
19 var hidden_xs_maxWidth = 768;
\r
20 var hidden_sm_maxWidth = 991;
\r
22 var openRowFlag = false;
\r
23 var rowOverFlag = false;
\r
24 var rowCheckable = false;
\r
27 var sTotalRecordsSource;
\r
31 var requestType="GET";
\r
32 var callbackList = [];
\r
33 var checkedRowDatas = [];
\r
34 var currentPageData;
\r
36 var includedInXsHiddenColumns = function(columnId){
\r
37 for(var i=0;i<xsHiddenColumns.length; i++ ){
\r
38 var column = xsHiddenColumns[i];
\r
39 if(columnId == column.columnId){
\r
46 var includedInSmHiddenColumns = function(columnId){
\r
47 for(var i=0;i<smHiddenColumns.length; i++ ){
\r
48 var column = smHiddenColumns[i];
\r
49 if(columnId == column.columnId){
\r
56 var countSelectedRecords = function() {
\r
57 var selected = $('tbody > tr > td:nth-child(1) input[type="checkbox"]:checked', table).size();
\r
58 var text = tableOptions.dataTable.oLanguage.sGroupActions;
\r
60 $('.table-group-actions > span', tableWrapper).text(text.replace("_TOTAL_", selected));
\r
62 $('.table-group-actions > span', tableWrapper).text("");
\r
66 var jsonObjectToArray = function(json, columns, iDraw){
\r
67 var jsonToDatatable = {aaData:[], sEcho:iDraw, iTotalRecords:0, iTotalDisplayRecords:0 };
\r
72 dataField = json.data;
\r
75 if(json.response && json.response.data){
\r
76 dataField = json.response.data;
\r
78 for(var i=0; i<dataField.length; i++){
\r
79 jsonToDatatable.aaData[i] = [];
\r
83 resRowObject = json.data[i].data;
\r
86 if(json.response && json.response.data){
\r
87 resRowObject = json.response.data[i];
\r
90 jsonToDatatable.aaData[i].push("<input type=\"checkbox\" name=\"id[]\" rowDataNo='rowNo_" + i + "' value=\"1\">");
\r
93 jsonToDatatable.aaData[i].push("<span class=\"row-details row-details-close\"></span>");
\r
95 for(var j=0; j<columns.length; j++){
\r
97 if($(window).width() >= hidden_xs_maxWidth && $(window).width() < hidden_sm_maxWidth && includedInSmHiddenColumns(columns[j].columnId )){
\r
99 }else if($(window).width() < hidden_xs_maxWidth && includedInXsHiddenColumns(columns[j].columnId )){
\r
102 var currentColumnId = columns[j].columnId;
\r
103 if(jQuery.inArray(currentColumnId, columnsTooLong) > -1){
\r
105 for(var k=0;k<columnsTooLong.length;k++){
\r
106 if(currentColumnId == columnsTooLong[k]){
\r
107 rawText = resRowObject[currentColumnId];
\r
111 if(rawText.length > columnMaxLength){
\r
112 jsonToDatatable.aaData[i].push(rawText.slice(0, columnMaxLength) + '...');
\r
114 jsonToDatatable.aaData[i].push(resRowObject[currentColumnId]);
\r
117 jsonToDatatable.aaData[i].push(resRowObject[currentColumnId]);
\r
123 jsonToDatatable.sEcho++;
\r
126 if(requestType == "POST"){ //性能的情况单独发请求获得总行数
\r
127 totalRow = totalRecords;
\r
129 var totalRecordsSource = eval('json.' + sTotalRecordsSource);
\r
130 if(totalRecordsSource && totalRecordsSource.length >0){
\r
131 totalRow = parseInt(totalRecordsSource);
\r
134 if(isNaN(totalRow)){
\r
135 alert('All rows counting number got fail!');
\r
137 jsonToDatatable.iTotalRecords = totalRow;
\r
138 jsonToDatatable.iTotalDisplayRecords = totalRow;
\r
140 return jsonToDatatable;
\r
143 var singleAlarmDel = function(divOverlay){
\r
145 //根据浮动框的当前id获取需要删除的行
\r
146 var trId = divOverlay.attr('id_tr');
\r
147 tr=$('tr#' + trId);
\r
148 var tds = $(tr).children();
\r
149 var tdAlarmId = "";
\r
151 tdAlarmId = $(tds.eq(2)).text();
\r
153 tdAlarmId = $(tds.eq(1)).text();
\r
157 "alarmId":[parseInt(tdAlarmId)]
\r
160 var sSource = "/web/rest/web/fm/curalarms?data=" + JSON.stringify(data) + "&_operationType=remove&_dataSource=isc_PageRestDataSource_0&isc_metaDataPrefix=_&isc_dataFormat=json";
\r
163 "dataType": 'json',
\r
167 "contentType" : 'application/json; charset=utf-8',
\r
168 "success": function(json) {
\r
169 if(json.response.status == 0){
\r
170 var resRowObject = json.response.data[0];
\r
173 if(json.response.status == -1){
\r
177 "error": function() {
\r
178 alert('Communication Error!');
\r
183 var singleAlarmAckUnAck = function(divOverlay, ackType){
\r
185 //根据浮动框的当前id获取需要确认的行
\r
186 var trId = divOverlay.attr('id_tr');
\r
187 var tr = $('tr#' + trId);
\r
190 var $tableHead = $('div.dataTables_scrollHeadInner > table.dataTable', contextData.wrapperDivContext);
\r
191 //var trHead = $('tbody > tr:nth-child(' + trId + ')', $tableHead);
\r
192 var trHead = $('tr#' + trId.replace('body', 'head'), $tableHead);
\r
193 var tdDivs = $('td > div', trHead);
\r
195 var tds = $(tr).children();
\r
196 var tdAlarmId = "";
\r
198 tdAlarmId = $(tds.eq(2)).text();
\r
200 tdAlarmId = $(tds.eq(1)).text();
\r
205 "dataSource":"isc_PageRestDataSource_0",
\r
206 "operationType":"update",
\r
207 "componentId":"isc_com_zte_ums_aos_fm_view_eventview_table_AlarmTable_0",
\r
212 parseInt(tdAlarmId)
\r
218 var sSource = "/web/rest/web/fm/curalarms?isc_dataFormat=json";
\r
221 "dataType": 'json',
\r
224 "contentType": 'application/json; charset=utf-8',
\r
225 "data": JSON.stringify(aoData),
\r
226 "success": function(json) {
\r
227 if(callbackList[1]){
\r
228 json = callbackList[1](json);
\r
230 if(json.response.status == 0){
\r
231 var resRowObject = json.response.data[0];
\r
232 var columnsCopy = $.extend(true, [], columns);
\r
234 if($(window).width()>=hidden_xs_maxWidth && $(window).width()<hidden_sm_maxWidth){
\r
236 for(var i=0;i<columns.length;i++){
\r
237 if(!includedInSmHiddenColumns(columns[i].columnId)){
\r
238 columnsCopy.push(columns[i]);
\r
241 } else if($(window).width()<hidden_xs_maxWidth){
\r
243 for(var i=0;i<columns.length;i++){
\r
244 if(!includedInXsHiddenColumns(columns[i].columnId)){
\r
245 columnsCopy.push(columns[i]);
\r
253 for(var i=iIndex;i<tds.length && (i-iIndex)<columnsCopy.length;i++){
\r
254 var currentColumnId = columnsCopy[i-iIndex].columnId;
\r
255 if(jQuery.inArray(currentColumnId, columnsTooLong) > -1) {
\r
257 for(var k=0;k<columnsTooLong.length;k++){
\r
258 if(currentColumnId == columnsTooLong[k]){
\r
259 rawText = resRowObject[currentColumnId];
\r
263 if(rawText.length > columnMaxLength){
\r
264 $(tds.eq(i)).html(rawText.slice(0, columnMaxLength) + '...');
\r
265 $(tdDivs.eq(i)).html(rawText.slice(0, columnMaxLength) + '...');
\r
267 $(tds.eq(i)).html(resRowObject[currentColumnId]);
\r
268 $(tdDivs.eq(i)).html(resRowObject[currentColumnId]);
\r
271 $(tds.eq(i)).html(resRowObject[currentColumnId]);
\r
272 $(tdDivs.eq(i)).html(resRowObject[currentColumnId]);
\r
276 for (var t = 0; t < dataTable.datas.length; t++) {
\r
277 var temp = dataTable.datas[t];
\r
278 if (temp.alarmId == resRowObject['alarmId']) {
\r
279 dataTable.datas[t] = resRowObject;
\r
284 if(json.response.status == -1){
\r
285 $('div#myModalConfirm' + contextData.curentDatableId).modal({
\r
289 $('span#alarm_number' + contextData.curentDatableId).html(tdAlarmId);
\r
292 $('span#aos_fm_alarm_opeater_ack_already').html($.i18n.prop('aos_fm_alarm_opeater_ack_already_ok').replace(/\"/g,"").replace(";", ""));
\r
294 $('span#aos_fm_alarm_opeater_ack_already').html($.i18n.prop('aos_fm_alarm_opeater_ack_already_un').replace(/\"/g,"").replace(";", ""));
\r
298 "error": function() {
\r
299 alert('Communication Error!');
\r
304 var addRowOverlap = function(){
\r
305 var $tableData = $('table#datatable_ajax' + contextData.curentDatableId);
\r
307 var $tableHead = $('div.dataTables_scrollHeadInner > table.dataTable', contextData.wrapperDivContext);
\r
308 var trHeads = $tableHead.find('tr').get();
\r
309 $.each( trHeads, function( index, trHead ){
\r
310 $(trHead).attr('id', 'headTableTR' + index);
\r
313 var $divOverlay = $('div#divOverlay' + contextData.curentDatableId);
\r
314 var divScrollHead = $('div.dataTables_scrollHead', contextData.wrapperDivContext);
\r
315 var divRightPadding = $('div#divRightPadding' + contextData.curentDatableId);
\r
317 var tableHeadBottomHeight = $(divScrollHead).position().top + $(divScrollHead).height();
\r
318 var tableBottom = $tableData.position().top + $tableData.height() + 3;
\r
320 var tableRightEdgePosition = $(divRightPadding).position().left;
\r
321 var trs = $tableData.find('tr').get();
\r
322 $.each( trs, function( index, tr ){
\r
323 var tdEmpty = $('td.dataTables_empty',tr);
\r
324 if(!tdEmpty || tdEmpty.length ==0 ){
\r
325 $(tr).attr('id', 'bodyTableTR' + index + contextData.curentDatableId);
\r
326 //$divOverlay.attr('id_tr', 'bodyTableTR' + index);
\r
327 $(tr).one('hover', function(){
\r
328 var rowPos = $(tr).position();
\r
329 var currentTrTop = rowPos.top;
\r
330 //var bottomLeft = rowPos.left;
\r
331 $divOverlay.attr('id_tr', 'bodyTableTR' + index + contextData.curentDatableId);
\r
334 position: 'absolute',
\r
335 'background-color': '#e5e5e5',
\r
337 border: 'solid 0px',
\r
338 top: currentTrTop + 6,
\r
339 left: tableRightEdgePosition - 308,
\r
344 if( $divOverlay.position().top < tableHeadBottomHeight || $divOverlay.position().top + $divOverlay.height() > tableBottom){
\r
345 $divOverlay.css('display', 'none');
\r
347 var buttonConfirm = $('div#buttonConfirm', $divOverlay);
\r
348 var buttonUnConfirm = $('div#buttonUnConfirm', $divOverlay);
\r
349 $(buttonConfirm).one('click', function(){
\r
350 var buttonRoundedTDsConfirm = $(buttonConfirm).find('td.buttonRounded');
\r
351 var buttonRoundedTDsUnConfirm = $(buttonUnConfirm).find('td.buttonRoundedDisabled');
\r
352 if(buttonRoundedTDsConfirm && buttonRoundedTDsConfirm.length > 0){
\r
353 $.each(buttonRoundedTDsConfirm, function(index, td){
\r
354 $(td).removeClass('buttonRounded').addClass('buttonRoundedDisabled');
\r
356 $.each(buttonRoundedTDsUnConfirm, function(index, td){
\r
357 $(td).removeClass('buttonRoundedDisabled').addClass('buttonRounded');
\r
359 $divOverlay.css('display', 'none');
\r
360 singleAlarmAckUnAck($divOverlay, 1);
\r
363 $(buttonUnConfirm).one('click', function(){
\r
364 var buttonRoundedTDsUnConfirm = $(buttonUnConfirm).find('td.buttonRounded');
\r
365 var buttonRoundedTDsConfirm = $(buttonConfirm).find('td.buttonRoundedDisabled');
\r
366 if(buttonRoundedTDsUnConfirm && buttonRoundedTDsUnConfirm.length > 0){
\r
367 $.each(buttonRoundedTDsUnConfirm, function(index, td){
\r
368 $(td).removeClass('buttonRounded').addClass('buttonRoundedDisabled');
\r
370 $.each(buttonRoundedTDsConfirm, function(index, td){
\r
371 $(td).removeClass('buttonRoundedDisabled').addClass('buttonRounded');
\r
373 $divOverlay.css('display', 'none');
\r
374 singleAlarmAckUnAck($divOverlay, 2);
\r
377 var buttonDelete = $('div#buttonDelete', $divOverlay);
\r
378 $(buttonDelete).die().live('click', function(){
\r
380 $('div#myModal' + contextData.curentDatableId).modal({
\r
384 $('#delConfirm' + contextData.curentDatableId).die().live('click', function(){
\r
385 $divOverlay.css('display', 'none');
\r
386 dataTable.fnClose(tr);
\r
389 $('tr#' + $(tr).attr('id').replace('body', 'head'), $tableHead).remove();
\r
391 singleAlarmDel($divOverlay);
\r
393 dataTable.fnAdjustColumnSizing();
\r
397 $('td.details > table.detailTable').on('hover', function(){
\r
398 $divOverlay.css('display', 'none');
\r
407 //main function to initiate the module
\r
408 init: function (options, columnsDefined, xsHiddenColumnsDefined, smHiddenColumnsDefined) {
\r
410 if (!$().dataTable) {
\r
418 var targetsLength = columnsDefined.length;
\r
419 if(rowCheckable)targetsLength++;
\r
420 if(openRowFlag)targetsLength++;
\r
421 for(var i=0;i<targetsLength;i++){
\r
424 aTargetsAll = aTargets;
\r
426 // default settings
\r
427 options = $.extend(true, {
\r
428 src: "", // actual table
\r
429 filterApplyAction: "filter",
\r
430 filterCancelAction: "filter_cancel",
\r
431 resetGroupActionInputOnSuccess: true,
\r
433 //"sDom" : "<'row'<'col-md-8 col-sm-12'pli><'col-md-4 col-sm-12'<'table-group-actions pull-right'>>r><'table-scrollable't><'row'<'col-md-8 col-sm-12'pli><'col-md-4 col-sm-12'>r>>", // datatable layout
\r
435 "aoColumnDefs" : [{ // define columns sorting options(by default all columns are sortable extept the first checkbox column)
\r
436 'bSortable' : false,
\r
437 'aTargets' : aTargets
\r
440 "bAutoWidth": false, // disable fixed width and enable fluid table
\r
441 //"bSortCellsTop": true, // make sortable only the first row in thead
\r
442 "sPaginationType": "bootstrap_extended", // pagination type(bootstrap, bootstrap_full_number or bootstrap_extended)
\r
443 "bProcessing": true, // enable/disable display message box on record load
\r
444 "bServerSide": true, // enable/disable server side ajax loading
\r
445 "sAjaxSource": "", // define ajax source URL
\r
446 //"sServerMethod": "GET",
\r
448 // handle ajax request
\r
449 "fnServerData": function ( sSource, aoData, fnCallback, oSettings ) {
\r
451 //var startIndex = aoData[3].value;//"iDisplayStart"
\r
452 //var pageLength = aoData[4].value;//"iDisplayLength"
\r
453 var oPaging = oSettings.oInstance.fnPagingInfo();
\r
454 //var startIndex = oPaging.iStart;
\r
455 var pageLength = oPaging.iLength;
\r
456 var curPageNo = oPaging.iPage + 1;
\r
458 for(var k=aoData.length-1;k>=0;k--){
\r
460 if(aoData[k].name=='pageSize'){
\r
461 aoData[k].value=pageLength;
\r
464 if(aoData[k].name=='pageNo'){
\r
465 aoData[k].value=curPageNo;
\r
468 if(flag == 1)break;
\r
471 if(requestType == "POST"){
\r
474 for(var k=aoData.length-1;k>=0;k--){
\r
475 if(aoData[k].name=='data'){
\r
476 postData = aoData[k].value;
\r
477 postData.pageSize = pageLength;
\r
478 postData.pageNo = curPageNo;
\r
483 oSettings.jqXHR = $.ajax( {
\r
484 "dataType": 'json',
\r
487 "data": JSON.stringify(postData),
\r
488 "contentType": 'application/json; charset=utf-8',
\r
489 "success": function(res, textStatus, jqXHR) {
\r
490 if (res.sMessage) {
\r
491 openoFrameWork.alert({type: (res.sStatus == 'OK' ? 'success' : 'danger'), icon: (res.sStatus == 'OK' ? 'check' : 'warning'), message: res.sMessage, container: tableWrapper, place: 'prepend'});
\r
493 if ($('.group-checkable', tableContainer).size() === 1) {
\r
494 $('.group-checkable', tableContainer).attr("checked", false);
\r
495 $.uniform.update($('.group-checkable', tableContainer));
\r
497 if (tableOptions.onSuccess) {
\r
498 tableOptions.onSuccess.call(the);
\r
501 if(callbackList[1]){
\r
502 res = callbackList[1](res);
\r
506 res = jsonObjectToArray(res, columns, oSettings.iDraw);
\r
509 fnCallback(res, textStatus, jqXHR);
\r
511 "error": function() {
\r
512 if (tableOptions.onError) {
\r
513 tableOptions.onError.call(the);
\r
515 openoFrameWork.alert({type: 'danger', icon: 'warning', message: tableOptions.dataTable.oLanguage.sAjaxRequestGeneralError, container: tableWrapper, place: 'prepend'});
\r
516 $('.dataTables_processing', tableWrapper).remove();
\r
522 oSettings.jqXHR = $.ajax( {
\r
523 "dataType": 'json',
\r
527 "success": function(res, textStatus, jqXHR) {
\r
528 if (res.sMessage) {
\r
529 openoFrameWork.alert({type: (res.sStatus == 'OK' ? 'success' : 'danger'), icon: (res.sStatus == 'OK' ? 'check' : 'warning'), message: res.sMessage, container: tableWrapper, place: 'prepend'});
\r
531 if ($('.group-checkable', tableContainer).size() === 1) {
\r
532 $('.group-checkable', tableContainer).attr("checked", false);
\r
533 $.uniform.update($('.group-checkable', tableContainer));
\r
535 if (tableOptions.onSuccess) {
\r
536 tableOptions.onSuccess.call(the);
\r
538 //保存数据在dataTable对象中给行详细信息面板用
\r
539 if(res.response){ //告警的情况,返回数据在response属性里
\r
540 dataTable.datas = res.response.data;
\r
541 if(res.response.status < 0){
\r
542 alert(res.response.data);
\r
548 currentPageData = $.extend(true, {}, res.response.data);;
\r
550 if(callbackList[1]){
\r
551 res = callbackList[1](res);
\r
555 res = jsonObjectToArray(res, columns, oSettings.iDraw);
\r
558 fnCallback(res, textStatus, jqXHR);
\r
560 "error": function() {
\r
561 if (tableOptions.onError) {
\r
562 tableOptions.onError.call(the);
\r
564 openoFrameWork.alert({type: 'danger', icon: 'warning', message: tableOptions.dataTable.oLanguage.sAjaxRequestGeneralError, container: tableWrapper, place: 'prepend'});
\r
565 $('.dataTables_processing', tableWrapper).remove();
\r
572 // pass additional parameter
\r
573 "fnServerParams": function ( aoData ) {
\r
574 //here can be added an external ajax request parameters.
\r
575 //for(var i in ajaxParams) {
\r
576 for(var i=0; i<ajaxParams.length; i++){
\r
577 var param = ajaxParams[i];
\r
578 aoData.push({"name" : param.name, "value": param.value});
\r
582 "fnDrawCallback": function( oSettings ) { // run some code on table redraw
\r
583 if (tableInitialized === false) { // check if table has been initialized
\r
584 tableInitialized = true; // set table initialized
\r
585 table.show(); // display table
\r
587 openoFrameWork.initUniform($('input[type="checkbox"]', tableContainer)); // reinitialize uniform checkboxes on each table reload
\r
588 countSelectedRecords(); // reset selected records indicator
\r
590 $('table#datatable_ajax' + contextData.curentDatableId).find('td').css('white-space', 'nowrap');
\r
593 var $tableHead = $('div.dataTables_scrollHeadInner > table.dataTable', tableWrapper);
\r
594 var tbodyHead = $('tbody', $tableHead);
\r
595 if(tbodyHead && tbodyHead.length >0){
\r
596 $(tbodyHead).remove();
\r
599 var $tableBody = $('table#datatable_ajax' + contextData.curentDatableId, tableWrapper);
\r
600 var trIn = $('thead > tr:nth-child(1)', $tableHead);
\r
601 var trBodyHead = $('thead > tr:nth-child(1)', $tableBody);
\r
602 var tds = $(trIn).children();
\r
603 var ths = $(trBodyHead).children();
\r
604 for(var k=0;k<tds.length;k++){
\r
605 $(ths.eq(k)).html('<div style="height: 0;overflow: hidden;">' + tds.eq(k).html() + '</div>');
\r
607 var bodyRows = $('tbody > tr', $tableBody);
\r
608 for(var i=0;i<bodyRows.length;i++){
\r
609 var rowClone = $(bodyRows.eq(i)).clone();
\r
610 var tds = $(rowClone).children();
\r
611 for(var j=0;j<tds.length;j++){
\r
612 $(tds.eq(j)).html('<div style="height: 0;overflow: hidden;">' + tds.eq(j).html() + '</div>');
\r
613 $(tds.eq(j)).height('0px');
\r
614 $(tds.eq(j)).css('padding-top','0px');
\r
615 $(tds.eq(j)).css('padding-bottom','0px');
\r
616 $(tds.eq(j)).css('border-top-width','0px');
\r
617 $(tds.eq(j)).css('border-bottom-width','0px');
\r
619 $(rowClone).height('0px');
\r
620 $tableHead.append($(rowClone).prop("outerHTML"));
\r
623 $('div.dataTables_scrollBody', tableWrapper).css('width','100%');
\r
624 $('div.dataTables_scrollHead', tableWrapper).css('width','98.5%');
\r
625 $('div.dataTables_scrollHeadInner', tableWrapper).css('padding-right', 0);
\r
633 $('div.dataTables_scrollBody', tableWrapper).css('height', tableHeight);
\r
638 tableOptions = options;
\r
640 columns = columnsDefined;
\r
641 xsHiddenColumns = xsHiddenColumnsDefined;
\r
642 smHiddenColumns = smHiddenColumnsDefined;
\r
643 // create table's jquery object
\r
644 table = $(options.src);
\r
645 tableContainer = table.parents("div#table-container" + contextData.curentDatableId);
\r
646 // apply the special class that used to restyle the default datatable
\r
648 $.fn.dataTableExt.oStdClasses.sWrapper = $.fn.dataTableExt.oStdClasses.sWrapper + " dataTables_extended_wrapper";
\r
650 // initialize a datatable
\r
651 dataTable = table.dataTable(options.dataTable);
\r
653 tableWrapper = table.parents('div.dataTables_wrapper', tableContainer);
\r
655 // modify table per page dropdown input by appliying some classes
\r
656 $('.dataTables_length select', tableWrapper).addClass("form-control input-xsmall input-sm");
\r
658 // handle group checkboxes check/uncheck
\r
659 $('.group-checkable', tableContainer).change(function () {
\r
660 var set = $('tbody > tr > td:nth-child(1) input[type="checkbox"]', table);
\r
661 var checked = $(this).is(":checked");
\r
662 $(set).each(function () {
\r
663 $(this).attr("checked", checked);
\r
665 $.uniform.update(set);
\r
666 countSelectedRecords();
\r
669 // handle row's checkbox click
\r
670 table.on('change', 'tbody > tr > td:nth-child(1) input[type="checkbox"]', function(){
\r
671 countSelectedRecords();
\r
674 //if ($.browser.safari) {
\r
675 // $('.table-container').css('width','100%');
\r
678 $('div.dataTables_scrollHead', tableContainer).css('display','inline-block');
\r
679 //var dataTables_scrollHead_height = $('.dataTables_scrollHead').css( "height" );
\r
680 $("div.dataTables_scrollHead", tableContainer).after("<div id='divRightPadding" + contextData.curentDatableId + "' style='overflow: hidden; background:#eee; position: relative; float:right; border: 1px solid #ddd; height:" + 38 + "px; width: 1.4%;'></div>");
\r
681 if($.browser.mozilla){
\r
682 $('div#divRightPadding', tableContainer).css('height', '40');
\r
686 var $tableHead = $('div.dataTables_scrollHeadInner > table.dataTable', tableWrapper);
\r
687 var $tableBody = $('table#datatable_ajax' + contextData.curentDatableId, tableWrapper);
\r
689 for(var i=0;i<xsHiddenColumns.length;i++){
\r
690 for(var j=0;j<columns.length;j++){
\r
691 if(xsHiddenColumns[i].columnId == columns[j].columnId){
\r
692 $('thead > tr > th#' + columns[j].columnId, $tableHead).addClass('hidden-xs');
\r
693 $('thead > tr > th#' + columns[j].columnId, $tableBody).addClass('hidden-xs');
\r
699 for(var i=0;i<smHiddenColumns.length;i++){
\r
700 for(var j=0;j<columns.length;j++){
\r
701 if(smHiddenColumns[i].columnId == columns[j].columnId){
\r
702 $('thead > tr > th#' + columns[j].columnId, $tableHead).addClass('hidden-sm');
\r
703 $('thead > tr > th#' + columns[j].columnId, $tableBody).addClass('hidden-sm');
\r
708 },//end init------------------------------------------------------------------------------------
\r
710 getSelectedRowsCount: function() {
\r
711 return $('tbody > tr > td:nth-child(1) input[type="checkbox"]:checked', table).size();
\r
714 getSelectedRows: function() {
\r
716 $('tbody > tr > td:nth-child(1) input[type="checkbox"]:checked', table).each(function(){
\r
717 rows.push({rowDataNo: $(this).attr("rowDataNo"), name: $(this).attr("name"), value: $(this).val()});
\r
723 addAjaxParam: function(name, value) {
\r
724 ajaxParams.push({"name": name, "value": value});
\r
727 clearAjaxParams: function(name, value) {
\r
731 getDataTable: function() {
\r
735 getTableWrapper: function() {
\r
736 return tableWrapper;
\r
739 gettableContainer: function() {
\r
740 return tableContainer;
\r
743 getTable: function() {
\r
747 setOpenRowFlag: function(openRowFlagInput) {
\r
748 openRowFlag = openRowFlagInput;
\r
751 setRowOverFlag: function(rowOverFlagInput) {
\r
752 rowOverFlag = rowOverFlagInput;
\r
755 setRowCheckable: function(rowCheckableInput) {
\r
756 rowCheckable = rowCheckableInput;
\r
759 setColumnsTooLong: function(columnsTooLongInput) {
\r
760 columnsTooLong = columnsTooLongInput;
\r
763 setSTotalRecordsSource: function(sTotalRecordsSourceInput){
\r
764 sTotalRecordsSource = sTotalRecordsSourceInput;
\r
767 setTotalRecords: function(totalRecordsInput){
\r
768 totalRecords = totalRecordsInput;
\r
771 setTableHeight: function(tableHeightInput){
\r
772 tableHeight = tableHeightInput;
\r
775 setCallbackList: function(list){
\r
776 if($.isArray(list)){
\r
777 callbackList = list;
\r
781 getCheckedRowDatas:function(){
\r
782 checkedRowDatas = [];
\r
783 $('tbody > tr > td:nth-child(1) input[type="checkbox"]:checked', table).each(function(){
\r
784 var rowNoId = $(this).attr("rowDataNo");
\r
785 var rowNoIndex = rowNoId.slice(rowNoId.indexOf("_") + 1);
\r
786 checkedRowDatas.push(currentPageData[parseInt(rowNoIndex)]);
\r
788 return checkedRowDatas;
\r
791 setRequestType: function(requestTypeInput){
\r
792 requestType = requestTypeInput;
\r
795 setContextData: function(newContextData){
\r
796 contextData = newContextData;
\r
799 setTotalPage: function(newTotalPage){
\r
800 $("#datatable_ajax" + contextData.curentDatableId + "_info").html(tableOptions.dataTable.oLanguage.sInfo.replace("_TOTAL_", newTotalPage + ""));
\r
807 var TableAjaxICT = function () {
\r
811 var initPickers = function () {
\r
812 //init date pickers
\r
813 $('.date-picker').datepicker({
\r
814 //rtl: App.isRTL(),
\r
820 function isContained(largeArray, smallArray){
\r
821 if(!(largeArray instanceof Array) || !(smallArray instanceof Array))
\r
823 if(largeArray.length < smallArray.length)
\r
825 for(var i = 0; i < smallArray.length; i++){
\r
827 for(j=0;j<largeArray.length;j++){
\r
828 if(largeArray[j].columnId == smallArray[i].columnId){
\r
833 if(flag==false)return false;
\r
838 //var grid = DatatableICT();
\r
841 /* Formatting function for row details */
\r
842 function fnFormatDetails(oTable, nTr, columns, rowCheckable) {
\r
844 var tds = $(nTr).children();
\r
847 alarmId = $(tds.eq(2)).html();
\r
849 alarmId = $(tds.eq(1)).html();
\r
852 var systemType = 0;
\r
855 var resDisplayName="";
\r
857 var alarmRaisedTime="";
\r
858 var perceivedSeverity="";
\r
859 var probableCauseDesc="";
\r
865 var ackSystemId="";
\r
866 var alarmChangedTime="";
\r
867 var componentname="";
\r
869 var specificproblem="";
\r
870 var additionalText="";
\r
871 for (var i = 0; i < oTable.datas.length; i++) {
\r
872 var temp = oTable.datas[i];
\r
873 if (temp.alarmId == alarmId) {
\r
874 alarmId = temp.alarmId;
\r
875 resDisplayName = temp.resDisplayName;
\r
876 alarmRaisedTime = temp.alarmRaisedTime;
\r
877 perceivedSeverity = temp.perceivedSeverity;
\r
878 probableCauseDesc = temp.probableCauseDesc;
\r
880 alarmType = temp.alarmType;
\r
881 ackState = temp.ackState;
\r
882 ackTime = temp.ackTime;
\r
883 ackUserId = temp.ackUserId;
\r
884 ackSystemId = temp.ackSystemId;
\r
885 alarmChangedTime = temp.alarmChangedTime;
\r
887 systemType = temp.systemType;
\r
888 code = temp.probableCauseCode;
\r
890 componentname = temp.componentname;
\r
891 position1 = temp.position1;
\r
892 specificproblem = temp.specificproblem;
\r
893 additionalText = temp.additionalText;
\r
899 var sOut = '<table class = "detailTable" width = 900>';
\r
900 sOut += '<tr><td class = "detailTitleStyle" width = 80><span class = "label label-primary">' + columns[0].columnTitle + '</span></td><td class = "detailCellStyle" width = 160>' + alarmId + '</td>';
\r
901 sOut += '<td class = "detailTitleStyle" width = 80><span class = "label label-primary">' + columns[4].columnTitle + '</span></td><td class = "detailCellStyle" width = 160>' + perceivedSeverity + '</td>';
\r
902 sOut += '<td class = "detailTitleStyle" width = 80><span class = "label label-primary">' + columns[9].columnTitle + '</span></td><td class = "detailCellStyle" width = 160>' + alarmType + '</td>';
\r
903 sOut += '<td class = "detailTitleStyle" width = 80><span class = "label label-primary">' + columns[3].columnTitle + '</span></td><td class = "detailCellStyle" width = 160>' + alarmRaisedTime + '</td></tr>';
\r
905 sOut += '<tr><td class = "detailTitleStyle"><span class = "label label-primary">' + columns[5].columnTitle + '</span></td><td class = "detailCellStyle" colspan = 3>' + probableCauseDesc + '</td>';
\r
906 sOut += '<td class = "detailTitleStyle"><span class = "label label-primary">' + columns[15].columnTitle + '</span></td><td class = "detailCellStyle">' + alarmChangedTime + '</td>';
\r
907 sOut += '<td class = "detailTitleStyle"><span class = "label label-primary">' + columns[11].columnTitle + '</span></td><td class = "detailCellStyle">' + ackState + '</td></tr>';
\r
909 sOut += '<tr><td class = "detailTitleStyle"><span class = "label label-primary">' + columns[12].columnTitle + '</span></td><td class = "detailCellStyle">' + ackTime + '</td>';
\r
910 sOut += '<td class = "detailTitleStyle"><span class = "label label-primary">' + columns[13].columnTitle + '</span></td><td class = "detailCellStyle">' + ackUserId + '</td>';
\r
911 sOut += '<td class = "detailTitleStyle"><span class = "label label-primary">' + columns[14].columnTitle + '</span></td><td class = "detailCellStyle">' + ackSystemId + '</td>';
\r
912 sOut += '<td class = "detailTitleStyle"><span class = "label label-primary">' + columns[7].columnTitle + '</span></td><td class = "detailCellStyle">' + neip + '</td></tr>';
\r
914 sOut += '<tr><td class = "detailTitleStyle"><span class = "label label-primary">' + columns[2].columnTitle + '</span></td><td class = "detailCellStyle" colspan = 3>' + moc + '</td>';
\r
915 sOut += '<td class = "detailTitleStyle"><span class = "label label-primary">' + columns[1].columnTitle + '</span></td><td class = "detailCellStyle" colspan = 3>' + resDisplayName + '</td></tr>';
\r
917 sOut += '<tr><td class = "detailTitleStyle"><span class = "label label-primary">' + columns[8].columnTitle + '</span></td><td class = "detailCellStyle" colspan = 3>' + componentname + '</td>';
\r
918 sOut += '<td class = "detailTitleStyle"><span class = "label label-primary">' + columns[16].columnTitle + '</span></td><td class = "detailCellStyle" colspan = 3>' + position1 + '</td></tr>';
\r
920 sOut += '<tr><td class = "detailTitleStyle"><span class = "label label-primary">' + columns[10].columnTitle + '</span></td><td class = "detailCellStyle" colspan = 7>' + specificproblem + '</td></tr>';
\r
922 sOut += '<tr><td class = "detailTitleStyle"><span class = "label label-primary">' + columns[6].columnTitle + '</span></td><td class = "detailCellStyle" colspan = 7>' + additionalText + '</td></tr>';
\r
924 sOut += '<tr><td class = "detailTitleStyle"><span class = "label label-primary">' + $.i18n.prop('aos_fm_SuggestionSetting_view_DefaultSuggestionGroupTitle').replace(';', '').replace(/\"/g,'') + '</span></td><td id = "defaulInfo' + id + '" class = "detailCellStyle" colspan = 7>' + '</td></tr>';
\r
926 sOut += '<tr><td class = "detailTitleStyle"><span class = "label label-primary">' + $.i18n.prop('aos_fm_SuggestionSetting_view_SettingSuggestionGroupTitle').replace(';', '').replace(/\"/g,'') + '</span></td><td id = "customInfo' + id + '" class = "detailCellStyle" colspan = 7><td align="right"><button id = "customInfoModify' + id + '" class="btn-toolbar" type="button"><span id = "modifyBtnSpan' + id + '"class="fa fa-pencil-square-o"></span></button></td><td id="cancelDiv' + id + '"></td></td></tr>';
\r
928 sOut += '</table>';
\r
931 var systemType = 0;
\r
933 for (var i = 0; i < oTable.datas.length; i++) {
\r
934 var temp = oTable.datas[i];
\r
935 if (temp.alarmId == oTr['alarmId'].value) {
\r
936 systemType = temp.systemType;
\r
937 code = temp.probableCauseCode;
\r
941 "systemType" : systemType,
\r
944 var sendData = JSON.stringify(data);
\r
946 "dataType" : 'json',
\r
948 "url" : "/web/rest/web/fm/Maintenance" + "?" + "data=" + sendData,
\r
949 "contentType" : 'application/json; charset=utf-8',
\r
951 "success" : function (json) {
\r
952 $('tr').find('td#defaulInfo' + id).text(json.defaulInfo);
\r
953 $('tr').find('td#customInfo' + id).text(json.customInfo);
\r
954 var modify = $('#customInfoModify' + id);
\r
955 modify.on('click', function () {
\r
956 var span = $('#modifyBtnSpan' + id);
\r
957 var customInfo = $('tr').find('td#customInfo' + id);
\r
958 var cancel = $('#cancelDiv' + id);
\r
959 if (span['0'].className === 'fa fa-pencil-square-o') {
\r
960 var value = customInfo['0'].textContent;
\r
961 customInfo['0'].textContent = '';
\r
962 customInfo['0'].innerHTML = '<textarea id="customInfoInput' + id + '" type="textarea" cols=100 rows=4>' + value + '</textarea>';
\r
963 span['0'].className = 'fa fa-floppy-o';
\r
964 cancel['0'].innerHTML = '<button id = "cancelBtn' + id + '" class="btn-toolbar" type="button"><span class="fa fa-sign-out"></span></button>';
\r
965 $('#cancelBtn' + id).on('click', function () {
\r
966 customInfo['0'].innerHTML = '';
\r
967 customInfo['0'].textContent = value;
\r
968 cancel['0'].innerHTML = '';
\r
969 span['0'].className = 'fa fa-pencil-square-o';
\r
972 var inputValue = $('#customInfoInput' + id)['0'].value;
\r
973 customInfo['0'].innerHTML = '';
\r
974 customInfo['0'].textContent = inputValue;
\r
975 span['0'].className = 'fa fa-pencil-square-o';
\r
976 cancel['0'].innerHTML = '';
\r
978 "systemType" : systemType,
\r
980 "defaulInfo" : json.defaulInfo,
\r
981 "customInfo" : inputValue
\r
984 "dataType" : 'json',
\r
986 "url" : "/web/rest/web/fm/Maintenance",
\r
987 "contentType" : 'application/json; charset=utf-8',
\r
988 "data" : JSON.stringify(modifyData),
\r
989 "error" : function () {
\r
990 alert('Modify Error!');
\r
996 "error" : function () {
\r
997 alert('Communication Error!');
\r
1004 var generateColumns = function(columns, openRowFlag, rowCheckable){
\r
1005 var $tableData = $('table#datatable_ajax' + contextData.curentDatableId);
\r
1006 var theadTR = $('thead > tr', $tableData);
\r
1008 theadTR.append('<th><input type="checkbox" class="group-checkable"></th>');
\r
1011 theadTR.append('<th> </th>');
\r
1013 for(var i=0;i<columns.length;i++){
\r
1014 theadTR.append('<TH id="' + columns[i].columnId + '" style="white-space: nowrap;">' + columns[i].columnTitle + '</TH>');
\r
1018 var sortHandling = function(oTable, openRowFlag, rowCheckable){
\r
1019 var indexSkip = -1;
\r
1020 if(openRowFlag&&rowCheckable){
\r
1022 }else if(openRowFlag&&!rowCheckable||!openRowFlag&&rowCheckable){
\r
1025 var $sortOrder = 0; //排序类型 1表示升序,0表示降序
\r
1026 var tableWrapper = $('div.dataTables_wrapper', contextData.wrapperDivContext);
\r
1027 var $tableHead = $('div.dataTables_scrollHeadInner > table.dataTable', tableWrapper);
\r
1028 var $tableData = $('table#datatable_ajax' + contextData.curentDatableId);
\r
1029 var clearSort = function(currentTh){
\r
1030 var ths = $tableHead.find('th').get();
\r
1031 var tableDataHeadTHs = $tableData.find('th').get();
\r
1032 $.each( ths, function( index, th ){
\r
1033 if(index > indexSkip){
\r
1034 if($(th).text() != currentTh.text()){
\r
1035 if($(th).is('.sorting_disabled')){
\r
1037 }else if($(th).is('.sorting_asc')){
\r
1038 $(th).removeClass('sorting_asc').addClass('sorting_disabled');
\r
1039 $(tableDataHeadTHs[index]).removeClass('sorting_asc').addClass('sorting_disabled');
\r
1040 }else if($(th).is('.sorting_desc')){
\r
1041 $(th).removeClass('sorting_desc').addClass('sorting_disabled');
\r
1042 $(tableDataHeadTHs[index]).removeClass('sorting_desc').addClass('sorting_disabled');
\r
1049 $('th', $tableHead).each(function( column )
\r
1051 if(column>indexSkip){
\r
1052 //处理三种有可能存在的排序字段,比较方法
\r
1054 if( $(this).is('.sort-title') || $(this).is('.sorting_disabled') )
\r
1056 findSortKey = function( $cell )
\r
1058 var cellText = $cell.text();
\r
1059 if(isNaN(cellText)){
\r
1060 return $cell.text().toUpperCase();
\r
1062 return parseFloat(cellText);
\r
1064 //return $cell.text().toUpperCase();
\r
1067 else if( $(this).is('.sort-date') )
\r
1069 findSortKey = function( $cell )
\r
1071 return Date.parse('1' + $cell.text());
\r
1074 else if( $(this).is('.sort-price') )
\r
1076 findSortKey = function( $cell )
\r
1078 var key = parseFloat($cell.text().replace(/^[^\d.]*/, ''))
\r
1079 return isNaN(key) ? 0 : key;
\r
1086 $(this).click(function()
\r
1088 $sortOrder = $sortOrder == 0 ? 1 : 0;
\r
1089 var tableDataHeadTHs = $tableData.find('th').get();
\r
1091 if($sortOrder == 1){
\r
1092 if($(this).is('.sorting_disabled')){
\r
1093 $(this).removeClass('sorting_disabled').addClass('sorting_asc');
\r
1094 $(tableDataHeadTHs[column]).removeClass('sorting_disabled').addClass('sorting_asc');
\r
1095 }else if($(this).is('.sorting_asc')){
\r
1096 $(this).removeClass('sorting_asc').addClass('sorting_desc');
\r
1097 $(tableDataHeadTHs[column]).removeClass('sorting_asc').addClass('sorting_desc');
\r
1098 }else if($(this).is('.sorting_desc')){
\r
1099 $(this).removeClass('sorting_desc').addClass('sorting_asc');
\r
1100 $(tableDataHeadTHs[column]).removeClass('sorting_desc').addClass('sorting_asc');
\r
1103 if($(this).is('.sorting_disabled')){
\r
1104 $(this).removeClass('sorting_disabled').addClass('sorting_desc');
\r
1105 $(tableDataHeadTHs[column]).removeClass('sorting_disabled').addClass('sorting_desc');
\r
1106 }else if($(this).is('.sorting_asc')){
\r
1107 $(this).removeClass('sorting_asc').addClass('sorting_desc');
\r
1108 $(tableDataHeadTHs[column]).removeClass('sorting_asc').addClass('sorting_desc');
\r
1109 }else if($(this).is('.sorting_desc')){
\r
1110 $(this).removeClass('sorting_desc').addClass('sorting_asc');
\r
1111 $(tableDataHeadTHs[column]).removeClass('sorting_desc').addClass('sorting_asc');
\r
1114 clearSort($(this));
\r
1116 var rows = $tableData.find('tbody > tr').get();
\r
1118 $.each( rows, function( index, row )
\r
1121 if ( oTable.fnIsOpen(row) )
\r
1123 $(row).find('.row-details').click();
\r
1127 //重新取得所有行,否则排序后表格显示异常
\r
1128 rows = $tableData.find('tbody > tr').get();
\r
1130 $.each( rows, function( index, row )
\r
1132 row.sortKey = findSortKey($(row).children('td').eq(column));
\r
1135 rows.sort(function( a, b )
\r
1137 if( $sortOrder == 1 )
\r
1140 if(a.sortKey < b.sortKey) return -1;
\r
1141 if(a.sortKey > b.sortKey) return 1;
\r
1147 if(a.sortKey < b.sortKey) return 1;
\r
1148 if(a.sortKey > b.sortKey) return -1;
\r
1153 $.each( rows, function( index, row )
\r
1155 $tableData.children('tbody').append(row);
\r
1156 row.sortKey = null;
\r
1164 var handleRecords = function(requestDatas, columns, xsHiddenColumns, smHiddenColumns, oLanguage, openRowFlag, rowCheckable, rowOverFlag, requestURL, requestParameters, tableHeight, columnsTooLong, sTotalRecordsSource, callbackList, totalRecords, requestType) {
\r
1167 jQuery.getJSON('/web/newict/framework/thirdparty/data-tables/app-universal-i18n-datatable-' + lang + '.json',
\r
1172 grid = DatatableICT();
\r
1173 grid.setCallbackList(callbackList);
\r
1174 grid.setContextData(contextData);
\r
1175 grid.setOpenRowFlag(openRowFlag);
\r
1176 grid.setRowCheckable(rowCheckable);
\r
1177 grid.setRowOverFlag(rowOverFlag);
\r
1178 grid.setColumnsTooLong(columnsTooLong);
\r
1179 grid.setSTotalRecordsSource(sTotalRecordsSource);
\r
1180 grid.setTotalRecords(totalRecords);
\r
1181 grid.setTableHeight(tableHeight);
\r
1182 grid.setRequestType(requestType);
\r
1184 // if(!requestStr || requestStr.length == 0){
\r
1185 // requestStr = JSON.stringify(requestAllData);
\r
1187 grid.clearAjaxParams();
\r
1188 if(requestType == "GET"){
\r
1189 grid.addAjaxParam('data', JSON.stringify(requestDatas));
\r
1191 grid.addAjaxParam('data', requestDatas);
\r
1194 for(var i=0;i<requestParameters.length;i++){
\r
1195 grid.addAjaxParam(requestParameters[i].paraId,requestParameters[i].paraValue);
\r
1199 src: $("table#datatable_ajax" + contextData.curentDatableId),
\r
1200 onSuccess: function(grid) {
\r
1201 // execute some code after table records loaded
\r
1202 var tableWrapper = $('div#datatable_ajax_wrapper', contextData.wrapperDivContext);
\r
1203 var $tableHead = $('div.dataTables_scrollHeadInner > table.dataTable', tableWrapper);
\r
1204 var ths = $tableHead.find('th').get();
\r
1205 var $tableData = $('table#datatable_ajax' + contextData.curentDatableId);
\r
1206 var tableDataHeadTHs = $tableData.find('th').get();
\r
1207 $.each( ths, function( index, th ){
\r
1208 //clear all sort direction
\r
1209 if($(th).is('.sorting_disabled')){
\r
1211 }else if($(th).is('.sorting_asc')){
\r
1212 $(th).removeClass('sorting_asc').addClass('sorting_disabled');
\r
1213 $(tableDataHeadTHs[index]).removeClass('sorting_asc').addClass('sorting_disabled');
\r
1214 }else if($(th).is('.sorting_desc')){
\r
1215 $(th).removeClass('sorting_desc').addClass('sorting_disabled');
\r
1216 $(tableDataHeadTHs[index]).removeClass('sorting_desc').addClass('sorting_disabled');
\r
1221 onError: function(grid) {
\r
1222 // execute some code on network or other general error
\r
1225 "sDom" : "tr<'row'<'col-md-6 col-sm-12'><'col-md-6 col-sm-12'pli>>", // datatable layout
\r
1226 "oLanguage": oLanguage,
\r
1227 //"bAutoWidth": true,
\r
1228 "sScrollY": tableHeight,
\r
1229 "bScrollCollapse": true,
\r
1230 "sScrollX": "100%",
\r
1231 //"sScrollXInner": "110%",
\r
1234 [20, 50, 100] // change per page values here
\r
1236 "iDisplayLength": 100, // default record count per page
\r
1237 "bServerSide": true, // server side processing
\r
1238 "sAjaxSource": requestURL // ajax source
\r
1240 }, columns, xsHiddenColumns, smHiddenColumns, openRowFlag, rowCheckable);
\r
1244 * Insert a 'details' column to the table
\r
1246 var insertDetails = function (oTable, columns, rowCheckable) {
\r
1248 var $tableData = $('table#datatable_ajax' + contextData.curentDatableId);
\r
1250 $tableData.on('click', ' tbody td .row-details', function () {
\r
1251 var nTr = $(this).parents('tr')[0];
\r
1252 if (oTable.fnIsOpen(nTr)) {
\r
1253 /* This row is already open - close it */
\r
1254 $(this).addClass("row-details-close").removeClass("row-details-open");
\r
1255 oTable.fnClose(nTr);
\r
1257 /* Open this row */
\r
1258 $(this).addClass("row-details-open").removeClass("row-details-close");
\r
1259 oTable.fnOpen(nTr, fnFormatDetails(oTable, nTr, columns, rowCheckable), 'details');
\r
1266 //main function to initiate the module
\r
1267 init: function (requestDatas, lang, configPathPrefix, callbackList, newColumns, totalPage) {
\r
1271 var xsHiddenColumns;
\r
1272 var smHiddenColumns;
\r
1275 var openRowFlag = false;
\r
1276 var rowOverFlag = false;
\r
1277 var rowCheckable = false;
\r
1278 var requestURL="";
\r
1279 var requestAllData;
\r
1280 var requestParameters;
\r
1285 var columnsTooLong;
\r
1286 var sTotalRecordsSource="";
\r
1287 var totalRecords = 0;
\r
1289 var requestType = "GET";
\r
1294 url: configPathPrefix + '-' + lang + '.json',
\r
1296 contentType:'application/json; charset=utf-8',
\r
1297 "success": function(data) {
\r
1298 oLanguage = data.language;
\r
1299 columns = data.columns;
\r
1301 columns = newColumns;
\r
1303 xsHiddenColumns = data.xsHiddenColumns;
\r
1304 smHiddenColumns = data.smHiddenColumns;
\r
1305 columnsAll = data.columnsAll;
\r
1307 columnsAll = newColumns;
\r
1309 openRowFlag = data.openRowFlag == 'true'? true: false;
\r
1310 rowOverFlag = data.rowOverFlag == 'true'? true: false;
\r
1311 rowCheckable = data.rowCheckable == 'true'? true: false;
\r
1312 requestURL = data.requestURL;
\r
1313 //requestAllData = data.requestAllData;
\r
1314 requestParameters = data.requestParameters;
\r
1315 tableHeight = data.tableHeight;
\r
1316 tableWidth = data.tableWidth;
\r
1317 columnsTooLong = data.columnsTooLong;
\r
1318 sTotalRecordsSource = data.sTotalRecordsSource;
\r
1319 if(data.sTotalRecords){ //性能的情况直接指定总行数
\r
1320 totalRecords = parseInt(data.sTotalRecords);
\r
1322 if(totalPage){ //可以从参数指定总行数,适用于单独发请求获得总行数的场景
\r
1323 totalRecords = totalPage;
\r
1325 if(data.requestType){
\r
1326 requestType = data.requestType;
\r
1329 "error" : function (xhr, info) {
\r
1330 alert('Communication Error! Error reason:' + info);
\r
1334 $('div#dataTableWrapperDiv' + contextData.curentDatableId).css('width', tableWidth);
\r
1336 if(!isContained(xsHiddenColumns, smHiddenColumns) || !isContained(columns, xsHiddenColumns) || !isContained(columnsAll, columns)){
\r
1337 alert('Columns claim error: (smHiddenColumns <= xsHiddenColumns <= columns <= columnsAll) Please!');
\r
1341 generateColumns(columns, openRowFlag, rowCheckable);
\r
1343 handleRecords(requestDatas, columns, xsHiddenColumns, smHiddenColumns, oLanguage, openRowFlag, rowCheckable, rowOverFlag, requestURL, requestParameters, tableHeight, columnsTooLong, sTotalRecordsSource, callbackList, totalRecords, requestType);
\r
1344 //获得初始化完毕的DataTable对象
\r
1345 var oTable = grid.getDataTable();
\r
1347 insertDetails(oTable, columnsAll, rowCheckable);
\r
1349 sortHandling(oTable, openRowFlag, rowCheckable);
\r
1350 //oTable.fnAdjustColumnSizing(true);
\r
1354 getDataGrid: function(){
\r
1358 setContextData: function(newContextData){
\r
1359 contextData = newContextData;
\r
1366 var addTableElementsId = function(){
\r
1368 var outterDivs = $('div.dataTableWrapperDiv');
\r
1371 if(outterDivs && outterDivs.length > 0) {
\r
1374 $.each(outterDivs, function (index, div) {
\r
1375 var divId = $(div).attr("id");
\r
1376 divIdNo = divId.substring(20);
\r
1377 if (divIdNo || divIdNo.length > 0){
\r
1378 if (parseInt(divIdNo) > maxId) {
\r
1379 maxId = parseInt(divIdNo);
\r
1383 currentId = maxId + 1;
\r
1386 var curentDatableId = "_" + currentId;
\r
1388 var dataTableWrapperDiv = $('div#dataTableWrapperDiv');//新添加的outterDiv
\r
1389 $(dataTableWrapperDiv).attr("id", "dataTableWrapperDiv" + curentDatableId);
\r
1390 var dataTableWrapperDivContext = dataTableWrapperDiv;
\r
1391 $('div.table-container', dataTableWrapperDiv).attr("id", "table-container" + curentDatableId);
\r
1392 $('table#datatable_ajax', dataTableWrapperDiv).attr("id", "datatable_ajax" + curentDatableId);
\r
1393 $('div#divOverlay', dataTableWrapperDiv).attr("id", "divOverlay" + curentDatableId);
\r
1394 //$('div#buttonConfirm', dataTableWrapperDiv).attr("id", "buttonConfirm" + curentDatableId);
\r
1395 //$('div#buttonUnConfirm', dataTableWrapperDiv).attr("id", "buttonUnConfirm" + curentDatableId);
\r
1396 $('div#myModal', dataTableWrapperDiv).attr("id", "myModal" + curentDatableId);
\r
1397 $('div#myModalConfirm', dataTableWrapperDiv).attr("id", "myModalConfirm" + curentDatableId);
\r
1398 $('span#alarm_number', dataTableWrapperDiv).attr("id", "alarm_number" + curentDatableId);
\r
1401 "curentDatableId": curentDatableId,
\r
1402 "wrapperDivContext":dataTableWrapperDivContext
\r
1406 var DataTableICT = function(requestDatas, tableDivId, tableDivPath, configPathPrefix, callbackList, newColumns, totalPage){
\r
1408 /* var requestStr = "";
\r
1410 requestStr = JSON.stringify(datas);
\r
1413 var lang = getLanguage();
\r
1416 /**取得表格组件所需html片段 **/
\r
1417 /*jQuery('div#' + tableDivId).load(tableDivPath, function() {
\r
1418 var contextData = addTableElementsId();
\r
1419 TableAjaxICT.setContextData(contextData);
\r
1421 var lang = getLanguage();
\r
1423 var oTable = TableAjaxICT.init(requestStr, lang, configPathPrefix);
\r
1425 //重新调节列宽以适应window resize
\r
1426 $(window).bind('resize', function () {
\r
1427 //oTable.DataTable.models.oSettings.bAjaxDataGet = false;
\r
1428 oTable.fnAdjustColumnSizing();
\r
1432 /**同步取得表格组件所需html片段 **/
\r
1435 "dataType" : "html",
\r
1437 "url" : tableDivPath,
\r
1439 "success" : function (html, textStatus, jqXHR) {
\r
1440 $('div#' + tableDivId).html(html);
\r
1442 "error" : function () {
\r
1443 alert("Communication error!");
\r
1447 var contextData = addTableElementsId();
\r
1448 TableAjaxICT.setContextData(contextData);
\r
1450 var oTable = TableAjaxICT.init(requestDatas, lang, configPathPrefix, callbackList, newColumns, totalPage);
\r
1452 //重新调节列宽以适应window resize
\r
1453 $(window).bind('resize', function () {
\r
1454 //oTable.DataTable.models.oSettings.bAjaxDataGet = false;
\r
1455 oTable.fnAdjustColumnSizing();
\r
1458 return TableAjaxICT.getDataGrid();
\r