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