123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- <template>
- <div class="row items-baseline">
- <div class="col-xs-12 col-sm-auto text-weight-bold text-center q-px-md q-py-sm">
- <div :style="flexRowTitleStyle">
- Units
- </div>
- </div>
- <div class="col-xs-grow col-sm q-px-xs">
- <div class="row justify-xs-center justify-sm-start items-center">
- <div class="col-auto" >
- <div class="row items-center justify-center">
- <div class="text-right"> length </div>
- <q-select
- v-model="units"
- :options="unitsOptions"
- class="q-pa-xs"
- outlined
- dense
- options-dense
- :style="'width: '+basicSelectorWidthStyle"
- behavior="menu"
- >
- </q-select>
- <div/>
- </div>
- </div>
- <div class="col-auto" >
- <div class="row items-center justify-center">
- <div class="text-right q-pl-md"> plane wave </div>
- <q-select
- v-model="sourceUnits"
- :options="sourceUnitsOptions"
- :style="'width: '+basicSelectorWidthStyle"
- class="q-pa-xs"
- :disable="isSourceSameUnits"
- :outlined="!isSourceSameUnits"
- :filled="isSourceSameUnits"
- dense
- options-dense
- option-value="label"
- option-label="label"
- behavior="menu"
- >
- <template #option="scope">
- <q-item :label="scope.opt.title" dense>
- <q-item-section class="text-weight-bold">{{ scope.opt.title }}</q-item-section>
- </q-item>
- <template v-for="child in scope.opt.children" :key="child.label">
- <q-item v-close-popup dense clickable
- @click="sourceUnits = child"
- >
- <q-item-section> <q-item-label class="q-ml-md"> {{child.label}} </q-item-label> </q-item-section>
- </q-item>
- </template>
- </template>
- </q-select>
- <div class="row q-pa-xs items-center">
- <q-checkbox v-model="isSourceSameUnits" size="sm"/>
- <div>same</div>
- </div>
- </div>
- </div>
- {{sourceUnits}}
- {{$store.state.guiRuntime}}
- </div>
- </div>
- </div>
- </template>
- <script lang="ts">
- import {
- defineComponent,
- computed,
- watch
- } from 'vue'
- import { useStore } from 'src/store'
- import { flexRowTitleStyle, basicSelectorWidthStyle } from 'components/config'
- export default defineComponent({
- name: 'GetUnits',
- components: {},
- setup() {
- const unitsOptions = [ 'nm', 'µm', 'mm', 'cm', 'm']
- const sourceUnitsOptions = [
- { title: 'Frequency',
- children: [{label: 'MHz'},{label: 'GHz'},{label: 'THz'}]},
- { title: 'Energy',
- children: [{label: 'meV'}, {label: 'eV'}]},
- { title: 'Period duration',
- children: [{label: 'ps'}, {label: 'fs'}]}
- ]
- const $store = useStore()
- const isSourceSameUnits = computed({
- get: () => $store.state.guiRuntime.isSourceSameUnits,
- set: val => $store.commit('guiRuntime/setIsSourceSameUnits', val)
- })
- const units = computed({
- get: () => $store.state.guiRuntime.units,
- set: val => $store.commit('guiRuntime/setUnits', val)
- })
- const sourceUnits = computed({
- get: () => {return {label:$store.state.guiRuntime.sourceUnits}},
- set: val => $store.commit('guiRuntime/setSourceUnits', val.label)
- })
- let prevCustomSourceUnits = 'THz'
- watch(isSourceSameUnits, ()=>{
- if (isSourceSameUnits.value) {
- prevCustomSourceUnits = $store.state.guiRuntime.sourceUnits
- $store.commit('guiRuntime/setSourceUnits',units.value)
- }
- else $store.commit('guiRuntime/setSourceUnits',prevCustomSourceUnits)
- })
- watch(units, ()=>{
- if (isSourceSameUnits.value) $store.commit('guiRuntime/setSourceUnits',units.value)
- })
- return { isSourceSameUnits, flexRowTitleStyle, basicSelectorWidthStyle,
- unitsOptions, units,
- sourceUnits, sourceUnitsOptions }
- },
- })
- </script>
|