123 lines
2.7 KiB
TypeScript
Executable File
123 lines
2.7 KiB
TypeScript
Executable File
import { defineComponent, ref, computed, PropType, toRef } from 'vue'
|
|
import { IOperators } from 'model'
|
|
|
|
import { useI18n } from '@/boot/i18n'
|
|
import { useQuasar } from 'quasar'
|
|
|
|
import { shared_consts } from '@/common/shared_vuejs'
|
|
|
|
export default defineComponent({
|
|
name: 'CMySlider',
|
|
props: {
|
|
modelValue: {
|
|
type: [String, Number],
|
|
required: true,
|
|
},
|
|
label: {
|
|
type: String,
|
|
required: true,
|
|
},
|
|
min: {
|
|
type: Number,
|
|
required: true,
|
|
},
|
|
max: {
|
|
type: Number,
|
|
required: true,
|
|
},
|
|
addstr: {
|
|
type: String,
|
|
required: false,
|
|
default: '',
|
|
},
|
|
color: {
|
|
type: String,
|
|
required: false,
|
|
default: '',
|
|
},
|
|
disable: {
|
|
type: Boolean,
|
|
required: false,
|
|
default: false,
|
|
},
|
|
},
|
|
setup(props, { emit }) {
|
|
const $q = useQuasar()
|
|
const { t } = useI18n()
|
|
|
|
|
|
const sliderValue = computed({
|
|
get: () => {
|
|
let mystr = props.modelValue + ''
|
|
return mystr.replace(props.addstr, '')
|
|
},
|
|
set: (value) => emit('update:modelValue', value ? value + props.addstr : '')
|
|
})
|
|
|
|
function valoreinc() {
|
|
let mioval = parseFloat(sliderValue.value)
|
|
if (mioval >= 1000) {
|
|
return 20
|
|
} else if (mioval >= 500) {
|
|
return 10
|
|
} else if (mioval >= 100) {
|
|
return 5
|
|
} else {
|
|
if (props.max < 5) {
|
|
return Math.abs((props.max - props.min) / 20)
|
|
} else {
|
|
return 1
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|
|
function incrementValue() {
|
|
if (!sliderValue.value) {
|
|
sliderValue.value = '1'
|
|
} else {
|
|
sliderValue.value = (parseFloat(sliderValue.value) + valoreinc()) + ''; // Aumenta il valore
|
|
}
|
|
}
|
|
|
|
function decrementValue() {
|
|
if (sliderValue.value === '0') {
|
|
sliderValue.value = ''
|
|
} else if (!sliderValue.value) {
|
|
// niente
|
|
} else {
|
|
sliderValue.value = (parseFloat(sliderValue.value) - valoreinc()) + ''; // Diminuisci il valore
|
|
}
|
|
}
|
|
|
|
function incrementValuePlus1() {
|
|
if (!sliderValue.value) {
|
|
sliderValue.value = '1'
|
|
} else {
|
|
sliderValue.value = (parseFloat(sliderValue.value) + 1) + ''; // Aumenta il valore
|
|
}
|
|
}
|
|
|
|
function decrementValueMinus1() {
|
|
if (sliderValue.value === '0') {
|
|
sliderValue.value = ''
|
|
} else if (!sliderValue.value) {
|
|
// niente
|
|
} else {
|
|
sliderValue.value = (parseFloat(sliderValue.value) - 1) + ''; // Diminuisci il valore
|
|
}
|
|
}
|
|
|
|
return {
|
|
t,
|
|
shared_consts,
|
|
sliderValue,
|
|
incrementValue,
|
|
decrementValue,
|
|
decrementValueMinus1,
|
|
incrementValuePlus1,
|
|
}
|
|
}
|
|
})
|