You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
122 lines
4.0 KiB
122 lines
4.0 KiB
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); |
|
} |
|
} |
|
})
|
|
|