/
Alcatraz
/
Wagomon
Обзор
Документация
Войти
/
Alcatraz
/
Wagomon
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/lib/visualization/dataStore.js
106 строк
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<boolean>} */ export const loading = writable(true); /** * * @type {import('svelte/store').Writable<Record<string, any>>} */ export const controllerMeta = writable({}); /** * * @type {import('svelte/store').Readable<string[]>} */ export const controllers = writable([]); let refreshIntervalMs = 5000; let refreshTimer = null; export function setVisualizationRefreshInterval(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 stopVisualizationRefreshInterval() { if (refreshTimer) { clearInterval(refreshTimer); refreshTimer = null; } } /** * * @returns {Promise<void>} */ export async function loadSensorData() { try { const res = await fetch('/api/read/db'); if (!res.ok) { throw new Error('Ошибка загрузки данных'); } const newData = await res.json(); sensorData.set(newData); } catch (e) { console.error('Ошибка загрузки данных:', e); throw e; } finally { loading.set(false); } } /** * * @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 initVisualizationStores() { try { await Promise.all([loadWagoMeta(), loadSensorData()]); } catch (e) { console.error('Ошибка инициализации сторов визуализации:', e); } }