Files
timetracker/public/js/state.js
Felix Schlusche af23aa369c fix: improve holiday name retrieval by comparing year, month, and day directly to avoid timezone issues
refactor: change exported variables to local scope in state management for better encapsulation
2025-10-23 19:36:55 +02:00

52 lines
1.8 KiB
JavaScript

/**
* Global application state
*/
// Modal state
let currentEditingId = null;
let datePicker = null;
let startTimePicker = null;
let endTimePicker = null;
let filterFromPicker = null;
let filterToPicker = null;
// Timer state
let timerInterval = null;
let timerStartTime = null;
let timerPausedDuration = 0; // Total paused time in seconds
let isPaused = false;
let pauseTimeout = null;
let currentEntryId = null; // ID of today's entry being timed
// Current month display state
let displayYear = new Date().getFullYear();
let displayMonth = new Date().getMonth(); // 0-11
// Bulk edit state
let bulkEditMode = false;
let selectedEntries = new Set();
// Setters for state mutations
function setCurrentEditingId(id) { currentEditingId = id; }
function setDatePicker(picker) { datePicker = picker; }
function setStartTimePicker(picker) { startTimePicker = picker; }
function setEndTimePicker(picker) { endTimePicker = picker; }
function setFilterFromPicker(picker) { filterFromPicker = picker; }
function setFilterToPicker(picker) { filterToPicker = picker; }
function setTimerInterval(interval) { timerInterval = interval; }
function setTimerStartTime(time) { timerStartTime = time; }
function setTimerPausedDuration(duration) { timerPausedDuration = duration; }
function setIsPaused(paused) { isPaused = paused; }
function setPauseTimeout(timeout) { pauseTimeout = timeout; }
function setCurrentEntryId(id) { currentEntryId = id; }
function setDisplayYear(year) { displayYear = year; }
function setDisplayMonth(month) { displayMonth = month; }
function setBulkEditMode(mode) { bulkEditMode = mode; }
function clearSelectedEntries() { selectedEntries.clear(); }
function addSelectedEntry(id) { selectedEntries.add(id); }
function removeSelectedEntry(id) { selectedEntries.delete(id); }
function hasSelectedEntry(id) { return selectedEntries.has(id); }