瀏覽代碼

Добавил настройку cutEmptyParagraphs

Book Pauk 6 年之前
父節點
當前提交
5af1f81bc3

+ 1 - 1
client/components/Reader/Reader.vue

@@ -199,7 +199,7 @@ class Reader extends Vue {
 
 
     mounted() {
     mounted() {
         (async() => {
         (async() => {
-            await bookManager.init();
+            await bookManager.init(this.settings);
             await restoreOldSettings(this.settings, bookManager, this.commit);
             await restoreOldSettings(this.settings, bookManager, this.commit);
 
 
             if (this.$root.rootRoute == '/reader') {
             if (this.$root.rootRoute == '/reader') {

+ 8 - 0
client/components/Reader/SettingsPage/SettingsPage.vue

@@ -184,6 +184,10 @@
                                 <el-checkbox v-model="textAlignJustify">По ширине</el-checkbox>
                                 <el-checkbox v-model="textAlignJustify">По ширине</el-checkbox>
                                 <el-checkbox v-model="wordWrap">Перенос по слогам</el-checkbox>
                                 <el-checkbox v-model="wordWrap">Перенос по слогам</el-checkbox>
                             </el-form-item>
                             </el-form-item>
+                            <el-form-item label="Обработка">
+                                <el-checkbox v-model="cutEmptyParagraphs" @change="needReload">Убирать пустые параграфы</el-checkbox>
+                            </el-form-item>
+                            
                         </el-form>
                         </el-form>
 
 
                         <el-form :model="form" size="mini" label-width="120px" @submit.native.prevent>
                         <el-form :model="form" size="mini" label-width="120px" @submit.native.prevent>
@@ -387,6 +391,10 @@ class SettingsPage extends Vue {
         ];
         ];
     }
     }
 
 
+    needReload() {
+        this.$notify.warning({message: 'Необходимо обновить страницу (F5), чтобы изменения возымели эффект'});
+    }
+
     close() {
     close() {
         this.$emit('settings-toggle');
         this.$emit('settings-toggle');
     }
     }

+ 13 - 1
client/components/Reader/share/BookParser.js

@@ -3,7 +3,7 @@ import sax from '../../../../server/core/BookConverter/sax';
 import {sleep} from '../../../share/utils';
 import {sleep} from '../../../share/utils';
 
 
 export default class BookParser {
 export default class BookParser {
-    constructor() {
+    constructor(settings) {
         // defaults
         // defaults
         this.p = 30;// px, отступ параграфа
         this.p = 30;// px, отступ параграфа
         this.w = 300;// px, ширина страницы
         this.w = 300;// px, ширина страницы
@@ -13,6 +13,11 @@ export default class BookParser {
         this.measureText = (text, style) => {// eslint-disable-line no-unused-vars
         this.measureText = (text, style) => {// eslint-disable-line no-unused-vars
             return text.length*20;
             return text.length*20;
         };
         };
+
+        //настройки
+        if (settings) {
+            this.cutEmptyParagraphs = settings.cutEmptyParagraphs;
+        }
     }
     }
 
 
     async parse(data, callback) {
     async parse(data, callback) {
@@ -49,6 +54,13 @@ export default class BookParser {
             }
             }
         */
         */
         const newParagraph = (text, len) => {
         const newParagraph = (text, len) => {
+            //схлопывание пустых параграфов
+            if (this.cutEmptyParagraphs && paraIndex >= 0) {
+                let p = para[paraIndex];
+                if (p.length == 1 && p.text[0] == ' ')
+                    return;
+            }
+
             paraIndex++;
             paraIndex++;
             let p = {
             let p = {
                 index: paraIndex,
                 index: paraIndex,

+ 3 - 2
client/components/Reader/share/bookManager.js

@@ -18,7 +18,8 @@ const bmRecentStore = localForage.createInstance({
 });
 });
 
 
 class BookManager {
 class BookManager {
-    async init() {
+    async init(settings) {
+        this.settings = settings;
         this.books = {};
         this.books = {};
         this.recent = {};
         this.recent = {};
         this.recentChanged = true;
         this.recentChanged = true;
@@ -130,7 +131,7 @@ class BookManager {
     async parseBook(meta, data, callback) {
     async parseBook(meta, data, callback) {
         if (!this.books) 
         if (!this.books) 
             await this.init();
             await this.init();
-        const parsed = new BookParser();
+        const parsed = new BookParser(this.settings);
 
 
         const parsedMeta = await parsed.parse(data, callback);
         const parsedMeta = await parsed.parse(data, callback);
         const result = Object.assign({}, meta, parsedMeta, {
         const result = Object.assign({}, meta, parsedMeta, {

+ 2 - 0
client/store/modules/reader.js

@@ -160,6 +160,8 @@ const settingDefaults = {
         copyFullText: false,
         copyFullText: false,
         showClickMapPage: true,
         showClickMapPage: true,
         clickControl: true,
         clickControl: true,
+        cutEmptyParagraphs: false,
+        
         fontShifts: {},
         fontShifts: {},
 };
 };