| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 | <template>    <div class="field is-horizontal source-params">        <div class="field-label is-normal">            <label class="label">                <div v-if="source_units.endsWith('Hz')"> Frequency  </div>                <div v-else-if="source_units.endsWith('eV')"> Energy  </div>                <div v-else-if="source_units.endsWith('s')"> Period  </div>                <div v-else>               Wavelength              </div>            </label>        </div>        <div class="field-body">            <div class="field is-grouped is-grouped-multiline">                <input-with-units title="from" v-bind:units="source_units"                                  v-bind:value="fromWLLocal"                                  @newdata="fromWLLocal=$event"/>                <input-with-units title="to" v-bind:units="source_units"                                  v-bind:value="toWLLocal"                                  @newdata="toWLLocal=$event"/>                <div>                <div v-if="isStep">                <input-with-units title="step" v-bind:units="source_units"                                  v-bind:value="stepWLLocal"                                  @newdata="stepWLLocal=$event"/>                </div>                <div v-else>                    <input-with-units title="points" units=""                                      v-bind:value="pointsNum"                                      @newdata="pointsNum=$event"/>                </div>                <b-switch v-model="isStep" class="switch-style"/>                </div>            </div>        </div>    </div></template><script>    import InputWithUnits from "./InputWithUnits.vue";    export default {        name: "GetSourceParameters",        components: {            InputWithUnits        },        data () {            return {                // TODO: Is it OK to modify Local later?                fromWLLocal: this.fromWL,                toWLLocal: this.toWL,                stepWLLocal: this.stepWL,                pointsNum: 100,                isStep: true            }        },        watch: {            isStep: {                handler: function () {                    if (this.isStep) {                        this.stepWLLocal = (this.toWLLocal-this.fromWLLocal)/this.pointsNum;                    } else {                        this.pointsNum = Math.round((this.toWLLocal-this.fromWLLocal)/this.stepWLLocal);                    }                }            },            // emit updated values            fromWLLocal: {                handler: function () {                    this.$emit('fromWLData',this.fromWLLocal);                }            },            toWLLocal: {                handler: function () {                    this.$emit('toWLData',this.toWLLocal);                }            },            stepWLLocal: {                handler: function () {                    this.$emit('stepWLData',this.stepWLLocal);                }            },            // update local values            fromWL: {                handler: function () {                    this.fromWLLocal = this.fromWL;                }            },            toWL: {                handler: function () {                    this.toWLLocal = this.toWL;                }            },            stepWL: {                handler: function () {                    this.stepWLLocal = this.stepWL;                }            },            deep: true        },        props: ['fromWL', 'toWL', 'stepWL', 'source_units']    }</script><style scoped>    .source-params {        padding-bottom: 5px;    }    .switch-style {        padding: 5px;    }</style>
 |