massive frontend refactoring (works good)
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
const STORAGE_KEY = 'gym_tracker_v5';
|
||||
|
||||
export const state = {
|
||||
workouts: [],
|
||||
exerciseRef: [],
|
||||
bodyMetrics: [],
|
||||
expandedWorkoutId: null,
|
||||
expandedExerciseId: null,
|
||||
nextId: 1,
|
||||
};
|
||||
|
||||
export function loadState() {
|
||||
const saved = localStorage.getItem(STORAGE_KEY);
|
||||
if (saved) {
|
||||
try {
|
||||
const parsed = JSON.parse(saved);
|
||||
Object.assign(state, parsed);
|
||||
if (!state.exerciseRef) state.exerciseRef = [];
|
||||
if (!state.bodyMetrics) state.bodyMetrics = [];
|
||||
} catch (e) {
|
||||
console.error('Failed to load state', e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export function saveState() {
|
||||
localStorage.setItem(STORAGE_KEY, JSON.stringify(state));
|
||||
updateSyncStatus();
|
||||
}
|
||||
|
||||
export function genId() {
|
||||
return (state.nextId++).toString();
|
||||
}
|
||||
|
||||
export function updateSyncStatus() {
|
||||
const dirty = state.workouts.filter(w => !w.synced);
|
||||
const el = document.getElementById('sync-status');
|
||||
if (!el) return;
|
||||
if (dirty.length === 0) {
|
||||
el.textContent = '● Всё синхронизировано';
|
||||
el.className = 'sync-status synced';
|
||||
} else {
|
||||
el.textContent = `● ${dirty.length} не сохран.`;
|
||||
el.className = 'sync-status pending';
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user