CLIENT GUI Framework
[vnfsdk/refrepo.git] / openo-portal / portal-performance / src / main / webapp / performance / js / alarmsServerPageTable.js
1 /*\r
2  * Copyright 2016-2017, CMCC Technologies Co., Ltd.\r
3  *\r
4  * Licensed under the Apache License, Version 2.0 (the "License");\r
5  * you may not use this file except in compliance with the License.\r
6  * You may obtain a copy of the License at\r
7  *\r
8  *         http://www.apache.org/licenses/LICENSE-2.0\r
9  *\r
10  * Unless required by applicable law or agreed to in writing, software\r
11  * distributed under the License is distributed on an "AS IS" BASIS,\r
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13  * See the License for the specific language governing permissions and\r
14  * limitations under the License.\r
15  */\r
16 var serverPageTable = {};\r
17 var queryCacheId = null;\r
18 var alarmCount;\r
19 /* Bootstrap style full number pagination control */\r
20 $.fn.dataTableExt.oApi.fnPagingInfo = function (oSettings) {\r
21     return {\r
22         "iEnd": oSettings.fnDisplayEnd(),\r
23         "iLength": oSettings._iDisplayLength,\r
24         "iTotal": oSettings.fnRecordsTotal(),\r
25         "iFilteredTotal": oSettings.fnRecordsDisplay(),\r
26         "iPage": Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength),\r
27         "iTotalPages": Math.ceil(oSettings.fnRecordsDisplay() / oSettings._iDisplayLength)\r
28     };\r
29 };\r
30 \r
31 $.extend($.fn.dataTableExt.oPagination, {\r
32     "bootstrap_extended": {\r
33         "fnInit": function (oSettings, nPaging, fnDraw) {\r
34             var oLang = oSettings.oLanguage.oPaginate;\r
35             var oPaging = oSettings.oInstance.fnPagingInfo();\r
36 \r
37             var fnClickHandler = function (e) {\r
38                 e.preventDefault();\r
39                 if (oSettings.oApi._fnPageChange(oSettings, e.data.action)) {\r
40                     fnDraw(oSettings);\r
41                 }\r
42             };\r
43 \r
44             $(nPaging).append(\r
45                 '<div class="pagination-panel"> ' + oLang.sPage + ' ' +\r
46                 '<a href="#" class="btn btn-sm default prev disabled" title="' + oLang.sPrevious + '"><i class="fa fa-angle-left"></i></a>' +\r
47                 '<input type="text" class="pagination-panel-input input-mini input-inline input-sm" maxlenght="5" style="text-align:center; margin: 0 4px; border: 1px solid rgb(169, 169, 169);height: 28px;">' +\r
48                 '<a href="#" class="btn btn-sm default next disabled" title="' + oLang.sNext + '"><i class="fa fa-angle-right"></i></a> ' +\r
49                 oLang.sPageOf + ' <span class="pagination-panel-total"></span>' +\r
50                 '</div>'\r
51             );\r
52 \r
53             var els = $('a', nPaging);\r
54 \r
55             $(els[0]).bind('click.DT', {action: "previous"}, fnClickHandler);\r
56             $(els[1]).bind('click.DT', {action: "next"}, fnClickHandler);\r
57 \r
58             $('.pagination-panel-input', nPaging).bind('change.DT', function (e) {\r
59                 var oPaging = oSettings.oInstance.fnPagingInfo();\r
60                 e.preventDefault();\r
61                 var page = parseInt($(this).val());\r
62                 if (page > 0 && page < oPaging.iTotalPages) {\r
63                     if (oSettings.oApi._fnPageChange(oSettings, page - 1)) {\r
64                         fnDraw(oSettings);\r
65                     }\r
66                 } else {\r
67                     $(this).val(oPaging.iPage + 1);\r
68                 }\r
69             });\r
70 \r
71             $('.pagination-panel-input', nPaging).bind('keypress.DT', function (e) {\r
72                 var oPaging = oSettings.oInstance.fnPagingInfo();\r
73                 if (e.which == 13) {\r
74                     var page = parseInt($(this).val());\r
75                     if (page > 0 && page < oSettings.oInstance.fnPagingInfo().iTotalPages) {\r
76                         if (oSettings.oApi._fnPageChange(oSettings, page - 1)) {\r
77                             fnDraw(oSettings);\r
78                         }\r
79                     } else {\r
80                         $(this).val(oPaging.iPage + 1);\r
81                     }\r
82                     e.preventDefault();\r
83                 }\r
84             });\r
85         },\r
86 \r
87         "fnUpdate": function (oSettings, fnDraw) {\r
88             var iListLength = 5;\r
89             var oPaging = oSettings.oInstance.fnPagingInfo();\r
90             var an = oSettings.aanFeatures.p;\r
91             var i, j, sClass, iStart, iEnd, iHalf = Math.floor(iListLength / 2);\r
92 \r
93             if (oPaging.iTotalPages < iListLength) {\r
94                 iStart = 1;\r
95                 iEnd = oPaging.iTotalPages;\r
96             }\r
97             else if (oPaging.iPage <= iHalf) {\r
98                 iStart = 1;\r
99                 iEnd = iListLength;\r
100             } else if (oPaging.iPage >= (oPaging.iTotalPages - iHalf)) {\r
101                 iStart = oPaging.iTotalPages - iListLength + 1;\r
102                 iEnd = oPaging.iTotalPages;\r
103             } else {\r
104                 iStart = oPaging.iPage - iHalf + 1;\r
105                 iEnd = iStart + iListLength - 1;\r
106             }\r
107 \r
108 \r
109             for (i = 0, iLen = an.length; i < iLen; i++) {\r
110                 var wrapper = $(an[i]).parents(".dataTables_wrapper");\r
111 \r
112                 if (oPaging.iTotalPages <= 0) {\r
113                     $('.pagination-panel, .dataTables_length', wrapper).hide();\r
114                 } else {\r
115                     $('.pagination-panel, .dataTables_length', wrapper).show();\r
116                 }\r
117 \r
118                 $('.pagination-panel-total', an[i]).html(oPaging.iTotalPages);\r
119                 $('.pagination-panel-input', an[i]).val(oPaging.iPage + 1);\r
120 \r
121                 // Remove the middle elements\r
122                 $('li:gt(1)', an[i]).filter(':not(.next)').remove();\r
123 \r
124                 // Add the new list items and their event handlers\r
125                 for (j = iStart; j <= iEnd; j++) {\r
126                     sClass = (j == oPaging.iPage + 1) ? 'class="active"' : '';\r
127                     $('<li ' + sClass + '><a href="#">' + j + '</a></li>')\r
128                         .insertBefore($('li.next:first', an[i])[0])\r
129                         .bind('click', function (e) {\r
130                             e.preventDefault();\r
131                             oSettings._iDisplayStart = (parseInt($('a', this).text(), 10) - 1) * oPaging.iLength;\r
132                             fnDraw(oSettings);\r
133                         });\r
134                 }\r
135 \r
136                 // Add / remove disabled classes from the static elements\r
137                 if (oPaging.iPage === 0) {\r
138                     $('a.prev', an[i]).addClass('disabled');\r
139                 } else {\r
140                     $('a.prev', an[i]).removeClass('disabled');\r
141                 }\r
142 \r
143                 if (oPaging.iPage === oPaging.iTotalPages - 1 || oPaging.iTotalPages === 0) {\r
144                     $('a.next', an[i]).addClass('disabled');\r
145                 } else {\r
146                     $('a.next', an[i]).removeClass('disabled');\r
147                 }\r
148             }\r
149         }\r
150     }\r
151 });\r
152 \r
153 //构造查询条件\r
154 serverPageTable.getRestPara = function (cond, tableSetting) {\r
155 \r
156         var conditions =  {};\r
157         //告警级别\r
158         if (cond.severity != null && cond.severity != "undefined" && cond.severity.length > 0) {\r
159                 var severity = '['+cond.severity+']';\r
160         var severityObj = window.JSON.parse(severity);\r
161                 conditions.severities=severityObj;\r
162     }\r
163         \r
164         //确认状态\r
165         if (cond.ackState != null && cond.ackState != "undefined" && cond.ackState.length > 0) {\r
166         var ackState = '[' + cond.ackState + ']';\r
167         var ackStateObj = window.JSON.parse(ackState)\r
168         conditions.ackStates=ackStateObj;\r
169     }\r
170         \r
171         //可见性\r
172         if (cond.filterState != null && cond.filterState != "undefined" && cond.filterState.length > 0) {\r
173         var filterState = '[' + cond.filterState + ']';\r
174         var filterStateObj = window.JSON.parse(filterState);\r
175         conditions.isVisibles=filterStateObj;\r
176     }\r
177         \r
178         //告警确认时间\r
179         if (cond.ackTimeMode != null && cond.ackTimeMode != "undefined") {\r
180                 var ackTime;\r
181                 if(cond.ackTimeMode === 1){\r
182                         ackTime = '{"timeMode": '+cond.ackTimeMode+',"relativeTime": '+cond.ackRelativeTime+'}';\r
183                 }else{\r
184                         ackTime = '{"beginTime": '+cond.ackTimeStarTime+',"endTime": '+cond.ackTimeEndTime+',"timeMode": '+cond.ackTimeMode+'}';\r
185                 }\r
186         var ackTimeObj = window.JSON.parse(ackTime);\r
187         conditions.ackTime = ackTimeObj;\r
188     }\r
189 \r
190         //告警发生时间\r
191     if (cond.alarmRaisedTimeMode != null && cond.alarmRaisedTimeMode != "undefined") {\r
192                 var alarmRaisedTime;\r
193                 if(cond.alarmRaisedTimeMode === 1){\r
194                         alarmRaisedTime = '{"timeMode": '+cond.alarmRaisedTimeMode+',"relativeTime": '+cond.alarmRaisedRelativeTime+'}';\r
195                 }else{\r
196                         alarmRaisedTime = '{"beginTime": '+cond.alarmRaisedStartTime+',"endTime": '+cond.alarmRaisedEndTime+',"timeMode": '+cond.alarmRaisedTimeMode+'}';\r
197                 }\r
198         var alarmRaisedTimeObj = window.JSON.parse(alarmRaisedTime);\r
199         conditions.alarmRaisedTime = alarmRaisedTimeObj;\r
200     }\r
201         \r
202         //告警清除时间\r
203         if (cond.clearedTimeMode != null && cond.clearedTimeMode != "undefined") {\r
204                 var clearedTime;\r
205                 if(cond.clearedTimeMode === 1){\r
206                         clearedTime = '{"timeMode": '+cond.clearedTimeMode+',"relativeTime": '+cond.clearedTimeRelativeTime+'}';\r
207                 }else{\r
208                         clearedTime = '{"beginTime": '+cond.clearedTimeStartTime+',"endTime": '+cond.clearedTimeEndTime+',"timeMode": '+cond.clearedTimeMode+'}';\r
209                 }\r
210         var clearedTimeTimeObj = window.JSON.parse(clearedTime);\r
211         conditions.alarmClearedTime = clearedTimeTimeObj;\r
212     }\r
213 \r
214         //告警码\r
215         if (cond.probableCause != null && cond.probableCause != "undefined") {\r
216         //var probableCauseArr = cond.probableCause.split(',');\r
217         var str = "";\r
218                 var arr="[";\r
219         for (var i = 0; i < cond.probableCause.length; i++) {\r
220                         if(i === 0){\r
221                                 if(cond.probableCause[i].type === "1"){\r
222                                         arr+='{"systemType":'+cond.probableCause[i].codeid+',"codes":[]}';\r
223                                 }else{\r
224                                         arr+='{"systemType":'+cond.probableCause[i].parentid+',"codes":['+cond.probableCause[i].codeid+']}';\r
225                                 }\r
226                         }else{\r
227                                 if(cond.probableCause[i].type === "1"){\r
228                                         arr+=',{"systemType":'+cond.probableCause[i].codeid+',"codes":[]}';\r
229                                 }else{\r
230                                         arr+=',{"systemType":'+cond.probableCause[i].parentid+',"codes":['+cond.probableCause[i].codeid+']}';\r
231                                 }\r
232                         }               \r
233         }\r
234                 arr+="]";\r
235                 var probableCausesObj = window.JSON.parse(arr);\r
236         conditions.probableCauses = probableCausesObj;      \r
237     }\r
238         \r
239         var requests={};\r
240         requests.condition=conditions;\r
241         requests.pageSize=tableSetting._iDisplayLength;\r
242         requests.pageNumber=tableSetting._iDisplayStart / tableSetting._iDisplayLength + 1;\r
243         if(cond.alarmType===2 && requests.pageNumber === 1){\r
244                 requests.queryCacheId="";\r
245         }else if(cond.alarmType===2 && requests.pageNumber != 1){\r
246                 requests.queryCacheId=queryCacheId;\r
247         }\r
248         \r
249         var resStr = window.JSON.stringify(requests);\r
250         result={\r
251                 request:resStr\r
252         };\r
253         return result;\r
254 };\r
255 \r
256 \r
257 serverPageTable.initDataTable = function (setting, cond, divId) {\r
258     //转换colomn\r
259     var column = setting.columns;\r
260         var setting;\r
261     //先把原来的表格清空\r
262     $('#' + divId).children().remove();\r
263     var tableId = setting.tableId;\r
264     var tableEleStr = '<table class="table table-striped table-bordered table-hover" id= ' + tableId + '>'\r
265         + '<thead>'\r
266         + '<tr role="row" class="heading" >'\r
267         + '</tr>'\r
268         + '</thead>'\r
269         + '<tbody>'\r
270         + '</tbody>'\r
271         + '</table>';\r
272     $('#' + divId).append(tableEleStr);\r
273     //$('#'+ tableId).append(' <thead><tr role="row" class="heading" ></tr></thead><tbody></tbody>');\r
274     var trEle = $('#' + tableId + ' > thead >tr');\r
275     //var dataTableColumn = [];\r
276     for (var one in column) {\r
277         if (one != "contains") {\r
278             var th = '<th>' + column[one].name + '</th>';\r
279             trEle.append(th);\r
280         }\r
281     }\r
282         \r
283     var table = $("#" + tableId).dataTable({\r
284         //"sDom" : "tr<'row'<'col-md-6 col-sm-12'><'col-md-6 col-sm-12'pli>>", // datatable layout\r
285         // "sDom" : "<'row'<'col-md-12 col-sm-12'lip>r><'table-scrollable't>>",\r
286         "oLanguage": setting.language,//汉化\r
287         "bJQueryUI": true,\r
288         "bPaginate": true,// 分页按钮\r
289         "bFilter": false,// 搜索栏\r
290         "bAutoWidth": true,//自动设置列宽\r
291         "bLengthChange": true,// 每行显示记录数\r
292         "iDisplayLength": 10,// 每页显示行数\r
293         "bSort": false,// 排序\r
294         "bInfo": true,// Showing 1 to 10 of 23 entries 总记录数没也显示多少等信息\r
295         "bWidth": true,\r
296         "bScrollCollapse": false,\r
297                 "sScrollY": "400px",\r
298         "sScrollX": "100%",\r
299         "sPaginationType": "bootstrap_extended", // 分页,  bootstrap_extended  一共两种样式 另一种为two_button // 是datatables默认\r
300         "bProcessing": true,\r
301         "bServerSide": true,\r
302         "bDestroy": true,\r
303         "bSortCellsTop": true,\r
304         "sDom": '<"top"rt><"bottom"lip>',\r
305         "sAjaxSource": setting.restUrl,// ./js/testJson.json  setting.restUrl\r
306         "aoColumns": setting.columns,\r
307                 "bRetrieve": true,\r
308         "fnServerData": function (sSource, aoData, fnCallback, oSettings) {\r
309             oSettings.jqXHR = $.ajax({\r
310                 "type": 'get',\r
311                 "url": sSource,\r
312                 "dataType": "json",\r
313                 "data": serverPageTable.getRestPara(cond, oSettings),\r
314                 "success": function (resp) {\r
315                     oSettings.iDraw = oSettings.iDraw + 1;\r
316                                         \r
317                                         var data = {};\r
318                                         if(cond.ruleType===1){\r
319                                                 var logList = resp.alarms;\r
320                                                 data.iTotalRecords = resp.totalCount;\r
321                                                 data.iTotalDisplayRecords = resp.totalCount;\r
322                                                 \r
323                                         }else if(cond.ruleType===2){\r
324                                                 var logList = resp.alarms;\r
325                                                 if(resp.queryCacheId === ""){\r
326                                                         data.iTotalRecords = alarmCount;\r
327                                                         data.iTotalDisplayRecords = alarmCount;\r
328                                                 }else{\r
329                                                         alarmCount = resp.totalCount;\r
330                                                         data.iTotalRecords = resp.totalCount;\r
331                                                         data.iTotalDisplayRecords = resp.totalCount;\r
332                                                         queryCacheId = resp.queryCacheId;\r
333                                                 }\r
334 \r
335                                         }\r
336                                         \r
337                     var pageInfo = null;\r
338                                         setting=oSettings;\r
339                     if (pageInfo != null) {\r
340                         vm.logInfo[vm.logType].pageInfo = pageInfo;\r
341                     }\r
342                     \r
343                                         //添加序号\r
344                                          for(var i=0;i<logList.length;i++){\r
345                                                 logList[i].order="<a>"+(i+1)+"</a>";    \r
346                                         } \r
347                                         //组合告警码\r
348                                          for(var i=0;i<logList.length;i++){\r
349                                                 logList[i].probableCauseCodeNameAndCode=logList[i].probableCauseCodeName+"("+logList[i].probableCauseCode+")";  \r
350                                         } \r
351                                                         \r
352                     data.aaData = logList;\r
353                     data.sEcho = oSettings;\r
354                     fnCallback(data);                   \r
355 \r
356                     $('#dataTableCheckBox').click(function () {\r
357                         var checkArr = $('#' + divId + ' .details-check input[type="checkbox"]');//\r
358                         for (var i = 0; i < checkArr.length; i++) {\r
359                             if ($(checkArr).eq(i).attr('id') != 'dataTableCheckBox') {\r
360                                 if ($('#dataTableCheckBox').prop("checked")) {\r
361                                     $(checkArr).eq(i).removeClass('checked');\r
362                                                                         $(checkArr).eq(i).prop('checked',true);\r
363                                 } else {\r
364                                     $(checkArr).eq(i).addClass('checked');\r
365                                                                         $(checkArr).eq(i).prop('checked',false);\r
366                                 }\r
367                             }\r
368                                                 }\r
369                     });                 \r
370                 }\r
371 \r
372             });\r
373         },\r
374                 "fnDrawCallback": function( oSettings ) { // run some code on table redraw              \r
375                         \r
376                         var tableWrapper = $('div.dataTables_wrapper');\r
377                         //自适应对齐表头\r
378                         var $tableHead = $('div.dataTables_scrollHeadInner > table.dataTable', tableWrapper);\r
379                         var tbodyHead = $('tbody', $tableHead);\r
380                         if(tbodyHead && tbodyHead.length >0){\r
381                                 $(tbodyHead).remove();\r
382                         }\r
383 \r
384                         var $tableBody = $('table#' + tableId, tableWrapper);\r
385                         var trIn = $('thead > tr:nth-child(1)', $tableHead);\r
386                         var trBodyHead = $('thead > tr:nth-child(1)', $tableBody);\r
387                         var tds = $(trIn).children();\r
388                         var ths = $(trBodyHead).children();\r
389                         for(var k=0;k<tds.length;k++){\r
390                                 $(ths.eq(k)).html('<div style="height: 0;overflow: hidden;">' + tds.eq(k).html() + '</div>');\r
391                         }\r
392                         var bodyRows = $('tbody > tr', $tableBody);\r
393                         for(var i=0;i<bodyRows.length;i++){\r
394                                 var rowClone = $(bodyRows.eq(i)).clone();\r
395                                 var tds = $(rowClone).children();\r
396                                 for(var j=0;j<tds.length;j++){\r
397                                         $(tds.eq(j)).html('<div style="height: 0;overflow: hidden;">' + tds.eq(j).html() + '</div>');\r
398                                         $(tds.eq(j)).height('0px');\r
399                                         $(tds.eq(j)).css('padding-top','0px');\r
400                                         $(tds.eq(j)).css('padding-bottom','0px');\r
401                                         $(tds.eq(j)).css('border-top-width','0px');\r
402                                         $(tds.eq(j)).css('border-bottom-width','0px');\r
403                                 }\r
404                                 $(rowClone).height('0px');\r
405                                 $tableHead.append($(rowClone).prop("outerHTML"));\r
406                         }\r
407 \r
408                         $('div.dataTables_scrollBody', tableWrapper).css('width','100%');\r
409                         //$('div.dataTables_scrollHead', tableWrapper).css('width','98.5%');\r
410                         $('div.dataTables_scrollHeadInner', tableWrapper).css('padding-right', 0);\r
411                         \r
412                         //$("table.dataTable > thead > tr > th:nth-child(2)", $(".dataTables_scrollHeadInner")).click();\r
413                         \r
414                         //设置表格本体高度\r
415                         //$('div.dataTables_scrollBody', tableWrapper).css('height', "280px");\r
416                         //填充表头右边界\r
417             /* $('div.dataTables_scrollHead', tableWrapper).css('display','inline-block');\r
418             $("div.dataTables_scrollHead", tableWrapper).after("<div id='divRightPadding' style='overflow: hidden; background:#eee; position: relative; float:right; border: 1px solid #ddd; height:" + 42 + "px; width: 1.4%;'></div>"); */\r
419             /* if($.browser.mozilla){\r
420                 $('div#divRightPadding', tableWrapper).css('height', '40');\r
421             } */\r
422                 }\r
423     });\r
424 \r
425         $(window).bind('resize', function () {\r
426                 //oTable.DataTable.models.oSettings.bAjaxDataGet = false;\r
427                 table.fnAdjustColumnSizing(setting);\r
428         } );\r
429 \r
430     function format_Detail(oTable, nTr) {\r
431         var aData = oTable.fnGetData(nTr);\r
432 \r
433                 var sOut = '<table class = "detailTable" width="100%">';\r
434         sOut += '<tr><td class = "detailTitleStyle" width = 160><span class = "label label-primary">' + column[3].name + '</span></td><td class = "detailCellStyle" width = 320>' + null2space(aData[column[3].mData]) + '</td>';\r
435         sOut += '<td class = "detailTitleStyle" width = 160><span class = "label label-primary">' + column[8].name + '</span></td><td class = "detailCellStyle" width = 320>' + null2space(vm.alTypes[aData[column[8].mData]]) + '</td></tr>';\r
436                 \r
437         sOut += '<tr><td class = "detailTitleStyle" width = 80><span class = "label label-primary">' + column[9].name + '</span></td><td class = "detailCellStyle" width = 160>' + null2space(aData[column[9].mData]) + '</td>';\r
438         sOut += '<td class = "detailTitleStyle" width = 80><span class = "label label-primary">' + column[7].name + '</span></td><td class = "detailCellStyle" width = 160>' + null2space(aData[column[7].mData]) + '</td></tr>';\r
439 \r
440         sOut += '<tr><td class = "detailTitleStyle"><span class = "label label-primary">' + column[6].name + '</span></td><td class = "detailCellStyle">' + null2space(aData[column[6].mData]) + '</td>';\r
441         sOut += '<td class = "detailTitleStyle"><span class = "label label-primary">' + column[11].name + '</span></td><td class = "detailCellStyle">' + null2space(aData[column[11].mData]) + '</td></tr>';\r
442                 \r
443         sOut += '<tr><td class = "detailTitleStyle"><span class = "label label-primary">' + column[10].name + '</span></td><td class = "detailCellStyle">' + null2space(aData[column[10].mData]) + '</td>';\r
444         sOut += '<td class = "detailTitleStyle"><span class = "label label-primary">' + column[13].name + '</span></td><td class = "detailCellStyle">' + null2space(aData[column[13].mData]) + '</td></tr>';\r
445 \r
446         sOut += '<tr><td class = "detailTitleStyle"><span class = "label label-primary">' + column[12].name + '</span></td><td class = "detailCellStyle">' + null2space(aData[column[12].mData]) + '</td>';\r
447         sOut += '<td class = "detailTitleStyle"><span class = "label label-primary">' + column[5].name + '</span></td><td class = "detailCellStyle">' + null2space(aData[column[5].mData]) + '</td></tr>';\r
448                 \r
449         sOut += '<tr><td class = "detailTitleStyle"><span class = "label label-primary">' + column[23].name + '</span></td><td class = "detailCellStyle">' + null2space(aData[column[23].mData]) + '</td>';\r
450                 sOut += '<td class = "detailTitleStyle"><span class = "label label-primary">' + column[4].name + '</span></td><td class = "detailCellStyle">' + null2space(aData[column[4].mData]) + '</td></tr>';\r
451    //     sOut += '<td class = "detailTitleStyle"><span class = "label label-primary">' + column[5].name + '</span></td><td class = "detailCellStyle">' + aData[column[5].mData] + '</td></tr>';\r
452                 \r
453      //   sOut += '<tr><td class = "detailTitleStyle"><span class = "label label-primary">' + column[4].name + '</span></td><td class = "detailCellStyle">' + aData[column[4].mData] + '</td>';\r
454         //      sOut += '<tr><td class = "detailTitleStyle"><span class = "label label-primary">' + column[22].name + '</span></td><td class = "detailCellStyle">' + aData[column[22].mData] + '</td></tr>';\r
455     //    sOut += '<td class = "detailTitleStyle"><span class = "label label-primary">' + column[22].name + '</span></td><td class = "detailCellStyle">' + aData[column[22].mData] + '</td></tr>';\r
456                 \r
457     //    sOut += '<tr><td class = "detailTitleStyle"><span class = "label label-primary">' + column[12].name + '</span></td><td class = "detailCellStyle">' + aData[column[12].mData] + '</td>';\r
458      //   sOut += '<td class = "detailTitleStyle"><span class = "label label-primary">' + column[17].name + '</span></td><td class = "detailCellStyle">' + aData[column[17].mData] + '</td></tr>';\r
459 \r
460         sOut += '<td class = "detailTitleStyle"><span class = "label label-primary">' + column[16].name + '</span></td><td class = "detailCellStyle" colspan = 3>' + null2space(aData.additionalText) + '</td></tr>';\r
461                 \r
462         return sOut;\r
463     }\r
464         function null2space(nullStr){\r
465                 if(nullStr == null){\r
466                         return "";\r
467                 } else {\r
468                         return nullStr;\r
469                 }\r
470         }\r
471     $('#' + tableId + '>tbody').on('click', 'td.details-control', function () {\r
472         var tr = $(this).closest('tr');\r
473         //var nTr = $(this).parents('tr')[0];\r
474         //var row = table.row( tr );\r
475         if (table.fnIsOpen(tr[0])) {\r
476             table.fnClose(tr[0]);\r
477             //if ( row.child.isShown() ) {\r
478             // This row is already open - close it\r
479             //row.child.hide();\r
480             tr.removeClass('shown');\r
481         }\r
482         else {\r
483             // Open this row\r
484             table.fnOpen(tr[0], format_Detail(table, tr[0]), 'details');\r
485             //row.child( format_Detail(row.data()) ).show();\r
486             tr.addClass('shown');\r
487         }\r
488     });\r
489 \r
490     // mod by chenhao 2015-10-26 注释掉\r
491     // // 所有td注册一个点击事件用来展示出详情。\r
492     // $('#ict_alarms_table >tbody').on('click', 'td', function () {\r
493            \r
494     //         var className= $(this).eq(0).attr('class');\r
495     //         //当点击的是如下的table页的时候\r
496     //         if(className &&(className.indexOf('relInfo')>-1 || className.indexOf('details-check')>-1 || className.indexOf('ackState')>-1  || className.indexOf('details-control')>-1)){\r
497     //             $('#right-menu').fadeOut();\r
498     //         }else{\r
499     //             //填充table的数据\r
500     //             var tbody=$('#ict_table_general >tbody');\r
501     //             tbody.children().remove();\r
502     //             var trHtml="";\r
503     //             var tr = $(this).closest('tr'); \r
504     //             var aData = table.fnGetData(tr[0]);\r
505     //             for (var i = 0; i < column.length; i++) {\r
506     //             if( column[i].bVisible == false ){//如果列可见就继续遍历下一个\r
507     //                 trHtml += '<tr role="row"><td>'+column[i].name+':</td><td>' + aData[column[i].mData] + '</td></tr>';\r
508     //                }\r
509     //             }\r
510     //             tbody.append(trHtml);\r
511     //             if(!vm.alarmId ||vm.alarmId==aData.alarmId){\r
512     //                 $('#right-menu').fadeToggle();\r
513     //             }else{\r
514     //                 $('#right-menu').fadeIn();\r
515     //             } \r
516     //              vm.alarmId=aData.alarmId;  \r
517     //         }  \r
518     // });\r
519         //重新调节列宽以适应window resize\r
520     $(window).bind('resize', function () {\r
521         //oTable.fnAdjustColumnSizing();\r
522                 $("table.dataTable > thead > tr > th:nth-child(2)", $(".dataTables_scrollHeadInner")).click();\r
523     } );\r
524 \r
525 };\r
526 \r
527 \r
528 \r
529 \r