Глобальный рефакторинг SettingsPage (в процессе)
This commit is contained in:
@@ -1,28 +0,0 @@
|
|||||||
<!---------------------------------------------->
|
|
||||||
<div class="part-header">Анимация</div>
|
|
||||||
|
|
||||||
<div class="item row">
|
|
||||||
<div class="label-5">Тип</div>
|
|
||||||
<q-select class="col-left" v-model="pageChangeAnimation" :options="pageChangeAnimationOptions"
|
|
||||||
dropdown-icon="la la-angle-down la-sm"
|
|
||||||
outlined dense emit-value map-options
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="item row">
|
|
||||||
<div class="label-5">Скорость</div>
|
|
||||||
<NumInput class="col-left" v-model="pageChangeAnimationSpeed" :min="0" :max="100" :disable="pageChangeAnimation == ''"/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!---------------------------------------------->
|
|
||||||
<div class="part-header">Другое</div>
|
|
||||||
|
|
||||||
<div class="item row">
|
|
||||||
<div class="label-5">Страница</div>
|
|
||||||
<q-checkbox v-model="keepLastToFirst" size="xs" label="Переносить последнюю строку">
|
|
||||||
<q-tooltip :delay="1000" anchor="top middle" self="bottom middle" content-style="font-size: 80%">
|
|
||||||
Переносить последнюю строку страницы<br>
|
|
||||||
в начало следующей при листании
|
|
||||||
</q-tooltip>
|
|
||||||
</q-checkbox>
|
|
||||||
</div>
|
|
||||||
@@ -0,0 +1,96 @@
|
|||||||
|
<template>
|
||||||
|
<div class="fit sets-tab-panel">
|
||||||
|
<!---------------------------------------------->
|
||||||
|
<div class="sets-part-header">
|
||||||
|
Анимация
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="sets-item row">
|
||||||
|
<div class="sets-label label">
|
||||||
|
Тип
|
||||||
|
</div>
|
||||||
|
<q-select
|
||||||
|
v-model="form.pageChangeAnimation" class="col-left" :options="pageChangeAnimationOptions"
|
||||||
|
dropdown-icon="la la-angle-down la-sm"
|
||||||
|
outlined dense emit-value map-options
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="sets-item row">
|
||||||
|
<div class="sets-label label">
|
||||||
|
Скорость
|
||||||
|
</div>
|
||||||
|
<NumInput v-model="form.pageChangeAnimationSpeed" class="col-left" :min="0" :max="100" :disable="form.pageChangeAnimation == ''" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!---------------------------------------------->
|
||||||
|
<div class="sets-part-header">
|
||||||
|
Другое
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="sets-item row">
|
||||||
|
<div class="sets-label label">
|
||||||
|
Страница
|
||||||
|
</div>
|
||||||
|
<q-checkbox v-model="form.keepLastToFirst" size="xs" label="Переносить последнюю строку">
|
||||||
|
<q-tooltip :delay="1000" anchor="top middle" self="bottom middle" content-style="font-size: 80%">
|
||||||
|
Переносить последнюю строку страницы<br>
|
||||||
|
в начало следующей при листании
|
||||||
|
</q-tooltip>
|
||||||
|
</q-checkbox>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
import vueComponent from '../../../vueComponent.js';
|
||||||
|
import NumInput from '../../../share/NumInput.vue';
|
||||||
|
|
||||||
|
const componentOptions = {
|
||||||
|
components: {
|
||||||
|
NumInput,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
class PageMoveTab {
|
||||||
|
_options = componentOptions;
|
||||||
|
_props = {
|
||||||
|
form: Object,
|
||||||
|
};
|
||||||
|
|
||||||
|
created() {
|
||||||
|
}
|
||||||
|
|
||||||
|
mounted() {
|
||||||
|
}
|
||||||
|
|
||||||
|
get pageChangeAnimationOptions() {
|
||||||
|
let result = [
|
||||||
|
{label: 'Нет', value: ''},
|
||||||
|
{label: 'Вверх-вниз', value: 'downShift'},
|
||||||
|
(!this.form.dualPageMode ? {label: 'Вправо-влево', value: 'rightShift'} : null),
|
||||||
|
{label: 'Протаивание', value: 'thaw'},
|
||||||
|
{label: 'Мерцание', value: 'blink'},
|
||||||
|
{label: 'Вращение', value: 'rotate'},
|
||||||
|
(this.form.wallpaper == '' && !this.form.dualPageMode ? {label: 'Листание', value: 'flip'} : null),
|
||||||
|
];
|
||||||
|
|
||||||
|
result = result.filter(v => v);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default vueComponent(PageMoveTab);
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.label {
|
||||||
|
width: 110px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.col-left {
|
||||||
|
width: 150px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -87,9 +87,7 @@
|
|||||||
<!-- Управление ------------------------------------------------------------------>
|
<!-- Управление ------------------------------------------------------------------>
|
||||||
<KeysTab v-if="selectedTab == 'keys'" :form="form" />
|
<KeysTab v-if="selectedTab == 'keys'" :form="form" />
|
||||||
<!-- Листание -------------------------------------------------------------------->
|
<!-- Листание -------------------------------------------------------------------->
|
||||||
<!--div v-if="selectedTab == 'pagemove'" class="fit tab-panel">
|
<PageMoveTab v-if="selectedTab == 'pagemove'" :form="form" />
|
||||||
@@include('./PageMoveTab.inc');
|
|
||||||
</div-->
|
|
||||||
<!-- Конвертирование ------------------------------------------------------------->
|
<!-- Конвертирование ------------------------------------------------------------->
|
||||||
<!--div v-if="selectedTab == 'convert'" class="fit tab-panel">
|
<!--div v-if="selectedTab == 'convert'" class="fit tab-panel">
|
||||||
@@include('./ConvertTab.inc');
|
@@include('./ConvertTab.inc');
|
||||||
@@ -121,7 +119,6 @@ import _ from 'lodash';
|
|||||||
import * as utils from '../../../share/utils';
|
import * as utils from '../../../share/utils';
|
||||||
import * as cryptoUtils from '../../../share/cryptoUtils';
|
import * as cryptoUtils from '../../../share/cryptoUtils';
|
||||||
import Window from '../../share/Window.vue';
|
import Window from '../../share/Window.vue';
|
||||||
import NumInput from '../../share/NumInput.vue';
|
|
||||||
import wallpaperStorage from '../share/wallpaperStorage';
|
import wallpaperStorage from '../share/wallpaperStorage';
|
||||||
|
|
||||||
import readerApi from '../../../api/reader';
|
import readerApi from '../../../api/reader';
|
||||||
@@ -132,26 +129,27 @@ import defPalette from './defPalette';
|
|||||||
import ProfilesTab from './ProfilesTab/ProfilesTab.vue';
|
import ProfilesTab from './ProfilesTab/ProfilesTab.vue';
|
||||||
import ToolBarTab from './ToolBarTab/ToolBarTab.vue';
|
import ToolBarTab from './ToolBarTab/ToolBarTab.vue';
|
||||||
import KeysTab from './KeysTab/KeysTab.vue';
|
import KeysTab from './KeysTab/KeysTab.vue';
|
||||||
|
import PageMoveTab from './PageMoveTab/PageMoveTab.vue';
|
||||||
|
|
||||||
const hex = /^#[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$/;
|
const hex = /^#[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$/;
|
||||||
|
|
||||||
const componentOptions = {
|
const componentOptions = {
|
||||||
components: {
|
components: {
|
||||||
Window,
|
Window,
|
||||||
NumInput,
|
|
||||||
//pages
|
//pages
|
||||||
ProfilesTab,
|
ProfilesTab,
|
||||||
ToolBarTab,
|
ToolBarTab,
|
||||||
KeysTab,
|
KeysTab,
|
||||||
|
PageMoveTab,
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
settings: function() {
|
settings: function() {
|
||||||
this.settingsChanged();//no await
|
this.settingsChanged();//no await
|
||||||
},
|
},
|
||||||
form: {
|
form: {
|
||||||
handler(newValue) {
|
handler() {
|
||||||
if (this.inited && !this.setsChanged) {
|
if (this.inited && !this.setsChanged) {
|
||||||
this.commit('reader/setSettings', _.cloneDeep(newValue));
|
this.debouncedCommitSettings();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
deep: true,
|
deep: true,
|
||||||
@@ -181,6 +179,9 @@ const componentOptions = {
|
|||||||
if (newValue != '' && this.pageChangeAnimation == 'flip')
|
if (newValue != '' && this.pageChangeAnimation == 'flip')
|
||||||
this.pageChangeAnimation = '';
|
this.pageChangeAnimation = '';
|
||||||
},
|
},
|
||||||
|
/*this.$watch('form.dualPageMode', (newValue) => {
|
||||||
|
console.log(newValue);
|
||||||
|
})*/
|
||||||
dualPageMode(newValue) {
|
dualPageMode(newValue) {
|
||||||
if (newValue && this.pageChangeAnimation == 'flip' || this.pageChangeAnimation == 'rightShift')
|
if (newValue && this.pageChangeAnimation == 'flip' || this.pageChangeAnimation == 'rightShift')
|
||||||
this.pageChangeAnimation = '';
|
this.pageChangeAnimation = '';
|
||||||
@@ -240,6 +241,10 @@ class SettingsPage {
|
|||||||
this.commit = this.$store.commit;
|
this.commit = this.$store.commit;
|
||||||
this.reader = this.$store.state.reader;
|
this.reader = this.$store.state.reader;
|
||||||
|
|
||||||
|
this.debouncedCommitSettings = _.debounce(() => {
|
||||||
|
this.commit('reader/setSettings', _.cloneDeep(this.form));
|
||||||
|
}, 100);
|
||||||
|
|
||||||
this.settingsChanged();//no await
|
this.settingsChanged();//no await
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -333,22 +338,6 @@ class SettingsPage {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
get pageChangeAnimationOptions() {
|
|
||||||
let result = [
|
|
||||||
{label: 'Нет', value: ''},
|
|
||||||
{label: 'Вверх-вниз', value: 'downShift'},
|
|
||||||
(!this.dualPageMode ? {label: 'Вправо-влево', value: 'rightShift'} : null),
|
|
||||||
{label: 'Протаивание', value: 'thaw'},
|
|
||||||
{label: 'Мерцание', value: 'blink'},
|
|
||||||
{label: 'Вращение', value: 'rotate'},
|
|
||||||
(this.wallpaper == '' && !this.dualPageMode ? {label: 'Листание', value: 'flip'} : null),
|
|
||||||
];
|
|
||||||
|
|
||||||
result = result.filter(v => v);
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
get predefineTextColors() {
|
get predefineTextColors() {
|
||||||
return defPalette.concat([
|
return defPalette.concat([
|
||||||
'#ffffff',
|
'#ffffff',
|
||||||
@@ -539,7 +528,7 @@ export default vueComponent(SettingsPage);
|
|||||||
width: 75px;
|
width: 75px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.label-2, .label-5 {
|
.label-2 {
|
||||||
width: 110px;
|
width: 110px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -556,9 +545,6 @@ export default vueComponent(SettingsPage);
|
|||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.col-left {
|
|
||||||
width: 150px;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
|||||||
Reference in New Issue
Block a user