Spaces:
Running
Running
File size: 1,302 Bytes
ebbd1a5 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | const SETTINGS_KEY = 'decidron-simulator-settings';
export const LAYOUT_MODES = {
RANDOM: 'random',
FIXED_SEED: 'fixed-seed',
EXPLICIT: 'explicit',
};
/** Right-column panels in fixed top-to-bottom order. */
export const PANEL_KEYS = ['sensorInput', 'commands', 'results', 'stats'];
export const PANEL_LABELS = {
sensorInput: 'Sensor Input',
commands: 'Processing Commands',
results: 'Latest Run Results',
stats: 'Performance Statistics',
};
export const DEFAULT_SETTINGS = {
layoutMode: LAYOUT_MODES.RANDOM,
panels: {
sensorInput: true,
commands: true,
results: true,
stats: true,
},
};
export function loadSettings() {
try {
const raw = localStorage.getItem(SETTINGS_KEY);
if (!raw) return { ...DEFAULT_SETTINGS, panels: { ...DEFAULT_SETTINGS.panels } };
const parsed = JSON.parse(raw);
return {
layoutMode: Object.values(LAYOUT_MODES).includes(parsed.layoutMode)
? parsed.layoutMode
: DEFAULT_SETTINGS.layoutMode,
panels: {
...DEFAULT_SETTINGS.panels,
...(parsed.panels || {}),
},
};
} catch {
return { ...DEFAULT_SETTINGS, panels: { ...DEFAULT_SETTINGS.panels } };
}
}
export function saveSettings(settings) {
localStorage.setItem(SETTINGS_KEY, JSON.stringify(settings));
}
|