| /* |
| * Copyright © 2016-2018 European Support Limited |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| import React from 'react'; |
| import PropTypes from 'prop-types'; |
| import OnboardingCatalogView from './onboardingCatalog/OnboardingCatalogView.jsx'; |
| import WorkspaceView from './workspace/WorkspaceView.jsx'; |
| import {tabsMapping} from './OnboardConstants.js'; |
| import i18n from 'nfvo-utils/i18n/i18n.js'; |
| import classnames from 'classnames'; |
| import ExpandableInput from 'nfvo-components/input/ExpandableInput.jsx'; |
| import objectValues from 'lodash/values.js'; |
| import {catalogItemTypes} from './onboardingCatalog/OnboardingCatalogConstants.js'; |
| import NotificationsView from 'sdc-app/onboarding/userNotifications/NotificationsView.jsx'; |
| import Filter from 'sdc-app/onboarding/onboard/filter/Filter.jsx'; |
| |
| const OnboardHeaderTabs = ({onTabClick, activeTab}) => ( |
| <div className='onboard-header-tabs'> |
| <div |
| className={classnames('onboard-header-tab', {'active': activeTab === tabsMapping.WORKSPACE })} |
| onClick={() => onTabClick(tabsMapping.WORKSPACE)} |
| data-test-id='onboard-workspace-tab'> |
| {i18n('WORKSPACE')} |
| </div> |
| <div |
| className={classnames('onboard-header-tab', {'active': activeTab === tabsMapping.CATALOG })} |
| onClick={() => onTabClick(tabsMapping.CATALOG)} |
| data-test-id='onboard-onboard-tab'> |
| {i18n('ONBOARD CATALOG')} |
| </div> |
| </div> |
| ); |
| |
| const OnboardHeader = ({onSearch, activeTab, onTabClick, searchValue}) => ( |
| <div className='onboard-header'> |
| <OnboardHeaderTabs activeTab={activeTab} onTabClick={onTabClick} /> |
| <ExpandableInput |
| onChange={onSearch} |
| iconType='search' |
| value={searchValue}/> |
| <NotificationsView /> |
| </div> |
| ); |
| |
| class OnboardView extends React.Component { |
| static propTypes = { |
| licenseModelList: PropTypes.array, |
| softwareProductList: PropTypes.array, |
| finalizedLicenseModelList: PropTypes.array, |
| finalizedSoftwareProductList: PropTypes.array, |
| archivedSoftwareProductList: PropTypes.array, |
| archivedLicenseModelList: PropTypes.array, |
| modalToShow: PropTypes.oneOf(objectValues(catalogItemTypes)), |
| onSelectLicenseModel: PropTypes.func.isRequired, |
| onSelectSoftwareProduct: PropTypes.func.isRequired, |
| onAddLicenseModelClick: PropTypes.func.isRequired, |
| onAddSoftwareProductClick: PropTypes.func.isRequired, |
| closeVspOverlay: PropTypes.func.isRequired, |
| onVspOverlayChange: PropTypes.func.isRequired, |
| onTabClick: PropTypes.func.isRequired, |
| onCatalogTabClick: PropTypes.func.isRequired, |
| onSearch: PropTypes.func.isRequired, |
| activeTab: PropTypes.number.isRequired, |
| catalogActiveTab: PropTypes.number.isRequired, |
| searchValue: PropTypes.string.isRequired, |
| onMigrate: PropTypes.func.isRequired, |
| }; |
| renderViewByTab(activeTab){ |
| switch (activeTab){ |
| case tabsMapping.WORKSPACE: |
| return <WorkspaceView {...this.props} />; |
| case tabsMapping.CATALOG: |
| return <OnboardingCatalogView {...this.props} />; |
| default: |
| return <WorkspaceView {...this.props} />; |
| } |
| } |
| |
| render() { |
| let {activeTab, onTabClick, onSearch, searchValue} = this.props; |
| return ( |
| <div className='catalog-view'> |
| <Filter/> |
| <div className='catalog-parts'> |
| <OnboardHeader activeTab={activeTab} onTabClick={onTabClick} searchValue={searchValue} onSearch={value => onSearch(value)}/> |
| {this.renderViewByTab(activeTab)} |
| </div> |
| </div> |
| ); |
| } |
| } |
| |
| export default OnboardView; |