From 9825ed178351457dbd4e92f85ac18591750ee312 Mon Sep 17 00:00:00 2001 From: th33xitus Date: Sun, 7 Nov 2021 13:54:03 +0100 Subject: [PATCH 01/23] fix: replace tab characters by spaces Signed-off-by: Dominik Willner --- src/store/gui/actions.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/store/gui/actions.ts b/src/store/gui/actions.ts index 000fbf6ae..f59af3f10 100644 --- a/src/store/gui/actions.ts +++ b/src/store/gui/actions.ts @@ -98,9 +98,9 @@ export const actions: ActionTree = { let newState = payload.newVal if ( 'value' in payload && - keyName in payload.value && - typeof payload.value[keyName] !== 'string' && - !Array.isArray(payload.value[keyName]) + keyName in payload.value && + typeof payload.value[keyName] !== 'string' && + !Array.isArray(payload.value[keyName]) ) newState = Object.assign(payload.value[keyName], {...newState}) Vue.$socket.emit('server.database.post_item', { namespace: 'mainsail', key: keyName, value: newState }) @@ -256,7 +256,7 @@ export const actions: ActionTree = { resetLayout({ dispatch }, name) { const defaultState = getDefaultState() // eslint-disable-next-line - const newVal: any = defaultState.dashboard[name] ?? [] + const newVal: any = defaultState.dashboard[name] ?? [] dispatch('saveSetting', { name: 'dashboard.'+name, From 926c67ebb1d54589ab5ec113384e5fa53b6740b7 Mon Sep 17 00:00:00 2001 From: th33xitus Date: Sun, 7 Nov 2021 14:29:56 +0100 Subject: [PATCH 02/23] fix: replace tab characters by spaces Signed-off-by: Dominik Willner --- src/store/gui/getters.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/store/gui/getters.ts b/src/store/gui/getters.ts index 42c2b8a31..ad77e5dbb 100644 --- a/src/store/gui/getters.ts +++ b/src/store/gui/getters.ts @@ -8,7 +8,7 @@ export const getters: GetterTree = { getDatasetValue: (state) => (payload: { name: string, type: string }) => { if ( payload.name in state.tempchart.datasetSettings && - payload.type in state.tempchart.datasetSettings[payload.name] + payload.type in state.tempchart.datasetSettings[payload.name] ) return state.tempchart.datasetSettings[payload.name][payload.type] return ['temperature', 'target'].includes(payload.type) @@ -17,8 +17,8 @@ export const getters: GetterTree = { getDatasetAdditionalSensorValue: (state) => (payload: { name: string, sensor: string }) => { if ( payload.name in state.tempchart.datasetSettings && - 'additionalSensors' in state.tempchart.datasetSettings[payload.name] && - payload.sensor in state.tempchart.datasetSettings[payload.name].additionalSensors + 'additionalSensors' in state.tempchart.datasetSettings[payload.name] && + payload.sensor in state.tempchart.datasetSettings[payload.name].additionalSensors ) return state.tempchart.datasetSettings[payload.name].additionalSensors[payload.sensor] return true From 59151cb6054b82c991a90469b0c551590a51c89e Mon Sep 17 00:00:00 2001 From: th33xitus Date: Sun, 7 Nov 2021 15:53:34 +0100 Subject: [PATCH 03/23] feature: add lockable sliders Signed-off-by: Dominik Willner --- src/components/inputs/ToolSlider.vue | 16 ++++++++++++++ src/components/panels/PrintsettingsPanel.vue | 23 ++++++++++++++++++-- src/store/gui/actions.ts | 10 +++++++++ src/store/gui/getters.ts | 4 ++++ src/store/gui/index.ts | 1 + src/store/gui/mutations.ts | 19 ++++++++++++++++ 6 files changed, 71 insertions(+), 2 deletions(-) diff --git a/src/components/inputs/ToolSlider.vue b/src/components/inputs/ToolSlider.vue index 6b8381257..a671824ae 100644 --- a/src/components/inputs/ToolSlider.vue +++ b/src/components/inputs/ToolSlider.vue @@ -9,12 +9,18 @@ + + + {{ isLocked ? 'mdi-lock-outline' : 'mdi-lock-open-variant-outline' }} + + {{ label }} mdi-restart @@ -27,6 +33,7 @@ - + + diff --git a/src/store/gui/actions.ts b/src/store/gui/actions.ts index f59af3f10..aeff5254c 100644 --- a/src/store/gui/actions.ts +++ b/src/store/gui/actions.ts @@ -343,5 +343,15 @@ export const actions: ActionTree = { }) } + }, + + saveSliderLockState({ commit, dispatch, state }, payload) { + if (!payload.value) commit('removeFromLockedSliders', {name: payload.name}) + else commit('addToLockedSliders', { name: payload.name }) + + dispatch('updateSettings', { + keyName: 'dashboard.lockedSliders', + newVal: state.dashboard.lockedSliders + }) } } \ No newline at end of file diff --git a/src/store/gui/getters.ts b/src/store/gui/getters.ts index ad77e5dbb..e7154f311 100644 --- a/src/store/gui/getters.ts +++ b/src/store/gui/getters.ts @@ -58,5 +58,9 @@ export const getters: GetterTree = { } return panels + }, + + getLockedSliders: (state) => (name: string) => { + return state.dashboard.lockedSliders?.includes(name) ?? false } } diff --git a/src/store/gui/index.ts b/src/store/gui/index.ts index aab3f019c..7072d53c0 100644 --- a/src/store/gui/index.ts +++ b/src/store/gui/index.ts @@ -33,6 +33,7 @@ export const getDefaultState = (): GuiState => { hiddenMacros: [], macrogroups: [], hiddenTempChart: [], + lockedSliders: [], control: { style: 'bars', feedrateXY: 100, diff --git a/src/store/gui/mutations.ts b/src/store/gui/mutations.ts index d69cb7e14..5c72fbbbb 100644 --- a/src/store/gui/mutations.ts +++ b/src/store/gui/mutations.ts @@ -213,5 +213,24 @@ export const mutations: MutationTree = { const layoutArray = [...state.dashboard[payload.layoutname]] layoutArray.splice(payload.index, 1) Vue.set(state.dashboard, payload.layoutname, layoutArray) + }, + + addToLockedSliders(state, payload){ + const lockedSliders = [...state.dashboard.lockedSliders] + if (!lockedSliders.includes(payload.name)) { + lockedSliders.push(payload.name) + + Vue.set(state.dashboard, 'lockedSliders', lockedSliders) + } + }, + + removeFromLockedSliders(state, payload){ + const lockedSliders = [...state.dashboard.lockedSliders] + const index = lockedSliders.indexOf(payload.name) + if (index > -1) { + lockedSliders.splice(index, 1) + + Vue.set(state.dashboard, 'lockedSliders', lockedSliders) + } } } From 4ca08f5b92723cbba3ddddd6096f3b57314dde82 Mon Sep 17 00:00:00 2001 From: th33xitus Date: Sun, 7 Nov 2021 15:53:34 +0100 Subject: [PATCH 04/23] feat: add lockable sliders feat: add auto-lock sliders Signed-off-by: Dominik Willner --- src/components/inputs/ToolSlider.vue | 60 ++++++++++++++++++- src/components/panels/PrintsettingsPanel.vue | 25 +++++++- .../settings/SettingsUiSettingsTab.vue | 41 +++++++++++++ src/store/gui/actions.ts | 10 ++++ src/store/gui/getters.ts | 4 ++ src/store/gui/index.ts | 3 + src/store/gui/mutations.ts | 19 ++++++ 7 files changed, 159 insertions(+), 3 deletions(-) diff --git a/src/components/inputs/ToolSlider.vue b/src/components/inputs/ToolSlider.vue index 6b8381257..6d32954fc 100644 --- a/src/components/inputs/ToolSlider.vue +++ b/src/components/inputs/ToolSlider.vue @@ -9,12 +9,24 @@ + + + {{ sliderIsLocked ? 'mdi-lock-outline' : 'mdi-lock-open-variant-outline' }} + + {{ label }} mdi-restart @@ -27,10 +39,11 @@ diff --git a/src/components/settings/SettingsUiSettingsTab.vue b/src/components/settings/SettingsUiSettingsTab.vue index a63046a4c..ab65aaf0e 100644 --- a/src/components/settings/SettingsUiSettingsTab.vue +++ b/src/components/settings/SettingsUiSettingsTab.vue @@ -52,6 +52,30 @@ + + + + + + + + + + @@ -72,6 +96,7 @@ import BaseMixin from '@/components/mixins/base' import SettingsRow from '@/components/settings/SettingsRow.vue' import {defaultLogoColor, defaultPrimaryColor} from '@/store/variables' import {Debounce} from 'vue-debounce-decorator' + @Component({ components: {SettingsRow} }) @@ -143,6 +168,22 @@ export default class SettingsUiSettingsTab extends Mixins(BaseMixin) { this.$store.dispatch('gui/saveSetting', {name: 'general.confirmOnPowerDeviceChange', value: newVal }) } + get autoLockSliders() { + return this.$store.state.gui.general.autoLockSliders + } + + set autoLockSliders(newVal) { + this.$store.dispatch('gui/saveSetting', {name: 'general.autoLockSliders', value: newVal}) + } + + get autoLockSlidersTimeout() { + return this.$store.state.gui.general.autoLockSlidersTimeout + } + + set autoLockSlidersTimeout(newVal) { + (newVal >= 0) ? this.$store.dispatch('gui/saveSetting', {name: 'general.autoLockSlidersTimeout', value: newVal}) : {} + } + clearColorObject(color: any): string { if (typeof color === 'object' && 'hex' in color) color = color.hex diff --git a/src/store/gui/actions.ts b/src/store/gui/actions.ts index f59af3f10..aeff5254c 100644 --- a/src/store/gui/actions.ts +++ b/src/store/gui/actions.ts @@ -343,5 +343,15 @@ export const actions: ActionTree = { }) } + }, + + saveSliderLockState({ commit, dispatch, state }, payload) { + if (!payload.value) commit('removeFromLockedSliders', {name: payload.name}) + else commit('addToLockedSliders', { name: payload.name }) + + dispatch('updateSettings', { + keyName: 'dashboard.lockedSliders', + newVal: state.dashboard.lockedSliders + }) } } \ No newline at end of file diff --git a/src/store/gui/getters.ts b/src/store/gui/getters.ts index ad77e5dbb..e7154f311 100644 --- a/src/store/gui/getters.ts +++ b/src/store/gui/getters.ts @@ -58,5 +58,9 @@ export const getters: GetterTree = { } return panels + }, + + getLockedSliders: (state) => (name: string) => { + return state.dashboard.lockedSliders?.includes(name) ?? false } } diff --git a/src/store/gui/index.ts b/src/store/gui/index.ts index aab3f019c..6ef4341fd 100644 --- a/src/store/gui/index.ts +++ b/src/store/gui/index.ts @@ -17,6 +17,8 @@ export const getDefaultState = (): GuiState => { language: 'en', displayCancelPrint: false, displayZOffsetStandby: false, + autoLockSliders: false, + autoLockSlidersTimeout: 1.5, confirmOnEmergencyStop: false, confirmOnPowerDeviceChange: false, calcEstimateTime: ['file', 'filament'], @@ -33,6 +35,7 @@ export const getDefaultState = (): GuiState => { hiddenMacros: [], macrogroups: [], hiddenTempChart: [], + lockedSliders: [], control: { style: 'bars', feedrateXY: 100, diff --git a/src/store/gui/mutations.ts b/src/store/gui/mutations.ts index d69cb7e14..5c72fbbbb 100644 --- a/src/store/gui/mutations.ts +++ b/src/store/gui/mutations.ts @@ -213,5 +213,24 @@ export const mutations: MutationTree = { const layoutArray = [...state.dashboard[payload.layoutname]] layoutArray.splice(payload.index, 1) Vue.set(state.dashboard, payload.layoutname, layoutArray) + }, + + addToLockedSliders(state, payload){ + const lockedSliders = [...state.dashboard.lockedSliders] + if (!lockedSliders.includes(payload.name)) { + lockedSliders.push(payload.name) + + Vue.set(state.dashboard, 'lockedSliders', lockedSliders) + } + }, + + removeFromLockedSliders(state, payload){ + const lockedSliders = [...state.dashboard.lockedSliders] + const index = lockedSliders.indexOf(payload.name) + if (index > -1) { + lockedSliders.splice(index, 1) + + Vue.set(state.dashboard, 'lockedSliders', lockedSliders) + } } } From 6c6b27a0fedcb20470a3bbb99da24ac5438d931c Mon Sep 17 00:00:00 2001 From: th33xitus Date: Wed, 10 Nov 2021 10:45:32 +0100 Subject: [PATCH 05/23] locale: add EN locale for LockSlider and AutoLockSlider features. Signed-off-by: Dominik Willner --- src/locales/en.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/locales/en.json b/src/locales/en.json index ba2b88d55..7e0064073 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -674,6 +674,10 @@ "DisplayCANCEL_PRINTDescription": "Shows the CANCEL_PRINT button permanently - no second layer confirmation needed.", "DisplayZOffset": "Show Z-Offset-Panel", "DisplayZOffsetDescription": "Otherwise, the panel will appear only after a print has started.", + "LockSliders": "Lock sliders on Mobile and Tablet devices", + "LockSlidersDescription": "Sliders on smaller displays need to be unlocked before changes are allowed.", + "AutoLockSlidersTimeout": "Automatic slider locking timeout", + "AutoLockSlidersTimeoutDescription": "Auto-lock slider after a timeout. If set to 0 or left blank, sliders will only be locked on page change or reload.", "ConfirmOnEmergencyStop": "Require confirm on Emergency Stop", "ConfirmOnEmergencyStopDescription": "Show a confirmation dialog on Emergency Stop", "ConfirmOnPowerDeviceChange": "Require confirm on Device Power changes", From ecf9ea67590fe40c536ed67f697d32f28b0477e5 Mon Sep 17 00:00:00 2001 From: th33xitus Date: Wed, 10 Nov 2021 10:49:21 +0100 Subject: [PATCH 06/23] chore: rename autoLockSliders to lockSliders refactor: include startLockTimer method in sendCmd method Signed-off-by: Dominik Willner --- src/components/inputs/ToolSlider.vue | 34 ++++++++++--------- .../settings/SettingsUiSettingsTab.vue | 16 ++++----- src/store/gui/index.ts | 2 +- 3 files changed, 27 insertions(+), 25 deletions(-) diff --git a/src/components/inputs/ToolSlider.vue b/src/components/inputs/ToolSlider.vue index 6d32954fc..bbc713178 100644 --- a/src/components/inputs/ToolSlider.vue +++ b/src/components/inputs/ToolSlider.vue @@ -10,7 +10,7 @@ @@ -98,12 +98,12 @@ export default class ToolSlider extends Mixins(BaseMixin) { } //initialize slider lock state on component creation - this.autoLockSlidersChanged() + this.lockSlidersChanged() } - @Watch('autoLockSliders') - autoLockSlidersChanged(){ - if(this.autoLockSliders && this.isTouchDevice){ + @Watch('lockSliders') + lockSlidersChanged(){ + if(this.lockSliders && this.isTouchDevice){ this.sliderIsLocked = true } else { this.sliderIsLocked = false @@ -115,8 +115,8 @@ export default class ToolSlider extends Mixins(BaseMixin) { return (this.isMobile || this.isTablet) ?? false } - get autoLockSliders() { - return this.$store.state.gui.general.autoLockSliders + get lockSliders() { + return this.$store.state.gui.general.lockSliders } get autoLockSlidersTimeout() { @@ -133,11 +133,12 @@ export default class ToolSlider extends Mixins(BaseMixin) { startLockTimer() { let timeout = this.autoLockSlidersTimeout - setTimeout(() => { - if(this.autoLockSliders && timeout > 0 && !this.sliderIsLocked) { - this.sliderIsLocked = true - } - }, timeout * 1000) + + if(this.lockSliders && this.isTouchDevice) { + setTimeout(() => { + (timeout > 0 && !this.sliderIsLocked) ? this.sliderIsLocked = true : {} + }, timeout * 1000) + } } get colorBar() { @@ -177,13 +178,14 @@ export default class ToolSlider extends Mixins(BaseMixin) { } this.sendCmd() - this.startLockTimer() } sendCmd() { const gcode = this.command + ' ' + this.attributeName + (Math.max(1, this.value) * this.attributeScale).toFixed(0) this.$store.dispatch('server/addEvent', {message: gcode, type: 'command'}) this.$socket.emit('printer.gcode.script', {script: gcode}) + + this.startLockTimer() } decrement() { diff --git a/src/components/settings/SettingsUiSettingsTab.vue b/src/components/settings/SettingsUiSettingsTab.vue index ab65aaf0e..acae0bea6 100644 --- a/src/components/settings/SettingsUiSettingsTab.vue +++ b/src/components/settings/SettingsUiSettingsTab.vue @@ -52,12 +52,12 @@ - - + + - + - + @@ -168,12 +168,12 @@ export default class SettingsUiSettingsTab extends Mixins(BaseMixin) { this.$store.dispatch('gui/saveSetting', {name: 'general.confirmOnPowerDeviceChange', value: newVal }) } - get autoLockSliders() { - return this.$store.state.gui.general.autoLockSliders + get lockSliders() { + return this.$store.state.gui.general.lockSliders } - set autoLockSliders(newVal) { - this.$store.dispatch('gui/saveSetting', {name: 'general.autoLockSliders', value: newVal}) + set lockSliders(newVal) { + this.$store.dispatch('gui/saveSetting', {name: 'general.lockSliders', value: newVal}) } get autoLockSlidersTimeout() { diff --git a/src/store/gui/index.ts b/src/store/gui/index.ts index 1a54556af..7cbd41a10 100644 --- a/src/store/gui/index.ts +++ b/src/store/gui/index.ts @@ -19,7 +19,7 @@ export const getDefaultState = (): GuiState => { language: 'en', displayCancelPrint: false, displayZOffsetStandby: false, - autoLockSliders: false, + lockSliders: false, autoLockSlidersTimeout: 1.5, confirmOnEmergencyStop: false, confirmOnPowerDeviceChange: false, From 0ad314640592aaf670abe92fc90ba1be1b7e433e Mon Sep 17 00:00:00 2001 From: th33xitus Date: Sun, 14 Nov 2021 19:49:22 +0100 Subject: [PATCH 07/23] refactor: refactor startLockTimer method Signed-off-by: Dominik Willner --- src/components/inputs/ToolSlider.vue | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/components/inputs/ToolSlider.vue b/src/components/inputs/ToolSlider.vue index bbc713178..daa5cecb8 100644 --- a/src/components/inputs/ToolSlider.vue +++ b/src/components/inputs/ToolSlider.vue @@ -132,13 +132,10 @@ export default class ToolSlider extends Mixins(BaseMixin) { } startLockTimer() { - let timeout = this.autoLockSlidersTimeout + if (!this.isTouchDevice || !this.lockSliders || this.sliderIsLocked) return - if(this.lockSliders && this.isTouchDevice) { - setTimeout(() => { - (timeout > 0 && !this.sliderIsLocked) ? this.sliderIsLocked = true : {} - }, timeout * 1000) - } + let timeout = this.autoLockSlidersTimeout + if (timeout > 0) setTimeout(() => this.sliderIsLocked = true, timeout * 1000) } get colorBar() { From 3240879fc93312c1519caabd4075dece2081f11f Mon Sep 17 00:00:00 2001 From: th33xitus Date: Sun, 14 Nov 2021 19:51:17 +0100 Subject: [PATCH 08/23] refactor: lockSlidersChanged Watcher Signed-off-by: Dominik Willner --- src/components/inputs/ToolSlider.vue | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/components/inputs/ToolSlider.vue b/src/components/inputs/ToolSlider.vue index daa5cecb8..298179733 100644 --- a/src/components/inputs/ToolSlider.vue +++ b/src/components/inputs/ToolSlider.vue @@ -96,12 +96,9 @@ export default class ToolSlider extends Mixins(BaseMixin) { if (this.value >= this.processedMax) { this.processedMax = (Math.ceil(this.value / this.dynamicStep) + 1) * this.dynamicStep } - - //initialize slider lock state on component creation - this.lockSlidersChanged() } - @Watch('lockSliders') + @Watch('lockSliders', {immediate: true}) lockSlidersChanged(){ if(this.lockSliders && this.isTouchDevice){ this.sliderIsLocked = true From 1246dc95aa6386874fcf243cc107b55e2926423e Mon Sep 17 00:00:00 2001 From: th33xitus Date: Sun, 14 Nov 2021 23:07:24 +0100 Subject: [PATCH 09/23] refactor: remove helper, use new isTouchDevice BaseMixin method instead Signed-off-by: Dominik Willner --- src/components/inputs/ToolSlider.vue | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/components/inputs/ToolSlider.vue b/src/components/inputs/ToolSlider.vue index 298179733..6bfb08aa2 100644 --- a/src/components/inputs/ToolSlider.vue +++ b/src/components/inputs/ToolSlider.vue @@ -10,7 +10,7 @@ Date: Sun, 14 Nov 2021 23:43:54 +0100 Subject: [PATCH 10/23] feat: add lockable sliders to miscellaneous sliders Signed-off-by: Dominik Willner --- src/components/inputs/MiscellaneousSlider.vue | 73 +++++++++++++++++-- src/components/panels/MiscellaneousPanel.vue | 2 + 2 files changed, 69 insertions(+), 6 deletions(-) diff --git a/src/components/inputs/MiscellaneousSlider.vue b/src/components/inputs/MiscellaneousSlider.vue index cd1f3dabf..702790283 100644 --- a/src/components/inputs/MiscellaneousSlider.vue +++ b/src/components/inputs/MiscellaneousSlider.vue @@ -9,16 +9,40 @@ - mdi-fan + + + {{ sliderIsLocked ? 'mdi-lock-outline' : 'mdi-lock-open-variant-outline' }} + + + + mdi-fan + {{ convertName(name) }} - {{ Math.round(rpm) }} RPM - {{ Math.round(parseFloat(value)*100) }} % - {{ value ? "mdi-toggle-switch" : "mdi-toggle-switch-off-outline" }} + + {{ Math.round(rpm) }} RPM + + + {{ Math.round(parseFloat(value)*100) }} % + + + {{ value ? "mdi-toggle-switch" : "mdi-toggle-switch-off-outline" }} + @@ -53,6 +77,8 @@ export default class MiscellaneousSlider extends Mixins(BaseMixin) { private min = 0 private value = 0 + @Prop({ required: true }) readonly sliderName!: string + @Prop({ type: Boolean, default: true, required: true }) readonly canLock!: string @Prop({ type: Number, required: true }) target!: number @Prop({ type: Number, default: 1 }) max!: number @Prop({ type: String, default: '' }) name!: string @@ -63,6 +89,39 @@ export default class MiscellaneousSlider extends Mixins(BaseMixin) { @Prop({ type: Number, default: 1 }) multi!: number @Prop({ type: Number, default: 0 }) off_below!: number + @Watch('lockSliders', {immediate: true}) + lockSlidersChanged(){ + if(this.lockSliders && this.isTouchDevice){ + this.sliderIsLocked = true + } else { + this.sliderIsLocked = false + } + } + + get lockSliders() { + return this.$store.state.gui.general.lockSliders + } + + get autoLockSlidersTimeout() { + return this.$store.state.gui.general.autoLockSlidersTimeout + } + + get sliderIsLocked() { + return this.$store.getters['gui/getLockedSliders'](this.sliderName) + } + + set sliderIsLocked(newVal) { + if (!this.controllable) return + this.$store.dispatch('gui/saveSliderLockState', { name: this.sliderName, value: newVal }) + } + + startLockTimer() { + if (!this.isTouchDevice || !this.lockSliders || this.sliderIsLocked) return + + let timeout = this.autoLockSlidersTimeout + if (timeout > 0) setTimeout(() => this.sliderIsLocked = true, timeout * 1000) + } + @Debounce(500) changeSlicer() { this.sendCmd() @@ -84,6 +143,8 @@ export default class MiscellaneousSlider extends Mixins(BaseMixin) { this.$store.dispatch('server/addEvent', {message: gcode, type: 'command'}) this.$socket.emit('printer.gcode.script', {script: gcode}) } + + this.startLockTimer() } switchOutputPin() { diff --git a/src/components/panels/MiscellaneousPanel.vue b/src/components/panels/MiscellaneousPanel.vue index 899932273..e9cdeb4a1 100644 --- a/src/components/panels/MiscellaneousPanel.vue +++ b/src/components/panels/MiscellaneousPanel.vue @@ -13,6 +13,7 @@
From bdbc83d8ababa6d5be5fc02a6902f07db870553c Mon Sep 17 00:00:00 2001 From: th33xitus Date: Tue, 16 Nov 2021 21:18:01 +0100 Subject: [PATCH 11/23] fix: every interaction with the slider resets timeout correctly Signed-off-by: Dominik Willner --- src/components/inputs/MiscellaneousSlider.vue | 19 ++++++++++++------- src/components/inputs/ToolSlider.vue | 19 ++++++++++++------- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/src/components/inputs/MiscellaneousSlider.vue b/src/components/inputs/MiscellaneousSlider.vue index 702790283..5649ad6ff 100644 --- a/src/components/inputs/MiscellaneousSlider.vue +++ b/src/components/inputs/MiscellaneousSlider.vue @@ -42,6 +42,7 @@ this.sliderIsLocked = true, t * 1000) + } + + resetLockTimer() { + clearTimeout(this.timeout) + } + get lockSliders() { return this.$store.state.gui.general.lockSliders } @@ -115,13 +127,6 @@ export default class MiscellaneousSlider extends Mixins(BaseMixin) { this.$store.dispatch('gui/saveSliderLockState', { name: this.sliderName, value: newVal }) } - startLockTimer() { - if (!this.isTouchDevice || !this.lockSliders || this.sliderIsLocked) return - - let timeout = this.autoLockSlidersTimeout - if (timeout > 0) setTimeout(() => this.sliderIsLocked = true, timeout * 1000) - } - @Debounce(500) changeSlicer() { this.sendCmd() diff --git a/src/components/inputs/ToolSlider.vue b/src/components/inputs/ToolSlider.vue index 6bfb08aa2..45857f291 100644 --- a/src/components/inputs/ToolSlider.vue +++ b/src/components/inputs/ToolSlider.vue @@ -39,6 +39,7 @@ this.sliderIsLocked = true, t * 1000) + } + + resetLockTimer() { + clearTimeout(this.timeout) + } + get lockSliders() { return this.$store.state.gui.general.lockSliders } @@ -123,13 +135,6 @@ export default class ToolSlider extends Mixins(BaseMixin) { this.$store.dispatch('gui/saveSliderLockState', { name: this.sliderName, value: newVal }) } - startLockTimer() { - if (!this.isTouchDevice || !this.lockSliders || this.sliderIsLocked) return - - let timeout = this.autoLockSlidersTimeout - if (timeout > 0) setTimeout(() => this.sliderIsLocked = true, timeout * 1000) - } - get colorBar() { return this.max < this.value ? 'warning' : 'primary' } From 2b7ef4a75f31fe225a44dcc5d92665516f66c641 Mon Sep 17 00:00:00 2001 From: th33xitus Date: Tue, 16 Nov 2021 21:19:44 +0100 Subject: [PATCH 12/23] fix: fix typo Signed-off-by: Dominik Willner --- src/components/inputs/MiscellaneousSlider.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/inputs/MiscellaneousSlider.vue b/src/components/inputs/MiscellaneousSlider.vue index 5649ad6ff..c3a1ce583 100644 --- a/src/components/inputs/MiscellaneousSlider.vue +++ b/src/components/inputs/MiscellaneousSlider.vue @@ -48,7 +48,7 @@ :max="1.0" :step="0.01" :color="value < off_below && value > 0 ? 'red' : undefined" - @change="changeSlicer()" + @change="changeSlider" hide-details >