diff --git a/crawlab/routes/tasks.py b/crawlab/routes/tasks.py
index 7d997187..24a2f7ca 100644
--- a/crawlab/routes/tasks.py
+++ b/crawlab/routes/tasks.py
@@ -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)
}
diff --git a/frontend/src/components/TableView/GeneralTableView.vue b/frontend/src/components/TableView/GeneralTableView.vue
index 42f13a57..97bd3b38 100644
--- a/frontend/src/components/TableView/GeneralTableView.vue
+++ b/frontend/src/components/TableView/GeneralTableView.vue
@@ -11,11 +11,13 @@
@@ -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')
+ }
}
}
diff --git a/frontend/src/store/modules/task.js b/frontend/src/store/modules/task.js
index 742f1c66..e578dd34 100644
--- a/frontend/src/store/modules/task.js
+++ b/frontend/src/store/modules/task.js
@@ -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)
})
}
}
diff --git a/frontend/src/views/task/TaskDetail.vue b/frontend/src/views/task/TaskDetail.vue
index 1ef99ba5..c4968ce4 100644
--- a/frontend/src/views/task/TaskDetail.vue
+++ b/frontend/src/views/task/TaskDetail.vue
@@ -13,7 +13,11 @@
-
+
@@ -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 () {