Merge "fix oauth code"
[ccsdk/features.git] / sdnr / wt-odlux / odlux / apps / configurationApp / src / handlers / viewDescriptionHandler.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
19 import { IActionHandler } from '../../../../framework/src/flux/action';
20
21 import { UpdateViewDescription, UpdateOutputData, UpdateNewData } from '../actions/deviceActions';
22 import { ViewSpecification } from '../models/uiModels';
23
24 export enum DisplayModeType {
25   doNotDisplay = 0,
26   displayAsObject = 1,
27   displayAsList = 2,
28   displayAsRPC = 3,
29   displayAsMessage = 4,
30 }
31
32 export type DisplaySpecification =  {
33   displayMode: DisplayModeType.doNotDisplay;
34 } | {
35   displayMode: DisplayModeType.displayAsObject | DisplayModeType.displayAsList ;
36   viewSpecification: ViewSpecification;
37   keyProperty?: string;
38   apidocPath?: string;
39   dataPath?: string;
40 } | {
41   displayMode: DisplayModeType.displayAsRPC;
42   inputViewSpecification?: ViewSpecification;
43   outputViewSpecification?: ViewSpecification;
44   dataPath?: string;
45 } | {
46   displayMode: DisplayModeType.displayAsMessage;
47   renderMessage: string;
48 };
49
50 export interface IViewDescriptionState {
51   vPath: string | null;
52   displaySpecification: DisplaySpecification;
53   newData?: any;
54   viewData: any;
55   outputData?: any;
56 }
57
58 const viewDescriptionStateInit: IViewDescriptionState = {
59   vPath: null,
60   displaySpecification: {
61     displayMode: DisplayModeType.doNotDisplay,
62   },
63   viewData: null,
64   outputData: undefined,
65 };
66
67 export const viewDescriptionHandler: IActionHandler<IViewDescriptionState> = (state = viewDescriptionStateInit, action) => {
68   if (action instanceof UpdateViewDescription) {
69     state = {
70       ...state,
71       vPath: action.vPath,
72       viewData: action.viewData,
73       outputData: undefined,
74       displaySpecification: action.displaySpecification,
75     };
76   } else if (action instanceof UpdateOutputData) {
77     state = {
78       ...state,
79       outputData: action.outputData,
80     };
81   } else if (action instanceof UpdateNewData) {
82     state = {
83       ...state,
84       newData: action.newData,
85     };
86   }
87   return state;
88 };