NeonClary
Add settings menu for diagram layout and panel visibility
ebbd1a5
Raw
History Blame Contribute Delete
1.3 kB
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));
}