import {createStore} from 'vuex' import moment from "moment"; export default createStore({ state: { trackers: [], archive: [], settings: { theme: 'materia' }, trashed: {}, selectedTracker: {}, tasks: [], notes: [] }, mutations: { loadSavedData(state) { let storedTrackers = localStorage.getItem('trackers'); if (storedTrackers !== null && storedTrackers !== undefined) { state.trackers = JSON.parse(storedTrackers); } let storedArchive = localStorage.getItem('archive'); if (storedArchive !== null && storedArchive !== undefined) { state.archive = JSON.parse(storedArchive); } let storedTasks = localStorage.getItem('tasks'); if (storedTasks !== null && storedTasks !== undefined) { state.tasks = JSON.parse(storedTasks); } let storedNotes = localStorage.getItem('notes'); if (storedNotes !== null && storedNotes !== undefined) { state.notes = JSON.parse(storedNotes); } let storedSettings = localStorage.getItem('settings'); state.settings = storedSettings == null ? { theme: '', dashboardLogo: 'assets/img/logo.png', trackerSystemUrl: '', showPT: true, dontShowMinutes: false, linkTarget: '_blank', } : storedSettings; }, createTracker(state) { state.trackers.pushToBeginning({ tracking: false, number: '#', trackingStarted: null, trackingStopped: null, history: [] }); }, createTimebox(state) { state.trackers.pushToBeginning({ tracking: false, number: 'Timebox ', trackingStarted: null, trackingStopped: null, isTimeBox: true, history: [] }); }, saveTrackers(state) { localStorage.setItem('trackers', JSON.stringify(state.trackers)); localStorage.setItem('archive', JSON.stringify(state.archive)); }, saveTasks(state) { localStorage.setItem('tasks', JSON.stringify(state.tasks)); }, saveSettings(state) { localStorage.setItem('settings', JSON.stringify(state.settings)); }, deleteTracker(state, index, archive) { let message = ''; if (archive) { Object.assign(state.trashed, state.archive[index]); state.archive.splice(index, 1); } else { Object.assign(state.trashed, state.trackers[index]); state.trackers.splice(index, 1); } return message; }, restoreTrashed(state) { let restoredTracker = {}; Object.assign(restoredTracker, state.trashed); state.trashed = {}; state.trackers.pushToBeginning(restoredTracker); }, archiveTracker(state, index) { state.archive.pushToBeginning(state.trackers[index]); state.trackers.splice(index, 1); }, reactivateTracker(state, index) { state.trackers.pushToBeginning(state.archive[index]); state.archive.splice(index, 1); }, selectTracker(state, tracker) { state.selectedTracker = tracker; }, saveNotes(state) { localStorage.setItem('notes', JSON.stringify(state.notes)); }, createNote(state, content = '') { state.notes.pushToBeginning({ body: content, color: '#ffea77', created: moment() }); }, deleteNote(state, index) { state.notes.splice(index, 1); } } })