archive fix & archive/filter toggle removed 01/55601/3
authorsvishnev <shlomo-stanisla.vishnevetskiy@amdocs.com>
Mon, 2 Jul 2018 11:05:17 +0000 (14:05 +0300)
committerEinav Keidar <einavw@amdocs.com>
Tue, 3 Jul 2018 07:44:48 +0000 (07:44 +0000)
Issue-ID: SDC-1383
Change-Id: I38548e5e0b5cce224e0d1324a97f9edce6dc0cfb
Signed-off-by: svishnev <shlomo-stanisla.vishnevetskiy@amdocs.com>
18 files changed:
openecomp-ui/package.json
openecomp-ui/src/nfvo-utils/i18n/en.json
openecomp-ui/src/sdc-app/onboarding/licenseModel/creation/LicenseModelCreation.js
openecomp-ui/src/sdc-app/onboarding/licenseModel/creation/LicenseModelCreationView.jsx
openecomp-ui/src/sdc-app/onboarding/licenseModel/creation/LicenseModelCreationViewWithFilter.jsx [deleted file]
openecomp-ui/src/sdc-app/onboarding/onboard/OnboardView.jsx
openecomp-ui/src/sdc-app/onboarding/onboard/filter/Filter.jsx
openecomp-ui/src/sdc-app/onboarding/onboard/onboardingCatalog/OnboardingCatalogView.jsx
openecomp-ui/src/sdc-app/onboarding/onboard/onboardingCatalog/OnboardingCatalogViewWithFilter.jsx [deleted file]
openecomp-ui/src/sdc-app/onboarding/onboard/onboardingCatalog/VendorItem.jsx
openecomp-ui/src/sdc-app/onboarding/onboard/workspace/WorkspaceView.jsx
openecomp-ui/src/sdc-app/onboarding/onboard/workspace/WorkspaceViewWithFilter.jsx [deleted file]
openecomp-ui/src/sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreation.js
openecomp-ui/src/sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreationView.jsx
openecomp-ui/src/sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreationViewWithFilter.jsx [deleted file]
openecomp-ui/src/sdc-app/onboarding/versionsPage/VersionsPage.jsx
openecomp-ui/test/onboard/filter/filterView.test.js
openecomp-ui/yarn.lock

index 8bab189..2b060f2 100644 (file)
@@ -50,7 +50,7 @@
         "react-sortable": "^1.2.0",
         "react-transition-group": "^2.3.1",
         "redux": "^3.7.2",
-        "sdc-ui": "1.6.46",
+        "sdc-ui": "1.6.53",
         "uuid-js": "^0.7.5",
         "validator": "^4.3.0"
     },
index ce6f7ea..b241489 100644 (file)
   "Archive item": "Archive item",
   "Item successfully Archived": "Item successfully Archived",
   "Item successfully Restored": "Item successfully Restored",
+  "VSPs": "VSPs",
   
   "VendorSoftwareProduct": "VSP",
   "VendorSoftwareProduct/category": "Category",
index c6a0702..94eef11 100644 (file)
  * limitations under the License.
  */
 import { connect } from 'react-redux';
-import featureToggle from 'sdc-app/features/featureToggle.js';
-import { featureToggleNames } from 'sdc-app/features/FeaturesConstants.js';
 import LicenseModelCreationActionHelper from './LicenseModelCreationActionHelper.js';
 import LicenseModelCreationView from './LicenseModelCreationView.jsx';
-import LicenseModelCreationViewWithFilter from './LicenseModelCreationViewWithFilter.jsx';
 
 import ValidationHelper from 'sdc-app/common/helpers/ValidationHelper.js';
 import LicenseModelActionHelper from 'sdc-app/onboarding/licenseModel/LicenseModelActionHelper.js';
@@ -31,13 +28,6 @@ import UniqueTypesHelper from 'sdc-app/common/helpers/UniqueTypesHelper.js';
 import i18n from 'nfvo-utils/i18n/i18n.js';
 import { itemType } from 'sdc-app/common/helpers/ItemsHelperConstants.js';
 
-const ToggledLicenseModelCreationView = featureToggle(
-    featureToggleNames.FILTER
-)({
-    OnComp: LicenseModelCreationViewWithFilter,
-    OffComp: LicenseModelCreationView
-});
-
 export const mapStateToProps = ({
     users: { usersList },
     licenseModelList,
@@ -118,5 +108,5 @@ export const mapActionsToProps = dispatch => {
 };
 
 export default connect(mapStateToProps, mapActionsToProps)(
-    ToggledLicenseModelCreationView
+    LicenseModelCreationView
 );
index 59c4152..8c5d966 100644 (file)
@@ -1,22 +1,21 @@
-/*!
- * 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 PropTypes from 'prop-types';
 import i18n from 'nfvo-utils/i18n/i18n.js';
-import Validator from 'nfvo-utils/Validator.js';
 import Input from 'nfvo-components/input/validation/Input.jsx';
 import Form from 'nfvo-components/input/validation/Form.jsx';
 import { LICENSE_MODEL_CREATION_FORM_NAME } from './LicenseModelCreationConstants.js';
@@ -61,13 +60,12 @@ class LicenseModelCreationView extends React.Component {
                             onChange={vendorName =>
                                 onDataChanged(
                                     { vendorName },
-                                    LICENSE_MODEL_CREATION_FORM_NAME,
-                                    {
-                                        vendorName: name =>
-                                            this.validateName(name)
-                                    }
+                                    LICENSE_MODEL_CREATION_FORM_NAME
                                 )
                             }
+                            onBlur={e =>
+                                this.validateIsNameUnique(e.target.value)
+                            }
                             isValid={genericFieldInfo.vendorName.isValid}
                             errorText={genericFieldInfo.vendorName.errorText}
                             type="text"
@@ -102,24 +100,12 @@ class LicenseModelCreationView extends React.Component {
         this.props.onSubmit(licenseModel, usersList);
     }
 
-    validateName(value) {
-        const { data: { id }, VLMNames } = this.props;
-        const isExists = Validator.isItemNameAlreadyExistsInList({
-            itemId: id,
-            itemName: value,
-            list: VLMNames
-        });
-
-        return !isExists
-            ? { isValid: true, errorText: '' }
-            : {
-                  isValid: false,
-                  errorText: i18n(
-                      "License model by the name '" +
-                          value +
-                          "' already exists. License model name must be unique"
-                  )
-              };
+    validateIsNameUnique(value) {
+        this.props.isNameUnique(
+            value,
+            'vendorName',
+            LICENSE_MODEL_CREATION_FORM_NAME
+        );
     }
 
     validate() {
diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/creation/LicenseModelCreationViewWithFilter.jsx b/openecomp-ui/src/sdc-app/onboarding/licenseModel/creation/LicenseModelCreationViewWithFilter.jsx
deleted file mode 100644 (file)
index 8c5d966..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * 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 i18n from 'nfvo-utils/i18n/i18n.js';
-import Input from 'nfvo-components/input/validation/Input.jsx';
-import Form from 'nfvo-components/input/validation/Form.jsx';
-import { LICENSE_MODEL_CREATION_FORM_NAME } from './LicenseModelCreationConstants.js';
-
-const LicenseModelPropType = PropTypes.shape({
-    id: PropTypes.string,
-    vendorName: PropTypes.string,
-    description: PropTypes.string
-});
-
-class LicenseModelCreationView extends React.Component {
-    static propTypes = {
-        data: LicenseModelPropType,
-        VLMNames: PropTypes.object,
-        usersList: PropTypes.array,
-        onDataChanged: PropTypes.func.isRequired,
-        onSubmit: PropTypes.func.isRequired,
-        onValidateForm: PropTypes.func.isRequired,
-        onCancel: PropTypes.func.isRequired
-    };
-
-    render() {
-        let { data = {}, onDataChanged, genericFieldInfo } = this.props;
-        let { vendorName, description } = data;
-        return (
-            <div>
-                {genericFieldInfo && (
-                    <Form
-                        ref="validationForm"
-                        hasButtons={true}
-                        onSubmit={() => this.submit()}
-                        submitButtonText={i18n('Create')}
-                        onReset={() => this.props.onCancel()}
-                        labledButtons={true}
-                        isValid={this.props.isFormValid}
-                        formReady={this.props.formReady}
-                        onValidateForm={() => this.validate()}>
-                        <Input
-                            value={vendorName}
-                            label={i18n('Vendor Name')}
-                            data-test-id="vendor-name"
-                            onChange={vendorName =>
-                                onDataChanged(
-                                    { vendorName },
-                                    LICENSE_MODEL_CREATION_FORM_NAME
-                                )
-                            }
-                            onBlur={e =>
-                                this.validateIsNameUnique(e.target.value)
-                            }
-                            isValid={genericFieldInfo.vendorName.isValid}
-                            errorText={genericFieldInfo.vendorName.errorText}
-                            type="text"
-                            isRequired={true}
-                            className="field-section"
-                        />
-                        <Input
-                            isRequired={true}
-                            value={description}
-                            label={i18n('Description')}
-                            data-test-id="vendor-description"
-                            overlayPos="bottom"
-                            onChange={description =>
-                                onDataChanged(
-                                    { description },
-                                    LICENSE_MODEL_CREATION_FORM_NAME
-                                )
-                            }
-                            isValid={genericFieldInfo.description.isValid}
-                            errorText={genericFieldInfo.description.errorText}
-                            type="textarea"
-                            className="field-section"
-                        />
-                    </Form>
-                )}
-            </div>
-        );
-    }
-
-    submit() {
-        const { data: licenseModel, usersList } = this.props;
-        this.props.onSubmit(licenseModel, usersList);
-    }
-
-    validateIsNameUnique(value) {
-        this.props.isNameUnique(
-            value,
-            'vendorName',
-            LICENSE_MODEL_CREATION_FORM_NAME
-        );
-    }
-
-    validate() {
-        this.props.onValidateForm(LICENSE_MODEL_CREATION_FORM_NAME);
-    }
-}
-
-export default LicenseModelCreationView;
index 0fc64b3..c5cf292 100644 (file)
@@ -16,9 +16,7 @@
 import React from 'react';
 import PropTypes from 'prop-types';
 import OnboardingCatalogView from './onboardingCatalog/OnboardingCatalogView.jsx';
-import OnboardingCatalogViewWithFilter from './onboardingCatalog/OnboardingCatalogViewWithFilter.jsx';
 import WorkspaceView from './workspace/WorkspaceView.jsx';
-import WorkspaceViewWithFilter from './workspace/WorkspaceViewWithFilter.jsx';
 import { tabsMapping } from './OnboardConstants.js';
 import i18n from 'nfvo-utils/i18n/i18n.js';
 import classnames from 'classnames';
@@ -27,8 +25,6 @@ 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';
-import featureToggle from 'sdc-app/features/featureToggle.js';
-import { featureToggleNames } from 'sdc-app/features/FeaturesConstants.js';
 const OnboardHeaderTabs = ({ onTabClick, activeTab }) => (
     <div className="onboard-header-tabs">
         <div
@@ -50,16 +46,6 @@ const OnboardHeaderTabs = ({ onTabClick, activeTab }) => (
     </div>
 );
 
-const ToggledOnboardingCatalogView = featureToggle(featureToggleNames.FILTER)({
-    OnComp: OnboardingCatalogViewWithFilter,
-    OffComp: OnboardingCatalogView
-});
-
-const ToggledWorkspaceView = featureToggle(featureToggleNames.FILTER)({
-    OnComp: WorkspaceViewWithFilter,
-    OffComp: WorkspaceView
-});
-
 const OnboardHeader = ({ onSearch, activeTab, onTabClick, searchValue }) => (
     <div className="onboard-header">
         <OnboardHeaderTabs activeTab={activeTab} onTabClick={onTabClick} />
@@ -98,11 +84,11 @@ class OnboardView extends React.Component {
     renderViewByTab(activeTab) {
         switch (activeTab) {
             case tabsMapping.WORKSPACE:
-                return <ToggledWorkspaceView {...this.props} />;
+                return <WorkspaceView {...this.props} />;
             case tabsMapping.CATALOG:
-                return <ToggledOnboardingCatalogView {...this.props} />;
+                return <OnboardingCatalogView {...this.props} />;
             default:
-                return <ToggledWorkspaceView {...this.props} />;
+                return <WorkspaceView {...this.props} />;
         }
     }
 
index a00357c..dadbbfd 100644 (file)
@@ -17,8 +17,6 @@
 import { connect } from 'react-redux';
 import React from 'react';
 import PropTypes from 'prop-types';
-import featureToggle from 'sdc-app/features/featureToggle.js';
-import { featureToggleNames } from 'sdc-app/features/FeaturesConstants.js';
 import { tabsMapping as onboardTabsMapping } from '../OnboardConstants.js';
 import { actionTypes } from './FilterConstants.js';
 
@@ -69,10 +67,4 @@ Filter.PropTypes = {
     activeTab: PropTypes.number
 };
 
-export default featureToggle(featureToggleNames.FILTER)(
-    connect(mapStateToProps, mapActionsToProps)(Filter)
-);
-
-export const ConnectedFilter = connect(mapStateToProps, mapActionsToProps)(
-    Filter
-);
+export default connect(mapStateToProps, mapActionsToProps)(Filter);
index a416d36..86c437d 100644 (file)
  */
 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 = () => <div className="tab-separator" />;
-
-const Tab = ({ onTabPress, title, dataTestId, activeTab, tabMapping }) => (
-    <div
-        className={classnames('catalog-header-tab', {
-            active: activeTab === tabMapping
-        })}
-        onClick={() => onTabPress(tabMapping)}
-        data-test-id={dataTestId}>
-        {title}
-    </div>
-);
-
-const ArchiveTab = featureToggle(featureToggleNames.ARCHIVE_ITEM)(Tab);
-const ArchiveTabSeparator = featureToggle(featureToggleNames.ARCHIVE_ITEM)(
-    Separator
-);
-
-const CatalogHeaderTabs = props => (
-    <div className="catalog-header-tabs">
-        <Tab
-            {...props}
-            title={i18n('ACTIVE')}
-            dataTestId="catalog-all-tab"
-            tabMapping={tabsMapping.ACTIVE}
-        />
-        <Separator />
-        <Tab
-            {...props}
-            title={i18n('BY VENDOR')}
-            dataTestId="catalog-header-tab"
-            tabMapping={tabsMapping.BY_VENDOR}
-        />
-        <ArchiveTabSeparator />
-        <ArchiveTab
-            {...props}
-            title={i18n('ARCHIVE')}
-            dataTestId="catalog-archive-tab"
-            tabMapping={tabsMapping.ARCHIVE}
-        />
-    </div>
-);
-
-const CatalogHeader = ({ activeTab, onTabPress }) => (
-    <div className="catalog-header">
-        <CatalogHeaderTabs activeTab={activeTab} onTabPress={onTabPress} />
-    </div>
-);
-
-const FilterCatalogHeader = () => (
+const CatalogHeader = () => (
     <div className="catalog-header">
         <div className="catalog-header-tabs">
             <div className="catalog-header-tab active">
@@ -82,19 +30,11 @@ const FilterCatalogHeader = () => (
     </div>
 );
 
-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,
@@ -104,16 +44,17 @@ class OnboardingCatalogView extends React.Component {
             selectedVendor,
             searchValue,
             onMigrate,
-            archivedSoftwareProductList,
-            archivedLicenseModelList
+            filteredItems
         } = this.props;
 
+        const { vlmList, vspList } = filteredItems;
+
         switch (activeTab) {
             case tabsMapping.ARCHIVE:
                 return (
                     <DetailsCatalogView
-                        VLMList={archivedLicenseModelList}
-                        VSPList={archivedSoftwareProductList}
+                        VLMList={vlmList}
+                        VSPList={vspList}
                         users={users}
                         onSelectVLM={(item, users) =>
                             onSelectLicenseModel(
@@ -136,8 +77,8 @@ class OnboardingCatalogView extends React.Component {
             case tabsMapping.ACTIVE:
                 return (
                     <DetailsCatalogView
-                        VLMList={licenseModelList}
-                        VSPList={softwareProductList}
+                        VLMList={vlmList}
+                        VSPList={vspList}
                         users={users}
                         onAddVLM={onAddLicenseModelClick}
                         onAddVSP={onAddSoftwareProductClick}
@@ -163,7 +104,7 @@ class OnboardingCatalogView extends React.Component {
             default:
                 return (
                     <VendorCatalogView
-                        licenseModelList={fullLicenseModelList}
+                        licenseModelList={vlmList}
                         users={users}
                         onAddVSP={onAddSoftwareProductClick}
                         onAddVLM={onAddLicenseModelClick}
@@ -193,23 +134,10 @@ class OnboardingCatalogView extends React.Component {
     }
 
     render() {
-        const {
-            selectedVendor,
-            catalogActiveTab: activeTab,
-            onCatalogTabClick,
-            onSearch,
-            searchValue
-        } = this.props;
+        const { selectedVendor, catalogActiveTab: activeTab } = this.props;
         return (
             <div className="catalog-wrapper">
-                {!selectedVendor && (
-                    <FeaturedCatalogHeader
-                        onSearch={event => onSearch(event.target.value)}
-                        activeTab={activeTab}
-                        onTabPress={tab => onCatalogTabClick(tab)}
-                        searchValue={searchValue}
-                    />
-                )}
+                {!selectedVendor && <CatalogHeader />}
                 {this.renderViewByTab(activeTab)}
             </div>
         );
diff --git a/openecomp-ui/src/sdc-app/onboarding/onboard/onboardingCatalog/OnboardingCatalogViewWithFilter.jsx b/openecomp-ui/src/sdc-app/onboarding/onboard/onboardingCatalog/OnboardingCatalogViewWithFilter.jsx
deleted file mode 100644 (file)
index 86c437d..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * 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 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';
-
-const CatalogHeader = () => (
-    <div className="catalog-header">
-        <div className="catalog-header-tabs">
-            <div className="catalog-header-tab active">
-                {i18n('ONBOARD CATALOG')}
-            </div>
-        </div>
-    </div>
-);
-
-class OnboardingCatalogView extends React.Component {
-    renderViewByTab(activeTab) {
-        const {
-            users,
-            vspOverlay,
-            onSelectLicenseModel,
-            onSelectSoftwareProduct,
-            onAddLicenseModelClick,
-            onAddSoftwareProductClick,
-            onVspOverlayChange,
-            onVendorSelect,
-            selectedVendor,
-            searchValue,
-            onMigrate,
-            filteredItems
-        } = 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}
-                        onSelectVLM={(item, users) =>
-                            onSelectLicenseModel(
-                                item,
-                                users,
-                                WCTabsMapping.CATALOG
-                            )
-                        }
-                        onSelectVSP={(item, users) =>
-                            onSelectSoftwareProduct(
-                                item,
-                                users,
-                                WCTabsMapping.CATALOG
-                            )
-                        }
-                        filter={searchValue}
-                        onMigrate={onMigrate}
-                    />
-                );
-            case tabsMapping.BY_VENDOR:
-            default:
-                return (
-                    <VendorCatalogView
-                        licenseModelList={vlmList}
-                        users={users}
-                        onAddVSP={onAddSoftwareProductClick}
-                        onAddVLM={onAddLicenseModelClick}
-                        onSelectVSP={(item, users) =>
-                            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 } = this.props;
-        return (
-            <div className="catalog-wrapper">
-                {!selectedVendor && <CatalogHeader />}
-                {this.renderViewByTab(activeTab)}
-            </div>
-        );
-    }
-}
-
-export default OnboardingCatalogView;
index aec8e9b..fda47ef 100644 (file)
@@ -68,9 +68,9 @@ class VendorItem extends React.Component {
                             onClick={e => this.handleVspCountClick(e)}
                             data-test-id="catalog-vsp-count"
                             disabled={!softwareProductList.length}>
-                            {i18n('{length} VSPs', {
-                                length: softwareProductList.length
-                            })}
+                            {`${softwareProductList.length.toString()} ${i18n(
+                                'VSPs'
+                            )}`}
                         </Button>
                         {shouldShowOverlay &&
                             softwareProductList.length > 0 && (
index 2f17867..bef88df 100644 (file)
@@ -1,34 +1,35 @@
-/*!
- * 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 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 {
-        licenseModelList,
-        softwareProductList,
         onAddLicenseModelClick,
         users,
         onAddSoftwareProductClick,
         onSelectLicenseModel,
         onSelectSoftwareProduct,
         searchValue,
-        onMigrate
+        onMigrate,
+        catalogActiveTab,
+        filteredItems: { vspList, vlmList }
     } = props;
 
     return (
@@ -37,11 +38,19 @@ const WorkspaceView = props => {
                 {i18n('WORKSPACE')}
             </div>
             <DetailsCatalogView
-                VLMList={licenseModelList}
-                VSPList={softwareProductList}
+                VLMList={vlmList}
+                VSPList={vspList}
                 users={users}
-                onAddVLM={onAddLicenseModelClick}
-                onAddVSP={onAddSoftwareProductClick}
+                onAddVLM={
+                    catalogActiveTab === catalogTabsMappping.ACTIVE
+                        ? onAddLicenseModelClick
+                        : undefined
+                }
+                onAddVSP={
+                    catalogActiveTab === catalogTabsMappping.ACTIVE
+                        ? onAddSoftwareProductClick
+                        : undefined
+                }
                 onSelectVLM={(item, users) =>
                     onSelectLicenseModel(item, users, tabsMapping.WORKSPACE)
                 }
diff --git a/openecomp-ui/src/sdc-app/onboarding/onboard/workspace/WorkspaceViewWithFilter.jsx b/openecomp-ui/src/sdc-app/onboarding/onboard/workspace/WorkspaceViewWithFilter.jsx
deleted file mode 100644 (file)
index bef88df..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * 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 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 {
-        onAddLicenseModelClick,
-        users,
-        onAddSoftwareProductClick,
-        onSelectLicenseModel,
-        onSelectSoftwareProduct,
-        searchValue,
-        onMigrate,
-        catalogActiveTab,
-        filteredItems: { vspList, vlmList }
-    } = props;
-
-    return (
-        <div className="catalog-wrapper workspace-view">
-            <div className="catalog-header workspace-header">
-                {i18n('WORKSPACE')}
-            </div>
-            <DetailsCatalogView
-                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)
-                }
-                onMigrate={onMigrate}
-                filter={searchValue}
-            />
-        </div>
-    );
-};
-
-export default WorkspaceView;
index 9a7d257..539bc12 100644 (file)
  * permissions and limitations under the License.
  */
 import { connect } from 'react-redux';
-import featureToggle from 'sdc-app/features/featureToggle.js';
-import { featureToggleNames } from 'sdc-app/features/FeaturesConstants.js';
 import SoftwareProductCreationActionHelper from './SoftwareProductCreationActionHelper.js';
 import SoftwareProductCreationView from './SoftwareProductCreationView.jsx';
-import SoftwareProductCreationViewWithFilter from './SoftwareProductCreationViewWithFilter.jsx';
 import ValidationHelper from 'sdc-app/common/helpers/ValidationHelper.js';
 import SoftwareProductActionHelper from '../SoftwareProductActionHelper.js';
 import VersionsPageActionHelper from 'sdc-app/onboarding/versionsPage/VersionsPageActionHelper.js';
@@ -30,13 +27,6 @@ import UniqueTypesHelper from 'sdc-app/common/helpers/UniqueTypesHelper.js';
 import i18n from 'nfvo-utils/i18n/i18n.js';
 import { itemType } from 'sdc-app/common/helpers/ItemsHelperConstants.js';
 
-const ToggledSoftwareProductCreationView = featureToggle(
-    featureToggleNames.FILTER
-)({
-    OnComp: SoftwareProductCreationViewWithFilter,
-    OffComp: SoftwareProductCreationView
-});
-
 export const mapStateToProps = ({
     finalizedLicenseModelList,
     users: { usersList },
@@ -130,4 +120,4 @@ export const mapActionsToProps = dispatch => {
 
 export default connect(mapStateToProps, mapActionsToProps, null, {
     withRef: true
-})(ToggledSoftwareProductCreationView);
+})(SoftwareProductCreationView);
index 4324930..c9693d4 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * 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.
@@ -91,13 +91,10 @@ class SoftwareProductCreationView extends React.Component {
                                     onChange={name =>
                                         onDataChanged(
                                             { name },
-                                            SP_CREATION_FORM_NAME,
-                                            {
-                                                name: name =>
-                                                    this.validateName(name)
-                                            }
+                                            SP_CREATION_FORM_NAME
                                         )
                                     }
+                                    onBlur={this.validateIsNameUnique}
                                     isValid={genericFieldInfo.name.isValid}
                                     errorText={genericFieldInfo.name.errorText}
                                     type="text"
@@ -207,17 +204,15 @@ class SoftwareProductCreationView extends React.Component {
     }
 
     getVendorList() {
-        let { finalizedLicenseModelList } = this.props;
+        let { vendorList } = this.props;
 
         return [{ enum: '', title: i18n('please select...') }].concat(
-            sortByStringProperty(finalizedLicenseModelList, 'name').map(
-                vendor => {
-                    return {
-                        enum: vendor.id,
-                        title: vendor.name
-                    };
-                }
-            )
+            sortByStringProperty(vendorList, 'name').map(vendor => {
+                return {
+                    enum: vendor.id,
+                    title: vendor.name
+                };
+            })
         );
     }
 
@@ -270,6 +265,13 @@ class SoftwareProductCreationView extends React.Component {
               };
     }
 
+    validateIsNameUnique = e => {
+        const value = e.target.value;
+        if (value) {
+            this.props.isNameUnique(value, 'name', SP_CREATION_FORM_NAME);
+        }
+    };
+
     validate() {
         this.props.onValidateForm(SP_CREATION_FORM_NAME);
     }
@@ -290,6 +292,7 @@ const OnboardingProcedure = ({
                         onboardingMethod ===
                         onboardingMethodConst.NETWORK_PACKAGE
                     }
+                    errorText={genericFieldInfo.onboardingMethod.errorText}
                     onChange={() =>
                         onDataChanged(
                             {
diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreationViewWithFilter.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreationViewWithFilter.jsx
deleted file mode 100644 (file)
index c9693d4..0000000
+++ /dev/null
@@ -1,330 +0,0 @@
-/*!
- * 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 i18n from 'nfvo-utils/i18n/i18n.js';
-import Validator from 'nfvo-utils/Validator.js';
-import Input from 'nfvo-components/input/validation/Input.jsx';
-import Form from 'nfvo-components/input/validation/Form.jsx';
-import GridSection from 'nfvo-components/grid/GridSection.jsx';
-import GridItem from 'nfvo-components/grid/GridItem.jsx';
-
-import { SP_CREATION_FORM_NAME } from './SoftwareProductCreationConstants.js';
-import sortByStringProperty from 'nfvo-utils/sortByStringProperty.js';
-
-import SoftwareProductCategoriesHelper from 'sdc-app/onboarding/softwareProduct/SoftwareProductCategoriesHelper.js';
-import { onboardingMethod as onboardingMethodConst } from '../SoftwareProductConstants.js';
-
-const SoftwareProductPropType = PropTypes.shape({
-    id: PropTypes.string,
-    name: PropTypes.string,
-    description: PropTypes.string,
-    category: PropTypes.string,
-    subCategory: PropTypes.string,
-    vendorId: PropTypes.string
-});
-
-class SoftwareProductCreationView extends React.Component {
-    static propTypes = {
-        data: SoftwareProductPropType,
-        finalizedLicenseModelList: PropTypes.array,
-        softwareProductCategories: PropTypes.array,
-        VSPNames: PropTypes.object,
-        usersList: PropTypes.array,
-        onDataChanged: PropTypes.func.isRequired,
-        onSubmit: PropTypes.func.isRequired,
-        onCancel: PropTypes.func.isRequired
-    };
-
-    render() {
-        let {
-            softwareProductCategories,
-            data = {},
-            onDataChanged,
-            onCancel,
-            genericFieldInfo,
-            disableVendor
-        } = this.props;
-        let {
-            name,
-            description,
-            vendorId,
-            subCategory,
-            onboardingMethod
-        } = data;
-
-        const vendorList = this.getVendorList();
-        return (
-            <div className="software-product-creation-page">
-                {genericFieldInfo && (
-                    <Form
-                        ref={validationForm =>
-                            (this.validationForm = validationForm)
-                        }
-                        hasButtons={true}
-                        onSubmit={() => this.submit()}
-                        onReset={() => onCancel()}
-                        labledButtons={true}
-                        isValid={this.props.isFormValid}
-                        submitButtonText={i18n('Create')}
-                        formReady={this.props.formReady}
-                        onValidateForm={() => this.validate()}>
-                        <GridSection hasLastColSet>
-                            <GridItem colSpan="2">
-                                <Input
-                                    value={name}
-                                    label={i18n('Name')}
-                                    isRequired={true}
-                                    onChange={name =>
-                                        onDataChanged(
-                                            { name },
-                                            SP_CREATION_FORM_NAME
-                                        )
-                                    }
-                                    onBlur={this.validateIsNameUnique}
-                                    isValid={genericFieldInfo.name.isValid}
-                                    errorText={genericFieldInfo.name.errorText}
-                                    type="text"
-                                    className="field-section"
-                                    data-test-id="new-vsp-name"
-                                />
-                                <Input
-                                    label={i18n('Vendor')}
-                                    type="select"
-                                    value={vendorId}
-                                    overlayPos="bottom"
-                                    isRequired={true}
-                                    disabled={disableVendor}
-                                    onChange={e => this.onSelectVendor(e)}
-                                    isValid={genericFieldInfo.vendorId.isValid}
-                                    errorText={
-                                        genericFieldInfo.vendorId.errorText
-                                    }
-                                    className="input-options-select"
-                                    groupClassName="bootstrap-input-options"
-                                    data-test-id="new-vsp-vendor">
-                                    {vendorList.map(vendor => (
-                                        <option
-                                            key={vendor.title}
-                                            value={vendor.enum}>
-                                            {vendor.title}
-                                        </option>
-                                    ))}
-                                </Input>
-                                <Input
-                                    label={i18n('Category')}
-                                    type="select"
-                                    value={subCategory}
-                                    isRequired={true}
-                                    onChange={e => this.onSelectSubCategory(e)}
-                                    isValid={
-                                        genericFieldInfo.subCategory.isValid
-                                    }
-                                    errorText={
-                                        genericFieldInfo.subCategory.errorText
-                                    }
-                                    className="input-options-select"
-                                    groupClassName="bootstrap-input-options"
-                                    data-test-id="new-vsp-category">
-                                    <option key="" value="">
-                                        {i18n('please select…')}
-                                    </option>
-                                    {softwareProductCategories.map(
-                                        category =>
-                                            category.subcategories && (
-                                                <optgroup
-                                                    key={category.name}
-                                                    label={category.name}>
-                                                    {category.subcategories.map(
-                                                        sub => (
-                                                            <option
-                                                                key={
-                                                                    sub.uniqueId
-                                                                }
-                                                                value={
-                                                                    sub.uniqueId
-                                                                }>{`${
-                                                                sub.name
-                                                            } (${
-                                                                category.name
-                                                            })`}</option>
-                                                        )
-                                                    )}
-                                                </optgroup>
-                                            )
-                                    )}
-                                </Input>
-                            </GridItem>
-                            <GridItem colSpan="2" stretch lastColInRow>
-                                <Input
-                                    value={description}
-                                    label={i18n('Description')}
-                                    isRequired={true}
-                                    overlayPos="bottom"
-                                    onChange={description =>
-                                        onDataChanged(
-                                            { description },
-                                            SP_CREATION_FORM_NAME
-                                        )
-                                    }
-                                    isValid={
-                                        genericFieldInfo.description.isValid
-                                    }
-                                    errorText={
-                                        genericFieldInfo.description.errorText
-                                    }
-                                    type="textarea"
-                                    className="field-section"
-                                    data-test-id="new-vsp-description"
-                                />
-                            </GridItem>
-                        </GridSection>
-                        <OnboardingProcedure
-                            genericFieldInfo={genericFieldInfo}
-                            onboardingMethod={onboardingMethod}
-                            onDataChanged={onDataChanged}
-                        />
-                    </Form>
-                )}
-            </div>
-        );
-    }
-
-    getVendorList() {
-        let { vendorList } = this.props;
-
-        return [{ enum: '', title: i18n('please select...') }].concat(
-            sortByStringProperty(vendorList, 'name').map(vendor => {
-                return {
-                    enum: vendor.id,
-                    title: vendor.name
-                };
-            })
-        );
-    }
-
-    onSelectVendor(e) {
-        const selectedIndex = e.target.selectedIndex;
-        const vendorId = e.target.options[selectedIndex].value;
-        this.props.onDataChanged({ vendorId }, SP_CREATION_FORM_NAME);
-    }
-
-    onSelectSubCategory(e) {
-        const selectedIndex = e.target.selectedIndex;
-        const subCategory = e.target.options[selectedIndex].value;
-        let { softwareProductCategories, onDataChanged } = this.props;
-        let category = SoftwareProductCategoriesHelper.getCurrentCategoryOfSubCategory(
-            subCategory,
-            softwareProductCategories
-        );
-        onDataChanged({ category, subCategory }, SP_CREATION_FORM_NAME);
-    }
-
-    submit() {
-        let {
-            data: softwareProduct,
-            finalizedLicenseModelList,
-            usersList
-        } = this.props;
-        softwareProduct.vendorName = finalizedLicenseModelList.find(
-            vendor => vendor.id === softwareProduct.vendorId
-        ).name;
-        this.props.onSubmit(softwareProduct, usersList);
-    }
-
-    validateName(value) {
-        const { data: { id }, VSPNames } = this.props;
-        const isExists = Validator.isItemNameAlreadyExistsInList({
-            itemId: id,
-            itemName: value,
-            list: VSPNames
-        });
-
-        return !isExists
-            ? { isValid: true, errorText: '' }
-            : {
-                  isValid: false,
-                  errorText: i18n(
-                      "Software product by the name '" +
-                          value +
-                          "' already exists. Software product name must be unique"
-                  )
-              };
-    }
-
-    validateIsNameUnique = e => {
-        const value = e.target.value;
-        if (value) {
-            this.props.isNameUnique(value, 'name', SP_CREATION_FORM_NAME);
-        }
-    };
-
-    validate() {
-        this.props.onValidateForm(SP_CREATION_FORM_NAME);
-    }
-}
-
-const OnboardingProcedure = ({
-    onboardingMethod,
-    onDataChanged,
-    genericFieldInfo
-}) => {
-    return (
-        <GridSection title={i18n('Onboarding procedure')}>
-            <GridItem colSpan={4}>
-                <Input
-                    label={i18n('Network Package')}
-                    overlayPos="top"
-                    checked={
-                        onboardingMethod ===
-                        onboardingMethodConst.NETWORK_PACKAGE
-                    }
-                    errorText={genericFieldInfo.onboardingMethod.errorText}
-                    onChange={() =>
-                        onDataChanged(
-                            {
-                                onboardingMethod:
-                                    onboardingMethodConst.NETWORK_PACKAGE
-                            },
-                            SP_CREATION_FORM_NAME
-                        )
-                    }
-                    type="radio"
-                    data-test-id="new-vsp-creation-procedure-heat"
-                />
-            </GridItem>
-            <GridItem colSpan={4}>
-                <Input
-                    label={i18n('Manual')}
-                    overlayPos="bottom"
-                    checked={onboardingMethod === onboardingMethodConst.MANUAL}
-                    isValid={genericFieldInfo.onboardingMethod.isValid}
-                    errorText={genericFieldInfo.onboardingMethod.errorText}
-                    onChange={() =>
-                        onDataChanged(
-                            { onboardingMethod: onboardingMethodConst.MANUAL },
-                            SP_CREATION_FORM_NAME
-                        )
-                    }
-                    type="radio"
-                    data-test-id="new-vsp-creation-procedure-manual"
-                />
-            </GridItem>
-        </GridSection>
-    );
-};
-
-export default SoftwareProductCreationView;
index 504de99..983d144 100644 (file)
@@ -20,7 +20,6 @@ import Tree from 'nfvo-components/tree/Tree.jsx';
 import SVGIcon from 'sdc-ui/lib/react/SVGIcon.js';
 import Button from 'sdc-ui/lib/react/Button.js';
 import i18n from 'nfvo-utils/i18n/i18n.js';
-import featureToggle from 'sdc-app/features/featureToggle.js';
 
 const ArchiveRestoreButton = ({ depricateAction, title, isArchived }) => (
     <div className="deprecate-btn-wrapper">
@@ -34,7 +33,7 @@ const ArchiveRestoreButton = ({ depricateAction, title, isArchived }) => (
         ) : (
             <SVGIcon
                 name="archiveBox"
-                title={i18n('Archive item')}
+                title={i18n('Archive')}
                 color="secondary"
                 onClick={depricateAction}
             />
@@ -46,10 +45,6 @@ const ArchivedTitle = () => (
     <div className="archived-title">{i18n('Archived')}</div>
 );
 
-const FeatureDepricatedButton = featureToggle('ARCHIVE_ITEM')(
-    ArchiveRestoreButton
-);
-
 const VersionPageTitle = ({
     itemName,
     isArchived,
@@ -64,7 +59,7 @@ const VersionPageTitle = ({
                 {isArchived ? <ArchivedTitle /> : null}
             </div>
             {isCollaborator && (
-                <FeatureDepricatedButton
+                <ArchiveRestoreButton
                     isArchived={isArchived}
                     depricateAction={
                         isArchived ? () => onRestore() : () => onArchive()
index 536f02c..5e3c93b 100644 (file)
@@ -18,14 +18,14 @@ import React from 'react';
 import { mount } from 'enzyme';
 import { Provider } from 'react-redux';
 import { storeCreator } from 'sdc-app/AppStore.js';
-import { ConnectedFilter } from 'sdc-app/onboarding//onboard//filter/Filter.jsx';
+import Filter from 'sdc-app/onboarding//onboard/filter/Filter.jsx';
 
 describe('Filter component view Tests', () => {
     it('simple jsx test', () => {
         const store = storeCreator();
         const wrapper = mount(
             <Provider store={store}>
-                <ConnectedFilter />
+                <Filter />
             </Provider>
         );
         const filter = wrapper.find('.catalog-filter');
index 90765cf..d42cdbd 100644 (file)
@@ -9475,9 +9475,9 @@ scss-tokenizer@^0.2.3:
     js-base64 "^2.1.8"
     source-map "^0.4.2"
 
-sdc-ui@1.6.46:
-  version "1.6.46"
-  resolved "https://registry.yarnpkg.com/sdc-ui/-/sdc-ui-1.6.46.tgz#c9a759fd5d407774d7e805b09705353d51b869a1"
+sdc-ui@1.6.53:
+  version "1.6.53"
+  resolved "https://registry.yarnpkg.com/sdc-ui/-/sdc-ui-1.6.53.tgz#acb6faba9a7d5f64702f4a19c4efbc5fae331f63"
   dependencies:
     "@angular/common" "~2.4.8"
     "@angular/core" "~2.4.8"