diff --git a/package-lock.json b/package-lock.json index 78464f9..7a09686 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,6 +5,7 @@ "requires": true, "packages": { "": { + "name": "ttrack", "version": "0.1.0", "dependencies": { "@popperjs/core": "^2.11.0", @@ -17,7 +18,8 @@ "moment": "^2.29.1", "vue": "^3.0.0", "vue-router": "^4.0.0-0", - "vuex": "^4.0.0-0" + "vuex": "^4.0.0-0", + "vuex-persist": "^3.1.3" }, "devDependencies": { "@vue/cli-plugin-babel": "~4.5.0", @@ -2375,7 +2377,6 @@ "thread-loader": "^2.1.3", "url-loader": "^2.2.0", "vue-loader": "^15.9.2", - "vue-loader-v16": "npm:vue-loader@^16.1.0", "vue-style-loader": "^4.1.2", "webpack": "^4.0.0", "webpack-bundle-analyzer": "^3.8.0", @@ -2536,7 +2537,6 @@ "merge-source-map": "^1.1.0", "postcss": "^7.0.36", "postcss-selector-parser": "^6.0.2", - "prettier": "^1.18.2 || ^2.0.0", "source-map": "~0.6.1", "vue-template-es2015-compiler": "^1.9.0" }, @@ -4103,7 +4103,6 @@ "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", - "fsevents": "~2.3.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", @@ -9140,9 +9139,6 @@ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "dev": true, - "dependencies": { - "graceful-fs": "^4.1.6" - }, "optionalDependencies": { "graceful-fs": "^4.1.6" } @@ -15514,16 +15510,39 @@ "vue": "^3.0.2" } }, + "node_modules/vuex-persist": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/vuex-persist/-/vuex-persist-3.1.3.tgz", + "integrity": "sha512-QWOpP4SxmJDC5Y1+0+Yl/F4n7z27syd1St/oP+IYCGe0X0GFio0Zan6kngZFufdIhJm+5dFGDo3VG5kdkCGeRQ==", + "dependencies": { + "deepmerge": "^4.2.2", + "flatted": "^3.0.5" + }, + "peerDependencies": { + "vuex": ">=2.5" + } + }, + "node_modules/vuex-persist/node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/vuex-persist/node_modules/flatted": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==" + }, "node_modules/watchpack": { "version": "1.7.5", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", "dev": true, "dependencies": { - "chokidar": "^3.4.1", "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0", - "watchpack-chokidar2": "^2.0.1" + "neo-async": "^2.5.0" }, "optionalDependencies": { "chokidar": "^3.4.1", @@ -15585,7 +15604,6 @@ "anymatch": "^2.0.0", "async-each": "^1.0.1", "braces": "^2.3.2", - "fsevents": "^1.2.7", "glob-parent": "^3.1.0", "inherits": "^2.0.3", "is-binary-path": "^1.0.0", @@ -15892,7 +15910,6 @@ "anymatch": "^2.0.0", "async-each": "^1.0.1", "braces": "^2.3.2", - "fsevents": "^1.2.7", "glob-parent": "^3.1.0", "inherits": "^2.0.3", "is-binary-path": "^1.0.0", @@ -28964,6 +28981,27 @@ "@vue/devtools-api": "^6.0.0-beta.11" } }, + "vuex-persist": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/vuex-persist/-/vuex-persist-3.1.3.tgz", + "integrity": "sha512-QWOpP4SxmJDC5Y1+0+Yl/F4n7z27syd1St/oP+IYCGe0X0GFio0Zan6kngZFufdIhJm+5dFGDo3VG5kdkCGeRQ==", + "requires": { + "deepmerge": "^4.2.2", + "flatted": "^3.0.5" + }, + "dependencies": { + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" + }, + "flatted": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==" + } + } + }, "watchpack": { "version": "1.7.5", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", diff --git a/public/fonts/NotePaper-regular.otf b/public/fonts/NotePaper-regular.otf new file mode 100644 index 0000000..2be81ad Binary files /dev/null and b/public/fonts/NotePaper-regular.otf differ diff --git a/src/css/app.scss b/src/css/app.scss index 6649da8..9aef73b 100644 --- a/src/css/app.scss +++ b/src/css/app.scss @@ -1,6 +1,11 @@ @import '~izitoast/dist/css/iziToast.min.css'; @import "~bootswatch/dist/materia/bootstrap.min.css"; +@font-face { + font-family: 'NotePaper'; + src: url('/fonts/NotePaper-regular.otf'); +} + body { background-color: #e7e7e7; } diff --git a/src/router/index.js b/src/router/index.js index 10b19aa..b2bf155 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -3,6 +3,7 @@ import Trackers from "../views/Trackers"; import Settings from "../views/Settings"; import TrackersDetail from "../views/TrackersDetail"; import Archive from "../views/Archive"; +import Notes from "../views/Notes"; Array.prototype.pushToBeginning = function (toPush) { return this.unshift.apply(this, [toPush]); @@ -24,6 +25,11 @@ const routes = [ name: 'Archive', component: Archive }, + { + path: '/notes', + name: 'Notes', + component: Notes + }, { path: '/settings', name: 'Settings', diff --git a/src/store/index.js b/src/store/index.js index eed2a4d..6302607 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -1,4 +1,5 @@ import {createStore} from 'vuex' +import moment from "moment"; export default createStore({ state: { @@ -9,7 +10,8 @@ export default createStore({ }, trashed: {}, selectedTracker: {}, - tasks: [] + tasks: [], + notes: [] }, mutations: { loadSavedData(state) { @@ -28,6 +30,11 @@ export default createStore({ 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: '', @@ -97,6 +104,19 @@ export default createStore({ }, 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); } } }) diff --git a/src/views/Menu.vue b/src/views/Menu.vue index dcea0b2..f269f83 100644 --- a/src/views/Menu.vue +++ b/src/views/Menu.vue @@ -45,6 +45,16 @@ +
+ + + +
\ No newline at end of file diff --git a/src/views/Notes.vue b/src/views/Notes.vue new file mode 100644 index 0000000..d92a4e5 --- /dev/null +++ b/src/views/Notes.vue @@ -0,0 +1,125 @@ + + + + + \ No newline at end of file