summaryrefslogtreecommitdiffstats
path: root/sdnr/wt/odlux/apps/maintenanceApp/src/handlers/maintenenceEntriesHandler.ts
diff options
context:
space:
mode:
Diffstat (limited to 'sdnr/wt/odlux/apps/maintenanceApp/src/handlers/maintenenceEntriesHandler.ts')
-rw-r--r--sdnr/wt/odlux/apps/maintenanceApp/src/handlers/maintenenceEntriesHandler.ts40
1 files changed, 40 insertions, 0 deletions
diff --git a/sdnr/wt/odlux/apps/maintenanceApp/src/handlers/maintenenceEntriesHandler.ts b/sdnr/wt/odlux/apps/maintenanceApp/src/handlers/maintenenceEntriesHandler.ts
new file mode 100644
index 000000000..13f4a3b6d
--- /dev/null
+++ b/sdnr/wt/odlux/apps/maintenanceApp/src/handlers/maintenenceEntriesHandler.ts
@@ -0,0 +1,40 @@
+import { IActionHandler } from '../../../../framework/src/flux/action';
+
+import { MaintenenceEntry } from '../models/maintenenceEntryType';
+import { LoadAllMainteneceEntriesAction, AllMainteneceEntriesLoadedAction, UpdateMaintenanceEntry } from '../actions/maintenenceActions';
+
+export interface IMaintenenceEntriesState {
+ entries: MaintenenceEntry[];
+ busy: boolean;
+}
+
+const maintenanceEntriesStateInit: IMaintenenceEntriesState = {
+ entries: [],
+ busy: false
+};
+
+export const maintenenceEntriesActionHandler: IActionHandler<IMaintenenceEntriesState> = (state = maintenanceEntriesStateInit, action) => {
+ if (action instanceof LoadAllMainteneceEntriesAction){
+ state = {
+ ...state,
+ busy: true,
+ }
+ } else if (action instanceof AllMainteneceEntriesLoadedAction){
+ state = {
+ ...state,
+ entries: action.maintenenceEntries || [],
+ busy: false,
+ }
+ } else if (action instanceof UpdateMaintenanceEntry) {
+ const index = state.entries.findIndex(e => action.maintenenceEntry.mountId === e.mountId);
+ state = {
+ ...state,
+ entries: index > -1 ? [
+ ...state.entries.slice(0, index),
+ action.maintenenceEntry,
+ ...state.entries.slice(index+1),
+ ] : [...state.entries, action.maintenenceEntry]
+ }
+ }
+ return state;
+} \ No newline at end of file