1import api from '@/store/api'; 2import i18n from '@/i18n'; 3 4const AssemblyStore = { 5 namespaced: true, 6 state: { 7 assemblies: null, 8 }, 9 getters: { 10 assemblies: (state) => state.assemblies, 11 }, 12 mutations: { 13 setAssemblyInfo: (state, data) => { 14 state.assemblies = data.map((assembly) => { 15 const { 16 MemberId, 17 PartNumber, 18 SerialNumber, 19 SparePartNumber, 20 Model, 21 Name, 22 Location, 23 LocationIndicatorActive, 24 } = assembly; 25 return { 26 id: MemberId, 27 partNumber: PartNumber, 28 serialNumber: SerialNumber, 29 sparePartNumber: SparePartNumber, 30 model: Model, 31 name: Name, 32 locationNumber: Location?.PartLocation?.ServiceLabel, 33 identifyLed: LocationIndicatorActive, 34 uri: assembly['@odata.id'], 35 }; 36 }); 37 }, 38 }, 39 actions: { 40 async getAssemblyInfo({ commit }) { 41 return await api 42 .get('/redfish/v1/Chassis/chassis/Assembly') 43 .then(({ data }) => commit('setAssemblyInfo', data?.Assemblies)) 44 .catch((error) => console.log(error)); 45 }, 46 async updateIdentifyLedValue({ dispatch }, led) { 47 const uri = led.uri; 48 const updatedIdentifyLedValue = { 49 Assemblies: [ 50 { 51 MemberId: led.memberId, 52 LocationIndicatorActive: led.identifyLed, 53 }, 54 ], 55 }; 56 57 return await api 58 .patch(uri, updatedIdentifyLedValue) 59 .then(() => { 60 if (led.identifyLed) { 61 return i18n.t('pageInventory.toast.successEnableIdentifyLed'); 62 } else { 63 return i18n.t('pageInventory.toast.successDisableIdentifyLed'); 64 } 65 }) 66 .catch((error) => { 67 dispatch('getAssemblyInfo'); 68 console.log('error', error); 69 if (led.identifyLed) { 70 throw new Error( 71 i18n.t('pageInventory.toast.errorEnableIdentifyLed'), 72 ); 73 } else { 74 throw new Error( 75 i18n.t('pageInventory.toast.errorDisableIdentifyLed'), 76 ); 77 } 78 }); 79 }, 80 }, 81}; 82 83export default AssemblyStore; 84