fix: 修复示波器停止捕获导致无法配置的问题,并取消示波器动画

This commit is contained in:
2025-07-22 02:41:07 +08:00
parent 912eb625f5
commit 6c5250f9c2
3 changed files with 15 additions and 10 deletions

View File

@@ -262,16 +262,11 @@ const [useProvideOscilloscope, useOscilloscopeState] = createInjectionState(() =
alert.success("测试数据生成成功", 2000);
};
const isOperationInProgress = computed(
() => isApplying.value || isCapturing.value || operationMutex.isLocked()
);
return {
oscData,
config,
isApplying,
isCapturing,
isOperationInProgress,
sampleCount,
samplePeriodNs,
refreshIntervalMs,

View File

@@ -104,9 +104,11 @@ const option = computed((): EChartsOption => {
return {};
}
const isCapturing = oscManager.isCapturing.value;
const series: LineSeriesOption[] = [];
// 兼容单通道和多通道,确保 yChannels 为 number[][]
// 兼容单通道和多通道,确保 yChannels 为 number[]
const yChannels: number[][] = Array.isArray(oscData.value.y[0])
? (oscData.value.y as number[][])
: [oscData.value.y as number[]];
@@ -126,6 +128,10 @@ const option = computed((): EChartsOption => {
lineStyle: {
width: 2,
},
// 关闭系列动画
animation: !isCapturing,
animationDuration: isCapturing ? 0 : 1000,
animationEasing: isCapturing ? "linear" : "cubicOut",
});
});
@@ -157,7 +163,7 @@ const option = computed((): EChartsOption => {
saveAsImage: {},
},
},
dataZoom: (oscManager.isCapturing.value) ? [] : [
dataZoom: [
{
type: "inside",
start: 0,
@@ -198,6 +204,10 @@ const option = computed((): EChartsOption => {
show: false,
},
},
// 全局动画开关
animation: !isCapturing,
animationDuration: isCapturing ? 0 : 1000,
animationEasing: isCapturing ? "linear" : "cubicOut",
series: series,
};
});

View File

@@ -77,14 +77,14 @@
</div>
</label>
<div class="flex items-center gap-2">
<button class="btn btn-primary" type="submit" :disabled="osc.isOperationInProgress.value">
<button class="btn btn-primary" type="submit" :disabled="osc.isApplying.value || osc.isCapturing.value">
应用配置
</button>
<button class="btn btn-secondary" type="button" @click="osc.resetConfiguration"
:disabled="osc.isOperationInProgress.value">
:disabled="osc.isApplying.value || osc.isCapturing.value">
重置
</button>
<button class="btn btn-outline" @click="osc.refreshRAM" :disabled="osc.isOperationInProgress.value">
<button class="btn btn-outline" @click="osc.refreshRAM" :disabled="osc.isApplying.value || osc.isCapturing.value">
刷新RAM
</button>
<!-- <button class="btn btn-accent" @click="osc.generateTestData" :disabled="osc.isOperationInProgress.value">