Рефакторинг

This commit is contained in:
Book Pauk
2020-11-20 18:25:24 +07:00
parent 0f6b366f62
commit f44378ec84
4 changed files with 63 additions and 55 deletions

View File

@@ -87,7 +87,7 @@
import Vue from 'vue'; import Vue from 'vue';
import Component from 'vue-class-component'; import Component from 'vue-class-component';
import path from 'path'; import path from 'path';
import _ from 'lodash'; //import _ from 'lodash';
import * as utils from '../../../share/utils'; import * as utils from '../../../share/utils';
import Window from '../../share/Window.vue'; import Window from '../../share/Window.vue';
@@ -222,30 +222,11 @@ class RecentBooksPage extends Vue {
textLen = ` ${Math.round(book.textLength/1000)}k`; textLen = ` ${Math.round(book.textLength/1000)}k`;
} }
const fb2 = (book.fb2 ? book.fb2 : {}); const bt = utils.getBookTitle(book.fb2);
let title = fb2.bookTitle; let title = bt.bookTitle;
if (title) title = (title ? `"${title}"`: '');
title = `"${title}"`; const author = (bt.author ? bt.author : (bt.bookTitle ? bt.bookTitle : book.url));
else
title = '';
let author = '';
if (fb2.author) {
const authorNames = fb2.author.map(a => _.compact([
a.lastName,
a.firstName,
a.middleName
]).join(' '));
author = authorNames.join(', ');
} else {//TODO: убрать в будущем
author = _.compact([
fb2.lastName,
fb2.firstName,
fb2.middleName
]).join(' ');
}
author = (author ? author : (fb2.bookTitle ? fb2.bookTitle : book.url));
result.push({ result.push({
num, num,

View File

@@ -40,7 +40,7 @@ import Component from 'vue-class-component';
import {loadCSS} from 'fg-loadcss'; import {loadCSS} from 'fg-loadcss';
import _ from 'lodash'; import _ from 'lodash';
import {sleep} from '../../../share/utils'; import * as utils from '../../../share/utils';
import bookManager from '../share/bookManager'; import bookManager from '../share/bookManager';
import DrawHelper from './DrawHelper'; import DrawHelper from './DrawHelper';
import rstore from '../../../store/modules/reader'; import rstore from '../../../store/modules/reader';
@@ -134,7 +134,7 @@ class TextPage extends Vue {
this.$root.$on('resize', async() => { this.$root.$on('resize', async() => {
this.$nextTick(this.onResize); this.$nextTick(this.onResize);
await sleep(500); await utils.sleep(500);
this.$nextTick(this.onResize); this.$nextTick(this.onResize);
}); });
} }
@@ -285,7 +285,7 @@ class TextPage extends Vue {
let close = null; let close = null;
(async() => { (async() => {
await sleep(500); await utils.sleep(500);
if (this.fontsLoading) if (this.fontsLoading)
close = this.$root.notify.info('Загрузка шрифта &nbsp;<i class="la la-snowflake icon-rotate" style="font-size: 150%"></i>'); close = this.$root.notify.info('Загрузка шрифта &nbsp;<i class="la la-snowflake icon-rotate" style="font-size: 150%"></i>');
})(); })();
@@ -342,7 +342,7 @@ class TextPage extends Vue {
let i = 0; let i = 0;
const t = this.parsed.testText; const t = this.parsed.testText;
while (i++ < 50 && this.parsed === parsed && this.drawHelper.measureText(t, {}) === this.parsed.testWidth) while (i++ < 50 && this.parsed === parsed && this.drawHelper.measureText(t, {}) === this.parsed.testWidth)
await sleep(100); await utils.sleep(100);
if (this.parsed === parsed) { if (this.parsed === parsed) {
this.parsed.testWidth = this.drawHelper.measureText(t, {}); this.parsed.testWidth = this.drawHelper.measureText(t, {});
@@ -366,7 +366,6 @@ class TextPage extends Vue {
this.updateLayout(); this.updateLayout();
this.book = null; this.book = null;
this.meta = null; this.meta = null;
this.fb2 = null;
this.parsed = null; this.parsed = null;
this.linesUp = null; this.linesUp = null;
@@ -383,7 +382,7 @@ class TextPage extends Vue {
try { try {
//подождем ленивый парсинг //подождем ленивый парсинг
this.stopLazyParse = true; this.stopLazyParse = true;
while (this.doingLazyParse) await sleep(10); while (this.doingLazyParse) await utils.sleep(10);
const isParsed = await bookManager.hasBookParsed(this.lastBook); const isParsed = await bookManager.hasBookParsed(this.lastBook);
if (!isParsed) { if (!isParsed) {
@@ -392,21 +391,9 @@ class TextPage extends Vue {
this.book = await bookManager.getBook(this.lastBook); this.book = await bookManager.getBook(this.lastBook);
this.meta = bookManager.metaOnly(this.book); this.meta = bookManager.metaOnly(this.book);
this.fb2 = this.meta.fb2; const bt = utils.getBookTitle(this.meta.fb2);
let authorNames = []; this.title = bt.title;
if (this.fb2.author) {
authorNames = this.fb2.author.map(a => _.compact([
a.lastName,
a.firstName,
a.middleName
]).join(' '));
}
this.title = _.compact([
authorNames.join(', '),
this.fb2.bookTitle
]).join(' - ');
this.$root.$emit('set-app-title', this.title); this.$root.$emit('set-app-title', this.title);
@@ -493,7 +480,7 @@ class TextPage extends Vue {
let wait = (timeout + 201)/100; let wait = (timeout + 201)/100;
while (wait > 0 && !this[stopPropertyName]) { while (wait > 0 && !this[stopPropertyName]) {
wait--; wait--;
await sleep(100); await utils.sleep(100);
} }
resolve(); resolve();
})().catch(reject); }); })().catch(reject); });
@@ -509,7 +496,7 @@ class TextPage extends Vue {
} }
//ждем анимацию //ждем анимацию
while (this.inAnimation) await sleep(10); while (this.inAnimation) await utils.sleep(10);
this.stopScrolling = false; this.stopScrolling = false;
this.doingScrolling = true; this.doingScrolling = true;
@@ -520,7 +507,7 @@ class TextPage extends Vue {
this.page1 = this.page2; this.page1 = this.page2;
this.toggleLayout = true; this.toggleLayout = true;
await this.$nextTick(); await this.$nextTick();
await sleep(50); await utils.sleep(50);
this.cachedPos = -1; this.cachedPos = -1;
this.draw(); this.draw();
@@ -557,7 +544,7 @@ class TextPage extends Vue {
page.style.transform = 'none'; page.style.transform = 'none';
page.offsetHeight; page.offsetHeight;
while (this.doingScrolling) await sleep(10); while (this.doingScrolling) await utils.sleep(10);
} }
draw() { draw() {
@@ -766,7 +753,7 @@ class TextPage extends Vue {
for (let i = 0; i < this.parsed.para.length; i++) { for (let i = 0; i < this.parsed.para.length; i++) {
j++; j++;
if (j > 1) { if (j > 1) {
await sleep(1); await utils.sleep(1);
j = 0; j = 0;
} }
if (this.stopLazyParse) if (this.stopLazyParse)
@@ -788,7 +775,7 @@ class TextPage extends Vue {
async refreshTime() { async refreshTime() {
if (!this.timeRefreshing) { if (!this.timeRefreshing) {
this.timeRefreshing = true; this.timeRefreshing = true;
await sleep(60*1000); await utils.sleep(60*1000);
if (this.book && this.parsed.textLength) { if (this.book && this.parsed.textLength) {
this.debouncedDrawStatusBar(); this.debouncedDrawStatusBar();
@@ -905,7 +892,7 @@ class TextPage extends Vue {
this.settingsChanging = true; this.settingsChanging = true;
const newSize = (this.settings.fontSize + 1 < 200 ? this.settings.fontSize + 1 : 100); const newSize = (this.settings.fontSize + 1 < 200 ? this.settings.fontSize + 1 : 100);
this.commit('reader/setSettings', {fontSize: newSize}); this.commit('reader/setSettings', {fontSize: newSize});
await sleep(50); await utils.sleep(50);
this.settingsChanging = false; this.settingsChanging = false;
} }
} }
@@ -915,7 +902,7 @@ class TextPage extends Vue {
this.settingsChanging = true; this.settingsChanging = true;
const newSize = (this.settings.fontSize - 1 > 5 ? this.settings.fontSize - 1 : 5); const newSize = (this.settings.fontSize - 1 > 5 ? this.settings.fontSize - 1 : 5);
this.commit('reader/setSettings', {fontSize: newSize}); this.commit('reader/setSettings', {fontSize: newSize});
await sleep(50); await utils.sleep(50);
this.settingsChanging = false; this.settingsChanging = false;
} }
} }
@@ -925,7 +912,7 @@ class TextPage extends Vue {
this.settingsChanging = true; this.settingsChanging = true;
const newDelay = (this.settings.scrollingDelay - 50 > 1 ? this.settings.scrollingDelay - 50 : 1); const newDelay = (this.settings.scrollingDelay - 50 > 1 ? this.settings.scrollingDelay - 50 : 1);
this.commit('reader/setSettings', {scrollingDelay: newDelay}); this.commit('reader/setSettings', {scrollingDelay: newDelay});
await sleep(50); await utils.sleep(50);
this.settingsChanging = false; this.settingsChanging = false;
} }
} }
@@ -935,7 +922,7 @@ class TextPage extends Vue {
this.settingsChanging = true; this.settingsChanging = true;
const newDelay = (this.settings.scrollingDelay + 50 < 10000 ? this.settings.scrollingDelay + 50 : 10000); const newDelay = (this.settings.scrollingDelay + 50 < 10000 ? this.settings.scrollingDelay + 50 : 10000);
this.commit('reader/setSettings', {scrollingDelay: newDelay}); this.commit('reader/setSettings', {scrollingDelay: newDelay});
await sleep(50); await utils.sleep(50);
this.settingsChanging = false; this.settingsChanging = false;
} }
} }
@@ -949,7 +936,7 @@ class TextPage extends Vue {
let delay = 400; let delay = 400;
while (this.repDoing) { while (this.repDoing) {
this.handleClick(pointX, pointY); this.handleClick(pointX, pointY);
await sleep(delay); await utils.sleep(delay);
if (delay > 15) if (delay > 15)
delay *= 0.8; delay *= 0.8;
} }

View File

@@ -455,6 +455,8 @@ export default class BookParser {
return {fb2}; return {fb2};
} }
getAuthor
findParaIndex(bookPos) { findParaIndex(bookPos) {
let result = undefined; let result = undefined;
//дихотомия //дихотомия

View File

@@ -308,3 +308,41 @@ export function userHotKeysObjectSwap(userHotKeys) {
export function removeHtmlTags(s) { export function removeHtmlTags(s) {
return s.replace(/(<([^>]+)>)/ig, ''); return s.replace(/(<([^>]+)>)/ig, '');
} }
export function makeValidFilename(filename, repl = '_') {
let f = filename.replace(/[\x00\\/:*"<>|]/g, repl); // eslint-disable-line no-control-regex
f = f.trim();
while (f.length && (f[f.length - 1] == '.' || f[f.length - 1] == '_')) {
f = f.substring(0, f.length - 1);
}
if (f)
return f;
else
throw new Error('Invalid filename');
}
export function getBookTitle(fb2) {
fb2 = (fb2 ? fb2 : {});
const result = {};
if (fb2.author) {
const authorNames = fb2.author.map(a => _.compact([
a.lastName,
a.firstName,
a.middleName
]).join(' '));
result.author = authorNames.join(', ');
}
if (fb2.bookTitle)
result.bookTitle = fb2.bookTitle;
result.title = _.compact([
result.author,
result.bookTitle
]).join(' - ');
return result;
}