Add power supplies table to hardware status page

Adds items at /redfish/v1/Chassis/chassis/Power endpoint in
Power supplies table. Table is sortable and has a row expansion
to view details.

- Table sort mixin to reuse sort method for status values

Signed-off-by: Yoshie Muranaka <yoshiemuranaka@gmail.com>
Change-Id: Ib2953ad06be3fa25e9dbbbed34e37d09154431f5
diff --git a/src/store/modules/Health/PowerSupplyStore.js b/src/store/modules/Health/PowerSupplyStore.js
new file mode 100644
index 0000000..4e3d5fe
--- /dev/null
+++ b/src/store/modules/Health/PowerSupplyStore.js
@@ -0,0 +1,52 @@
+import api from '@/store/api';
+
+const PowerSupplyStore = {
+  namespaced: true,
+  state: {
+    powerSupplies: []
+  },
+  getters: {
+    powerSupplies: state => state.powerSupplies
+  },
+  mutations: {
+    setPowerSupply: (state, data) => {
+      state.powerSupplies = data.map(powerSupply => {
+        const {
+          EfficiencyPercent,
+          FirmwareVersion,
+          IndicatorLED,
+          MemberId,
+          Model,
+          PartNumber,
+          PowerInputWatts,
+          SerialNumber,
+          Status
+        } = powerSupply;
+        return {
+          id: MemberId,
+          health: Status.Health,
+          partNumber: PartNumber,
+          serialNumber: SerialNumber,
+          efficiencyPercent: EfficiencyPercent,
+          firmwareVersion: FirmwareVersion,
+          indicatorLed: IndicatorLED,
+          model: Model,
+          powerInputWatts: PowerInputWatts,
+          statusState: Status.State
+        };
+      });
+    }
+  },
+  actions: {
+    async getPowerSupply({ commit }) {
+      return await api
+        .get('/redfish/v1/Chassis/chassis/Power')
+        .then(({ data: { PowerSupplies } }) =>
+          commit('setPowerSupply', PowerSupplies)
+        )
+        .catch(error => console.log(error));
+    }
+  }
+};
+
+export default PowerSupplyStore;