diff --git a/mindinsight/ui/src/views/train-manage/data-traceback.vue b/mindinsight/ui/src/views/train-manage/data-traceback.vue index 0624f675e92fd55ed3c2d70517cf6030854d08b7..b7f33677f43a15232aea5b1a213805cbb5fa8280 100644 --- a/mindinsight/ui/src/views/train-manage/data-traceback.vue +++ b/mindinsight/ui/src/views/train-manage/data-traceback.vue @@ -338,6 +338,9 @@ import Echarts from 'echarts'; export default { data() { return { + tableSortTimer: null, + showAllTimer: null, + unhideTimer: null, loading: true, errorData: true, tagDialogShow: false, @@ -363,6 +366,7 @@ export default { recordsNumber: 0, // Number of displayed records. showNumber: 0, + delayTime: 500, selectArrayValue: [], customizedColumnOptions: [], // Set the type of customized @@ -852,37 +856,43 @@ export default { * Unhide */ unhideRecords() { - this.showEchartPic = true; - this.$refs.table.clearSelection(); - if (this.parallelEchart) { - this.parallelEchart.clear(); - } - this.$store.commit('setHidenDirChecked', []); - if (this.hidenDirChecked.length) { - this.checkedSummary = []; - this.hidenDirChecked = []; + if (this.unhideTimer) { + clearTimeout(this.unhideTimer); + this.unhideTimer = null; } - this.checkOptions = []; - this.selectArrayValue = []; - this.basearr = []; - const params = { - body: {}, - }; - const tempParam = { - sorted_name: this.sortInfo.sorted_name, - sorted_type: this.sortInfo.sorted_type, - }; - this.summaryDirList = this.$store.state.summaryDirList; - this.tableFilter.summary_dir = { - in: this.summaryDirList, - }; - params.body = Object.assign( - params.body, - this.chartFilter, - tempParam, - this.tableFilter, - ); - this.queryLineagesData(params); + this.unhideTimer = setTimeout(() => { + this.showEchartPic = true; + this.$refs.table.clearSelection(); + if (this.parallelEchart) { + this.parallelEchart.clear(); + } + this.$store.commit('setHidenDirChecked', []); + if (this.hidenDirChecked.length) { + this.checkedSummary = []; + this.hidenDirChecked = []; + } + this.checkOptions = []; + this.selectArrayValue = []; + this.basearr = []; + const params = { + body: {}, + }; + const tempParam = { + sorted_name: this.sortInfo.sorted_name, + sorted_type: this.sortInfo.sorted_type, + }; + this.summaryDirList = this.$store.state.summaryDirList; + this.tableFilter.summary_dir = { + in: this.summaryDirList, + }; + params.body = Object.assign( + params.body, + this.chartFilter, + tempParam, + this.tableFilter, + ); + this.queryLineagesData(params); + }, this.delayTime); }, /** * Input search filtering in the select module @@ -1579,22 +1589,28 @@ export default { */ echartShowAllData() { // The first page is displayed. - this.initOver = false; - this.echartNoData = false; - this.showEchartPic = true; - this.selectCheckAll = true; - // checkOptions initializate to an empty array - this.checkOptions = []; - this.selectArrayValue = []; - this.basearr = []; - this.pagination.currentPage = 1; - this.$store.commit('setSummaryDirList', undefined); - this.$store.commit('setSelectedBarList', []); - if (this.parallelEchart) { - this.parallelEchart.clear(); + if (this.showAllTimer) { + clearTimeout(this.showAllTimer); + this.showAllTimer = null; } - this.$refs.table.clearSelection(); - this.init(); + this.showAllTimer = setTimeout(() => { + this.initOver = false; + this.echartNoData = false; + this.showEchartPic = true; + this.selectCheckAll = true; + // checkOptions initializate to an empty array + this.checkOptions = []; + this.selectArrayValue = []; + this.basearr = []; + this.pagination.currentPage = 1; + this.$store.commit('setSummaryDirList', undefined); + this.$store.commit('setSelectedBarList', []); + if (this.parallelEchart) { + this.parallelEchart.clear(); + } + this.$refs.table.clearSelection(); + this.init(); + }, this.delayTime); }, /** @@ -1649,25 +1665,31 @@ export default { * @param {Object} data */ tableSortChange(data) { - this.sortInfo.sorted_name = data.prop; - this.sortInfo.sorted_type = data.order; - const params = {}; - const tempParam = { - sorted_name: data.prop, - sorted_type: data.order, - }; - this.checkOptions = []; - this.selectArrayValue = []; - this.basearr = []; - this.pagination.currentPage = 1; - this.summaryDirList = this.$store.state.summaryDirList; - if (this.summaryDirList) { - this.tableFilter.summary_dir = {in: this.summaryDirList}; - } else { - this.tableFilter.summary_dir = undefined; + if (this.tableSortTimer) { + clearTimeout(this.tableSortTimer); + this.tableSortTimer = null; } - params.body = Object.assign({}, tempParam, this.tableFilter); - this.queryLineagesData(params); + this.tableSortTimer = setTimeout(() => { + this.sortInfo.sorted_name = data.prop; + this.sortInfo.sorted_type = data.order; + const params = {}; + const tempParam = { + sorted_name: data.prop, + sorted_type: data.order, + }; + this.checkOptions = []; + this.selectArrayValue = []; + this.basearr = []; + this.pagination.currentPage = 1; + this.summaryDirList = this.$store.state.summaryDirList; + if (this.summaryDirList) { + this.tableFilter.summary_dir = {in: this.summaryDirList}; + } else { + this.tableFilter.summary_dir = undefined; + } + params.body = Object.assign({}, tempParam, this.tableFilter); + this.queryLineagesData(params); + }, this.delayTime); }, /** @@ -1946,6 +1968,9 @@ export default { * Destroy the page */ destroyed() { + this.tableSortTimer = null; + this.showAllTimer = null; + this.unhideTimer = null; if (this.dataCheckedSummary && this.dataCheckedSummary.length) { const summaryDirList = []; this.dataCheckedSummary.forEach((item) => { diff --git a/mindinsight/ui/src/views/train-manage/model-traceback.vue b/mindinsight/ui/src/views/train-manage/model-traceback.vue index d73186902e3dcbd65692557f20be2f9cca21e12a..4c2e3198d7f9a699e63aca23fe48334b8d356a34 100644 --- a/mindinsight/ui/src/views/train-manage/model-traceback.vue +++ b/mindinsight/ui/src/views/train-manage/model-traceback.vue @@ -365,6 +365,8 @@ export default { watch: {}, data() { return { + sortChangeTimer: null, + unhideRecordsTimer: null, tagDialogShow: false, errorData: true, tagScope: {}, @@ -375,6 +377,7 @@ export default { // Number of data records returned by the interface. recordsNumber: 0, showNumber: 0, + delayTime: 500, showEchartPic: true, hideRecord: false, hidenDirChecked: [], @@ -1430,58 +1433,64 @@ export default { * Unhide */ unhideRecords() { - this.showEchartPic = true; - this.$refs.table.clearSelection(); - this.$store.commit('setHidenDirChecked', []); - if (this.hidenDirChecked.length) { - this.checkedSummary = []; - this.hidenDirChecked = []; + if (this.unhideRecordsTimer) { + clearTimeout(this.unhideRecordsTimer); + this.unhideRecordsTimer = null; } - const params = { - body: {}, - }; - const tempParam = { - sorted_name: this.sortInfo.sorted_name, - sorted_type: this.sortInfo.sorted_type, - }; - this.summaryDirList = this.$store.state.summaryDirList; - this.tableFilter.summary_dir = { - in: this.summaryDirList, - }; - params.body = Object.assign( - params.body, - this.chartFilter, - tempParam, - this.tableFilter, - ); - RequestService.queryLineagesData(params).then( - (res) => { - if (res && res.data && res.data.object) { - this.errorData = false; - const list = this.setDataOfModel(res.data.object); - this.echart.allData = list; - this.echart.brushData = list; - this.echart.showData = this.echart.brushData; - this.$nextTick(() => { - this.resizeChart(); - this.initChart(); - }); - const showList = list.slice( - (this.pagination.currentPage - 1) * this.pagination.pageSize, - this.pagination.currentPage * this.pagination.pageSize, - ); - this.table.data = showList; - this.recordsNumber = this.table.data.length; - this.showNumber = this.table.data.length; - this.pagination.total = res.data.count || 0; - } else { + this.unhideRecordsTimer = setTimeout(() => { + this.showEchartPic = true; + this.$refs.table.clearSelection(); + this.$store.commit('setHidenDirChecked', []); + if (this.hidenDirChecked.length) { + this.checkedSummary = []; + this.hidenDirChecked = []; + } + const params = { + body: {}, + }; + const tempParam = { + sorted_name: this.sortInfo.sorted_name, + sorted_type: this.sortInfo.sorted_type, + }; + this.summaryDirList = this.$store.state.summaryDirList; + this.tableFilter.summary_dir = { + in: this.summaryDirList, + }; + params.body = Object.assign( + params.body, + this.chartFilter, + tempParam, + this.tableFilter, + ); + RequestService.queryLineagesData(params).then( + (res) => { + if (res && res.data && res.data.object) { + this.errorData = false; + const list = this.setDataOfModel(res.data.object); + this.echart.allData = list; + this.echart.brushData = list; + this.echart.showData = this.echart.brushData; + this.$nextTick(() => { + this.resizeChart(); + this.initChart(); + }); + const showList = list.slice( + (this.pagination.currentPage - 1) * this.pagination.pageSize, + this.pagination.currentPage * this.pagination.pageSize, + ); + this.table.data = showList; + this.recordsNumber = this.table.data.length; + this.showNumber = this.table.data.length; + this.pagination.total = res.data.count || 0; + } else { + this.errorData = true; + } + }, + (error) => { this.errorData = true; - } - }, - (error) => { - this.errorData = true; - }, - ); + }, + ); + }, this.delayTime); }, /** @@ -1489,56 +1498,62 @@ export default { * @param {Object} column current column */ sortChange(column) { - this.sortInfo.sorted_name = column.prop; - this.sortInfo.sorted_type = column.order; - this.recordsNumber = 0; - this.showNumber = 0; - this.getStoreList(); - const tempParam = { - limit: this.pagination.pageSize, - offset: 0, - sorted_name: this.sortInfo.sorted_name, - sorted_type: this.sortInfo.sorted_type, - }; - const params = {}; - params.body = Object.assign( - {}, - tempParam, - this.tableFilter, - this.chartFilter || {}, - ); - RequestService.queryLineagesData(params) - .then( - (res) => { - if (res && res.data && res.data.object) { - this.errorData = false; - const list = this.setDataOfModel(res.data.object); - const tempList = list.slice(0, this.pagination.pageSize); - this.recordsNumber = tempList.length; - if (this.hidenDirChecked.length) { - this.hidenDirChecked.forEach((dir) => { - tempList.forEach((item, index) => { - if (item.summary_dir === dir) { - tempList.splice(index, 1); - } + if (this.sortChangeTimer) { + clearTimeout(this.sortChangeTimer); + this.sortChangeTimer = null; + } + this.sortChangeTimer = setTimeout(() => { + this.sortInfo.sorted_name = column.prop; + this.sortInfo.sorted_type = column.order; + this.recordsNumber = 0; + this.showNumber = 0; + this.getStoreList(); + const tempParam = { + limit: this.pagination.pageSize, + offset: 0, + sorted_name: this.sortInfo.sorted_name, + sorted_type: this.sortInfo.sorted_type, + }; + const params = {}; + params.body = Object.assign( + {}, + tempParam, + this.tableFilter, + this.chartFilter || {}, + ); + RequestService.queryLineagesData(params) + .then( + (res) => { + if (res && res.data && res.data.object) { + this.errorData = false; + const list = this.setDataOfModel(res.data.object); + const tempList = list.slice(0, this.pagination.pageSize); + this.recordsNumber = tempList.length; + if (this.hidenDirChecked.length) { + this.hidenDirChecked.forEach((dir) => { + tempList.forEach((item, index) => { + if (item.summary_dir === dir) { + tempList.splice(index, 1); + } + }); }); - }); + } + this.showNumber = tempList.length; + this.table.data = tempList; + this.pagination.total = res.data.count || 0; + this.pagination.currentPage = 1; + } else { + this.errorData = true; } - this.showNumber = tempList.length; - this.table.data = tempList; - this.pagination.total = res.data.count || 0; - this.pagination.currentPage = 1; - } else { + }, + (error) => { this.errorData = true; - } - }, - (error) => { - this.errorData = true; - }, - ) - .catch(() => { - this.errorData = true; - }); + }, + ) + .catch(() => { + this.errorData = true; + }); + }, this.delayTime); }, /** @@ -1986,6 +2001,8 @@ export default { * Destroy the page */ destroyed() { + this.sortChangeTimer = null; + this.unhideRecordsTimer = null; if (this.checkedSummary.length) { const tempList = []; this.checkedSummary.forEach((item) => {