Files
timetracker/public/js/state.js
Felix Schlusche 763d7d141b
All checks were successful
Build and Push Docker Image / build (push) Successful in 25s
feat: add target hours selector and update timer calculations based on user input
2025-10-30 17:18:38 +01:00

58 lines
2.1 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
let targetHours = 8; // Target work hours per day (1-10)
// Current month display state
let displayYear = new Date().getFullYear();
let displayMonth = new Date().getMonth(); // 0-11
// Settings state
let companyHolidayPreference = 'christmas'; // 'christmas' (24.12) or 'newyearseve' (31.12)
// 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 setCompanyHolidayPreference(preference) { companyHolidayPreference = preference; }
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); }