Home.vue 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <template>
  2. <div style="width: 100vw; height: 100vh; margin: 0px" class="bg-black">
  3. <q-btn @click="$router.push('home')" round color='blue' style="position: sticky; left:50%; top: 70%">
  4. {{ texts.page1_scan }}
  5. </q-btn>
  6. <q-field :label="texts['page1_change_detail']" class="bg-white">
  7. <q-select v-model="selected_language" :options="languages"/>
  8. <q-btn @click="change_language()" style="align-self:right"> {{
  9. texts.page1_change }}</q-btn>
  10. </q-field>
  11. </div>
  12. </template>
  13. <script>
  14. var api = require('../api.js')
  15. var db = require('../db.js')
  16. var utils = require('../utils.js')
  17. import {
  18. QCard,
  19. QLayout,
  20. QToolbar,
  21. QToolbarTitle,
  22. QBtn,
  23. QIcon,
  24. QList,
  25. QListHeader,
  26. QItem,
  27. QItemSide,
  28. QItemMain,
  29. QSelect,
  30. QInput,
  31. QField
  32. } from 'quasar'
  33. export default {
  34. name: 'index',
  35. components: {
  36. QCard,
  37. QLayout,
  38. QToolbar,
  39. QToolbarTitle,
  40. QBtn,
  41. QIcon,
  42. QList,
  43. QListHeader,
  44. QItem,
  45. QItemSide,
  46. QItemMain,
  47. QSelect,
  48. QInput,
  49. QField
  50. },
  51. data () {
  52. return {
  53. selected_language: '',
  54. languages: [],
  55. texts: {}
  56. }
  57. },
  58. methods: {
  59. change_language: function () {
  60. // This function is executed after the user change language
  61. // It saves the selected language in database and then
  62. // Load the api endpoint for that language
  63. // And save the language in a local database
  64. var self = this
  65. db.saveLang(self.selected_language).then(() => {
  66. utils.getTexts()
  67. .then(data => { utils.setTexts(self) })
  68. })
  69. },
  70. populate_languages: function (data) {
  71. // populate select language select component with list of language given
  72. // to it
  73. var self = this
  74. self.languages = []
  75. data.forEach((language) => {
  76. language['label'] = language.name
  77. language['value'] = language.name
  78. self.languages.push(language)
  79. })
  80. }
  81. },
  82. mounted () {
  83. api.currentPage = this
  84. // collect list of language from local database or api and then update it
  85. // in select element
  86. var self = this
  87. db.getLang()
  88. .then(data => { self.selected_language = data.lang })
  89. utils.setTexts(this)
  90. db.getData('language/{LANG}/languages/.list')
  91. .then(data => { self.populate_languages(data) })
  92. }
  93. }
  94. </script>
  95. <style lang="stylus" scoped>
  96. </style>