From a84c2f3839175ff99980480befdf91aa34eee3d9 Mon Sep 17 00:00:00 2001 From: Tobi406 Date: Fri, 11 Sep 2020 20:26:13 +0200 Subject: [PATCH 1/3] Merge with feature/undo-redo branch --- src/store.js | 13 +++++++++++++ src/views/Editor.vue | 45 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) diff --git a/src/store.js b/src/store.js index b2679a57..aa8ce2ad 100644 --- a/src/store.js +++ b/src/store.js @@ -33,6 +33,7 @@ export default new Vuex.Store({ editor: { sessionId: null, historyEnabled: false, + listenersRegistered: false, }, verbose: { status: 0, @@ -69,6 +70,8 @@ export default new Vuex.Store({ editorSessionId: state => state.editor.sessionId, + listenersRegistered: state => state.editor.listenersRegistered, + verbose: state => state.verbose, tree: state => state.tree, @@ -157,6 +160,7 @@ export default new Vuex.Store({ knownPermissions: [], potentialContexts: [], currentSession: null, + listenersRegistered: false, selectedNodes: [], modal: { type: null, @@ -398,6 +402,11 @@ export default new Vuex.Store({ state.editor.errors.load = true; }, + setListenersRegistered(state) { + console.log(`Bla`); + state.editor.listenersRegistered = true; + }, + setSaveStatus(state, status) { state.editor.save.status = status; }, @@ -478,6 +487,10 @@ export default new Vuex.Store({ } }, + setListenersRegistered({ commit }) { + commit('setListenersRegistered'); + }, + setEditorData({ commit, dispatch }, data) { commit('setMetaData', data.metadata); diff --git a/src/views/Editor.vue b/src/views/Editor.vue index 704cee41..3bb8012c 100644 --- a/src/views/Editor.vue +++ b/src/views/Editor.vue @@ -252,6 +252,10 @@ export default { updateSession($route, 'getEditorData'); }, + mounted() { + this.registerListeners(); + }, + watch: { $route(route) { updateSession(route, 'getEditorData'); @@ -271,6 +275,47 @@ export default { redo() { if (this.canRedo) this.history.redo(); }, + registerListeners() { + console.log(`Listeners registered: ${this.$store.getters.listenersRegistered}`); + if (this.$store.getters.listenersRegistered) return; + + const keyCodes = [ + { + code: 83, // S/s + function: () => { + console.log('Saved changes by CTRL+S') + this.saveData(); + }, + }, + ]; + console.log(`Registered: ${this.$store.getters.listenersRegistered}`); + window.addEventListener('keydown', (event) => { + console.log(event); + if ( + !( + window.navigator.platform.match('Mac') ? event.metaKey : event.ctrlKey + && + keyCodes.map(element => element.code).includes(event.keyCode) + && + ( + this.$route.name === 'editor' + || + ( + this.$route.name === 'editor-home' + && + this.sessionId + ) + ) + ) + ) return; + + event.preventDefault(); + keyCodes.filter(element => { + return element.code === event.keyCode + })[0].function(); + }); + this.$store.dispatch('setListenersRegistered'); + }, }, }; From 674722ddb1592cfa4de29e1f55ff8fd3730ede58 Mon Sep 17 00:00:00 2001 From: Tobi406 Date: Fri, 11 Sep 2020 20:52:07 +0200 Subject: [PATCH 2/3] Finish up --- src/store.js | 1 - src/views/Editor.vue | 16 +++++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/store.js b/src/store.js index aa8ce2ad..59ac938a 100644 --- a/src/store.js +++ b/src/store.js @@ -403,7 +403,6 @@ export default new Vuex.Store({ }, setListenersRegistered(state) { - console.log(`Bla`); state.editor.listenersRegistered = true; }, diff --git a/src/views/Editor.vue b/src/views/Editor.vue index 3bb8012c..fc3669e8 100644 --- a/src/views/Editor.vue +++ b/src/views/Editor.vue @@ -276,21 +276,23 @@ export default { if (this.canRedo) this.history.redo(); }, registerListeners() { - console.log(`Listeners registered: ${this.$store.getters.listenersRegistered}`); if (this.$store.getters.listenersRegistered) return; const keyCodes = [ { code: 83, // S/s - function: () => { - console.log('Saved changes by CTRL+S') - this.saveData(); - }, + function: () => this.saveData(), + }, + { + code: 89, // Y/y + function: () => this.redo(), + }, + { + code: 90, // Z/z + function: () => this.undo(), }, ]; - console.log(`Registered: ${this.$store.getters.listenersRegistered}`); window.addEventListener('keydown', (event) => { - console.log(event); if ( !( window.navigator.platform.match('Mac') ? event.metaKey : event.ctrlKey From 272a88e680902f90b88c8366a98697d15bb1f1e0 Mon Sep 17 00:00:00 2001 From: BrainStone Date: Sat, 12 Sep 2020 18:41:48 +0200 Subject: [PATCH 3/3] Use more efficient storage for key codes --- src/views/Editor.vue | 28 ++++++++++------------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/src/views/Editor.vue b/src/views/Editor.vue index fc3669e8..e14303be 100644 --- a/src/views/Editor.vue +++ b/src/views/Editor.vue @@ -278,26 +278,20 @@ export default { registerListeners() { if (this.$store.getters.listenersRegistered) return; - const keyCodes = [ - { - code: 83, // S/s - function: () => this.saveData(), - }, - { - code: 89, // Y/y - function: () => this.redo(), - }, - { - code: 90, // Z/z - function: () => this.undo(), - }, - ]; + const keyCodes = { + // S/s + 83: this.saveData, + // Y/y + 89: this.redo, + // Z/z + 90: this.undo, + }; window.addEventListener('keydown', (event) => { if ( !( window.navigator.platform.match('Mac') ? event.metaKey : event.ctrlKey && - keyCodes.map(element => element.code).includes(event.keyCode) + event.keyCode in keyCodes && ( this.$route.name === 'editor' @@ -312,9 +306,7 @@ export default { ) return; event.preventDefault(); - keyCodes.filter(element => { - return element.code === event.keyCode - })[0].function(); + keyCodes[event.keyCode](); }); this.$store.dispatch('setListenersRegistered'); },