diff --git a/src/components/device-gui/PixelBarTest.vue b/src/components/device-gui/PixelBarTest.vue index 741df02..57cafc3 100644 --- a/src/components/device-gui/PixelBarTest.vue +++ b/src/components/device-gui/PixelBarTest.vue @@ -2,6 +2,10 @@ import { ref, computed } from 'vue' import { Input } from '@/components/ui/input' +const model = defineModel() + +const bar = ref(null); + const width = ref(160) const count = ref(40) const percent = ref(60) @@ -13,55 +17,70 @@ const rect_width = computed(() => { return (width.value - ((count.value + 1) * gap_width.value)) / (count.value) }) const current_pos = computed(() => { - return Math.round((percent.value / 100) * count.value) + return Math.round((percent.value / 100) * (count.value - 1)) }) +function onMouseDown() { + window.addEventListener('mousemove', onMouseMove) + window.addEventListener('mouseup', onMouseUp) +} +function onMouseMove(e) { + const rect = bar.value.getBoundingClientRect() + percent.value = Math.max(0, Math.min(Math.round((e.clientX - rect.left - 9) / (width.value - 6) * 100), 100)) + model.value = percent.value +} +function onMouseUp() { + window.removeEventListener('mousemove', onMouseMove) + window.removeEventListener('mouseup', onMouseUp) +}