$(function() { // init date tables var jobTable = $("#job_list").dataTable({ "deferRender": true, "processing" : true, "serverSide": true, "ajax": { url: base_url + "/jobinfo/pageList", type:"post", data : function ( d ) { var obj = {}; obj.jobGroup = $('#jobGroup').val(); obj.executorHandler = $('#executorHandler').val(); obj.start = d.start; obj.length = d.length; return obj; } }, "searching": false, "ordering": false, //"scrollX": true, // X轴滚动条,取消自适应 "columns": [ { "data": 'id', "bSortable": false, "visible" : false}, { "data": 'jobGroup', "visible" : false, "render": function ( data, type, row ) { var groupMenu = $("#jobGroup").find("option"); for ( var index in $("#jobGroup").find("option")) { if ($(groupMenu[index]).attr('value') == data) { return $(groupMenu[index]).html(); } } return data; } }, { "data": 'jobName', "visible" : false}, { "data": 'childJobKey', "visible" : true, "render": function ( data, type, row ) { var jobKey = row.jobGroup + "_" + row.jobName; return jobKey; } }, { "data": 'jobDesc', "visible" : true}, { "data": 'jobCron', "visible" : true}, { "data": 'executorAddress', "visible" : false}, { "data": 'executorHandler', "visible" : false}, { "data": 'executorParam', "visible" : false}, { "data": 'addTime', "visible" : false, "render": function ( data, type, row ) { return data?moment(new Date(data)).format("YYYY-MM-DD HH:mm:ss"):""; } }, { "data": 'updateTime', "visible" : false, "render": function ( data, type, row ) { return data?moment(new Date(data)).format("YYYY-MM-DD HH:mm:ss"):""; } }, { "data": 'author', "visible" : true}, { "data": 'alarmEmail', "visible" : false}, { "data": 'glueSwitch', "visible" : false}, { "data": 'jobStatus', "visible" : true, "render": function ( data, type, row ) { if ('NORMAL' == data) { return ''+ data +''; } else if ('PAUSED' == data){ return ''+ data +''; } else if ('BLOCKED' == data){ return ''+ data +''; } return data; } }, { "data": '操作' , "render": function ( data, type, row ) { return function(){ // status var pause_resume = ""; if ('NORMAL' == row.jobStatus) { pause_resume = ' '; } else if ('PAUSED' == row.jobStatus){ pause_resume = ' '; } // log url var logUrl = base_url +'/joblog?jobGroup='+ row.jobGroup +'&jobName='+ row.jobName; // log url var codeBtn = ""; if(row.glueSwitch > 0){ var codeUrl = base_url +'/jobcode?jobGroup='+ row.jobGroup +'&jobName='+ row.jobName; codeBtn = ' ' } // html var html = '

'+ ' '+ pause_resume + '
'+ ' '+ codeBtn + ' '+ '

'; return html; }; } } ], "language" : { "sProcessing" : "处理中...", "sLengthMenu" : "每页 _MENU_ 条记录", "sZeroRecords" : "没有匹配结果", "sInfo" : "第 _PAGE_ 页 ( 总共 _PAGES_ 页 )", "sInfoEmpty" : "无记录", "sInfoFiltered" : "(由 _MAX_ 项结果过滤)", "sInfoPostFix" : "", "sSearch" : "搜索:", "sUrl" : "", "sEmptyTable" : "表中数据为空", "sLoadingRecords" : "载入中...", "sInfoThousands" : ",", "oPaginate" : { "sFirst" : "首页", "sPrevious" : "上页", "sNext" : "下页", "sLast" : "末页" }, "oAria" : { "sSortAscending" : ": 以升序排列此列", "sSortDescending" : ": 以降序排列此列" } } }); // 搜索按钮 $('#searchBtn').on('click', function(){ jobTable.fnDraw(); }); // job operate $("#job_list").on('click', '.job_operate',function() { var typeName; var url; var needFresh = false; var type = $(this).attr("type"); if ("job_pause" == type) { typeName = "暂停"; url = base_url + "/jobinfo/pause"; needFresh = true; } else if ("job_resume" == type) { typeName = "恢复"; url = base_url + "/jobinfo/resume"; needFresh = true; } else if ("job_del" == type) { typeName = "删除"; url = base_url + "/jobinfo/remove"; needFresh = true; } else if ("job_trigger" == type) { typeName = "执行"; url = base_url + "/jobinfo/trigger"; } else { return; } var jobGroup = $(this).parent('p').attr("jobGroup"); var jobName = $(this).parent('p').attr("jobName"); ComConfirm.show("确认" + typeName + "?", function(){ $.ajax({ type : 'POST', url : url, data : { "jobGroup" : jobGroup, "jobName" : jobName }, dataType : "json", success : function(data){ if (data.code == 200) { ComAlert.show(1, typeName + "成功", function(){ if (needFresh) { //window.location.reload(); jobTable.fnDraw(); } }); } else { ComAlert.show(1, typeName + "失败"); } }, }); }); }); // jquery.validate 自定义校验 “英文字母开头,只含有英文字母、数字和下划线” jQuery.validator.addMethod("myValid01", function(value, element) { var length = value.length; var valid = /^[a-zA-Z][a-zA-Z0-9_]*$/; return this.optional(element) || valid.test(value); }, "只支持英文字母开头,只含有英文字母、数字和下划线"); // 新增 $(".add").click(function(){ $('#addModal').modal({backdrop: false, keyboard: false}).modal('show'); }); var addModalValidate = $("#addModal .form").validate({ errorElement : 'span', errorClass : 'help-block', focusInvalid : true, rules : { jobDesc : { required : true, maxlength: 50 }, jobCron : { required : true }, executorAddress : { required : true }, executorHandler : { required : false }, alarmEmail : { required : true }, author : { required : true } }, messages : { jobDesc : { required :"请输入“描述”." }, jobCron : { required :"请输入“Cron”." }, executorAddress : { required :"请输入“执行器地址”." }, executorHandler : { required : "请输入“jobHandler”." }, alarmEmail : { required : "请输入“报警邮件”." }, author : { required : "请输入“负责人”." } }, highlight : function(element) { $(element).closest('.form-group').addClass('has-error'); }, success : function(label) { label.closest('.form-group').removeClass('has-error'); label.remove(); }, errorPlacement : function(error, element) { element.parent('div').append(error); }, submitHandler : function(form) { $.post(base_url + "/jobinfo/add", $("#addModal .form").serialize(), function(data, status) { if (data.code == "200") { ComAlert.show(1, "新增任务成功", function(){ //window.location.reload(); $('#addModal').modal('hide'); jobTable.fnDraw(); }); } else { if (data.msg) { ComAlert.show(2, data.msg); } else { ComAlert.show(2, "新增失败"); } } }); } }); $("#addModal").on('hide.bs.modal', function () { $("#addModal .form")[0].reset(); addModalValidate.resetForm(); $("#addModal .form .form-group").removeClass("has-error"); $(".remote_panel").show(); // remote $("#addModal .form input[name='executorHandler']").removeAttr("readonly"); }); // GLUE模式开启 $(".ifGLUE").click(function(){ var ifGLUE = $(this).is(':checked'); var $executorHandler = $(this).parents("form").find("input[name='executorHandler']"); var $glueSwitch = $(this).parents("form").find("input[name='glueSwitch']"); if (ifGLUE) { $executorHandler.val(""); $executorHandler.attr("readonly","readonly"); $glueSwitch.val(1); } else { $executorHandler.removeAttr("readonly"); $glueSwitch.val(0); } }); // 更新 $("#job_list").on('click', '.update',function() { // base data $("#updateModal .form input[name='jobGroup']").val($(this).parent('p').attr("jobGroup")); $("#updateModal .form input[name='jobName']").val($(this).parent('p').attr("jobName")); $("#updateModal .form input[name='jobDesc']").val($(this).parent('p').attr("jobDesc")); $("#updateModal .form input[name='jobCron']").val($(this).parent('p').attr("jobCron")); $("#updateModal .form input[name='author']").val($(this).parent('p').attr("author")); $("#updateModal .form input[name='alarmEmail']").val($(this).parent('p').attr("alarmEmail")); $("#updateModal .form input[name='executorAddress']").val($(this).parent('p').attr("executorAddress")); $("#updateModal .form input[name='executorHandler']").val($(this).parent('p').attr("executorHandler")); $("#updateModal .form input[name='executorParam']").val($(this).parent('p').attr("executorParam")); $("#updateModal .form input[name='childJobKey']").val($(this).parent('p').attr("childJobKey")); // jobGroupTitle var jobGroupTitle = $("#addModal .form select[name='jobGroup']").find("option[value='" + $(this).parent('p').attr("jobGroup") + "']").text(); $("#updateModal .form .jobGroupTitle").val(jobGroupTitle); // glueSwitch var glueSwitch = $(this).parent('p').attr("glueSwitch"); $("#updateModal .form input[name='glueSwitch']").val(glueSwitch); var $ifGLUE = $("#updateModal .form .ifGLUE"); var $executorHandler = $("#updateModal .form input[name='executorHandler']"); if (glueSwitch == 1) { $ifGLUE.attr("checked", true); $executorHandler.val(""); $executorHandler.attr("readonly","readonly"); } else { $ifGLUE.attr("checked", false); $executorHandler.removeAttr("readonly"); } // show $('#updateModal').modal({backdrop: false, keyboard: false}).modal('show'); }); var updateModalValidate = $("#updateModal .form").validate({ errorElement : 'span', errorClass : 'help-block', focusInvalid : true, rules : { jobDesc : { required : true, maxlength: 50 }, jobCron : { required : true }, executorAddress : { required : true }, executorHandler : { required : false }, alarmEmail : { required : true }, author : { required : true } }, messages : { jobDesc : { required :"请输入“描述”." }, jobCron : { required :"请输入“Cron”." }, executorAddress : { required :"请输入“执行器地址”." }, executorHandler : { required : "请输入“jobHandler”." }, alarmEmail : { required : "请输入“报警邮件”." }, author : { required : "请输入“负责人”." } }, highlight : function(element) { $(element).closest('.form-group').addClass('has-error'); }, success : function(label) { label.closest('.form-group').removeClass('has-error'); label.remove(); }, errorPlacement : function(error, element) { element.parent('div').append(error); }, submitHandler : function(form) { // post $.post(base_url + "/jobinfo/reschedule", $("#updateModal .form").serialize(), function(data, status) { if (data.code == "200") { ComAlert.show(1, "更新成功", function(){ //window.location.reload(); $('#updateModal').modal('hide'); jobTable.fnDraw(); }); } else { if (data.msg) { ComAlert.show(2, data.msg); } else { ComAlert.show(2, "更新失败"); } } }); } }); $("#updateModal").on('hide.bs.modal', function () { $("#updateModal .form")[0].reset() }); /* // 新增-添加参数 $("#addModal .addParam").on('click', function () { var html = '
'+ ''+ '
'+ '
'+ '
'; $(this).parents('.form-group').parent().append(html); $("#addModal .removeParam").on('click', function () { $(this).parents('.form-group').remove(); }); }); */ });