/
Alcatraz
/
Wagomon
Обзор
Документация
Войти
/
Alcatraz
/
Wagomon
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/lib/config/settingsStore.js
103 строки
2 KB
saitgalineu
vkr
26 май 2026, 10:08
26 май 2026, 10:08
f9b2919
Код
Авторство
О чём код?
import { get, writable } from 'svelte/store'; /** * * @type {import('svelte/store').Writable<Array<any>>} */ export const measureTypes = writable([]); /** * * @type {import('svelte/store').Writable<Array<any>>} */ export const analogFormulas = writable([]); /** * * @type {import('svelte/store').Writable<Array<any>>} */ export const binarySensorTypes = writable([]); /** * * @type {import('svelte/store').Writable<Array<any>>} */ export const paramDescriptions = writable([]); /** * * @type {import('svelte/store').Writable<boolean>} */ export const dictionariesLoaded = writable(false); let dictionariesLoadingPromise = null; /** * * @returns {Promise<void>} */ export async function loadSettingsDictionaries(options = {}) { const { force = false } = options || {}; if (!force && get(dictionariesLoaded)) return; if (!force && dictionariesLoadingPromise) { await dictionariesLoadingPromise; return; } dictionariesLoadingPromise = (async () => { try { const [mtRes, fRes, bstRes, pdRes] = await Promise.all([ fetch('/api/settings/measure-types'), fetch('/api/settings/formulas'), fetch('/api/settings/binary-sensor-types'), fetch('/api/settings/param-descriptions') ]); measureTypes.set(await mtRes.json().catch(() => [])); analogFormulas.set(await fRes.json().catch(() => [])); binarySensorTypes.set(await bstRes.json().catch(() => [])); paramDescriptions.set(await pdRes.json().catch(() => [])); dictionariesLoaded.set(true); } catch (e) { console.error('Ошибка загрузки справочников настроек:', e); } })(); try { await dictionariesLoadingPromise; } finally { dictionariesLoadingPromise = null; } } /** * * @returns {Promise<void>} */ export async function ensureSettingsDictionariesLoaded() { await loadSettingsDictionaries({ force: false }); } /** * * @returns {Promise<void>} */ export async function initConfigStores() { const { loadControllers } = await import('./controllersStore.js'); const { loadSensorsForAllControllers } = await import('./sensorsStore.js'); await loadControllers(); const { columns } = await import('./sensorsStore.js'); const currentColumns = {}; const unsubscribe = columns.subscribe((value) => { Object.assign(currentColumns, value); }); unsubscribe(); await loadSensorsForAllControllers(currentColumns); await ensureSettingsDictionariesLoaded(); }