Добавлена кнопка 'Обновить с разбиением на параграфы'

This commit is contained in:
Book Pauk
2020-11-01 16:42:20 +07:00
parent 9a4a84a367
commit c8c0e9ec1a
4 changed files with 33 additions and 6 deletions

View File

@@ -39,6 +39,10 @@
<q-icon name="la la-copy" size="32px"/>
<q-tooltip :delay="1500" anchor="bottom middle" content-style="font-size: 80%">{{ rstore.readerActions['copyText'] }}</q-tooltip>
</button>
<button ref="splitToPara" v-show="showToolButton['splitToPara']" class="tool-button" :class="buttonActiveClass('splitToPara')" @click="buttonClick('splitToPara')" v-ripple>
<q-icon name="la la-indent" style="transform: rotate(0.5turn); top: 1px" size="32px"/>
<q-tooltip :delay="1500" anchor="bottom middle" content-style="font-size: 80%">{{ rstore.readerActions['splitToPara'] }}</q-tooltip>
</button>
<button ref="refresh" v-show="showToolButton['refresh']" class="tool-button" :class="buttonActiveClass('refresh')" @click="buttonClick('refresh')" v-ripple>
<q-icon name="la la-sync" size="32px" :class="{clear: !showRefreshIcon}"/>
<q-tooltip :delay="1500" anchor="bottom middle" content-style="font-size: 80%">{{ rstore.readerActions['refresh'] }}</q-tooltip>
@@ -699,6 +703,12 @@ class Reader extends Vue {
}
}
refreshBookSplitToPara() {
if (this.mostRecentBook()) {
this.loadBook({url: this.mostRecentBook().url, skipCheck: true, isText: true, force: true});
}
}
recentBooksClose() {
this.recentBooksActive = false;
}
@@ -816,6 +826,7 @@ class Reader extends Vue {
case 'scrolling':
case 'search':
case 'copyText':
case 'splitToPara':
case 'refresh':
case 'libs':
case 'recentBooks':
@@ -847,8 +858,9 @@ class Reader extends Vue {
case 'copyText':
classResult = classDisabled;
break;
case 'recentBooks':
case 'splitToPara':
case 'refresh':
case 'recentBooks':
if (!this.mostRecentBookReactive)
classResult = classDisabled;
break;
@@ -1001,9 +1013,16 @@ class Reader extends Vue {
// не удалось, скачиваем книгу полностью с конвертацией
let loadCached = true;
if (!book) {
book = await readerApi.loadBook({url, enableSitesFilter: this.enableSitesFilter}, (state) => {
progress.setState(state);
});
book = await readerApi.loadBook({
url,
skipCheck: (opts.skipCheck ? true : false),
isText: (opts.isText ? true : false),
enableSitesFilter: this.enableSitesFilter
},
(state) => {
progress.setState(state);
}
);
loadCached = false;
}
@@ -1122,6 +1141,9 @@ class Reader extends Vue {
case 'copyText':
this.copyTextToggle();
break;
case 'splitToPara':
this.refreshBookSplitToPara();
break;
case 'refresh':
this.refreshBook();
break;

View File

@@ -10,6 +10,7 @@ const readerActions = {
'setPosition': 'Установить позицию',
'search': 'Найти в тексте',
'copyText': 'Скопировать текст со страницы',
'splitToPara': 'Обновить с разбиением на параграфы',
'refresh': 'Принудительно обновить книгу',
'offlineMode': 'Автономный режим (без интернета)',
'libs': 'Библиотека',
@@ -37,6 +38,7 @@ const toolButtons = [
{name: 'setPosition', show: true},
{name: 'search', show: true},
{name: 'copyText', show: false},
{name: 'splitToPara', show: true},
{name: 'refresh', show: true},
{name: 'libs', show: true},
{name: 'recentBooks', show: true},
@@ -55,6 +57,7 @@ const hotKeys = [
{name: 'setPosition', codes: ['P']},
{name: 'search', codes: ['Ctrl+F']},
{name: 'copyText', codes: ['Ctrl+C']},
{name: 'splitToPara', codes: ['Shift+R']},
{name: 'refresh', codes: ['R']},
{name: 'offlineMode', codes: ['O']},
{name: 'libs', codes: ['L']},

View File

@@ -19,7 +19,9 @@ class ReaderController extends BaseController {
throw new Error(`key 'url' is empty`);
const workerId = this.readerWorker.loadBookUrl({
url: request.url,
enableSitesFilter: (request.hasOwnProperty('enableSitesFilter') ? request.enableSitesFilter : true)
enableSitesFilter: (request.hasOwnProperty('enableSitesFilter') ? request.enableSitesFilter : true),
skipCheck: (request.hasOwnProperty('skipCheck') ? request.skipCheck : false),
isText: (request.hasOwnProperty('isText') ? request.isText : false),
});
const state = this.workerState.getState(workerId);
return (state ? state : {});

View File

@@ -200,7 +200,7 @@ class ConvertHtml extends ConvertBase {
titleInfo['book-title'] = title;
//подозрение на чистый текст, надо разбить на параграфы
if (isText || pars.length < buf.length/2000) {
if (isText || (buf.length > 30*1024 && pars.length < buf.length/2000)) {
let total = 0;
let count = 1;
for (let i = 0; i < spaceCounter.length; i++) {