chache result in onboarding
[sdc.git] / openecomp-ui / src / sdc-app / onboarding / onboard / onboardingCatalog / VendorCatalogView.jsx
1 /*
2  * Copyright © 2016-2018 European Support Limited
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 or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 import React from 'react';
17 import VendorItem from './VendorItem.jsx';
18 import CatalogList from '../CatalogList.jsx';
19 import CatalogItemDetails from '../CatalogItemDetails.jsx';
20 import { catalogItemTypes } from './OnboardingCatalogConstants.js';
21 import { filterCatalogItemsByType } from './OnboardingCatalogUtils.js';
22
23 const VendorList = ({
24     onAddVLM,
25     onAddVSP,
26     onSelectVSP,
27     licenseModelList = [],
28     vspOverlay: currentOverlay,
29     onVspOverlayChange,
30     onVendorSelect,
31     filter,
32     onMigrate,
33     users,
34     isArchived,
35     activeTabName
36 }) => {
37     const showAddButtons = !isArchived;
38     const handeleSelectVSP = vsp => onSelectVSP(vsp, users);
39     const handleOnVspButtonClick = (hasVSP, vlm) =>
40         onVspOverlayChange(vlm.id === currentOverlay || !hasVSP ? null : vlm);
41
42     return (
43         <CatalogList
44             onAddVLM={showAddButtons ? onAddVLM : false}
45             onAddVSP={showAddButtons ? onAddVSP : false}>
46             {filterCatalogItemsByType({
47                 items: licenseModelList,
48                 filter: filter[activeTabName]
49             }).map(vlm => (
50                 <VendorItem
51                     key={vlm.id}
52                     vlm={vlm}
53                     onAddVSP={onAddVSP}
54                     onSelectVSP={handeleSelectVSP}
55                     shouldShowOverlay={currentOverlay === vlm.id}
56                     onVSPButtonClick={handleOnVspButtonClick}
57                     onVendorSelect={onVendorSelect}
58                     onMigrate={onMigrate}
59                     vendor={vlm}
60                 />
61             ))}
62         </CatalogList>
63     );
64 };
65
66 const SoftwareProductListByVendor = ({
67     onAddVSP,
68     selectedVendor,
69     onVendorSelect,
70     onSelectVSP,
71     onSelectVLM,
72     filter,
73     onMigrate,
74     users,
75     isArchived,
76     activeTabName
77 }) => {
78     const handleAddVsp = !isArchived
79         ? () => onAddVSP(selectedVendor.id)
80         : false;
81     const handleOnSelect = () => onSelectVLM(selectedVendor, users);
82     return (
83         <div>
84             <CatalogList
85                 onAddVSP={handleAddVsp}
86                 vendorPageOptions={{
87                     selectedVendor,
88                     onBack: () => onVendorSelect(false)
89                 }}>
90                 <CatalogItemDetails
91                     key={selectedVendor.id}
92                     onSelect={handleOnSelect}
93                     catalogItemTypeClass={catalogItemTypes.LICENSE_MODEL}
94                     onMigrate={onMigrate}
95                     catalogItemData={selectedVendor}
96                 />
97                 {filterCatalogItemsByType({
98                     items: selectedVendor.softwareProductList,
99                     filter: filter[activeTabName]
100                 }).map(vsp => (
101                     <CatalogItemDetails
102                         key={vsp.id}
103                         catalogItemTypeClass={catalogItemTypes.SOFTWARE_PRODUCT}
104                         onMigrate={onMigrate}
105                         onSelect={() => onSelectVSP(vsp, users)}
106                         catalogItemData={vsp}
107                     />
108                 ))}
109             </CatalogList>
110         </div>
111     );
112 };
113
114 class VendorCatalogView extends React.Component {
115     componentDidMount() {
116         const { onVendorSelect } = this.props;
117         onVendorSelect(false);
118     }
119     render() {
120         let { selectedVendor } = this.props;
121         return selectedVendor ? (
122             <SoftwareProductListByVendor {...this.props} />
123         ) : (
124             <VendorList {...this.props} />
125         );
126     }
127 }
128
129 export default VendorCatalogView;