mirror of
https://gitee.com/dromara/RuoYi-Vue-Plus.git
synced 2026-09-22 10:59:58 +08:00
740 lines
27 KiB
JavaScript
740 lines
27 KiB
JavaScript
$(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.triggerStatus = $('#triggerStatus').val();
|
||
obj.jobDesc = $('#jobDesc').val();
|
||
obj.executorHandler = $('#executorHandler').val();
|
||
obj.author = $('#author').val();
|
||
obj.start = d.start;
|
||
obj.length = d.length;
|
||
return obj;
|
||
}
|
||
},
|
||
"searching": false,
|
||
"ordering": false,
|
||
//"scrollX": true, // scroll x,close self-adaption
|
||
"columns": [
|
||
{
|
||
"data": 'id',
|
||
"bSortable": false,
|
||
"visible" : true,
|
||
"width":'7%'
|
||
},
|
||
{
|
||
"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": 'jobDesc',
|
||
"visible" : true,
|
||
"width":'25%'
|
||
},
|
||
{
|
||
"data": 'scheduleType',
|
||
"visible" : true,
|
||
"width":'13%',
|
||
"render": function ( data, type, row ) {
|
||
if (row.scheduleConf) {
|
||
return row.scheduleType + ':'+ row.scheduleConf;
|
||
} else {
|
||
return row.scheduleType;
|
||
}
|
||
}
|
||
},
|
||
{
|
||
"data": 'glueType',
|
||
"width":'25%',
|
||
"visible" : true,
|
||
"render": function ( data, type, row ) {
|
||
var glueTypeTitle = findGlueTypeTitle(row.glueType);
|
||
if (row.executorHandler) {
|
||
return glueTypeTitle +":" + row.executorHandler;
|
||
} else {
|
||
return glueTypeTitle;
|
||
}
|
||
}
|
||
},
|
||
{ "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, "width":'10%'},
|
||
{ "data": 'alarmEmail', "visible" : false},
|
||
{
|
||
"data": 'triggerStatus',
|
||
"width":'10%',
|
||
"visible" : true,
|
||
"render": function ( data, type, row ) {
|
||
// status
|
||
if (1 == data) {
|
||
return '<small class="label label-success" >RUNNING</small>';
|
||
} else {
|
||
return '<small class="label label-default" >STOP</small>';
|
||
}
|
||
return data;
|
||
}
|
||
},
|
||
{
|
||
"data": I18n.system_opt ,
|
||
"width":'10%',
|
||
"render": function ( data, type, row ) {
|
||
return function(){
|
||
|
||
// status
|
||
var start_stop_div = "";
|
||
if (1 == row.triggerStatus ) {
|
||
start_stop_div = '<li><a href="javascript:void(0);" class="job_operate" _type="job_pause" >'+ I18n.jobinfo_opt_stop +'</a></li>\n';
|
||
} else {
|
||
start_stop_div = '<li><a href="javascript:void(0);" class="job_operate" _type="job_resume" >'+ I18n.jobinfo_opt_start +'</a></li>\n';
|
||
}
|
||
|
||
// job_next_time_html
|
||
var job_next_time_html = '';
|
||
if (row.scheduleType == 'CRON' || row.scheduleType == 'FIX_RATE') {
|
||
job_next_time_html = '<li><a href="javascript:void(0);" class="job_next_time" >' + I18n.jobinfo_opt_next_time + '</a></li>\n';
|
||
}
|
||
|
||
// log url
|
||
var logHref = base_url +'/joblog?jobId='+ row.id;
|
||
|
||
// code url
|
||
var codeBtn = "";
|
||
if ('BEAN' != row.glueType) {
|
||
var codeUrl = base_url +'/jobcode?jobId='+ row.id;
|
||
codeBtn = '<li><a href="'+ codeUrl +'" target="_blank" >GLUE IDE</a></li>\n';
|
||
codeBtn += '<li class="divider"></li>\n';
|
||
}
|
||
|
||
// data
|
||
tableData['key'+row.id] = row;
|
||
|
||
// opt
|
||
var html = '<div class="btn-group">\n' +
|
||
' <button type="button" class="btn btn-primary btn-sm">'+ I18n.system_opt +'</button>\n' +
|
||
' <button type="button" class="btn btn-primary btn-sm dropdown-toggle" data-toggle="dropdown">\n' +
|
||
' <span class="caret"></span>\n' +
|
||
' <span class="sr-only">Toggle Dropdown</span>\n' +
|
||
' </button>\n' +
|
||
' <ul class="dropdown-menu" role="menu" _id="'+ row.id +'" >\n' +
|
||
' <li><a href="javascript:void(0);" class="job_trigger" >'+ I18n.jobinfo_opt_run +'</a></li>\n' +
|
||
' <li><a href="'+ logHref +'">'+ I18n.jobinfo_opt_log +'</a></li>\n' +
|
||
' <li><a href="javascript:void(0);" class="job_registryinfo" >' + I18n.jobinfo_opt_registryinfo + '</a></li>\n' +
|
||
job_next_time_html +
|
||
' <li class="divider"></li>\n' +
|
||
codeBtn +
|
||
start_stop_div +
|
||
' <li><a href="javascript:void(0);" class="update" >'+ I18n.system_opt_edit +'</a></li>\n' +
|
||
' <li><a href="javascript:void(0);" class="job_operate" _type="job_del" >'+ I18n.system_opt_del +'</a></li>\n' +
|
||
' <li><a href="javascript:void(0);" class="job_copy" >'+ I18n.system_opt_copy +'</a></li>\n' +
|
||
' </ul>\n' +
|
||
' </div>';
|
||
|
||
return html;
|
||
};
|
||
}
|
||
}
|
||
],
|
||
"language" : {
|
||
"sProcessing" : I18n.dataTable_sProcessing ,
|
||
"sLengthMenu" : I18n.dataTable_sLengthMenu ,
|
||
"sZeroRecords" : I18n.dataTable_sZeroRecords ,
|
||
"sInfo" : I18n.dataTable_sInfo ,
|
||
"sInfoEmpty" : I18n.dataTable_sInfoEmpty ,
|
||
"sInfoFiltered" : I18n.dataTable_sInfoFiltered ,
|
||
"sInfoPostFix" : "",
|
||
"sSearch" : I18n.dataTable_sSearch ,
|
||
"sUrl" : "",
|
||
"sEmptyTable" : I18n.dataTable_sEmptyTable ,
|
||
"sLoadingRecords" : I18n.dataTable_sLoadingRecords ,
|
||
"sInfoThousands" : ",",
|
||
"oPaginate" : {
|
||
"sFirst" : I18n.dataTable_sFirst ,
|
||
"sPrevious" : I18n.dataTable_sPrevious ,
|
||
"sNext" : I18n.dataTable_sNext ,
|
||
"sLast" : I18n.dataTable_sLast
|
||
},
|
||
"oAria" : {
|
||
"sSortAscending" : I18n.dataTable_sSortAscending ,
|
||
"sSortDescending" : I18n.dataTable_sSortDescending
|
||
}
|
||
}
|
||
});
|
||
|
||
// table data
|
||
var tableData = {};
|
||
|
||
// search btn
|
||
$('#searchBtn').on('click', function(){
|
||
jobTable.fnDraw();
|
||
});
|
||
|
||
// jobGroup change
|
||
$('#jobGroup').on('change', function(){
|
||
//reload
|
||
var jobGroup = $('#jobGroup').val();
|
||
window.location.href = base_url + "/jobinfo?jobGroup=" + jobGroup;
|
||
});
|
||
|
||
// 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 = I18n.jobinfo_opt_stop ;
|
||
url = base_url + "/jobinfo/stop";
|
||
needFresh = true;
|
||
} else if ("job_resume" == type) {
|
||
typeName = I18n.jobinfo_opt_start ;
|
||
url = base_url + "/jobinfo/start";
|
||
needFresh = true;
|
||
} else if ("job_del" == type) {
|
||
typeName = I18n.system_opt_del ;
|
||
url = base_url + "/jobinfo/remove";
|
||
needFresh = true;
|
||
} else {
|
||
return;
|
||
}
|
||
|
||
var id = $(this).parents('ul').attr("_id");
|
||
|
||
layer.confirm( I18n.system_ok + typeName + '?', {
|
||
icon: 3,
|
||
title: I18n.system_tips ,
|
||
btn: [ I18n.system_ok, I18n.system_cancel ]
|
||
}, function(index){
|
||
layer.close(index);
|
||
|
||
$.ajax({
|
||
type : 'POST',
|
||
url : url,
|
||
data : {
|
||
"id" : id
|
||
},
|
||
dataType : "json",
|
||
success : function(data){
|
||
if (data.code == 200) {
|
||
layer.msg( typeName + I18n.system_success );
|
||
if (needFresh) {
|
||
//window.location.reload();
|
||
jobTable.fnDraw(false);
|
||
}
|
||
} else {
|
||
layer.msg( data.msg || typeName + I18n.system_fail );
|
||
}
|
||
}
|
||
});
|
||
});
|
||
});
|
||
|
||
// job trigger
|
||
$("#job_list").on('click', '.job_trigger',function() {
|
||
var id = $(this).parents('ul').attr("_id");
|
||
var row = tableData['key'+id];
|
||
|
||
$("#jobTriggerModal .form input[name='id']").val( row.id );
|
||
$("#jobTriggerModal .form textarea[name='executorParam']").val( row.executorParam );
|
||
|
||
$('#jobTriggerModal').modal({backdrop: false, keyboard: false}).modal('show');
|
||
});
|
||
$("#jobTriggerModal .ok").on('click',function() {
|
||
$.ajax({
|
||
type : 'POST',
|
||
url : base_url + "/jobinfo/trigger",
|
||
data : {
|
||
"id" : $("#jobTriggerModal .form input[name='id']").val(),
|
||
"executorParam" : $("#jobTriggerModal .textarea[name='executorParam']").val(),
|
||
"addressList" : $("#jobTriggerModal .textarea[name='addressList']").val()
|
||
},
|
||
dataType : "json",
|
||
success : function(data){
|
||
if (data.code == 200) {
|
||
$('#jobTriggerModal').modal('hide');
|
||
|
||
layer.msg( I18n.jobinfo_opt_run + I18n.system_success );
|
||
} else {
|
||
layer.msg( data.msg || I18n.jobinfo_opt_run + I18n.system_fail );
|
||
}
|
||
}
|
||
});
|
||
});
|
||
$("#jobTriggerModal").on('hide.bs.modal', function () {
|
||
$("#jobTriggerModal .form")[0].reset();
|
||
});
|
||
|
||
|
||
// job registryinfo
|
||
$("#job_list").on('click', '.job_registryinfo',function() {
|
||
var id = $(this).parents('ul').attr("_id");
|
||
var row = tableData['key'+id];
|
||
|
||
var jobGroup = row.jobGroup;
|
||
|
||
$.ajax({
|
||
type : 'POST',
|
||
url : base_url + "/jobgroup/loadById",
|
||
data : {
|
||
"id" : jobGroup
|
||
},
|
||
dataType : "json",
|
||
success : function(data){
|
||
|
||
var html = '<div>';
|
||
if (data.code == 200 && data.content.registryList) {
|
||
for (var index in data.content.registryList) {
|
||
html += (parseInt(index)+1) + '. <span class="badge bg-green" >' + data.content.registryList[index] + '</span><br>';
|
||
}
|
||
}
|
||
html += '</div>';
|
||
|
||
layer.open({
|
||
title: I18n.jobinfo_opt_registryinfo ,
|
||
btn: [ I18n.system_ok ],
|
||
content: html
|
||
});
|
||
|
||
}
|
||
});
|
||
|
||
});
|
||
|
||
// job_next_time
|
||
$("#job_list").on('click', '.job_next_time',function() {
|
||
var id = $(this).parents('ul').attr("_id");
|
||
var row = tableData['key'+id];
|
||
|
||
$.ajax({
|
||
type : 'POST',
|
||
url : base_url + "/jobinfo/nextTriggerTime",
|
||
data : {
|
||
"scheduleType" : row.scheduleType,
|
||
"scheduleConf" : row.scheduleConf
|
||
},
|
||
dataType : "json",
|
||
success : function(data){
|
||
|
||
if (data.code != 200) {
|
||
layer.open({
|
||
title: I18n.jobinfo_opt_next_time ,
|
||
btn: [ I18n.system_ok ],
|
||
content: data.msg
|
||
});
|
||
} else {
|
||
var html = '<center>';
|
||
if (data.code == 200 && data.content) {
|
||
for (var index in data.content) {
|
||
html += '<span>' + data.content[index] + '</span><br>';
|
||
}
|
||
}
|
||
html += '</center>';
|
||
|
||
layer.open({
|
||
title: I18n.jobinfo_opt_next_time ,
|
||
btn: [ I18n.system_ok ],
|
||
content: html
|
||
});
|
||
}
|
||
|
||
}
|
||
});
|
||
|
||
});
|
||
|
||
// add
|
||
$(".add").click(function(){
|
||
|
||
// init-cronGen
|
||
$("#addModal .form input[name='schedule_conf_CRON']").show().siblings().remove();
|
||
$("#addModal .form input[name='schedule_conf_CRON']").cronGen({});
|
||
|
||
// 》init scheduleType
|
||
$("#updateModal .form select[name=scheduleType]").change();
|
||
|
||
// 》init glueType
|
||
$("#updateModal .form select[name=glueType]").change();
|
||
|
||
$('#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
|
||
},
|
||
author : {
|
||
required : true
|
||
}/*,
|
||
executorTimeout : {
|
||
digits:true
|
||
},
|
||
executorFailRetryCount : {
|
||
digits:true
|
||
}*/
|
||
},
|
||
messages : {
|
||
jobDesc : {
|
||
required : I18n.system_please_input + I18n.jobinfo_field_jobdesc
|
||
},
|
||
author : {
|
||
required : I18n.system_please_input + I18n.jobinfo_field_author
|
||
}/*,
|
||
executorTimeout : {
|
||
digits: I18n.system_please_input + I18n.system_digits
|
||
},
|
||
executorFailRetryCount : {
|
||
digits: I18n.system_please_input + I18n.system_digits
|
||
}*/
|
||
},
|
||
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) {
|
||
|
||
// process executorTimeout+executorFailRetryCount
|
||
var executorTimeout = $("#addModal .form input[name='executorTimeout']").val();
|
||
if(!/^\d+$/.test(executorTimeout)) {
|
||
executorTimeout = 0;
|
||
}
|
||
$("#addModal .form input[name='executorTimeout']").val(executorTimeout);
|
||
var executorFailRetryCount = $("#addModal .form input[name='executorFailRetryCount']").val();
|
||
if(!/^\d+$/.test(executorFailRetryCount)) {
|
||
executorFailRetryCount = 0;
|
||
}
|
||
$("#addModal .form input[name='executorFailRetryCount']").val(executorFailRetryCount);
|
||
|
||
// process schedule_conf
|
||
var scheduleType = $("#addModal .form select[name='scheduleType']").val();
|
||
var scheduleConf;
|
||
if (scheduleType == 'CRON') {
|
||
scheduleConf = $("#addModal .form input[name='cronGen_display']").val();
|
||
} else if (scheduleType == 'FIX_RATE') {
|
||
scheduleConf = $("#addModal .form input[name='schedule_conf_FIX_RATE']").val();
|
||
} else if (scheduleType == 'FIX_DELAY') {
|
||
scheduleConf = $("#addModal .form input[name='schedule_conf_FIX_DELAY']").val();
|
||
}
|
||
$("#addModal .form input[name='scheduleConf']").val( scheduleConf );
|
||
|
||
$.post(base_url + "/jobinfo/add", $("#addModal .form").serialize(), function(data, status) {
|
||
if (data.code == "200") {
|
||
$('#addModal').modal('hide');
|
||
layer.open({
|
||
title: I18n.system_tips ,
|
||
btn: [ I18n.system_ok ],
|
||
content: I18n.system_add_suc ,
|
||
icon: '1',
|
||
end: function(layero, index){
|
||
jobTable.fnDraw();
|
||
//window.location.reload();
|
||
}
|
||
});
|
||
} else {
|
||
layer.open({
|
||
title: I18n.system_tips ,
|
||
btn: [ I18n.system_ok ],
|
||
content: (data.msg || I18n.system_add_fail),
|
||
icon: '2'
|
||
});
|
||
}
|
||
});
|
||
}
|
||
});
|
||
$("#addModal").on('hide.bs.modal', function () {
|
||
addModalValidate.resetForm();
|
||
$("#addModal .form")[0].reset();
|
||
$("#addModal .form .form-group").removeClass("has-error");
|
||
$(".remote_panel").show(); // remote
|
||
|
||
$("#addModal .form input[name='executorHandler']").removeAttr("readonly");
|
||
});
|
||
|
||
// scheduleType change
|
||
$(".scheduleType").change(function(){
|
||
var scheduleType = $(this).val();
|
||
$(this).parents("form").find(".schedule_conf").hide();
|
||
$(this).parents("form").find(".schedule_conf_" + scheduleType).show();
|
||
|
||
});
|
||
|
||
// glueType change
|
||
$(".glueType").change(function(){
|
||
// executorHandler
|
||
var $executorHandler = $(this).parents("form").find("input[name='executorHandler']");
|
||
var glueType = $(this).val();
|
||
if ('BEAN' != glueType) {
|
||
$executorHandler.val("");
|
||
$executorHandler.attr("readonly","readonly");
|
||
} else {
|
||
$executorHandler.removeAttr("readonly");
|
||
}
|
||
});
|
||
|
||
$("#addModal .glueType").change(function(){
|
||
// glueSource
|
||
var glueType = $(this).val();
|
||
if ('GLUE_GROOVY'==glueType){
|
||
$("#addModal .form textarea[name='glueSource']").val( $("#addModal .form .glueSource_java").val() );
|
||
} else if ('GLUE_SHELL'==glueType){
|
||
$("#addModal .form textarea[name='glueSource']").val( $("#addModal .form .glueSource_shell").val() );
|
||
} else if ('GLUE_PYTHON'==glueType){
|
||
$("#addModal .form textarea[name='glueSource']").val( $("#addModal .form .glueSource_python").val() );
|
||
} else if ('GLUE_PHP'==glueType){
|
||
$("#addModal .form textarea[name='glueSource']").val( $("#addModal .form .glueSource_php").val() );
|
||
} else if ('GLUE_NODEJS'==glueType){
|
||
$("#addModal .form textarea[name='glueSource']").val( $("#addModal .form .glueSource_nodejs").val() );
|
||
} else if ('GLUE_POWERSHELL'==glueType){
|
||
$("#addModal .form textarea[name='glueSource']").val( $("#addModal .form .glueSource_powershell").val() );
|
||
} else {
|
||
$("#addModal .form textarea[name='glueSource']").val("");
|
||
}
|
||
});
|
||
|
||
// update
|
||
$("#job_list").on('click', '.update',function() {
|
||
|
||
var id = $(this).parents('ul').attr("_id");
|
||
var row = tableData['key'+id];
|
||
|
||
// fill base
|
||
$("#updateModal .form input[name='id']").val( row.id );
|
||
$('#updateModal .form select[name=jobGroup] option[value='+ row.jobGroup +']').prop('selected', true);
|
||
$("#updateModal .form input[name='jobDesc']").val( row.jobDesc );
|
||
$("#updateModal .form input[name='author']").val( row.author );
|
||
$("#updateModal .form input[name='alarmEmail']").val( row.alarmEmail );
|
||
|
||
// fill trigger
|
||
$('#updateModal .form select[name=scheduleType] option[value='+ row.scheduleType +']').prop('selected', true);
|
||
$("#updateModal .form input[name='scheduleConf']").val( row.scheduleConf );
|
||
if (row.scheduleType == 'CRON') {
|
||
$("#updateModal .form input[name='schedule_conf_CRON']").val( row.scheduleConf );
|
||
} else if (row.scheduleType == 'FIX_RATE') {
|
||
$("#updateModal .form input[name='schedule_conf_FIX_RATE']").val( row.scheduleConf );
|
||
} else if (row.scheduleType == 'FIX_DELAY') {
|
||
$("#updateModal .form input[name='schedule_conf_FIX_DELAY']").val( row.scheduleConf );
|
||
}
|
||
|
||
// 》init scheduleType
|
||
$("#updateModal .form select[name=scheduleType]").change();
|
||
|
||
// fill job
|
||
$('#updateModal .form select[name=glueType] option[value='+ row.glueType +']').prop('selected', true);
|
||
$("#updateModal .form input[name='executorHandler']").val( row.executorHandler );
|
||
$("#updateModal .form textarea[name='executorParam']").val( row.executorParam );
|
||
|
||
// 》init glueType
|
||
$("#updateModal .form select[name=glueType]").change();
|
||
|
||
// 》init-cronGen
|
||
$("#updateModal .form input[name='schedule_conf_CRON']").show().siblings().remove();
|
||
$("#updateModal .form input[name='schedule_conf_CRON']").cronGen({});
|
||
|
||
// fill advanced
|
||
$('#updateModal .form select[name=executorRouteStrategy] option[value='+ row.executorRouteStrategy +']').prop('selected', true);
|
||
$("#updateModal .form input[name='childJobId']").val( row.childJobId );
|
||
$('#updateModal .form select[name=misfireStrategy] option[value='+ row.misfireStrategy +']').prop('selected', true);
|
||
$('#updateModal .form select[name=executorBlockStrategy] option[value='+ row.executorBlockStrategy +']').prop('selected', true);
|
||
$("#updateModal .form input[name='executorTimeout']").val( row.executorTimeout );
|
||
$("#updateModal .form input[name='executorFailRetryCount']").val( row.executorFailRetryCount );
|
||
|
||
// 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
|
||
},
|
||
author : {
|
||
required : true
|
||
}
|
||
},
|
||
messages : {
|
||
jobDesc : {
|
||
required : I18n.system_please_input + I18n.jobinfo_field_jobdesc
|
||
},
|
||
author : {
|
||
required : I18n.system_please_input + I18n.jobinfo_field_author
|
||
}
|
||
},
|
||
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) {
|
||
|
||
// process executorTimeout + executorFailRetryCount
|
||
var executorTimeout = $("#updateModal .form input[name='executorTimeout']").val();
|
||
if(!/^\d+$/.test(executorTimeout)) {
|
||
executorTimeout = 0;
|
||
}
|
||
$("#updateModal .form input[name='executorTimeout']").val(executorTimeout);
|
||
var executorFailRetryCount = $("#updateModal .form input[name='executorFailRetryCount']").val();
|
||
if(!/^\d+$/.test(executorFailRetryCount)) {
|
||
executorFailRetryCount = 0;
|
||
}
|
||
$("#updateModal .form input[name='executorFailRetryCount']").val(executorFailRetryCount);
|
||
|
||
|
||
// process schedule_conf
|
||
var scheduleType = $("#updateModal .form select[name='scheduleType']").val();
|
||
var scheduleConf;
|
||
if (scheduleType == 'CRON') {
|
||
scheduleConf = $("#updateModal .form input[name='cronGen_display']").val();
|
||
} else if (scheduleType == 'FIX_RATE') {
|
||
scheduleConf = $("#updateModal .form input[name='schedule_conf_FIX_RATE']").val();
|
||
} else if (scheduleType == 'FIX_DELAY') {
|
||
scheduleConf = $("#updateModal .form input[name='schedule_conf_FIX_DELAY']").val();
|
||
}
|
||
$("#updateModal .form input[name='scheduleConf']").val( scheduleConf );
|
||
|
||
// post
|
||
$.post(base_url + "/jobinfo/update", $("#updateModal .form").serialize(), function(data, status) {
|
||
if (data.code == "200") {
|
||
$('#updateModal').modal('hide');
|
||
layer.open({
|
||
title: I18n.system_tips ,
|
||
btn: [ I18n.system_ok ],
|
||
content: I18n.system_update_suc ,
|
||
icon: '1',
|
||
end: function(layero, index){
|
||
//window.location.reload();
|
||
jobTable.fnDraw();
|
||
}
|
||
});
|
||
} else {
|
||
layer.open({
|
||
title: I18n.system_tips ,
|
||
btn: [ I18n.system_ok ],
|
||
content: (data.msg || I18n.system_update_fail ),
|
||
icon: '2'
|
||
});
|
||
}
|
||
});
|
||
}
|
||
});
|
||
$("#updateModal").on('hide.bs.modal', function () {
|
||
updateModalValidate.resetForm();
|
||
$("#updateModal .form")[0].reset();
|
||
$("#updateModal .form .form-group").removeClass("has-error");
|
||
});
|
||
|
||
/**
|
||
* find title by name, GlueType
|
||
*/
|
||
function findGlueTypeTitle(glueType) {
|
||
var glueTypeTitle;
|
||
$("#addModal .form select[name=glueType] option").each(function () {
|
||
var name = $(this).val();
|
||
var title = $(this).text();
|
||
if (glueType == name) {
|
||
glueTypeTitle = title;
|
||
return false
|
||
}
|
||
});
|
||
return glueTypeTitle;
|
||
}
|
||
|
||
// job_copy
|
||
$("#job_list").on('click', '.job_copy',function() {
|
||
|
||
var id = $(this).parents('ul').attr("_id");
|
||
var row = tableData['key'+id];
|
||
|
||
// fill base
|
||
$('#addModal .form select[name=jobGroup] option[value='+ row.jobGroup +']').prop('selected', true);
|
||
$("#addModal .form input[name='jobDesc']").val( row.jobDesc );
|
||
$("#addModal .form input[name='author']").val( row.author );
|
||
$("#addModal .form input[name='alarmEmail']").val( row.alarmEmail );
|
||
|
||
// fill trigger
|
||
$('#addModal .form select[name=scheduleType] option[value='+ row.scheduleType +']').prop('selected', true);
|
||
$("#addModal .form input[name='scheduleConf']").val( row.scheduleConf );
|
||
if (row.scheduleType == 'CRON') {
|
||
$("#addModal .form input[name='schedule_conf_CRON']").val( row.scheduleConf );
|
||
} else if (row.scheduleType == 'FIX_RATE') {
|
||
$("#addModal .form input[name='schedule_conf_FIX_RATE']").val( row.scheduleConf );
|
||
} else if (row.scheduleType == 'FIX_DELAY') {
|
||
$("#addModal .form input[name='schedule_conf_FIX_DELAY']").val( row.scheduleConf );
|
||
}
|
||
|
||
// 》init scheduleType
|
||
$("#addModal .form select[name=scheduleType]").change();
|
||
|
||
// fill job
|
||
$('#addModal .form select[name=glueType] option[value='+ row.glueType +']').prop('selected', true);
|
||
$("#addModal .form input[name='executorHandler']").val( row.executorHandler );
|
||
$("#addModal .form textarea[name='executorParam']").val( row.executorParam );
|
||
|
||
// 》init glueType
|
||
$("#addModal .form select[name=glueType]").change();
|
||
|
||
// 》init-cronGen
|
||
$("#addModal .form input[name='schedule_conf_CRON']").show().siblings().remove();
|
||
$("#addModal .form input[name='schedule_conf_CRON']").cronGen({});
|
||
|
||
// fill advanced
|
||
$('#addModal .form select[name=executorRouteStrategy] option[value='+ row.executorRouteStrategy +']').prop('selected', true);
|
||
$("#addModal .form input[name='childJobId']").val( row.childJobId );
|
||
$('#addModal .form select[name=misfireStrategy] option[value='+ row.misfireStrategy +']').prop('selected', true);
|
||
$('#addModal .form select[name=executorBlockStrategy] option[value='+ row.executorBlockStrategy +']').prop('selected', true);
|
||
$("#addModal .form input[name='executorTimeout']").val( row.executorTimeout );
|
||
$("#addModal .form input[name='executorFailRetryCount']").val( row.executorFailRetryCount );
|
||
|
||
// show
|
||
$('#addModal').modal({backdrop: false, keyboard: false}).modal('show');
|
||
});
|
||
|
||
});
|