From 1246569b42f669831c54d94dfb0e810dbeea641c Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Sun, 13 Jan 2019 20:58:58 +0700 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D0=B8=D0=BD=D0=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Reader/LoaderPage/LoaderPage.vue | 20 +--------- .../Reader/ProgressPage/ProgressPage.vue | 13 +++--- client/components/Reader/Reader.vue | 40 ++++++++++++++++--- client/components/Reader/share/BookManager.js | 2 - client/components/Reader/share/bookManager.js | 8 ++++ 5 files changed, 52 insertions(+), 31 deletions(-) delete mode 100644 client/components/Reader/share/BookManager.js create mode 100644 client/components/Reader/share/bookManager.js diff --git a/client/components/Reader/LoaderPage/LoaderPage.vue b/client/components/Reader/LoaderPage/LoaderPage.vue index c9f12a03..581ff0e6 100644 --- a/client/components/Reader/LoaderPage/LoaderPage.vue +++ b/client/components/Reader/LoaderPage/LoaderPage.vue @@ -19,7 +19,6 @@ Справка {{ version }} - @@ -28,13 +27,7 @@ import Vue from 'vue'; import Component from 'vue-class-component'; -import ProgressPage from '../ProgressPage/ProgressPage.vue'; -import readerApi from '../../../api/reader'; - export default @Component({ - components: { - ProgressPage - } }) class LoaderPage extends Vue { bookUrl = null; @@ -67,18 +60,7 @@ class LoaderPage extends Vue { async submitUrl() { if (this.bookUrl) { - this.progress.show(); - this.progress.setState({totalSteps: 4}); - try { - const book = await readerApi.loadBook(this.bookUrl, (state) => { - this.progress.setState(state); - }); - this.progress.hide(); - } catch (e) { - this.progress.hide(); - this.$refs.input.blur(); - this.$alert(e.message, 'Ошибка', {type: 'error'}); - } + this.$emit('load-book', this.bookUrl); } } diff --git a/client/components/Reader/ProgressPage/ProgressPage.vue b/client/components/Reader/ProgressPage/ProgressPage.vue index 74553ed2..23135b78 100644 --- a/client/components/Reader/ProgressPage/ProgressPage.vue +++ b/client/components/Reader/ProgressPage/ProgressPage.vue @@ -11,6 +11,7 @@ //----------------------------------------------------------------------------- import Vue from 'vue'; import Component from 'vue-class-component'; +import {sleep} from '../../../share/utils'; const ruMessage = { 'start': ' ', @@ -32,7 +33,7 @@ class ProgressPage extends Vue { progress = 0; visible = false; - show() { + async show() { this.$el.style.width = this.$parent.$el.offsetWidth + 'px'; this.$el.style.height = this.$parent.$el.offsetHeight + 'px'; this.text = ''; @@ -41,12 +42,14 @@ class ProgressPage extends Vue { this.progress = 0; this.visible = true; + await sleep(1); + return true; } - hide() { - setTimeout(() => { - this.visible = false; - }, 350); + async hide() { + await sleep(350); + this.visible = false; + return false; } setState(state) { diff --git a/client/components/Reader/Reader.vue b/client/components/Reader/Reader.vue index 97740416..e95dbb44 100644 --- a/client/components/Reader/Reader.vue +++ b/client/components/Reader/Reader.vue @@ -43,7 +43,7 @@ - + @@ -55,14 +55,21 @@ import Vue from 'vue'; import Component from 'vue-class-component'; import LoaderPage from './LoaderPage/LoaderPage.vue'; import TextPage from './TextPage/TextPage.vue'; +import ProgressPage from './ProgressPage/ProgressPage.vue'; + +import bookManager from './share/bookManager'; +import readerApi from '../../api/reader'; export default @Component({ components: { LoaderPage, - TextPage + TextPage, + ProgressPage }, }) class Reader extends Vue { + progressActive = false; + created() { this.commit = this.$store.commit; this.dispatch = this.$store.dispatch; @@ -102,10 +109,12 @@ class Reader extends Vue { get pageActive() { let result = ''; - if (this.lastOpenedBook) - result = 'TextPage'; - if (this.loaderActive) + if (this.progressActive) + result = 'ProgressPage'; + else if (this.loaderActive) result = 'LoaderPage'; + else if (this.lastOpenedBook) + result = 'TextPage'; if (!result) { //this.commit('reader/setLoaderActive', true); @@ -114,6 +123,27 @@ class Reader extends Vue { return result; } + loadBook(url) { + this.progressActive = true; + this.$nextTick(async() => { + const progress = this.$refs.page; + await progress.show(); + progress.setState({totalSteps: 4}); + try { + const book = await readerApi.loadBook(url, (state) => { + progress.setState(state); + }); + + await bookManager.add(book); + + this.progressActive = await progress.hide(); + } catch (e) { + this.progressActive = await progress.hide(); + this.$alert(e.message, 'Ошибка', {type: 'error'}); + } + }); + } + keyHook(event) { if (this.$root.rootRoute == '/reader') { if (this.$refs.page && this.$refs.page.keyHook) diff --git a/client/components/Reader/share/BookManager.js b/client/components/Reader/share/BookManager.js deleted file mode 100644 index 98e368eb..00000000 --- a/client/components/Reader/share/BookManager.js +++ /dev/null @@ -1,2 +0,0 @@ -export default class BookManager { -} \ No newline at end of file diff --git a/client/components/Reader/share/bookManager.js b/client/components/Reader/share/bookManager.js new file mode 100644 index 00000000..3ecc5730 --- /dev/null +++ b/client/components/Reader/share/bookManager.js @@ -0,0 +1,8 @@ +import 'localforage'; + +class BookManager { + async add() { + } +} + +export default new BookManager(); \ No newline at end of file