diff options
author | Vitalii Lysak <v.lysak@dunice.net> | 2022-09-19 17:02:28 +0300 |
---|---|---|
committer | Vitalii Lysak <v.lysak@dunice.net> | 2022-09-19 17:02:28 +0300 |
commit | 30f4e9777b157fe7023a9cf02c7d53737d2e2974 (patch) | |
tree | 975f963652021cec858f1c08b3a589432562b770 | |
parent | 8a20e665fe0242d8fe075766a7fcfb46b820d12b (diff) | |
download | webui-vue-30f4e9777b157fe7023a9cf02c7d53737d2e2974.tar.xz |
upd syslog and smtp
-rw-r--r-- | src/assets/styles/bmc/_sila/_modal.scss | 2 | ||||
-rw-r--r-- | src/locales/en-US.json | 2 | ||||
-rw-r--r-- | src/locales/ru-RU.json | 18 | ||||
-rw-r--r-- | src/store/index.js | 2 | ||||
-rw-r--r-- | src/store/modules/Settings/SmtpStore.js | 74 | ||||
-rw-r--r-- | src/store/modules/Settings/SyslogStore.js | 36 | ||||
-rw-r--r-- | src/views/_sila/Settings/TransferInfo/ModalSmtp.vue | 98 | ||||
-rw-r--r-- | src/views/_sila/Settings/TransferInfo/Smtp.vue | 174 | ||||
-rw-r--r-- | src/views/_sila/Settings/TransferInfo/Snmp.vue | 3 | ||||
-rw-r--r-- | src/views/_sila/Settings/TransferInfo/Syslog.vue | 150 | ||||
-rw-r--r-- | src/views/_sila/Settings/TransferInfo/Transfer.vue | 19 |
11 files changed, 508 insertions, 70 deletions
diff --git a/src/assets/styles/bmc/_sila/_modal.scss b/src/assets/styles/bmc/_sila/_modal.scss index c4428cdc..42352b94 100644 --- a/src/assets/styles/bmc/_sila/_modal.scss +++ b/src/assets/styles/bmc/_sila/_modal.scss @@ -65,6 +65,8 @@ } } +#modal-smtp, +#modal-snmp, #modal-dns, #modal-hostname, #modal-mac-address, diff --git a/src/locales/en-US.json b/src/locales/en-US.json index cf9f6df4..a44ad5ad 100644 --- a/src/locales/en-US.json +++ b/src/locales/en-US.json @@ -1146,7 +1146,7 @@ }, "pageTransfer": { "title": "Setting up information transfer", - "description": "Set up SMTP and SNMP", + "description": "Set up SNMP, SMTP and SYSLOG", "saveSmtpSuсcess": "Save SMTP successfully.", "saveSmtpError": "Save SMTP error.", "smtp": { diff --git a/src/locales/ru-RU.json b/src/locales/ru-RU.json index 90cb6c64..8efbe859 100644 --- a/src/locales/ru-RU.json +++ b/src/locales/ru-RU.json @@ -1146,18 +1146,24 @@ }, "pageTransfer": { "title": "Настройка передачи информации", - "description": "Настройте SMTP и SNMP", + "description": "Настройте SNMP, SMTP и SYSLOG", "saveSmtpSuсcess": "Настройки SMTP успешно сохранены.", "saveSmtpError": "Ошибка сохранения настроек SMTP.", "smtp": { "smtpTitle": "Настройки SMTP", "username": "Имя пользователя", "password": "Пароль", + "email": "Email", "host": "SMTP сервер", "port": "SMTP порт", "authorization": "Авторизация", "sslEnabled": "Поддержка SSL", - "testMessage": "Тестовое сообщение" + "testMessage": "Тестовое сообщение", + "saveSubscriberSuсcess": "Подписчик успешно добавлен", + "deleteSubscriberSuсcess": "Подписчик успешно удален", + "saveSubscriberError": "Ошибка добавления подписчика", + "deleteSubscriberError": "Ошибка удаления подписчика", + "delSubscriber": "Удалить подписчика" }, "snmp": { "snmpTitle": "Настройки SNMP", @@ -1169,6 +1175,14 @@ "deleteSubscriberError": "Ошибка удаления подписчика", "delSubscriber": "Удалить подписчика" }, + "syslog": { + "title": "Настройки SYSLOG", + "ip": "IP-адрес syslog сервера", + "port": "Syslog - порт", + "saveSettingsSuсcess": "Настройки успешно сохранены", + "saveSettingsError": "Ошибка сохранения настроек", + "status": "Статус" + }, "table": { "userName": "Имя пользователя", "value": "Значение" diff --git a/src/store/index.js b/src/store/index.js index a30f71e2..a9afa310 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -32,6 +32,7 @@ import KeyClearStore from './modules/Operations/KeyClearStore'; import PciStore from './modules/HardwareStatus/PciStore'; import SmtpStore from './modules/Settings/SmtpStore'; import SnmpStore from './modules/Settings/SnmpStore'; +import SyslogStore from './modules/Settings/SyslogStore'; import WebSocketPlugin from './plugins/WebSocketPlugin'; import DateTimeStore from './modules/Settings/DateTimeStore'; @@ -77,6 +78,7 @@ export default new Vuex.Store({ pciStore: PciStore, smtpStore: SmtpStore, snmpStore: SnmpStore, + syslogStore: SyslogStore, }, plugins: [WebSocketPlugin], }); diff --git a/src/store/modules/Settings/SmtpStore.js b/src/store/modules/Settings/SmtpStore.js index 88fad25c..195f245a 100644 --- a/src/store/modules/Settings/SmtpStore.js +++ b/src/store/modules/Settings/SmtpStore.js @@ -3,22 +3,72 @@ import i18n from '@/i18n'; const SmtpStore = { namespaced: true, - state: { smtp: {} }, - getters: { smtpSettings: (state) => state.smtp }, + state: { + settings: {}, + subscribers: [], + }, + getters: { + settings: (state) => state.settings, + subscribers: (state) => state.subscribers, + }, mutations: { - saveSmtpSettings: (state, data) => (state.smtp = data), + saveSettings: (state, data) => (state.settings = data), + setSubscribers: (state, data) => (state.subscribers = data), }, actions: { - async setSmtpSettings({ commit }, payload) { - let url = `/redfish/v1/Smtp/ChangeParameters`; + async deleteSubscriber({ dispatch }, email) { + return await api + .get(`/redfish/v1/Smtp/DeleteMails&${email}`) + .then(async () => { + await dispatch('getSubscribers'); + return i18n.t('pageTransfer.smtp.deleteSubscriberSuсcess'); + }) + .catch((error) => { + console.log(error); + throw new Error(i18n.t('pageTransfer.smtp.deleteSubscriberError')); + }); + }, + + async addSubscriber({ dispatch }, payload) { + return await api + .get(`/redfish/v1/Smtp/AddMails&${payload.email}`) + .then(async () => { + await dispatch('getSubscribers'); + return i18n.t('pageTransfer.smtp.saveSubscriberSuсcess'); + }) + .catch((error) => { + console.log(error); + throw new Error(i18n.t('pageTransfer.smtp.saveSubscriberError')); + }); + }, + + async getSubscribers({ commit }) { + return await api + .get('/redfish/v1/Smtp/GetMails') + .then(({ data: { mails = [] } = {} }) => + mails.map((host) => { + return { + host, + }; + }) + ) + .then((subscribers) => commit('setSubscribers', subscribers)) + .catch((error) => { + console.log(error); + throw new Error(i18n.t('pageUserManagement.toast.errorLoadUsers')); + }); + }, + + async setSettings({ dispatch }, payload) { + let url = `/redfish/v1/Smtp/SetSettings`; for (let key in payload) { url += `&${key}=${payload[key]}`; } return await api .get(url) - .then(() => { - commit('saveSmtpSettings', payload); + .then(async () => { + await dispatch('getSettings'); return i18n.t('pageTransfer.saveSmtpSuсcess'); }) .catch((error) => { @@ -26,6 +76,16 @@ const SmtpStore = { throw new Error(i18n.t('pageTransfer.saveSmtpError')); }); }, + + async getSettings({ commit }) { + return await api + .get('/redfish/v1/Smtp/GetSettings') + .then(({ data = {} }) => { + commit('saveSettings', data); + }) + .catch((error) => console.log(error)); + }, + async sendTestMessage(_, payload) { let url = `/redfish/v1/Smtp/SendMail`; for (let key in payload) { diff --git a/src/store/modules/Settings/SyslogStore.js b/src/store/modules/Settings/SyslogStore.js new file mode 100644 index 00000000..f0b0eb59 --- /dev/null +++ b/src/store/modules/Settings/SyslogStore.js @@ -0,0 +1,36 @@ +import api from '@/store/api'; +import i18n from '@/i18n'; + +const SyslogStore = { + namespaced: true, + state: { settings: {} }, + getters: { settings: (state) => state.settings }, + mutations: { + saveSettings: (state, data) => (state.settings = data), + }, + actions: { + async saveSettings({ dispatch }, payload) { + return await api + .post('/redfish/v1/Syslog/Actions/Syslog.UpdateConfig', payload) + .then(async () => { + await dispatch('getSettings'); + return i18n.t('pageTransfer.syslog.saveSettingsSuсcess'); + }) + .catch((error) => { + console.log(error); + throw new Error(i18n.t('pageTransfer.syslog.saveSettingsError')); + }); + }, + + async getSettings({ commit }) { + return await api + .get('/redfish/v1/Syslog') + .then(({ data: { Configuration = {} } = {} }) => { + commit('saveSettings', Configuration); + }) + .catch((error) => console.log(error)); + }, + }, +}; + +export default SyslogStore; diff --git a/src/views/_sila/Settings/TransferInfo/ModalSmtp.vue b/src/views/_sila/Settings/TransferInfo/ModalSmtp.vue new file mode 100644 index 00000000..c3bdc493 --- /dev/null +++ b/src/views/_sila/Settings/TransferInfo/ModalSmtp.vue @@ -0,0 +1,98 @@ +<template> + <b-modal + id="modal-smtp" + ref="modal" + :title="$t('global.action.add')" + @hidden="resetForm" + > + <b-form id="form-smtp" @submit.prevent="handleSubmit"> + <b-row> + <b-col sm="6"> + <b-form-group + :label="$t('pageTransfer.smtp.email')" + label-for="smtpEmail" + > + <b-form-input + id="smtpEmail" + v-model="email" + type="text" + :state="getValidationState($v.email)" + data-test-id="smtp-input-email" + @input="$v.email.$touch()" + /> + <b-form-invalid-feedback role="alert"> + <template v-if="!$v.email.required"> + {{ $t('global.form.fieldRequired') }} + </template> + <template v-if="!$v.email.email"> + {{ $t('global.form.invalidFormat') }} + </template> + </b-form-invalid-feedback> + </b-form-group> + </b-col> + </b-row> + </b-form> + <template #modal-footer="{ cancel }"> + <b-button variant="secondary" @click="cancel()"> + {{ $t('global.action.cancel') }} + </b-button> + <b-button form="form-smtp" type="submit" variant="primary" @click="onOk"> + {{ $t('global.action.add') }} + </b-button> + </template> + </b-modal> +</template> + +<script> +import VuelidateMixin from '@/components/_sila/Mixins/VuelidateMixin.js'; +import { email, required } from 'vuelidate/lib/validators'; + +export default { + mixins: [VuelidateMixin], + data() { + return { + email: null, + }; + }, + validations() { + return { + email: { + required, + email, + }, + }; + }, + methods: { + handleSubmit() { + this.$v.$touch(); + if (this.$v.$invalid) return; + + this.$emit('ok', { + email: this.email, + }); + this.closeModal(); + }, + closeModal() { + this.$nextTick(() => { + this.$refs.modal.hide(); + }); + }, + resetForm() { + this.email = null; + this.$v.$reset(); + this.$emit('hidden'); + }, + onOk(bvModalEvt) { + // prevent modal close + bvModalEvt.preventDefault(); + this.handleSubmit(); + }, + }, +}; +</script> + +<style lang="scss" scoped> +.input-group-prepend + input { + padding-left: 70px !important; +} +</style> diff --git a/src/views/_sila/Settings/TransferInfo/Smtp.vue b/src/views/_sila/Settings/TransferInfo/Smtp.vue index 338eeda7..34d171de 100644 --- a/src/views/_sila/Settings/TransferInfo/Smtp.vue +++ b/src/views/_sila/Settings/TransferInfo/Smtp.vue @@ -8,30 +8,31 @@ }}</label> <b-form-checkbox id="authenticationSwitch" - v-model="form.auth" + v-model="form.is_need_auth" data-test-id="checkbox-authorization" switch - :disabled="isNotAdmin" + :disabled="loading || isNotAdmin" > - <span v-if="form.auth"> + <span v-if="form.is_need_auth"> {{ $t('global.status.enabled') }} </span> <span v-else>{{ $t('global.status.disabled') }}</span> </b-form-checkbox> </div> </b-col> - <b-col xs="12" sm="12"> + <b-col xs="12" sm="6"> <b-form-group :label="$t('pageTransfer.smtp.username')" label-for="smtp-name" > <b-form-input id="smtp-name" - v-model="form.user" - :disabled="isNotAdmin || !form.auth" + v-model="form.username" + type="text" + :disabled="loading || isNotAdmin || !form.is_need_auth" /> </b-form-group ></b-col> - <b-col xs="12" sm="12"> + <b-col xs="12" sm="6"> <b-form-group :label="$t('pageTransfer.smtp.password')" label-for="smtp-password" @@ -41,12 +42,12 @@ id="smtp-password" v-model="form.password" type="password" - :disabled="isNotAdmin || !form.auth" + :disabled="loading || isNotAdmin || !form.is_need_auth" /> </input-password-toggle> </b-form-group> </b-col> - <b-col xs="12" sm="12"> + <b-col xs="12" sm="6"> <b-form-group :label="$t('pageTransfer.smtp.host')" label-for="smtp-host" @@ -54,11 +55,11 @@ <b-form-input id="smtp-host" v-model="form.host" - :disabled="isNotAdmin" + :disabled="loading || isNotAdmin" /> </b-form-group> </b-col> - <b-col xs="12" sm="12"> + <b-col xs="12" sm="6"> <b-form-group :label="$t('pageTransfer.smtp.port')" label-for="smtp-port" @@ -67,7 +68,7 @@ id="smtp-port" v-model="form.port" type="number" - :disabled="isNotAdmin" + :disabled="loading || isNotAdmin" /> </b-form-group> </b-col> @@ -78,12 +79,12 @@ }}</label> <b-form-checkbox id="sslSwitch" - v-model="form.ssl" + v-model="form.is_need_ssl" data-test-id="checkbox-ssl" switch :disabled="isNotAdmin" > - <span v-if="form.ssl"> + <span v-if="form.is_need_ssl"> {{ $t('global.status.enabled') }} </span> <span v-else>{{ $t('global.status.disabled') }}</span> @@ -91,24 +92,62 @@ </div> </b-col> <b-col xs="4" class="d-flex justify-content-between align-items-start"> - <b-button variant="secondary" :disabled="isNotAdmin" @click="sendMail"> + <b-button + variant="secondary" + :disabled="loading || isNotAdmin" + @click="sendMail" + > {{ $t('pageTransfer.smtp.testMessage') }} </b-button> - <b-button variant="primary" :disabled="isNotAdmin" @click="saveSmtp"> + <b-button + variant="primary" + :disabled="loading || isNotAdmin" + @click="saveSmtp" + > {{ $t('global.action.save') }} </b-button> </b-col> </b-row> <b-row> <b-col> + <div class="text-right"> + <b-button + variant="primary" + :disabled="loading || isNotAdmin" + @click="initAddModal()" + > + <icon-add /> + {{ $t('global.action.add') }} + </b-button> + </div> <b-table - hover responsive="md" - show-empty + hover + :busy="loading" :fields="fields" + :items="subscribers" :empty-text="$t('global.table.emptyMessage')" + show-empty > + <!-- table actions column --> + <template #cell(actions)="{ item }"> + <table-row-action + v-for="(action, index) in item.actions" + :key="index" + :value="action.value" + :enabled="action.enabled" + :title="action.title" + @click-table-action="onTableAction($event, item)" + > + <template #icon> + <icon-trashcan + v-if="action.value === 'delete'" + :data-test-id="`smtp-tableRowAction-delete-${index}`" + /> + </template> + </table-row-action> + </template> </b-table> </b-col> </b-row> @@ -118,43 +157,63 @@ <script> import PageSection from '@/components/_sila/Global/PageSection'; import BVToastMixin from '@/components/_sila/Mixins/BVToastMixin'; -import DataFormatterMixin from '@/components/_sila/Mixins/DataFormatterMixin'; +import TableRowAction from '@/components/_sila/Global/TableRowAction'; +import LoadingBarMixin, { + loading, +} from '@/components/_sila/Mixins/LoadingBarMixin'; + +import IconAdd from '@carbon/icons-vue/es/add--alt/20'; +import IconTrashcan from '@carbon/icons-vue/es/trash-can/20'; import InputPasswordToggle from '@/components/_sila/Global/InputPasswordToggle'; export default { name: 'Smtp', components: { + IconAdd, + IconTrashcan, PageSection, + TableRowAction, InputPasswordToggle, }, - mixins: [BVToastMixin, DataFormatterMixin], + mixins: [BVToastMixin, LoadingBarMixin], data() { return { + loading, form: { - user: '', + username: '', password: '', host: '', port: '', - auth: false, - ssl: false, + is_need_auth: false, + is_need_ssl: false, }, fields: [ { - key: 'name', + key: 'host', label: this.$t('pageTransfer.table.userName'), - formatter: this.dataFormatter, - }, - { - key: 'value', - label: this.$t('pageTransfer.table.value'), - formatter: this.dataFormatter, - tdClass: 'text-nowrap', }, + { key: 'actions', label: '', tdClass: 'text-right' }, ], }; }, computed: { + settings() { + return this.$store.getters['smtpStore/settings']; + }, + subscribers() { + return this.$store.getters['smtpStore/subscribers'].map((subscriber) => { + return { + ...subscriber, + actions: [ + { + value: 'delete', + title: this.$t('pageTransfer.smtp.delSubscriber'), + }, + ], + }; + }); + }, isNotAdmin() { return ( this.$store.getters['authentication/role'] === 'ReadOnly' || @@ -162,18 +221,51 @@ export default { ); }, }, + watch: { + settings() { + this.setForm(); + }, + }, + created() { + this.startLoader(); + Promise.all([ + this.$store.dispatch('smtpStore/getSettings'), + this.$store.dispatch('smtpStore/getSubscribers'), + ]).finally(() => { + this.setForm(); + this.endLoader(); + }); + }, methods: { + onTableAction($event, { host }) { + if ($event === 'delete') { + this.deleteSubscriber(host); + } + }, + deleteSubscriber(host) { + this.startLoader(); + this.$store + .dispatch('smtpStore/deleteSubscriber', host) + .then((success) => this.successToast(success)) + .catch(({ message }) => this.errorToast(message)) + .finally(() => this.endLoader()); + }, + initAddModal() { + this.$bvModal.show('modal-smtp'); + }, saveSmtp() { - if (!this.form.auth) { + this.startLoader(); + if (!this.form.is_need_auth) { // eslint-disable-next-line no-unused-vars - const { user, password, ...formWithoutCredits } = this.form; + const { username, password, ...formWithoutCredits } = this.form; this.form = formWithoutCredits; } this.$store - .dispatch('smtpStore/setSmtpSettings', this.form) + .dispatch('smtpStore/setSettings', this.form) .then((message) => this.successToast(message)) - .catch(({ message }) => this.errorToast(message)); + .catch(({ message }) => this.errorToast(message)) + .finally(() => this.endLoader()); }, sendMail() { this.$store @@ -186,6 +278,18 @@ export default { .then((message) => this.successToast(message)) .catch(({ message }) => this.errorToast(message)); }, + setForm() { + if (!this.settings) { + return; + } + + this.form.username = this.settings.username; + this.form.password = this.settings.password; + this.form.host = this.settings.host; + this.form.port = this.settings.port; + this.form.is_need_auth = this.settings.is_need_auth; + this.form.is_need_ssl = this.settings.is_need_ssl; + }, }, }; </script> diff --git a/src/views/_sila/Settings/TransferInfo/Snmp.vue b/src/views/_sila/Settings/TransferInfo/Snmp.vue index 4a0e0abe..ef9e18ac 100644 --- a/src/views/_sila/Settings/TransferInfo/Snmp.vue +++ b/src/views/_sila/Settings/TransferInfo/Snmp.vue @@ -5,7 +5,7 @@ <div class="text-right"> <b-button variant="primary" - :disabled="isNotAdmin" + :disabled="loading || isNotAdmin" @click="initAddModal()" > <icon-add /> @@ -114,7 +114,6 @@ export default { this.startLoader(); this.$store.dispatch('snmpStore/getSubscribers').finally(() => { this.endLoader(); - this.isBusy = false; }); }, diff --git a/src/views/_sila/Settings/TransferInfo/Syslog.vue b/src/views/_sila/Settings/TransferInfo/Syslog.vue index 1d2111c9..bc64cc0d 100644 --- a/src/views/_sila/Settings/TransferInfo/Syslog.vue +++ b/src/views/_sila/Settings/TransferInfo/Syslog.vue @@ -1,30 +1,55 @@ <template> - <page-section :section-title="$t('pageLdap.settings')"> - <b-row class="mt-4 justify-content-end"> - <b-col xs="12" sm="6" lg="4"> - <b-form-group label="Расположение системы" label-for="system-location"> + <page-section :section-title="$t('pageTransfer.syslog.title')"> + <b-row class="mt-4 justify-content-end syslog-warning"> + <b-col xs="12" sm="12"> + <div class="switch-group"> + <label for="statusSwitch">{{ + $t('pageTransfer.syslog.status') + }}</label> + <b-form-checkbox + id="statusSwitch" + v-model="syslogStatus" + data-test-id="checkbox-status" + switch + :disabled="loading || isNotAdmin" + > + <span v-if="syslogStatus"> + {{ $t('global.status.enabled') }} + </span> + <span v-else>{{ $t('global.status.disabled') }}</span> + </b-form-checkbox> + </div> + </b-col> + <b-col xs="12" sm="6"> + <b-form-group + :label="$t('pageTransfer.syslog.ip')" + label-for="syslog-ip" + > <b-form-input - id="system-location" - placeholder="Ведите значение" - :disabled="$store.getters['authentication/role'] === 'ReadOnly'" + id="syslog-ip" + v-model="form.Address" + :disabled="!syslogStatus || loading || isNotAdmin" /> </b-form-group ></b-col> - <b-col xs="12" sm="6" lg="4"> - <b-form-group label="Контакты системы" label-for="system-contacts"> + <b-col xs="12" sm="6"> + <b-form-group + :label="$t('pageTransfer.syslog.port')" + label-for="syslog-port" + > <b-form-input - id="system-contacts" - placeholder="Ведите значение" - :disabled="$store.getters['authentication/role'] === 'ReadOnly'" + id="syslog-port" + v-model="form.Port" + type="number" + :disabled="!syslogStatus || loading || isNotAdmin" /> </b-form-group> </b-col> - <b-col xs="12" sm="6" lg="4"> - <b-form-group label="Статус" label-for="SMNP-status"> - <b-form-select id="SMNP-status"> </b-form-select> - </b-form-group> - </b-col> <b-col xs="4" class="d-flex justify-content-end align-items-start"> - <b-button variant="primary"> + <b-button + variant="primary" + :disabled="loading || isNotAdmin" + @click="saveSyslog" + > {{ $t('global.action.save') }} </b-button> </b-col> @@ -34,16 +59,101 @@ <script> import PageSection from '@/components/_sila/Global/PageSection'; +import BVToastMixin from '@/components/_sila/Mixins/BVToastMixin'; +import LoadingBarMixin, { + loading, +} from '@/components/_sila/Mixins/LoadingBarMixin'; export default { name: 'Syslog', components: { PageSection, }, + mixins: [BVToastMixin, LoadingBarMixin], data() { - return {}; + return { + loading, + syslogStatus: false, + form: { + Address: null, + Port: null, + }, + }; + }, + computed: { + settings() { + return this.$store.getters['syslogStore/settings']; + }, + isNotAdmin() { + return ( + this.$store.getters['authentication/role'] === 'ReadOnly' || + this.$store.getters['authentication/role'] === 'Operator' + ); + }, + }, + + watch: { + settings() { + this.setForm(); + }, + }, + + created() { + this.startLoader(); + this.$store.dispatch('syslogStore/getSettings').finally(() => { + this.setForm(); + this.endLoader(); + }); + }, + + methods: { + saveSyslog() { + this.startLoader(); + if (!this.syslogStatus) { + this.form = { + Address: '', + Port: 0, + }; + } + + this.form.Port = +this.form.Port; + this.$store + .dispatch('syslogStore/saveSettings', this.form) + .then((success) => this.successToast(success)) + .catch(({ message }) => this.errorToast(message)) + .finally(() => this.endLoader()); + }, + + setForm() { + if (!this.settings) { + return; + } + + if (!this.settings.Address && this.settings.Port === 0) { + this.syslogStatus = false; + } else { + this.syslogStatus = true; + } + + this.form.Address = this.settings.Address; + this.form.Port = this.settings.Port; + }, }, - computed: {}, }; </script> + +<style lang="scss" scoped> +.switch-group { + margin-bottom: 1.5rem; +} +.syslog-warning { + width: 50%; + @media (max-width: 1200px) { + width: 75%; + } + @media (max-width: 576px) { + width: 100%; + } +} +</style> diff --git a/src/views/_sila/Settings/TransferInfo/Transfer.vue b/src/views/_sila/Settings/TransferInfo/Transfer.vue index 5f6d5058..4b70778b 100644 --- a/src/views/_sila/Settings/TransferInfo/Transfer.vue +++ b/src/views/_sila/Settings/TransferInfo/Transfer.vue @@ -5,8 +5,10 @@ <hr /> <smtp /> <hr /> - <!-- <syslog />--> + <syslog /> + <hr /> <modal-snmp @ok="saveSnmp" /> + <modal-smtp @ok="saveSmtp" /> </b-container> </template> @@ -20,7 +22,8 @@ import PageTitle from '@/components/_sila/Global/PageTitle'; import Snmp from './Snmp'; import Smtp from './Smtp'; import ModalSnmp from './ModalSnmp.vue'; -// import Syslog from './Syslog'; +import ModalSmtp from './ModalSmtp.vue'; +import Syslog from './Syslog'; export default { name: 'PowerRestorePolicy', @@ -29,7 +32,8 @@ export default { Snmp, ModalSnmp, Smtp, - // Syslog + ModalSmtp, + Syslog, }, mixins: [BVToastMixin, LoadingBarMixin], data() { @@ -46,6 +50,15 @@ export default { .catch(({ message }) => this.errorToast(message)) .finally(() => this.endLoader()); }, + + saveSmtp(modalFormData) { + this.startLoader(); + this.$store + .dispatch('smtpStore/addSubscriber', modalFormData) + .then((message) => this.successToast(message)) + .catch(({ message }) => this.errorToast(message)) + .finally(() => this.endLoader()); + }, }, }; </script> |