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

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);
}
}
})