Добавил установку document.title
This commit is contained in:
@@ -6,31 +6,31 @@
|
|||||||
<el-menu class="el-menu-vertical" :default-active="rootRoute" :collapse="isCollapse" router>
|
<el-menu class="el-menu-vertical" :default-active="rootRoute" :collapse="isCollapse" router>
|
||||||
<el-menu-item index="/cardindex">
|
<el-menu-item index="/cardindex">
|
||||||
<i class="el-icon-search"></i>
|
<i class="el-icon-search"></i>
|
||||||
<span :class="itemTitleClass('/cardindex')" slot="title">Картотека</span>
|
<span :class="itemTitleClass('/cardindex')" slot="title">{{ this.itemRuText['/cardindex'] }}</span>
|
||||||
</el-menu-item>
|
</el-menu-item>
|
||||||
<el-menu-item index="/reader">
|
<el-menu-item index="/reader">
|
||||||
<i class="el-icon-tickets"></i>
|
<i class="el-icon-tickets"></i>
|
||||||
<span :class="itemTitleClass('/reader')" slot="title">Читалка</span>
|
<span :class="itemTitleClass('/reader')" slot="title">{{ this.itemRuText['/reader'] }}</span>
|
||||||
</el-menu-item>
|
</el-menu-item>
|
||||||
<el-menu-item index="/forum" disabled>
|
<el-menu-item index="/forum" disabled>
|
||||||
<i class="el-icon-message"></i>
|
<i class="el-icon-message"></i>
|
||||||
<span :class="itemTitleClass('/forum')" slot="title">Форум-чат</span>
|
<span :class="itemTitleClass('/forum')" slot="title">{{ this.itemRuText['/forum'] }}</span>
|
||||||
</el-menu-item>
|
</el-menu-item>
|
||||||
<el-menu-item index="/income">
|
<el-menu-item index="/income">
|
||||||
<i class="el-icon-upload"></i>
|
<i class="el-icon-upload"></i>
|
||||||
<span :class="itemTitleClass('/income')" slot="title">Поступления</span>
|
<span :class="itemTitleClass('/income')" slot="title">{{ this.itemRuText['/income'] }}</span>
|
||||||
</el-menu-item>
|
</el-menu-item>
|
||||||
<el-menu-item index="/sources">
|
<el-menu-item index="/sources">
|
||||||
<i class="el-icon-menu"></i>
|
<i class="el-icon-menu"></i>
|
||||||
<span :class="itemTitleClass('/sources')" slot="title">Источники</span>
|
<span :class="itemTitleClass('/sources')" slot="title">{{ this.itemRuText['/sources'] }}</span>
|
||||||
</el-menu-item>
|
</el-menu-item>
|
||||||
<el-menu-item index="/settings">
|
<el-menu-item index="/settings">
|
||||||
<i class="el-icon-setting"></i>
|
<i class="el-icon-setting"></i>
|
||||||
<span :class="itemTitleClass('/settings')" slot="title">Параметры</span>
|
<span :class="itemTitleClass('/settings')" slot="title">{{ this.itemRuText['/settings'] }}</span>
|
||||||
</el-menu-item>
|
</el-menu-item>
|
||||||
<el-menu-item index="/help">
|
<el-menu-item index="/help">
|
||||||
<i class="el-icon-question"></i>
|
<i class="el-icon-question"></i>
|
||||||
<span :class="itemTitleClass('/help')" slot="title">Справка</span>
|
<span :class="itemTitleClass('/help')" slot="title">{{ this.itemRuText['/help'] }}</span>
|
||||||
</el-menu-item>
|
</el-menu-item>
|
||||||
</el-menu>
|
</el-menu>
|
||||||
</el-aside>
|
</el-aside>
|
||||||
@@ -59,6 +59,15 @@ export default @Component({
|
|||||||
|
|
||||||
})
|
})
|
||||||
class App extends Vue {
|
class App extends Vue {
|
||||||
|
itemRuText = {
|
||||||
|
'/cardindex': 'Картотека',
|
||||||
|
'/reader': 'Читалка',
|
||||||
|
'/forum': 'Форум-чат',
|
||||||
|
'/income': 'Поступления',
|
||||||
|
'/sources': 'Источники',
|
||||||
|
'/settings': 'Параметры',
|
||||||
|
'/help': 'Справка',
|
||||||
|
}
|
||||||
created() {
|
created() {
|
||||||
this.commit = this.$store.commit;
|
this.commit = this.$store.commit;
|
||||||
this.dispatch = this.$store.dispatch;
|
this.dispatch = this.$store.dispatch;
|
||||||
@@ -66,6 +75,9 @@ class App extends Vue {
|
|||||||
this.uistate = this.$store.state.uistate;
|
this.uistate = this.$store.state.uistate;
|
||||||
this.config = this.$store.state.config;
|
this.config = this.$store.state.config;
|
||||||
|
|
||||||
|
// set-app-title
|
||||||
|
this.$root.$on('set-app-title', this.setAppTitle);
|
||||||
|
|
||||||
//global keyHooks
|
//global keyHooks
|
||||||
this.keyHooks = [];
|
this.keyHooks = [];
|
||||||
this.keyHook = (event) => {
|
this.keyHook = (event) => {
|
||||||
@@ -143,9 +155,21 @@ class App extends Vue {
|
|||||||
get rootRoute() {
|
get rootRoute() {
|
||||||
const m = this.$route.path.match(/^(\/[^/]*).*$/i);
|
const m = this.$route.path.match(/^(\/[^/]*).*$/i);
|
||||||
this.$root.rootRoute = (m ? m[1] : this.$route.path);
|
this.$root.rootRoute = (m ? m[1] : this.$route.path);
|
||||||
|
|
||||||
|
this.setAppTitle();
|
||||||
return this.$root.rootRoute;
|
return this.$root.rootRoute;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setAppTitle(title) {
|
||||||
|
if (!title) {
|
||||||
|
if (this.config) {
|
||||||
|
document.title = `${this.config.name} - ${this.itemRuText[this.$root.rootRoute]}`;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
document.title = title;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
itemTitleClass(path) {
|
itemTitleClass(path) {
|
||||||
return (this.rootRoute == path ? {'bold-font': true} : {});
|
return (this.rootRoute == path ? {'bold-font': true} : {});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -126,6 +126,10 @@ class Reader extends Vue {
|
|||||||
//this.commit('reader/setLoaderActive', true);
|
//this.commit('reader/setLoaderActive', true);
|
||||||
//result = 'LoaderPage';
|
//result = 'LoaderPage';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (result != 'TextPage') {
|
||||||
|
this.$root.$emit('set-app-title');
|
||||||
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="main">
|
<div class="main">
|
||||||
|
<pre>{{ meta }}</pre>
|
||||||
<p v-for="item in items" :key="item.id">
|
<p v-for="item in items" :key="item.id">
|
||||||
{{ item.text }}
|
{{ item.text }}
|
||||||
</p>
|
</p>
|
||||||
@@ -10,11 +11,14 @@
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import Component from 'vue-class-component';
|
import Component from 'vue-class-component';
|
||||||
|
import _ from 'lodash';
|
||||||
|
|
||||||
import bookManager from '../share/bookManager';
|
import bookManager from '../share/bookManager';
|
||||||
|
|
||||||
export default @Component({
|
export default @Component({
|
||||||
})
|
})
|
||||||
class TextPage extends Vue {
|
class TextPage extends Vue {
|
||||||
|
meta = null;
|
||||||
items = null;
|
items = null;
|
||||||
|
|
||||||
created() {
|
created() {
|
||||||
@@ -32,18 +36,30 @@ class TextPage extends Vue {
|
|||||||
(async() => {
|
(async() => {
|
||||||
const isParsed = await bookManager.hasBookParsed(last);
|
const isParsed = await bookManager.hasBookParsed(last);
|
||||||
if (!isParsed) {
|
if (!isParsed) {
|
||||||
|
this.$root.$emit('set-app-title');
|
||||||
this.$emit('parse-book', last);
|
this.$emit('parse-book', last);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const book = await bookManager.getBook(last);
|
this.book = await bookManager.getBook(last);
|
||||||
this.book = book.parsed;
|
this.meta = bookManager.metaOnly(this.book);
|
||||||
|
const fb2 = this.meta.fb2;
|
||||||
|
this.$root.$emit('set-app-title', _.compact([
|
||||||
|
fb2.lastName,
|
||||||
|
fb2.middleName,
|
||||||
|
fb2.firstName,
|
||||||
|
'-',
|
||||||
|
fb2.bookTitle
|
||||||
|
]).join(' '));
|
||||||
|
//
|
||||||
let lines = [];
|
let lines = [];
|
||||||
const len = (this.book.para.length > 50 ? 50 : this.book.para.length);
|
let para = this.book.parsed.para;
|
||||||
|
const len = (para.length > 50 ? 50 : para.length);
|
||||||
for (let i = 0; i < len; i++) {
|
for (let i = 0; i < len; i++) {
|
||||||
lines.push({key: i, text: this.book.para[i].text});
|
lines.push({key: i, text: para[i].text});
|
||||||
}
|
}
|
||||||
this.items = lines;
|
this.items = lines;
|
||||||
|
//
|
||||||
|
|
||||||
})();
|
})();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,14 @@ export default class BookParser {
|
|||||||
throw new Error('Неверный формат файла');
|
throw new Error('Неверный формат файла');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//defaults
|
||||||
|
let fb2 = {
|
||||||
|
firstName: '',
|
||||||
|
middleName: '',
|
||||||
|
lastName: '',
|
||||||
|
bookTitle: '',
|
||||||
|
};
|
||||||
|
|
||||||
let path = '';
|
let path = '';
|
||||||
let tag = '';
|
let tag = '';
|
||||||
let nextPerc = 0;
|
let nextPerc = 0;
|
||||||
@@ -66,8 +74,6 @@ export default class BookParser {
|
|||||||
paraOffset += p.length;
|
paraOffset += p.length;
|
||||||
};
|
};
|
||||||
|
|
||||||
let fb2 = {};
|
|
||||||
|
|
||||||
const parser = this.parser;
|
const parser = this.parser;
|
||||||
|
|
||||||
parser.on('error', (msgError) => {// eslint-disable-line no-unused-vars
|
parser.on('error', (msgError) => {// eslint-disable-line no-unused-vars
|
||||||
@@ -101,6 +107,9 @@ export default class BookParser {
|
|||||||
case '/FictionBook/description/title-info/author/first-name':
|
case '/FictionBook/description/title-info/author/first-name':
|
||||||
fb2.firstName = text;
|
fb2.firstName = text;
|
||||||
break;
|
break;
|
||||||
|
case '/FictionBook/description/title-info/author/middle-name':
|
||||||
|
fb2.middleName = text;
|
||||||
|
break;
|
||||||
case '/FictionBook/description/title-info/author/last-name':
|
case '/FictionBook/description/title-info/author/last-name':
|
||||||
fb2.lastName = text;
|
fb2.lastName = text;
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user