|  | @@ -12,18 +12,16 @@
 | 
											
												
													
														|  |          >
 |  |          >
 | 
											
												
													
														|  |            {{ title }}
 |  |            {{ title }}
 | 
											
												
													
														|  |          </div>
 |  |          </div>
 | 
											
												
													
														|  | -        <div
 |  | 
 | 
											
												
													
														|  | -            @mousemove="setTooltipVisibility"
 |  | 
 | 
											
												
													
														|  | -        >
 |  | 
 | 
											
												
													
														|  | 
 |  | +        <div>
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          <q-tooltip
 |  |          <q-tooltip
 | 
											
												
													
														|  |              v-model = "isShowingTooltip"
 |  |              v-model = "isShowingTooltip"
 | 
											
												
													
														|  |                     anchor="top middle"
 |  |                     anchor="top middle"
 | 
											
												
													
														|  |                     self="center middle"
 |  |                     self="center middle"
 | 
											
												
													
														|  |          >
 |  |          >
 | 
											
												
													
														|  | -          = {{format_number(localTooltipText,2)}}
 |  | 
 | 
											
												
													
														|  | 
 |  | +          {{format_number(localTooltipText,2)}}
 | 
											
												
													
														|  |          </q-tooltip>
 |  |          </q-tooltip>
 | 
											
												
													
														|  | -          <q-tooltip
 |  | 
 | 
											
												
													
														|  | 
 |  | +          <q-tooltip v-if="isShowingHelp"
 | 
											
												
													
														|  |                v-model = "isShowingHelpLocal"
 |  |                v-model = "isShowingHelpLocal"
 | 
											
												
													
														|  |                anchor="bottom middle"
 |  |                anchor="bottom middle"
 | 
											
												
													
														|  |                self="top middle"
 |  |                self="top middle"
 | 
											
										
											
												
													
														|  | @@ -35,7 +33,6 @@
 | 
											
												
													
														|  |              :model-value="localQSelectValue"
 |  |              :model-value="localQSelectValue"
 | 
											
												
													
														|  |              :options="options"
 |  |              :options="options"
 | 
											
												
													
														|  |              bg-color="white"
 |  |              bg-color="white"
 | 
											
												
													
														|  | -            class="q-py-none"
 |  | 
 | 
											
												
													
														|  |              dense
 |  |              dense
 | 
											
												
													
														|  |              fill-input
 |  |              fill-input
 | 
											
												
													
														|  |              hide-selected
 |  |              hide-selected
 | 
											
										
											
												
													
														|  | @@ -46,6 +43,7 @@
 | 
											
												
													
														|  |              behavior="menu"
 |  |              behavior="menu"
 | 
											
												
													
														|  |              @filter="filterFn"
 |  |              @filter="filterFn"
 | 
											
												
													
														|  |              @blur="handleQSelectBlur"
 |  |              @blur="handleQSelectBlur"
 | 
											
												
													
														|  | 
 |  | +            @keydown.enter="handleQSelectBlur"
 | 
											
												
													
														|  |              @input-value="localQSelectValue=$event"
 |  |              @input-value="localQSelectValue=$event"
 | 
											
												
													
														|  |          >
 |  |          >
 | 
											
												
													
														|  |            <template
 |  |            <template
 | 
											
										
											
												
													
														|  | @@ -54,10 +52,21 @@
 | 
											
												
													
														|  |            >
 |  |            >
 | 
											
												
													
														|  |              <div
 |  |              <div
 | 
											
												
													
														|  |                  style="font-size: 12px"
 |  |                  style="font-size: 12px"
 | 
											
												
													
														|  | 
 |  | +                class="q-py-xl"
 | 
											
												
													
														|  |              >
 |  |              >
 | 
											
												
													
														|  | -              ={{format_number(localTooltipText,1)}}
 |  | 
 | 
											
												
													
														|  | 
 |  | +              {{format_number(localTooltipText,1)}}
 | 
											
												
													
														|  |              </div>
 |  |              </div>
 | 
											
												
													
														|  |            </template>
 |  |            </template>
 | 
											
												
													
														|  | 
 |  | +          <template #option="scope">
 | 
											
												
													
														|  | 
 |  | +            <q-item v-bind="scope.itemProps">
 | 
											
												
													
														|  | 
 |  | +              <q-item-section>
 | 
											
												
													
														|  | 
 |  | +                {{scope.opt}}
 | 
											
												
													
														|  | 
 |  | +              </q-item-section>
 | 
											
												
													
														|  | 
 |  | +              <q-item-section side>
 | 
											
												
													
														|  | 
 |  | +                {{format_number(evalString(scope.opt),1)}}
 | 
											
												
													
														|  | 
 |  | +              </q-item-section>
 | 
											
												
													
														|  | 
 |  | +            </q-item>
 | 
											
												
													
														|  | 
 |  | +          </template>
 | 
											
												
													
														|  |  <!--          <template #no-option>-->
 |  |  <!--          <template #no-option>-->
 | 
											
												
													
														|  |  <!--            <q-item>-->
 |  |  <!--            <q-item>-->
 | 
											
												
													
														|  |  <!--              <q-item-section class="text-grey">-->
 |  |  <!--              <q-item-section class="text-grey">-->
 | 
											
										
											
												
													
														|  | @@ -133,7 +142,8 @@ export default defineComponent({
 | 
											
												
													
														|  |      let optionsHistory = ref(['a','b'])
 |  |      let optionsHistory = ref(['a','b'])
 | 
											
												
													
														|  |      let evaluatedValue = ref(0)
 |  |      let evaluatedValue = ref(0)
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -    function filterFn (val:any, update:any, abort:any) {
 |  | 
 | 
											
												
													
														|  | 
 |  | +    function filterFn (val:string,
 | 
											
												
													
														|  | 
 |  | +                       update:(data: ()=>void) => void) {
 | 
											
												
													
														|  |        update(() => {
 |  |        update(() => {
 | 
											
												
													
														|  |          // To remove the selection from previously
 |  |          // To remove the selection from previously
 | 
											
												
													
														|  |          // selection option - we recreate the options list
 |  |          // selection option - we recreate the options list
 | 
											
										
											
												
													
														|  | @@ -148,19 +158,22 @@ export default defineComponent({
 | 
											
												
													
														|  |        } catch { }
 |  |        } catch { }
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +    function evalString(val:string):string {
 | 
											
												
													
														|  | 
 |  | +      try {
 | 
											
												
													
														|  | 
 |  | +        const tryEvaluate = Number(evaluate(val))
 | 
											
												
													
														|  | 
 |  | +        if (!isNaN(tryEvaluate) && tryEvaluate != Number(val)) {
 | 
											
												
													
														|  | 
 |  | +          return tryEvaluate.toString()
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +      } catch { }
 | 
											
												
													
														|  | 
 |  | +      return ''
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |      onMounted(()=>{
 |  |      onMounted(()=>{
 | 
											
												
													
														|  |        isShowingTooltip.value = false
 |  |        isShowingTooltip.value = false
 | 
											
												
													
														|  |      });
 |  |      });
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -    function setTooltipValue(){
 |  | 
 | 
											
												
													
														|  | -      localTooltipText.value = evaluatedValue.value.toString()
 |  | 
 | 
											
												
													
														|  | -    }
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  |      function setTooltipVisibility(){
 |  |      function setTooltipVisibility(){
 | 
											
												
													
														|  | -      isShowingHelpLocal.value = props.isShowingHelp
 |  | 
 | 
											
												
													
														|  | -      if (options.value.length>0) isShowingHelpLocal.value = false
 |  | 
 | 
											
												
													
														|  |        if (evaluatedValue.value != Number(localQSelectValue.value)) {
 |  |        if (evaluatedValue.value != Number(localQSelectValue.value)) {
 | 
											
												
													
														|  |          isShowingTooltip.value = true
 |  |          isShowingTooltip.value = true
 | 
											
												
													
														|  |          isShowingTooltipAppend.value = true
 |  |          isShowingTooltipAppend.value = true
 | 
											
										
											
												
													
														|  | @@ -170,8 +183,27 @@ export default defineComponent({
 | 
											
												
													
														|  |        }
 |  |        }
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +    watch(isShowingTooltip, ()=>{
 | 
											
												
													
														|  | 
 |  | +      // For a trivial case we would like to switch off showing tooltip
 | 
											
												
													
														|  | 
 |  | +      if (isShowingTooltip.value) setTooltipVisibility()
 | 
											
												
													
														|  | 
 |  | +    })
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    watch(isShowingHelpLocal, ()=>{
 | 
											
												
													
														|  | 
 |  | +      // isShowingHelpLocal.value is set to be
 | 
											
												
													
														|  | 
 |  | +      // true on hover. Disable it if needed.
 | 
											
												
													
														|  | 
 |  | +      if (isShowingHelpLocal.value) {
 | 
											
												
													
														|  | 
 |  | +        if (options.value.length>0) isShowingHelpLocal.value = false
 | 
											
												
													
														|  | 
 |  | +      }
 | 
											
												
													
														|  | 
 |  | +    })
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    watch(options, ()=>{
 | 
											
												
													
														|  | 
 |  | +      if (options.value.length>0) isShowingHelpLocal.value = false
 | 
											
												
													
														|  | 
 |  | +    })
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |      function setTooltip(){
 |  |      function setTooltip(){
 | 
											
												
													
														|  | -      setTooltipValue()
 |  | 
 | 
											
												
													
														|  | 
 |  | +      localTooltipText.value = evaluatedValue.value.toString()
 | 
											
												
													
														|  |        setTooltipVisibility()
 |  |        setTooltipVisibility()
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
										
											
												
													
														|  | @@ -186,12 +218,13 @@ export default defineComponent({
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      function format_number (value:string, digits:number):string {
 |  |      function format_number (value:string, digits:number):string {
 | 
											
												
													
														|  | 
 |  | +      if (value==='') return ''
 | 
											
												
													
														|  |        // const help_string = 'text\n text'
 |  |        // const help_string = 'text\n text'
 | 
											
												
													
														|  |        const num = parseFloat(value)
 |  |        const num = parseFloat(value)
 | 
											
												
													
														|  |        if ( num < Math.pow(10, -digits) ||
 |  |        if ( num < Math.pow(10, -digits) ||
 | 
											
												
													
														|  |             num > 5*Math.pow(10,  digits+2)
 |  |             num > 5*Math.pow(10,  digits+2)
 | 
											
												
													
														|  | -         ) return num.toExponential(digits)
 |  | 
 | 
											
												
													
														|  | -      return Number(Math.round(
 |  | 
 | 
											
												
													
														|  | 
 |  | +         ) return '='+num.toExponential(digits)
 | 
											
												
													
														|  | 
 |  | +      return '='+Number(Math.round(
 | 
											
												
													
														|  |            parseFloat(value + 'e' + digits.toString())).toString()
 |  |            parseFloat(value + 'e' + digits.toString())).toString()
 | 
											
												
													
														|  |            + 'e-' + digits.toString()).toString()
 |  |            + 'e-' + digits.toString()).toString()
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
										
											
												
													
														|  | @@ -202,9 +235,6 @@ export default defineComponent({
 | 
											
												
													
														|  |      })
 |  |      })
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -    // watch(options, ()=>{
 |  | 
 | 
											
												
													
														|  | -    //   if (options.value.length>0)
 |  | 
 | 
											
												
													
														|  | -    // })
 |  | 
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      watch(evaluatedValue, () => {
 |  |      watch(evaluatedValue, () => {
 | 
											
										
											
												
													
														|  | @@ -213,8 +243,8 @@ export default defineComponent({
 | 
											
												
													
														|  |      })
 |  |      })
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -    localQSelectValue.value = props.evalExpr
 |  | 
 | 
											
												
													
														|  | 
 |  | +    // eslint-disable-next-line vue/no-setup-props-destructure
 | 
											
												
													
														|  | 
 |  | +    localQSelectValue.value = props.evalExpr // TODO do we need reactivity from props.evalExpr?
 | 
											
												
													
														|  |      runEvaluate()
 |  |      runEvaluate()
 | 
											
												
													
														|  |      localTooltipText.value = localQSelectValue.value
 |  |      localTooltipText.value = localQSelectValue.value
 | 
											
												
													
														|  |      setTooltip()
 |  |      setTooltip()
 | 
											
										
											
												
													
														|  | @@ -222,12 +252,13 @@ export default defineComponent({
 | 
											
												
													
														|  |      options.value.pop()
 |  |      options.value.pop()
 | 
											
												
													
														|  |      optionsHistory.value.pop()
 |  |      optionsHistory.value.pop()
 | 
											
												
													
														|  |      optionsHistory.value.pop()
 |  |      optionsHistory.value.pop()
 | 
											
												
													
														|  | 
 |  | +    optionsHistory.value.unshift(localQSelectValue.value)
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      return {
 |  |      return {
 | 
											
												
													
														|  |        options,  localQSelectValue, localTooltipText, isShowingTooltip,
 |  |        options,  localQSelectValue, localTooltipText, isShowingTooltip,
 | 
											
												
													
														|  |        isShowingHelpLocal, isShowingTooltipAppend,
 |  |        isShowingHelpLocal, isShowingTooltipAppend,
 | 
											
												
													
														|  |        setTooltip, handleQSelectBlur, format_number,
 |  |        setTooltip, handleQSelectBlur, format_number,
 | 
											
												
													
														|  | -      setTooltipVisibility, filterFn
 |  | 
 | 
											
												
													
														|  | 
 |  | +      filterFn, evalString
 | 
											
												
													
														|  |      };
 |  |      };
 | 
											
												
													
														|  |    },
 |  |    },
 | 
											
												
													
														|  |  });
 |  |  });
 |