/
Alcatraz
/
Wagomon
Обзор
Документация
Войти
/
Alcatraz
/
Wagomon
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/lib/draw/dataStore.js
88 строк
2 KB
saitgalineu
vkr
26 май 2026, 10:08
26 май 2026, 10:08
f9b2919
Код
Авторство
О чём код?
import { writable } from 'svelte/store'; /** * * @type {import('svelte/store').Writable<Record<string, any>>} */ export const sensorData = writable({}); /** * * @type {import('svelte/store').Writable<Record<string, any>>} */ export const controllerMeta = writable({}); /** * * @type {import('svelte/store').Writable<string[]>} */ export const controllers = writable([]); let refreshIntervalMs = 5000; let refreshTimer = null; export function setDrawRefreshInterval(ms) { const num = Number(ms); if (!Number.isFinite(num) || num <= 0) return; refreshIntervalMs = Math.min(Math.max(num, 1000), 60000); if (refreshTimer) { clearInterval(refreshTimer); refreshTimer = null; } refreshTimer = setInterval(() => { loadSensorData().catch(() => {}); }, refreshIntervalMs); } export function stopDrawRefreshInterval() { if (refreshTimer) { clearInterval(refreshTimer); refreshTimer = null; } } /** * * @returns {Promise<void>} */ export async function loadWagoMeta() { try { const res = await fetch('/api/wago'); const rows = await res.json(); const { buildControllerMeta } = await import('$lib/sensors.js'); const meta = buildControllerMeta(rows); controllerMeta.set(meta); controllers.set(Object.keys(meta)); } catch (e) { console.error('Ошибка загрузки метаданных контроллеров:', e); controllerMeta.set({}); controllers.set([]); } } /** * * @returns {Promise<void>} */ export async function loadSensorData() { try { const res = await fetch('/api/read/db'); const newData = await res.json(); const { normalizeSnapshot } = await import('$lib/sensors.js'); normalizeSnapshot(newData); sensorData.set(newData); } catch (e) { console.error('Ошибка загрузки данных датчиков:', e); } } /** * * @returns {Promise<void>} */ export async function initDrawStores() { await loadWagoMeta(); }