From 158e0373b621079a714086791113a7e021e326dc Mon Sep 17 00:00:00 2001 From: Vitalii Lysak Date: Wed, 14 Sep 2022 14:53:52 +0300 Subject: finish snmp component --- src/locales/ru-RU.json | 7 +- src/store/index.js | 2 + src/store/modules/Settings/SnmpStore.js | 73 +++++++++++++++++++ .../_sila/Settings/TransferInfo/ModalSnmp.vue | 82 ++++++++++++++++++++++ src/views/_sila/Settings/TransferInfo/Snmp.vue | 81 ++++++++++++++------- src/views/_sila/Settings/TransferInfo/Transfer.vue | 24 +++++++ 6 files changed, 242 insertions(+), 27 deletions(-) create mode 100644 src/store/modules/Settings/SnmpStore.js create mode 100644 src/views/_sila/Settings/TransferInfo/ModalSnmp.vue diff --git a/src/locales/ru-RU.json b/src/locales/ru-RU.json index 034edff3..90cb6c64 100644 --- a/src/locales/ru-RU.json +++ b/src/locales/ru-RU.json @@ -1162,7 +1162,12 @@ "snmp": { "snmpTitle": "Настройки SNMP", "host": "SNMP сервер", - "port": "SNMP порт" + "port": "SNMP порт", + "saveSubscriberSuсcess": "Подписчик успешно добавлен", + "deleteSubscriberSuсcess": "Подписчик успешно удален", + "saveSubscriberError": "Ошибка добавления подписчика", + "deleteSubscriberError": "Ошибка удаления подписчика", + "delSubscriber": "Удалить подписчика" }, "table": { "userName": "Имя пользователя", diff --git a/src/store/index.js b/src/store/index.js index ba7cdf99..a30f71e2 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -31,6 +31,7 @@ import FactoryResetStore from './modules/Operations/FactoryResetStore'; 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 WebSocketPlugin from './plugins/WebSocketPlugin'; import DateTimeStore from './modules/Settings/DateTimeStore'; @@ -75,6 +76,7 @@ export default new Vuex.Store({ keyClear: KeyClearStore, pciStore: PciStore, smtpStore: SmtpStore, + snmpStore: SnmpStore, }, plugins: [WebSocketPlugin], }); diff --git a/src/store/modules/Settings/SnmpStore.js b/src/store/modules/Settings/SnmpStore.js new file mode 100644 index 00000000..539b85f6 --- /dev/null +++ b/src/store/modules/Settings/SnmpStore.js @@ -0,0 +1,73 @@ +import api from '@/store/api'; +import i18n from '@/i18n'; + +const SnmpStore = { + namespaced: true, + state: { subscribers: [] }, + getters: { subscribers: (state) => state.subscribers }, + mutations: { + setSubscribers: (state, data) => (state.subscribers = data), + }, + actions: { + async deleteSubscriber({ dispatch }, index) { + return await api + .delete(`/redfish/v1/EventService/Subscriptions/${index}`) + .then(() => { + dispatch('getSubscribers'); + return i18n.t('pageTransfer.snmp.deleteSubscriberSuсcess'); + }) + .catch((error) => { + console.log(error); + throw new Error(i18n.t('pageTransfer.snmp.deleteSubscriberError')); + }); + }, + async addSubscriber({ dispatch }, payload) { + return await api + .post('/redfish/v1/EventService/Subscriptions', payload) + .then(() => { + dispatch('getSubscribers'); + return i18n.t('pageTransfer.snmp.saveSubscriberSuсcess'); + }) + .catch((error) => { + console.log(error); + throw new Error(i18n.t('pageTransfer.snmp.saveSubscriberError')); + }); + }, + async getSubscribers({ commit }) { + return await api + .get('/redfish/v1/EventService/Subscriptions') + .then(({ data: { Members } }) => { + return api.all( + Members.filter((member) => member['@odata.id'].includes('snmp')) + ); + }) + .then((members) => { + return api.all(members.map((member) => api.get(member['@odata.id']))); + }) + .then((subscribersRow) => { + return subscribersRow.map((subscriberRow) => { + return subscriberRow.data; + }); + }) + .then((data) => { + return data.map((subscriber) => { + const host = subscriber.Destination.split('/')[2].split(':')[0]; + const port = subscriber.Destination.split('/')[2].split(':')[1]; + return { + ...subscriber, + host, + port, + }; + }); + }) + .then((subscribers) => commit('setSubscribers', subscribers)) + .catch((error) => { + console.log(error); + const message = i18n.t('pageUserManagement.toast.errorLoadUsers'); + throw new Error(message); + }); + }, + }, +}; + +export default SnmpStore; diff --git a/src/views/_sila/Settings/TransferInfo/ModalSnmp.vue b/src/views/_sila/Settings/TransferInfo/ModalSnmp.vue new file mode 100644 index 00000000..54679720 --- /dev/null +++ b/src/views/_sila/Settings/TransferInfo/ModalSnmp.vue @@ -0,0 +1,82 @@ + + + diff --git a/src/views/_sila/Settings/TransferInfo/Snmp.vue b/src/views/_sila/Settings/TransferInfo/Snmp.vue index 8a7ca730..4a0e0abe 100644 --- a/src/views/_sila/Settings/TransferInfo/Snmp.vue +++ b/src/views/_sila/Settings/TransferInfo/Snmp.vue @@ -6,7 +6,7 @@ {{ $t('global.action.add') }} @@ -15,23 +15,27 @@ - -- cgit v1.2.3