/*** Wrapper/Helper Class for datagrid based on jQuery Datatable Plugin ***/ var DatatableICT = function () { var contextData; var tableOptions; // main options var dataTable; // datatable object var table; // actual table jquery object var tableContainer; // actual table container object var tableWrapper; // actual table wrapper jquery object var tableInitialized = false; var ajaxParams = []; // set filter mode var columns; var xsHiddenColumns; var smHiddenColumns; var columnMaxLength = 30; var columnsTooLong; var hidden_xs_maxWidth = 768; var hidden_sm_maxWidth = 991; var openRowFlag = false; var rowOverFlag = false; var rowCheckable = false; var aTargetsAll; var sTotalRecordsSource; var totalRecords; var tableHeight; var requestType="GET"; var callbackList = []; var checkedRowDatas = []; var currentPageData; var includedInXsHiddenColumns = function(columnId){ for(var i=0;i tr > td:nth-child(1) input[type="checkbox"]:checked', table).size(); var text = tableOptions.dataTable.oLanguage.sGroupActions; if (selected > 0) { $('.table-group-actions > span', tableWrapper).text(text.replace("_TOTAL_", selected)); } else { $('.table-group-actions > span', tableWrapper).text(""); } } var jsonObjectToArray = function(json, columns, iDraw){ var jsonToDatatable = {aaData:[], sEcho:iDraw, iTotalRecords:0, iTotalDisplayRecords:0 }; //获取数据的属性 var dataField; //性能的情况 if(json.data){ dataField = json.data; } //告警的情况 if(json.response && json.response.data){ dataField = json.response.data; } for(var i=0; i"); } if(openRowFlag){ jsonToDatatable.aaData[i].push(""); } for(var j=0; j= hidden_xs_maxWidth && $(window).width() < hidden_sm_maxWidth && includedInSmHiddenColumns(columns[j].columnId )){ /*隐藏pad尺寸需要隐藏的列*/ }else if($(window).width() < hidden_xs_maxWidth && includedInXsHiddenColumns(columns[j].columnId )){ /*隐藏手机尺寸需要隐藏的列*/ }else{ var currentColumnId = columns[j].columnId; if(jQuery.inArray(currentColumnId, columnsTooLong) > -1){ var rawText = ""; for(var k=0;k columnMaxLength){ jsonToDatatable.aaData[i].push(rawText.slice(0, columnMaxLength) + '...'); }else{ jsonToDatatable.aaData[i].push(resRowObject[currentColumnId]); } } else { jsonToDatatable.aaData[i].push(resRowObject[currentColumnId]); } } } } jsonToDatatable.sEcho++; //取得总行数 var totalRow = 0; if(requestType == "POST"){ //性能的情况单独发请求获得总行数 totalRow = totalRecords; }else{ var totalRecordsSource = eval('json.' + sTotalRecordsSource); if(totalRecordsSource && totalRecordsSource.length >0){ totalRow = parseInt(totalRecordsSource); } } if(isNaN(totalRow)){ alert('All rows counting number got fail!'); }else{ jsonToDatatable.iTotalRecords = totalRow; jsonToDatatable.iTotalDisplayRecords = totalRow; } return jsonToDatatable; } var singleAlarmDel = function(divOverlay){ //根据浮动框的当前id获取需要删除的行 var trId = divOverlay.attr('id_tr'); tr=$('tr#' + trId); var tds = $(tr).children(); var tdAlarmId = ""; if(rowCheckable){ tdAlarmId = $(tds.eq(2)).text(); }else{ tdAlarmId = $(tds.eq(1)).text(); } var data= { "alarmId":[parseInt(tdAlarmId)] }; var sSource = "/web/rest/web/fm/curalarms?data=" + JSON.stringify(data) + "&_operationType=remove&_dataSource=isc_PageRestDataSource_0&isc_metaDataPrefix=_&isc_dataFormat=json"; $.ajax( { "dataType": 'json', "type": "DELETE", "url": sSource, "data" : null, "contentType" : 'application/json; charset=utf-8', "success": function(json) { if(json.response.status == 0){ var resRowObject = json.response.data[0]; //alert('删除成功'); } if(json.response.status == -1){ //alert('删除失败'); } }, "error": function() { alert('Communication Error!'); } } ); } var singleAlarmAckUnAck = function(divOverlay, ackType){ //根据浮动框的当前id获取需要确认的行 var trId = divOverlay.attr('id_tr'); var tr = $('tr#' + trId); //取得隐藏的头部表格的相应行 var $tableHead = $('div.dataTables_scrollHeadInner > table.dataTable', contextData.wrapperDivContext); //var trHead = $('tbody > tr:nth-child(' + trId + ')', $tableHead); var trHead = $('tr#' + trId.replace('body', 'head'), $tableHead); var tdDivs = $('td > div', trHead); var tds = $(tr).children(); var tdAlarmId = ""; if(rowCheckable){ tdAlarmId = $(tds.eq(2)).text(); }else{ tdAlarmId = $(tds.eq(1)).text(); } var aoData = { "dataSource":"isc_PageRestDataSource_0", "operationType":"update", "componentId":"isc_com_zte_ums_aos_fm_view_eventview_table_AlarmTable_0", "data":{ "viewType":1, "state":ackType, "alarmId":[ parseInt(tdAlarmId) ] }, "oldValues":null }; var sSource = "/web/rest/web/fm/curalarms?isc_dataFormat=json"; $.ajax( { "dataType": 'json', "type": "PUT", "url": sSource, "contentType": 'application/json; charset=utf-8', "data": JSON.stringify(aoData), "success": function(json) { if(callbackList[1]){ json = callbackList[1](json); } if(json.response.status == 0){ var resRowObject = json.response.data[0]; var columnsCopy = $.extend(true, [], columns); //隐藏列的情况下需要特殊处理 if($(window).width()>=hidden_xs_maxWidth && $(window).width() -1) { var rawText = ""; for(var k=0;k columnMaxLength){ $(tds.eq(i)).html(rawText.slice(0, columnMaxLength) + '...'); $(tdDivs.eq(i)).html(rawText.slice(0, columnMaxLength) + '...'); }else{ $(tds.eq(i)).html(resRowObject[currentColumnId]); $(tdDivs.eq(i)).html(resRowObject[currentColumnId]); } } else { $(tds.eq(i)).html(resRowObject[currentColumnId]); $(tdDivs.eq(i)).html(resRowObject[currentColumnId]); } } //更新缓存中的当前行数据 for (var t = 0; t < dataTable.datas.length; t++) { var temp = dataTable.datas[t]; if (temp.alarmId == resRowObject['alarmId']) { dataTable.datas[t] = resRowObject; break; } } } if(json.response.status == -1){ $('div#myModalConfirm' + contextData.curentDatableId).modal({ keyboard: false, backdrop: 'static' }); $('span#alarm_number' + contextData.curentDatableId).html(tdAlarmId); //国际化信息 if(ackType==1){ $('span#aos_fm_alarm_opeater_ack_already').html($.i18n.prop('aos_fm_alarm_opeater_ack_already_ok').replace(/\"/g,"").replace(";", "")); }else{ $('span#aos_fm_alarm_opeater_ack_already').html($.i18n.prop('aos_fm_alarm_opeater_ack_already_un').replace(/\"/g,"").replace(";", "")); } } }, "error": function() { alert('Communication Error!'); } } ); } var addRowOverlap = function(){ var $tableData = $('table#datatable_ajax' + contextData.curentDatableId); //取得隐藏的头部表格的相应行 var $tableHead = $('div.dataTables_scrollHeadInner > table.dataTable', contextData.wrapperDivContext); var trHeads = $tableHead.find('tr').get(); $.each( trHeads, function( index, trHead ){ $(trHead).attr('id', 'headTableTR' + index); }); //取得浮动div var $divOverlay = $('div#divOverlay' + contextData.curentDatableId); var divScrollHead = $('div.dataTables_scrollHead', contextData.wrapperDivContext); var divRightPadding = $('div#divRightPadding' + contextData.curentDatableId); //取表头下边沿位置 var tableHeadBottomHeight = $(divScrollHead).position().top + $(divScrollHead).height(); var tableBottom = $tableData.position().top + $tableData.height() + 3; //取表格右边沿位置 var tableRightEdgePosition = $(divRightPadding).position().left; var trs = $tableData.find('tr').get(); $.each( trs, function( index, tr ){ var tdEmpty = $('td.dataTables_empty',tr); if(!tdEmpty || tdEmpty.length ==0 ){ $(tr).attr('id', 'bodyTableTR' + index + contextData.curentDatableId); //$divOverlay.attr('id_tr', 'bodyTableTR' + index); $(tr).one('hover', function(){ var rowPos = $(tr).position(); var currentTrTop = rowPos.top; //var bottomLeft = rowPos.left; $divOverlay.attr('id_tr', 'bodyTableTR' + index + contextData.curentDatableId); $divOverlay.css({ display: 'block', position: 'absolute', 'background-color': '#e5e5e5', //opacity: 0.7, border: 'solid 0px', top: currentTrTop + 6, left: tableRightEdgePosition - 308, width: 300, height: 30 }); //防止浮动框跳出表格内容区域 if( $divOverlay.position().top < tableHeadBottomHeight || $divOverlay.position().top + $divOverlay.height() > tableBottom){ $divOverlay.css('display', 'none'); } var buttonConfirm = $('div#buttonConfirm', $divOverlay); var buttonUnConfirm = $('div#buttonUnConfirm', $divOverlay); $(buttonConfirm).one('click', function(){ var buttonRoundedTDsConfirm = $(buttonConfirm).find('td.buttonRounded'); var buttonRoundedTDsUnConfirm = $(buttonUnConfirm).find('td.buttonRoundedDisabled'); if(buttonRoundedTDsConfirm && buttonRoundedTDsConfirm.length > 0){ $.each(buttonRoundedTDsConfirm, function(index, td){ $(td).removeClass('buttonRounded').addClass('buttonRoundedDisabled'); }); $.each(buttonRoundedTDsUnConfirm, function(index, td){ $(td).removeClass('buttonRoundedDisabled').addClass('buttonRounded'); }); $divOverlay.css('display', 'none'); singleAlarmAckUnAck($divOverlay, 1); } }); $(buttonUnConfirm).one('click', function(){ var buttonRoundedTDsUnConfirm = $(buttonUnConfirm).find('td.buttonRounded'); var buttonRoundedTDsConfirm = $(buttonConfirm).find('td.buttonRoundedDisabled'); if(buttonRoundedTDsUnConfirm && buttonRoundedTDsUnConfirm.length > 0){ $.each(buttonRoundedTDsUnConfirm, function(index, td){ $(td).removeClass('buttonRounded').addClass('buttonRoundedDisabled'); }); $.each(buttonRoundedTDsConfirm, function(index, td){ $(td).removeClass('buttonRoundedDisabled').addClass('buttonRounded'); }); $divOverlay.css('display', 'none'); singleAlarmAckUnAck($divOverlay, 2); } }); var buttonDelete = $('div#buttonDelete', $divOverlay); $(buttonDelete).die().live('click', function(){ //弹出删除确认对话框 $('div#myModal' + contextData.curentDatableId).modal({ keyboard: false, backdrop: 'static' }); $('#delConfirm' + contextData.curentDatableId).die().live('click', function(){ $divOverlay.css('display', 'none'); dataTable.fnClose(tr); $(tr).remove(); //删除表头表格的相应行 $('tr#' + $(tr).attr('id').replace('body', 'head'), $tableHead).remove(); //删除后端数据 singleAlarmDel($divOverlay); //刷新表格 dataTable.fnAdjustColumnSizing(); }); }); //展开行的情况隐藏 $('td.details > table.detailTable').on('hover', function(){ $divOverlay.css('display', 'none'); }); }); } }); } return { //main function to initiate the module init: function (options, columnsDefined, xsHiddenColumnsDefined, smHiddenColumnsDefined) { if (!$().dataTable) { return; } var the = this; //记录需要禁掉默认排序的列 var aTargets = []; var targetsLength = columnsDefined.length; if(rowCheckable)targetsLength++; if(openRowFlag)targetsLength++; for(var i=0;i<'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 "aoColumnDefs" : [{ // define columns sorting options(by default all columns are sortable extept the first checkbox column) 'bSortable' : false, 'aTargets' : aTargets }], "bAutoWidth": false, // disable fixed width and enable fluid table //"bSortCellsTop": true, // make sortable only the first row in thead "sPaginationType": "bootstrap_extended", // pagination type(bootstrap, bootstrap_full_number or bootstrap_extended) "bProcessing": true, // enable/disable display message box on record load "bServerSide": true, // enable/disable server side ajax loading "sAjaxSource": "", // define ajax source URL //"sServerMethod": "GET", // handle ajax request "fnServerData": function ( sSource, aoData, fnCallback, oSettings ) { //for ICT Paging //var startIndex = aoData[3].value;//"iDisplayStart" //var pageLength = aoData[4].value;//"iDisplayLength" var oPaging = oSettings.oInstance.fnPagingInfo(); //var startIndex = oPaging.iStart; var pageLength = oPaging.iLength; var curPageNo = oPaging.iPage + 1; for(var k=aoData.length-1;k>=0;k--){ var flag = -1; if(aoData[k].name=='pageSize'){ aoData[k].value=pageLength; flag++; } if(aoData[k].name=='pageNo'){ aoData[k].value=curPageNo; flag++ } if(flag == 1)break; } if(requestType == "POST"){ var postData; for(var k=aoData.length-1;k>=0;k--){ if(aoData[k].name=='data'){ postData = aoData[k].value; postData.pageSize = pageLength; postData.pageNo = curPageNo; break; } } oSettings.jqXHR = $.ajax( { "dataType": 'json', "type": "POST", "url": sSource, "data": JSON.stringify(postData), "contentType": 'application/json; charset=utf-8', "success": function(res, textStatus, jqXHR) { if (res.sMessage) { openoFrameWork.alert({type: (res.sStatus == 'OK' ? 'success' : 'danger'), icon: (res.sStatus == 'OK' ? 'check' : 'warning'), message: res.sMessage, container: tableWrapper, place: 'prepend'}); } if ($('.group-checkable', tableContainer).size() === 1) { $('.group-checkable', tableContainer).attr("checked", false); $.uniform.update($('.group-checkable', tableContainer)); } if (tableOptions.onSuccess) { tableOptions.onSuccess.call(the); } if(callbackList[1]){ res = callbackList[1](res); } //转换返回数据给datatable res = jsonObjectToArray(res, columns, oSettings.iDraw); //重绘表格 fnCallback(res, textStatus, jqXHR); }, "error": function() { if (tableOptions.onError) { tableOptions.onError.call(the); } openoFrameWork.alert({type: 'danger', icon: 'warning', message: tableOptions.dataTable.oLanguage.sAjaxRequestGeneralError, container: tableWrapper, place: 'prepend'}); $('.dataTables_processing', tableWrapper).remove(); } } ); } else { oSettings.jqXHR = $.ajax( { "dataType": 'json', "type": "GET", "url": sSource, "data": aoData, "success": function(res, textStatus, jqXHR) { if (res.sMessage) { openoFrameWork.alert({type: (res.sStatus == 'OK' ? 'success' : 'danger'), icon: (res.sStatus == 'OK' ? 'check' : 'warning'), message: res.sMessage, container: tableWrapper, place: 'prepend'}); } if ($('.group-checkable', tableContainer).size() === 1) { $('.group-checkable', tableContainer).attr("checked", false); $.uniform.update($('.group-checkable', tableContainer)); } if (tableOptions.onSuccess) { tableOptions.onSuccess.call(the); } //保存数据在dataTable对象中给行详细信息面板用 if(res.response){ //告警的情况,返回数据在response属性里 dataTable.datas = res.response.data; if(res.response.status < 0){ alert(res.response.data); return; } } //保存当前页原始数据的备份 currentPageData = $.extend(true, {}, res.response.data);; if(callbackList[1]){ res = callbackList[1](res); } //转换返回数据给datatable res = jsonObjectToArray(res, columns, oSettings.iDraw); //重绘表格 fnCallback(res, textStatus, jqXHR); }, "error": function() { if (tableOptions.onError) { tableOptions.onError.call(the); } openoFrameWork.alert({type: 'danger', icon: 'warning', message: tableOptions.dataTable.oLanguage.sAjaxRequestGeneralError, container: tableWrapper, place: 'prepend'}); $('.dataTables_processing', tableWrapper).remove(); } } ); } }, // pass additional parameter "fnServerParams": function ( aoData ) { //here can be added an external ajax request parameters. //for(var i in ajaxParams) { for(var i=0; i table.dataTable', tableWrapper); var tbodyHead = $('tbody', $tableHead); if(tbodyHead && tbodyHead.length >0){ $(tbodyHead).remove(); } var $tableBody = $('table#datatable_ajax' + contextData.curentDatableId, tableWrapper); var trIn = $('thead > tr:nth-child(1)', $tableHead); var trBodyHead = $('thead > tr:nth-child(1)', $tableBody); var tds = $(trIn).children(); var ths = $(trBodyHead).children(); for(var k=0;k' + tds.eq(k).html() + ''); } var bodyRows = $('tbody > tr', $tableBody); for(var i=0;i' + tds.eq(j).html() + ''); $(tds.eq(j)).height('0px'); $(tds.eq(j)).css('padding-top','0px'); $(tds.eq(j)).css('padding-bottom','0px'); $(tds.eq(j)).css('border-top-width','0px'); $(tds.eq(j)).css('border-bottom-width','0px'); } $(rowClone).height('0px'); $tableHead.append($(rowClone).prop("outerHTML")); } $('div.dataTables_scrollBody', tableWrapper).css('width','100%'); $('div.dataTables_scrollHead', tableWrapper).css('width','98.5%'); $('div.dataTables_scrollHeadInner', tableWrapper).css('padding-right', 0); //添加浮动确认反确认按钮 if(rowOverFlag){ addRowOverlap(); } //设置表格本体高度 $('div.dataTables_scrollBody', tableWrapper).css('height', tableHeight); } } }, options); tableOptions = options; columns = columnsDefined; xsHiddenColumns = xsHiddenColumnsDefined; smHiddenColumns = smHiddenColumnsDefined; // create table's jquery object table = $(options.src); tableContainer = table.parents("div#table-container" + contextData.curentDatableId); // apply the special class that used to restyle the default datatable $.fn.dataTableExt.oStdClasses.sWrapper = $.fn.dataTableExt.oStdClasses.sWrapper + " dataTables_extended_wrapper"; // initialize a datatable dataTable = table.dataTable(options.dataTable); tableWrapper = table.parents('div.dataTables_wrapper', tableContainer); // modify table per page dropdown input by appliying some classes $('.dataTables_length select', tableWrapper).addClass("form-control input-xsmall input-sm"); // handle group checkboxes check/uncheck $('.group-checkable', tableContainer).change(function () { var set = $('tbody > tr > td:nth-child(1) input[type="checkbox"]', table); var checked = $(this).is(":checked"); $(set).each(function () { $(this).attr("checked", checked); }); $.uniform.update(set); countSelectedRecords(); }); // handle row's checkbox click table.on('change', 'tbody > tr > td:nth-child(1) input[type="checkbox"]', function(){ countSelectedRecords(); }); //if ($.browser.safari) { // $('.table-container').css('width','100%'); //} //填充表头右边界 $('div.dataTables_scrollHead', tableContainer).css('display','inline-block'); //var dataTables_scrollHead_height = $('.dataTables_scrollHead').css( "height" ); $("div.dataTables_scrollHead", tableContainer).after("
"); if($.browser.mozilla){ $('div#divRightPadding', tableContainer).css('height', '40'); } //隐藏掉某些列 var $tableHead = $('div.dataTables_scrollHeadInner > table.dataTable', tableWrapper); var $tableBody = $('table#datatable_ajax' + contextData.curentDatableId, tableWrapper); for(var i=0;i tr > th#' + columns[j].columnId, $tableHead).addClass('hidden-xs'); $('thead > tr > th#' + columns[j].columnId, $tableBody).addClass('hidden-xs'); break; } } } for(var i=0;i tr > th#' + columns[j].columnId, $tableHead).addClass('hidden-sm'); $('thead > tr > th#' + columns[j].columnId, $tableBody).addClass('hidden-sm'); break; } } } },//end init------------------------------------------------------------------------------------ getSelectedRowsCount: function() { return $('tbody > tr > td:nth-child(1) input[type="checkbox"]:checked', table).size(); }, getSelectedRows: function() { var rows = []; $('tbody > tr > td:nth-child(1) input[type="checkbox"]:checked', table).each(function(){ rows.push({rowDataNo: $(this).attr("rowDataNo"), name: $(this).attr("name"), value: $(this).val()}); }); return rows; }, addAjaxParam: function(name, value) { ajaxParams.push({"name": name, "value": value}); }, clearAjaxParams: function(name, value) { ajaxParams = []; }, getDataTable: function() { return dataTable; }, getTableWrapper: function() { return tableWrapper; }, gettableContainer: function() { return tableContainer; }, getTable: function() { return table; }, setOpenRowFlag: function(openRowFlagInput) { openRowFlag = openRowFlagInput; }, setRowOverFlag: function(rowOverFlagInput) { rowOverFlag = rowOverFlagInput; }, setRowCheckable: function(rowCheckableInput) { rowCheckable = rowCheckableInput; }, setColumnsTooLong: function(columnsTooLongInput) { columnsTooLong = columnsTooLongInput; }, setSTotalRecordsSource: function(sTotalRecordsSourceInput){ sTotalRecordsSource = sTotalRecordsSourceInput; }, setTotalRecords: function(totalRecordsInput){ totalRecords = totalRecordsInput; }, setTableHeight: function(tableHeightInput){ tableHeight = tableHeightInput; }, setCallbackList: function(list){ if($.isArray(list)){ callbackList = list; } }, getCheckedRowDatas:function(){ checkedRowDatas = []; $('tbody > tr > td:nth-child(1) input[type="checkbox"]:checked', table).each(function(){ var rowNoId = $(this).attr("rowDataNo"); var rowNoIndex = rowNoId.slice(rowNoId.indexOf("_") + 1); checkedRowDatas.push(currentPageData[parseInt(rowNoIndex)]); }); return checkedRowDatas; }, setRequestType: function(requestTypeInput){ requestType = requestTypeInput; }, setContextData: function(newContextData){ contextData = newContextData; }, setTotalPage: function(newTotalPage){ $("#datatable_ajax" + contextData.curentDatableId + "_info").html(tableOptions.dataTable.oLanguage.sInfo.replace("_TOTAL_", newTotalPage + "")); } }; }; var TableAjaxICT = function () { var contextData; var initPickers = function () { //init date pickers $('.date-picker').datepicker({ //rtl: App.isRTL(), autoclose: true }); } //判断a数组是否包含b数组 function isContained(largeArray, smallArray){ if(!(largeArray instanceof Array) || !(smallArray instanceof Array)) return false; if(largeArray.length < smallArray.length) return false; for(var i = 0; i < smallArray.length; i++){ var flag = false; for(j=0;j' + alarmId + ''; sOut += '' + columns[4].columnTitle + '' + perceivedSeverity + ''; sOut += '' + columns[9].columnTitle + '' + alarmType + ''; sOut += '' + columns[3].columnTitle + '' + alarmRaisedTime + ''; sOut += '' + columns[5].columnTitle + '' + probableCauseDesc + ''; sOut += '' + columns[15].columnTitle + '' + alarmChangedTime + ''; sOut += '' + columns[11].columnTitle + '' + ackState + ''; sOut += '' + columns[12].columnTitle + '' + ackTime + ''; sOut += '' + columns[13].columnTitle + '' + ackUserId + ''; sOut += '' + columns[14].columnTitle + '' + ackSystemId + ''; sOut += '' + columns[7].columnTitle + '' + neip + ''; sOut += '' + columns[2].columnTitle + '' + moc + ''; sOut += '' + columns[1].columnTitle + '' + resDisplayName + ''; sOut += '' + columns[8].columnTitle + '' + componentname + ''; sOut += '' + columns[16].columnTitle + '' + position1 + ''; sOut += '' + columns[10].columnTitle + '' + specificproblem + ''; sOut += '' + columns[6].columnTitle + '' + additionalText + ''; sOut += '' + $.i18n.prop('aos_fm_SuggestionSetting_view_DefaultSuggestionGroupTitle').replace(';', '').replace(/\"/g,'') + '' + ''; sOut += '' + $.i18n.prop('aos_fm_SuggestionSetting_view_SettingSuggestionGroupTitle').replace(';', '').replace(/\"/g,'') + ''; sOut += ''; /* var systemType = 0; var code = 0; for (var i = 0; i < oTable.datas.length; i++) { var temp = oTable.datas[i]; if (temp.alarmId == oTr['alarmId'].value) { systemType = temp.systemType; code = temp.probableCauseCode; } }*/ var data = { "systemType" : systemType, "code" : code }; var sendData = JSON.stringify(data); $.ajax({ "dataType" : 'json', "type" : "GET", "url" : "/web/rest/web/fm/Maintenance" + "?" + "data=" + sendData, "contentType" : 'application/json; charset=utf-8', "data" : null, "success" : function (json) { $('tr').find('td#defaulInfo' + id).text(json.defaulInfo); $('tr').find('td#customInfo' + id).text(json.customInfo); var modify = $('#customInfoModify' + id); modify.on('click', function () { var span = $('#modifyBtnSpan' + id); var customInfo = $('tr').find('td#customInfo' + id); var cancel = $('#cancelDiv' + id); if (span['0'].className === 'fa fa-pencil-square-o') { var value = customInfo['0'].textContent; customInfo['0'].textContent = ''; customInfo['0'].innerHTML = ''; span['0'].className = 'fa fa-floppy-o'; cancel['0'].innerHTML = ''; $('#cancelBtn' + id).on('click', function () { customInfo['0'].innerHTML = ''; customInfo['0'].textContent = value; cancel['0'].innerHTML = ''; span['0'].className = 'fa fa-pencil-square-o'; }); } else { var inputValue = $('#customInfoInput' + id)['0'].value; customInfo['0'].innerHTML = ''; customInfo['0'].textContent = inputValue; span['0'].className = 'fa fa-pencil-square-o'; cancel['0'].innerHTML = ''; var modifyData = { "systemType" : systemType, "code" : code, "defaulInfo" : json.defaulInfo, "customInfo" : inputValue }; $.ajax({ "dataType" : 'json', "type" : "PUT", "url" : "/web/rest/web/fm/Maintenance", "contentType" : 'application/json; charset=utf-8', "data" : JSON.stringify(modifyData), "error" : function () { alert('Modify Error!'); } }); } }); }, "error" : function () { alert('Communication Error!'); } }); return sOut; } var generateColumns = function(columns, openRowFlag, rowCheckable){ var $tableData = $('table#datatable_ajax' + contextData.curentDatableId); var theadTR = $('thead > tr', $tableData); if(rowCheckable){ theadTR.append(''); } if(openRowFlag){ theadTR.append('  '); } for(var i=0;i' + columns[i].columnTitle + ''); } } var sortHandling = function(oTable, openRowFlag, rowCheckable){ var indexSkip = -1; if(openRowFlag&&rowCheckable){ indexSkip = 1; }else if(openRowFlag&&!rowCheckable||!openRowFlag&&rowCheckable){ indexSkip = 0; } var $sortOrder = 0; //排序类型 1表示升序,0表示降序 var tableWrapper = $('div.dataTables_wrapper', contextData.wrapperDivContext); var $tableHead = $('div.dataTables_scrollHeadInner > table.dataTable', tableWrapper); var $tableData = $('table#datatable_ajax' + contextData.curentDatableId); var clearSort = function(currentTh){ var ths = $tableHead.find('th').get(); var tableDataHeadTHs = $tableData.find('th').get(); $.each( ths, function( index, th ){ if(index > indexSkip){ if($(th).text() != currentTh.text()){ if($(th).is('.sorting_disabled')){ //do nothing; }else if($(th).is('.sorting_asc')){ $(th).removeClass('sorting_asc').addClass('sorting_disabled'); $(tableDataHeadTHs[index]).removeClass('sorting_asc').addClass('sorting_disabled'); }else if($(th).is('.sorting_desc')){ $(th).removeClass('sorting_desc').addClass('sorting_disabled'); $(tableDataHeadTHs[index]).removeClass('sorting_desc').addClass('sorting_disabled'); } } } }); } $('th', $tableHead).each(function( column ) { if(column>indexSkip){ //处理三种有可能存在的排序字段,比较方法 var findSortKey; if( $(this).is('.sort-title') || $(this).is('.sorting_disabled') ) { findSortKey = function( $cell ) { var cellText = $cell.text(); if(isNaN(cellText)){ return $cell.text().toUpperCase(); }else{ return parseFloat(cellText); } //return $cell.text().toUpperCase(); } } else if( $(this).is('.sort-date') ) { findSortKey = function( $cell ) { return Date.parse('1' + $cell.text()); } } else if( $(this).is('.sort-price') ) { findSortKey = function( $cell ) { var key = parseFloat($cell.text().replace(/^[^\d.]*/, '')) return isNaN(key) ? 0 : key; } } //排序 if( findSortKey ) { $(this).click(function() { $sortOrder = $sortOrder == 0 ? 1 : 0; var tableDataHeadTHs = $tableData.find('th').get(); if($sortOrder == 1){ if($(this).is('.sorting_disabled')){ $(this).removeClass('sorting_disabled').addClass('sorting_asc'); $(tableDataHeadTHs[column]).removeClass('sorting_disabled').addClass('sorting_asc'); }else if($(this).is('.sorting_asc')){ $(this).removeClass('sorting_asc').addClass('sorting_desc'); $(tableDataHeadTHs[column]).removeClass('sorting_asc').addClass('sorting_desc'); }else if($(this).is('.sorting_desc')){ $(this).removeClass('sorting_desc').addClass('sorting_asc'); $(tableDataHeadTHs[column]).removeClass('sorting_desc').addClass('sorting_asc'); } }else{ if($(this).is('.sorting_disabled')){ $(this).removeClass('sorting_disabled').addClass('sorting_desc'); $(tableDataHeadTHs[column]).removeClass('sorting_disabled').addClass('sorting_desc'); }else if($(this).is('.sorting_asc')){ $(this).removeClass('sorting_asc').addClass('sorting_desc'); $(tableDataHeadTHs[column]).removeClass('sorting_asc').addClass('sorting_desc'); }else if($(this).is('.sorting_desc')){ $(this).removeClass('sorting_desc').addClass('sorting_asc'); $(tableDataHeadTHs[column]).removeClass('sorting_desc').addClass('sorting_asc'); } } clearSort($(this)); var rows = $tableData.find('tbody > tr').get(); $.each( rows, function( index, row ) { //先关掉所有行 if ( oTable.fnIsOpen(row) ) { $(row).find('.row-details').click(); } }); //重新取得所有行,否则排序后表格显示异常 rows = $tableData.find('tbody > tr').get(); $.each( rows, function( index, row ) { row.sortKey = findSortKey($(row).children('td').eq(column)); }); //排序方法 rows.sort(function( a, b ) { if( $sortOrder == 1 ) { //升序 if(a.sortKey < b.sortKey) return -1; if(a.sortKey > b.sortKey) return 1; return 0; } else { //降序 if(a.sortKey < b.sortKey) return 1; if(a.sortKey > b.sortKey) return -1; return 0; } }); //排序后的对象添加给$table $.each( rows, function( index, row ) { $tableData.children('tbody').append(row); row.sortKey = null; }); }); } } }); } var handleRecords = function(requestDatas, columns, xsHiddenColumns, smHiddenColumns, oLanguage, openRowFlag, rowCheckable, rowOverFlag, requestURL, requestParameters, tableHeight, columnsTooLong, sTotalRecordsSource, callbackList, totalRecords, requestType) { /* jQuery.getJSON('/web/newict/framework/thirdparty/data-tables/app-universal-i18n-datatable-' + lang + '.json', function(data) { oLanguage = data; }); */ grid = DatatableICT(); grid.setCallbackList(callbackList); grid.setContextData(contextData); grid.setOpenRowFlag(openRowFlag); grid.setRowCheckable(rowCheckable); grid.setRowOverFlag(rowOverFlag); grid.setColumnsTooLong(columnsTooLong); grid.setSTotalRecordsSource(sTotalRecordsSource); grid.setTotalRecords(totalRecords); grid.setTableHeight(tableHeight); grid.setRequestType(requestType); //取得查询条件 // if(!requestStr || requestStr.length == 0){ // requestStr = JSON.stringify(requestAllData); // } grid.clearAjaxParams(); if(requestType == "GET"){ grid.addAjaxParam('data', JSON.stringify(requestDatas)); }else{ grid.addAjaxParam('data', requestDatas); } //取得其他参数 for(var i=0;i table.dataTable', tableWrapper); var ths = $tableHead.find('th').get(); var $tableData = $('table#datatable_ajax' + contextData.curentDatableId); var tableDataHeadTHs = $tableData.find('th').get(); $.each( ths, function( index, th ){ //clear all sort direction if($(th).is('.sorting_disabled')){ //do nothing; }else if($(th).is('.sorting_asc')){ $(th).removeClass('sorting_asc').addClass('sorting_disabled'); $(tableDataHeadTHs[index]).removeClass('sorting_asc').addClass('sorting_disabled'); }else if($(th).is('.sorting_desc')){ $(th).removeClass('sorting_desc').addClass('sorting_disabled'); $(tableDataHeadTHs[index]).removeClass('sorting_desc').addClass('sorting_disabled'); } }); }, onError: function(grid) { // execute some code on network or other general error }, dataTable: { "sDom" : "tr<'row'<'col-md-6 col-sm-12'><'col-md-6 col-sm-12'pli>>", // datatable layout "oLanguage": oLanguage, //"bAutoWidth": true, "sScrollY": tableHeight, "bScrollCollapse": true, "sScrollX": "100%", //"sScrollXInner": "110%", "aLengthMenu": [ [20, 50, 100], [20, 50, 100] // change per page values here ], "iDisplayLength": 100, // default record count per page "bServerSide": true, // server side processing "sAjaxSource": requestURL // ajax source } }, columns, xsHiddenColumns, smHiddenColumns, openRowFlag, rowCheckable); } /* * Insert a 'details' column to the table */ var insertDetails = function (oTable, columns, rowCheckable) { var $tableData = $('table#datatable_ajax' + contextData.curentDatableId); $tableData.on('click', ' tbody td .row-details', function () { var nTr = $(this).parents('tr')[0]; if (oTable.fnIsOpen(nTr)) { /* This row is already open - close it */ $(this).addClass("row-details-close").removeClass("row-details-open"); oTable.fnClose(nTr); } else { /* Open this row */ $(this).addClass("row-details-open").removeClass("row-details-close"); oTable.fnOpen(nTr, fnFormatDetails(oTable, nTr, columns, rowCheckable), 'details'); } }); } return { //main function to initiate the module init: function (requestDatas, lang, configPathPrefix, callbackList, newColumns, totalPage) { var oLanguage; var columns; var xsHiddenColumns; var smHiddenColumns; var columnsAll; var openRowFlag = false; var rowOverFlag = false; var rowCheckable = false; var requestURL=""; var requestAllData; var requestParameters; var tableHeight; var tableWidth; var columnsTooLong; var sTotalRecordsSource=""; var totalRecords = 0; var requestType = "GET"; //取得当前配置及国际化信息 $.ajax({ dataType: 'json', url: configPathPrefix + '-' + lang + '.json', async: false, contentType:'application/json; charset=utf-8', "success": function(data) { oLanguage = data.language; columns = data.columns; if(newColumns){ columns = newColumns; } xsHiddenColumns = data.xsHiddenColumns; smHiddenColumns = data.smHiddenColumns; columnsAll = data.columnsAll; if(newColumns){ columnsAll = newColumns; } openRowFlag = data.openRowFlag == 'true'? true: false; rowOverFlag = data.rowOverFlag == 'true'? true: false; rowCheckable = data.rowCheckable == 'true'? true: false; requestURL = data.requestURL; //requestAllData = data.requestAllData; requestParameters = data.requestParameters; tableHeight = data.tableHeight; tableWidth = data.tableWidth; columnsTooLong = data.columnsTooLong; sTotalRecordsSource = data.sTotalRecordsSource; if(data.sTotalRecords){ //性能的情况直接指定总行数 totalRecords = parseInt(data.sTotalRecords); } if(totalPage){ //可以从参数指定总行数,适用于单独发请求获得总行数的场景 totalRecords = totalPage; } if(data.requestType){ requestType = data.requestType; } }, "error" : function (xhr, info) { alert('Communication Error! Error reason:' + info); } }); $('div#dataTableWrapperDiv' + contextData.curentDatableId).css('width', tableWidth); if(!isContained(xsHiddenColumns, smHiddenColumns) || !isContained(columns, xsHiddenColumns) || !isContained(columnsAll, columns)){ alert('Columns claim error: (smHiddenColumns <= xsHiddenColumns <= columns <= columnsAll) Please!'); return; } generateColumns(columns, openRowFlag, rowCheckable); //initPickers(); handleRecords(requestDatas, columns, xsHiddenColumns, smHiddenColumns, oLanguage, openRowFlag, rowCheckable, rowOverFlag, requestURL, requestParameters, tableHeight, columnsTooLong, sTotalRecordsSource, callbackList, totalRecords, requestType); //获得初始化完毕的DataTable对象 var oTable = grid.getDataTable(); if(openRowFlag){ insertDetails(oTable, columnsAll, rowCheckable); } sortHandling(oTable, openRowFlag, rowCheckable); //oTable.fnAdjustColumnSizing(true); return oTable; }, getDataGrid: function(){ return grid; }, setContextData: function(newContextData){ contextData = newContextData; } }; }(); var addTableElementsId = function(){ var outterDivs = $('div.dataTableWrapperDiv'); var currentId; if(outterDivs && outterDivs.length > 0) { var maxId = -1; var divIdNo; $.each(outterDivs, function (index, div) { var divId = $(div).attr("id"); divIdNo = divId.substring(20); if (divIdNo || divIdNo.length > 0){ if (parseInt(divIdNo) > maxId) { maxId = parseInt(divIdNo); } } }); currentId = maxId + 1; } var curentDatableId = "_" + currentId; var dataTableWrapperDiv = $('div#dataTableWrapperDiv');//新添加的outterDiv $(dataTableWrapperDiv).attr("id", "dataTableWrapperDiv" + curentDatableId); var dataTableWrapperDivContext = dataTableWrapperDiv; $('div.table-container', dataTableWrapperDiv).attr("id", "table-container" + curentDatableId); $('table#datatable_ajax', dataTableWrapperDiv).attr("id", "datatable_ajax" + curentDatableId); $('div#divOverlay', dataTableWrapperDiv).attr("id", "divOverlay" + curentDatableId); //$('div#buttonConfirm', dataTableWrapperDiv).attr("id", "buttonConfirm" + curentDatableId); //$('div#buttonUnConfirm', dataTableWrapperDiv).attr("id", "buttonUnConfirm" + curentDatableId); $('div#myModal', dataTableWrapperDiv).attr("id", "myModal" + curentDatableId); $('div#myModalConfirm', dataTableWrapperDiv).attr("id", "myModalConfirm" + curentDatableId); $('span#alarm_number', dataTableWrapperDiv).attr("id", "alarm_number" + curentDatableId); return { "curentDatableId": curentDatableId, "wrapperDivContext":dataTableWrapperDivContext } } var DataTableICT = function(requestDatas, tableDivId, tableDivPath, configPathPrefix, callbackList, newColumns, totalPage){ /* var requestStr = ""; if(datas){ requestStr = JSON.stringify(datas); } */ var lang = getLanguage(); //lang = 'en-US'; /**取得表格组件所需html片段 **/ /*jQuery('div#' + tableDivId).load(tableDivPath, function() { var contextData = addTableElementsId(); TableAjaxICT.setContextData(contextData); var lang = getLanguage(); //lang = 'en-US'; var oTable = TableAjaxICT.init(requestStr, lang, configPathPrefix); //重新调节列宽以适应window resize $(window).bind('resize', function () { //oTable.DataTable.models.oSettings.bAjaxDataGet = false; oTable.fnAdjustColumnSizing(); } ); });*/ /**同步取得表格组件所需html片段 **/ $.ajax({ async : false, "dataType" : "html", "type" : "GET", "url" : tableDivPath, "data" : null, "success" : function (html, textStatus, jqXHR) { $('div#' + tableDivId).html(html); }, "error" : function () { alert("Communication error!"); } }); var contextData = addTableElementsId(); TableAjaxICT.setContextData(contextData); var oTable = TableAjaxICT.init(requestDatas, lang, configPathPrefix, callbackList, newColumns, totalPage); //重新调节列宽以适应window resize $(window).bind('resize', function () { //oTable.DataTable.models.oSettings.bAjaxDataGet = false; oTable.fnAdjustColumnSizing(); } ); return TableAjaxICT.getDataGrid(); }