From 90017662ed81aef11e368f3c0c84540fdd17535c Mon Sep 17 00:00:00 2001 From: Xu Zhimeng Date: Tue, 26 Sep 2023 14:39:44 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=A7=A3=E5=86=B3scatterGL=E5=9C=A8?= =?UTF-8?q?=E5=90=84=E7=A7=8D=E6=83=85=E5=86=B5=E4=B8=8B=E5=8F=96=E5=80=BC?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E7=9A=84=E6=B8=B2=E6=9F=93=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/spectrumAnalysis/gamma-analysis.vue | 124 +++++++++++------- 1 file changed, 76 insertions(+), 48 deletions(-) diff --git a/src/views/spectrumAnalysis/gamma-analysis.vue b/src/views/spectrumAnalysis/gamma-analysis.vue index dd7374b..90d01f4 100644 --- a/src/views/spectrumAnalysis/gamma-analysis.vue +++ b/src/views/spectrumAnalysis/gamma-analysis.vue @@ -17,7 +17,7 @@ v-if="!isLoading" slot="content" @change="handleGraphAssistanceChange" - @reset="handleReset" + @reset="handleResetChart" /> { - this.clearBrush(this.getChart()) + if (this.timer) { + window.clearTimeout(this.timer) + } + this.timer = setTimeout(() => { + this.clearBrush() }, 0) }, - clearBrush(chart) { + clearBrush() { + const chart = this.getChart() // 清理刷选的范围 chart.dispatchAction({ type: 'brush', @@ -970,6 +978,7 @@ export default { // 改为不可刷选状态 chart.dispatchAction({ type: 'takeGlobalCursor', + brushOption: false }) }, @@ -986,13 +995,18 @@ export default { const point1 = chart.convertFromPixel({ seriesIndex: 0 }, [minX, minY]).map((num) => parseInt(num.toFixed())) const point2 = chart.convertFromPixel({ seriesIndex: 0 }, [maxX, maxY]).map((num) => parseInt(num.toFixed())) + // 拿到之前的最大值 const xAxisMax = getAxisMax(chart, 'xAxis') - const yAxisMax = this.option.yAxis.max + const yAxisMax = getAxisMax(chart, 'yAxis') + + // 拿到之前的最小值 + const xAxisMin = this.option.xAxis.min + const yAxisMin = this.option.yAxis.min let [x1, y2, x2, y1] = [...point1, ...point2] // 根据解析出的数据确定真实的范围 - const xAxisLimit = rangeNumber(1, xAxisMax) - const yAxisLimit = rangeNumber(1, yAxisMax) + const xAxisLimit = rangeNumber(xAxisMin, xAxisMax) + const yAxisLimit = rangeNumber(yAxisMin, yAxisMax) x1 = xAxisLimit(x1) x2 = xAxisLimit(x2) @@ -1020,8 +1034,6 @@ export default { this.halfHeightPixel = rectHeightPixel / 2 } - this.clearBrush(chart) - this.$nextTick(() => { this.rangeScatter() }) @@ -1029,12 +1041,9 @@ export default { /** * 因scatterGL 不受axis中max和min的控制,手动处理溢出部分 - * @param {*} x1 xAxis min - * @param {*} x2 xAxis max - * @param {*} y1 yAxis min - * @param {*} y2 yAxis max + * @param {Boolean} isReset 是否重置到初始状态 */ - rangeScatter() { + rangeScatter(isReset) { if (!this.isScatter()) { return } @@ -1050,23 +1059,33 @@ export default { const channelSpectrumData = { ...this.shadowChannelChart, - pointlist: this.pointlistLimit(this.shadowChannelChart.pointlist, x1, x2, y1, y2), + pointlist: isReset + ? this.pointlistLimitY(this.shadowChannelChart.pointlist) + : this.pointlistLimit(this.shadowChannelChart.pointlist, x1, x2, y1, y2), } const energySpectrumData = { ...this.shadowEnergyChart, - pointlist: this.pointlistLimit(this.shadowEnergyChart.pointlist, x1, x2, y1, y2), + pointlist: isReset + ? this.pointlistLimitY(this.shadowEnergyChart.pointlist) + : this.pointlistLimit(this.shadowEnergyChart.pointlist, x1, x2, y1, y2), } this.redrawLineBySeriesName('Spectrum', energySpectrumData, channelSpectrumData) - const channelCompareLine = { - ...this.channelCompareLine, - pointlist: this.pointlistLimit(this.channelCompareLine.pointlist, x1, x2, y1, y2), + if (this.channelCompareLine) { + const channelCompareLine = { + ...this.channelCompareLine, + pointlist: isReset + ? this.pointlistLimitY(this.channelCompareLine.pointlist) + : this.pointlistLimit(this.channelCompareLine.pointlist, x1, x2, y1, y2), + } + const energyCompareLine = { + ...this.energyCompareLine, + pointlist: isReset + ? this.pointlistLimitY(this.energyCompareLine.pointlist) + : this.pointlistLimit(this.energyCompareLine.pointlist, x1, x2, y1, y2), + } + this.redrawLineBySeriesName('Compare', energyCompareLine, channelCompareLine) } - const energyCompareLine = { - ...this.energyCompareLine, - pointlist: this.pointlistLimit(this.energyCompareLine.pointlist, x1, x2, y1, y2), - } - this.redrawLineBySeriesName('Compare', energyCompareLine, channelCompareLine) }, /** @@ -1081,6 +1100,10 @@ export default { return pointlist.filter(({ x, y }) => x >= x1 && x <= x2 && y >= y1 && y <= y2) }, + pointlistLimitY(pointlist) { + return pointlist.filter(({ y }) => y >= 1) + }, + // 在右上角缩略图中设置范围 setThumbnailChartRect(x1, y2, x2, y1) { this.thumbnailChartRect = [x1, y2, x2, y1] @@ -1121,7 +1144,11 @@ export default { const [x1, y2, x2, y1] = this.thumbnailChartRect const halfWidth = Math.ceil((x2 - x1) / 2) - const [, maxYAxisPixel] = thumbnailChart.convertToPixel({ seriesIndex: 0 }, [0, this.thumbnailOption.yAxis.max]) // 缩略图最大值转为pix + // 缩略图最大值转为pix + const [, maxYAxisPixel] = thumbnailChart.convertToPixel({ seriesIndex: 0 }, [ + 0, + getAxisMax(thumbnailChart, 'yAxis'), + ]) const [, minYAxisPixel] = thumbnailChart.convertToPixel({ seriesIndex: 0 }, [0, 1]) let [xAxis, yAxis] = point @@ -1156,18 +1183,19 @@ export default { this.option.yAxis.min = minYAxis this.option.yAxis.max = maxYAxis + + this.$nextTick(() => { + this.rangeScatter() + }) } }, // 重置 - handleReset() { - const spectrumLineMaxX = Math.max(...this.shadowChannelChart.pointlist.map(({ x }) => x)) - const spectrumLineMaxY = Math.max(...this.shadowChannelChart.pointlist.map(({ y }) => y)) - + handleResetChart() { this.option.xAxis.min = 1 - this.option.xAxis.max = spectrumLineMaxX + this.option.xAxis.max = 'dataMax' this.option.yAxis.min = 1 - this.option.yAxis.max = spectrumLineMaxY + this.option.yAxis.max = 'dataMax' const thumbnailSpectrumLineSeries = findSeriesByName(this.thumbnailOption.series, 'Spectrum') thumbnailSpectrumLineSeries.markLine.data = [] @@ -1175,13 +1203,13 @@ export default { this.closePeakInfomationTooltip() this.$nextTick(() => { - this.rangeScatter() + this.rangeScatter(true) }) }, // 从分析工具刷新部分数据 handleRefresh(data) { - this.reset() + this.handleResetState() data.DetailedInformation = this.detailedInfomation this.dataProsess(data) }, @@ -1198,6 +1226,7 @@ export default { this.$message.warn('Sample is Loading') return } + this.handleResetChart() this.clearCompareLine() this.compareFileListModalVisible = true }, @@ -1213,8 +1242,7 @@ export default { } this.$nextTick(() => { - const yAxisMax = getAxisMax(this.getChart(), 'yAxis') - this.thumbnailOption.yAxis.max = yAxisMax + this.thumbnailOption.yAxis.max = getAxisMax(this.getChart(), 'yAxis') }) }, @@ -1225,8 +1253,8 @@ export default { compareLine.data = [] this.resetThumbnailChartDataMax() } - this.channelCompareLine = [] - this.energyCompareLine = [] + this.channelCompareLine = undefined + this.energyCompareLine = undefined }, // 重新分析 @@ -1242,7 +1270,7 @@ export default { try { this.isLoading = true - this.reset() + this.handleResetState() const { inputFileName: fileName } = this.sample const { success, result, message } = await postAction(`/gamma/Reprocessing?fileName=${fileName}`) @@ -1308,7 +1336,7 @@ export default { }, // 重置页面信息 - reset() { + handleResetState() { this.selectedChannel = -1 this.nuclideLibraryList = [] this.closePeakInfomationTooltip()