1import api from '@/store/api'; 2import i18n from '@/i18n'; 3 4const MemoryStore = { 5 namespaced: true, 6 state: { 7 dimms: [], 8 }, 9 getters: { 10 dimms: (state) => state.dimms, 11 }, 12 mutations: { 13 setMemoryInfo: (state, data) => { 14 state.dimms = data.map(({ data }) => { 15 const { 16 Id, 17 Status = {}, 18 BaseModuleType, 19 BusWidthBits, 20 CapacityMiB, 21 DataWidthBits, 22 Enabled, 23 ErrorCorrection, 24 Manufacturer, 25 OperatingSpeedMhz, 26 PartNumber, 27 RankCount, 28 SerialNumber, 29 SparePartNumber, 30 Description, 31 MemoryType, 32 LocationIndicatorActive, 33 Location, 34 } = data; 35 return { 36 id: Id, 37 health: Status.Health, 38 baseModuleType: BaseModuleType, 39 busWidthBits: BusWidthBits, 40 capacityMiB: CapacityMiB, 41 dataWidthBits: DataWidthBits, 42 operatingSpeedMhz: OperatingSpeedMhz, 43 enabled: Enabled, 44 errorCorrection: ErrorCorrection, 45 manufacturer: Manufacturer, 46 partNumber: PartNumber, 47 rankCount: RankCount, 48 serialNumber: SerialNumber, 49 statusState: Status.State, 50 sparePartNumber: SparePartNumber, 51 description: Description, 52 memoryType: MemoryType, 53 identifyLed: LocationIndicatorActive, 54 uri: data['@odata.id'], 55 locationNumber: Location?.PartLocation?.ServiceLabel, 56 }; 57 }); 58 }, 59 }, 60 actions: { 61 async getDimms({ commit }) { 62 return await api 63 .get(`${await this.dispatch('global/getSystemPath')}/Memory`) 64 .then(({ data: { Members } }) => { 65 const promises = Members.map((item) => api.get(item['@odata.id'])); 66 return api.all(promises); 67 }) 68 .then((response) => commit('setMemoryInfo', response)) 69 .catch((error) => console.log(error)); 70 }, 71 async updateIdentifyLedValue({ dispatch }, led) { 72 const uri = led.uri; 73 const updatedIdentifyLedValue = { 74 LocationIndicatorActive: led.identifyLed, 75 }; 76 return await api 77 .patch(uri, updatedIdentifyLedValue) 78 .then(() => { 79 if (led.identifyLed) { 80 return i18n.global.t( 81 'pageInventory.toast.successEnableIdentifyLed', 82 ); 83 } else { 84 return i18n.global.t( 85 'pageInventory.toast.successDisableIdentifyLed', 86 ); 87 } 88 }) 89 .catch((error) => { 90 dispatch('getDimms'); 91 console.log('error', error); 92 if (led.identifyLed) { 93 throw new Error( 94 i18n.global.t('pageInventory.toast.errorEnableIdentifyLed'), 95 ); 96 } else { 97 throw new Error( 98 i18n.global.t('pageInventory.toast.errorDisableIdentifyLed'), 99 ); 100 } 101 }); 102 }, 103 }, 104}; 105 106export default MemoryStore; 107