From 4edd3d250b414425fcab2df489d20324dd4cf1c5 Mon Sep 17 00:00:00 2001 From: Xu Zhimeng Date: Mon, 16 Oct 2023 19:26:51 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20Replot=E5=8A=9F=E8=83=BD=E5=AF=B9?= =?UTF-8?q?=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AnalyzeInteractiveToolModal/index.vue | 106 +++++++++++++----- 1 file changed, 80 insertions(+), 26 deletions(-) diff --git a/src/views/spectrumAnalysis/components/Modals/AnalyzeInteractiveToolModal/index.vue b/src/views/spectrumAnalysis/components/Modals/AnalyzeInteractiveToolModal/index.vue index 17559f6..2a42fd6 100644 --- a/src/views/spectrumAnalysis/components/Modals/AnalyzeInteractiveToolModal/index.vue +++ b/src/views/spectrumAnalysis/components/Modals/AnalyzeInteractiveToolModal/index.vue @@ -104,7 +104,7 @@ Undo
- Replot + Replot
Accept @@ -474,6 +474,7 @@ export default { isFitting: false, // 正在进行Fit操作 firstFittingChannel: null, // Fit操作时点击的第一个channel isAccepting: false, + isReploting: false, operationStack: [] // 操作记录 } @@ -529,7 +530,6 @@ export default { this.setChartOption(channelBaseLineChart, channelCountChart, channelPeakChart, channelBaseCPChart, barChart) this.list = table - } else { this.$message.error(message) } @@ -787,7 +787,13 @@ export default { this.channelBaseLineChart = channelBaseLineChart this.barChart = barChart - this.setChartOption(channelBaseLineChart, this.channelCountChart, channelPeakChart, this.channelBaseCPChart, barChart) + this.setChartOption( + channelBaseLineChart, + this.channelCountChart, + channelPeakChart, + this.channelBaseCPChart, + barChart + ) this.list = table }, @@ -796,7 +802,13 @@ export default { const { channelPeakChart, table } = result this.channelPeakChart = channelPeakChart - this.setChartOption(this.channelBaseLineChart, this.channelCountChart, channelPeakChart, this.channelBaseCPChart, this.barChart) + this.setChartOption( + this.channelBaseLineChart, + this.channelCountChart, + channelPeakChart, + this.channelBaseCPChart, + this.barChart + ) this.list = table }, @@ -1035,7 +1047,10 @@ export default { else { this.btnGroupType = 1 this.opts.notMerge = true - this.option.series.splice(this.option.series.length - 1, 1) // 去掉白色的基线副本 + const baseLineEditSeries = findSeriesByName(this.option.series, 'BaseLine_Edit') + const index = this.option.series.findIndex(item => item == baseLineEditSeries) + this.option.series.splice(index, 1) + this.clearRect() const baseLineSeries = findSeriesByName(this.option.series, 'BaseLine') @@ -1044,6 +1059,8 @@ export default { const baseLineCP = findSeriesByName(this.option.series, 'BaseLine_Ctrl_Point') baseLineCP.data = this.buildCPPointData(this.channelBaseCPChart) + this.redrawPeaks(this.channelPeakChart) + this.$nextTick(() => { this.resetChartOpts() }) @@ -1098,6 +1115,14 @@ export default { } }, + // 重绘Peaks + redrawPeaks(peakList) { + this.option.series = this.option.series.filter((item) => { + return !item.name.includes('Peak_') + }) + this.option.series.push(...this.buildPeaks(peakList)) + }, + /** * 设置小方块可拖拽 */ @@ -1231,26 +1256,53 @@ export default { }, // 将原先的基线和控制点移动到新位置 - handleReplot() { - const { xctrl, yctrl, yslope, baseline } = this.baseCtrls_Copy - const baseLineSeries = findSeriesByName(this.option.series, 'BaseLine') - baseLineSeries.data = baseline.map((val, index) => [index + 1, val]) + async handleReplot() { + try { + const { inputFileName: fileName } = this.sampleData + this.isReploting = true + const { success, result, message } = await postAction('/gamma/replotBaseLine', { + ...this.baseCtrls_Copy, + fileName, + replotNeeded: true + }) + if (success) { + const { chartData, peakSet, shapeData } = result - const baseLineCP = findSeriesByName(this.option.series, 'BaseLine_Ctrl_Point') - // 第一个控制点(因为第一个和最后一个不会被删除) - const firstCP = this.channelBaseCPChart[0] - const { color, size } = firstCP - const baseCPPoints = xctrl.map((xAxis, index) => { - return { - size, - color, - point: { - x: xAxis, - y: yctrl[index] - } + const { xctrl, yctrl, yslope, baseline } = this.baseCtrls_Copy + const baseLineSeries = findSeriesByName(this.option.series, 'BaseLine') + baseLineSeries.data = baseline.map((val, index) => [index + 1, val]) + + const baseLineCP = findSeriesByName(this.option.series, 'BaseLine_Ctrl_Point') + // 第一个控制点(因为第一个和最后一个不会被删除) + const firstCP = this.channelBaseCPChart[0] + const { color, size } = firstCP + const baseCPPoints = xctrl.map((xAxis, index) => { + return { + size, + color, + point: { + x: xAxis, + y: yctrl[index] + } + } + }) + baseLineCP.data = this.buildCPPointData(baseCPPoints) + + this.opts.notMerge = true + this.redrawPeaks(peakSet) + this.$nextTick(() => { + this.resetChartOpts() + }) + + this.BaseCtrls = cloneDeep(this.baseCtrls_Copy) + } else { + this.$message.error(message) } - }) - baseLineCP.data = this.buildCPPointData(baseCPPoints) + } catch (error) { + console.error(error) + } finally { + this.isReploting = false + } }, /** @@ -1272,8 +1324,8 @@ export default { // 确定对Baseline Control Points 的操作 async handleAccept() { - this.BaseCtrls = cloneDeep(this.baseCtrls_Copy) - const { baseline, xctrl, yctrl } = this.BaseCtrls + // this.BaseCtrls = cloneDeep(this.baseCtrls_Copy) + // const { baseline, xctrl, yctrl } = this.BaseCtrls // this.channelBaseLineChart.pointlist = baseline.map((val, index) => { // return { // x: index + 1, @@ -1298,10 +1350,12 @@ export default { try { this.isAccepting = true const { success, result, message } = await postAction('/gamma/acceptBaseLine', { - ...this.BaseCtrls, + ...this.baseCtrls_Copy, fileName }) if (success) { + this.BaseCtrls = cloneDeep(this.baseCtrls_Copy) + const { allData, barChart,