[SDC-29] Amdocs OnBoard 1707 initial commit.
[sdc.git] / openecomp-ui / src / sdc-app / onboarding / licenseModel / overview / VLMListView.jsx
1 /*!
2  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
13  * or implied. See the License for the specific language governing
14  * permissions and limitations under the License.
15  */
16 import React, {Component} from 'react';
17 import {Collapse} from 'react-bootstrap';
18 import LicenseAgreement from './listItems/LicenseAgreement.jsx';
19 import EntitlementPool from './listItems/EntitlementPool.jsx';
20 import FeatureGroup from './listItems/FeatureGroup.jsx';
21 import LicenseKeyGroup from './listItems/LicenseKeyGroup.jsx';
22 import {overviewEditorHeaders} from './LicenseModelOverviewConstants.js';
23
24 class VLMListView extends Component {
25
26         static propTypes = {
27                 licensingDataList: React.PropTypes.array,
28                 showInUse: React.PropTypes.bool
29         };
30
31         state = {
32
33         };
34
35         render() {
36                 let {licensingDataList = []} = this.props;
37                 return (
38                         <div className='vlm-list-view'>
39                                 <div>
40                                         <ul className='vlm-list' data-test-id='vlm-list'>
41                                                 {licensingDataList.map(item => this.renderLicensingItem(item))}
42                                         </ul>
43                                 </div>
44                         </div>
45                 );
46         }
47
48         renderLicensingItem(item) {
49                 switch (item.itemType) {
50                         case overviewEditorHeaders.LICENSE_AGREEMENT :
51                                 return this.renderLicenseAgreementItem(item);
52                         case overviewEditorHeaders.FEATURE_GROUP :
53                                 return this.renderFeatureGroupItem(item);
54                         case overviewEditorHeaders.LICENSE_KEY_GROUP :
55                                 return this.renderLicenseKeyGroupItem(item);
56                         case overviewEditorHeaders.ENTITLEMENT_POOL:
57                                 return this.renderEntitlementPoolItem(item);
58                         default:
59                                 return;
60                 }
61         }
62
63         renderLicenseAgreementItem(licenseAgreement) {
64                 return (
65                         <li  key={licenseAgreement.id}>
66                                 <LicenseAgreement
67                                         laData={licenseAgreement}
68                                         isCollapsed={this.state[licenseAgreement.id]}
69                                         onClick={event => this.updateCollapsable(event, licenseAgreement.id) }/>
70                                 <Collapse in={this.state[licenseAgreement.id]}>
71                                         <ul>
72                                                 {licenseAgreement.children && licenseAgreement.children.map(item => this.renderLicensingItem(item))}
73                                         </ul>
74                                 </Collapse>
75                         </li>
76                 );
77         }
78
79         renderFeatureGroupItem(featureGroup) {
80                 const {showInUse} = this.props;
81                 return (
82                         <li key={featureGroup.id}>
83                                 <FeatureGroup
84                                         fgData={featureGroup}
85                                         isCollapsed={this.state[featureGroup.id]}
86                                         onClick={event=> this.updateCollapsable(event, featureGroup.id) }/>
87                                 {
88                                         showInUse && <Collapse in={this.state[featureGroup.id]}>
89                                         <ul>
90                                                 {featureGroup.children && featureGroup.children.map(item => this.renderLicensingItem(item))}
91
92                                         </ul>
93                                 </Collapse>
94                                 }
95                         </li>
96                 );
97         }
98
99         renderEntitlementPoolItem(entitlementPool) {
100                 return (
101                         <li key={entitlementPool.id}>
102                                 <EntitlementPool epData={entitlementPool}  />
103                         </li>
104                 );
105         }
106
107         renderLicenseKeyGroupItem(licenseKeyGroup) {
108                 return (
109                         <li key={licenseKeyGroup.id}>
110                                 <LicenseKeyGroup lkgData={licenseKeyGroup}  />
111                         </li>
112                 );
113         }
114
115         updateCollapsable(event, id) {
116                 event.stopPropagation();
117                 let obj = {};
118                 obj[id] = !this.state[id];
119                 this.setState(obj);
120         }
121 }
122
123 export default VLMListView;