initial commit

This commit is contained in:
2021-08-07 15:30:43 +03:00
parent 1297c8b4f6
commit b81e6a6c37
23 changed files with 660 additions and 153 deletions

View File

@@ -1,12 +1,75 @@
import { createStore } from 'vuex';
import VuexPersistence from 'vuex-persist';
const vuexLocal = new VuexPersistence({
storage: window.localStorage,
});
export default createStore({
state: {
categories: [],
tasks: [],
},
mutations: {
addCategory(state, category) {
if (category && !state.categories.includes(category)) {
state.categories = [...state.categories, category];
}
},
removeCategory(state, category) {
state.categories = state.categories.filter((element) => element !== category);
},
addTask(state, name) {
if (name) {
const task = {
name,
startedAt: undefined,
running: false,
totalTime: 0,
category: undefined,
};
state.tasks = [...state.tasks, task];
}
},
removeTask(state, name) {
state.tasks = state.tasks.filter((task) => task.name !== name);
},
startTask(state, name) {
state.tasks = state.tasks.map((task) => {
const newTask = task;
if (newTask.name === name) {
newTask.running = true;
newTask.startedAt = Date.now();
} else if (newTask.running) {
newTask.running = false;
newTask.totalTime += Date.now() - newTask.startedAt;
newTask.startedAt = undefined;
}
return newTask;
});
},
stopTask(state, name) {
state.tasks = state.tasks.map((task) => {
const newTask = task;
if (newTask.name === name) {
newTask.running = false;
newTask.totalTime += Date.now() - newTask.startedAt;
newTask.startedAt = undefined;
}
return newTask;
});
},
assignCategory(state, { name, category }) {
state.tasks = state.tasks.map((task) => {
const newTask = task;
if (newTask.name === name) {
newTask.category = category;
}
return newTask;
});
},
},
actions: {
},
modules: {
},
plugins: [vuexLocal.plugin],
});