| @@ -174,6 +174,7 @@ export default { | |||
| curBenchX: 'stepData', // Front axle reference | |||
| curAxisName: this.$t('scalar.step'), // Current chart tip | |||
| axisBenchChangeTimer: null, // Horizontal axis reference switching timing | |||
| summaryInOnePoint: {}, // The summary chart which in 'one-point' state | |||
| }; | |||
| }, | |||
| @@ -198,6 +199,13 @@ export default { | |||
| clearTimeout(this.charResizeTimer); | |||
| this.charResizeTimer = null; | |||
| } | |||
| this.originDataArr.forEach((sampleObject) => { | |||
| if (sampleObject.charObj) { | |||
| sampleObject.charObj.off('dataZoom'); | |||
| sampleObject.charObj.off('restore'); | |||
| } | |||
| }); | |||
| }, | |||
| mounted() { | |||
| document.title = `${this.$t('summaryManage.comparePlate')}-MindInsight`; | |||
| @@ -510,9 +518,7 @@ export default { | |||
| data: [], | |||
| type: 'line', | |||
| showSymbol: false, | |||
| lineStyle: { | |||
| color: sampleObject.colors[summaryIndex], | |||
| }, | |||
| color: sampleObject.colors[summaryIndex], | |||
| }; | |||
| const dataObjBackend = { | |||
| name: curBackName, | |||
| @@ -550,7 +556,9 @@ export default { | |||
| legendSelectData[summaryName] = false; | |||
| legendSelectData[curBackName] = false; | |||
| } | |||
| if (dataObj.data.length === 1 || this.summaryInOnePoint[dataObj.name]) { | |||
| dataObj.showSymbol = true; | |||
| } | |||
| seriesData.push(dataObj, dataObjBackend); | |||
| }); | |||
| if (returnFlag) { | |||
| @@ -662,7 +670,6 @@ export default { | |||
| left: 80, | |||
| right: sampleObject.fullScreen ? 80 : 10, | |||
| }, | |||
| animation: true, | |||
| dataZoom: [ | |||
| { | |||
| show: false, | |||
| @@ -857,10 +864,9 @@ export default { | |||
| /** | |||
| * Updating or creating a specified chart | |||
| * @param {Number} sampleIndex Chart subscript | |||
| * @param {Boolen} resetAnimate Restart the animation | |||
| */ | |||
| updateOrCreateChar(sampleIndex, resetAnimate) { | |||
| updateOrCreateChar(sampleIndex) { | |||
| const sampleObject = this.originDataArr[sampleIndex]; | |||
| if (!sampleObject) { | |||
| @@ -883,12 +889,123 @@ export default { | |||
| null, | |||
| ); | |||
| sampleObject.charObj.setOption(sampleObject.charData.charOption, true); | |||
| this.$nextTick(() => { | |||
| sampleObject.charObj.on('dataZoom', (params) => { | |||
| this.dataZoomWatcher(params, sampleObject); | |||
| }); | |||
| sampleObject.charObj.on('restore', () => { | |||
| this.restoreWatcher(sampleObject); | |||
| }); | |||
| }); | |||
| } | |||
| }, | |||
| /** | |||
| * The logic of reset chart option to keep showSymbol right | |||
| * @param {Object} sampleObject Chart object | |||
| */ | |||
| resetOption(sampleObject) { | |||
| const onePoint = 1; | |||
| const series = sampleObject.charData.charOption.series; | |||
| series.forEach((data) => { | |||
| if (data.data.length > onePoint) { | |||
| data.showSymbol = false; | |||
| this.summaryInOnePoint[data.name] = false; | |||
| } else { | |||
| data.showSymbol = true; | |||
| this.summaryInOnePoint[data.name] = true; | |||
| } | |||
| }); | |||
| this.$nextTick(() => { | |||
| sampleObject.charObj.setOption({ | |||
| series: series, | |||
| }); | |||
| }); | |||
| }, | |||
| // If summary's display reopen the animation | |||
| if (resetAnimate) { | |||
| sampleObject.charData.charOption.animation = true; | |||
| /** | |||
| * The watcher of restore to keep showSymbol right | |||
| * @param {Object} sampleObject Chart object | |||
| */ | |||
| restoreWatcher(sampleObject) { | |||
| const selected = Object.keys(this.multiSelectedSummaryNames); | |||
| if (!selected.length) { | |||
| return; | |||
| } | |||
| this.resetOption(sampleObject); | |||
| }, | |||
| /** | |||
| * The watcher of dataZoom to keep showSymbol right | |||
| * @param {Object} params params | |||
| * @param {Object} sampleObject Chart object | |||
| */ | |||
| dataZoomWatcher(params, sampleObject) { | |||
| const onePoint = 1; | |||
| const selected = Object.keys(this.multiSelectedSummaryNames); | |||
| if (!selected.length) { | |||
| return; | |||
| } | |||
| const [xStart, xEnd] = [params.batch[0].startValue, params.batch[0].endValue]; | |||
| const [yStart, yEnd] = [params.batch[1].startValue, params.batch[1].endValue]; | |||
| if (typeof xStart === 'undefined') { | |||
| // DataZoom back to the original state | |||
| this.resetOption(sampleObject); | |||
| } else { | |||
| const series = sampleObject.charData.charOption.series; | |||
| series.forEach((data) => { | |||
| if (selected.includes(data.name)) { | |||
| let count = 0; | |||
| for (let i = 0; i < data.data.length; i++) { | |||
| const [xValue, yValue] = data.data[i]; | |||
| if (this.calIfExist(xStart, xEnd, yStart, yEnd, xValue, yValue)) { | |||
| count++; | |||
| } | |||
| if (count > onePoint) { | |||
| break; | |||
| } | |||
| } | |||
| // Keep showSymbol right | |||
| if (count === onePoint) { | |||
| if (!data.showSymbol) { | |||
| data.showSymbol = true; | |||
| this.summaryInOnePoint[data.name] = true; | |||
| this.$nextTick(() => { | |||
| sampleObject.charObj.setOption({ | |||
| series: series, | |||
| }); | |||
| }); | |||
| } | |||
| } else { | |||
| if (data.showSymbol) { | |||
| data.showSymbol = false; | |||
| this.summaryInOnePoint[data.name] = false; | |||
| this.$nextTick(() => { | |||
| sampleObject.charObj.setOption({ | |||
| series: series, | |||
| }); | |||
| }); | |||
| } | |||
| } | |||
| } | |||
| }); | |||
| } | |||
| }, | |||
| /** | |||
| * The logic of cal if point in zoom area | |||
| * @param {Number} xStart | |||
| * @param {Number} xEnd | |||
| * @param {Number} yStart | |||
| * @param {Number} yEnd | |||
| * @param {Number} xValue | |||
| * @param {Number} yValue | |||
| * @return {Boolean} | |||
| */ | |||
| calIfExist(xStart, xEnd, yStart, yEnd, xValue, yValue) { | |||
| const xExist = xStart <= xValue && xValue <= xEnd; | |||
| const yEyist = yStart <= yValue && yValue <= yEnd; | |||
| return xExist && yEyist; | |||
| }, | |||
| /** | |||
| @@ -974,24 +1091,33 @@ export default { | |||
| } | |||
| this.axisBenchChangeTimer = setTimeout(() => { | |||
| // Update the horizontal benchmark of the default data | |||
| this.summaryInOnePoint = {}; | |||
| const onePoint = 1; | |||
| this.curPageArr.forEach((sampleObject) => { | |||
| if (sampleObject.charObj) { | |||
| sampleObject.charData.oriData.forEach((originData, index) => { | |||
| const series = sampleObject.charData.charOption.series; | |||
| if (sampleObject.log) { | |||
| sampleObject.charData.charOption.series[ | |||
| index * 2 | |||
| ].data = this.formateSmoothData( | |||
| series[index * 2].data = this.formateSmoothData( | |||
| sampleObject.charData.oriData[index].logData[this.curBenchX], | |||
| ); | |||
| sampleObject.charData.charOption.series[index * 2 + 1].data = | |||
| if (series[index * 2].data.length === onePoint) { | |||
| series[index * 2].showSymbol = true; | |||
| } else { | |||
| series[index * 2].showSymbol = false; | |||
| } | |||
| series[index * 2 + 1].data = | |||
| sampleObject.charData.oriData[index].logData[this.curBenchX]; | |||
| } else { | |||
| sampleObject.charData.charOption.series[ | |||
| index * 2 | |||
| ].data = this.formateSmoothData( | |||
| series[index * 2].data = this.formateSmoothData( | |||
| sampleObject.charData.oriData[index].valueData[this.curBenchX], | |||
| ); | |||
| sampleObject.charData.charOption.series[index * 2 + 1].data = | |||
| if (series[index * 2].data.length === onePoint) { | |||
| series[index * 2].showSymbol = true; | |||
| } else { | |||
| series[index * 2].showSymbol = false; | |||
| } | |||
| series[index * 2 + 1].data = | |||
| sampleObject.charData.oriData[index].valueData[ | |||
| this.curBenchX | |||
| ]; | |||
| @@ -1084,8 +1210,7 @@ export default { | |||
| setTimeout(() => { | |||
| // Refresh the current page chart | |||
| this.curPageArr.forEach((sampleObject) => { | |||
| sampleObject.charData.charOption.animation = false; | |||
| this.updateOrCreateChar(sampleObject.sampleIndex, true); | |||
| this.updateOrCreateChar(sampleObject.sampleIndex); | |||
| }); | |||
| }, 0); | |||
| }, | |||
| @@ -1139,6 +1264,7 @@ export default { | |||
| this.originDataArr = []; | |||
| this.oriDataDictionaries = {}; | |||
| this.curPageArr = []; | |||
| this.summaryInOnePoint = {}; | |||
| }, | |||
| /** | |||
| @@ -1587,22 +1713,30 @@ export default { | |||
| sampleObject.charData.charOption.toolbox.feature.myTool2.iconStyle.borderColor = | |||
| '#666'; | |||
| } | |||
| const onePoint = 1; | |||
| sampleObject.charData.oriData.forEach((originData, index) => { | |||
| const series = sampleObject.charData.charOption.series; | |||
| if (log) { | |||
| sampleObject.charData.charOption.series[ | |||
| index * 2 | |||
| ].data = this.formateSmoothData( | |||
| series[index * 2].data = this.formateSmoothData( | |||
| sampleObject.charData.oriData[index].logData[this.curBenchX], | |||
| ); | |||
| sampleObject.charData.charOption.series[index * 2 + 1].data = | |||
| if (series[index * 2].data.length === onePoint) { | |||
| series[index * 2].showSymbol = true; | |||
| } else { | |||
| series[index * 2].showSymbol = false; | |||
| } | |||
| series[index * 2 + 1].data = | |||
| sampleObject.charData.oriData[index].logData[this.curBenchX]; | |||
| } else { | |||
| sampleObject.charData.charOption.series[ | |||
| index * 2 | |||
| ].data = this.formateSmoothData( | |||
| series[index * 2].data = this.formateSmoothData( | |||
| sampleObject.charData.oriData[index].valueData[this.curBenchX], | |||
| ); | |||
| sampleObject.charData.charOption.series[index * 2 + 1].data = | |||
| if (series[index * 2].data.length === onePoint) { | |||
| series[index * 2].showSymbol = true; | |||
| } else { | |||
| series[index * 2].showSymbol = false; | |||
| } | |||
| series[index * 2 + 1].data = | |||
| sampleObject.charData.oriData[index].valueData[this.curBenchX]; | |||
| } | |||
| }); | |||