2 Wrapper/Helper Class for datagrid based on jQuery Datatable Plugin
\r
4 var DatatableICT = function () {
\r
6 var tableOptions; // main options
\r
7 var dataTable; // datatable object
\r
8 var table; // actual table jquery object
\r
9 var tableContainer; // actual table container object
\r
10 var tableWrapper; // actual table wrapper jquery object
\r
11 var tableInitialized = false;
\r
12 var ajaxParams = []; // set filter mode
\r
14 var xsHiddenColumns;
\r
15 var smHiddenColumns;
\r
16 var columnMaxLength = 30;
\r
18 var hidden_xs_maxWidth = 768;
\r
19 var hidden_sm_maxWidth = 991;
\r
21 var openRowFlag = false;
\r
22 var rowOverFlag = false;
\r
23 var rowCheckable = false;
\r
26 var sTotalRecordsSource;
\r
29 var callbackList = [];
\r
31 var includedInXsHiddenColumns = function(columnId){
\r
32 for(var i=0;i<xsHiddenColumns.length; i++ ){
\r
33 var column = xsHiddenColumns[i];
\r
34 if(columnId == column.columnId){
\r
41 var includedInSmHiddenColumns = function(columnId){
\r
42 for(var i=0;i<smHiddenColumns.length; i++ ){
\r
43 var column = smHiddenColumns[i];
\r
44 if(columnId == column.columnId){
\r
51 var countSelectedRecords = function() {
\r
52 var selected = $('tbody > tr > td:nth-child(1) input[type="checkbox"]:checked', table).size();
\r
53 var text = tableOptions.dataTable.oLanguage.sGroupActions;
\r
55 $('.table-group-actions > span', tableWrapper).text(text.replace("_TOTAL_", selected));
\r
57 $('.table-group-actions > span', tableWrapper).text("");
\r
61 var jsonObjectToArray = function(json, columns, iDraw){
\r
62 var jsonToDatatable = {aaData:[], sEcho:iDraw, iTotalRecords:0, iTotalDisplayRecords:0 };
\r
63 for(var i=0; i<json.response.data.length; i++){
\r
64 jsonToDatatable.aaData[i] = [];
\r
65 var resRowObject = json.response.data[i];
\r
67 jsonToDatatable.aaData[i].push("<input type=\"checkbox\" name=\"id[]\" value=\"1\">");
\r
70 jsonToDatatable.aaData[i].push("<span class=\"row-details row-details-close\"></span>");
\r
72 for(var j=0; j<columns.length; j++){
\r
74 if($(window).width() >= hidden_xs_maxWidth && $(window).width() < hidden_sm_maxWidth && includedInSmHiddenColumns(columns[j].columnId )){
\r
76 }else if($(window).width() < hidden_xs_maxWidth && includedInXsHiddenColumns(columns[j].columnId )){
\r
79 var currentColumnId = columns[j].columnId;
\r
80 if(jQuery.inArray(currentColumnId, columnsTooLong) > -1){
\r
82 for(var k=0;k<columnsTooLong.length;k++){
\r
83 if(currentColumnId == columnsTooLong[k]){
\r
84 rawText = resRowObject[currentColumnId];
\r
88 if(rawText.length > columnMaxLength){
\r
89 jsonToDatatable.aaData[i].push(rawText.slice(0, columnMaxLength) + '...');
\r
91 jsonToDatatable.aaData[i].push(resRowObject[currentColumnId]);
\r
94 jsonToDatatable.aaData[i].push(resRowObject[currentColumnId]);
\r
100 jsonToDatatable.sEcho++;
\r
102 var totalRecordsSource = eval('json.' + sTotalRecordsSource);
\r
103 if(totalRecordsSource && totalRecordsSource.length >0){
\r
104 totalRow = parseInt(totalRecordsSource);
\r
106 if(isNaN(totalRow)){
\r
107 alert('All rows counting number got fail!');
\r
109 jsonToDatatable.iTotalRecords = totalRow;
\r
110 jsonToDatatable.iTotalDisplayRecords = totalRow;
\r
112 return jsonToDatatable;
\r
115 var singleAlarmDel = function(divOverlay){
\r
117 //根据浮动框的当前id获取需要删除的行
\r
118 var trId = divOverlay.attr('id_tr');
\r
119 tr=$('tr#' + trId);
\r
120 var tds = $(tr).children();
\r
121 var tdAlarmId = "";
\r
123 tdAlarmId = $(tds.eq(2)).text();
\r
125 tdAlarmId = $(tds.eq(1)).text();
\r
129 "alarmId":[parseInt(tdAlarmId)]
\r
132 var sSource = "/web/rest/web/fm/curalarms?data=" + JSON.stringify(data) + "&_operationType=remove&_dataSource=isc_PageRestDataSource_0&isc_metaDataPrefix=_&isc_dataFormat=json";
\r
135 "dataType": 'json',
\r
139 "contentType" : 'application/json; charset=utf-8',
\r
140 "success": function(json) {
\r
141 if(json.response.status == 0){
\r
142 var resRowObject = json.response.data[0];
\r
145 if(json.response.status == -1){
\r
149 "error": function() {
\r
150 alert('Communication Error!');
\r
155 var singleAlarmAckUnAck = function(divOverlay, ackType){
\r
157 //根据浮动框的当前id获取需要确认的行
\r
158 var trId = divOverlay.attr('id_tr');
\r
159 var tr = $('tr#' + trId);
\r
162 var $tableHead = $('div.dataTables_scrollHeadInner > table.dataTable');
\r
163 //var trHead = $('tbody > tr:nth-child(' + trId + ')', $tableHead);
\r
164 var trHead = $('tr#' + trId.replace('body', 'head'), $tableHead);
\r
165 var tdDivs = $('td > div', trHead);
\r
167 var tds = $(tr).children();
\r
168 var tdAlarmId = "";
\r
170 tdAlarmId = $(tds.eq(2)).text();
\r
172 tdAlarmId = $(tds.eq(1)).text();
\r
177 "dataSource":"isc_PageRestDataSource_0",
\r
178 "operationType":"update",
\r
179 "componentId":"isc_com_zte_ums_aos_fm_view_eventview_table_AlarmTable_0",
\r
184 parseInt(tdAlarmId)
\r
190 var sSource = "/web/rest/web/fm/curalarms?isc_dataFormat=json";
\r
193 "dataType": 'json',
\r
196 "contentType": 'application/json; charset=utf-8',
\r
197 "data": JSON.stringify(aoData),
\r
198 "success": function(json) {
\r
199 /*for(var i=0;i<callbackList.length;i++){
\r
200 if(getFnName(callbackList[i]).indexOf("transformFieldNames")>0){
\r
201 json = callbackList[i](json);
\r
205 //json = AlarmLabels.transformFieldNames(json);
\r
206 if(callbackList[1]){
\r
207 json = callbackList[1](json);
\r
209 if(json.response.status == 0){
\r
210 var resRowObject = json.response.data[0];
\r
211 var columnsCopy = $.extend(true, [], columns);
\r
213 if($(window).width()>=hidden_xs_maxWidth && $(window).width()<hidden_sm_maxWidth){
\r
215 for(var i=0;i<columns.length;i++){
\r
216 if(!includedInSmHiddenColumns(columns[i].columnId)){
\r
217 columnsCopy.push(columns[i]);
\r
220 } else if($(window).width()<hidden_xs_maxWidth){
\r
222 for(var i=0;i<columns.length;i++){
\r
223 if(!includedInXsHiddenColumns(columns[i].columnId)){
\r
224 columnsCopy.push(columns[i]);
\r
232 for(var i=iIndex;i<tds.length && (i-iIndex)<columnsCopy.length;i++){
\r
233 var currentColumnId = columnsCopy[i-iIndex].columnId;
\r
234 if(jQuery.inArray(currentColumnId, columnsTooLong) > -1) {
\r
236 for(var k=0;k<columnsTooLong.length;k++){
\r
237 if(currentColumnId == columnsTooLong[k]){
\r
238 rawText = resRowObject[currentColumnId];
\r
242 if(rawText.length > columnMaxLength){
\r
243 $(tds.eq(i)).html(rawText.slice(0, columnMaxLength) + '...');
\r
244 $(tdDivs.eq(i)).html(rawText.slice(0, columnMaxLength) + '...');
\r
246 $(tds.eq(i)).html(resRowObject[currentColumnId]);
\r
247 $(tdDivs.eq(i)).html(resRowObject[currentColumnId]);
\r
250 $(tds.eq(i)).html(resRowObject[currentColumnId]);
\r
251 $(tdDivs.eq(i)).html(resRowObject[currentColumnId]);
\r
255 for (var t = 0; t < dataTable.datas.length; t++) {
\r
256 var temp = dataTable.datas[t];
\r
257 if (temp.alarmId == resRowObject['alarmId']) {
\r
258 dataTable.datas[t] = resRowObject;
\r
263 if(json.response.status == -1){
\r
264 $('div#myModalConfirm').modal({
\r
268 $('span#alarm_number').html(tdAlarmId);
\r
271 $('span#aos_fm_alarm_opeater_ack_already').html($.i18n.prop('aos_fm_alarm_opeater_ack_already_ok'));
\r
273 $('span#aos_fm_alarm_opeater_ack_already').html($.i18n.prop('aos_fm_alarm_opeater_ack_already_un'));
\r
277 var divColor = $("div.cellBackgroundColor", tr);
\r
278 $(divColor).parent().css("background", $(divColor).css("background-color"));
\r
280 "error": function() {
\r
281 alert('Communication Error!');
\r
286 var addRowOverlap = function(){
\r
287 var $tableData = $('table#datatable_ajax');
\r
289 var $tableHead = $('div.dataTables_scrollHeadInner > table.dataTable');
\r
290 var trHeads = $tableHead.find('tr').get();
\r
291 $.each( trHeads, function( index, trHead ){
\r
292 $(trHead).attr('id', 'headTableTR' + index);
\r
295 var $divOverlay = $('div#divOverlay');
\r
296 var divScrollHead = $('div.dataTables_scrollHead');
\r
297 var divRightPadding = $('div#divRightPadding');
\r
299 var tableHeadBottomHeight = $(divScrollHead).position().top + $(divScrollHead).height();
\r
300 var tableBottom = $tableData.position().top + $tableData.height() + 3;
\r
302 var tableRightEdgePosition = $(divRightPadding).position().left;
\r
303 var trs = $tableData.find('tr').get();
\r
304 $.each( trs, function( index, tr ){
\r
305 var tdEmpty = $('td.dataTables_empty',tr);
\r
306 if(!tdEmpty || tdEmpty.length ==0 ){
\r
307 $(tr).attr('id', 'bodyTableTR' + index);
\r
308 //$divOverlay.attr('id_tr', 'bodyTableTR' + index);
\r
309 $(tr).one('hover', function(){
\r
310 var rowPos = $(tr).position();
\r
311 var currentTrTop = rowPos.top;
\r
312 //var bottomLeft = rowPos.left;
\r
313 $divOverlay.attr('id_tr', 'bodyTableTR' + index);
\r
316 position: 'absolute',
\r
317 'background-color': '#e5e5e5',
\r
319 border: 'solid 0px',
\r
320 top: currentTrTop + 6,
\r
321 left: tableRightEdgePosition - 308,
\r
326 if( $divOverlay.position().top < tableHeadBottomHeight || $divOverlay.position().top + $divOverlay.height() > tableBottom){
\r
327 $divOverlay.css('display', 'none');
\r
329 var buttonConfirm = $('div#buttonConfirm', $divOverlay);
\r
330 var buttonUnConfirm = $('div#buttonUnConfirm', $divOverlay);
\r
331 //初始化悬浮按钮当前行的确认反确认状态
\r
332 if($(tr).find('span.alarmAck') && $(tr).find('span.alarmAck').length >0){
\r
333 var spanAck = $(tr).find('span.alarmAck');
\r
334 var ackState = $(spanAck).attr('ack_id');
\r
335 var buttonTDsConfirm = $(buttonConfirm).find('td');
\r
336 var buttonTDsUnConfirm = $(buttonUnConfirm).find('td');
\r
337 if(ackState=="2"){
\r
338 if(buttonTDsConfirm && buttonTDsConfirm.length > 0 && buttonTDsUnConfirm && buttonTDsUnConfirm.length > 0){
\r
339 $.each(buttonTDsConfirm, function(index, td){
\r
340 $(td).removeClass('buttonRoundedDisabled').addClass('buttonRounded');
\r
342 $.each(buttonTDsUnConfirm, function(index, td){
\r
343 $(td).removeClass('buttonRounded').addClass('buttonRoundedDisabled');
\r
347 if(buttonTDsConfirm && buttonTDsConfirm.length > 0 && buttonTDsUnConfirm && buttonTDsUnConfirm.length > 0){
\r
348 $.each(buttonTDsConfirm, function(index, td){
\r
349 $(td).removeClass('buttonRounded').addClass('buttonRoundedDisabled');
\r
351 $.each(buttonTDsUnConfirm, function(index, td){
\r
352 $(td).removeClass('buttonRoundedDisabled').addClass('buttonRounded');
\r
358 $(buttonConfirm).one('click', function(){
\r
359 var buttonRoundedTDsConfirm = $(buttonConfirm).find('td.buttonRounded');
\r
360 var buttonRoundedTDsUnConfirm = $(buttonUnConfirm).find('td.buttonRoundedDisabled');
\r
361 if(buttonRoundedTDsConfirm && buttonRoundedTDsConfirm.length > 0){
\r
362 $.each(buttonRoundedTDsConfirm, function(index, td){
\r
363 $(td).removeClass('buttonRounded').addClass('buttonRoundedDisabled');
\r
365 $.each(buttonRoundedTDsUnConfirm, function(index, td){
\r
366 $(td).removeClass('buttonRoundedDisabled').addClass('buttonRounded');
\r
368 $divOverlay.css('display', 'none');
\r
369 singleAlarmAckUnAck($divOverlay, 1);
\r
372 $(buttonUnConfirm).one('click', function(){
\r
373 var buttonRoundedTDsUnConfirm = $(buttonUnConfirm).find('td.buttonRounded');
\r
374 var buttonRoundedTDsConfirm = $(buttonConfirm).find('td.buttonRoundedDisabled');
\r
375 if(buttonRoundedTDsUnConfirm && buttonRoundedTDsUnConfirm.length > 0){
\r
376 $.each(buttonRoundedTDsUnConfirm, function(index, td){
\r
377 $(td).removeClass('buttonRounded').addClass('buttonRoundedDisabled');
\r
379 $.each(buttonRoundedTDsConfirm, function(index, td){
\r
380 $(td).removeClass('buttonRoundedDisabled').addClass('buttonRounded');
\r
382 $divOverlay.css('display', 'none');
\r
383 singleAlarmAckUnAck($divOverlay, 2);
\r
386 var buttonDelete = $('div#buttonDelete', $divOverlay);
\r
387 $(buttonDelete).die().live('click', function(){
\r
388 $divOverlay.css('display', 'none');
\r
389 var trIdToDelete = $divOverlay.attr('id_tr');
\r
390 var toDeleteTr=$('tr#' + trIdToDelete);
\r
391 $("td", toDeleteTr).addClass('dataTableTdSelected');
\r
393 $('div#myModal').modal({
\r
397 $('#delConfirm').die().live('click', function(){
\r
398 //$divOverlay.css('display', 'none');
\r
399 dataTable.fnClose(tr);
\r
401 singleAlarmDel($divOverlay);
\r
405 $('tr#' + $(tr).attr('id').replace('body', 'head'), $tableHead).remove();
\r
407 //dataTable.fnAdjustColumnSizing();
\r
409 $('#myModal').on('hidden.bs.modal', function (e) {
\r
410 $("td", toDeleteTr).removeClass('dataTableTdSelected');
\r
414 $('td.details > table.detailTable').on('hover', function(){
\r
415 $divOverlay.css('display', 'none');
\r
417 $('div#myModal').on('hover', function(){
\r
418 $divOverlay.css('display', 'none');
\r
427 //main function to initiate the module
\r
428 init: function (options, columnsDefined, xsHiddenColumnsDefined, smHiddenColumnsDefined) {
\r
430 if (!$().dataTable) {
\r
438 var targetsLength = columnsDefined.length;
\r
439 if(rowCheckable)targetsLength++;
\r
440 if(openRowFlag)targetsLength++;
\r
441 for(var i=0;i<targetsLength;i++){
\r
444 aTargetsAll = aTargets;
\r
446 // default settings
\r
447 options = $.extend(true, {
\r
448 src: "", // actual table
\r
449 filterApplyAction: "filter",
\r
450 filterCancelAction: "filter_cancel",
\r
451 resetGroupActionInputOnSuccess: true,
\r
453 //"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
455 "aoColumnDefs" : [{ // define columns sorting options(by default all columns are sortable extept the first checkbox column)
\r
456 'bSortable' : false,
\r
457 'aTargets' : aTargets
\r
460 "bAutoWidth": false, // disable fixed width and enable fluid table
\r
461 //"bSortCellsTop": true, // make sortable only the first row in thead
\r
462 "sPaginationType": "bootstrap_extended", // pagination type(bootstrap, bootstrap_full_number or bootstrap_extended)
\r
463 "bProcessing": true, // enable/disable display message box on record load
\r
464 "bServerSide": true, // enable/disable server side ajax loading
\r
465 "sAjaxSource": "", // define ajax source URL
\r
466 //"sServerMethod": "GET",
\r
468 // handle ajax request
\r
469 "fnServerData": function ( sSource, aoData, fnCallback, oSettings ) {
\r
471 //var startIndex = aoData[3].value;//"iDisplayStart"
\r
472 //var pageLength = aoData[4].value;//"iDisplayLength"
\r
473 var oPaging = oSettings.oInstance.fnPagingInfo();
\r
474 //var startIndex = oPaging.iStart;
\r
475 var pageLength = oPaging.iLength;
\r
476 var curPageNo = oPaging.iPage + 1;
\r
478 for(var k=aoData.length-1;k>=0;k--){
\r
480 if(aoData[k].name=='pageSize'){
\r
481 aoData[k].value=pageLength;
\r
484 if(aoData[k].name=='pageNo'){
\r
485 aoData[k].value=curPageNo;
\r
488 if(flag == 1)break;
\r
491 oSettings.jqXHR = $.ajax( {
\r
492 "dataType": 'json',
\r
496 "success": function(res, textStatus, jqXHR) {
\r
497 if (res.sMessage) {
\r
498 openoFrameWork.alert({type: (res.sStatus == 'OK' ? 'success' : 'danger'), icon: (res.sStatus == 'OK' ? 'check' : 'warning'), message: res.sMessage, container: tableWrapper, place: 'prepend'});
\r
500 if ($('.group-checkable', tableContainer).size() === 1) {
\r
501 $('.group-checkable', tableContainer).attr("checked", false);
\r
502 $.uniform.update($('.group-checkable', tableContainer));
\r
504 if (tableOptions.onSuccess) {
\r
505 tableOptions.onSuccess.call(the);
\r
507 //保存数据在dataTable对象中给行详细信息面板用
\r
508 dataTable.datas = res.response.data;
\r
509 if(res.response.status < 0){
\r
510 alert(res.response.data);
\r
515 //res = AlarmLabels.transformFieldNames(res);
\r
516 /*for(var i=0;i<callbackList.length;i++){
\r
517 if(getFnName(callbackList[i]).indexOf("transformFieldNames")>0){
\r
518 res = callbackList[i](res);
\r
522 if(callbackList[1]){
\r
523 res = callbackList[1](res);
\r
526 res = jsonObjectToArray(res, columns, oSettings.iDraw);
\r
529 fnCallback(res, textStatus, jqXHR);
\r
531 "error": function() {
\r
532 if (tableOptions.onError) {
\r
533 tableOptions.onError.call(the);
\r
535 openoFrameWork.alert({type: 'danger', icon: 'warning', message: tableOptions.dataTable.oLanguage.sAjaxRequestGeneralError, container: tableWrapper, place: 'prepend'});
\r
536 $('.dataTables_processing', tableWrapper).remove();
\r
542 // pass additional parameter
\r
543 "fnServerParams": function ( aoData ) {
\r
544 //here can be added an external ajax request parameters.
\r
545 //for(var i in ajaxParams) {
\r
546 for(var i=0; i<ajaxParams.length; i++){
\r
547 var param = ajaxParams[i];
\r
548 aoData.push({"name" : param.name, "value": param.value});
\r
552 "fnDrawCallback": function( oSettings ) { // run some code on table redraw
\r
553 if (tableInitialized === false) { // check if table has been initialized
\r
554 tableInitialized = true; // set table initialized
\r
555 table.show(); // display table
\r
557 openoFrameWork.initUniform($('input[type="checkbox"]', tableContainer)); // reinitialize uniform checkboxes on each table reload
\r
558 countSelectedRecords(); // reset selected records indicator
\r
560 $('table#datatable_ajax').find('td').css('white-space', 'nowrap');
\r
563 var $tableHead = $('div.dataTables_scrollHeadInner > table.dataTable', tableWrapper);
\r
564 var tbodyHead = $('tbody', $tableHead);
\r
565 if(tbodyHead && tbodyHead.length >0){
\r
566 $(tbodyHead).remove();
\r
569 var $tableBody = $('table#datatable_ajax', tableWrapper);
\r
570 var trIn = $('thead > tr:nth-child(1)', $tableHead);
\r
571 var trBodyHead = $('thead > tr:nth-child(1)', $tableBody);
\r
572 var tds = $(trIn).children();
\r
573 var ths = $(trBodyHead).children();
\r
574 for(var k=0;k<tds.length;k++){
\r
575 $(ths.eq(k)).html('<div style="height: 0;overflow: hidden;">' + tds.eq(k).html() + '</div>');
\r
577 var bodyRows = $('tbody > tr', $tableBody);
\r
578 for(var i=0;i<bodyRows.length;i++){
\r
579 var rowClone = $(bodyRows.eq(i)).clone();
\r
580 var tds = $(rowClone).children();
\r
581 for(var j=0;j<tds.length;j++){
\r
582 $(tds.eq(j)).html('<div style="height: 0;overflow: hidden;">' + tds.eq(j).html() + '</div>');
\r
583 $(tds.eq(j)).height('0px');
\r
584 $(tds.eq(j)).css('padding-top','0px');
\r
585 $(tds.eq(j)).css('padding-bottom','0px');
\r
586 $(tds.eq(j)).css('border-top-width','0px');
\r
587 $(tds.eq(j)).css('border-bottom-width','0px');
\r
589 $(rowClone).height('0px');
\r
590 $tableHead.append($(rowClone).prop("outerHTML"));
\r
593 $('.dataTables_scrollBody').css('width','100%');
\r
594 $('.dataTables_scrollHead').css('width','98.5%');
\r
595 $('.dataTables_scrollHeadInner').css('padding-right', 0);
\r
603 var divColors = $("div.cellBackgroundColor", $tableBody);
\r
604 $.each( divColors, function( index, divColor ){
\r
605 $(divColor).parent().css("background", $(divColor).css("background-color"));
\r
609 $('div.dataTables_scrollBody').css('height', tableHeight);
\r
614 tableOptions = options;
\r
616 columns = columnsDefined;
\r
617 xsHiddenColumns = xsHiddenColumnsDefined;
\r
618 smHiddenColumns = smHiddenColumnsDefined;
\r
619 // create table's jquery object
\r
620 table = $(options.src);
\r
621 tableContainer = table.parents(".table-container");
\r
622 // apply the special class that used to restyle the default datatable
\r
624 $.fn.dataTableExt.oStdClasses.sWrapper = $.fn.dataTableExt.oStdClasses.sWrapper + " dataTables_extended_wrapper";
\r
626 // initialize a datatable
\r
627 dataTable = table.dataTable(options.dataTable);
\r
629 tableWrapper = table.parents('.dataTables_wrapper');
\r
631 // modify table per page dropdown input by appliying some classes
\r
632 $('.dataTables_length select', tableWrapper).addClass("form-control input-xsmall input-sm");
\r
634 // handle group checkboxes check/uncheck
\r
635 $('.group-checkable', tableContainer).change(function () {
\r
636 var set = $('tbody > tr > td:nth-child(1) input[type="checkbox"]', table);
\r
637 var checked = $(this).is(":checked");
\r
638 $(set).each(function () {
\r
639 $(this).attr("checked", checked);
\r
641 $.uniform.update(set);
\r
642 countSelectedRecords();
\r
645 // handle row's checkbox click
\r
646 table.on('change', 'tbody > tr > td:nth-child(1) input[type="checkbox"]', function(){
\r
647 countSelectedRecords();
\r
651 $('.dataTables_scrollHead').css('display','inline-block');
\r
652 //var dataTables_scrollHead_height = $('.dataTables_scrollHead').css( "height" );
\r
653 $(".dataTables_scrollHead").after("<div id='divRightPadding' style='overflow: hidden; background:#eee; position: relative; float:right; border: 1px solid #ddd; height:" + 38 + "px; width: 1.4%;'></div>");
\r
654 if($.browser.mozilla){
\r
655 $('#divRightPadding').css('height', '40');
\r
659 var $tableHead = $('div.dataTables_scrollHeadInner > table.dataTable', tableWrapper);
\r
660 var $tableBody = $('table#datatable_ajax', tableWrapper);
\r
662 for(var i=0;i<xsHiddenColumns.length;i++){
\r
663 for(var j=0;j<columns.length;j++){
\r
664 if(xsHiddenColumns[i].columnId == columns[j].columnId){
\r
665 $('thead > tr > th#' + columns[j].columnId, $tableHead).addClass('hidden-xs');
\r
666 $('thead > tr > th#' + columns[j].columnId, $tableBody).addClass('hidden-xs');
\r
672 for(var i=0;i<smHiddenColumns.length;i++){
\r
673 for(var j=0;j<columns.length;j++){
\r
674 if(smHiddenColumns[i].columnId == columns[j].columnId){
\r
675 $('thead > tr > th#' + columns[j].columnId, $tableHead).addClass('hidden-sm');
\r
676 $('thead > tr > th#' + columns[j].columnId, $tableBody).addClass('hidden-sm');
\r
681 },//end init------------------------------------------------------------------------------------
\r
683 getSelectedRowsCount: function() {
\r
684 return $('tbody > tr > td:nth-child(1) input[type="checkbox"]:checked', table).size();
\r
687 getSelectedRows: function() {
\r
689 $('tbody > tr > td:nth-child(1) input[type="checkbox"]:checked', table).each(function(){
\r
690 rows.push({name: $(this).attr("name"), value: $(this).val()});
\r
696 addAjaxParam: function(name, value) {
\r
697 ajaxParams.push({"name": name, "value": value});
\r
700 clearAjaxParams: function(name, value) {
\r
704 getDataTable: function() {
\r
708 getTableWrapper: function() {
\r
709 return tableWrapper;
\r
712 gettableContainer: function() {
\r
713 return tableContainer;
\r
716 getTable: function() {
\r
720 setOpenRowFlag: function(openRowFlagInput) {
\r
721 openRowFlag = openRowFlagInput;
\r
724 setRowOverFlag: function(rowOverFlagInput) {
\r
725 rowOverFlag = rowOverFlagInput;
\r
728 setRowCheckable: function(rowCheckableInput) {
\r
729 rowCheckable = rowCheckableInput;
\r
732 setColumnsTooLong: function(columnsTooLongInput) {
\r
733 columnsTooLong = columnsTooLongInput;
\r
736 setSTotalRecordsSource: function(sTotalRecordsSourceInput){
\r
737 sTotalRecordsSource = sTotalRecordsSourceInput;
\r
740 setTableHeight: function(tableHeightInput){
\r
741 tableHeight = tableHeightInput;
\r
744 setCallbackList: function(list){
\r
745 if($.isArray(list)){
\r
746 callbackList = list;
\r
754 var TableAjaxICT = function () {
\r
756 var initPickers = function () {
\r
757 //init date pickers
\r
758 $('.date-picker').datepicker({
\r
759 //rtl: App.isRTL(),
\r
765 function isContained(largeArray, smallArray){
\r
766 if(!(largeArray instanceof Array) || !(smallArray instanceof Array))
\r
768 if(largeArray.length < smallArray.length)
\r
770 for(var i = 0; i < smallArray.length; i++){
\r
772 for(j=0;j<largeArray.length;j++){
\r
773 if(largeArray[j].columnId == smallArray[i].columnId){
\r
778 if(flag==false)return false;
\r
783 var grid = new DatatableICT();
\r
785 var detailTableId = "alarmDetailInfo";
\r
787 /* Formatting function for row details */
\r
788 function fnFormatDetails(oTable, nTr, columns, rowCheckable) {
\r
790 var tds = $(nTr).children();
\r
793 alarmId = $(tds.eq(2)).html();
\r
795 alarmId = $(tds.eq(1)).html();
\r
798 var systemType = 0;
\r
801 var resDisplayName="";
\r
803 var alarmRaisedTime="";
\r
804 var perceivedSeverity="";
\r
805 var probableCauseDesc="";
\r
811 var ackSystemId="";
\r
812 var alarmChangedTime="";
\r
813 var componentname="";
\r
815 var specificproblem="";
\r
816 var additionalText="";
\r
817 for (var i = 0; i < oTable.datas.length; i++) {
\r
818 var temp = oTable.datas[i];
\r
819 if (temp.alarmId == alarmId) {
\r
820 alarmId = temp.alarmId;
\r
821 resDisplayName = temp.resDisplayName;
\r
822 alarmRaisedTime = temp.alarmRaisedTime;
\r
823 perceivedSeverity = temp.perceivedSeverity;
\r
824 probableCauseDesc = temp.probableCauseDesc;
\r
826 alarmType = temp.alarmType;
\r
827 ackState = temp.ackState;
\r
828 ackTime = temp.ackTime;
\r
829 ackUserId = temp.ackUserId;
\r
830 ackSystemId = temp.ackSystemId;
\r
831 alarmChangedTime = temp.alarmChangedTime;
\r
833 systemType = temp.systemType;
\r
834 code = temp.probableCauseCode;
\r
836 componentname = temp.componentname;
\r
837 position1 = temp.position1;
\r
838 specificproblem = temp.specificproblem;
\r
839 additionalText = temp.additionalText;
\r
845 //获取所有展开的详细信息面板生成当前的面板id用于定位
\r
846 var detailTables = $('[class_id=detailTableAlarm]');
\r
847 if(detailTables && detailTables.length > 0){
\r
848 detailTableId = "alarmDetailInfo" + detailTables.length;
\r
850 var sOut = '<table id="' + detailTableId + '" class_id="detailTableAlarm" class = "detailTable" width = "800" style="table-layout: fixed;">';
\r
851 sOut += '<tr class="oddDetailTable"><td class = "detailTitleStyle" width = 130><span class = "labelDetailTable">' + columns[0].columnTitle + '</span></td><td class = "detailCellStyle" width = 160>' + alarmId + '</td>';
\r
852 sOut += '<td class = "detailTitleStyle" width = 130><span class = "labelDetailTable">' + columns[4].columnTitle + '</span></td><td class = "detailCellStyle" width = 130>' + perceivedSeverity + '</td>';
\r
853 sOut += '<td class = "detailTitleStyle" width = 130><span class = "labelDetailTable">' + columns[9].columnTitle + '</span></td><td class = "detailCellStyle" width = 160>' + alarmType + '</td>';
\r
854 sOut += '<td class = "detailTitleStyle" width = 130><span class = "labelDetailTable">' + columns[3].columnTitle + '</span></td><td class = "detailCellStyle" width = 160 colspan = 2>' + alarmRaisedTime + '</td></tr>';
\r
856 sOut += '<tr class="evenDetailTable"><td class = "detailTitleStyle"><span class = "labelDetailTable">' + columns[5].columnTitle + '</span></td><td class = "detailCellStyle" colspan = 3>' + probableCauseDesc + '</td>';
\r
857 sOut += '<td class = "detailTitleStyle"><span class = "labelDetailTable">' + columns[15].columnTitle + '</span></td><td class = "detailCellStyle">' + alarmChangedTime + '</td>';
\r
858 sOut += '<td class = "detailTitleStyle"><span class = "labelDetailTable">' + columns[11].columnTitle + '</span></td><td class = "detailCellStyle" colspan = 2>' + ackState + '</td></tr>';
\r
860 sOut += '<tr class="oddDetailTable"><td class = "detailTitleStyle"><span class = "labelDetailTable">' + columns[12].columnTitle + '</span></td><td class = "detailCellStyle">' + ackTime + '</td>';
\r
861 sOut += '<td class = "detailTitleStyle"><span class = "labelDetailTable">' + columns[13].columnTitle + '</span></td><td class = "detailCellStyle">' + ackUserId + '</td>';
\r
862 sOut += '<td class = "detailTitleStyle"><span class = "labelDetailTable">' + columns[14].columnTitle + '</span></td><td class = "detailCellStyle">' + ackSystemId + '</td>';
\r
863 sOut += '<td class = "detailTitleStyle"><span class = "labelDetailTable">' + columns[7].columnTitle + '</span></td><td class = "detailCellStyle" colspan = 2>' + neip + '</td></tr>';
\r
865 sOut += '<tr class="evenDetailTable"><td class = "detailTitleStyle"><span class = "labelDetailTable">' + columns[2].columnTitle + '</span></td><td class = "detailCellStyle" colspan = 3>' + moc + '</td>';
\r
866 sOut += '<td class = "detailTitleStyle"><span class = "labelDetailTable">' + columns[1].columnTitle + '</span></td><td class = "detailCellStyle" colspan = 4>' + resDisplayName + '</td></tr>';
\r
868 sOut += '<tr class="oddDetailTable"><td class = "detailTitleStyle"><span class = "labelDetailTable">' + columns[8].columnTitle + '</span></td><td class = "detailCellStyle" colspan = 3>' + componentname + '</td>';
\r
869 sOut += '<td class = "detailTitleStyle"><span class = "labelDetailTable">' + columns[16].columnTitle + '</span></td><td class = "detailCellStyle" colspan = 4>' + position1 + '</td></tr>';
\r
871 sOut += '<tr class="evenDetailTable"><td class = "detailTitleStyle"><span class = "labelDetailTable">' + columns[10].columnTitle + '</span></td><td class = "detailCellStyle" colspan = 8>' + specificproblem + '</td></tr>';
\r
873 sOut += '<tr class="oddDetailTable"><td class = "detailTitleStyle"><span class = "labelDetailTable">' + columns[6].columnTitle + '</span></td><td class = "detailCellStyle" colspan = 8>' + additionalText + '</td></tr>';
\r
875 sOut += '<tr class="evenDetailTable"><td class = "detailTitleStyle"><span class = "labelDetailTable">' + $.i18n.prop('aos_fm_SuggestionSetting_view_DefaultSuggestionGroupTitle').replace(';', '').replace(/\"/g,'') + '</span></td><td id = "defaulInfo' + id + '" class = "detailCellStyle" colspan = 8>' + '</td></tr>';
\r
877 sOut += '<tr class="oddDetailTable"><td class = "detailTitleStyle"><span class = "labelDetailTable">' + $.i18n.prop('aos_fm_SuggestionSetting_view_SettingSuggestionGroupTitle').replace(';', '').replace(/\"/g,'') + '</span></td><td id = "customInfo' + id + '" class = "detailCellStyle" colspan = 6><td style="width:80px" 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 style="width:80px" id="cancelDiv' + id + '"></td></tr>';
\r
879 sOut += '</table>';
\r
882 var systemType = 0;
\r
884 for (var i = 0; i < oTable.datas.length; i++) {
\r
885 var temp = oTable.datas[i];
\r
886 if (temp.alarmId == oTr['alarmId'].value) {
\r
887 systemType = temp.systemType;
\r
888 code = temp.probableCauseCode;
\r
892 "systemType" : systemType,
\r
895 var sendData = JSON.stringify(data);
\r
897 "dataType" : 'json',
\r
899 "url" : "/web/rest/web/fm/Maintenance" + "?" + "data=" + sendData,
\r
900 "contentType" : 'application/json; charset=utf-8',
\r
902 "success" : function (json) {
\r
903 $('tr').find('td#defaulInfo' + id).text(json.defaulInfo);
\r
904 $('tr').find('td#customInfo' + id).text(json.customInfo);
\r
905 var modify = $('#customInfoModify' + id);
\r
906 modify.on('click', function () {
\r
907 var span = $('#modifyBtnSpan' + id);
\r
908 var customInfo = $('tr').find('td#customInfo' + id);
\r
909 var cancel = $('#cancelDiv' + id);
\r
910 if (span['0'].className === 'fa fa-pencil-square-o') {
\r
911 var value = customInfo['0'].textContent;
\r
912 customInfo['0'].textContent = '';
\r
913 customInfo['0'].innerHTML = '<textarea id="customInfoInput' + id + '" type="textarea" cols=110 rows=4 onKeyUp="if(this.value.length > 700) this.value=this.value.substr(0,700)">' + value + '</textarea>';
\r
914 span['0'].className = 'fa fa-floppy-o';
\r
915 cancel['0'].innerHTML = '<button id = "cancelBtn' + id + '" class="btn-toolbar" type="button"><span class="fa fa-sign-out"></span></button>';
\r
916 $('#cancelBtn' + id).on('click', function () {
\r
917 customInfo['0'].innerHTML = '';
\r
918 customInfo['0'].textContent = value;
\r
919 cancel['0'].innerHTML = '';
\r
920 span['0'].className = 'fa fa-pencil-square-o';
\r
923 var inputValue = $('#customInfoInput' + id)['0'].value;
\r
924 customInfo['0'].innerHTML = '';
\r
925 customInfo['0'].textContent = inputValue;
\r
926 span['0'].className = 'fa fa-pencil-square-o';
\r
927 cancel['0'].innerHTML = '';
\r
929 "systemType" : systemType,
\r
931 "defaulInfo" : json.defaulInfo,
\r
932 "customInfo" : inputValue
\r
935 "dataType" : 'json',
\r
937 "url" : "/web/rest/web/fm/Maintenance",
\r
938 "contentType" : 'application/json; charset=utf-8',
\r
939 "data" : JSON.stringify(modifyData),
\r
940 "error" : function () {
\r
941 alert('Modify Error!');
\r
947 "error" : function () {
\r
948 alert('Communication Error!');
\r
955 var generateColumns = function(columns, openRowFlag, rowCheckable){
\r
956 var $tableData = $('table#datatable_ajax');
\r
957 var theadTR = $('thead > tr', $tableData);
\r
959 theadTR.append('<th><input type="checkbox" class="group-checkable"></th>');
\r
962 theadTR.append('<th> </th>');
\r
964 for(var i=0;i<columns.length;i++){
\r
965 theadTR.append('<TH id="' + columns[i].columnId + '" style="white-space: nowrap;">' + columns[i].columnTitle + '</TH>');
\r
969 var sortHandling = function(oTable, openRowFlag, rowCheckable){
\r
970 var indexSkip = -1;
\r
971 if(openRowFlag&&rowCheckable){
\r
973 }else if(openRowFlag&&!rowCheckable||!openRowFlag&&rowCheckable){
\r
976 var $sortOrder = 0; //排序类型 1表示升序,0表示降序
\r
977 var tableWrapper = $('div#datatable_ajax_wrapper');
\r
978 var $tableHead = $('div.dataTables_scrollHeadInner > table.dataTable', tableWrapper);
\r
979 var $tableData = $('table#datatable_ajax');
\r
980 var clearSort = function(currentTh){
\r
981 var ths = $tableHead.find('th').get();
\r
982 var tableDataHeadTHs = $tableData.find('th').get();
\r
983 $.each( ths, function( index, th ){
\r
984 if(index > indexSkip){
\r
985 if($(th).text() != currentTh.text()){
\r
986 if($(th).is('.sorting_disabled')){
\r
988 }else if($(th).is('.sorting_asc')){
\r
989 $(th).removeClass('sorting_asc').addClass('sorting_disabled');
\r
990 $(tableDataHeadTHs[index]).removeClass('sorting_asc').addClass('sorting_disabled');
\r
991 }else if($(th).is('.sorting_desc')){
\r
992 $(th).removeClass('sorting_desc').addClass('sorting_disabled');
\r
993 $(tableDataHeadTHs[index]).removeClass('sorting_desc').addClass('sorting_disabled');
\r
1000 $('th', $tableHead).each(function( column )
\r
1002 if(column>indexSkip){
\r
1003 //处理三种有可能存在的排序字段,比较方法
\r
1005 if( $(this).is('.sort-title') || $(this).is('.sorting_disabled') )
\r
1007 findSortKey = function( $cell )
\r
1009 var cellText = $cell.text();
\r
1010 if(isNaN(cellText)){
\r
1011 return $cell.text().toUpperCase();
\r
1013 return parseFloat(cellText);
\r
1015 //return $cell.text().toUpperCase();
\r
1018 else if( $(this).is('.sort-date') )
\r
1020 findSortKey = function( $cell )
\r
1022 return Date.parse('1' + $cell.text());
\r
1025 else if( $(this).is('.sort-price') )
\r
1027 findSortKey = function( $cell )
\r
1029 var key = parseFloat($cell.text().replace(/^[^\d.]*/, ''))
\r
1030 return isNaN(key) ? 0 : key;
\r
1037 $(this).click(function()
\r
1039 $sortOrder = $sortOrder == 0 ? 1 : 0;
\r
1040 var tableDataHeadTHs = $tableData.find('th').get();
\r
1042 if($sortOrder == 1){
\r
1043 if($(this).is('.sorting_disabled')){
\r
1044 $(this).removeClass('sorting_disabled').addClass('sorting_asc');
\r
1045 $(tableDataHeadTHs[column]).removeClass('sorting_disabled').addClass('sorting_asc');
\r
1046 }else if($(this).is('.sorting_asc')){
\r
1047 $(this).removeClass('sorting_asc').addClass('sorting_desc');
\r
1048 $(tableDataHeadTHs[column]).removeClass('sorting_asc').addClass('sorting_desc');
\r
1049 }else if($(this).is('.sorting_desc')){
\r
1050 $(this).removeClass('sorting_desc').addClass('sorting_asc');
\r
1051 $(tableDataHeadTHs[column]).removeClass('sorting_desc').addClass('sorting_asc');
\r
1054 if($(this).is('.sorting_disabled')){
\r
1055 $(this).removeClass('sorting_disabled').addClass('sorting_desc');
\r
1056 $(tableDataHeadTHs[column]).removeClass('sorting_disabled').addClass('sorting_desc');
\r
1057 }else if($(this).is('.sorting_asc')){
\r
1058 $(this).removeClass('sorting_asc').addClass('sorting_desc');
\r
1059 $(tableDataHeadTHs[column]).removeClass('sorting_asc').addClass('sorting_desc');
\r
1060 }else if($(this).is('.sorting_desc')){
\r
1061 $(this).removeClass('sorting_desc').addClass('sorting_asc');
\r
1062 $(tableDataHeadTHs[column]).removeClass('sorting_desc').addClass('sorting_asc');
\r
1065 clearSort($(this));
\r
1067 var rows = $tableData.find('tbody > tr').get();
\r
1069 $.each( rows, function( index, row )
\r
1072 if ( oTable.fnIsOpen(row) )
\r
1074 $(row).find('.row-details').click();
\r
1078 //重新取得所有行,否则排序后表格显示异常
\r
1079 rows = $tableData.find('tbody > tr').get();
\r
1081 $.each( rows, function( index, row )
\r
1083 row.sortKey = findSortKey($(row).children('td').eq(column));
\r
1086 rows.sort(function( a, b )
\r
1088 if( $sortOrder == 1 )
\r
1091 if(a.sortKey < b.sortKey) return -1;
\r
1092 if(a.sortKey > b.sortKey) return 1;
\r
1098 if(a.sortKey < b.sortKey) return 1;
\r
1099 if(a.sortKey > b.sortKey) return -1;
\r
1104 $.each( rows, function( index, row )
\r
1106 $tableData.children('tbody').append(row);
\r
1107 row.sortKey = null;
\r
1115 var handleRecords = function(requestStr, columns, xsHiddenColumns, smHiddenColumns, oLanguage, openRowFlag, rowCheckable, rowOverFlag, requestURL, requestParameters, tableHeight, columnsTooLong, sTotalRecordsSource, callbackList) {
\r
1118 jQuery.getJSON('/web/newict/framework/thirdparty/data-tables/app-universal-i18n-datatable-' + lang + '.json',
\r
1123 grid.setCallbackList(callbackList);
\r
1124 grid.setOpenRowFlag(openRowFlag);
\r
1125 grid.setRowCheckable(rowCheckable);
\r
1126 grid.setRowOverFlag(rowOverFlag);
\r
1127 grid.setColumnsTooLong(columnsTooLong);
\r
1128 grid.setSTotalRecordsSource(sTotalRecordsSource);
\r
1129 grid.setTableHeight(tableHeight);
\r
1131 // if(!requestStr || requestStr.length == 0){
\r
1132 // requestStr = JSON.stringify(requestAllData);
\r
1134 grid.clearAjaxParams();
\r
1135 grid.addAjaxParam('data', requestStr);
\r
1137 for(var i=0;i<requestParameters.length;i++){
\r
1138 grid.addAjaxParam(requestParameters[i].paraId,requestParameters[i].paraValue);
\r
1142 src: $("#datatable_ajax"),
\r
1143 onSuccess: function(grid) {
\r
1144 // execute some code after table records loaded
\r
1145 var tableWrapper = $('div#datatable_ajax_wrapper');
\r
1146 var $tableHead = $('div.dataTables_scrollHeadInner > table.dataTable', tableWrapper);
\r
1147 var ths = $tableHead.find('th').get();
\r
1148 var $tableData = $('table#datatable_ajax');
\r
1149 var tableDataHeadTHs = $tableData.find('th').get();
\r
1150 $.each( ths, function( index, th ){
\r
1151 //clear all sort direction
\r
1152 if($(th).is('.sorting_disabled')){
\r
1154 }else if($(th).is('.sorting_asc')){
\r
1155 $(th).removeClass('sorting_asc').addClass('sorting_disabled');
\r
1156 $(tableDataHeadTHs[index]).removeClass('sorting_asc').addClass('sorting_disabled');
\r
1157 }else if($(th).is('.sorting_desc')){
\r
1158 $(th).removeClass('sorting_desc').addClass('sorting_disabled');
\r
1159 $(tableDataHeadTHs[index]).removeClass('sorting_desc').addClass('sorting_disabled');
\r
1164 onError: function(grid) {
\r
1165 // execute some code on network or other general error
\r
1168 "sDom" : "tr<'row'<'col-md-6 col-sm-12'><'col-md-6 col-sm-12'pli>>", // datatable layout
\r
1169 "oLanguage": oLanguage,
\r
1170 //"bAutoWidth": true,
\r
1171 "sScrollY": tableHeight,
\r
1172 "bScrollCollapse": true,
\r
1173 "sScrollX": "100%",
\r
1174 //"sScrollXInner": "110%",
\r
1177 [20, 50, 100] // change per page values here
\r
1179 "iDisplayLength": 20, // default record count per page
\r
1180 "bServerSide": true, // server side processing
\r
1181 "sAjaxSource": requestURL // ajax source
\r
1183 }, columns, xsHiddenColumns, smHiddenColumns, openRowFlag, rowCheckable);
\r
1187 * Insert a 'details' column to the table
\r
1189 var insertDetails = function (oTable, columns, rowCheckable) {
\r
1191 var $tableData = $('table#datatable_ajax');
\r
1193 $tableData.on('click', ' tbody td .row-details', function () {
\r
1194 var nTr = $(this).parents('tr')[0];
\r
1195 if (oTable.fnIsOpen(nTr)) {
\r
1196 /* This row is already open - close it */
\r
1197 $(this).addClass("row-details-close").removeClass("row-details-open");
\r
1198 oTable.fnClose(nTr);
\r
1200 /* Open this row */
\r
1201 $(this).addClass("row-details-open").removeClass("row-details-close");
\r
1202 oTable.fnOpen(nTr, fnFormatDetails(oTable, nTr, columns, rowCheckable), 'details');
\r
1204 var divColor = $("div.cellBackgroundColor", $("table#" + detailTableId));
\r
1205 $(divColor).parent().css("background", $(divColor).css("background-color"));
\r
1212 //main function to initiate the module
\r
1213 init: function (requestStr, lang, configPathPrefix, callbackList) {
\r
1217 var xsHiddenColumns;
\r
1218 var smHiddenColumns;
\r
1221 var openRowFlag = false;
\r
1222 var rowOverFlag = false;
\r
1223 var rowCheckable = false;
\r
1224 var requestURL="";
\r
1225 var requestAllData;
\r
1226 var requestParameters;
\r
1231 var columnsTooLong;
\r
1232 var sTotalRecordsSource="";
\r
1237 url: configPathPrefix + '-' + lang + '.json',
\r
1239 contentType:'application/json; charset=utf-8',
\r
1240 "success": function(data) {
\r
1241 oLanguage = data.language;
\r
1242 columns = data.columns;
\r
1243 xsHiddenColumns = data.xsHiddenColumns;
\r
1244 smHiddenColumns = data.smHiddenColumns;
\r
1245 columnsAll = data.columnsAll;
\r
1246 openRowFlag = data.openRowFlag == 'true'? true: false;
\r
1247 rowOverFlag = data.rowOverFlag == 'true'? true: false;
\r
1248 rowCheckable = data.rowCheckable == 'true'? true: false;
\r
1249 requestURL = data.requestURL;
\r
1250 //requestAllData = data.requestAllData;
\r
1251 requestParameters = data.requestParameters;
\r
1252 tableHeight = data.tableHeight;
\r
1253 tableWidth = data.tableWidth;
\r
1254 columnsTooLong = data.columnsTooLong;
\r
1255 sTotalRecordsSource = data.sTotalRecordsSource;
\r
1257 "error" : function (xhr, info) {
\r
1258 alert('Communication Error! Error reason:' + info);
\r
1262 $('#dataTableWrapperDiv').css('width', tableWidth);
\r
1264 if(!isContained(xsHiddenColumns, smHiddenColumns) || !isContained(columns, xsHiddenColumns) || !isContained(columnsAll, columns)){
\r
1265 alert('Columns claim error: (smHiddenColumns <= xsHiddenColumns <= columns <= columnsAll) Please!');
\r
1269 generateColumns(columns, openRowFlag, rowCheckable);
\r
1271 handleRecords(requestStr, columns, xsHiddenColumns, smHiddenColumns, oLanguage, openRowFlag, rowCheckable, rowOverFlag, requestURL, requestParameters, tableHeight, columnsTooLong, sTotalRecordsSource, callbackList);
\r
1272 //获得初始化完毕的DataTable对象
\r
1273 var oTable = grid.getDataTable();
\r
1275 insertDetails(oTable, columnsAll, rowCheckable);
\r
1277 sortHandling(oTable, openRowFlag, rowCheckable);
\r
1278 //oTable.fnAdjustColumnSizing(true);
\r
1286 var DataTableSmartClientApp = function(datas, configPathPrefix, callbackList){
\r
1288 var requestStr = "";
\r
1290 requestStr = JSON.stringify(datas);
\r
1293 var lang = getLanguage();
\r
1295 /*for(var i=0;i<callbackList.length;i++){
\r
1296 if(getFnName(callbackList[i]).indexOf("i18n")>0){
\r
1297 callbackList[i](lang);
\r
1301 if(callbackList && callbackList[0]){
\r
1302 callbackList[0](lang);
\r
1304 //requestStr = "";
\r
1305 var oTable = TableAjaxICT.init(requestStr, lang, configPathPrefix, callbackList);
\r
1307 //重新调节列宽以适应window resize
\r
1308 $(window).one('resize', function () {
\r
1309 //oTable.DataTable.models.oSettings.bAjaxDataGet = false;
\r
1310 oTable.fnAdjustColumnSizing(false);
\r