dev #84
|
@ -18,6 +18,7 @@ const extra_section = use_extra_section()
|
||||||
const total_length = use_total_length()
|
const total_length = use_total_length()
|
||||||
const min_length = use_min_length()
|
const min_length = use_min_length()
|
||||||
const goto_cam = use_goto_camera()
|
const goto_cam = use_goto_camera()
|
||||||
|
const open_calc = use_open_calc()
|
||||||
|
|
||||||
if (!pillar_color.value) {
|
if (!pillar_color.value) {
|
||||||
const r = Math.floor(Math.random() * predefPillarColors.length)
|
const r = Math.floor(Math.random() * predefPillarColors.length)
|
||||||
|
@ -182,6 +183,12 @@ const calc_table = computed(() => {
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
|
|
||||||
|
watch(open_calc, () => {
|
||||||
|
if (Object.keys(open_calc.value).length == 0) {
|
||||||
|
goto_cam.value = new Vector3(1, 1, 1)
|
||||||
|
}
|
||||||
|
})
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<div class="container relative py-4">
|
<div class="container relative py-4">
|
||||||
|
@ -231,7 +238,8 @@ const calc_table = computed(() => {
|
||||||
<div class="form-row">
|
<div class="form-row">
|
||||||
<div class="form-item form-item_color">
|
<div class="form-item form-item_color">
|
||||||
<label for="lamelle_color">Цвет ламелей</label>
|
<label for="lamelle_color">Цвет ламелей</label>
|
||||||
<DropdownPicker type="color" :cb="setLamelleColor" name="lamelle_color">
|
<DropdownPicker type="color" :cb="setLamelleColor" name="lamelle_color"
|
||||||
|
:goto_cam="new Vector3(1, 1, 1)">
|
||||||
<input id="lamelle_color" type="text" :value="getColorNameFromRal(lamelle_color)" :style="{
|
<input id="lamelle_color" type="text" :value="getColorNameFromRal(lamelle_color)" :style="{
|
||||||
backgroundColor: getColorHexFromRal(lamelle_color) ?? 'transparent',
|
backgroundColor: getColorHexFromRal(lamelle_color) ?? 'transparent',
|
||||||
color: lamelle_text
|
color: lamelle_text
|
||||||
|
@ -240,7 +248,8 @@ const calc_table = computed(() => {
|
||||||
</div>
|
</div>
|
||||||
<div class="form-item form-item_color">
|
<div class="form-item form-item_color">
|
||||||
<label for="pillar_color">Цвет столба</label>
|
<label for="pillar_color">Цвет столба</label>
|
||||||
<DropdownPicker type="color" :cb="setPillarColor" name="pillar_color">
|
<DropdownPicker type="color" :cb="setPillarColor" name="pillar_color"
|
||||||
|
:goto_cam="new Vector3(-1, -1, -1)">
|
||||||
<input id="pillar_color" type="text" :value="getColorNameFromRal(pillar_color)" :style="{
|
<input id="pillar_color" type="text" :value="getColorNameFromRal(pillar_color)" :style="{
|
||||||
backgroundColor: getColorHexFromRal(pillar_color) ?? 'transparent',
|
backgroundColor: getColorHexFromRal(pillar_color) ?? 'transparent',
|
||||||
color: pillar_text
|
color: pillar_text
|
||||||
|
@ -249,13 +258,13 @@ const calc_table = computed(() => {
|
||||||
</div>
|
</div>
|
||||||
<div class="form-item form-item_color">
|
<div class="form-item form-item_color">
|
||||||
<label for="pillar_pattern">Узор столба</label>
|
<label for="pillar_pattern">Узор столба</label>
|
||||||
<DropdownPicker type="pattern" :cb="setPillarPattern">
|
<DropdownPicker type="pattern" :cb="setPillarPattern" name="pillar_pattern"
|
||||||
|
:goto_cam="new Vector3(-1, 1, -1)">
|
||||||
<input id="pillar_pattern" type="text" :value="pillar_pattern" :style="{
|
<input id="pillar_pattern" type="text" :value="pillar_pattern" :style="{
|
||||||
backgroundImage: `url(${getFilename(pillar_pattern)})`
|
backgroundImage: `url(${getFilename(pillar_pattern)})`
|
||||||
}" />
|
}" />
|
||||||
</DropdownPicker>
|
</DropdownPicker>
|
||||||
</div>
|
</div>
|
||||||
{{ goto_cam }}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<template v-if="(form_state.total_length * 1000) >= parametric.length.min">
|
<template v-if="(form_state.total_length * 1000) >= parametric.length.min">
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ralClassicPallette, getColorHexFromRal } from '@/components/ral'
|
import { getColorHexFromRal } from '@/components/ral'
|
||||||
|
import { Vector3 } from 'three';
|
||||||
|
|
||||||
const props = defineProps(['color', 'cb', 'name', 'type'])
|
const props = defineProps(['color', 'cb', 'name', 'type', 'goto_cam'])
|
||||||
|
|
||||||
const goto_cam = use_goto_camera()
|
const goto_cam = use_goto_camera()
|
||||||
const open_calc = use_open_calc()
|
const open_calc = use_open_calc()
|
||||||
|
@ -12,10 +13,9 @@ const is_open = ref<boolean>(open_calc.value.includes(props.name))
|
||||||
const toggleOpen = (value: boolean = !is_open) => {
|
const toggleOpen = (value: boolean = !is_open) => {
|
||||||
is_open.value = value
|
is_open.value = value
|
||||||
if (value == true) open_calc.value = [props.name]
|
if (value == true) open_calc.value = [props.name]
|
||||||
else if (value == false) open_calc.value.splice(open_calc.value.indexOf(props.name), 1)
|
else if (value == false && open_calc.value.includes(props.name)) open_calc.value = []
|
||||||
|
|
||||||
if (value == true) goto_cam.value = undefined
|
if (value == true && props.goto_cam) goto_cam.value = props.goto_cam
|
||||||
else if (value == false) goto_cam.value = undefined
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const onClick = (color: string) => {
|
const onClick = (color: string) => {
|
||||||
|
@ -36,6 +36,7 @@ onMounted(() => {
|
||||||
onUnmounted(() => {
|
onUnmounted(() => {
|
||||||
document.removeEventListener('click', clickOutside)
|
document.removeEventListener('click', clickOutside)
|
||||||
})
|
})
|
||||||
|
|
||||||
watch(open_calc, () => {
|
watch(open_calc, () => {
|
||||||
if (open_calc.value.includes(props.name) && is_open.value !== true) {
|
if (open_calc.value.includes(props.name) && is_open.value !== true) {
|
||||||
is_open.value = true
|
is_open.value = true
|
||||||
|
@ -59,7 +60,7 @@ watch(open_calc, () => {
|
||||||
<div class="picker-changer flex flex-wrap" v-if="is_open">
|
<div class="picker-changer flex flex-wrap" v-if="is_open">
|
||||||
<template v-if="props.type == 'color'">
|
<template v-if="props.type == 'color'">
|
||||||
<DropdownColorPicker :color="props.color" :cb="onClick" />
|
<DropdownColorPicker :color="props.color" :cb="onClick" />
|
||||||
</template>
|
</template>
|
||||||
<template v-else-if="props.type == 'pattern'">
|
<template v-else-if="props.type == 'pattern'">
|
||||||
<DropdownList :color="props.color" :cb="onClick" />
|
<DropdownList :color="props.color" :cb="onClick" />
|
||||||
</template>
|
</template>
|
||||||
|
|
Loading…
Reference in New Issue