waveform-analysis 0.1.64 → 0.1.66

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/README.md +33 -4
  2. package/dist/index.cjs +1 -1
  3. package/dist/index.js +724 -621
  4. package/dist/style.css +1 -1
  5. package/dist/types/components/WaveformChart.vue.d.ts +3 -2
  6. package/dist/types/components/core/constants.d.ts +3 -1
  7. package/dist/types/components/core/trackLayoutBuilder.d.ts +2 -0
  8. package/dist/types/components/core/types.d.ts +2 -1
  9. package/dist/types/components/core/useWaveformChartController.d.ts +3 -0
  10. package/dist/types/components/core/useWaveformPresentation.d.ts +2 -0
  11. package/dist/types/components/core/waveformChartTypes.d.ts +3 -1
  12. package/dist/types/components/core/yAxisConstants.d.ts +1 -1
  13. package/dist/types/components/core/yAxisTitleLayout.d.ts +4 -0
  14. package/dist/types/components/interaction/integerZoom.d.ts +12 -0
  15. package/dist/types/components/interaction/viewportDomain.d.ts +1 -0
  16. package/dist/types/components/interaction/zoomConstraints.d.ts +2 -1
  17. package/dist/types/components/rendering/WaveformTrack.vue.d.ts +2 -6
  18. package/dist/types/components/rendering/WaveformTrackBackdrop.vue.d.ts +0 -4
  19. package/dist/types/components/rendering/WaveformZeroLines.vue.d.ts +12 -0
  20. package/dist/types/demo/types.d.ts +3 -0
  21. package/dist/types/index.d.ts +1 -0
  22. package/dist/types/types/chart.d.ts +8 -0
  23. package/package.json +1 -1
  24. package/src/App.vue +8 -2
  25. package/src/components/WaveformChart.css +4 -0
  26. package/src/components/WaveformChart.vue +2 -1
  27. package/src/components/core/constants.ts +5 -3
  28. package/src/components/core/layout.ts +1 -1
  29. package/src/components/core/trackLayoutBuilder.ts +30 -19
  30. package/src/components/core/types.ts +2 -0
  31. package/src/components/core/useWaveformChartLifecycle.ts +1 -1
  32. package/src/components/core/useWaveformLayout.ts +34 -17
  33. package/src/components/core/useWaveformPresentation.ts +11 -1
  34. package/src/components/core/waveformChartTypes.ts +3 -0
  35. package/src/components/core/yAxisConstants.ts +1 -1
  36. package/src/components/core/yAxisTitleLayout.ts +78 -0
  37. package/src/components/interaction/integerZoom.ts +64 -0
  38. package/src/components/interaction/useWaveformViewport.ts +8 -12
  39. package/src/components/interaction/useWaveformZoom.ts +6 -4
  40. package/src/components/interaction/viewportDomain.ts +12 -0
  41. package/src/components/interaction/zoomConstraints.ts +7 -5
  42. package/src/components/rendering/WaveformLegend.vue +1 -1
  43. package/src/components/rendering/WaveformSeriesLayer.vue +1 -1
  44. package/src/components/rendering/WaveformTrack.css +5 -2
  45. package/src/components/rendering/WaveformTrack.vue +18 -5
  46. package/src/components/rendering/WaveformTrackAxes.vue +9 -3
  47. package/src/components/rendering/WaveformTrackBackdrop.vue +2 -34
  48. package/src/components/rendering/WaveformZeroLines.vue +53 -0
  49. package/src/demo/DemoChartHost.vue +1 -0
  50. package/src/demo/DemoGridFrameControls.vue +12 -0
  51. package/src/demo/DemoViewControls.vue +4 -0
  52. package/src/demo/types.ts +3 -0
  53. package/src/index.ts +1 -0
  54. package/src/styles.css +3 -3
  55. package/src/types/chart.ts +8 -0
package/README.md CHANGED
@@ -98,6 +98,7 @@ const data = ref<WaveformData>({
98
98
  | `zoomable` / `showTooltip` | `boolean` | `true` / `true` | 缩放和数值 tooltip 开关 |
99
99
  | `pannable` | `boolean` | `false` | 空格拖拽平移开关 |
100
100
  | `minZoomSpan` | `number` | 未设置 | 最小缩放跨度,使用原始 X 数据单位 |
101
+ | `integerZoom` | `boolean` | `false` | 缩放范围按 X 轴显示单位对齐整数 |
101
102
  | `minVisiblePoints` | `number` | `0` | 缩放后至少保留的不同 X 坐标数 |
102
103
  | `maxZoomScale` | `number \| null` | 未设置 | 最大缩放倍数;`null` 表示不限制 |
103
104
  | `initialXDomain` | `[number, number]` | 未设置 | 所有图框的初始 X 范围(可超出数据,空白显示) |
@@ -113,7 +114,7 @@ const data = ref<WaveformData>({
113
114
  | `legend` | `WaveformLegendOptions` | `{ position: 'top-right', orientation: 'auto' }` | 图例位置、排列、背景和交互 |
114
115
  | `frameNumber` | `string \| number` | 未设置 | 图框水印内容 |
115
116
  | `frameNumbers` | `Record<string, string \| number>` | 未设置 | 按 `trackId` 覆盖图框水印内容 |
116
- | `zeroLine` | `WaveformZeroLineOptions` | `{ visible: false }` | 零值参考线显隐与样式 |
117
+ | `zeroLine` | `WaveformZeroLineOptions` | `{ visible: true }` | 零值参考线显隐与样式 |
117
118
  | `cleanView` | `boolean` | `false` | 保留波形、图框和刻度的净图模式 |
118
119
  | `presentationMode` | `boolean` | `false` | 禁用绘图区交互的展示模式 |
119
120
  | `annotations` | `WaveformAnnotation[]` | `[]` | 受控标注数据 |
@@ -256,6 +257,9 @@ Y 轴会独立计算:
256
257
  <WaveformChart :data="chartData" :axes="{ y: { splitNumber: 5 } }" />
257
258
  ```
258
259
 
260
+ 最下方的刻度标签不做额外偏移,文字底部基线直接与 Y 轴最小值刻度线齐平。
261
+ 原刻度数值、刻度线、网格和波形坐标保持不变;尺寸或坐标范围变化后,每根 Y 轴仍保持该对齐方式。
262
+
259
263
  默认会将 Y 轴范围扩展为便于读取的等距刻度。传入 `nice: false` 可保持数据自动范围或
260
264
  `yDomain` / `yDomains` 的原始端点:
261
265
 
@@ -300,6 +304,15 @@ X 轴且包含多个轨道时使用按稳定 track ID 索引的 `yRanges`。平
300
304
  `initialXDomains` 按 track ID 或 series ID 分别配置。`minZoomSpan` 使用原始 X 数据单位,
301
305
  可防止每次区间数据回填后重新累计放大。未配置任何缩放约束时保留既有的 40 倍兜底;设置
302
306
  `minVisiblePoints: 2` 可缩放到两个真实采样点,`maxZoomScale: null` 可显式关闭倍率上限。
307
+
308
+ 设置 `:integer-zoom="true"` 可开启整数缩放,默认关闭。开启后滚轮、框选和
309
+ `setViewportDomain` 的开始时间向下取整、结束时间向上取整;`timeUnit='ms'` 时对齐整毫秒,
310
+ `timeUnit='s'` 时对齐整秒,最小跨度为一个显示单位。初始范围和重置范围也向外对齐,
311
+ 不会裁掉边缘数据,最小跨度、最大倍率和最少可见点数限制仍然生效。
312
+ 默认 X 轴标签和主刻度也使用整数显示单位,平移时保持整数端点及当前跨度。
313
+ 动态切换此开关或在开启时切换时间单位会重置视口。
314
+ 原始采样坐标不会被修改,缩放事件仍以秒返回实际对齐后的范围;自定义 formatter 不影响对齐粒度。
315
+ 关闭时 `timeUnit` 仍只影响展示,不改变缩放范围。
303
316
  显式设置多种限制时采用最严格的一项。双击图框会
304
317
  重置组件内部缩放并触发 `zoom-reset`;调用方应在事件中取消区间请求并恢复首次完整数据。
305
318
  外部重置按钮也可以通过模板引用调用组件公开的 `resetViewport()` 方法,然后执行相同的数据恢复逻辑。
@@ -384,6 +397,8 @@ const chartData = {
384
397
  `(V) 3`。单位为空、全为空白或未配置时,不显示 `(单位)`,例如仍显示为 `E+03 3` 或 `3`。
385
398
  多 Y 轴模式下,每根轴使用该轴首个 series 的单位。
386
399
 
400
+ 左侧通道名称使用 14px、字重 600 的加粗文字,按字符宽度估算旋转名称的垂直范围,仅对可能与名称相交的刻度文字(含文字高度和安全间距)自动计算间距;不相交的顶部单位刻度不会推远名称。同一列中相同轴位使用逐道计算的最大间距,保证多道名称垂直对齐;左侧留白随刻度宽度调整,避免名称与刻度重叠。
401
+
387
402
  ### 线型、点型与误差棒
388
403
 
389
404
  每条序列可以独立设置连线方式、数据点符号和误差棒:
@@ -558,8 +573,11 @@ const hiddenSeriesIds = ref<string[]>([])
558
573
 
559
574
  ### 零值参考线与净图
560
575
 
561
- `zeroLine` 用于绘制 `y = 0` 的水平参考线,默认隐藏。参考线只在对应 Y 轴的当前 domain
562
- 包含 0 时渲染,不会为了显示参考线而扩展数据范围。多值轴模式下,每根可见 Y 轴分别按自身
576
+ `zeroLine` 用于绘制 `y = 0` 的水平参考线,默认显示红色(`#ff0000`)、1px 宽的虚线
577
+ (`dash: '6 4'`),透明度默认为 `0.5`。参考线只在对应 Y 轴的当前 domain
578
+ 严格跨过 0,且距两端均不小于一个主刻度间距的 2% 时渲染;零线位于边界时隐藏。
579
+ 不会为了显示参考线而扩展数据范围。零线绘制在曲线、点标记及误差棒上方。
580
+ 多值轴模式下,每根可见 Y 轴分别按自身
563
581
  scale 定位零线:
564
582
 
565
583
  ```vue
@@ -567,9 +585,11 @@ scale 定位零线:
567
585
  :data="chartData"
568
586
  :zero-line="{
569
587
  visible: true,
570
- color: '#98a2b3',
588
+ color: '#ff0000',
571
589
  width: 1,
572
590
  dash: '6 4',
591
+ opacity: 0.5,
592
+ boundaryThreshold: 0.02,
573
593
  }"
574
594
  />
575
595
  ```
@@ -577,6 +597,15 @@ scale 定位零线:
577
597
  `dash` 直接对应 SVG 的 `stroke-dasharray`;传入空字符串可显示实线。无效或非正数的
578
598
  `width` 会回退到 `1`。
579
599
 
600
+ 只传入颜色或线型时仍默认显示,例如 `:zero-line="{ color: '#0960bd', dash: '' }"`
601
+ 显示蓝色实线。使用 `:zero-line="{ visible: false }"` 可关闭零线。颜色和线型配置可动态修改。
602
+
603
+ `boundaryThreshold` 可动态调整边界隐藏比例,例如 `0.05` 表示一个主刻度间距的 5%,
604
+ `0` 表示仅在恰好位于边界时隐藏;负数或非有限值回退到 `0.02`。
605
+ `opacity` 支持 `0` 到 `1`,越界或非有限值回退到 `0.5`。颜色本身的 Alpha 与该透明度相乘;
606
+ 若使用 `rgba()` 或八位十六进制颜色的透明度,可设置 `opacity: 1`。
607
+ 主演示页的“零值参考线”区域可直接调整透明度,修改后立即应用于波形图。
608
+
580
609
  设置 `cleanView` 后,组件保留波形、图框边框、X/Y 轴刻度及刻度值,并隐藏标题内容、图例、
581
610
  网格、轴标签、图框背景、帧水印、零值参考线、标注和分页器。原图的标题区域、边距和波形
582
611
  尺寸保持不变;缩放、悬浮、十字线和 tooltip 仍然可用,切换回普通模式后原有配置和标注