Skip to content
项目
群组
代码片段
帮助
正在加载...
登录
切换导航
X
XXL-JOB
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
靳帅
XXL-JOB
Commits
844f51c5
提交
844f51c5
authored
1月 19, 2018
作者:
xuxueli
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
任务操作界面,界面操作完整国际化迁移
上级
8e0f6864
显示空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
252 行增加
和
169 行删除
+252
-169
message.properties
xxl-job-admin/src/main/resources/i18n/message.properties
+78
-1
jobinfo.index.ftl
...rc/main/webapp/WEB-INF/template/jobinfo/jobinfo.index.ftl
+70
-76
index.js
xxl-job-admin/src/main/webapp/static/js/index.js
+29
-28
jobinfo.index.1.js
xxl-job-admin/src/main/webapp/static/js/jobinfo.index.1.js
+75
-64
没有找到文件。
xxl-job-admin/src/main/resources/i18n/message.properties
浏览文件 @
844f51c5
...
...
@@ -6,6 +6,49 @@ admin_version=1.9.1(快照版本)
system_tips
=
系统提示
system_ok
=
确定
system_close
=
关闭
system_save
=
保存
system_cancel
=
取消
system_search
=
搜索
system_status
=
状态
system_opt
=
操作
system_please_input
=
请输入
system_success
=
成功
system_fail
=
失败
system_add_suc
=
新增成功
system_add_fail
=
新增失败
system_update_suc
=
更新成功
system_update_fail
=
更新失败
## daterangepicker
daterangepicker_ranges_today
=
今日
daterangepicker_ranges_yesterday
=
昨日
daterangepicker_ranges_this_month
=
本月
daterangepicker_ranges_last_month
=
上个月
daterangepicker_ranges_recent_week
=
最近1周
daterangepicker_ranges_recent_month
=
最近1月
daterangepicker_custom_name
=
自定义
daterangepicker_custom_starttime
=
起始时间
daterangepicker_custom_endtime
=
结束时间
daterangepicker_custom_daysofweek
=
日,一,二,三,四,五,六
daterangepicker_custom_monthnames
=
一月,二月,三月,四月,五月,六月,七月,八月,九月,十月,十一月,十二月
## dataTable
dataTable_sProcessing
=
处理中...
dataTable_sLengthMenu
=
每页 _MENU_ 条记录
dataTable_sZeroRecords
=
没有匹配结果
dataTable_sInfo
=
第 _PAGE_ 页 ( 总共 _PAGES_ 页,_TOTAL_ 条记录 )
dataTable_sInfoEmpty
=
无记录
dataTable_sInfoFiltered
=
(由 _MAX_ 项结果过滤)
dataTable_sSearch
=
搜索
dataTable_sEmptyTable
=
表中数据为空
dataTable_sLoadingRecords
=
载入中...
dataTable_sFirst
=
首页
dataTable_sPrevious
=
上页
dataTable_sNext
=
下页
dataTable_sLast
=
末页
dataTable_sSortAscending
=
: 以升序排列此列
dataTable_sSortDescending
=
: 以降序排列此列
## login
login_btn
=
登录
...
...
@@ -33,12 +76,46 @@ job_dashboard_trigger_num=调度次数
job_dashboard_trigger_num_tip
=
调度中心触发的调度次数
job_dashboard_jobgroup_num
=
执行器数量
job_dashboard_jobgroup_num_tip
=
调度中心在线的执行器机器数量
job_dashboard_report
=
调度报表
job_dashboard_report_loaddata_fail
=
调度报表数据加载异常
job_dashboard_date_report
=
日期分布图
job_dashboard_date_report_suc_count
=
成功调度次数
job_dashboard_date_report_fail_count
=
失败调度次数
job_dashboard_rate_report
=
成功比例图
job_dashboard_rate_report_suc_count
=
成功调度次数
job_dashboard_rate_report_fail_count
=
失败调度次数
## job info
jobinfo_name
=
任务管理
jobinfo_field_add
=
新增任务
jobinfo_field_update
=
更新任务
jobinfo_field_id
=
任务ID
jobinfo_field_jobgroup
=
执行器
jobinfo_field_jobdesc
=
任务描述
jobinfo_field_gluetype
=
运行模式
jobinfo_field_executorparam
=
执行参数
jobinfo_field_author
=
负责人
jobinfo_field_alarmemail
=
报警邮件
jobinfo_field_alarmemail_placeholder
=
请输入报警邮件,多个邮件地址则逗号分隔
jobinfo_field_executorRouteStrategy
=
路由策略
jobinfo_field_childJobId
=
子任务ID
jobinfo_field_childJobId_placeholder
=
请输入子任务的任务ID,如存在多个则逗号分隔
jobinfo_field_executorBlockStrategy
=
阻塞处理策略
jobinfo_field_executorFailStrategy
=
失败处理策略
jobinfo_script_location
=
脚本位置
jobinfo_shard_index
=
分片序号
jobinfo_shard_total
=
分片总数
jobinfo_opt_pause
=
暂停
jobinfo_opt_resume
=
恢复
jobinfo_opt_log
=
日志
jobinfo_opt_run
=
执行
jobinfo_opt_edit
=
编辑
jobinfo_opt_del
=
删除
## job log
joblog_name
=
调度日志
## job group
jobgroup_name
=
执行器管理
...
...
xxl-job-admin/src/main/webapp/WEB-INF/template/jobinfo/jobinfo.index.ftl
浏览文件 @
844f51c5
...
...
@@ -19,12 +19,6 @@
<!-- Content Header (Page header) -->
<section
class=
"content-header"
>
<h1>
${I18n.jobinfo_name}
</h1>
<!--
<ol class="breadcrumb">
<li><a><i class="fa fa-dashboard"></i>调度管理</a></li>
<li class="active">调度中心</li>
</ol>
-->
</section>
<!-- Main content -->
...
...
@@ -33,7 +27,7 @@
<div
class=
"row"
>
<div
class=
"col-xs-3"
>
<div
class=
"input-group"
>
<span
class=
"input-group-addon"
>
执行器
</span>
<span
class=
"input-group-addon"
>
${I18n.jobinfo_field_jobgroup}
</span>
<select
class=
"form-control"
id=
"jobGroup"
>
<
#
list
JobGroupList
as
group
>
<option
value=
"${group.id}"
<#
if
jobGroup=
=group.id
>
selected
</
#
if>
>${group.title}
</option>
...
...
@@ -43,7 +37,7 @@
</div>
<div
class=
"col-xs-3"
>
<div
class=
"input-group"
>
<span
class=
"input-group-addon"
>
任务描述
</span>
<span
class=
"input-group-addon"
>
${I18n.jobinfo_field_jobdesc}
</span>
<input
type=
"text"
class=
"form-control"
id=
"jobDesc"
autocomplete=
"on"
>
</div>
</div>
...
...
@@ -54,36 +48,35 @@
</div>
</div>
<div
class=
"col-xs-1"
>
<button
class=
"btn btn-block btn-info"
id=
"searchBtn"
>
搜索
</button>
<button
class=
"btn btn-block btn-info"
id=
"searchBtn"
>
${I18n.system_search}
</button>
</div>
<div
class=
"col-xs-2"
>
<button
class=
"btn btn-block btn-success add"
type=
"button"
>
+新增任务
</button>
<button
class=
"btn btn-block btn-success add"
type=
"button"
>
${I18n.jobinfo_field_add}
</button>
</div>
</div>
<div
class=
"row"
>
<div
class=
"col-xs-12"
>
<div
class=
"box"
>
<div
class=
"box-header hide"
>
<
#
--
<
div
class=
"box-header hide"
>
<h3
class=
"box-title"
>
调度列表
</h3>
</div>
</div>
-->
<div
class=
"box-body"
>
<table
id=
"job_list"
class=
"table table-bordered table-striped"
width=
"100%"
>
<thead>
<tr>
<th
name=
"id"
>
任务ID
</th>
<th
name=
"jobGroup"
>
jobGroup
</th>
<th
name=
"jobDesc"
>
描述
</th>
<th
name=
"glueType"
>
运行模式
</th>
<th
name=
"executorParam"
>
任务参数
</th>
<th
name=
"id"
>
${I18n.jobinfo_field_id}
</th>
<th
name=
"jobGroup"
>
${I18n.jobinfo_field_jobgroup}
</th>
<th
name=
"jobDesc"
>
${I18n.jobinfo_field_jobdesc}
</th>
<th
name=
"glueType"
>
${I18n.jobinfo_field_gluetype}
</th>
<th
name=
"executorParam"
>
${I18n.jobinfo_field_executorparam}
</th>
<th
name=
"jobCron"
>
Cron
</th>
<th
name=
"addTime"
>
新增时间
</th>
<th
name=
"updateTime"
>
更新时间
</th>
<th
name=
"author"
>
负责人
</th>
<th
name=
"alarmEmail"
>
报警邮件
</th>
<th
name=
"glueType"
>
运行模式
</th>
<th
name=
"jobStatus"
>
状态
</th>
<th>
操作
</th>
<th
name=
"addTime"
>
addTime
</th>
<th
name=
"updateTime"
>
updateTime
</th>
<th
name=
"author"
>
${I18n.jobinfo_field_author}
</th>
<th
name=
"alarmEmail"
>
${I18n.jobinfo_field_alarmemail}
</th>
<th
name=
"jobStatus"
>
${I18n.system_status}
</th>
<th>
${I18n.system_opt}
</th>
</tr>
</thead>
<tbody></tbody>
...
...
@@ -105,12 +98,12 @@
<div
class=
"modal-dialog modal-lg"
>
<div
class=
"modal-content"
>
<div
class=
"modal-header"
>
<h4
class=
"modal-title"
>
新增任务
</h4>
<h4
class=
"modal-title"
>
${I18n.jobinfo_field_add}
</h4>
</div>
<div
class=
"modal-body"
>
<form
class=
"form-horizontal form"
role=
"form"
>
<div
class=
"form-group"
>
<label
for=
"firstname"
class=
"col-sm-2 control-label"
>
执行器
<font
color=
"red"
>
*
</font></label>
<label
for=
"firstname"
class=
"col-sm-2 control-label"
>
${I18n.jobinfo_field_jobgroup}
<font
color=
"red"
>
*
</font></label>
<div
class=
"col-sm-4"
>
<select
class=
"form-control"
name=
"jobGroup"
>
<
#
list
JobGroupList
as
group
>
...
...
@@ -118,11 +111,11 @@
</
#
list>
</select>
</div>
<label
for=
"lastname"
class=
"col-sm-2 control-label"
>
任务描述
<font
color=
"red"
>
*
</font></label>
<div
class=
"col-sm-4"
><input
type=
"text"
class=
"form-control"
name=
"jobDesc"
placeholder=
"
请输入“描述”
"
maxlength=
"50"
></div>
<label
for=
"lastname"
class=
"col-sm-2 control-label"
>
${I18n.jobinfo_field_jobdesc}
<font
color=
"red"
>
*
</font></label>
<div
class=
"col-sm-4"
><input
type=
"text"
class=
"form-control"
name=
"jobDesc"
placeholder=
"
${I18n.system_please_input}${I18n.jobinfo_field_jobdesc}
"
maxlength=
"50"
></div>
</div>
<div
class=
"form-group"
>
<label
for=
"firstname"
class=
"col-sm-2 control-label"
>
路由策略
<font
color=
"red"
>
*
</font></label>
<label
for=
"firstname"
class=
"col-sm-2 control-label"
>
${I18n.jobinfo_field_executorRouteStrategy}
<font
color=
"red"
>
*
</font></label>
<div
class=
"col-sm-4"
>
<select
class=
"form-control"
name=
"executorRouteStrategy"
>
<
#
list
ExecutorRouteStrategyEnum
as
item
>
...
...
@@ -131,10 +124,10 @@
</select>
</div>
<label
for=
"lastname"
class=
"col-sm-2 control-label"
>
Cron
<font
color=
"red"
>
*
</font></label>
<div
class=
"col-sm-4"
><input
type=
"text"
class=
"form-control"
name=
"jobCron"
placeholder=
"
请输入“Cron”
"
maxlength=
"128"
></div>
<div
class=
"col-sm-4"
><input
type=
"text"
class=
"form-control"
name=
"jobCron"
placeholder=
"
${I18n.system_please_input}Cron
"
maxlength=
"128"
></div>
</div>
<div
class=
"form-group"
>
<label
for=
"firstname"
class=
"col-sm-2 control-label"
>
运行模式
<font
color=
"red"
>
*
</font></label>
<label
for=
"firstname"
class=
"col-sm-2 control-label"
>
${I18n.jobinfo_field_gluetype}
<font
color=
"red"
>
*
</font></label>
<div
class=
"col-sm-4"
>
<select
class=
"form-control glueType"
name=
"glueType"
>
<
#
list
GlueTypeEnum
as
item
>
...
...
@@ -143,16 +136,16 @@
</select>
</div>
<label
for=
"firstname"
class=
"col-sm-2 control-label"
>
JobHandler
<font
color=
"black"
>
*
</font></label>
<div
class=
"col-sm-4"
><input
type=
"text"
class=
"form-control"
name=
"executorHandler"
placeholder=
"
请输入“JobHandler”
"
maxlength=
"100"
></div>
<div
class=
"col-sm-4"
><input
type=
"text"
class=
"form-control"
name=
"executorHandler"
placeholder=
"
${I18n.system_please_input}JobHandler
"
maxlength=
"100"
></div>
</div>
<div
class=
"form-group"
>
<label
for=
"firstname"
class=
"col-sm-2 control-label"
>
执行参数
<font
color=
"black"
>
*
</font></label>
<div
class=
"col-sm-4"
><input
type=
"text"
class=
"form-control"
name=
"executorParam"
placeholder=
"
请输入“执行参数”
"
maxlength=
"512"
></div>
<label
for=
"lastname"
class=
"col-sm-2 control-label"
>
子任务ID
<font
color=
"black"
>
*
</font></label>
<div
class=
"col-sm-4"
><input
type=
"text"
class=
"form-control"
name=
"childJobId"
placeholder=
"
请输入子任务的任务ID,如存在多个逗号分隔
"
maxlength=
"100"
></div>
<label
for=
"firstname"
class=
"col-sm-2 control-label"
>
${I18n.jobinfo_field_executorparam}
<font
color=
"black"
>
*
</font></label>
<div
class=
"col-sm-4"
><input
type=
"text"
class=
"form-control"
name=
"executorParam"
placeholder=
"
${I18n.system_please_input}${I18n.jobinfo_field_executorparam}
"
maxlength=
"512"
></div>
<label
for=
"lastname"
class=
"col-sm-2 control-label"
>
${I18n.jobinfo_field_childJobId}
<font
color=
"black"
>
*
</font></label>
<div
class=
"col-sm-4"
><input
type=
"text"
class=
"form-control"
name=
"childJobId"
placeholder=
"
${I18n.jobinfo_field_childJobId_placeholder}
"
maxlength=
"100"
></div>
</div>
<div
class=
"form-group"
>
<label
for=
"firstname"
class=
"col-sm-2 control-label"
>
阻塞处理策略
<font
color=
"red"
>
*
</font></label>
<label
for=
"firstname"
class=
"col-sm-2 control-label"
>
${I18n.jobinfo_field_executorBlockStrategy}
<font
color=
"red"
>
*
</font></label>
<div
class=
"col-sm-4"
>
<select
class=
"form-control"
name=
"executorBlockStrategy"
>
<
#
list
ExecutorBlockStrategyEnum
as
item
>
...
...
@@ -160,7 +153,7 @@
</
#
list>
</select>
</div>
<label
for=
"lastname"
class=
"col-sm-2 control-label"
>
失败处理策略
<font
color=
"red"
>
*
</font></label>
<label
for=
"lastname"
class=
"col-sm-2 control-label"
>
${I18n.jobinfo_field_executorFailStrategy}
<font
color=
"red"
>
*
</font></label>
<div
class=
"col-sm-4"
>
<select
class=
"form-control"
name=
"executorFailStrategy"
>
<
#
list
ExecutorFailStrategyEnum
as
item
>
...
...
@@ -170,17 +163,17 @@
</div>
</div>
<div
class=
"form-group"
>
<label
for=
"lastname"
class=
"col-sm-2 control-label"
>
负责人
<font
color=
"red"
>
*
</font></label>
<div
class=
"col-sm-4"
><input
type=
"text"
class=
"form-control"
name=
"author"
placeholder=
"
请输入“负责人”
"
maxlength=
"50"
></div>
<label
for=
"lastname"
class=
"col-sm-2 control-label"
>
报警邮件
<font
color=
"black"
>
*
</font></label>
<div
class=
"col-sm-4"
><input
type=
"text"
class=
"form-control"
name=
"alarmEmail"
placeholder=
"
请输入“报警邮件”,多个邮件地址逗号分隔
"
maxlength=
"100"
></div>
<label
for=
"lastname"
class=
"col-sm-2 control-label"
>
${I18n.jobinfo_field_author}
<font
color=
"red"
>
*
</font></label>
<div
class=
"col-sm-4"
><input
type=
"text"
class=
"form-control"
name=
"author"
placeholder=
"
${I18n.system_please_input}${I18n.jobinfo_field_author}
"
maxlength=
"50"
></div>
<label
for=
"lastname"
class=
"col-sm-2 control-label"
>
${I18n.jobinfo_field_alarmemail}
<font
color=
"black"
>
*
</font></label>
<div
class=
"col-sm-4"
><input
type=
"text"
class=
"form-control"
name=
"alarmEmail"
placeholder=
"
${I18n.jobinfo_field_alarmemail_placeholder}
"
maxlength=
"100"
></div>
</div>
<hr>
<div
class=
"form-group"
>
<div
class=
"col-sm-offset-3 col-sm-6"
>
<button
type=
"submit"
class=
"btn btn-primary"
>
保存
</button>
<button
type=
"button"
class=
"btn btn-default"
data-dismiss=
"modal"
>
取消
</button>
<button
type=
"submit"
class=
"btn btn-primary"
>
${I18n.system_save}
</button>
<button
type=
"button"
class=
"btn btn-default"
data-dismiss=
"modal"
>
${I18n.system_cancel}
</button>
</div>
</div>
...
...
@@ -207,10 +200,10 @@ public class DemoGlueJobHandler extends IJobHandler {
#!/bin/bash
echo "xxl-job: hello shell"
echo "
脚本位置
:$0"
echo "
任务参数
:$1"
echo "
分片序号
= $2"
echo "
分片总数
= $3"
echo "
${I18n.jobinfo_script_location}
:$0"
echo "
${I18n.jobinfo_field_executorparam}
:$1"
echo "
${I18n.jobinfo_shard_index}
= $2"
echo "
${I18n.jobinfo_shard_total}
= $3"
<
#
--echo
"参数数量:$#"
for
param
in
$*
do
...
...
@@ -229,10 +222,10 @@ import sys
print "xxl-job: hello python"
print "
脚本文件
:", sys.argv[0]
print "
任务参数
:", sys.argv[1]
print "
分片序号
:", sys.argv[2]
print "
分片总数
:", sys.argv[3]
print "
${I18n.jobinfo_script_location}
:", sys.argv[0]
print "
${I18n.jobinfo_field_executorparam}
:", sys.argv[1]
print "
${I18n.jobinfo_shard_index}
:", sys.argv[2]
print "
${I18n.jobinfo_shard_total}
:", sys.argv[3]
<
#
--for
i
in
range
(
1
,
len
(
sys
.
argv
))
:
time
.
sleep
(
1
)
print
"参数",
i
,
sys
.
argv
[
i
]
--
>
...
...
@@ -251,10 +244,10 @@ console.log("xxl-job: hello nodejs")
var arguments = process.argv
console.log("
脚本文件
: " + arguments[1])
console.log("
任务参数
: " + arguments[2])
console.log("
分片序号
: " + arguments[3])
console.log("
分片总数
: " + arguments[4])
console.log("
${I18n.jobinfo_script_location}
: " + arguments[1])
console.log("
${I18n.jobinfo_field_executorparam}
: " + arguments[2])
console.log("
${I18n.jobinfo_shard_index}
: " + arguments[3])
console.log("
${I18n.jobinfo_shard_total}
: " + arguments[4])
<
#
--for
(
var
i =
2;
i
<
arguments
.
length
;
i
++){
console
.
log
("参数
%
s =
%s",
(
i-1
),
arguments
[
i
]);
}
--
>
...
...
@@ -273,12 +266,12 @@ process.exit(0)
<div
class=
"modal-dialog modal-lg"
>
<div
class=
"modal-content"
>
<div
class=
"modal-header"
>
<h4
class=
"modal-title"
>
更新任务
</h4>
<h4
class=
"modal-title"
>
${I18n.jobinfo_field_update}
</h4>
</div>
<div
class=
"modal-body"
>
<form
class=
"form-horizontal form"
role=
"form"
>
<div
class=
"form-group"
>
<label
for=
"firstname"
class=
"col-sm-2 control-label"
>
执行器
<font
color=
"red"
>
*
</font></label>
<label
for=
"firstname"
class=
"col-sm-2 control-label"
>
${I18n.jobinfo_field_jobgroup}
<font
color=
"red"
>
*
</font></label>
<div
class=
"col-sm-4"
>
<select
class=
"form-control"
name=
"jobGroup"
disabled
>
<
#
list
JobGroupList
as
group
>
...
...
@@ -286,11 +279,11 @@ process.exit(0)
</
#
list>
</select>
</div>
<label
for=
"lastname"
class=
"col-sm-2 control-label"
>
任务描述
<font
color=
"red"
>
*
</font></label>
<div
class=
"col-sm-4"
><input
type=
"text"
class=
"form-control"
name=
"jobDesc"
placeholder=
"
请输入“描述”
"
maxlength=
"50"
></div>
<label
for=
"lastname"
class=
"col-sm-2 control-label"
>
${I18n.jobinfo_field_jobdesc}
<font
color=
"red"
>
*
</font></label>
<div
class=
"col-sm-4"
><input
type=
"text"
class=
"form-control"
name=
"jobDesc"
placeholder=
"
${I18n.system_please_input}${I18n.jobinfo_field_jobdesc}
"
maxlength=
"50"
></div>
</div>
<div
class=
"form-group"
>
<label
for=
"firstname"
class=
"col-sm-2 control-label"
>
路由策略
<font
color=
"red"
>
*
</font></label>
<label
for=
"firstname"
class=
"col-sm-2 control-label"
>
${I18n.jobinfo_field_executorRouteStrategy}
<font
color=
"red"
>
*
</font></label>
<div
class=
"col-sm-4"
>
<select
class=
"form-control"
name=
"executorRouteStrategy"
>
<
#
list
ExecutorRouteStrategyEnum
as
item
>
...
...
@@ -299,10 +292,10 @@ process.exit(0)
</select>
</div>
<label
for=
"lastname"
class=
"col-sm-2 control-label"
>
Cron
<font
color=
"red"
>
*
</font></label>
<div
class=
"col-sm-4"
><input
type=
"text"
class=
"form-control"
name=
"jobCron"
placeholder=
"
请输入“Cron”
"
maxlength=
"128"
></div>
<div
class=
"col-sm-4"
><input
type=
"text"
class=
"form-control"
name=
"jobCron"
placeholder=
"
${I18n.system_please_input}Cron
"
maxlength=
"128"
></div>
</div>
<div
class=
"form-group"
>
<label
for=
"firstname"
class=
"col-sm-2 control-label"
>
运行模式
<font
color=
"red"
>
*
</font></label>
<label
for=
"firstname"
class=
"col-sm-2 control-label"
>
${I18n.jobinfo_field_gluetype}
<font
color=
"red"
>
*
</font></label>
<div
class=
"col-sm-4"
>
<select
class=
"form-control glueType"
name=
"glueType"
disabled
>
<
#
list
GlueTypeEnum
as
item
>
...
...
@@ -311,16 +304,16 @@ process.exit(0)
</select>
</div>
<label
for=
"firstname"
class=
"col-sm-2 control-label"
>
JobHandler
<font
color=
"black"
>
*
</font></label>
<div
class=
"col-sm-4"
><input
type=
"text"
class=
"form-control"
name=
"executorHandler"
placeholder=
"
请输入“JobHandler”
"
maxlength=
"100"
></div>
<div
class=
"col-sm-4"
><input
type=
"text"
class=
"form-control"
name=
"executorHandler"
placeholder=
"
${I18n.system_please_input}JobHandler
"
maxlength=
"100"
></div>
</div>
<div
class=
"form-group"
>
<label
for=
"firstname"
class=
"col-sm-2 control-label"
>
执行参数
<font
color=
"black"
>
*
</font></label>
<div
class=
"col-sm-4"
><input
type=
"text"
class=
"form-control"
name=
"executorParam"
placeholder=
"
请输入“执行参数”
"
maxlength=
"512"
></div>
<label
for=
"lastname"
class=
"col-sm-2 control-label"
>
子任务ID
<font
color=
"black"
>
*
</font></label>
<div
class=
"col-sm-4"
><input
type=
"text"
class=
"form-control"
name=
"childJobId"
placeholder=
"
请输入子任务的任务ID,如存在多个逗号分隔
"
maxlength=
"100"
></div>
<label
for=
"firstname"
class=
"col-sm-2 control-label"
>
${I18n.jobinfo_field_executorparam}
<font
color=
"black"
>
*
</font></label>
<div
class=
"col-sm-4"
><input
type=
"text"
class=
"form-control"
name=
"executorParam"
placeholder=
"
${I18n.system_please_input}${I18n.jobinfo_field_executorparam}
"
maxlength=
"512"
></div>
<label
for=
"lastname"
class=
"col-sm-2 control-label"
>
${I18n.jobinfo_field_childJobId}
<font
color=
"black"
>
*
</font></label>
<div
class=
"col-sm-4"
><input
type=
"text"
class=
"form-control"
name=
"childJobId"
placeholder=
"
${I18n.jobinfo_field_childJobId_placeholder}
"
maxlength=
"100"
></div>
</div>
<div
class=
"form-group"
>
<label
for=
"firstname"
class=
"col-sm-2 control-label"
>
阻塞处理策略
<font
color=
"red"
>
*
</font></label>
<label
for=
"firstname"
class=
"col-sm-2 control-label"
>
${I18n.jobinfo_field_executorBlockStrategy}
<font
color=
"red"
>
*
</font></label>
<div
class=
"col-sm-4"
>
<select
class=
"form-control"
name=
"executorBlockStrategy"
>
<
#
list
ExecutorBlockStrategyEnum
as
item
>
...
...
@@ -328,7 +321,7 @@ process.exit(0)
</
#
list>
</select>
</div>
<label
for=
"lastname"
class=
"col-sm-2 control-label"
>
失败处理策略
<font
color=
"red"
>
*
</font></label>
<label
for=
"lastname"
class=
"col-sm-2 control-label"
>
${I18n.jobinfo_field_executorFailStrategy}
<font
color=
"red"
>
*
</font></label>
<div
class=
"col-sm-4"
>
<select
class=
"form-control"
name=
"executorFailStrategy"
>
<
#
list
ExecutorFailStrategyEnum
as
item
>
...
...
@@ -338,20 +331,21 @@ process.exit(0)
</div>
</div>
<div
class=
"form-group"
>
<label
for=
"lastname"
class=
"col-sm-2 control-label"
>
负责人
<font
color=
"red"
>
*
</font></label>
<div
class=
"col-sm-4"
><input
type=
"text"
class=
"form-control"
name=
"author"
placeholder=
"
请输入“负责人”
"
maxlength=
"50"
></div>
<label
for=
"lastname"
class=
"col-sm-2 control-label"
>
报警邮件
<font
color=
"black"
>
*
</font></label>
<div
class=
"col-sm-4"
><input
type=
"text"
class=
"form-control"
name=
"alarmEmail"
placeholder=
"
请输入“报警邮件”,多个邮件地址逗号分隔
"
maxlength=
"100"
></div>
<label
for=
"lastname"
class=
"col-sm-2 control-label"
>
${I18n.jobinfo_field_author}
<font
color=
"red"
>
*
</font></label>
<div
class=
"col-sm-4"
><input
type=
"text"
class=
"form-control"
name=
"author"
placeholder=
"
${I18n.system_please_input}${I18n.jobinfo_field_author}
"
maxlength=
"50"
></div>
<label
for=
"lastname"
class=
"col-sm-2 control-label"
>
${I18n.jobinfo_field_alarmemail}
<font
color=
"black"
>
*
</font></label>
<div
class=
"col-sm-4"
><input
type=
"text"
class=
"form-control"
name=
"alarmEmail"
placeholder=
"
${I18n.jobinfo_field_alarmemail_placeholder}
"
maxlength=
"100"
></div>
</div>
<hr>
<div
class=
"form-group"
>
<div
class=
"col-sm-offset-3 col-sm-6"
>
<button
type=
"submit"
class=
"btn btn-primary"
>
保存
</button>
<button
type=
"button"
class=
"btn btn-default"
data-dismiss=
"modal"
>
取消
</button>
<button
type=
"submit"
class=
"btn btn-primary"
>
${I18n.system_save}
</button>
<button
type=
"button"
class=
"btn btn-default"
data-dismiss=
"modal"
>
${I18n.system_cancel}
</button>
<input
type=
"hidden"
name=
"id"
>
</div>
</div>
</form>
</div>
</div>
...
...
xxl-job-admin/src/main/webapp/static/js/index.js
浏览文件 @
844f51c5
...
...
@@ -4,8 +4,17 @@
$
(
function
()
{
// filter Time
var
_startDate
=
moment
().
subtract
(
1
,
'months'
);
//
默认,最近一月
var
_startDate
=
moment
().
subtract
(
1
,
'months'
);
//
default,recent_month
var
_endDate
=
moment
();
var
rangesConf
=
{};
rangesConf
[
I18n
.
daterangepicker_ranges_today
]
=
[
moment
().
startOf
(
'day'
),
moment
().
endOf
(
'day'
)];
rangesConf
[
I18n
.
daterangepicker_ranges_yesterday
]
=
[
moment
().
subtract
(
1
,
'days'
).
startOf
(
'day'
),
moment
().
subtract
(
1
,
'days'
).
endOf
(
'day'
)];
rangesConf
[
I18n
.
daterangepicker_ranges_this_month
]
=
[
moment
().
startOf
(
'month'
),
moment
().
endOf
(
'month'
)];
rangesConf
[
I18n
.
daterangepicker_ranges_last_month
]
=
[
moment
().
subtract
(
1
,
'months'
).
startOf
(
'month'
),
moment
().
subtract
(
1
,
'months'
).
endOf
(
'month'
)];
rangesConf
[
I18n
.
daterangepicker_ranges_recent_week
]
=
[
moment
().
subtract
(
1
,
'weeks'
),
moment
()];
rangesConf
[
I18n
.
daterangepicker_ranges_recent_month
]
=
[
_startDate
,
_endDate
];
$
(
'#filterTime'
).
daterangepicker
({
autoApply
:
false
,
singleDatePicker
:
false
,
...
...
@@ -14,25 +23,17 @@ $(function () {
timePickerIncrement
:
10
,
// 时间的增量,单位为分钟
timePicker24Hour
:
true
,
opens
:
'left'
,
//日期选择框的弹出位置
ranges
:
{
//'最近1小时': [moment().subtract(1, 'hours'), moment()],
'今日'
:
[
moment
().
startOf
(
'day'
),
moment
().
endOf
(
'day'
)],
'昨日'
:
[
moment
().
subtract
(
1
,
'days'
).
startOf
(
'day'
),
moment
().
subtract
(
1
,
'days'
).
endOf
(
'day'
)],
'本月'
:
[
moment
().
startOf
(
'month'
),
moment
().
endOf
(
'month'
)],
'上个月'
:
[
moment
().
subtract
(
1
,
'months'
).
startOf
(
'month'
),
moment
().
subtract
(
1
,
'months'
).
endOf
(
'month'
)],
'最近1周'
:
[
moment
().
subtract
(
1
,
'weeks'
),
moment
()],
'最近1月'
:
[
_startDate
,
_endDate
]
},
ranges
:
rangesConf
,
locale
:
{
format
:
'YYYY-MM-DD HH:mm:ss'
,
separator
:
' - '
,
customRangeLabel
:
'自定义'
,
applyLabel
:
'确定'
,
cancelLabel
:
'取消'
,
fromLabel
:
'起始时间'
,
toLabel
:
'结束时间'
,
daysOfWeek
:
[
'日'
,
'一'
,
'二'
,
'三'
,
'四'
,
'五'
,
'六'
],
monthNames
:
[
'一月'
,
'二月'
,
'三月'
,
'四月'
,
'五月'
,
'六月'
,
'七月'
,
'八月'
,
'九月'
,
'十月'
,
'十一月'
,
'十二月'
],
customRangeLabel
:
I18n
.
daterangepicker_custom_name
,
applyLabel
:
I18n
.
system_ok
,
cancelLabel
:
I18n
.
system_cancel
,
fromLabel
:
I18n
.
daterangepicker_custom_starttime
,
toLabel
:
I18n
.
daterangepicker_custom_endtime
,
daysOfWeek
:
I18n
.
daterangepicker_custom_daysofweek
.
split
(
','
)
,
// '日', '一', '二', '三', '四', '五', '六'
monthNames
:
I18n
.
daterangepicker_custom_monthnames
.
split
(
','
)
,
// '一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'
firstDay
:
1
},
startDate
:
_startDate
,
...
...
@@ -64,7 +65,7 @@ $(function () {
}
else
{
layer
.
open
({
title
:
I18n
.
system_tips
,
content
:
(
data
.
msg
||
'调度报表数据加载异常'
),
content
:
(
data
.
msg
||
I18n
.
job_dashboard_report_loaddata_fail
),
icon
:
'2'
});
}
...
...
@@ -78,7 +79,7 @@ $(function () {
function
lineChartInit
(
data
)
{
var
option
=
{
title
:
{
text
:
'日期分布图'
text
:
I18n
.
job_dashboard_date_report
},
tooltip
:
{
trigger
:
'axis'
,
...
...
@@ -90,7 +91,7 @@ $(function () {
}
},
legend
:
{
data
:[
'成功调度次数'
,
'失败调度次数'
]
data
:[
I18n
.
job_dashboard_date_report_suc_count
,
I18n
.
job_dashboard_date_report_fail_count
]
},
toolbox
:
{
feature
:
{
...
...
@@ -117,16 +118,16 @@ $(function () {
],
series
:
[
{
name
:
'成功调度次数'
,
name
:
I18n
.
job_dashboard_date_report_suc_count
,
type
:
'line'
,
stack
:
'
总量
'
,
stack
:
'
Total
'
,
areaStyle
:
{
normal
:
{}},
data
:
data
.
content
.
triggerDayCountSucList
},
{
name
:
'失败调度次数'
,
name
:
I18n
.
job_dashboard_date_report_fail_count
,
type
:
'line'
,
stack
:
'
总量
'
,
stack
:
'
Total
'
,
label
:
{
normal
:
{
show
:
true
,
...
...
@@ -150,7 +151,7 @@ $(function () {
function
pieChartInit
(
data
)
{
var
option
=
{
title
:
{
text
:
'成功比例图'
,
text
:
I18n
.
job_dashboard_rate_report
,
/*subtext: 'subtext',*/
x
:
'center'
},
...
...
@@ -161,7 +162,7 @@ $(function () {
legend
:
{
orient
:
'vertical'
,
left
:
'left'
,
data
:
[
'成功调度次数'
,
'失败调度次数'
]
data
:
[
I18n
.
job_dashboard_rate_report_suc_count
,
I18n
.
job_dashboard_rate_report_fail_count
]
},
series
:
[
{
...
...
@@ -172,11 +173,11 @@ $(function () {
data
:[
{
value
:
data
.
content
.
triggerCountSucTotal
,
name
:
'成功调度次数'
name
:
I18n
.
job_dashboard_rate_report_suc_count
},
{
value
:
data
.
content
.
triggerCountFailTotal
,
name
:
'失败调度次数'
name
:
I18n
.
job_dashboard_rate_report_fail_count
}
],
itemStyle
:
{
...
...
xxl-job-admin/src/main/webapp/static/js/jobinfo.index.1.js
浏览文件 @
844f51c5
...
...
@@ -52,18 +52,12 @@ $(function() {
"width"
:
'20%'
,
"visible"
:
true
,
"render"
:
function
(
data
,
type
,
row
)
{
if
(
'GLUE_GROOVY'
==
row
.
glueType
)
{
return
"GLUE模式(Java)"
;
}
else
if
(
'GLUE_SHELL'
==
row
.
glueType
)
{
return
"GLUE模式(Shell)"
;
}
else
if
(
'GLUE_PYTHON'
==
row
.
glueType
)
{
return
"GLUE模式(Python)"
;
}
else
if
(
'GLUE_NODEJS'
==
row
.
glueType
){
return
"GLUE模式(Nodejs)"
;
}
else
if
(
'BEAN'
==
row
.
glueType
)
{
return
"BEAN模式:"
+
row
.
executorHandler
;
}
return
row
.
executorHandler
;
var
glueTypeTitle
=
findGlueTypeTitle
(
row
.
glueType
);
if
(
row
.
executorHandler
)
{
return
glueTypeTitle
+
":"
+
row
.
executorHandler
;
}
else
{
return
glueTypeTitle
;
}
}
},
{
"data"
:
'executorParam'
,
"visible"
:
false
},
...
...
@@ -88,7 +82,6 @@ $(function() {
},
{
"data"
:
'author'
,
"visible"
:
true
,
"width"
:
'10%'
},
{
"data"
:
'alarmEmail'
,
"visible"
:
false
},
{
"data"
:
'glueType'
,
"visible"
:
false
},
{
"data"
:
'jobStatus'
,
"width"
:
'10%'
,
...
...
@@ -97,24 +90,24 @@ $(function() {
if
(
'NORMAL'
==
data
)
{
return
'<small class="label label-success" ><i class="fa fa-clock-o"></i>'
+
data
+
'</small>'
;
}
else
if
(
'PAUSED'
==
data
){
return
'<small class="label label-default"
title="暂停" ><i class="fa fa-clock-o"></i>'
+
data
+
'</small>'
;
return
'<small class="label label-default"
><i class="fa fa-clock-o"></i>'
+
data
+
'</small>'
;
}
else
if
(
'BLOCKED'
==
data
){
return
'<small class="label label-default"
title="阻塞[串行]" ><i class="fa fa-clock-o"></i>'
+
data
+
'</small>'
;
return
'<small class="label label-default"
><i class="fa fa-clock-o"></i>'
+
data
+
'</small>'
;
}
return
data
;
}
},
{
"data"
:
'操作'
,
"data"
:
I18n
.
system_opt
,
"width"
:
'15%'
,
"render"
:
function
(
data
,
type
,
row
)
{
return
function
(){
// status
var
pause_resume
=
""
;
if
(
'NORMAL'
==
row
.
jobStatus
)
{
pause_resume
=
'<button class="btn btn-primary btn-xs job_operate" _type="job_pause" type="button">
暂停
</button> '
;
pause_resume
=
'<button class="btn btn-primary btn-xs job_operate" _type="job_pause" type="button">
'
+
I18n
.
jobinfo_opt_pause
+
'
</button> '
;
}
else
if
(
'PAUSED'
==
row
.
jobStatus
){
pause_resume
=
'<button class="btn btn-primary btn-xs job_operate" _type="job_resume" type="button">
恢复
</button> '
;
pause_resume
=
'<button class="btn btn-primary btn-xs job_operate" _type="job_resume" type="button">
'
+
I18n
.
jobinfo_opt_resume
+
'
</button> '
;
}
// log url
var
logUrl
=
base_url
+
'/joblog?jobId='
+
row
.
id
;
...
...
@@ -129,12 +122,12 @@ $(function() {
// html
tableData
[
'key'
+
row
.
id
]
=
row
;
var
html
=
'<p id="'
+
row
.
id
+
'" >'
+
'<button class="btn btn-primary btn-xs job_operate" _type="job_trigger" type="button">
执行
</button> '
+
'<button class="btn btn-primary btn-xs job_operate" _type="job_trigger" type="button">
'
+
I18n
.
jobinfo_opt_run
+
'
</button> '
+
pause_resume
+
'<button class="btn btn-primary btn-xs" type="job_del" type="button" onclick="javascript:window.open(
\'
'
+
logUrl
+
'
\'
)" >
日志
</button><br> '
+
'<button class="btn btn-warning btn-xs update" type="button">
编辑
</button> '
+
'<button class="btn btn-primary btn-xs" type="job_del" type="button" onclick="javascript:window.open(
\'
'
+
logUrl
+
'
\'
)" >
'
+
I18n
.
jobinfo_opt_log
+
'
</button><br> '
+
'<button class="btn btn-warning btn-xs update" type="button">
'
+
I18n
.
jobinfo_opt_edit
+
'
</button> '
+
codeBtn
+
'<button class="btn btn-danger btn-xs job_operate" _type="job_del" type="button">
删除
</button> '
+
'<button class="btn btn-danger btn-xs job_operate" _type="job_del" type="button">
'
+
I18n
.
jobinfo_opt_del
+
'
</button> '
+
'</p>'
;
return
html
;
...
...
@@ -143,27 +136,27 @@ $(function() {
}
],
"language"
:
{
"sProcessing"
:
"处理中..."
,
"sLengthMenu"
:
"每页 _MENU_ 条记录"
,
"sZeroRecords"
:
"没有匹配结果"
,
"sInfo"
:
"第 _PAGE_ 页 ( 总共 _PAGES_ 页,_TOTAL_ 条记录 )"
,
"sInfoEmpty"
:
"无记录"
,
"sInfoFiltered"
:
"(由 _MAX_ 项结果过滤)"
,
"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"
:
"搜索:"
,
"sSearch"
:
I18n
.
dataTable_sSearch
,
"sUrl"
:
""
,
"sEmptyTable"
:
"表中数据为空"
,
"sLoadingRecords"
:
"载入中..."
,
"sEmptyTable"
:
I18n
.
dataTable_sEmptyTable
,
"sLoadingRecords"
:
I18n
.
dataTable_sLoadingRecords
,
"sInfoThousands"
:
","
,
"oPaginate"
:
{
"sFirst"
:
"首页"
,
"sPrevious"
:
"上页"
,
"sNext"
:
"下页"
,
"sLast"
:
"末页"
"sFirst"
:
I18n
.
dataTable_sFirst
,
"sPrevious"
:
I18n
.
dataTable_sPrevious
,
"sNext"
:
I18n
.
dataTable_sNext
,
"sLast"
:
I18n
.
dataTable_sLast
},
"oAria"
:
{
"sSortAscending"
:
": 以升序排列此列"
,
"sSortDescending"
:
": 以降序排列此列"
"sSortAscending"
:
I18n
.
dataTable_sSortAscending
,
"sSortDescending"
:
I18n
.
dataTable_sSortDescending
}
}
});
...
...
@@ -191,19 +184,19 @@ $(function() {
var
type
=
$
(
this
).
attr
(
"_type"
);
if
(
"job_pause"
==
type
)
{
typeName
=
"暂停"
;
typeName
=
I18n
.
jobinfo_opt_pause
;
url
=
base_url
+
"/jobinfo/pause"
;
needFresh
=
true
;
}
else
if
(
"job_resume"
==
type
)
{
typeName
=
"恢复"
;
typeName
=
I18n
.
jobinfo_opt_resume
;
url
=
base_url
+
"/jobinfo/resume"
;
needFresh
=
true
;
}
else
if
(
"job_del"
==
type
)
{
typeName
=
"删除"
;
typeName
=
I18n
.
jobinfo_opt_del
;
url
=
base_url
+
"/jobinfo/remove"
;
needFresh
=
true
;
}
else
if
(
"job_trigger"
==
type
)
{
typeName
=
"执行"
;
typeName
=
I18n
.
jobinfo_opt_run
;
url
=
base_url
+
"/jobinfo/trigger"
;
}
else
{
return
;
...
...
@@ -211,7 +204,7 @@ $(function() {
var
id
=
$
(
this
).
parent
(
'p'
).
attr
(
"id"
);
layer
.
confirm
(
'确认'
+
typeName
+
'?'
,
{
icon
:
3
,
title
:
'系统提示'
},
function
(
index
){
layer
.
confirm
(
I18n
.
system_ok
+
typeName
+
'?'
,
{
icon
:
3
,
title
:
I18n
.
system_tips
},
function
(
index
){
layer
.
close
(
index
);
$
.
ajax
({
...
...
@@ -225,8 +218,9 @@ $(function() {
if
(
data
.
code
==
200
)
{
layer
.
open
({
title
:
'系统提示'
,
content
:
typeName
+
"成功"
,
title
:
I18n
.
system_tips
,
btn
:
[
I18n
.
system_ok
,
I18n
.
system_close
],
content
:
typeName
+
I18n
.
system_success
,
icon
:
'1'
,
end
:
function
(
layero
,
index
){
if
(
needFresh
)
{
...
...
@@ -237,8 +231,9 @@ $(function() {
});
}
else
{
layer
.
open
({
title
:
'系统提示'
,
content
:
(
data
.
msg
||
typeName
+
"失败"
),
title
:
I18n
.
system_tips
,
btn
:
[
I18n
.
system_ok
,
I18n
.
system_close
],
content
:
(
data
.
msg
||
typeName
+
I18n
.
system_fail
),
icon
:
'2'
});
}
...
...
@@ -269,13 +264,13 @@ $(function() {
},
messages
:
{
jobDesc
:
{
required
:
"请输入“描述”."
required
:
I18n
.
system_please_input
+
I18n
.
jobinfo_field_jobdesc
},
jobCron
:
{
required
:
"请输入“Cron”.
"
required
:
I18n
.
system_please_input
+
"Cron
"
},
author
:
{
required
:
"请输入“负责人”."
required
:
I18n
.
system_please_input
+
I18n
.
jobinfo_field_author
}
},
highlight
:
function
(
element
)
{
...
...
@@ -293,8 +288,8 @@ $(function() {
if
(
data
.
code
==
"200"
)
{
$
(
'#addModal'
).
modal
(
'hide'
);
layer
.
open
({
title
:
'系统提示'
,
content
:
'新增任务成功'
,
title
:
I18n
.
system_tips
,
content
:
I18n
.
system_add_suc
,
icon
:
'1'
,
end
:
function
(
layero
,
index
){
jobTable
.
fnDraw
();
...
...
@@ -303,8 +298,8 @@ $(function() {
});
}
else
{
layer
.
open
({
title
:
'系统提示'
,
content
:
(
data
.
msg
||
"新增失败"
),
title
:
I18n
.
system_tips
,
content
:
(
data
.
msg
||
I18n
.
system_add_fail
),
icon
:
'2'
});
}
...
...
@@ -353,14 +348,14 @@ $(function() {
var
id
=
$
(
this
).
parent
(
'p'
).
attr
(
"id"
);
var
row
=
tableData
[
'key'
+
id
];
if
(
!
row
)
{
/*
if (!row) {
layer.open({
title
:
'系统提示'
,
content
:
(
"
任务信息
加载失败,请刷新页面"
),
title:
I18n.system_tips
,
content: ("
数据
加载失败,请刷新页面"),
icon: '2'
});
return;
}
}
*/
// base data
$
(
"#updateModal .form input[name='id']"
).
val
(
row
.
id
);
...
...
@@ -401,13 +396,13 @@ $(function() {
},
messages
:
{
jobDesc
:
{
required
:
"请输入“描述”."
required
:
I18n
.
system_please_input
+
I18n
.
jobinfo_field_jobdesc
},
jobCron
:
{
required
:
"请输入“Cron”.
"
required
:
I18n
.
system_please_input
+
"Cron
"
},
author
:
{
required
:
"请输入“负责人”."
required
:
I18n
.
system_please_input
+
I18n
.
jobinfo_field_author
}
},
highlight
:
function
(
element
)
{
...
...
@@ -426,8 +421,8 @@ $(function() {
if
(
data
.
code
==
"200"
)
{
$
(
'#updateModal'
).
modal
(
'hide'
);
layer
.
open
({
title
:
'系统提示'
,
content
:
'更新成功'
,
title
:
I18n
.
system_tips
,
content
:
I18n
.
system_update_suc
,
icon
:
'1'
,
end
:
function
(
layero
,
index
){
//window.location.reload();
...
...
@@ -436,8 +431,8 @@ $(function() {
});
}
else
{
layer
.
open
({
title
:
'系统提示'
,
content
:
(
data
.
msg
||
"更新失败"
),
title
:
I18n
.
system_tips
,
content
:
(
data
.
msg
||
I18n
.
system_update_fail
),
icon
:
'2'
});
}
...
...
@@ -448,4 +443,20 @@ $(function() {
$
(
"#updateModal .form"
)[
0
].
reset
()
});
/**
* 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
;
}
});
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论