/* * 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 i18n from 'nfvo-utils/i18n/i18n.js'; import classnames from 'classnames'; import DetailsCatalogView from 'sdc-app/onboarding/onboard/DetailsCatalogView.jsx'; import VendorCatalogView from './VendorCatalogView.jsx'; import { tabsMapping } from './OnboardingCatalogConstants.js'; import { tabsMapping as WCTabsMapping } from 'sdc-app/onboarding/onboard/OnboardConstants.js'; import featureToggle from 'sdc-app/features/featureToggle.js'; import { featureToggleNames } from 'sdc-app/features/FeaturesConstants.js'; const Separator = () =>
; const Tab = ({ onTabPress, title, dataTestId, activeTab, tabMapping }) => (
onTabPress(tabMapping)} data-test-id={dataTestId}> {title}
); const ArchiveTab = featureToggle(featureToggleNames.ARCHIVE_ITEM)(Tab); const ArchiveTabSeparator = featureToggle(featureToggleNames.ARCHIVE_ITEM)( Separator ); const CatalogHeaderTabs = props => (
); const CatalogHeader = ({ activeTab, onTabPress }) => (
); const FilterCatalogHeader = () => (
{i18n('ONBOARD CATALOG')}
); const FeaturedCatalogHeader = featureToggle(featureToggleNames.FILTER)({ OnComp: FilterCatalogHeader, OffComp: CatalogHeader }); class OnboardingCatalogView extends React.Component { renderViewByTab(activeTab) { const { finalizedLicenseModelList: licenseModelList, fullLicenseModelList, users, vspOverlay, finalizedSoftwareProductList: softwareProductList, onSelectLicenseModel, onSelectSoftwareProduct, onAddLicenseModelClick, onAddSoftwareProductClick, onVspOverlayChange, onVendorSelect, selectedVendor, searchValue, onMigrate, archivedSoftwareProductList, archivedLicenseModelList } = this.props; switch (activeTab) { case tabsMapping.ARCHIVE: return ( onSelectLicenseModel( item, users, WCTabsMapping.CATALOG ) } onSelectVSP={(item, users) => onSelectSoftwareProduct( item, users, WCTabsMapping.CATALOG ) } filter={searchValue} onMigrate={onMigrate} /> ); case tabsMapping.ACTIVE: return ( onSelectLicenseModel( item, users, WCTabsMapping.CATALOG ) } onSelectVSP={(item, users) => onSelectSoftwareProduct( item, users, WCTabsMapping.CATALOG ) } filter={searchValue} onMigrate={onMigrate} /> ); case tabsMapping.BY_VENDOR: default: return ( onSelectSoftwareProduct( item, users, WCTabsMapping.CATALOG ) } onSelectVLM={(item, users) => onSelectLicenseModel( item, users, WCTabsMapping.CATALOG ) } vspOverlay={vspOverlay} onVendorSelect={onVendorSelect} selectedVendor={selectedVendor} onVspOverlayChange={onVspOverlayChange} onMigrate={onMigrate} filter={searchValue} /> ); } } render() { const { selectedVendor, catalogActiveTab: activeTab, onCatalogTabClick, onSearch, searchValue } = this.props; return (
{!selectedVendor && ( onSearch(event.target.value)} activeTab={activeTab} onTabPress={tab => onCatalogTabClick(tab)} searchValue={searchValue} /> )} {this.renderViewByTab(activeTab)}
); } } export default OnboardingCatalogView;