GetUnits.vue 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <template>
  2. <div class="field is-horizontal">
  3. <div class="field-label is-normal">
  4. <label class="label">Units</label>
  5. </div>
  6. <div class="field-body">
  7. <div class="columns">
  8. <div class="column">
  9. <b-select v-model="unitsLocal">
  10. <option value="nm">nm</option>
  11. <option value="mkm">mkm</option>
  12. <option value="mm">mm</option>
  13. <option value="cm">cm</option>
  14. <option value="m">m</option>
  15. <option value="km">km</option>
  16. </b-select>
  17. </div>
  18. <div class="column">
  19. <b-checkbox v-model="isSourceOtherUnitsLocal"> use other units for source</b-checkbox>
  20. </div>
  21. <div class="column">
  22. <div v-if="isSourceOtherUnitsLocal">
  23. <b-select v-model="source_unitsLocal">
  24. <optgroup label="Frequency">
  25. <option value="Hz">Hz</option>
  26. <option value="kHz">kHz</option>
  27. <option value="MHz">MHz</option>
  28. <option value="GHz">GHz</option>
  29. <option value="THz">THz</option>
  30. </optgroup>
  31. <optgroup label="Energy">
  32. <option value="meV">meV</option>
  33. <option value="eV">eV</option>
  34. </optgroup>
  35. <optgroup label="Period duration">
  36. <option value="ps">ps</option>
  37. <option value="fs">fs</option>
  38. </optgroup>
  39. </b-select>
  40. </div>
  41. <div v-else>
  42. <b-select v-model="source_unitsLocal" disabled>
  43. <option value="nm">nm</option>
  44. <option value="mkm">mkm</option>
  45. <option value="mm">mm</option>
  46. <option value="cm">cm</option>
  47. <option value="m">m</option>
  48. <option value="km">km</option>
  49. </b-select>
  50. </div>
  51. </div>
  52. </div>
  53. </div>
  54. </div>
  55. </template>
  56. <script>
  57. export default {
  58. name: "GetUnits",
  59. data () {
  60. return {
  61. // TODO: Is it OK to modify Local later?
  62. unitsLocal: this.units,
  63. source_unitsLocal: this.source_units,
  64. isSourceOtherUnitsLocal: this.isSourceOtherUnits
  65. }
  66. },
  67. watch: {
  68. // emit updated values
  69. unitsLocal: {
  70. handler: function () {
  71. this.$emit('unitsData',this.unitsLocal);
  72. }
  73. },
  74. source_unitsLocal: {
  75. handler: function () {
  76. this.$emit('source_unitsData',this.source_unitsLocal);
  77. }
  78. },
  79. isSourceOtherUnitsLocal: {
  80. handler: function () {
  81. this.$emit('isSourceOtherUnitsData',this.isSourceOtherUnitsLocal);
  82. }
  83. },
  84. // update local values
  85. units: {
  86. handler: function () {
  87. this.unitsLocal = this.units;
  88. }
  89. },
  90. source_units: {
  91. handler: function () {
  92. this.source_unitsLocal = this.source_units;
  93. }
  94. },
  95. isSourceOtherUnits: {
  96. handler: function () {
  97. this.isSourceOtherUnitsLocal = this.isSourceOtherUnits;
  98. }
  99. },
  100. deep: true
  101. },
  102. props: ['units', 'source_units', 'isSourceOtherUnits']
  103. }
  104. </script>
  105. <style scoped>
  106. </style>