2 * Copyright © 2016-2018 European Support Limited
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
16 import React from 'react';
17 import PropTypes from 'prop-types';
18 import OnboardingCatalogView from './onboardingCatalog/OnboardingCatalogView.jsx';
19 import WorkspaceView from './workspace/WorkspaceView.jsx';
20 import { tabsMapping } from './OnboardConstants.js';
21 import i18n from 'nfvo-utils/i18n/i18n.js';
22 import classnames from 'classnames';
23 import ExpandableInput from 'nfvo-components/input/ExpandableInput.jsx';
24 import objectValues from 'lodash/values.js';
25 import { catalogItemTypes } from './onboardingCatalog/OnboardingCatalogConstants.js';
26 import NotificationsView from 'sdc-app/onboarding/userNotifications/NotificationsView.jsx';
27 import Filter from 'sdc-app/onboarding/onboard/filter/Filter.jsx';
28 const OnboardHeaderTabs = ({ onTabClick, activeTab }) => (
29 <div className="onboard-header-tabs">
31 className={classnames('onboard-header-tab', {
32 active: activeTab === tabsMapping.WORKSPACE
34 onClick={() => onTabClick(tabsMapping.WORKSPACE)}
35 data-test-id="onboard-workspace-tab">
39 className={classnames('onboard-header-tab', {
40 active: activeTab === tabsMapping.CATALOG
42 onClick={() => onTabClick(tabsMapping.CATALOG)}
43 data-test-id="onboard-onboard-tab">
44 {i18n('ONBOARD CATALOG')}
49 const OnboardHeader = ({ onSearch, activeTab, onTabClick, searchValue }) => (
50 <div className="onboard-header">
51 <OnboardHeaderTabs activeTab={activeTab} onTabClick={onTabClick} />
61 class OnboardView extends React.Component {
63 licenseModelList: PropTypes.array,
64 softwareProductList: PropTypes.array,
65 finalizedLicenseModelList: PropTypes.array,
66 finalizedSoftwareProductList: PropTypes.array,
67 archivedSoftwareProductList: PropTypes.array,
68 archivedLicenseModelList: PropTypes.array,
69 modalToShow: PropTypes.oneOf(objectValues(catalogItemTypes)),
70 onSelectLicenseModel: PropTypes.func.isRequired,
71 onSelectSoftwareProduct: PropTypes.func.isRequired,
72 onAddLicenseModelClick: PropTypes.func.isRequired,
73 onAddSoftwareProductClick: PropTypes.func.isRequired,
74 closeVspOverlay: PropTypes.func.isRequired,
75 onVspOverlayChange: PropTypes.func.isRequired,
76 onTabClick: PropTypes.func.isRequired,
77 onCatalogTabClick: PropTypes.func.isRequired,
78 onSearch: PropTypes.func.isRequired,
79 activeTab: PropTypes.number.isRequired,
80 catalogActiveTab: PropTypes.number.isRequired,
81 searchValue: PropTypes.string.isRequired,
82 onMigrate: PropTypes.func.isRequired
84 renderViewByTab(activeTab) {
86 case tabsMapping.WORKSPACE:
87 return <WorkspaceView {...this.props} />;
88 case tabsMapping.CATALOG:
89 return <OnboardingCatalogView {...this.props} />;
91 return <WorkspaceView {...this.props} />;
96 let { activeTab, onTabClick, onSearch, searchValue } = this.props;
98 <div className="catalog-view">
100 <div className="catalog-parts">
102 activeTab={activeTab}
103 onTabClick={onTabClick}
104 searchValue={searchValue}
105 onSearch={value => onSearch(value)}
107 {this.renderViewByTab(activeTab)}
114 export default OnboardView;