mirror of
https://github.com/crawlab-team/crawlab.git
synced 2026-01-22 17:31:03 +01:00
added pagination for tasks results
This commit is contained in:
@@ -107,6 +107,10 @@ class TaskApi(BaseApi):
|
||||
}, 500
|
||||
|
||||
def get_results(self, id):
|
||||
args = self.parser.parse_args()
|
||||
page_size = args.get('page_size') or 10
|
||||
page_num = args.get('page_num') or 1
|
||||
|
||||
task = db_manager.get('tasks', id=id)
|
||||
spider = db_manager.get('spiders', id=task['spider_id'])
|
||||
col_name = spider.get('col')
|
||||
@@ -117,6 +121,9 @@ class TaskApi(BaseApi):
|
||||
return {
|
||||
'status': 'ok',
|
||||
'fields': jsonify(fields),
|
||||
'total_count': db_manager.count(col_name, {'task_id': id}),
|
||||
'page_num': page_num,
|
||||
'page_size': page_size,
|
||||
'items': jsonify(items)
|
||||
}
|
||||
|
||||
|
||||
@@ -11,11 +11,13 @@
|
||||
</el-table>
|
||||
<div class="pagination">
|
||||
<el-pagination
|
||||
:current-page.sync="pagination.pageNum"
|
||||
@current-change="onPageChange"
|
||||
@size-change="onPageChange"
|
||||
:current-page.sync="pageNum"
|
||||
:page-sizes="[10, 20, 50, 100]"
|
||||
:page-size.sync="pagination.pageSize"
|
||||
:page-size.sync="pageSize"
|
||||
layout="sizes, prev, pager, next"
|
||||
:total="data.length">
|
||||
:total="total">
|
||||
</el-pagination>
|
||||
</div>
|
||||
</div>
|
||||
@@ -25,14 +27,21 @@
|
||||
export default {
|
||||
name: 'GeneralTableView',
|
||||
data () {
|
||||
return {
|
||||
pagination: {
|
||||
pageNum: 1,
|
||||
pageSize: 10
|
||||
}
|
||||
}
|
||||
return {}
|
||||
},
|
||||
props: {
|
||||
pageNum: {
|
||||
type: Number,
|
||||
default: 1
|
||||
},
|
||||
pageSize: {
|
||||
type: Number,
|
||||
default: 10
|
||||
},
|
||||
total: {
|
||||
type: Number,
|
||||
default: 0
|
||||
},
|
||||
columns: {
|
||||
type: Array,
|
||||
default () {
|
||||
@@ -52,10 +61,16 @@ export default {
|
||||
.map(d => d)
|
||||
.filter((d, index) => {
|
||||
// pagination
|
||||
const { pageNum, pageSize } = this.pagination
|
||||
const pageNum = this.pageNum
|
||||
const pageSize = this.pageSize
|
||||
return (pageSize * (pageNum - 1) <= index) && (index < pageSize * pageNum)
|
||||
})
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
onPageChange () {
|
||||
this.$emit('page-change')
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -9,9 +9,13 @@ const state = {
|
||||
taskLog: '',
|
||||
taskResultsData: [],
|
||||
taskResultsColumns: [],
|
||||
taskResultsTotalCount: 0,
|
||||
// pagination
|
||||
pageNum: 0,
|
||||
pageSize: 10
|
||||
pageSize: 10,
|
||||
// results
|
||||
resultsPageNum: 0,
|
||||
resultsPageSize: 10
|
||||
}
|
||||
|
||||
const getters = {}
|
||||
@@ -40,6 +44,15 @@ const mutations = {
|
||||
},
|
||||
SET_TASK_LIST_TOTAL_COUNT (state, value) {
|
||||
state.taskListTotalCount = value
|
||||
},
|
||||
SET_RESULTS_PAGE_NUM (state, value) {
|
||||
state.resultsPageNum = value
|
||||
},
|
||||
SET_RESULTS_PAGE_SIZE (state, value) {
|
||||
state.resultsPageSize = value
|
||||
},
|
||||
SET_TASK_RESULTS_TOTAL_COUNT (state, value) {
|
||||
state.taskResultsTotalCount = value
|
||||
}
|
||||
}
|
||||
|
||||
@@ -87,10 +100,15 @@ const actions = {
|
||||
})
|
||||
},
|
||||
getTaskResults ({ state, commit }, id) {
|
||||
return request.get(`/tasks/${id}/get_results`)
|
||||
return request.get(`/tasks/${id}/get_results`, {
|
||||
page_num: state.resultsPageNum,
|
||||
page_size: state.resultsPageSize
|
||||
})
|
||||
.then(response => {
|
||||
commit('SET_TASK_RESULTS_DATA', response.data.items)
|
||||
commit('SET_TASK_RESULTS_COLUMNS', response.data.fields)
|
||||
commit('SET_TASK_RESULTS_COLUMNS', response.data.fields)
|
||||
commit('SET_TASK_RESULTS_TOTAL_COUNT', response.data.total_count)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,7 +13,11 @@
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="Results" name="results">
|
||||
<general-table-view :data="taskResultsData" :columns="taskResultsColumns"/>
|
||||
<general-table-view :data="taskResultsData"
|
||||
:columns="taskResultsColumns"
|
||||
:page-num="resultsPageNum"
|
||||
:page-size="resultsPageSize"
|
||||
:total="taskResultsTotalCount"/>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</div>
|
||||
@@ -41,14 +45,31 @@ export default {
|
||||
...mapState('task', [
|
||||
'taskLog',
|
||||
'taskResultsData',
|
||||
'taskResultsColumns'
|
||||
'taskResultsColumns',
|
||||
'taskResultsTotalCount'
|
||||
]),
|
||||
...mapState('file', [
|
||||
'currentPath'
|
||||
]),
|
||||
...mapState('deploy', [
|
||||
'deployList'
|
||||
])
|
||||
]),
|
||||
resultsPageNum: {
|
||||
get () {
|
||||
return this.$store.state.task.resultsPageNum
|
||||
},
|
||||
set (value) {
|
||||
this.$store.commit('task/SET_RESULTS_PAGE_NUM', value)
|
||||
}
|
||||
},
|
||||
resultsPageSize: {
|
||||
get () {
|
||||
return this.$store.state.task.resultsPageSize
|
||||
},
|
||||
set (value) {
|
||||
this.$store.commit('task/SET_RESULTS_PAGE_SIZE', value)
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
onTabClick () {
|
||||
|
||||
Reference in New Issue
Block a user