From 5af1f81bc3f4d8bd80b7bd0400de3190ccc4e969 Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Thu, 14 Feb 2019 17:34:52 +0700 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B9=D0=BA=D1=83=20cutEmp?= =?UTF-8?q?tyParagraphs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/components/Reader/Reader.vue | 2 +- .../Reader/SettingsPage/SettingsPage.vue | 8 ++++++++ client/components/Reader/share/BookParser.js | 14 +++++++++++++- client/components/Reader/share/bookManager.js | 5 +++-- client/store/modules/reader.js | 2 ++ 5 files changed, 27 insertions(+), 4 deletions(-) diff --git a/client/components/Reader/Reader.vue b/client/components/Reader/Reader.vue index 6872cd1f..8dc1fe5e 100644 --- a/client/components/Reader/Reader.vue +++ b/client/components/Reader/Reader.vue @@ -199,7 +199,7 @@ class Reader extends Vue { mounted() { (async() => { - await bookManager.init(); + await bookManager.init(this.settings); await restoreOldSettings(this.settings, bookManager, this.commit); if (this.$root.rootRoute == '/reader') { diff --git a/client/components/Reader/SettingsPage/SettingsPage.vue b/client/components/Reader/SettingsPage/SettingsPage.vue index 1c8de0cc..809a7551 100644 --- a/client/components/Reader/SettingsPage/SettingsPage.vue +++ b/client/components/Reader/SettingsPage/SettingsPage.vue @@ -184,6 +184,10 @@ По ширине Перенос по слогам + + Убирать пустые параграфы + + @@ -387,6 +391,10 @@ class SettingsPage extends Vue { ]; } + needReload() { + this.$notify.warning({message: 'Необходимо обновить страницу (F5), чтобы изменения возымели эффект'}); + } + close() { this.$emit('settings-toggle'); } diff --git a/client/components/Reader/share/BookParser.js b/client/components/Reader/share/BookParser.js index d8dedb39..1835e676 100644 --- a/client/components/Reader/share/BookParser.js +++ b/client/components/Reader/share/BookParser.js @@ -3,7 +3,7 @@ import sax from '../../../../server/core/BookConverter/sax'; import {sleep} from '../../../share/utils'; export default class BookParser { - constructor() { + constructor(settings) { // defaults this.p = 30;// px, отступ параграфа this.w = 300;// px, ширина страницы @@ -13,6 +13,11 @@ export default class BookParser { this.measureText = (text, style) => {// eslint-disable-line no-unused-vars return text.length*20; }; + + //настройки + if (settings) { + this.cutEmptyParagraphs = settings.cutEmptyParagraphs; + } } async parse(data, callback) { @@ -49,6 +54,13 @@ export default class BookParser { } */ const newParagraph = (text, len) => { + //схлопывание пустых параграфов + if (this.cutEmptyParagraphs && paraIndex >= 0) { + let p = para[paraIndex]; + if (p.length == 1 && p.text[0] == ' ') + return; + } + paraIndex++; let p = { index: paraIndex, diff --git a/client/components/Reader/share/bookManager.js b/client/components/Reader/share/bookManager.js index bb6acd88..67b9b812 100644 --- a/client/components/Reader/share/bookManager.js +++ b/client/components/Reader/share/bookManager.js @@ -18,7 +18,8 @@ const bmRecentStore = localForage.createInstance({ }); class BookManager { - async init() { + async init(settings) { + this.settings = settings; this.books = {}; this.recent = {}; this.recentChanged = true; @@ -130,7 +131,7 @@ class BookManager { async parseBook(meta, data, callback) { if (!this.books) await this.init(); - const parsed = new BookParser(); + const parsed = new BookParser(this.settings); const parsedMeta = await parsed.parse(data, callback); const result = Object.assign({}, meta, parsedMeta, { diff --git a/client/store/modules/reader.js b/client/store/modules/reader.js index 54f7d2b3..1c440390 100644 --- a/client/store/modules/reader.js +++ b/client/store/modules/reader.js @@ -160,6 +160,8 @@ const settingDefaults = { copyFullText: false, showClickMapPage: true, clickControl: true, + cutEmptyParagraphs: false, + fontShifts: {}, };