vendor view issues fix 27/70727/2
authorsvishnev <shlomo-stanisla.vishnevetskiy@amdocs.com>
Thu, 18 Oct 2018 11:34:47 +0000 (14:34 +0300)
committerEinav Keidar <einavw@amdocs.com>
Sun, 21 Oct 2018 07:45:10 +0000 (07:45 +0000)
Issue-ID: SDC-1850
Change-Id: I13f39b82ea152399ccd43914c893856bc6063cb1
Signed-off-by: svishnev <shlomo-stanisla.vishnevetskiy@amdocs.com>
openecomp-ui/src/nfvo-components/tree/Tree.jsx
openecomp-ui/src/sdc-app/onboarding/onboard/Onboard.js
openecomp-ui/src/sdc-app/onboarding/onboard/onboardingCatalog/OnboardingCatalogView.jsx
openecomp-ui/src/sdc-app/onboarding/onboard/onboardingCatalog/VSPOverlay.jsx
openecomp-ui/src/sdc-app/onboarding/onboard/onboardingCatalog/VendorCatalogView.jsx
openecomp-ui/src/sdc-app/onboarding/onboard/onboardingCatalog/VendorItem.jsx
openecomp-ui/src/sdc-app/onboarding/onboard/workspace/WorkspaceView.jsx

index 39434fc..1a1ebaf 100644 (file)
@@ -115,7 +115,6 @@ class Tree extends Component {
             this.props.nodes.length !== prevProps.nodes.length ||
             this.props.selectedNodeId !== prevProps.selectedNodeId
         ) {
-            console.log('update');
             this.renderTree();
         }
     }
index ea70f9c..34f9b88 100644 (file)
@@ -23,6 +23,7 @@ import SoftwareProductCreationActionHelper from '../softwareProduct/creation/Sof
 import sortByStringProperty from 'nfvo-utils/sortByStringProperty.js';
 import { tabsMapping } from './onboardingCatalog/OnboardingCatalogConstants.js';
 import { itemStatus } from 'sdc-app/common/helpers/ItemsHelperConstants.js';
+import { catalogItemStatuses } from './onboardingCatalog/OnboardingCatalogConstants.js';
 
 export const mapStateToProps = ({
     onboard: { onboardingCatalog, activeTab, searchValue, filter },
@@ -95,6 +96,7 @@ export const mapStateToProps = ({
     }
 
     return {
+        isArchived: filter.itemStatus === catalogItemStatuses.ARCHIVED,
         finalizedLicenseModelList,
         finalizedSoftwareProductList,
         licenseModelList,
index 86c437d..ec3d455 100644 (file)
@@ -44,44 +44,22 @@ class OnboardingCatalogView extends React.Component {
             selectedVendor,
             searchValue,
             onMigrate,
-            filteredItems
+            filteredItems,
+            isArchived
         } = this.props;
 
         const { vlmList, vspList } = filteredItems;
 
         switch (activeTab) {
             case tabsMapping.ARCHIVE:
-                return (
-                    <DetailsCatalogView
-                        VLMList={vlmList}
-                        VSPList={vspList}
-                        users={users}
-                        onSelectVLM={(item, users) =>
-                            onSelectLicenseModel(
-                                item,
-                                users,
-                                WCTabsMapping.CATALOG
-                            )
-                        }
-                        onSelectVSP={(item, users) =>
-                            onSelectSoftwareProduct(
-                                item,
-                                users,
-                                WCTabsMapping.CATALOG
-                            )
-                        }
-                        filter={searchValue}
-                        onMigrate={onMigrate}
-                    />
-                );
             case tabsMapping.ACTIVE:
                 return (
                     <DetailsCatalogView
                         VLMList={vlmList}
                         VSPList={vspList}
                         users={users}
-                        onAddVLM={onAddLicenseModelClick}
-                        onAddVSP={onAddSoftwareProductClick}
+                        onAddVLM={!isArchived && onAddLicenseModelClick}
+                        onAddVSP={!isArchived && onAddSoftwareProductClick}
                         onSelectVLM={(item, users) =>
                             onSelectLicenseModel(
                                 item,
@@ -100,10 +78,12 @@ class OnboardingCatalogView extends React.Component {
                         onMigrate={onMigrate}
                     />
                 );
+
             case tabsMapping.BY_VENDOR:
             default:
                 return (
                     <VendorCatalogView
+                        isArchived={isArchived}
                         licenseModelList={vlmList}
                         users={users}
                         onAddVSP={onAddSoftwareProductClick}
index c2eb825..fa71f67 100644 (file)
@@ -18,46 +18,63 @@ import PropTypes from 'prop-types';
 import i18n from 'nfvo-utils/i18n/i18n.js';
 import { migrationStatusMapper } from './OnboardingCatalogConstants.js';
 
-const VSPOverlay = ({ VSPList, onSelectVSP, onSeeMore, onMigrate }) => (
-    <div
-        className="vsp-overlay-wrapper"
-        onClick={e => {
-            e.stopPropagation();
-            e.preventDefault();
-        }}>
-        <div className="vsp-overlay-arrow" />
-        <div className="vsp-overlay">
-            <div className="vsp-overlay-title">{i18n('Recently Edited')}</div>
-            <div className="vsp-overlay-list">
-                {VSPList.slice(0, 5).map(vsp => (
-                    <div
-                        key={vsp.id}
-                        className="vsp-overlay-detail"
-                        onClick={() => {
-                            if (
-                                vsp.isOldVersion &&
-                                vsp.isOldVersion ===
-                                    migrationStatusMapper.OLD_VERSION
-                            ) {
-                                onMigrate({
-                                    softwareProduct: vsp
-                                });
-                            } else {
-                                onSelectVSP(vsp);
-                            }
-                        }}>
-                        {i18n(vsp.name)}
+const VspOverlayItem = ({ vsp, onClick }) => {
+    const handleClick = () => onClick(vsp);
+    return (
+        <div key={vsp.id} className="vsp-overlay-detail" onClick={handleClick}>
+            {i18n(vsp.name)}
+        </div>
+    );
+};
+
+VspOverlayItem.propTypes = {
+    vsp: PropTypes.object,
+    onClick: PropTypes.func
+};
+
+const VSPOverlay = ({ VSPList, onSelectVSP, onSeeMore, onMigrate }) => {
+    const handleSelect = vsp => {
+        if (
+            vsp.isOldVersion &&
+            vsp.isOldVersion === migrationStatusMapper.OLD_VERSION
+        ) {
+            onMigrate({
+                softwareProduct: vsp
+            });
+        } else {
+            onSelectVSP(vsp);
+        }
+    };
+    return (
+        <div
+            className="vsp-overlay-wrapper"
+            onClick={e => {
+                e.stopPropagation();
+                e.preventDefault();
+            }}>
+            <div className="vsp-overlay-arrow" />
+            <div className="vsp-overlay">
+                <div className="vsp-overlay-title">
+                    {i18n('Recently Edited')}
+                </div>
+                <div className="vsp-overlay-list">
+                    {VSPList.slice(0, 5).map(vsp => (
+                        <VspOverlayItem
+                            key={vsp.id}
+                            onClick={handleSelect}
+                            vsp={vsp}
+                        />
+                    ))}
+                </div>
+                {VSPList.length > 5 && (
+                    <div className="vsp-overlay-see-more" onClick={onSeeMore}>
+                        {i18n('See More')}
                     </div>
-                ))}
+                )}
             </div>
-            {VSPList.length > 5 && (
-                <div className="vsp-overlay-see-more" onClick={onSeeMore}>
-                    {i18n('See More')}
-                </div>
-            )}
         </div>
-    </div>
-);
+    );
+};
 
 VSPOverlay.PropTypes = {
     VSPList: PropTypes.array,
index 02f8d50..ec45258 100644 (file)
@@ -1,17 +1,17 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * 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
- *
+ * 
+ *      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.
+ * 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 VendorItem from './VendorItem.jsx';
@@ -30,24 +30,27 @@ const VendorList = ({
     onVendorSelect,
     filter,
     onMigrate,
-    users
+    users,
+    isArchived
 }) => {
+    const showAddButtons = !isArchived;
+    const handeleSelectVSP = vsp => onSelectVSP(vsp, users);
+    const handleOnVspButtonClick = (hasVSP, vlm) =>
+        onVspOverlayChange(vlm.id === currentOverlay || !hasVSP ? null : vlm);
+
     return (
-        <CatalogList onAddVLM={onAddVLM} onAddVSP={onAddVSP}>
+        <CatalogList
+            onAddVLM={showAddButtons ? onAddVLM : false}
+            onAddVSP={showAddButtons ? onAddVSP : false}>
             {filterCatalogItemsByType({ items: licenseModelList, filter }).map(
                 vlm => (
                     <VendorItem
                         key={vlm.id}
+                        vlm={vlm}
                         onAddVSP={onAddVSP}
-                        onSelectVSP={vsp => onSelectVSP(vsp, users)}
+                        onSelectVSP={handeleSelectVSP}
                         shouldShowOverlay={currentOverlay === vlm.id}
-                        onVSPButtonClick={hasVSP =>
-                            onVspOverlayChange(
-                                vlm.id === currentOverlay || !hasVSP
-                                    ? null
-                                    : vlm
-                            )
-                        }
+                        onVSPButtonClick={handleOnVspButtonClick}
                         onVendorSelect={onVendorSelect}
                         onMigrate={onMigrate}
                         vendor={vlm}
@@ -66,21 +69,24 @@ const SoftwareProductListByVendor = ({
     onSelectVLM,
     filter,
     onMigrate,
-    users
+    users,
+    isArchived
 }) => {
+    const handleAddVsp = !isArchived
+        ? () => onAddVSP(selectedVendor.id)
+        : false;
+    const handleOnSelect = () => onSelectVLM(selectedVendor, users);
     return (
         <div>
             <CatalogList
-                onAddVSP={() => {
-                    onAddVSP(selectedVendor.id);
-                }}
+                onAddVSP={handleAddVsp}
                 vendorPageOptions={{
                     selectedVendor,
                     onBack: () => onVendorSelect(false)
                 }}>
                 <CatalogItemDetails
                     key={selectedVendor.id}
-                    onSelect={() => onSelectVLM(selectedVendor, users)}
+                    onSelect={handleOnSelect}
                     catalogItemTypeClass={catalogItemTypes.LICENSE_MODEL}
                     onMigrate={onMigrate}
                     catalogItemData={selectedVendor}
index fda47ef..d3e0eb4 100644 (file)
@@ -41,18 +41,15 @@ class VendorItem extends React.Component {
         onAddVSP: PropTypes.func,
         onVSPButtonClick: PropTypes.func
     };
-
+    handleSeeMore = () => {
+        const { onVendorSelect, vendor } = this.props;
+        onVendorSelect(vendor);
+    };
     render() {
-        let {
-            vendor,
-            onSelectVSP,
-            shouldShowOverlay,
-            onVendorSelect,
-            onMigrate
-        } = this.props;
+        let { vendor, onSelectVSP, shouldShowOverlay, onMigrate } = this.props;
         let { softwareProductList = [], name } = vendor;
         return (
-            <Tile iconName="vendor" onClick={() => onVendorSelect(vendor)}>
+            <Tile iconName="vendor" onClick={this.handleSeeMore}>
                 <TileInfo align="center">
                     <TileInfoLine type="title">
                         <TooltipWrapper
@@ -65,7 +62,7 @@ class VendorItem extends React.Component {
                         <Button
                             btnType="secondary"
                             className="venodor-tile-btn"
-                            onClick={e => this.handleVspCountClick(e)}
+                            onClick={this.handleVspCountClick}
                             data-test-id="catalog-vsp-count"
                             disabled={!softwareProductList.length}>
                             {`${softwareProductList.length.toString()} ${i18n(
@@ -80,7 +77,7 @@ class VendorItem extends React.Component {
                                         onMigrate={onMigrate}
                                         VSPList={softwareProductList}
                                         onSelectVSP={onSelectVSP}
-                                        onSeeMore={() => onVendorSelect(vendor)}
+                                        onSeeMore={this.handleSeeMore}
                                     />
                                 </ClickOutsideWrapper>
                             )}
@@ -92,7 +89,7 @@ class VendorItem extends React.Component {
                             btnType="link"
                             color="primary"
                             iconName="plusThin"
-                            onClick={e => this.onCreateVspClick(e)}>
+                            onClick={this.onCreateVspClick}>
                             {i18n('Create new VSP')}
                         </Button>
                     </TileFooterCell>
@@ -101,26 +98,28 @@ class VendorItem extends React.Component {
         );
     }
 
-    onCreateVspClick(e) {
+    onCreateVspClick = e => {
         e.stopPropagation();
         e.preventDefault();
         const { onAddVSP, vendor: { id } } = this.props;
         onAddVSP(id);
-    }
+    };
     handleClickOutside = () => {
-        this.props.onVSPButtonClick(false);
+        const { onVSPButtonClick, vlm } = this.props;
+        onVSPButtonClick(false, vlm);
     };
 
-    handleVspCountClick(e) {
+    handleVspCountClick = e => {
         e.stopPropagation();
         e.preventDefault();
         const {
             onVSPButtonClick,
-            vendor: { softwareProductList }
+            vendor: { softwareProductList },
+            vlm
         } = this.props;
         const hasVSP = Boolean(softwareProductList.length);
-        onVSPButtonClick(hasVSP);
-    }
+        onVSPButtonClick(hasVSP, vlm);
+    };
 }
 
 export default VendorItem;
index bef88df..8cc396f 100644 (file)
@@ -17,7 +17,6 @@ import React from 'react';
 import DetailsCatalogView from '../DetailsCatalogView.jsx';
 import i18n from 'nfvo-utils/i18n/i18n.js';
 import { tabsMapping } from 'sdc-app/onboarding/onboard/OnboardConstants.js';
-import { tabsMapping as catalogTabsMappping } from '../onboardingCatalog/OnboardingCatalogConstants.js';
 
 const WorkspaceView = props => {
     let {
@@ -28,10 +27,13 @@ const WorkspaceView = props => {
         onSelectSoftwareProduct,
         searchValue,
         onMigrate,
-        catalogActiveTab,
-        filteredItems: { vspList, vlmList }
+        filteredItems: { vspList, vlmList },
+        isArchived
     } = props;
-
+    const handleSelectVSP = (item, users) =>
+        onSelectSoftwareProduct(item, users, tabsMapping.WORKSPACE);
+    const handleSelectVLM = (item, users) =>
+        onSelectLicenseModel(item, users, tabsMapping.WORKSPACE);
     return (
         <div className="catalog-wrapper workspace-view">
             <div className="catalog-header workspace-header">
@@ -41,22 +43,10 @@ const WorkspaceView = props => {
                 VLMList={vlmList}
                 VSPList={vspList}
                 users={users}
-                onAddVLM={
-                    catalogActiveTab === catalogTabsMappping.ACTIVE
-                        ? onAddLicenseModelClick
-                        : undefined
-                }
-                onAddVSP={
-                    catalogActiveTab === catalogTabsMappping.ACTIVE
-                        ? onAddSoftwareProductClick
-                        : undefined
-                }
-                onSelectVLM={(item, users) =>
-                    onSelectLicenseModel(item, users, tabsMapping.WORKSPACE)
-                }
-                onSelectVSP={(item, users) =>
-                    onSelectSoftwareProduct(item, users, tabsMapping.WORKSPACE)
-                }
+                onAddVLM={!isArchived ? onAddLicenseModelClick : undefined}
+                onAddVSP={!isArchived ? onAddSoftwareProductClick : undefined}
+                onSelectVLM={handleSelectVLM}
+                onSelectVSP={handleSelectVSP}
                 onMigrate={onMigrate}
                 filter={searchValue}
             />