| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| function validate() { |
| $("#job-form").bootstrapValidator({ |
| message: "This value is not valid", |
| feedbackIcons: { |
| valid: "glyphicon glyphicon-ok", |
| invalid: "glyphicon glyphicon-remove", |
| validating: "glyphicon glyphicon-refresh" |
| }, |
| fields: { |
| jobClass: { |
| validators: { |
| notEmpty: { |
| message: $.i18n.prop("job-class-not-null") |
| }, |
| regexp: { |
| regexp: /^[\w\.]+$/, |
| message: $.i18n.prop("job-class-regexp-limit") |
| } |
| } |
| }, |
| jobName: { |
| jobNameCheck: true, |
| validators: { |
| notEmpty: { |
| message: $.i18n.prop("job-name-not-null") |
| }, |
| stringLength: { |
| max: 100, |
| message: $.i18n.prop("job-name-length-limit") |
| }, |
| callback: { |
| message: $.i18n.prop("job-name-exists"), |
| callback: function () { |
| var jobName = $("#job-name").val(); |
| var result = true; |
| if ("" !== jobName) { |
| $.ajax({ |
| url: "/api/job/jobs/" + jobName, |
| contentType: "application/json", |
| async: false, |
| success: function(data) { |
| if (null !== data) { |
| result = false; |
| } |
| } |
| }); |
| } |
| return result; |
| } |
| } |
| } |
| }, |
| jobAppName: { |
| validators: { |
| callback: { |
| message: $.i18n.prop("app-name-unregistered"), |
| callback: function (validator) { |
| var appName = $("#job-app-name").val(); |
| var result = false; |
| $.ajax({ |
| url: "/api/app/" + appName, |
| contentType: "application/json", |
| async: false, |
| success: function(data) { |
| if (null !== data) { |
| result = true; |
| } |
| } |
| }); |
| return result; |
| } |
| } |
| } |
| }, |
| cron: { |
| validators: { |
| stringLength: { |
| max: 40, |
| message: $.i18n.prop("job-cron-length-limit") |
| }, |
| notEmpty: { |
| message: $.i18n.prop("job-cron-not-null") |
| } |
| } |
| }, |
| cpuCount: { |
| validators: { |
| notEmpty: { |
| message: $.i18n.prop("job-cpu-count-not-null") |
| }, |
| regexp: { |
| regexp: /^(-?\d+)(\.\d+)?$/, |
| message: $.i18n.prop("job-cpu-count-regexp-limit") |
| } |
| } |
| }, |
| jobMemory: { |
| validators: { |
| notEmpty: { |
| message: $.i18n.prop("job-memory-not-null") |
| } |
| } |
| }, |
| shardingTotalCount: { |
| validators: { |
| notEmpty: { |
| message: $.i18n.prop("job-sharding-count-not-null") |
| } |
| } |
| }, |
| beanName: { |
| validators: { |
| } |
| }, |
| applicationContext: { |
| validators: { |
| } |
| }, |
| scriptCommandLine: { |
| validators: { |
| notEmpty: { |
| message: $.i18n.prop("job-script-command-line-not-null") |
| } |
| } |
| }, |
| shardingItemParameters: { |
| validators: { |
| regexp: { |
| regexp: /^(\d+)=(\w+)(,(\d+)=(\w+))*$/, |
| message: $.i18n.prop("job-sharding-item-parameters-regexp-limit") |
| } |
| } |
| } |
| } |
| }); |
| } |
| |
| $("#sharding-item-parameters").blur(function() { |
| if($("" == "#sharding-item-parameters").val()) { |
| $("#job-form").data("bootstrapValidator").enableFieldValidators("shardingItemParameters", false); |
| } else { |
| $("#job-form").data("bootstrapValidator").enableFieldValidators("shardingItemParameters", true); |
| } |
| }); |
| |
| $("#sharding-item-parameters").focus(function() { |
| $("#job-form").data('bootstrapValidator').enableFieldValidators("shardingItemParameters", true); |
| }); |
| |
| function submitConfirm(type, url, modal) { |
| $("#save-button").on("click", function() { |
| if($("" == "#sharding-item-parameters").val() || null === $("#sharding-item-parameters").val()) { |
| $("#job-form").data("bootstrapValidator").enableFieldValidators("shardingItemParameters", false); |
| } |
| var bootstrapValidator = $("#job-form").data("bootstrapValidator"); |
| bootstrapValidator.validate(); |
| if(bootstrapValidator.isValid()) { |
| var beanName = $("#bean-name").val(); |
| var applicationContext = $("#application-context").val(); |
| if(0 === beanName.length && 0 === applicationContext.length) { |
| submitJobForm(type, url, modal); |
| } else if(null !== applicationContext && 0 === beanName.length) { |
| $("#delete-data—bean-name").modal(); |
| setTimeout(function() { |
| $("#delete-data—bean-name").modal("hide"); |
| }, 3000); |
| } else if(null !== beanName && 0 === applicationContext.length) { |
| $("#delete-data-application-context").modal(); |
| setTimeout(function() { |
| $("#delete-data-application-context").modal("hide"); |
| }, 3000); |
| } else { |
| submitJobForm(type, url, modal); |
| } |
| } |
| }); |
| } |
| |
| function submitJobForm(type, url, modal) { |
| $.ajax({ |
| type: type, |
| dataType: "json", |
| data: JSON.stringify(getJob()), |
| url: url, |
| contentType: "application/json", |
| success: function(data) { |
| modal.modal("hide"); |
| $(".modal-backdrop").remove(); |
| $("body").removeClass("modal-open"); |
| $("#content-right").load("/html/job/jobs_overview.html"); |
| refreshJobNavTag(); |
| } |
| }); |
| } |
| |
| function dataControl() { |
| $("#job-type").change(function() { |
| var jobType = $("#job-type").val(); |
| if("SIMPLE" === jobType) { |
| $("#job-class-model").show(); |
| $("#streaming-process").hide(); |
| $("#streaming-process-box").hide(); |
| $("#bootstrap-script-div").hide(); |
| } else if("DATAFLOW" === jobType) { |
| $("#job-class-model").show(); |
| $("#streaming-process").show(); |
| $("#streaming-process-box").show(); |
| $("#bootstrap-script-div").hide(); |
| } else if("SCRIPT" === jobType) { |
| $("#job-class-model").hide(); |
| $("#streaming-process").hide(); |
| $("#streaming-process-box").hide(); |
| $("#bootstrap-script-div").show(); |
| } |
| }); |
| } |
| |
| function getJob() { |
| return { |
| jobName: $("#job-name").val(), |
| appName: $("#job-app-name").val(), |
| jobClass: $("#job-class").val(), |
| cron: $("#cron").val(), |
| jobType: $("#job-type").val(), |
| cpuCount: $("#cpu-count").val(), |
| jobExecutionType: $("#job-execution-type").val(), |
| memoryMB: $("#job-memory").val(), |
| bootstrapScript: $("#bootstrap-script").val(), |
| beanName: $("#bean-name").val(), |
| shardingTotalCount: $("#sharding-total-count").val(), |
| jobParameter: $("#job-parameter").val(), |
| failover: $("#failover").prop("checked"), |
| misfire: $("#misfire").prop("checked"), |
| streamingProcess: $("#streaming-process").prop("checked"), |
| applicationContext: $("#application-context").val(), |
| shardingItemParameters: $("#sharding-item-parameters").val(), |
| scriptCommandLine: $("#script-command-line").val(), |
| description: $("#description").val() |
| }; |
| } |