|
|
|
|
import {createStore} from 'vuex'
|
|
|
|
|
|
|
|
|
|
export default createStore({
|
|
|
|
|
state: {
|
|
|
|
|
trackers: [],
|
|
|
|
|
archive: [],
|
|
|
|
|
settings: {
|
|
|
|
|
theme: 'materia'
|
|
|
|
|
},
|
|
|
|
|
trashed: {},
|
|
|
|
|
selectedTracker: {},
|
|
|
|
|
tasks: []
|
|
|
|
|
},
|
|
|
|
|
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 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;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
})
|