123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- <template>
- <Dialog ref="dialog" v-model="dialogVisible">
- <template #header>
- <div class="row items-center" style="font-size: 110%">
- <q-icon class="q-mr-sm text-green" name="la la-cog" size="28px"></q-icon>
- Настройки
- </div>
- </template>
- <div class="q-mx-md column" style="min-width: 300px; font-size: 120%;">
- <div class="row items-center q-ml-sm">
- <div class="q-mr-sm">
- Результатов на странице
- </div>
- <q-select
- v-model="limit" :options="limitOptions" class="bg-white"
- dropdown-icon="la la-angle-down la-sm"
- outlined dense emit-value map-options
- />
- </div>
- <q-checkbox v-show="config.latestVersion" v-model="showNewReleaseAvailable" size="36px" label="Уведомлять о выходе новой версии" />
- <q-checkbox v-model="downloadAsZip" size="36px" label="Скачивать книги в виде zip-архива" />
- <q-checkbox v-model="showCounts" size="36px" label="Показывать количество" />
- <q-checkbox v-model="showRates" size="36px" label="Показывать оценки" />
- <q-checkbox v-model="showInfo" size="36px" label="Показывать кнопку (инфо)" />
- <q-checkbox v-model="showGenres" size="36px" label="Показывать жанры" />
- <q-checkbox v-model="showDates" size="36px" label="Показывать даты поступления" />
- <q-checkbox v-model="showDeleted" size="36px" label="Показывать удаленные" />
- <q-checkbox v-model="abCacheEnabled" size="36px" label="Кешировать запросы" />
- </div>
- <template #footer>
- <q-btn class="q-px-md q-ml-sm" color="primary" dense no-caps @click="okClick">
- OK
- </q-btn>
- </template>
- </Dialog>
- </template>
- <script>
- //-----------------------------------------------------------------------------
- import vueComponent from '../../vueComponent.js';
- import Dialog from '../../share/Dialog.vue';
- const componentOptions = {
- components: {
- Dialog
- },
- watch: {
- modelValue(newValue) {
- this.dialogVisible = newValue;
- },
- dialogVisible(newValue) {
- this.$emit('update:modelValue', newValue);
- },
- settings() {
- this.loadSettings();
- },
- limit(newValue) {
- this.commit('setSettings', {'limit': newValue});
- },
- downloadAsZip(newValue) {
- this.commit('setSettings', {'downloadAsZip': newValue});
- },
- showCounts(newValue) {
- this.commit('setSettings', {'showCounts': newValue});
- },
- showRates(newValue) {
- this.commit('setSettings', {'showRates': newValue});
- },
- showInfo(newValue) {
- this.commit('setSettings', {'showInfo': newValue});
- },
- showGenres(newValue) {
- this.commit('setSettings', {'showGenres': newValue});
- },
- showDates(newValue) {
- this.commit('setSettings', {'showDates': newValue});
- },
- showDeleted(newValue) {
- this.commit('setSettings', {'showDeleted': newValue});
- },
- abCacheEnabled(newValue) {
- this.commit('setSettings', {'abCacheEnabled': newValue});
- },
- showNewReleaseAvailable(newValue) {
- this.commit('setSettings', {'showNewReleaseAvailable': newValue});
- },
- }
- };
- class SettingsDialog {
- _options = componentOptions;
- _props = {
- modelValue: Boolean,
- };
- dialogVisible = false;
- //settings
- limit = 20;
- downloadAsZip = false;
- showCounts = true;
- showRates = true;
- showInfo = true;
- showGenres = true;
- showDates = true;
- showDeleted = false;
- abCacheEnabled = true;
- showNewReleaseAvailable = true;
- limitOptions = [
- {label: '10', value: 10},
- {label: '20', value: 20},
- {label: '50', value: 50},
- {label: '100', value: 100},
- {label: '200', value: 200},
- {label: '500', value: 500},
- {label: '1000', value: 1000},
- ];
- created() {
- this.commit = this.$store.commit;
- this.loadSettings();
- }
- mounted() {
- }
- get config() {
- return this.$store.state.config;
- }
- get settings() {
- return this.$store.state.settings;
- }
- loadSettings() {
- const settings = this.settings;
- this.limit = settings.limit;
- this.downloadAsZip = settings.downloadAsZip;
- this.showCounts = settings.showCounts;
- this.showRates = settings.showRates;
- this.showInfo = settings.showInfo;
- this.showGenres = settings.showGenres;
- this.showDates = settings.showDates;
- this.showDeleted = settings.showDeleted;
- this.abCacheEnabled = settings.abCacheEnabled;
- this.showNewReleaseAvailable = settings.showNewReleaseAvailable;
- }
- okClick() {
- this.dialogVisible = false;
- }
- }
- export default vueComponent(SettingsDialog);
- //-----------------------------------------------------------------------------
- </script>
- <style scoped>
- </style>
|