浏览代码

Переход на quasar

Book Pauk 5 年之前
父节点
当前提交
6418e8ee30

+ 6 - 0
client/components/App.vue

@@ -52,6 +52,7 @@
         </q-page-container>
         </q-page-container>
     </q-layout-->
     </q-layout-->
     <div class="fit row">
     <div class="fit row">
+        <StdDialog ref="stdDialog"/>
         <keep-alive>
         <keep-alive>
             <router-view class="col"></router-view>
             <router-view class="col"></router-view>
         </keep-alive>
         </keep-alive>
@@ -62,9 +63,13 @@
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 import Vue from 'vue';
 import Vue from 'vue';
 import Component from 'vue-class-component';
 import Component from 'vue-class-component';
+import StdDialog from './share/StdDialog.vue';
 import * as utils from '../share/utils';
 import * as utils from '../share/utils';
 
 
 export default @Component({
 export default @Component({
+    components: {
+        StdDialog,
+    },
     watch: {
     watch: {
         mode: function() {
         mode: function() {
             this.setAppTitle();
             this.setAppTitle();
@@ -135,6 +140,7 @@ class App extends Vue {
     }
     }
 
 
     mounted() {
     mounted() {
+        this.$root.stdDialog = this.$refs.stdDialog;
         this.dispatch('config/loadConfig');
         this.dispatch('config/loadConfig');
         this.$watch('apiError', function(newError) {
         this.$watch('apiError', function(newError) {
             if (newError) {
             if (newError) {

+ 3 - 7
client/components/Reader/Reader.vue

@@ -1,6 +1,5 @@
 <template>
 <template>
     <div class="column no-wrap">
     <div class="column no-wrap">
-        <StdDialog ref="stdDialog"/>
         <div ref="header" class="header" v-show="toolBarActive">
         <div ref="header" class="header" v-show="toolBarActive">
             <div ref="buttons" class="row justify-between no-wrap">
             <div ref="buttons" class="row justify-between no-wrap">
                 <button ref="loader" class="tool-button" :class="buttonActiveClass('loader')" @click="buttonClick('loader')" v-ripple>
                 <button ref="loader" class="tool-button" :class="buttonActiveClass('loader')" @click="buttonClick('loader')" v-ripple>
@@ -159,7 +158,6 @@ import Component from 'vue-class-component';
 import _ from 'lodash';
 import _ from 'lodash';
 import {Buffer} from 'safe-buffer';
 import {Buffer} from 'safe-buffer';
 
 
-import StdDialog from '../share/StdDialog.vue';
 import LoaderPage from './LoaderPage/LoaderPage.vue';
 import LoaderPage from './LoaderPage/LoaderPage.vue';
 import TextPage from './TextPage/TextPage.vue';
 import TextPage from './TextPage/TextPage.vue';
 import ProgressPage from './ProgressPage/ProgressPage.vue';
 import ProgressPage from './ProgressPage/ProgressPage.vue';
@@ -180,7 +178,6 @@ import {versionHistory} from './versionHistory';
 
 
 export default @Component({
 export default @Component({
     components: {
     components: {
-        StdDialog,
         LoaderPage,
         LoaderPage,
         TextPage,
         TextPage,
         ProgressPage,
         ProgressPage,
@@ -300,7 +297,6 @@ class Reader extends Vue {
     }
     }
 
 
     mounted() {
     mounted() {
-        this.stdDialog = this.$refs.stdDialog;
         this.updateHeaderMinWidth();
         this.updateHeaderMinWidth();
 
 
         (async() => {
         (async() => {
@@ -1033,7 +1029,7 @@ class Reader extends Vue {
         } catch (e) {
         } catch (e) {
             progress.hide(); this.progressActive = false;
             progress.hide(); this.progressActive = false;
             this.loaderActive = true;
             this.loaderActive = true;
-            this.stdDialog.alert(e.message, 'Ошибка', {type: 'negative'});
+            this.$root.stdDialog.alert(e.message, 'Ошибка', {type: 'negative'});
         }
         }
     }
     }
 
 
@@ -1057,7 +1053,7 @@ class Reader extends Vue {
         } catch (e) {
         } catch (e) {
             progress.hide(); this.progressActive = false;
             progress.hide(); this.progressActive = false;
             this.loaderActive = true;
             this.loaderActive = true;
-            this.stdDialog.alert(e.message, 'Ошибка', {type: 'negative'});
+            this.$root.stdDialog.alert(e.message, 'Ошибка', {type: 'negative'});
         }
         }
     }
     }
 
 
@@ -1091,7 +1087,7 @@ class Reader extends Vue {
 
 
     keyHook(event) {
     keyHook(event) {
         if (this.$root.rootRoute() == '/reader') {
         if (this.$root.rootRoute() == '/reader') {
-            if (this.stdDialog.active)
+            if (this.$root.stdDialog.active)
                 return;
                 return;
 
 
             let handled = false;
             let handled = false;

+ 9 - 14
client/components/Reader/SettingsPage/SettingsPage.vue

@@ -4,8 +4,6 @@
             Настройки
             Настройки
         </template>
         </template>
 
 
-        <StdDialog ref="stdDialog"/>
-
         <div class="col row">
         <div class="col row">
             <div class="full-height">
             <div class="full-height">
                 <q-tabs
                 <q-tabs
@@ -78,7 +76,6 @@ import _ from 'lodash';
 import * as utils from '../../../share/utils';
 import * as utils from '../../../share/utils';
 import Window from '../../share/Window.vue';
 import Window from '../../share/Window.vue';
 import NumInput from '../../share/NumInput.vue';
 import NumInput from '../../share/NumInput.vue';
-import StdDialog from '../../share/StdDialog.vue';
 import rstore from '../../../store/modules/reader';
 import rstore from '../../../store/modules/reader';
 import defPalette from './defPalette';
 import defPalette from './defPalette';
 import * as notify from '../../share/notify';
 import * as notify from '../../share/notify';
@@ -89,7 +86,6 @@ export default @Component({
     components: {
     components: {
         Window,
         Window,
         NumInput,
         NumInput,
-        StdDialog,
     },
     },
     data: function() {
     data: function() {
         return Object.assign({}, rstore.settingDefaults);
         return Object.assign({}, rstore.settingDefaults);
@@ -168,7 +164,6 @@ class SettingsPage extends Vue {
     }
     }
 
 
     mounted() {
     mounted() {
-        this.stdDialog = this.$refs.stdDialog;
         this.$watch(
         this.$watch(
             '$refs.tabs.scrollable',
             '$refs.tabs.scrollable',
             (newValue) => {
             (newValue) => {
@@ -350,7 +345,7 @@ class SettingsPage extends Vue {
 
 
     async setDefaults() {
     async setDefaults() {
         try {
         try {
-            if (await this.stdDialog.confirm('Подтвердите установку настроек по умолчанию:', ' ')) {
+            if (await this.$root.stdDialog.confirm('Подтвердите установку настроек по умолчанию:', ' ')) {
                 this.form = Object.assign({}, rstore.settingDefaults);
                 this.form = Object.assign({}, rstore.settingDefaults);
                 for (let prop in rstore.settingDefaults) {
                 for (let prop in rstore.settingDefaults) {
                     this[prop] = this.form[prop];
                     this[prop] = this.form[prop];
@@ -368,15 +363,15 @@ class SettingsPage extends Vue {
     async addProfile() {
     async addProfile() {
         try {
         try {
             if (Object.keys(this.profiles).length >= 100) {
             if (Object.keys(this.profiles).length >= 100) {
-                this.stdDialog.alert('Достигнут предел количества профилей', 'Ошибка');
+                this.$root.stdDialog.alert('Достигнут предел количества профилей', 'Ошибка');
                 return;
                 return;
             }
             }
-            const result = await this.stdDialog.prompt('Введите произвольное название для профиля устройства:', ' ', {
+            const result = await this.$root.stdDialog.prompt('Введите произвольное название для профиля устройства:', ' ', {
                 inputValidator: (str) => { if (!str) return 'Название не должно быть пустым'; else if (str.length > 50) return 'Слишком длинное название'; else return true; },
                 inputValidator: (str) => { if (!str) return 'Название не должно быть пустым'; else if (str.length > 50) return 'Слишком длинное название'; else return true; },
             });
             });
             if (result && result.value) {
             if (result && result.value) {
                 if (this.profiles[result.value]) {
                 if (this.profiles[result.value]) {
-                    this.stdDialog.alert('Такой профиль уже существует', 'Ошибка');
+                    this.$root.stdDialog.alert('Такой профиль уже существует', 'Ошибка');
                 } else {
                 } else {
                     const newProfiles = Object.assign({}, this.profiles, {[result.value]: 1});
                     const newProfiles = Object.assign({}, this.profiles, {[result.value]: 1});
                     this.commit('reader/setAllowProfilesSave', true);
                     this.commit('reader/setAllowProfilesSave', true);
@@ -397,7 +392,7 @@ class SettingsPage extends Vue {
             return;
             return;
 
 
         try {
         try {
-            const result = await this.stdDialog.prompt(`<b>Предупреждение!</b> Удаление профиля '${this.currentProfile}' необратимо.` +
+            const result = await this.$root.stdDialog.prompt(`<b>Предупреждение!</b> Удаление профиля '${this.currentProfile}' необратимо.` +
                     `<br>Все настройки профиля будут потеряны, однако список читаемых книг сохранится.` +
                     `<br>Все настройки профиля будут потеряны, однако список читаемых книг сохранится.` +
                     `<br><br>Введите 'да' для подтверждения удаления:`, ' ', {
                     `<br><br>Введите 'да' для подтверждения удаления:`, ' ', {
                 inputValidator: (str) => { if (str && str.toLowerCase() === 'да') return true; else return 'Удаление не подтверждено'; },
                 inputValidator: (str) => { if (str && str.toLowerCase() === 'да') return true; else return 'Удаление не подтверждено'; },
@@ -425,7 +420,7 @@ class SettingsPage extends Vue {
             return;
             return;
 
 
         try {
         try {
-            const result = await this.stdDialog.prompt(`<b>Предупреждение!</b> Удаление ВСЕХ профилей с настройками необратимо.` +
+            const result = await this.$root.stdDialog.prompt(`<b>Предупреждение!</b> Удаление ВСЕХ профилей с настройками необратимо.` +
                     `<br><br>Введите 'да' для подтверждения удаления:`, ' ', {
                     `<br><br>Введите 'да' для подтверждения удаления:`, ' ', {
                 inputValidator: (str) => { if (str && str.toLowerCase() === 'да') return true; else return 'Удаление не подтверждено'; },
                 inputValidator: (str) => { if (str && str.toLowerCase() === 'да') return true; else return 'Удаление не подтверждено'; },
             });
             });
@@ -459,7 +454,7 @@ class SettingsPage extends Vue {
 
 
     async enterServerStorageKey(key) {
     async enterServerStorageKey(key) {
         try {
         try {
-            const result = await this.stdDialog.prompt(`<b>Предупреждение!</b> Изменение ключа доступа приведет к замене всех профилей и читаемых книг в читалке.` +
+            const result = await this.$root.stdDialog.prompt(`<b>Предупреждение!</b> Изменение ключа доступа приведет к замене всех профилей и читаемых книг в читалке.` +
                     `<br><br>Введите новый ключ доступа:`, ' ', {
                     `<br><br>Введите новый ключ доступа:`, ' ', {
                 inputValidator: (str) => {
                 inputValidator: (str) => {
                     try {
                     try {
@@ -484,7 +479,7 @@ class SettingsPage extends Vue {
 
 
     async generateServerStorageKey() {
     async generateServerStorageKey() {
         try {
         try {
-            const result = await this.stdDialog.prompt(`<b>Предупреждение!</b> Генерация нового ключа доступа приведет к удалению всех профилей и читаемых книг в читалке.` +
+            const result = await this.$root.stdDialog.prompt(`<b>Предупреждение!</b> Генерация нового ключа доступа приведет к удалению всех профилей и читаемых книг в читалке.` +
                     `<br><br>Введите 'да' для подтверждения генерации нового ключа:`, ' ', {
                     `<br><br>Введите 'да' для подтверждения генерации нового ключа:`, ' ', {
                 inputValidator: (str) => { if (str && str.toLowerCase() === 'да') return true; else return 'Генерация не подтверждена'; },
                 inputValidator: (str) => { if (str && str.toLowerCase() === 'да') return true; else return 'Генерация не подтверждена'; },
             });
             });
@@ -499,7 +494,7 @@ class SettingsPage extends Vue {
     }
     }
 
 
     keyHook(event) {
     keyHook(event) {
-        if (!this.stdDialog.active && event.type == 'keydown' && event.code == 'Escape') {
+        if (!this.$root.stdDialog.active && event.type == 'keydown' && event.code == 'Escape') {
             this.close();
             this.close();
         }
         }
         return true;
         return true;