From 811fb48f0c31422e93aba218e76ed296fceeb0f0 Mon Sep 17 00:00:00 2001 From: Yarin Dekel Date: Sun, 4 Nov 2018 15:00:34 +0200 Subject: chache result in onboarding Issue-ID: SDC-1889 Change-Id: I99dc01cc32af99399bc232125b6195b7125e6c61 Signed-off-by: Yarin Dekel --- .../sdc-app/onboarding/OnboardingActionHelper.js | 6 +-- .../onboarding/onboard/DetailsCatalogView.jsx | 20 +++++---- .../src/sdc-app/onboarding/onboard/Onboard.js | 17 ++++++-- .../onboarding/onboard/OnboardActionHelper.js | 21 ++++++---- .../sdc-app/onboarding/onboard/OnboardConstants.js | 6 +++ .../sdc-app/onboarding/onboard/OnboardReducer.js | 6 +-- .../src/sdc-app/onboarding/onboard/OnboardView.jsx | 18 ++++++--- .../sdc-app/onboarding/onboard/SearchReducer.js | 34 ++++++++++++++++ .../OnboardingCatalogActionHelper.js | 3 -- .../onboardingCatalog/OnboardingCatalogUtils.js | 33 +++++++-------- .../onboardingCatalog/OnboardingCatalogView.jsx | 9 +++-- .../onboardingCatalog/VendorCatalogView.jsx | 47 +++++++++++++--------- .../onboard/onboardingCatalog/VendorItem.jsx | 7 ++-- .../onboarding/onboard/workspace/WorkspaceView.jsx | 8 ++-- 14 files changed, 154 insertions(+), 81 deletions(-) create mode 100644 openecomp-ui/src/sdc-app/onboarding/onboard/SearchReducer.js (limited to 'openecomp-ui/src') diff --git a/openecomp-ui/src/sdc-app/onboarding/OnboardingActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/OnboardingActionHelper.js index b9ffdc3076..c3cf8b292f 100644 --- a/openecomp-ui/src/sdc-app/onboarding/OnboardingActionHelper.js +++ b/openecomp-ui/src/sdc-app/onboarding/OnboardingActionHelper.js @@ -4,9 +4,9 @@ * 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. @@ -31,7 +31,6 @@ import SoftwareProductComponentProcessesActionHelper from './softwareProduct/com import SoftwareProductComponentsNetworkActionHelper from './softwareProduct/components/network/SoftwareProductComponentsNetworkActionHelper.js'; import SoftwareProductDependenciesActionHelper from './softwareProduct/dependencies/SoftwareProductDependenciesActionHelper.js'; import ComputeFlavorActionHelper from './softwareProduct/components/compute/ComputeFlavorActionHelper.js'; -import OnboardActionHelper from './onboard/OnboardActionHelper.js'; import MergeEditorActionHelper from 'sdc-app/common/merge/MergeEditorActionHelper.js'; import SoftwareProductComponentsMonitoringAction from './softwareProduct/components/monitoring/SoftwareProductComponentsMonitoringActionHelper.js'; import { actionTypes, enums } from './OnboardingConstants.js'; @@ -82,7 +81,6 @@ const OnboardingActionHelper = { await FeaturesActionHelper.getFeaturesList(dispatch); UsersActionHelper.fetchUsersList(dispatch); this.loadItemsLists(dispatch); - OnboardActionHelper.resetOnboardStore(dispatch); setCurrentScreen(dispatch, enums.SCREEN.ONBOARDING_CATALOG); dispatch({ type: filterActionTypes.FILTER_DATA_CHANGED, diff --git a/openecomp-ui/src/sdc-app/onboarding/onboard/DetailsCatalogView.jsx b/openecomp-ui/src/sdc-app/onboarding/onboard/DetailsCatalogView.jsx index b535595355..c2fb2e7fd8 100644 --- a/openecomp-ui/src/sdc-app/onboarding/onboard/DetailsCatalogView.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/onboard/DetailsCatalogView.jsx @@ -27,10 +27,12 @@ function renderCatalogItems({ filter, onSelect, onMigrate, - users + users, + activeTabName }) { + const filteredValue = filter[activeTabName]; const filteredItems = items.length - ? filterCatalogItemsByType({ items, filter }) + ? filterCatalogItemsByType({ items, filter: filteredValue }) : []; return filteredItems.map(item => ( @@ -82,7 +86,8 @@ class DetailsCatalogView extends React.Component { filter, onSelect: onSelectVLM, onMigrate, - users + users, + activeTabName })} {renderCatalogItems({ items: VSPList, @@ -90,7 +95,8 @@ class DetailsCatalogView extends React.Component { filter, onSelect: onSelectVSP, onMigrate, - users + users, + activeTabName })} ); diff --git a/openecomp-ui/src/sdc-app/onboarding/onboard/Onboard.js b/openecomp-ui/src/sdc-app/onboarding/onboard/Onboard.js index 34f9b88a7b..c3e2963412 100644 --- a/openecomp-ui/src/sdc-app/onboarding/onboard/Onboard.js +++ b/openecomp-ui/src/sdc-app/onboarding/onboard/Onboard.js @@ -4,9 +4,9 @@ * 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. @@ -22,6 +22,7 @@ import LicenseModelCreationActionHelper from '../licenseModel/creation/LicenseMo import SoftwareProductCreationActionHelper from '../softwareProduct/creation/SoftwareProductCreationActionHelper.js'; import sortByStringProperty from 'nfvo-utils/sortByStringProperty.js'; import { tabsMapping } from './onboardingCatalog/OnboardingCatalogConstants.js'; +import { tabsMapping as onboardTabsMapping } from './OnboardConstants'; import { itemStatus } from 'sdc-app/common/helpers/ItemsHelperConstants.js'; import { catalogItemStatuses } from './onboardingCatalog/OnboardingCatalogConstants.js'; @@ -36,6 +37,9 @@ export const mapStateToProps = ({ finalizedSoftwareProductList, filteredItems }) => { + const activeTabName = Object.keys(onboardTabsMapping).filter(item => { + return onboardTabsMapping[item] === activeTab; + })[0]; const fullSoftwareProducts = softwareProductList .filter( vsp => @@ -104,6 +108,7 @@ export const mapStateToProps = ({ archivedLicenseModelList, archivedSoftwareProductList, fullLicenseModelList, + activeTabName, activeTab, catalogActiveTab, searchValue, @@ -143,8 +148,12 @@ const mapActionsToProps = dispatch => { onCatalogTabClick: tab => OnboardingCatalogActionHelper.changeActiveTab(dispatch, tab), onTabClick: tab => OnboardActionHelper.changeActiveTab(dispatch, tab), - onSearch: searchValue => - OnboardActionHelper.changeSearchValue(dispatch, searchValue), + onSearch: (searchValue, activeTab) => + OnboardActionHelper.changeSearchValue( + dispatch, + searchValue, + activeTab + ), onVendorSelect: vendor => OnboardingCatalogActionHelper.onVendorSelect(dispatch, { vendor }), onMigrate: ({ softwareProduct }) => diff --git a/openecomp-ui/src/sdc-app/onboarding/onboard/OnboardActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/onboard/OnboardActionHelper.js index 8443fe950b..9f2b3ddb12 100644 --- a/openecomp-ui/src/sdc-app/onboarding/onboard/OnboardActionHelper.js +++ b/openecomp-ui/src/sdc-app/onboarding/onboard/OnboardActionHelper.js @@ -4,16 +4,20 @@ * 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 { tabsMapping, actionTypes } from './OnboardConstants.js'; +import { + tabsMapping, + actionTypes, + searchValueObj +} from './OnboardConstants.js'; import ScreensHelper from 'sdc-app/common/helpers/ScreensHelper.js'; import { enums, screenTypes } from 'sdc-app/onboarding/OnboardingConstants.js'; import VersionsPageActionHelper from 'sdc-app/onboarding/versionsPage/VersionsPageActionHelper.js'; @@ -30,7 +34,6 @@ const OnboardActionHelper = { }); }, changeActiveTab(dispatch, activeTab) { - this.clearSearchValue(dispatch); dispatch({ type: actionTypes.CHANGE_ACTIVE_ONBOARD_TAB, activeTab @@ -47,16 +50,18 @@ const OnboardActionHelper = { } }); }, - changeSearchValue(dispatch, searchValue) { + changeSearchValue(dispatch, searchValue, activeTab) { dispatch({ type: actionTypes.CHANGE_SEARCH_VALUE, - searchValue + payload: { searchValue, activeTab } }); }, clearSearchValue(dispatch) { dispatch({ - type: actionTypes.CHANGE_SEARCH_VALUE, - searchValue: '' + type: actionTypes.CLEAR_SEARCH_VALUE, + payload: { + searchValue: searchValueObj + } }); }, diff --git a/openecomp-ui/src/sdc-app/onboarding/onboard/OnboardConstants.js b/openecomp-ui/src/sdc-app/onboarding/onboard/OnboardConstants.js index 6fbf265afb..fc34f74510 100644 --- a/openecomp-ui/src/sdc-app/onboarding/onboard/OnboardConstants.js +++ b/openecomp-ui/src/sdc-app/onboarding/onboard/OnboardConstants.js @@ -20,9 +20,15 @@ export const tabsMapping = { CATALOG: 2 }; +export const searchValueObj = { + WORKSPACE: '', + CATALOG: '' +}; + export const actionTypes = keyMirror({ CHANGE_ACTIVE_ONBOARD_TAB: null, CHANGE_SEARCH_VALUE: null, + CLEAR_SEARCH_VALUE: null, RESET_ONBOARD_STORE: null, VSP_MIGRATION: null }); diff --git a/openecomp-ui/src/sdc-app/onboarding/onboard/OnboardReducer.js b/openecomp-ui/src/sdc-app/onboarding/onboard/OnboardReducer.js index 39ceb31b34..28cd7e248c 100644 --- a/openecomp-ui/src/sdc-app/onboarding/onboard/OnboardReducer.js +++ b/openecomp-ui/src/sdc-app/onboarding/onboard/OnboardReducer.js @@ -17,6 +17,7 @@ import { actionTypes, tabsMapping } from './OnboardConstants.js'; import { combineReducers } from 'redux'; import onboardingCatalogReducer from './onboardingCatalog/OnboardingCatalogReducer.js'; import filterReducer from './filter/FilterReducer.js'; +import searchReducer from './SearchReducer.js'; const onboardReducer = combineReducers({ onboardingCatalog: onboardingCatalogReducer, @@ -25,10 +26,7 @@ const onboardReducer = combineReducers({ action.type === actionTypes.CHANGE_ACTIVE_ONBOARD_TAB ? action.activeTab : state, - searchValue: (state = '', action) => - action.type === actionTypes.CHANGE_SEARCH_VALUE - ? action.searchValue - : state + searchValue: searchReducer }); export default (state, action) => { diff --git a/openecomp-ui/src/sdc-app/onboarding/onboard/OnboardView.jsx b/openecomp-ui/src/sdc-app/onboarding/onboard/OnboardView.jsx index c5cf2926d4..b21ea3ee80 100644 --- a/openecomp-ui/src/sdc-app/onboarding/onboard/OnboardView.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/onboard/OnboardView.jsx @@ -4,9 +4,9 @@ * 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. @@ -78,7 +78,7 @@ class OnboardView extends React.Component { onSearch: PropTypes.func.isRequired, activeTab: PropTypes.number.isRequired, catalogActiveTab: PropTypes.number.isRequired, - searchValue: PropTypes.string.isRequired, + searchValue: PropTypes.object.isRequired, onMigrate: PropTypes.func.isRequired }; renderViewByTab(activeTab) { @@ -93,7 +93,13 @@ class OnboardView extends React.Component { } render() { - let { activeTab, onTabClick, onSearch, searchValue } = this.props; + let { + activeTab, + activeTabName, + onTabClick, + onSearch, + searchValue + } = this.props; return (
@@ -101,8 +107,8 @@ class OnboardView extends React.Component { onSearch(value)} + searchValue={searchValue[activeTabName]} + onSearch={value => onSearch(value, activeTabName)} /> {this.renderViewByTab(activeTab)}
diff --git a/openecomp-ui/src/sdc-app/onboarding/onboard/SearchReducer.js b/openecomp-ui/src/sdc-app/onboarding/onboard/SearchReducer.js new file mode 100644 index 0000000000..8440091265 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/onboard/SearchReducer.js @@ -0,0 +1,34 @@ +/* +* Copyright © 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 { actionTypes, searchValueObj } from '../onboard/OnboardConstants.js'; + +export default (state = searchValueObj, action) => { + switch (action.type) { + case actionTypes.CHANGE_SEARCH_VALUE: + return { + ...state, + ...{ + [action.payload.activeTab]: action.payload.searchValue + } + }; + case actionTypes.CLEAR_SEARCH_VALUE: + return { + ...action.payload.searchValue + }; + default: + return state; + } +}; diff --git a/openecomp-ui/src/sdc-app/onboarding/onboard/onboardingCatalog/OnboardingCatalogActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/onboard/onboardingCatalog/OnboardingCatalogActionHelper.js index aebb829a88..e4c7b5ce6b 100644 --- a/openecomp-ui/src/sdc-app/onboarding/onboard/onboardingCatalog/OnboardingCatalogActionHelper.js +++ b/openecomp-ui/src/sdc-app/onboarding/onboard/onboardingCatalog/OnboardingCatalogActionHelper.js @@ -17,7 +17,6 @@ import React from 'react'; import i18n from 'nfvo-utils/i18n/i18n.js'; import { actionTypes } from './OnboardingCatalogConstants.js'; import { actionTypes as modalActionTypes } from 'nfvo-components/modal/GlobalModalConstants.js'; -import OnboardActionHelper from '../OnboardActionHelper.js'; import SoftwareProductActionHelper from 'sdc-app/onboarding/softwareProduct/SoftwareProductActionHelper.js'; function getMessageForMigration(name) { @@ -47,14 +46,12 @@ const OnboardingCatalogActionHelper = { }); }, changeActiveTab(dispatch, activeTab) { - OnboardActionHelper.clearSearchValue(dispatch); dispatch({ type: actionTypes.CHANGE_ACTIVE_CATALOG_TAB, activeTab }); }, onVendorSelect(dispatch, { vendor }) { - OnboardActionHelper.clearSearchValue(dispatch); dispatch({ type: actionTypes.ONBOARDING_CATALOG_OPEN_VENDOR_PAGE, selectedVendor: vendor diff --git a/openecomp-ui/src/sdc-app/onboarding/onboard/onboardingCatalog/OnboardingCatalogUtils.js b/openecomp-ui/src/sdc-app/onboarding/onboard/onboardingCatalog/OnboardingCatalogUtils.js index d1e401f57d..1e87480605 100644 --- a/openecomp-ui/src/sdc-app/onboarding/onboard/onboardingCatalog/OnboardingCatalogUtils.js +++ b/openecomp-ui/src/sdc-app/onboarding/onboard/onboardingCatalog/OnboardingCatalogUtils.js @@ -1,21 +1,22 @@ -/*! - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * - * 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. - */ +/* +* Copyright © 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. +*/ export const filterCatalogItemsByType = ({ items, filter }) => { return items.filter( - item => item.name.toLowerCase().indexOf(filter.toLowerCase()) > -1 + item => + item.name.toLowerCase().indexOf(filter && filter.toLowerCase()) > -1 ); }; diff --git a/openecomp-ui/src/sdc-app/onboarding/onboard/onboardingCatalog/OnboardingCatalogView.jsx b/openecomp-ui/src/sdc-app/onboarding/onboard/onboardingCatalog/OnboardingCatalogView.jsx index ec3d4550ef..bd7fff0dd1 100644 --- a/openecomp-ui/src/sdc-app/onboarding/onboard/onboardingCatalog/OnboardingCatalogView.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/onboard/onboardingCatalog/OnboardingCatalogView.jsx @@ -4,9 +4,9 @@ * 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. @@ -45,7 +45,8 @@ class OnboardingCatalogView extends React.Component { searchValue, onMigrate, filteredItems, - isArchived + isArchived, + activeTabName } = this.props; const { vlmList, vspList } = filteredItems; @@ -74,6 +75,7 @@ class OnboardingCatalogView extends React.Component { WCTabsMapping.CATALOG ) } + activeTabName={activeTabName} filter={searchValue} onMigrate={onMigrate} /> @@ -107,6 +109,7 @@ class OnboardingCatalogView extends React.Component { selectedVendor={selectedVendor} onVspOverlayChange={onVspOverlayChange} onMigrate={onMigrate} + activeTabName={activeTabName} filter={searchValue} /> ); diff --git a/openecomp-ui/src/sdc-app/onboarding/onboard/onboardingCatalog/VendorCatalogView.jsx b/openecomp-ui/src/sdc-app/onboarding/onboard/onboardingCatalog/VendorCatalogView.jsx index ec45258eb9..69ddb98f34 100644 --- a/openecomp-ui/src/sdc-app/onboarding/onboard/onboardingCatalog/VendorCatalogView.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/onboard/onboardingCatalog/VendorCatalogView.jsx @@ -4,9 +4,9 @@ * 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. @@ -31,7 +31,8 @@ const VendorList = ({ filter, onMigrate, users, - isArchived + isArchived, + activeTabName }) => { const showAddButtons = !isArchived; const handeleSelectVSP = vsp => onSelectVSP(vsp, users); @@ -42,21 +43,22 @@ const VendorList = ({ - {filterCatalogItemsByType({ items: licenseModelList, filter }).map( - vlm => ( - - ) - )} + {filterCatalogItemsByType({ + items: licenseModelList, + filter: filter[activeTabName] + }).map(vlm => ( + + ))} ); }; @@ -70,7 +72,8 @@ const SoftwareProductListByVendor = ({ filter, onMigrate, users, - isArchived + isArchived, + activeTabName }) => { const handleAddVsp = !isArchived ? () => onAddVSP(selectedVendor.id) @@ -93,7 +96,7 @@ const SoftwareProductListByVendor = ({ /> {filterCatalogItemsByType({ items: selectedVendor.softwareProductList, - filter + filter: filter[activeTabName] }).map(vsp => ( { - const { onVendorSelect, vendor } = this.props; - onVendorSelect(vendor); + const { onVendorSelect, vendor, activeTabName } = this.props; + onVendorSelect(vendor, activeTabName); }; render() { let { vendor, onSelectVSP, shouldShowOverlay, onMigrate } = this.props; diff --git a/openecomp-ui/src/sdc-app/onboarding/onboard/workspace/WorkspaceView.jsx b/openecomp-ui/src/sdc-app/onboarding/onboard/workspace/WorkspaceView.jsx index 8cc396f6fc..0297189fc0 100644 --- a/openecomp-ui/src/sdc-app/onboarding/onboard/workspace/WorkspaceView.jsx +++ b/openecomp-ui/src/sdc-app/onboarding/onboard/workspace/WorkspaceView.jsx @@ -4,9 +4,9 @@ * 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. @@ -28,7 +28,8 @@ const WorkspaceView = props => { searchValue, onMigrate, filteredItems: { vspList, vlmList }, - isArchived + isArchived, + activeTabName } = props; const handleSelectVSP = (item, users) => onSelectSoftwareProduct(item, users, tabsMapping.WORKSPACE); @@ -49,6 +50,7 @@ const WorkspaceView = props => { onSelectVSP={handleSelectVSP} onMigrate={onMigrate} filter={searchValue} + activeTabName={activeTabName} /> ); -- cgit 1.2.3-korg