diff --git a/build/includer.js b/build/includer.js new file mode 100644 index 00000000..eff3e452 --- /dev/null +++ b/build/includer.js @@ -0,0 +1,31 @@ +const path = require('path'); +const fs = require('fs'); + +//пример в коде: +// @@include('./test/testFile.inc'); + +function includeRecursive(self, parentFile, source, depth) { + depth = (depth ? depth : 0); + if (depth > 50) + throw new Error('includer: stack too big'); + const lines = source.split('\n'); + let result = []; + for (const line of lines) { + const trimmed = line.trim(); + const m = trimmed.match(/^@@[\s]*?include[\s]*?\(['"](.*)['"]\)/); + if (m) { + const includedFile = path.resolve(path.dirname(parentFile), m[1]); + self.addDependency(includedFile); + + const fileContent = fs.readFileSync(includedFile, 'utf8'); + result = result.concat(includeRecursive(self, includedFile, fileContent, depth + 1)); + } else { + result.push(line); + } + } + return result; +} + +exports.default = function includer(source) { + return includeRecursive(this, this.resourcePath, source).join('\n'); +} \ No newline at end of file diff --git a/build/webpack.base.config.js b/build/webpack.base.config.js index db7b4af7..e4e902f4 100644 --- a/build/webpack.base.config.js +++ b/build/webpack.base.config.js @@ -16,6 +16,11 @@ module.exports = { test: /\.vue$/, loader: "vue-loader" }, + { + test: /\.includer$/, + resourceQuery: /^\?vue/, + use: path.resolve('build/includer.js') + }, { test: /\.js$/, loader: 'babel-loader', diff --git a/client/api/misc.js b/client/api/misc.js index 970b4799..9f3d60a2 100644 --- a/client/api/misc.js +++ b/client/api/misc.js @@ -14,7 +14,10 @@ class Misc { try { await wsc.open(); - return await wsc.message(wsc.send(Object.assign({action: 'get-config'}, query))); + const config = await wsc.message(wsc.send(Object.assign({action: 'get-config'}, query))); + if (config.error) + throw new Error(config.error); + return config; } catch (e) { console.error(e); } diff --git a/client/api/reader.js b/client/api/reader.js index c17cccef..a38328ca 100644 --- a/client/api/reader.js +++ b/client/api/reader.js @@ -18,17 +18,22 @@ class Reader { if (!callback) callback = () => {}; let response = {}; - try { await wsc.open(); const requestId = wsc.send({action: 'worker-get-state-finish', workerId}); + let prevResponse = false; while (1) {// eslint-disable-line no-constant-condition response = await wsc.message(requestId); - callback(response); - if (!response.state) - throw new Error('Неверный ответ api'); + if (!response.state && prevResponse !== false) {//экономия траффика + callback(prevResponse); + } else {//были изменения worker state + if (!response.state) + throw new Error('Неверный ответ api'); + callback(response); + prevResponse = response; + } if (response.state == 'finish' || response.state == 'error') { break; @@ -127,6 +132,9 @@ class Reader { response = await api.post('/restore-cached-file', {path: url}); response = response.data; } + if (response.state == 'error') { + throw new Error(response.error); + } const workerId = response.workerId; if (!workerId) @@ -215,6 +223,9 @@ class Reader { const state = response.state; if (!state) throw new Error('Неверный ответ api'); + if (response.state == 'error') { + throw new Error(response.error); + } return response; } diff --git a/client/api/webSocketConnection.js b/client/api/webSocketConnection.js index bbcb21a3..e5b79789 100644 --- a/client/api/webSocketConnection.js +++ b/client/api/webSocketConnection.js @@ -111,11 +111,7 @@ class WebSocketConnection { requestId, timeout, onMessage: (mes) => { - if (mes.error) { - reject(mes.error); - } else { - resolve(mes); - } + resolve(mes); }, onError: (e) => { reject(e); diff --git a/client/components/App.vue b/client/components/App.vue index edce977b..a467dd28 100644 --- a/client/components/App.vue +++ b/client/components/App.vue @@ -1,9 +1,19 @@ diff --git a/client/components/Reader/HelpPage/HotkeysHelpPage/HotkeysHelpPage.vue b/client/components/Reader/HelpPage/HotkeysHelpPage/HotkeysHelpPage.vue index 811c0669..0886b393 100644 --- a/client/components/Reader/HelpPage/HotkeysHelpPage/HotkeysHelpPage.vue +++ b/client/components/Reader/HelpPage/HotkeysHelpPage/HotkeysHelpPage.vue @@ -1,6 +1,6 @@ @@ -46,13 +53,6 @@ class SetPositionPage extends Vue { this.initialized = true; } - formatTooltip(val) { - if (this.sliderMax) - return (val/this.sliderMax*100).toFixed(2) + '%'; - else - return 0; - } - close() { this.$emit('set-position-toggle'); } @@ -73,9 +73,13 @@ class SetPositionPage extends Vue { background-color: #efefef; border-radius: 15px; } + -.el-slider { - margin-right: 20px; - margin-left: 20px; + \ No newline at end of file diff --git a/client/components/Reader/SettingsPage/SettingsPage.vue b/client/components/Reader/SettingsPage/SettingsPage.vue index 3f5a4b0c..93349bb4 100644 --- a/client/components/Reader/SettingsPage/SettingsPage.vue +++ b/client/components/Reader/SettingsPage/SettingsPage.vue @@ -1,530 +1,69 @@ -