poe-svelte-ui-lib 1.10.8 → 1.10.9
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.
- package/dist/Graph/Graph.svelte +4 -17
- package/dist/Switch/Switch.svelte +2 -2
- package/package.json +1 -1
package/dist/Graph/Graph.svelte
CHANGED
|
@@ -30,8 +30,7 @@
|
|
|
30
30
|
historyData = [],
|
|
31
31
|
}: IGraphProps = $props()
|
|
32
32
|
|
|
33
|
-
/* Статический режим: historyData передан целиком с реальными timestamp (Unix-эпоха в мс)
|
|
34
|
-
компонент рисует весь массив разом, без интервалов/AUTO; streamingData/refreshRate игнорируются */
|
|
33
|
+
/* Статический режим: historyData передан целиком с реальными timestamp (Unix-эпоха в мс) */
|
|
35
34
|
const isHistoryMode = $derived(!!historyData && historyData.length > 0)
|
|
36
35
|
|
|
37
36
|
/* Состояние компонента */
|
|
@@ -42,19 +41,13 @@
|
|
|
42
41
|
let ctx: CanvasRenderingContext2D
|
|
43
42
|
let width = $state(600)
|
|
44
43
|
let height = $state(125)
|
|
45
|
-
|
|
46
|
-
/* selectedRefreshRate изначально берётся из пропа (сохраняется вместе с компонентом в конструкторе),
|
|
47
|
-
но остаётся локально переключаемым через Select ниже — присвоение этому $derived временно
|
|
48
|
-
переопределяет значение, пока не изменится refreshRate/isTest (проп) */
|
|
49
44
|
let selectedRefreshRate = $derived(isTest ? 50 : (refreshRate ?? 0))
|
|
50
45
|
const maxDataPoints = $derived(selectedRefreshRate == 0 ? 20 : 100)
|
|
51
46
|
const defaultColors = ["#3b82f6", "#ef4444", "#10b981", "#f59e0b", "#8b5cf6", "#ec4899"]
|
|
52
47
|
|
|
53
48
|
let previousValues: number[] = $state([])
|
|
54
49
|
|
|
55
|
-
/* Автомасштаб Y для живого режима: диапазон плавно "подъезжает" к фактическому min/max буфера
|
|
56
|
-
(±10% отступ), пересчитывается один раз за тик (не за кадр/mousemove) и сглаживается —
|
|
57
|
-
иначе ось дёргалась бы на каждый новый семпл */
|
|
50
|
+
/* Автомасштаб Y для живого режима: диапазон плавно "подъезжает" к фактическому min/max буфера (±10% отступ) */
|
|
58
51
|
let liveYRange = $state<{ min: number; max: number } | null>(null)
|
|
59
52
|
|
|
60
53
|
const computeAutoYRange = (values: number[]): { min: number; max: number } => {
|
|
@@ -120,8 +113,7 @@
|
|
|
120
113
|
initializeGraphData()
|
|
121
114
|
})
|
|
122
115
|
|
|
123
|
-
/* Статический режим: строим graphData один раз
|
|
124
|
-
x = реальный timestamp точки, "текущее" значение в панели Values — последняя (по времени) точка серии */
|
|
116
|
+
/* Статический режим: строим graphData один раз */
|
|
125
117
|
$effect(() => {
|
|
126
118
|
if (!isHistoryMode) return
|
|
127
119
|
const series = historyData.slice(0, 6).map((s, i) => {
|
|
@@ -138,12 +130,7 @@
|
|
|
138
130
|
drawAllGraphs()
|
|
139
131
|
})
|
|
140
132
|
|
|
141
|
-
/* Обработка входящих потоковых
|
|
142
|
-
ВАЖНО: streamingData читается только внутри колбэков setInterval (асинхронный контекст),
|
|
143
|
-
а не в теле $effect — иначе каждое новое сообщение (у нас до 10 Гц с устройства) делает
|
|
144
|
-
streamingData зависимостью эффекта, и он пересоздаёт таймер на каждый пакет: если Refresh
|
|
145
|
-
rate медленнее, чем частота входящих данных, setInterval убивается раньше, чем успевает
|
|
146
|
-
сработать хотя бы раз — график зависает. */
|
|
133
|
+
/* Обработка входящих потоковых данных */
|
|
147
134
|
let intervalId: ReturnType<typeof setInterval>
|
|
148
135
|
$effect(() => {
|
|
149
136
|
clearInterval(intervalId)
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
let checkedOptions: boolean[] = $derived(
|
|
25
25
|
(() => {
|
|
26
26
|
if (bitMode) {
|
|
27
|
-
return localOptions.map((option) =>
|
|
27
|
+
return localOptions.map((option) => (((value ?? 0) & (1 << (option?.value ?? 0))) >>> 0) === Math.pow(2, option.value ?? 0))
|
|
28
28
|
} else {
|
|
29
29
|
return [value == 1]
|
|
30
30
|
}
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
|
|
39
39
|
const handleToggle = (index: number) => {
|
|
40
40
|
if (localOptions[index].disabled) return
|
|
41
|
-
value =
|
|
41
|
+
value = ((value ?? 0) ^ (1 << (bitMode ? (localOptions[index].value ?? 0) : 0))) >>> 0
|
|
42
42
|
|
|
43
43
|
onChange(value)
|
|
44
44
|
}
|