HelpPage.vue 2.6 KB

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