joblog.index.1.js 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397
  1. $(function() {
  2. // jobGroup change, job list init and select
  3. $("#jobGroup").on("change", function () {
  4. var jobGroup = $(this).children('option:selected').val();
  5. $.ajax({
  6. type : 'POST',
  7. async: false, // async, avoid js invoke pagelist before jobId data init
  8. url : base_url + '/joblog/getJobsByGroup',
  9. data : {"jobGroup":jobGroup},
  10. dataType : "json",
  11. success : function(data){
  12. if (data.code == 200) {
  13. $("#jobId").html( '<option value="0" >'+ I18n.system_all +'</option>' );
  14. $.each(data.content, function (n, value) {
  15. $("#jobId").append('<option value="' + value.id + '" >' + value.jobDesc + '</option>');
  16. });
  17. if ($("#jobId").attr("paramVal")){
  18. $("#jobId").find("option[value='" + $("#jobId").attr("paramVal") + "']").attr("selected",true);
  19. }
  20. } else {
  21. layer.open({
  22. title: I18n.system_tips ,
  23. btn: [ I18n.system_ok ],
  24. content: (data.msg || I18n.system_api_error ),
  25. icon: '2'
  26. });
  27. }
  28. },
  29. });
  30. });
  31. if ($("#jobGroup").attr("paramVal")){
  32. $("#jobGroup").find("option[value='" + $("#jobGroup").attr("paramVal") + "']").attr("selected",true);
  33. $("#jobGroup").change();
  34. }
  35. // filter Time
  36. var rangesConf = {};
  37. rangesConf[I18n.daterangepicker_ranges_recent_hour] = [moment().subtract(1, 'hours'), moment()];
  38. rangesConf[I18n.daterangepicker_ranges_today] = [moment().startOf('day'), moment().endOf('day')];
  39. rangesConf[I18n.daterangepicker_ranges_yesterday] = [moment().subtract(1, 'days').startOf('day'), moment().subtract(1, 'days').endOf('day')];
  40. rangesConf[I18n.daterangepicker_ranges_this_month] = [moment().startOf('month'), moment().endOf('month')];
  41. rangesConf[I18n.daterangepicker_ranges_last_month] = [moment().subtract(1, 'months').startOf('month'), moment().subtract(1, 'months').endOf('month')];
  42. rangesConf[I18n.daterangepicker_ranges_recent_week] = [moment().subtract(1, 'weeks').startOf('day'), moment().endOf('day')];
  43. rangesConf[I18n.daterangepicker_ranges_recent_month] = [moment().subtract(1, 'months').startOf('day'), moment().endOf('day')];
  44. $('#filterTime').daterangepicker({
  45. autoApply:false,
  46. singleDatePicker:false,
  47. showDropdowns:false, // 是否显示年月选择条件
  48. timePicker: true, // 是否显示小时和分钟选择条件
  49. timePickerIncrement: 10, // 时间的增量,单位为分钟
  50. timePicker24Hour : true,
  51. opens : 'left', //日期选择框的弹出位置
  52. ranges: rangesConf,
  53. locale : {
  54. format: 'YYYY-MM-DD HH:mm:ss',
  55. separator : ' - ',
  56. customRangeLabel : I18n.daterangepicker_custom_name ,
  57. applyLabel : I18n.system_ok ,
  58. cancelLabel : I18n.system_cancel ,
  59. fromLabel : I18n.daterangepicker_custom_starttime ,
  60. toLabel : I18n.daterangepicker_custom_endtime ,
  61. daysOfWeek : I18n.daterangepicker_custom_daysofweek.split(',') , // '日', '一', '二', '三', '四', '五', '六'
  62. monthNames : I18n.daterangepicker_custom_monthnames.split(',') , // '一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'
  63. firstDay : 1
  64. },
  65. startDate: rangesConf[I18n.daterangepicker_ranges_today][0],
  66. endDate: rangesConf[I18n.daterangepicker_ranges_today][1]
  67. });
  68. // init date tables
  69. var logTable = $("#joblog_list").dataTable({
  70. "deferRender": true,
  71. "processing" : true,
  72. "serverSide": true,
  73. "ajax": {
  74. url: base_url + "/joblog/pageList" ,
  75. type:"post",
  76. data : function ( d ) {
  77. var obj = {};
  78. obj.jobGroup = $('#jobGroup').val();
  79. obj.jobId = $('#jobId').val();
  80. obj.logStatus = $('#logStatus').val();
  81. obj.filterTime = $('#filterTime').val();
  82. obj.start = d.start;
  83. obj.length = d.length;
  84. return obj;
  85. }
  86. },
  87. "searching": false,
  88. "ordering": false,
  89. //"scrollX": false,
  90. "columns": [
  91. {
  92. "data": 'jobId',
  93. "visible" : true,
  94. "width":'5%',
  95. "render": function ( data, type, row ) {
  96. var jobhandler = '';
  97. if (row.executorHandler) {
  98. jobhandler = "<br>JobHandler:" + row.executorHandler;
  99. }
  100. var temp = '';
  101. temp += I18n.joblog_field_executorAddress + ':' + (row.executorAddress?row.executorAddress:'');
  102. temp += jobhandler;
  103. temp += '<br>'+ I18n.jobinfo_field_executorparam +':' + row.executorParam;
  104. return '<a class="logTips" href="javascript:;" >'+ row.jobId +'<span style="display:none;">'+ temp +'</span></a>';
  105. }
  106. },
  107. {"data": 'jobTitle', "width": '10%', "visible": true},
  108. { "data": 'jobGroup', "visible" : false},
  109. {
  110. "data": 'triggerTime',
  111. "width":'12%',
  112. "render": function ( data, type, row ) {
  113. return data?moment(data).format("YYYY-MM-DD HH:mm:ss"):"";
  114. }
  115. },
  116. {
  117. "data": 'triggerCode',
  118. "width":'10%',
  119. "render": function ( data, type, row ) {
  120. var html = data;
  121. if (data == 200) {
  122. html = '<span style="color: green">'+ I18n.system_success +'</span>';
  123. } else if (data == 500) {
  124. html = '<span style="color: red">'+ I18n.system_fail +'</span>';
  125. } else if (data == 0) {
  126. html = '';
  127. }
  128. return html;
  129. }
  130. },
  131. {
  132. "data": 'triggerMsg',
  133. "width":'10%',
  134. "render": function ( data, type, row ) {
  135. return data?'<a class="logTips" href="javascript:;" >'+ I18n.system_show +'<span style="display:none;">'+ data +'</span></a>':I18n.system_empty;
  136. }
  137. },
  138. {
  139. "data": 'handleTime',
  140. "width":'12%',
  141. "render": function ( data, type, row ) {
  142. return data?moment(data).format("YYYY-MM-DD HH:mm:ss"):"";
  143. }
  144. },
  145. {
  146. "data": 'handleCode',
  147. "width":'10%',
  148. "render": function ( data, type, row ) {
  149. var html = data;
  150. if (data == 200) {
  151. html = '<span style="color: green">'+ I18n.joblog_handleCode_200 +'</span>';
  152. } else if (data == 500) {
  153. html = '<span style="color: red">'+ I18n.joblog_handleCode_500 +'</span>';
  154. } else if (data == 502) {
  155. html = '<span style="color: red">'+ I18n.joblog_handleCode_502 +'</span>';
  156. } else if (data == 0) {
  157. html = '';
  158. }
  159. return html;
  160. }
  161. },
  162. {
  163. "data": 'handleMsg',
  164. "width":'10%',
  165. "render": function ( data, type, row ) {
  166. return data?'<a class="logTips" href="javascript:;" >'+ I18n.system_show +'<span style="display:none;">'+ data +'</span></a>':I18n.system_empty;
  167. }
  168. },
  169. {
  170. "data": 'handleMsg' ,
  171. "bSortable": false,
  172. "width":'10%',
  173. "render": function ( data, type, row ) {
  174. // better support expression or string, not function
  175. return function () {
  176. if (row.triggerCode == 200 || row.handleCode != 0){
  177. /*var temp = '<a href="javascript:;" class="logDetail" _id="'+ row.id +'">'+ I18n.joblog_rolling_log +'</a>';
  178. if(row.handleCode == 0){
  179. temp += '<br><a href="javascript:;" class="logKill" _id="'+ row.id +'" style="color: red;" >'+ I18n.joblog_kill_log +'</a>';
  180. }*/
  181. //return temp;
  182. var logKillDiv = '';
  183. if(row.handleCode == 0){
  184. logKillDiv = ' <li class="divider"></li>\n' +
  185. ' <li><a href="javascript:void(0);" class="logKill" _id="'+ row.id +'" >'+ I18n.joblog_kill_log +'</a></li>\n';
  186. }
  187. var html = '<div class="btn-group">\n' +
  188. ' <button type="button" class="btn btn-primary btn-sm">'+ I18n.system_opt +'</button>\n' +
  189. ' <button type="button" class="btn btn-primary btn-sm dropdown-toggle" data-toggle="dropdown">\n' +
  190. ' <span class="caret"></span>\n' +
  191. ' <span class="sr-only">Toggle Dropdown</span>\n' +
  192. ' </button>\n' +
  193. ' <ul class="dropdown-menu" role="menu" _id="'+ row.id +'" >\n' +
  194. ' <li><a href="javascript:void(0);" class="logDetail" _id="'+ row.id +'" >'+ I18n.joblog_rolling_log +'</a></li>\n' +
  195. logKillDiv +
  196. ' </ul>\n' +
  197. ' </div>';
  198. return html;
  199. }
  200. return null;
  201. }
  202. }
  203. }
  204. ],
  205. "language" : {
  206. "sProcessing" : I18n.dataTable_sProcessing ,
  207. "sLengthMenu" : I18n.dataTable_sLengthMenu ,
  208. "sZeroRecords" : I18n.dataTable_sZeroRecords ,
  209. "sInfo" : I18n.dataTable_sInfo ,
  210. "sInfoEmpty" : I18n.dataTable_sInfoEmpty ,
  211. "sInfoFiltered" : I18n.dataTable_sInfoFiltered ,
  212. "sInfoPostFix" : "",
  213. "sSearch" : I18n.dataTable_sSearch ,
  214. "sUrl" : "",
  215. "sEmptyTable" : I18n.dataTable_sEmptyTable ,
  216. "sLoadingRecords" : I18n.dataTable_sLoadingRecords ,
  217. "sInfoThousands" : ",",
  218. "oPaginate" : {
  219. "sFirst" : I18n.dataTable_sFirst ,
  220. "sPrevious" : I18n.dataTable_sPrevious ,
  221. "sNext" : I18n.dataTable_sNext ,
  222. "sLast" : I18n.dataTable_sLast
  223. },
  224. "oAria" : {
  225. "sSortAscending" : I18n.dataTable_sSortAscending ,
  226. "sSortDescending" : I18n.dataTable_sSortDescending
  227. }
  228. }
  229. });
  230. logTable.on('xhr.dt',function(e, settings, json, xhr) {
  231. if (json.code && json.code != 200) {
  232. layer.msg( json.msg || I18n.system_api_error );
  233. }
  234. });
  235. // logTips alert
  236. $('#joblog_list').on('click', '.logTips', function(){
  237. var msg = $(this).find('span').html();
  238. ComAlertTec.show(msg);
  239. });
  240. // search Btn
  241. $('#searchBtn').on('click', function(){
  242. logTable.fnDraw();
  243. });
  244. // logDetail look
  245. $('#joblog_list').on('click', '.logDetail', function(){
  246. var _id = $(this).attr('_id');
  247. window.open(base_url + '/joblog/logDetailPage?id=' + _id);
  248. return;
  249. });
  250. /**
  251. * log Kill
  252. */
  253. $('#joblog_list').on('click', '.logKill', function(){
  254. var _id = $(this).attr('_id');
  255. layer.confirm( (I18n.system_ok + I18n.joblog_kill_log + '?'), {
  256. icon: 3,
  257. title: I18n.system_tips ,
  258. btn: [ I18n.system_ok, I18n.system_cancel ]
  259. }, function(index){
  260. layer.close(index);
  261. $.ajax({
  262. type : 'POST',
  263. url : base_url + '/joblog/logKill',
  264. data : {"id":_id},
  265. dataType : "json",
  266. success : function(data){
  267. if (data.code == 200) {
  268. layer.open({
  269. title: I18n.system_tips,
  270. btn: [ I18n.system_ok ],
  271. content: I18n.system_opt_suc ,
  272. icon: '1',
  273. end: function(layero, index){
  274. logTable.fnDraw();
  275. }
  276. });
  277. } else {
  278. layer.open({
  279. title: I18n.system_tips,
  280. btn: [ I18n.system_ok ],
  281. content: (data.msg || I18n.system_opt_fail ),
  282. icon: '2'
  283. });
  284. }
  285. },
  286. });
  287. });
  288. });
  289. /**
  290. * clear Log
  291. */
  292. $('#clearLog').on('click', function(){
  293. var jobGroup = $('#jobGroup').val();
  294. var jobId = $('#jobId').val();
  295. var jobGroupText = $("#jobGroup").find("option:selected").text();
  296. var jobIdText = $("#jobId").find("option:selected").text();
  297. $('#clearLogModal input[name=jobGroup]').val(jobGroup);
  298. $('#clearLogModal input[name=jobId]').val(jobId);
  299. $('#clearLogModal .jobGroupText').val(jobGroupText);
  300. $('#clearLogModal .jobIdText').val(jobIdText);
  301. $('#clearLogModal').modal('show');
  302. });
  303. $("#clearLogModal .ok").on('click', function(){
  304. $.post(base_url + "/joblog/clearLog", $("#clearLogModal .form").serialize(), function(data, status) {
  305. if (data.code == "200") {
  306. $('#clearLogModal').modal('hide');
  307. layer.open({
  308. title: I18n.system_tips ,
  309. btn: [ I18n.system_ok ],
  310. content: (I18n.joblog_clean_log + I18n.system_success) ,
  311. icon: '1',
  312. end: function(layero, index){
  313. logTable.fnDraw();
  314. }
  315. });
  316. } else {
  317. layer.open({
  318. title: I18n.system_tips ,
  319. btn: [ I18n.system_ok ],
  320. content: (data.msg || (I18n.joblog_clean_log + I18n.system_fail) ),
  321. icon: '2'
  322. });
  323. }
  324. });
  325. });
  326. $("#clearLogModal").on('hide.bs.modal', function () {
  327. $("#clearLogModal .form")[0].reset();
  328. });
  329. });
  330. // Com Alert by Tec theme
  331. var ComAlertTec = {
  332. html:function(){
  333. var html =
  334. '<div class="modal fade" id="ComAlertTec" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">' +
  335. ' <div class="modal-dialog modal-lg-">' +
  336. ' <div class="modal-content-tec">' +
  337. ' <div class="modal-body">' +
  338. ' <div class="alert" style="color:#fff;word-wrap: break-word;">' +
  339. ' </div>' +
  340. ' </div>' +
  341. ' <div class="modal-footer">' +
  342. ' <div class="text-center" >' +
  343. ' <button type="button" class="btn btn-info ok" data-dismiss="modal" >'+ I18n.system_ok +'</button>' +
  344. ' </div>' +
  345. ' </div>' +
  346. ' </div>' +
  347. ' </div>' +
  348. '</div>';
  349. return html;
  350. },
  351. show:function(msg, callback){
  352. // dom init
  353. if ($('#ComAlertTec').length == 0){
  354. $('body').append(ComAlertTec.html());
  355. }
  356. // init com alert
  357. $('#ComAlertTec .alert').html(msg);
  358. $('#ComAlertTec').modal('show');
  359. $('#ComAlertTec .ok').click(function(){
  360. $('#ComAlertTec').modal('hide');
  361. if(typeof callback == 'function') {
  362. callback();
  363. }
  364. });
  365. }
  366. };