Create wt-odlux directory
[ccsdk/features.git] / sdnr / wt-odlux / odlux / apps / performanceHistoryApp / src / handlers / availableLtpsActionHandler.ts
1 /**
2  * ============LICENSE_START========================================================================
3  * ONAP : ccsdk feature sdnr wt odlux
4  * =================================================================================================
5  * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved.
6  * =================================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
8  * in compliance with the License. You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software distributed under the License
13  * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
14  * or implied. See the License for the specific language governing permissions and limitations under
15  * the License.
16  * ============LICENSE_END==========================================================================
17  */
18 import { IActionHandler } from '../../../../framework/src/flux/action';
19
20 import {
21   AllAvailableLtpsLoadedAction,
22   LoadAllAvailableLtpsAction,
23   SetInitialLoadedAction,
24   NoLtpsFoundAction,
25   ResetLtpsAction,
26 } from '../actions/ltpAction';
27
28 import { LtpIds } from '../models/availableLtps';
29
30 export interface IAvailableLtpsState {
31   distinctLtps: LtpIds[];
32   busy: boolean;
33   loadedOnce: boolean;
34   error: string | undefined;
35 }
36
37 const ltpListStateInit: IAvailableLtpsState = {
38   distinctLtps: [],
39   busy: false,
40   loadedOnce: false,
41   error: undefined,
42 };
43
44 export const availableLtpsActionHandler: IActionHandler<IAvailableLtpsState> = (state = ltpListStateInit, action) => {
45   if (action instanceof LoadAllAvailableLtpsAction) {
46
47     state = {
48       ...state,
49       busy: true,
50     };
51
52   } else if (action instanceof AllAvailableLtpsLoadedAction) {
53     if (!action.error && action.availableLtps) {
54       state = {
55         ...state,
56         distinctLtps: action.availableLtps,
57         busy: false,
58         error: undefined,
59         loadedOnce: true,
60       };
61     } else if (action.error) {
62       state = {
63         ...state,
64         busy: false,
65         loadedOnce: true,
66         error: action.error,
67       };
68     }
69   } else if (action instanceof SetInitialLoadedAction) {
70
71     state = {
72       ...state,
73       loadedOnce: action.initialLoaded,
74     };
75   } else if (action instanceof NoLtpsFoundAction) {
76     state = {
77       ...state,
78       busy: false,
79       error: undefined,
80       loadedOnce: true,
81       distinctLtps: [],
82     };
83   } else if (action instanceof ResetLtpsAction) {
84     state = {
85       ...state,
86       busy: false,
87       error: undefined,
88       loadedOnce: false,
89       distinctLtps: [],
90     };
91   } else {
92     state = {
93       ...state,
94       busy: false,
95     };
96   }
97
98   return state;
99 };