mirror of
https://github.com/crawlab-team/crawlab.git
synced 2026-01-26 17:49:15 +01:00
added setup.py
This commit is contained in:
73
frontend/src/components/InfoView/NodeInfoView.vue
Normal file
73
frontend/src/components/InfoView/NodeInfoView.vue
Normal file
@@ -0,0 +1,73 @@
|
||||
<template>
|
||||
<div class="info-view">
|
||||
<el-row>
|
||||
<el-form label-width="150px"
|
||||
:model="nodeForm"
|
||||
ref="nodeForm"
|
||||
class="node-form"
|
||||
label-position="right">
|
||||
<el-form-item label="Node Name">
|
||||
<el-input v-model="nodeForm.name" placeholder="Node Name" disabled></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="Node IP" prop="ip" required>
|
||||
<el-input v-model="nodeForm.ip" placeholder="Node IP" :disabled="isView"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="Node Port" prop="port" required>
|
||||
<el-input v-model="nodeForm.port" placeholder="Node Port" :disabled="isView"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="Description">
|
||||
<el-input type="textarea" v-model="nodeForm.description" placeholder="Description" :disabled="isView">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-row>
|
||||
<el-row class="button-container" v-if="!isView">
|
||||
<el-button type="success" @click="onSave">Save</el-button>
|
||||
</el-row>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
mapState
|
||||
} from 'vuex'
|
||||
|
||||
export default {
|
||||
name: 'NodeInfoView',
|
||||
props: {
|
||||
isView: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapState('node', [
|
||||
'nodeForm'
|
||||
])
|
||||
},
|
||||
methods: {
|
||||
onSave () {
|
||||
this.$refs.nodeForm.validate(valid => {
|
||||
if (valid) {
|
||||
this.$store.dispatch('node/editNode')
|
||||
.then(() => {
|
||||
this.$message.success('Node has been saved successfully')
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.node-form {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.button-container {
|
||||
padding: 0 10px;
|
||||
width: 100%;
|
||||
text-align: right;
|
||||
}
|
||||
</style>
|
||||
112
frontend/src/components/InfoView/SpiderInfoView.vue
Normal file
112
frontend/src/components/InfoView/SpiderInfoView.vue
Normal file
@@ -0,0 +1,112 @@
|
||||
<template>
|
||||
<div class="info-view">
|
||||
<el-row>
|
||||
<el-form label-width="150px"
|
||||
:model="spiderForm"
|
||||
ref="spiderForm"
|
||||
class="spider-form"
|
||||
label-position="right">
|
||||
<el-form-item label="Spider ID">
|
||||
<el-input v-model="spiderForm._id.$oid" placeholder="Spider ID" disabled></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="Spider Name">
|
||||
<el-input v-model="spiderForm.name" placeholder="Spider Name" :disabled="isView"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="Source Folder">
|
||||
<el-input v-model="spiderForm.src" placeholder="Source Folder" disabled></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="Execute Command" prop="cmd" :rule="cmdRule" required>
|
||||
<el-input v-model="spiderForm.cmd" placeholder="Execute Command"
|
||||
:disabled="isView"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="Spider Type">
|
||||
<el-select v-model="spiderForm.type" placeholder="Select Spider Type" :disabled="isView" clearable>
|
||||
<el-option value="scrapy" label="Scrapy"></el-option>
|
||||
<el-option value="pyspider" label="PySpider"></el-option>
|
||||
<el-option value="webmagic" label="WebMagic"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="Language">
|
||||
<el-select v-model="spiderForm.lang" placeholder="Select Language" :disabled="isView" clearable>
|
||||
<el-option value="python" label="Python"></el-option>
|
||||
<el-option value="javascript" label="JavaScript"></el-option>
|
||||
<el-option value="java" label="Java"></el-option>
|
||||
<el-option value="go" label="Go"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-row>
|
||||
<el-row class="button-container" v-if="!isView">
|
||||
<el-button type="success" @click="onRun">Run</el-button>
|
||||
<el-button type="primary" @click="onDeploy">Deploy</el-button>
|
||||
<el-button type="success" @click="onSave">Save</el-button>
|
||||
</el-row>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
mapState
|
||||
} from 'vuex'
|
||||
|
||||
export default {
|
||||
name: 'SpiderInfoView',
|
||||
props: {
|
||||
isView: {
|
||||
default: false,
|
||||
type: Boolean
|
||||
}
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
cmdRule: [
|
||||
{ message: 'Execute Command should not be empty', required: true }
|
||||
]
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapState('spider', [
|
||||
'spiderForm'
|
||||
])
|
||||
},
|
||||
methods: {
|
||||
onRun () {
|
||||
this.$refs['spiderForm'].validate(res => {
|
||||
if (res) {
|
||||
this.$store.commit('dialogView/SET_DIALOG_VISIBLE', true)
|
||||
this.$store.commit('dialogView/SET_DIALOG_TYPE', 'spiderRun')
|
||||
}
|
||||
})
|
||||
},
|
||||
onDeploy () {
|
||||
this.$store.commit('dialogView/SET_DIALOG_VISIBLE', true)
|
||||
this.$store.commit('dialogView/SET_DIALOG_TYPE', 'spiderDeploy')
|
||||
},
|
||||
onSave () {
|
||||
this.$refs['spiderForm'].validate(res => {
|
||||
if (res) {
|
||||
this.$store.dispatch('spider/editSpider')
|
||||
.then(() => {
|
||||
this.$message.success('Spider info has been saved successfully')
|
||||
})
|
||||
.catch(error => {
|
||||
this.$message.error(error)
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.spider-form {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.button-container {
|
||||
padding: 0 10px;
|
||||
width: 100%;
|
||||
text-align: right;
|
||||
}
|
||||
</style>
|
||||
89
frontend/src/components/InfoView/TaskInfoView.vue
Normal file
89
frontend/src/components/InfoView/TaskInfoView.vue
Normal file
@@ -0,0 +1,89 @@
|
||||
<template>
|
||||
<div class="info-view">
|
||||
<el-row>
|
||||
<el-form label-width="150px"
|
||||
:model="taskForm"
|
||||
ref="nodeForm"
|
||||
class="node-form"
|
||||
label-position="right">
|
||||
<el-form-item label="Task ID">
|
||||
<el-input v-model="taskForm._id" placeholder="Task ID" disabled></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="Status">
|
||||
<el-tag type="success" v-if="taskForm.status === 'SUCCESS'">SUCCESS</el-tag>
|
||||
<el-tag type="warning" v-else-if="taskForm.status === 'PENDING'">PENDING</el-tag>
|
||||
<el-tag type="danger" v-else-if="taskForm.status === 'FAILURE'">FAILURE</el-tag>
|
||||
<el-tag type="info" v-else>{{taskForm.status}}</el-tag>
|
||||
</el-form-item>
|
||||
<el-form-item label="Spider Version">
|
||||
<el-input v-model="taskForm.spider_version" placeholder="Log File Path" disabled></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="Log File Path">
|
||||
<el-input v-model="taskForm.log_file_path" placeholder="Log File Path" disabled></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="Create Timestamp">
|
||||
<el-input v-model="taskForm.create_ts" placeholder="Create Timestamp" disabled></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="Finish Timestamp">
|
||||
<el-input v-model="taskForm.finish_ts" placeholder="Finish Timestamp" disabled></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="Duration (sec)">
|
||||
<el-input v-model="taskForm.duration" placeholder="Duration" disabled></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="Error Message" v-if="taskForm.status === 'FAILURE'">
|
||||
<div class="error-message">
|
||||
{{taskForm.result}}
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-row>
|
||||
<el-row class="button-container">
|
||||
<el-button type="danger" @click="onRestart">Restart</el-button>
|
||||
</el-row>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
mapState
|
||||
} from 'vuex'
|
||||
|
||||
export default {
|
||||
name: 'NodeInfoView',
|
||||
computed: {
|
||||
...mapState('task', [
|
||||
'taskForm'
|
||||
])
|
||||
},
|
||||
methods: {
|
||||
Restart () {
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.node-form {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.button-container {
|
||||
padding: 0 10px;
|
||||
width: 100%;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.el-tag {
|
||||
height: 36px;
|
||||
line-height: 36px;
|
||||
}
|
||||
|
||||
.error-message {
|
||||
background-color: rgba(245, 108, 108, .1);
|
||||
color: #f56c6c;
|
||||
border: 1px solid rgba(245, 108, 108, .2);
|
||||
border-radius: 4px;
|
||||
line-height: 18px;
|
||||
padding: 5px 10px;
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user