added cron tasks for spiders

This commit is contained in:
Marvin Zhang
2019-03-09 14:05:14 +08:00
parent 7e685541ac
commit cc4a0eefc3
36 changed files with 263 additions and 508 deletions

View File

@@ -48,4 +48,8 @@ export default {
margin-top: 10px;
text-align: right;
}
.el-form .el-form-item {
margin-bottom: 10px;
}
</style>

View File

@@ -38,6 +38,23 @@
<el-option value="go" label="Go"></el-option>
</el-select>
</el-form-item>
<el-form-item label="Schedule Enabled">
<el-switch v-model="spiderForm.cron_enabled" :disabled="isView">
</el-switch>
</el-form-item>
<el-form-item label="Schedule Cron" v-if="spiderForm.cron_enabled" prop="cron" :rules="cronRules">
<template slot="label">
<el-tooltip content="Cron Format: [second] [minute] [hour] [day of month] [month] [day of week]"
placement="top">
<span>
Schedule Cron
<i class="fa fa-exclamation-circle"></i>
</span>
</el-tooltip>
</template>
<el-input v-model="spiderForm.cron" placeholder="Schedule Cron"
:disabled="isView"></el-input>
</el-form-item>
</el-form>
</el-row>
<el-row class="button-container" v-if="!isView">
@@ -62,9 +79,27 @@ export default {
}
},
data () {
const cronValidator = (rule, value, callback) => {
let patArr = []
for (let i = 0; i < 6; i++) {
patArr.push('[/*,0-9]+')
}
const pat = '^' + patArr.join(' ') + '$'
if (this.spiderForm.cron_enabled) {
if (!value) {
callback(new Error('cron cannot be empty'))
} else if (!value.match(pat)) {
callback(new Error('cron format is invalid'))
}
}
callback()
}
return {
cmdRule: [
{ message: 'Execute Command should not be empty', required: true }
],
cronRules: [
{ validator: cronValidator, trigger: 'blur' }
]
}
},

View File

@@ -132,6 +132,27 @@ export const constantRouterMap = [
}
]
},
{
name: 'Schedule',
path: '/schedules',
component: Layout,
meta: {
title: 'Schedules',
icon: 'fa fa-calendar'
},
hidden: true,
children: [
{
path: '',
name: 'ScheduleList',
component: () => import('../views/schedule/ScheduleList'),
meta: {
title: 'Schedules',
icon: 'fa fa-calendar'
}
}
]
},
{
name: 'Deploy',
path: '/deploys',

View File

@@ -48,7 +48,10 @@ const actions = {
src: state.spiderForm.src,
cmd: state.spiderForm.cmd,
type: state.spiderForm.type,
lang: state.spiderForm.lang
lang: state.spiderForm.lang,
col: state.spiderForm.col,
cron: state.spiderForm.cron,
cron_enabled: state.spiderForm.cron_enabled ? 1 : 0
})
.then(() => {
dispatch('getSpiderList')
@@ -61,7 +64,9 @@ const actions = {
cmd: state.spiderForm.cmd,
type: state.spiderForm.type,
lang: state.spiderForm.lang,
col: state.spiderForm.col
col: state.spiderForm.col,
cron: state.spiderForm.cron,
cron_enabled: state.spiderForm.cron_enabled ? 1 : 0
})
.then(() => {
dispatch('getSpiderList')
@@ -76,7 +81,9 @@ const actions = {
getSpiderData ({ state, commit }, id) {
return request.get(`/spiders/${id}`)
.then(response => {
commit('SET_SPIDER_FORM', response.data)
let data = response.data
data.cron_enabled = !!data.cron_enabled
commit('SET_SPIDER_FORM', data)
})
},
deploySpider ({ state, dispatch }, id) {

View File

@@ -0,0 +1,15 @@
<template>
<div class="app-container">
Schedule List
</div>
</template>
<script>
export default {
name: 'ScheduleList'
}
</script>
<style scoped>
</style>