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 } 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   viewData: any;
54   outputData?: any;
55 }
56
57 const viewDescriptionStateInit: IViewDescriptionState = {
58   vPath: null,
59   displaySpecification: {
60     displayMode: DisplayModeType.doNotDisplay,
61   },
62   viewData: null,
63   outputData: undefined,
64 };
65
66 export const viewDescriptionHandler: IActionHandler<IViewDescriptionState> = (state = viewDescriptionStateInit, action) => {
67   if (action instanceof UpdateViewDescription) {
68     state = {
69       ...state,
70       vPath: action.vPath,
71       viewData: action.viewData,
72       outputData: undefined,
73       displaySpecification: action.displaySpecification,
74     };
75   } else if (action instanceof UpdateOutputData) {
76     state = {
77       ...state,
78       outputData: action.outputData,
79     };
80   }
81   return state;
82 };