HelpPage.vue 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <template>
  2. <Window style="z-index: 200" @close="close">
  3. <template #header>
  4. Справка
  5. </template>
  6. <div class="col column" style="min-width: 600px">
  7. <div class="bg-menu-1 row">
  8. <q-tabs
  9. v-model="selectedTab"
  10. active-color="app"
  11. active-bg-color="app"
  12. indicator-color="bg-app"
  13. dense
  14. no-caps
  15. inline-label
  16. class="bg-menu-2 text-menu"
  17. >
  18. <q-tab v-for="btn in buttons" :key="btn.value" :name="btn.value" :label="btn.label" />
  19. </q-tabs>
  20. </div>
  21. <keep-alive>
  22. <component :is="activePage" ref="page" class="col"></component>
  23. </keep-alive>
  24. </div>
  25. </Window>
  26. </template>
  27. <script>
  28. //-----------------------------------------------------------------------------
  29. import vueComponent from '../../vueComponent.js';
  30. import Window from '../../share/Window.vue';
  31. import CommonHelpPage from './CommonHelpPage/CommonHelpPage.vue';
  32. import HotkeysHelpPage from './HotkeysHelpPage/HotkeysHelpPage.vue';
  33. import MouseHelpPage from './MouseHelpPage/MouseHelpPage.vue';
  34. import VersionHistoryPage from './VersionHistoryPage/VersionHistoryPage.vue';
  35. import DonateHelpPage from './DonateHelpPage/DonateHelpPage.vue';
  36. const pages = {
  37. 'CommonHelpPage': CommonHelpPage,
  38. 'HotkeysHelpPage': HotkeysHelpPage,
  39. 'MouseHelpPage': MouseHelpPage,
  40. 'VersionHistoryPage': VersionHistoryPage,
  41. 'DonateHelpPage': DonateHelpPage,
  42. };
  43. const tabs = [
  44. ['CommonHelpPage', 'Общее'],
  45. ['MouseHelpPage', 'Мышь/тачскрин'],
  46. ['HotkeysHelpPage', 'Клавиатура'],
  47. ['VersionHistoryPage', 'История версий'],
  48. ['DonateHelpPage', 'Помочь проекту'],
  49. ];
  50. const componentOptions = {
  51. components: Object.assign({ Window }, pages),
  52. };
  53. class HelpPage {
  54. _options = componentOptions;
  55. selectedTab = 'CommonHelpPage';
  56. close() {
  57. this.$emit('do-action', {action: 'help'});
  58. }
  59. get activePage() {
  60. if (pages[this.selectedTab])
  61. return pages[this.selectedTab];
  62. return null;
  63. }
  64. get buttons() {
  65. let result = [];
  66. for (const tab of tabs)
  67. result.push({label: tab[1], value: tab[0]});
  68. return result;
  69. }
  70. activateDonateHelpPage() {
  71. this.selectedTab = 'DonateHelpPage';
  72. }
  73. activateVersionHistoryHelpPage() {
  74. this.selectedTab = 'VersionHistoryPage';
  75. }
  76. keyHook(event) {
  77. if (event.type == 'keydown' && event.key == 'Escape') {
  78. this.close();
  79. }
  80. return true;
  81. }
  82. }
  83. export default vueComponent(HelpPage);
  84. //-----------------------------------------------------------------------------
  85. </script>
  86. <style scoped>
  87. </style>