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: {}, };