From 493120b5456282756d05d9afaf66b11a2f87d8fc Mon Sep 17 00:00:00 2001 From: Alexander Tumin Date: Sat, 18 Mar 2023 20:48:36 +0300 Subject: Generalize IntegerSetting into NumberSetting, add Integer/Float wrappers --- .../settings_modal/helpers/float_setting.vue | 16 +++++++ .../settings_modal/helpers/integer_setting.js | 44 ----------------- .../settings_modal/helpers/integer_setting.vue | 36 +++++--------- .../settings_modal/helpers/number_setting.js | 56 ++++++++++++++++++++++ .../settings_modal/helpers/number_setting.vue | 27 +++++++++++ 5 files changed, 112 insertions(+), 67 deletions(-) create mode 100644 src/components/settings_modal/helpers/float_setting.vue delete mode 100644 src/components/settings_modal/helpers/integer_setting.js create mode 100644 src/components/settings_modal/helpers/number_setting.js create mode 100644 src/components/settings_modal/helpers/number_setting.vue (limited to 'src/components/settings_modal/helpers') diff --git a/src/components/settings_modal/helpers/float_setting.vue b/src/components/settings_modal/helpers/float_setting.vue new file mode 100644 index 00000000..15edb3c3 --- /dev/null +++ b/src/components/settings_modal/helpers/float_setting.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/components/settings_modal/helpers/integer_setting.js b/src/components/settings_modal/helpers/integer_setting.js deleted file mode 100644 index e64d0cee..00000000 --- a/src/components/settings_modal/helpers/integer_setting.js +++ /dev/null @@ -1,44 +0,0 @@ -import { get, set } from 'lodash' -import ModifiedIndicator from './modified_indicator.vue' -export default { - components: { - ModifiedIndicator - }, - props: { - path: String, - disabled: Boolean, - min: Number, - expert: [Number, String] - }, - computed: { - pathDefault () { - const [firstSegment, ...rest] = this.path.split('.') - return [firstSegment + 'DefaultValue', ...rest].join('.') - }, - state () { - const value = get(this.$parent, this.path) - if (value === undefined) { - return this.defaultState - } else { - return value - } - }, - defaultState () { - return get(this.$parent, this.pathDefault) - }, - isChanged () { - return this.state !== this.defaultState - }, - matchesExpertLevel () { - return (this.expert || 0) <= this.$parent.expertLevel - } - }, - methods: { - update (e) { - set(this.$parent, this.path, parseInt(e.target.value)) - }, - reset () { - set(this.$parent, this.path, this.defaultState) - } - } -} diff --git a/src/components/settings_modal/helpers/integer_setting.vue b/src/components/settings_modal/helpers/integer_setting.vue index 695e2673..43fa7e1a 100644 --- a/src/components/settings_modal/helpers/integer_setting.vue +++ b/src/components/settings_modal/helpers/integer_setting.vue @@ -1,27 +1,17 @@ - + diff --git a/src/components/settings_modal/helpers/number_setting.js b/src/components/settings_modal/helpers/number_setting.js new file mode 100644 index 00000000..73c39948 --- /dev/null +++ b/src/components/settings_modal/helpers/number_setting.js @@ -0,0 +1,56 @@ +import { get, set } from 'lodash' +import ModifiedIndicator from './modified_indicator.vue' +export default { + components: { + ModifiedIndicator + }, + props: { + path: String, + disabled: Boolean, + min: Number, + step: Number, + truncate: Number, + expert: [Number, String] + }, + computed: { + pathDefault () { + const [firstSegment, ...rest] = this.path.split('.') + return [firstSegment + 'DefaultValue', ...rest].join('.') + }, + parent () { + return this.$parent.$parent + }, + state () { + const value = get(this.parent, this.path) + if (value === undefined) { + return this.defaultState + } else { + return value + } + }, + defaultState () { + return get(this.parent, this.pathDefault) + }, + isChanged () { + return this.state !== this.defaultState + }, + matchesExpertLevel () { + return (this.expert || 0) <= this.parent.expertLevel + } + }, + methods: { + truncateValue (value) { + if (!this.truncate) { + return value + } + + return Math.trunc(value / this.truncate) * this.truncate + }, + update (e) { + set(this.parent, this.path, this.truncateValue(parseFloat(e.target.value))) + }, + reset () { + set(this.parent, this.path, this.defaultState) + } + } +} diff --git a/src/components/settings_modal/helpers/number_setting.vue b/src/components/settings_modal/helpers/number_setting.vue new file mode 100644 index 00000000..3eab5178 --- /dev/null +++ b/src/components/settings_modal/helpers/number_setting.vue @@ -0,0 +1,27 @@ + + + -- cgit v1.2.3-70-g09d2