From 51d50f0ef642e0f996a1c8b8d2ef4838bdfec892 Mon Sep 17 00:00:00 2001 From: Tal Gitelman Date: Sun, 10 Dec 2017 18:55:03 +0200 Subject: Final commit to master merge from Change-Id: Ib464f9a8828437c86fe6def8af238aaf83473507 Issue-ID: SDC-714 Signed-off-by: Tal Gitelman --- catalog-ui/configurations/dev.js | 2 +- catalog-ui/configurations/prod.js | 2 +- catalog-ui/package.json | 2 +- catalog-ui/src/app/app.ts | 42 ++-- .../requirement/requirements-list-directive.ts | 11 +- .../app/directives/ecomp-footer/ecomp-footer.html | 8 - .../app/directives/ecomp-footer/ecomp-footer.less | 47 ---- .../app/directives/ecomp-footer/ecomp-footer.ts | 53 ---- .../app/directives/ecomp-header/ecomp-header.ts | 21 +- .../graphs-v2/common/common-graph-utils.ts | 44 +++- .../style/component-instances-nodes-style.ts | 17 ++ .../composition-graph.directive.ts | 230 +++++++++++++++-- .../composition-graph/composition-graph.html | 12 +- .../utils/composition-graph-general-utils.ts | 14 +- .../utils/composition-graph-links-utils.ts | 47 ++-- .../utils/match-capability-requierment-utils.ts | 238 ++++++------------ .../deployment-graph/deployment-graph.directive.ts | 6 +- .../graphs-v2/palette/palette.directive.ts | 45 +--- .../app/directives/graphs-v2/palette/palette.html | 2 +- .../graphs-v2/relation-menu/relation-menu.html | 48 ++-- .../graphs-v2/relation-menu/relation-menu.ts | 16 +- .../src/app/directives/layout/top-nav/top-nav.html | 54 ---- .../src/app/directives/layout/top-nav/top-nav.less | 218 ---------------- .../src/app/directives/layout/top-nav/top-nav.ts | 161 ------------ .../src/app/directives/loader/loader-directive.ts | 21 +- .../data-type-fields-structure.html | 4 +- .../data-type-fields-structure.less | 4 + .../type-map/type-map-directive.html | 4 +- .../type-map/type-map-directive.less | 5 + .../select-data-type-fields-structure.less | 10 +- .../user-header-details-directive.ts | 26 +- catalog-ui/src/app/models.ts | 7 +- catalog-ui/src/app/models/capability.ts | 18 +- catalog-ui/src/app/models/components/component.ts | 70 +++++- .../componentsInstances/componentInstance.ts | 40 ++- .../componentsInstances/serviceProxyInstance.ts | 35 +++ .../src/app/models/graph/connectRelationModel.ts | 122 +++++++++ .../composition-ci-ucpe-link.ts | 2 +- .../app/models/graph/graph-links/links-factory.ts | 4 +- catalog-ui/src/app/models/graph/match-relation.ts | 68 ++--- .../composition-ci-node-base.ts | 7 +- .../composition-ci-node-configuration.ts | 39 +++ .../composition-ci-node-cp.ts | 3 +- .../composition-ci-node-service-proxy.ts | 42 ++++ .../composition-ci-node-service.ts | 2 +- .../composition-ci-node-ucpe-cp.ts | 2 + .../composition-ci-node-ucpe.ts | 2 + .../composition-ci-node-vf.ts | 3 +- .../composition-ci-node-vfc.ts | 3 +- .../composition-ci-node-vl.ts | 1 + .../nodes/modules-graph-nodes/module-node-base.ts | 3 +- .../src/app/models/graph/nodes/nodes-factory.ts | 10 +- .../src/app/models/graph/relationMenuObjects.ts | 131 ---------- catalog-ui/src/app/models/graph/relationship.ts | 48 +++- catalog-ui/src/app/models/heat-parameters.ts | 1 + .../models/properties-inputs/property-be-model.ts | 2 +- .../models/properties-inputs/property-fe-model.ts | 1 + catalog-ui/src/app/models/properties.ts | 15 +- catalog-ui/src/app/models/radio-button.ts | 11 + catalog-ui/src/app/models/requirement.ts | 16 +- catalog-ui/src/app/models/user.ts | 29 ++- catalog-ui/src/app/models/wizard-step.ts | 19 ++ catalog-ui/src/app/modules/directive-module.ts | 19 +- catalog-ui/src/app/modules/service-module.ts | 17 +- catalog-ui/src/app/ng2/app.module.ts | 33 ++- .../menu-list-ng2/menu-list-ng2.component.html | 7 + .../menu-list-ng2/menu-list-ng2.component.ts | 36 +++ .../menu-list-ng2/menu-list-ng2.module.ts | 23 ++ .../dynamic-element/dynamic-element.component.less | 3 - .../dynamic-element/dynamic-element.component.ts | 145 ----------- .../dynamic-element/dynamic-element.module.ts | 56 ----- .../checkbox/ui-element-checkbox.component.html | 1 - .../checkbox/ui-element-checkbox.component.less | 2 - .../checkbox/ui-element-checkbox.component.ts | 47 ---- .../dropdown/ui-element-dropdown.component.html | 3 - .../dropdown/ui-element-dropdown.component.less | 11 - .../dropdown/ui-element-dropdown.component.ts | 52 ---- .../input/ui-element-input.component.html | 15 -- .../input/ui-element-input.component.less | 17 -- .../input/ui-element-input.component.ts | 41 --- .../ui-element-integer-input.component.html | 15 -- .../ui-element-integer-input.component.less | 17 -- .../ui-element-integer-input.component.ts | 41 --- .../ui-element-popover-input.component.html | 26 -- .../ui-element-popover-input.component.less | 36 --- .../ui-element-popover-input.component.ts | 58 ----- .../elements-ui/ui-element-base.component.ts | 55 ---- .../filter-properties-assignment.component.html | 26 -- .../filter-properties-assignment.component.less | 45 ---- .../filter-properties-assignment.component.ts | 97 ------- .../hierarchy-display-options.ts | 32 --- .../hierarchy-navigation.component.html | 13 - .../hierarchy-navigation.component.less | 52 ---- .../hierarchy-navigation.component.ts | 48 ---- .../inputs-table/inputs-table.component.html | 49 ---- .../inputs-table/inputs-table.component.less | 164 ------------ .../inputs-table/inputs-table.component.ts | 64 ----- .../src/app/ng2/components/layout/layout.module.ts | 24 ++ .../layout/top-nav/top-nav.component.html | 53 ++++ .../layout/top-nav/top-nav.component.less | 225 +++++++++++++++++ .../components/layout/top-nav/top-nav.component.ts | 149 +++++++++++ .../ng2/components/loader/loader.component.html | 6 - .../ng2/components/loader/loader.component.less | 91 ------- .../app/ng2/components/loader/loader.component.ts | 86 ------- .../filter-properties-assignment.component.html | 27 ++ .../filter-properties-assignment.component.less | 45 ++++ .../filter-properties-assignment.component.ts | 97 +++++++ .../hierarchy-display-options.ts | 32 +++ .../hierarchy-navigation.component.html | 13 + .../hierarchy-navigation.component.less | 52 ++++ .../hierarchy-navigation.component.ts | 48 ++++ .../logic/inputs-table/inputs-table.component.html | 49 ++++ .../logic/inputs-table/inputs-table.component.less | 164 ++++++++++++ .../logic/inputs-table/inputs-table.component.ts | 62 +++++ .../dynamic-property.component.html | 67 +++++ .../dynamic-property.component.less | 84 +++++++ .../dynamic-property/dynamic-property.component.ts | 206 +++++++++++++++ .../pipes/filterChildProperties.pipe.ts | 38 +++ .../properties-table.component.html | 63 +++++ .../properties-table.component.less | 180 +++++++++++++ .../properties-table/properties-table.component.ts | 91 +++++++ .../properties-table/property-table.module.ts | 29 +++ ...select-reqiurement-or-capability.component.less | 77 ++++++ ...select-requirement-or-capability.component.html | 36 +++ .../select-requirement-or-capability.component.ts | 182 ++++++++++++++ .../select-requirement-or-capability.module.ts | 24 ++ .../error-message/error-message.component.html | 5 - .../modal/error-message/error-message.component.ts | 38 --- .../app/ng2/components/modal/modal.component.html | 20 -- .../app/ng2/components/modal/modal.component.less | 128 ---------- .../app/ng2/components/modal/modal.component.ts | 62 ----- .../src/app/ng2/components/modal/modal.module.ts | 22 -- .../popover/popover-content.component.html | 24 -- .../popover/popover-content.component.less | 77 ------ .../popover/popover-content.component.ts | 278 --------------------- .../ng2/components/popover/popover.component.ts | 179 ------------- .../app/ng2/components/popover/popover.module.ts | 47 ---- .../dynamic-property.component.html | 66 ----- .../dynamic-property.component.less | 74 ------ .../dynamic-property/dynamic-property.component.ts | 205 --------------- .../properties-table.component.html | 63 ----- .../properties-table.component.less | 166 ------------ .../properties-table/properties-table.component.ts | 92 ------- .../tooltip/tooltip-content.component.html | 12 - .../tooltip/tooltip-content.component.less | 11 - .../tooltip/tooltip-content.component.ts | 215 ---------------- .../ng2/components/tooltip/tooltip.component.ts | 109 -------- .../app/ng2/components/tooltip/tooltip.module.ts | 45 ---- .../dynamic-element/dynamic-element.component.less | 3 + .../dynamic-element/dynamic-element.component.ts | 140 +++++++++++ .../ui/dynamic-element/dynamic-element.module.ts | 43 ++++ .../checkbox/checkbox.component.html | 8 + .../checkbox/checkbox.component.less | 67 +++++ .../form-components/checkbox/checkbox.component.ts | 50 ++++ .../ui/form-components/checkbox/checkbox.module.ts | 48 ++++ .../dropdown/ui-element-dropdown.component.html | 3 + .../dropdown/ui-element-dropdown.component.less | 11 + .../dropdown/ui-element-dropdown.component.ts | 51 ++++ .../ui/form-components/form-elements.module.ts | 42 ++++ .../input/ui-element-input.component.html | 14 ++ .../input/ui-element-input.component.less | 17 ++ .../input/ui-element-input.component.ts | 41 +++ .../ui-element-integer-input.component.html | 14 ++ .../ui-element-integer-input.component.less | 17 ++ .../ui-element-integer-input.component.ts | 41 +++ .../ui-element-popover-input.component.html | 26 ++ .../ui-element-popover-input.component.less | 36 +++ .../ui-element-popover-input.component.ts | 57 +++++ .../radio-buttons/radio-button.component.less | 42 ++++ .../radio-buttons/radio-buttons.component.html | 8 + .../radio-buttons/radio-buttons.component.ts | 29 +++ .../form-components/ui-element-base.component.ts | 55 ++++ .../ng2/components/ui/loader/loader.component.html | 6 + .../ng2/components/ui/loader/loader.component.less | 91 +++++++ .../ng2/components/ui/loader/loader.component.ts | 86 +++++++ .../components/ui/menu/menu-item.component.html | 3 + .../components/ui/menu/menu-item.component.less | 13 + .../ng2/components/ui/menu/menu-item.component.ts | 44 ++++ .../components/ui/menu/menu-list.component.html | 9 + .../components/ui/menu/menu-list.component.less | 13 + .../ng2/components/ui/menu/menu-list.component.ts | 70 ++++++ .../app/ng2/components/ui/menu/menu-list.module.ts | 27 ++ .../error-message/error-message.component.html | 5 + .../modal/error-message/error-message.component.ts | 38 +++ .../ng2/components/ui/modal/modal.component.html | 21 ++ .../ng2/components/ui/modal/modal.component.less | 129 ++++++++++ .../app/ng2/components/ui/modal/modal.component.ts | 62 +++++ .../app/ng2/components/ui/modal/modal.module.ts | 22 ++ .../multi-steps-wizard-header-base.component.ts | 10 + .../multi-steps-wizard.component.html | 57 +++++ .../multi-steps-wizard.component.less | 90 +++++++ .../multi-steps-wizard.component.ts | 78 ++++++ .../multi-steps-wizard.module.ts | 22 ++ .../components/ui/navbar/navbar-routes.config.ts | 27 ++ .../ng2/components/ui/navbar/navbar.component.html | 23 ++ .../ng2/components/ui/navbar/navbar.component.less | 11 + .../ng2/components/ui/navbar/navbar.component.ts | 52 ++++ .../ng2/components/ui/navbar/navbar.metadata.ts | 31 +++ .../app/ng2/components/ui/navbar/navbar.module.ts | 36 +++ .../ui/popover/popover-content.component.html | 24 ++ .../ui/popover/popover-content.component.less | 77 ++++++ .../ui/popover/popover-content.component.ts | 278 +++++++++++++++++++++ .../ng2/components/ui/popover/popover.component.ts | 179 +++++++++++++ .../ng2/components/ui/popover/popover.module.ts | 45 ++++ .../ui/search-bar/search-bar.component.html | 5 + .../ui/search-bar/search-bar.component.less | 57 +++++ .../ui/search-bar/search-bar.component.ts | 32 +++ .../search-with-autocomplete.component.html | 6 + .../search-with-autocomplete.component.less | 34 +++ .../search-with-autocomplete.component.ts | 30 +++ .../ng2/components/ui/tabs/tab/tab.component.ts | 38 +++ .../app/ng2/components/ui/tabs/tabs.component.html | 9 + .../app/ng2/components/ui/tabs/tabs.component.less | 85 +++++++ .../app/ng2/components/ui/tabs/tabs.component.ts | 78 ++++++ .../src/app/ng2/components/ui/tabs/tabs.module.ts | 55 ++++ .../ui/tooltip/tooltip-content.component.html | 12 + .../ui/tooltip/tooltip-content.component.less | 11 + .../ui/tooltip/tooltip-content.component.ts | 215 ++++++++++++++++ .../ng2/components/ui/tooltip/tooltip.component.ts | 109 ++++++++ .../ng2/components/ui/tooltip/tooltip.module.ts | 44 ++++ .../app/ng2/components/ui/ui-elements.module.ts | 80 ++++++ .../app/ng2/config/sdc-config.config.factory.ts | 17 ++ catalog-ui/src/app/ng2/config/sdc-config.config.ts | 11 + .../config/translation.service.config.factory.ts | 13 + .../app/ng2/config/translation.service.config.ts | 8 + .../connection-properties-view.component.html | 4 + .../connection-properties-view.component.less | 4 + .../connection-properties-view.component.ts | 10 + .../connection-wizard-header.component.html | 36 +++ .../connection-wizard-header.component.less | 53 ++++ .../connection-wizard-header.component.ts | 37 +++ .../connection-wizard/connection-wizard.module.ts | 43 ++++ .../connection-wizard/connection-wizard.service.ts | 67 +++++ .../from-node-step/from-node-step.component.html | 8 + .../from-node-step/from-node-step.component.ts | 49 ++++ .../properties-step/properties-step.component.html | 13 + .../properties-step/properties-step.component.less | 15 ++ .../properties-step/properties-step.component.ts | 67 +++++ .../to-node-step/to-node-step.component.html | 9 + .../to-node-step/to-node-step.component.ts | 69 +++++ .../properties-assignment.module.ts | 69 ++--- .../properties-assignment.page.component.html | 9 +- .../properties-assignment.page.component.ts | 17 +- .../properties-assignment/properties.utils.ts | 181 -------------- .../services/hierarchy-nav.service.ts | 83 ++++++ .../services/properties.utils.ts | 188 ++++++++++++++ .../app/ng2/pipes/filterChildProperties.pipe.ts | 38 --- .../src/app/ng2/pipes/global-pipes.module.ts | 24 ++ .../src/app/ng2/services/authentication.service.ts | 13 +- .../component-instance.service.ts | 35 ++- .../src/app/ng2/services/component-mode.service.ts | 49 ---- .../component-services/component-mode.service.ts | 49 ++++ .../component-services/component.service.ts | 19 +- .../services/component-services/service.service.ts | 10 +- catalog-ui/src/app/ng2/services/config.service.ts | 12 +- catalog-ui/src/app/ng2/services/cookie.service.ts | 8 +- .../src/app/ng2/services/hierarchy-nav.service.ts | 83 ------ catalog-ui/src/app/ng2/services/http.service.ts | 14 +- catalog-ui/src/app/ng2/services/modal.service.ts | 41 ++- .../src/app/ng2/services/properties.service.ts | 8 +- catalog-ui/src/app/ng2/services/user.service.ts | 98 ++++++++ .../ng2/shared/checkbox/checkbox.component.html | 8 - .../ng2/shared/checkbox/checkbox.component.less | 67 ----- .../app/ng2/shared/checkbox/checkbox.component.ts | 50 ---- .../src/app/ng2/shared/checkbox/checkbox.module.ts | 48 ---- .../app/ng2/shared/navbar/navbar-routes.config.ts | 27 -- .../app/ng2/shared/navbar/navbar.component.html | 23 -- .../app/ng2/shared/navbar/navbar.component.less | 11 - .../src/app/ng2/shared/navbar/navbar.component.ts | 52 ---- .../src/app/ng2/shared/navbar/navbar.metadata.ts | 31 --- .../src/app/ng2/shared/navbar/navbar.module.ts | 36 --- .../shared/search-bar/search-bar.component.html | 5 - .../shared/search-bar/search-bar.component.less | 58 ----- .../ng2/shared/search-bar/search-bar.component.ts | 32 --- .../search-with-autocomplete.component.html | 6 - .../search-with-autocomplete.component.less | 35 --- .../search-with-autocomplete.component.ts | 30 --- catalog-ui/src/app/ng2/shared/shared.module.ts | 40 --- .../src/app/ng2/shared/tabs/tab/tab.component.ts | 38 --- .../src/app/ng2/shared/tabs/tabs.component.html | 9 - .../src/app/ng2/shared/tabs/tabs.component.less | 84 ------- .../src/app/ng2/shared/tabs/tabs.component.ts | 78 ------ catalog-ui/src/app/ng2/shared/tabs/tabs.module.ts | 55 ---- .../app/ng2/shared/translator/translate.module.ts | 32 +++ .../app/ng2/shared/translator/translate.pipe.ts | 62 +++++ .../shared/translator/translate.service.config.ts | 30 +++ .../app/ng2/shared/translator/translate.service.ts | 235 +++++++++++++++++ .../src/app/ng2/utils/ng1-upgraded-provider.ts | 10 + catalog-ui/src/app/services.ts | 1 - .../app/services/components/component-service.ts | 28 ++- catalog-ui/src/app/services/entity-service.ts | 3 +- catalog-ui/src/app/services/loader-service.ts | 8 +- .../src/app/services/user-resource-service.ts | 123 --------- catalog-ui/src/app/utils/component-factory.ts | 19 +- .../src/app/utils/component-instance-factory.ts | 18 +- catalog-ui/src/app/utils/constants.ts | 5 + catalog-ui/src/app/utils/menu-handler.ts | 6 +- .../admin-dashboard/admin-dashboard-view.html | 1 - .../user-management/user-management-view-model.ts | 39 ++- .../user-management/user-management-view.html | 4 +- .../app/view-models/catalog/catalog-view-model.ts | 11 +- .../src/app/view-models/catalog/catalog-view.html | 30 +-- .../view-models/dashboard/dashboard-view-model.ts | 9 +- .../app/view-models/dashboard/dashboard-view.html | 28 +-- .../app/view-models/dcae-app/dcae-app-view.html | 2 +- .../env-parameters-form/env-parameters-form.html | 5 +- .../env-parameters-form/env-parameters-form.less | 4 +- .../env-parameters-form/env-parameters-form.ts | 19 +- .../property-form-view-model.ts | 3 +- .../onboarding-modal-view-model.ts | 1 + .../onboard-vendor/onboard-vendor-view.html | 3 +- .../tabs/composition/composition-view-model.ts | 16 +- .../tabs/composition/composition-view.html | 11 +- .../workspace/tabs/composition/composition.less | 111 +++----- .../tabs/artifacts/artifacts-view-model.ts | 10 +- .../composition/tabs/artifacts/artifacts-view.html | 7 +- .../composition/tabs/details/details-view.html | 11 +- .../tabs/composition/tabs/details/details.less | 2 +- .../workspace/tabs/general/general-view-model.ts | 26 ++ .../workspace/tabs/general/general-view.html | 32 ++- .../tabs/properties/properties-view-model.ts | 3 +- .../view-models/workspace/workspace-view-model.ts | 2 +- .../app/view-models/workspace/workspace-view.html | 10 +- .../src/app/view-models/workspace/workspace.less | 6 +- catalog-ui/src/assets/languages/en_US.json | 5 +- catalog-ui/src/assets/styles/app.less | 2 - .../images/resource-icons/dcae_machineLearning.png | Bin 0 -> 3710 bytes .../styles/images/resource-icons/networkrules.png | Bin 2920 -> 2907 bytes .../assets/styles/images/resource-icons/pmc.png | Bin 0 -> 1453 bytes .../styles/images/resource-icons/securityrules.png | Bin 2965 -> 2980 bytes .../images/service-proxy-icons/call_controll.png | Bin 0 -> 3929 bytes .../images/service-proxy-icons/collaboration.png | Bin 0 -> 4443 bytes .../styles/images/service-proxy-icons/compute.png | Bin 0 -> 3834 bytes .../images/service-proxy-icons/defaulticon.png | Bin 0 -> 2879 bytes .../images/service-proxy-icons/messaging.png | Bin 0 -> 3147 bytes .../styles/images/service-proxy-icons/mobility.png | Bin 0 -> 3771 bytes .../images/service-proxy-icons/network_l_1-3.png | Bin 0 -> 3761 bytes .../images/service-proxy-icons/network_l_4.png | Bin 0 -> 3662 bytes .../images/service-proxy-icons/notification.png | Bin 0 -> 3379 bytes .../styles/images/service-proxy-icons/platform.png | Bin 0 -> 4309 bytes .../styles/images/service-proxy-icons/storage.png | Bin 0 -> 3841 bytes .../images/service-proxy-icons/uncertified.png | Bin 0 -> 1503 bytes .../assets/styles/images/sprites/sprite-global.png | Bin 98178 -> 100635 bytes .../images/sprites/sprite-resource-icons.png | Bin 476775 -> 490295 bytes .../images/sprites/sprite-services-icons.png | Bin 127233 -> 154466 bytes catalog-ui/src/assets/styles/layout/main.less | 11 +- catalog-ui/src/assets/styles/mixins.less | 2 +- catalog-ui/src/assets/styles/modal.less | 6 +- .../assets/styles/sprite-proxy-services-icons.less | 40 +++ .../src/assets/styles/sprite-resource-icons.less | 15 +- catalog-ui/src/assets/styles/sprite.less | 11 + catalog-ui/src/assets/styles/tooltips.less | 13 + catalog-ui/src/main.ts | 5 +- catalog-ui/src/tsconfig.json | 3 +- 354 files changed, 8551 insertions(+), 6168 deletions(-) delete mode 100644 catalog-ui/src/app/directives/ecomp-footer/ecomp-footer.html delete mode 100644 catalog-ui/src/app/directives/ecomp-footer/ecomp-footer.less delete mode 100644 catalog-ui/src/app/directives/ecomp-footer/ecomp-footer.ts delete mode 100644 catalog-ui/src/app/directives/layout/top-nav/top-nav.html delete mode 100644 catalog-ui/src/app/directives/layout/top-nav/top-nav.less delete mode 100644 catalog-ui/src/app/directives/layout/top-nav/top-nav.ts create mode 100644 catalog-ui/src/app/models/componentsInstances/serviceProxyInstance.ts create mode 100644 catalog-ui/src/app/models/graph/connectRelationModel.ts create mode 100644 catalog-ui/src/app/models/graph/nodes/composition-graph-nodes/composition-ci-node-configuration.ts create mode 100644 catalog-ui/src/app/models/graph/nodes/composition-graph-nodes/composition-ci-node-service-proxy.ts delete mode 100644 catalog-ui/src/app/models/graph/relationMenuObjects.ts create mode 100644 catalog-ui/src/app/models/radio-button.ts create mode 100644 catalog-ui/src/app/models/wizard-step.ts create mode 100644 catalog-ui/src/app/ng2/components/downgrade-wrappers/menu-list-ng2/menu-list-ng2.component.html create mode 100644 catalog-ui/src/app/ng2/components/downgrade-wrappers/menu-list-ng2/menu-list-ng2.component.ts create mode 100644 catalog-ui/src/app/ng2/components/downgrade-wrappers/menu-list-ng2/menu-list-ng2.module.ts delete mode 100644 catalog-ui/src/app/ng2/components/dynamic-element/dynamic-element.component.less delete mode 100644 catalog-ui/src/app/ng2/components/dynamic-element/dynamic-element.component.ts delete mode 100644 catalog-ui/src/app/ng2/components/dynamic-element/dynamic-element.module.ts delete mode 100644 catalog-ui/src/app/ng2/components/dynamic-element/elements-ui/checkbox/ui-element-checkbox.component.html delete mode 100644 catalog-ui/src/app/ng2/components/dynamic-element/elements-ui/checkbox/ui-element-checkbox.component.less delete mode 100644 catalog-ui/src/app/ng2/components/dynamic-element/elements-ui/checkbox/ui-element-checkbox.component.ts delete mode 100644 catalog-ui/src/app/ng2/components/dynamic-element/elements-ui/dropdown/ui-element-dropdown.component.html delete mode 100644 catalog-ui/src/app/ng2/components/dynamic-element/elements-ui/dropdown/ui-element-dropdown.component.less delete mode 100644 catalog-ui/src/app/ng2/components/dynamic-element/elements-ui/dropdown/ui-element-dropdown.component.ts delete mode 100644 catalog-ui/src/app/ng2/components/dynamic-element/elements-ui/input/ui-element-input.component.html delete mode 100644 catalog-ui/src/app/ng2/components/dynamic-element/elements-ui/input/ui-element-input.component.less delete mode 100644 catalog-ui/src/app/ng2/components/dynamic-element/elements-ui/input/ui-element-input.component.ts delete mode 100644 catalog-ui/src/app/ng2/components/dynamic-element/elements-ui/integer-input/ui-element-integer-input.component.html delete mode 100644 catalog-ui/src/app/ng2/components/dynamic-element/elements-ui/integer-input/ui-element-integer-input.component.less delete mode 100644 catalog-ui/src/app/ng2/components/dynamic-element/elements-ui/integer-input/ui-element-integer-input.component.ts delete mode 100644 catalog-ui/src/app/ng2/components/dynamic-element/elements-ui/popover-input/ui-element-popover-input.component.html delete mode 100644 catalog-ui/src/app/ng2/components/dynamic-element/elements-ui/popover-input/ui-element-popover-input.component.less delete mode 100644 catalog-ui/src/app/ng2/components/dynamic-element/elements-ui/popover-input/ui-element-popover-input.component.ts delete mode 100644 catalog-ui/src/app/ng2/components/dynamic-element/elements-ui/ui-element-base.component.ts delete mode 100644 catalog-ui/src/app/ng2/components/filter-properties-assignment/filter-properties-assignment.component.html delete mode 100644 catalog-ui/src/app/ng2/components/filter-properties-assignment/filter-properties-assignment.component.less delete mode 100644 catalog-ui/src/app/ng2/components/filter-properties-assignment/filter-properties-assignment.component.ts delete mode 100644 catalog-ui/src/app/ng2/components/hierarchy-navigtion/hierarchy-display-options.ts delete mode 100644 catalog-ui/src/app/ng2/components/hierarchy-navigtion/hierarchy-navigation.component.html delete mode 100644 catalog-ui/src/app/ng2/components/hierarchy-navigtion/hierarchy-navigation.component.less delete mode 100644 catalog-ui/src/app/ng2/components/hierarchy-navigtion/hierarchy-navigation.component.ts delete mode 100644 catalog-ui/src/app/ng2/components/inputs-table/inputs-table.component.html delete mode 100644 catalog-ui/src/app/ng2/components/inputs-table/inputs-table.component.less delete mode 100644 catalog-ui/src/app/ng2/components/inputs-table/inputs-table.component.ts create mode 100644 catalog-ui/src/app/ng2/components/layout/layout.module.ts create mode 100644 catalog-ui/src/app/ng2/components/layout/top-nav/top-nav.component.html create mode 100644 catalog-ui/src/app/ng2/components/layout/top-nav/top-nav.component.less create mode 100644 catalog-ui/src/app/ng2/components/layout/top-nav/top-nav.component.ts delete mode 100644 catalog-ui/src/app/ng2/components/loader/loader.component.html delete mode 100644 catalog-ui/src/app/ng2/components/loader/loader.component.less delete mode 100644 catalog-ui/src/app/ng2/components/loader/loader.component.ts create mode 100644 catalog-ui/src/app/ng2/components/logic/filter-properties-assignment/filter-properties-assignment.component.html create mode 100644 catalog-ui/src/app/ng2/components/logic/filter-properties-assignment/filter-properties-assignment.component.less create mode 100644 catalog-ui/src/app/ng2/components/logic/filter-properties-assignment/filter-properties-assignment.component.ts create mode 100644 catalog-ui/src/app/ng2/components/logic/hierarchy-navigtion/hierarchy-display-options.ts create mode 100644 catalog-ui/src/app/ng2/components/logic/hierarchy-navigtion/hierarchy-navigation.component.html create mode 100644 catalog-ui/src/app/ng2/components/logic/hierarchy-navigtion/hierarchy-navigation.component.less create mode 100644 catalog-ui/src/app/ng2/components/logic/hierarchy-navigtion/hierarchy-navigation.component.ts create mode 100644 catalog-ui/src/app/ng2/components/logic/inputs-table/inputs-table.component.html create mode 100644 catalog-ui/src/app/ng2/components/logic/inputs-table/inputs-table.component.less create mode 100644 catalog-ui/src/app/ng2/components/logic/inputs-table/inputs-table.component.ts create mode 100644 catalog-ui/src/app/ng2/components/logic/properties-table/dynamic-property/dynamic-property.component.html create mode 100644 catalog-ui/src/app/ng2/components/logic/properties-table/dynamic-property/dynamic-property.component.less create mode 100644 catalog-ui/src/app/ng2/components/logic/properties-table/dynamic-property/dynamic-property.component.ts create mode 100644 catalog-ui/src/app/ng2/components/logic/properties-table/pipes/filterChildProperties.pipe.ts create mode 100644 catalog-ui/src/app/ng2/components/logic/properties-table/properties-table.component.html create mode 100644 catalog-ui/src/app/ng2/components/logic/properties-table/properties-table.component.less create mode 100644 catalog-ui/src/app/ng2/components/logic/properties-table/properties-table.component.ts create mode 100644 catalog-ui/src/app/ng2/components/logic/properties-table/property-table.module.ts create mode 100644 catalog-ui/src/app/ng2/components/logic/select-requirement-or-capability/select-reqiurement-or-capability.component.less create mode 100644 catalog-ui/src/app/ng2/components/logic/select-requirement-or-capability/select-requirement-or-capability.component.html create mode 100644 catalog-ui/src/app/ng2/components/logic/select-requirement-or-capability/select-requirement-or-capability.component.ts create mode 100644 catalog-ui/src/app/ng2/components/logic/select-requirement-or-capability/select-requirement-or-capability.module.ts delete mode 100644 catalog-ui/src/app/ng2/components/modal/error-message/error-message.component.html delete mode 100644 catalog-ui/src/app/ng2/components/modal/error-message/error-message.component.ts delete mode 100644 catalog-ui/src/app/ng2/components/modal/modal.component.html delete mode 100644 catalog-ui/src/app/ng2/components/modal/modal.component.less delete mode 100644 catalog-ui/src/app/ng2/components/modal/modal.component.ts delete mode 100644 catalog-ui/src/app/ng2/components/modal/modal.module.ts delete mode 100644 catalog-ui/src/app/ng2/components/popover/popover-content.component.html delete mode 100644 catalog-ui/src/app/ng2/components/popover/popover-content.component.less delete mode 100644 catalog-ui/src/app/ng2/components/popover/popover-content.component.ts delete mode 100644 catalog-ui/src/app/ng2/components/popover/popover.component.ts delete mode 100644 catalog-ui/src/app/ng2/components/popover/popover.module.ts delete mode 100644 catalog-ui/src/app/ng2/components/properties-table/dynamic-property/dynamic-property.component.html delete mode 100644 catalog-ui/src/app/ng2/components/properties-table/dynamic-property/dynamic-property.component.less delete mode 100644 catalog-ui/src/app/ng2/components/properties-table/dynamic-property/dynamic-property.component.ts delete mode 100644 catalog-ui/src/app/ng2/components/properties-table/properties-table.component.html delete mode 100644 catalog-ui/src/app/ng2/components/properties-table/properties-table.component.less delete mode 100644 catalog-ui/src/app/ng2/components/properties-table/properties-table.component.ts delete mode 100644 catalog-ui/src/app/ng2/components/tooltip/tooltip-content.component.html delete mode 100644 catalog-ui/src/app/ng2/components/tooltip/tooltip-content.component.less delete mode 100644 catalog-ui/src/app/ng2/components/tooltip/tooltip-content.component.ts delete mode 100644 catalog-ui/src/app/ng2/components/tooltip/tooltip.component.ts delete mode 100644 catalog-ui/src/app/ng2/components/tooltip/tooltip.module.ts create mode 100644 catalog-ui/src/app/ng2/components/ui/dynamic-element/dynamic-element.component.less create mode 100644 catalog-ui/src/app/ng2/components/ui/dynamic-element/dynamic-element.component.ts create mode 100644 catalog-ui/src/app/ng2/components/ui/dynamic-element/dynamic-element.module.ts create mode 100644 catalog-ui/src/app/ng2/components/ui/form-components/checkbox/checkbox.component.html create mode 100644 catalog-ui/src/app/ng2/components/ui/form-components/checkbox/checkbox.component.less create mode 100644 catalog-ui/src/app/ng2/components/ui/form-components/checkbox/checkbox.component.ts create mode 100644 catalog-ui/src/app/ng2/components/ui/form-components/checkbox/checkbox.module.ts create mode 100644 catalog-ui/src/app/ng2/components/ui/form-components/dropdown/ui-element-dropdown.component.html create mode 100644 catalog-ui/src/app/ng2/components/ui/form-components/dropdown/ui-element-dropdown.component.less create mode 100644 catalog-ui/src/app/ng2/components/ui/form-components/dropdown/ui-element-dropdown.component.ts create mode 100644 catalog-ui/src/app/ng2/components/ui/form-components/form-elements.module.ts create mode 100644 catalog-ui/src/app/ng2/components/ui/form-components/input/ui-element-input.component.html create mode 100644 catalog-ui/src/app/ng2/components/ui/form-components/input/ui-element-input.component.less create mode 100644 catalog-ui/src/app/ng2/components/ui/form-components/input/ui-element-input.component.ts create mode 100644 catalog-ui/src/app/ng2/components/ui/form-components/integer-input/ui-element-integer-input.component.html create mode 100644 catalog-ui/src/app/ng2/components/ui/form-components/integer-input/ui-element-integer-input.component.less create mode 100644 catalog-ui/src/app/ng2/components/ui/form-components/integer-input/ui-element-integer-input.component.ts create mode 100644 catalog-ui/src/app/ng2/components/ui/form-components/popover-input/ui-element-popover-input.component.html create mode 100644 catalog-ui/src/app/ng2/components/ui/form-components/popover-input/ui-element-popover-input.component.less create mode 100644 catalog-ui/src/app/ng2/components/ui/form-components/popover-input/ui-element-popover-input.component.ts create mode 100644 catalog-ui/src/app/ng2/components/ui/form-components/radio-buttons/radio-button.component.less create mode 100644 catalog-ui/src/app/ng2/components/ui/form-components/radio-buttons/radio-buttons.component.html create mode 100644 catalog-ui/src/app/ng2/components/ui/form-components/radio-buttons/radio-buttons.component.ts create mode 100644 catalog-ui/src/app/ng2/components/ui/form-components/ui-element-base.component.ts create mode 100644 catalog-ui/src/app/ng2/components/ui/loader/loader.component.html create mode 100644 catalog-ui/src/app/ng2/components/ui/loader/loader.component.less create mode 100644 catalog-ui/src/app/ng2/components/ui/loader/loader.component.ts create mode 100644 catalog-ui/src/app/ng2/components/ui/menu/menu-item.component.html create mode 100644 catalog-ui/src/app/ng2/components/ui/menu/menu-item.component.less create mode 100644 catalog-ui/src/app/ng2/components/ui/menu/menu-item.component.ts create mode 100644 catalog-ui/src/app/ng2/components/ui/menu/menu-list.component.html create mode 100644 catalog-ui/src/app/ng2/components/ui/menu/menu-list.component.less create mode 100644 catalog-ui/src/app/ng2/components/ui/menu/menu-list.component.ts create mode 100644 catalog-ui/src/app/ng2/components/ui/menu/menu-list.module.ts create mode 100644 catalog-ui/src/app/ng2/components/ui/modal/error-message/error-message.component.html create mode 100644 catalog-ui/src/app/ng2/components/ui/modal/error-message/error-message.component.ts create mode 100644 catalog-ui/src/app/ng2/components/ui/modal/modal.component.html create mode 100644 catalog-ui/src/app/ng2/components/ui/modal/modal.component.less create mode 100644 catalog-ui/src/app/ng2/components/ui/modal/modal.component.ts create mode 100644 catalog-ui/src/app/ng2/components/ui/modal/modal.module.ts create mode 100644 catalog-ui/src/app/ng2/components/ui/multi-steps-wizard/multi-steps-wizard-header-base.component.ts create mode 100644 catalog-ui/src/app/ng2/components/ui/multi-steps-wizard/multi-steps-wizard.component.html create mode 100644 catalog-ui/src/app/ng2/components/ui/multi-steps-wizard/multi-steps-wizard.component.less create mode 100644 catalog-ui/src/app/ng2/components/ui/multi-steps-wizard/multi-steps-wizard.component.ts create mode 100644 catalog-ui/src/app/ng2/components/ui/multi-steps-wizard/multi-steps-wizard.module.ts create mode 100644 catalog-ui/src/app/ng2/components/ui/navbar/navbar-routes.config.ts create mode 100644 catalog-ui/src/app/ng2/components/ui/navbar/navbar.component.html create mode 100644 catalog-ui/src/app/ng2/components/ui/navbar/navbar.component.less create mode 100644 catalog-ui/src/app/ng2/components/ui/navbar/navbar.component.ts create mode 100644 catalog-ui/src/app/ng2/components/ui/navbar/navbar.metadata.ts create mode 100644 catalog-ui/src/app/ng2/components/ui/navbar/navbar.module.ts create mode 100644 catalog-ui/src/app/ng2/components/ui/popover/popover-content.component.html create mode 100644 catalog-ui/src/app/ng2/components/ui/popover/popover-content.component.less create mode 100644 catalog-ui/src/app/ng2/components/ui/popover/popover-content.component.ts create mode 100644 catalog-ui/src/app/ng2/components/ui/popover/popover.component.ts create mode 100644 catalog-ui/src/app/ng2/components/ui/popover/popover.module.ts create mode 100644 catalog-ui/src/app/ng2/components/ui/search-bar/search-bar.component.html create mode 100644 catalog-ui/src/app/ng2/components/ui/search-bar/search-bar.component.less create mode 100644 catalog-ui/src/app/ng2/components/ui/search-bar/search-bar.component.ts create mode 100644 catalog-ui/src/app/ng2/components/ui/search-with-autocomplete/search-with-autocomplete.component.html create mode 100644 catalog-ui/src/app/ng2/components/ui/search-with-autocomplete/search-with-autocomplete.component.less create mode 100644 catalog-ui/src/app/ng2/components/ui/search-with-autocomplete/search-with-autocomplete.component.ts create mode 100644 catalog-ui/src/app/ng2/components/ui/tabs/tab/tab.component.ts create mode 100644 catalog-ui/src/app/ng2/components/ui/tabs/tabs.component.html create mode 100644 catalog-ui/src/app/ng2/components/ui/tabs/tabs.component.less create mode 100644 catalog-ui/src/app/ng2/components/ui/tabs/tabs.component.ts create mode 100644 catalog-ui/src/app/ng2/components/ui/tabs/tabs.module.ts create mode 100644 catalog-ui/src/app/ng2/components/ui/tooltip/tooltip-content.component.html create mode 100644 catalog-ui/src/app/ng2/components/ui/tooltip/tooltip-content.component.less create mode 100644 catalog-ui/src/app/ng2/components/ui/tooltip/tooltip-content.component.ts create mode 100644 catalog-ui/src/app/ng2/components/ui/tooltip/tooltip.component.ts create mode 100644 catalog-ui/src/app/ng2/components/ui/tooltip/tooltip.module.ts create mode 100644 catalog-ui/src/app/ng2/components/ui/ui-elements.module.ts create mode 100644 catalog-ui/src/app/ng2/config/sdc-config.config.factory.ts create mode 100644 catalog-ui/src/app/ng2/config/sdc-config.config.ts create mode 100644 catalog-ui/src/app/ng2/config/translation.service.config.factory.ts create mode 100644 catalog-ui/src/app/ng2/config/translation.service.config.ts create mode 100644 catalog-ui/src/app/ng2/pages/connection-wizard/connection-properties-view/connection-properties-view.component.html create mode 100644 catalog-ui/src/app/ng2/pages/connection-wizard/connection-properties-view/connection-properties-view.component.less create mode 100644 catalog-ui/src/app/ng2/pages/connection-wizard/connection-properties-view/connection-properties-view.component.ts create mode 100644 catalog-ui/src/app/ng2/pages/connection-wizard/connection-wizard-header/connection-wizard-header.component.html create mode 100644 catalog-ui/src/app/ng2/pages/connection-wizard/connection-wizard-header/connection-wizard-header.component.less create mode 100644 catalog-ui/src/app/ng2/pages/connection-wizard/connection-wizard-header/connection-wizard-header.component.ts create mode 100644 catalog-ui/src/app/ng2/pages/connection-wizard/connection-wizard.module.ts create mode 100644 catalog-ui/src/app/ng2/pages/connection-wizard/connection-wizard.service.ts create mode 100644 catalog-ui/src/app/ng2/pages/connection-wizard/from-node-step/from-node-step.component.html create mode 100644 catalog-ui/src/app/ng2/pages/connection-wizard/from-node-step/from-node-step.component.ts create mode 100644 catalog-ui/src/app/ng2/pages/connection-wizard/properties-step/properties-step.component.html create mode 100644 catalog-ui/src/app/ng2/pages/connection-wizard/properties-step/properties-step.component.less create mode 100644 catalog-ui/src/app/ng2/pages/connection-wizard/properties-step/properties-step.component.ts create mode 100644 catalog-ui/src/app/ng2/pages/connection-wizard/to-node-step/to-node-step.component.html create mode 100644 catalog-ui/src/app/ng2/pages/connection-wizard/to-node-step/to-node-step.component.ts delete mode 100644 catalog-ui/src/app/ng2/pages/properties-assignment/properties.utils.ts create mode 100644 catalog-ui/src/app/ng2/pages/properties-assignment/services/hierarchy-nav.service.ts create mode 100644 catalog-ui/src/app/ng2/pages/properties-assignment/services/properties.utils.ts delete mode 100644 catalog-ui/src/app/ng2/pipes/filterChildProperties.pipe.ts create mode 100644 catalog-ui/src/app/ng2/pipes/global-pipes.module.ts delete mode 100644 catalog-ui/src/app/ng2/services/component-mode.service.ts create mode 100644 catalog-ui/src/app/ng2/services/component-services/component-mode.service.ts delete mode 100644 catalog-ui/src/app/ng2/services/hierarchy-nav.service.ts create mode 100644 catalog-ui/src/app/ng2/services/user.service.ts delete mode 100644 catalog-ui/src/app/ng2/shared/checkbox/checkbox.component.html delete mode 100644 catalog-ui/src/app/ng2/shared/checkbox/checkbox.component.less delete mode 100644 catalog-ui/src/app/ng2/shared/checkbox/checkbox.component.ts delete mode 100644 catalog-ui/src/app/ng2/shared/checkbox/checkbox.module.ts delete mode 100644 catalog-ui/src/app/ng2/shared/navbar/navbar-routes.config.ts delete mode 100644 catalog-ui/src/app/ng2/shared/navbar/navbar.component.html delete mode 100644 catalog-ui/src/app/ng2/shared/navbar/navbar.component.less delete mode 100644 catalog-ui/src/app/ng2/shared/navbar/navbar.component.ts delete mode 100644 catalog-ui/src/app/ng2/shared/navbar/navbar.metadata.ts delete mode 100644 catalog-ui/src/app/ng2/shared/navbar/navbar.module.ts delete mode 100644 catalog-ui/src/app/ng2/shared/search-bar/search-bar.component.html delete mode 100644 catalog-ui/src/app/ng2/shared/search-bar/search-bar.component.less delete mode 100644 catalog-ui/src/app/ng2/shared/search-bar/search-bar.component.ts delete mode 100644 catalog-ui/src/app/ng2/shared/search-with-autocomplete/search-with-autocomplete.component.html delete mode 100644 catalog-ui/src/app/ng2/shared/search-with-autocomplete/search-with-autocomplete.component.less delete mode 100644 catalog-ui/src/app/ng2/shared/search-with-autocomplete/search-with-autocomplete.component.ts delete mode 100644 catalog-ui/src/app/ng2/shared/shared.module.ts delete mode 100644 catalog-ui/src/app/ng2/shared/tabs/tab/tab.component.ts delete mode 100644 catalog-ui/src/app/ng2/shared/tabs/tabs.component.html delete mode 100644 catalog-ui/src/app/ng2/shared/tabs/tabs.component.less delete mode 100644 catalog-ui/src/app/ng2/shared/tabs/tabs.component.ts delete mode 100644 catalog-ui/src/app/ng2/shared/tabs/tabs.module.ts create mode 100644 catalog-ui/src/app/ng2/shared/translator/translate.module.ts create mode 100644 catalog-ui/src/app/ng2/shared/translator/translate.pipe.ts create mode 100644 catalog-ui/src/app/ng2/shared/translator/translate.service.config.ts create mode 100644 catalog-ui/src/app/ng2/shared/translator/translate.service.ts delete mode 100644 catalog-ui/src/app/services/user-resource-service.ts create mode 100644 catalog-ui/src/assets/styles/images/resource-icons/dcae_machineLearning.png create mode 100644 catalog-ui/src/assets/styles/images/resource-icons/pmc.png create mode 100644 catalog-ui/src/assets/styles/images/service-proxy-icons/call_controll.png create mode 100644 catalog-ui/src/assets/styles/images/service-proxy-icons/collaboration.png create mode 100644 catalog-ui/src/assets/styles/images/service-proxy-icons/compute.png create mode 100644 catalog-ui/src/assets/styles/images/service-proxy-icons/defaulticon.png create mode 100644 catalog-ui/src/assets/styles/images/service-proxy-icons/messaging.png create mode 100644 catalog-ui/src/assets/styles/images/service-proxy-icons/mobility.png create mode 100644 catalog-ui/src/assets/styles/images/service-proxy-icons/network_l_1-3.png create mode 100644 catalog-ui/src/assets/styles/images/service-proxy-icons/network_l_4.png create mode 100644 catalog-ui/src/assets/styles/images/service-proxy-icons/notification.png create mode 100644 catalog-ui/src/assets/styles/images/service-proxy-icons/platform.png create mode 100644 catalog-ui/src/assets/styles/images/service-proxy-icons/storage.png create mode 100644 catalog-ui/src/assets/styles/images/service-proxy-icons/uncertified.png create mode 100644 catalog-ui/src/assets/styles/sprite-proxy-services-icons.less (limited to 'catalog-ui') diff --git a/catalog-ui/configurations/dev.js b/catalog-ui/configurations/dev.js index b68842c3fc..8367963adf 100644 --- a/catalog-ui/configurations/dev.js +++ b/catalog-ui/configurations/dev.js @@ -61,7 +61,7 @@ const SDC_CONFIG = { }, "resourceTypesFilter":{ "resource":["CP","VFC","VL"], - "service":["CP","VF","VL", "PNF","CVFC"] + "service":["CP","VF","VL", "PNF","CVFC","SERVICE", "Configuration"] }, "logConfig": { "minLogLevel": "debug", diff --git a/catalog-ui/configurations/prod.js b/catalog-ui/configurations/prod.js index 971263b710..0891f8d572 100644 --- a/catalog-ui/configurations/prod.js +++ b/catalog-ui/configurations/prod.js @@ -61,7 +61,7 @@ const SDC_CONFIG = { }, "resourceTypesFilter":{ "resource":["CP","VFC","VL"], - "service":["CP","VF","VL", "PNF","CVFC"] + "service":["CP","VF","VL", "PNF","CVFC","SERVICE","Configuration"] }, "logConfig": { "minLogLevel": "debug", diff --git a/catalog-ui/package.json b/catalog-ui/package.json index d384a9c119..9dd0620ea9 100644 --- a/catalog-ui/package.json +++ b/catalog-ui/package.json @@ -45,7 +45,7 @@ "raw-loader": "^0.5.1", "sass-loader": "^4.1.1", "script-loader": "^0.7.0", - "sdc-ui": "1.6.2", + "sdc-ui": "1.6.9", "source-map-loader": "^0.1.5", "style-loader": "^0.13.1", "url-loader": "^0.5.7", diff --git a/catalog-ui/src/app/app.ts b/catalog-ui/src/app/app.ts index 805e5f0b5d..609ed48f3e 100644 --- a/catalog-ui/src/app/app.ts +++ b/catalog-ui/src/app/app.ts @@ -31,18 +31,17 @@ import './modules/service-module'; import './modules/view-model-module.ts'; import { - IUserResourceClass, DataTypesService, LeftPaletteLoaderService, EcompHeaderService, CookieService, ConfigurationUiService, CacheService, - IUserResource, SdcVersionService, ICategoryResourceClass, EntityService } from "./services"; +import { UserService } from "./ng2/services/user.service"; import {forwardRef} from '@angular/core'; import {UpgradeAdapter} from '@angular/upgrade'; import {CHANGE_COMPONENT_CSAR_VERSION_FLAG, States} from "./utils"; @@ -53,11 +52,12 @@ import {downgradeComponent} from "@angular/upgrade/static"; import {AppModule} from './ng2/app.module'; import {PropertiesAssignmentComponent} from "./ng2/pages/properties-assignment/properties-assignment.page.component"; -import { SearchWithAutoCompleteComponent } from "./ng2/shared/search-with-autocomplete/search-with-autocomplete.component"; import {Component} from "./models/components/component"; import {ComponentServiceNg2} from "./ng2/services/component-services/component.service"; import {ComponentMetadata} from "./models/component-metadata"; import {Categories} from "./models/categories"; +import {IUserProperties} from "./models/user"; +import {SearchWithAutoCompleteComponent} from "./ng2/components/ui/search-with-autocomplete/search-with-autocomplete.component"; let moduleName:string = 'sdcApp'; @@ -225,7 +225,13 @@ ng1appModule.config([ resolve: { injectComponent: ['$stateParams', 'ComponentFactory', 'ComponentServiceNg2', function ($stateParams, ComponentFactory:ComponentFactory, ComponentServiceNg2:ComponentServiceNg2) { if ($stateParams.id) { - return ComponentFactory.getComponentWithMetadataFromServer($stateParams.type.toUpperCase(), $stateParams.id); + return ComponentFactory.getComponentWithMetadataFromServer($stateParams.type.toUpperCase(), $stateParams.id).then( + (component:Component)=> { + if ($stateParams.componentCsar){ + component = ComponentFactory.updateComponentFromCsar($stateParams.componentCsar, component); + } + return component; + }); } else if ($stateParams.componentCsar && $stateParams.componentCsar.csarUUID) { return $stateParams.componentCsar; } else { @@ -546,8 +552,8 @@ ng1appModule.config([ templateUrl: './view-models/catalog/catalog-view.html', controller: viewModelsModuleName + '.CatalogViewModel', resolve: { - auth: ["$q", "Sdc.Services.UserResourceService", ($q:any, userResourceService:IUserResourceClass) => { - let userInfo:IUserResource = userResourceService.getLoggedinUser(); + auth: ["$q", "UserServiceNg2", ($q:any, userService:UserService) => { + let userInfo:IUserProperties = userService.getLoggedinUser(); if (userInfo) { return $q.when(userInfo); } else { @@ -592,6 +598,7 @@ ng1appModule.value('TagValidationPattern', /^[\s\w_.-]{1,50}$/); ng1appModule.value('VendorReleaseValidationPattern', /^[\x20-\x21\x23-\x29\x2B-\x2E\x30-\x39\x3B\x3D\x40-\x5B\x5D-\x7B\x7D-\xFF]{1,25}$/); ng1appModule.value('VendorNameValidationPattern', /^[\x20-\x21\x23-\x29\x2B-\x2E\x30-\x39\x3B\x3D\x40-\x5B\x5D-\x7B\x7D-\xFF]{1,60}$/); ng1appModule.value('VendorModelNumberValidationPattern', /^[\x20-\x21\x23-\x29\x2B-\x2E\x30-\x39\x3B\x3D\x40-\x5B\x5D-\x7B\x7D-\xFF]{1,65}$/); +ng1appModule.value('ServiceTypeAndRoleValidationPattern', /^[\x20-\x21\x23-\x29\x2B-\x2E\x30-\x39\x3B\x3D\x40-\x5B\x5D-\x7B\x7D-\xFF]{1,256}$/); ng1appModule.value('ContactIdValidationPattern', /^[\s\w-]{1,50}$/); ng1appModule.value('UserIdValidationPattern', /^[\s\w-]{1,50}$/); ng1appModule.value('ProjectCodeValidationPattern', /^[\s\w-]{5,50}$/); @@ -614,7 +621,7 @@ ng1appModule.run([ 'Sdc.Services.CacheService', 'Sdc.Services.CookieService', 'Sdc.Services.ConfigurationUiService', - 'Sdc.Services.UserResourceService', + 'UserServiceNg2', 'Sdc.Services.CategoryResourceService', 'Sdc.Services.SdcVersionService', '$state', @@ -631,7 +638,7 @@ ng1appModule.run([ cacheService:CacheService, cookieService:CookieService, ConfigurationUi:ConfigurationUiService, - UserResourceClass:IUserResourceClass, + userService:UserService, categoryResourceService:ICategoryResourceClass, sdcVersionService:SdcVersionService, $state:ng.ui.IStateService, @@ -644,6 +651,7 @@ ng1appModule.run([ DataTypesService:DataTypesService, AngularJSBridge, $templateCache:ng.ITemplateCacheService):void => { + $templateCache.put('notification-custom-template.html', require('./view-models/shared/notification-custom-template.html')); $templateCache.put('notification-custom-template.html', require('./view-models/shared/notification-custom-template.html')); //handle cache data - version let initAsdcVersion:Function = ():void => { @@ -756,27 +764,27 @@ ng1appModule.run([ toParams.previousState = fromParams.previousState; } - if (toState.name !== 'error-403' && !UserResourceClass.getLoggedinUser()) { + if (toState.name !== 'error-403' && !userService.getLoggedinUser()) { internalDeregisterStateChangeStartWatcher(); event.preventDefault(); - UserResourceClass.authorize().$promise.then((user:IUserResource) => { - if (!doesUserHasAccess(toState, user)) { + userService.authorize().subscribe((userInfo:IUserProperties) => { + if (!doesUserHasAccess(toState, userInfo)) { $state.go('error-403'); console.info('User has no permissions'); registerStateChangeStartWatcher(); return; } - UserResourceClass.setLoggedinUser(user); - cacheService.set('user', user); + userService.setLoggedinUser(userInfo); + cacheService.set('user', userInfo); initCategories(); - // initEcompMenu(user); + // initEcompMenu(userInfo); setTimeout(function () { removeLoader(); // initCategories(); - if (UserResourceClass.getLoggedinUser().role === 'ADMIN') { + if (userService.getLoggedinUser().role === 'ADMIN') { // toState.name = "adminDashboard"; $state.go("adminDashboard", toParams); registerStateChangeStartWatcher(); @@ -804,9 +812,9 @@ ng1appModule.run([ registerStateChangeStartWatcher(); }); } - else if (UserResourceClass.getLoggedinUser()) { + else if (userService.getLoggedinUser()) { internalDeregisterStateChangeStartWatcher(); - if (!doesUserHasAccess(toState, UserResourceClass.getLoggedinUser())) { + if (!doesUserHasAccess(toState, userService.getLoggedinUser())) { event.preventDefault(); $state.go('error-403'); console.info('User has no permissions'); diff --git a/catalog-ui/src/app/directives/capabilities-and-requirements/requirement/requirements-list-directive.ts b/catalog-ui/src/app/directives/capabilities-and-requirements/requirement/requirements-list-directive.ts index 1c5c333d27..14cafa98c4 100644 --- a/catalog-ui/src/app/directives/capabilities-and-requirements/requirement/requirements-list-directive.ts +++ b/catalog-ui/src/app/directives/capabilities-and-requirements/requirement/requirements-list-directive.ts @@ -28,7 +28,7 @@ * Created by obarda on 1/8/2017. */ 'use strict'; -import {RequirementsGroup, Component} from "app/models"; +import {RequirementsGroup, Component, Relationship, RelationshipModel} from "app/models"; export interface IRequirementsListScope extends ng.IScope { @@ -62,12 +62,11 @@ export class RequirementsListDirective implements ng.IDirective { scope.getRelation = (requirement:any):any => { if (scope.isInstanceSelected() && scope.component.componentInstancesRelations) { - let relationItem = _.filter(scope.component.componentInstancesRelations, (relation:any) => { + let relationItem:Array = _.filter((scope.component).componentInstancesRelations, (relation:RelationshipModel) => { return relation.fromNode === scope.component.selectedInstance.uniqueId && - _.some(relation.relationships, { - 'requirement': requirement.name, - 'requirementOwnerId': requirement.ownerId - }); + _.filter(relation.relationships, (relationship:Relationship) => { + return relationship.relation.requirement == requirement.name && relationship.relation.requirementOwnerId == requirement.ownerId; + }).length; }); if (relationItem && relationItem.length) { diff --git a/catalog-ui/src/app/directives/ecomp-footer/ecomp-footer.html b/catalog-ui/src/app/directives/ecomp-footer/ecomp-footer.html deleted file mode 100644 index a50731443d..0000000000 --- a/catalog-ui/src/app/directives/ecomp-footer/ecomp-footer.html +++ /dev/null @@ -1,8 +0,0 @@ - diff --git a/catalog-ui/src/app/directives/ecomp-footer/ecomp-footer.less b/catalog-ui/src/app/directives/ecomp-footer/ecomp-footer.less deleted file mode 100644 index 4c54a11fec..0000000000 --- a/catalog-ui/src/app/directives/ecomp-footer/ecomp-footer.less +++ /dev/null @@ -1,47 +0,0 @@ - -.footer-wrapper { - position: fixed; - bottom: 0px; - left: 0px; - width: 100%; - background-color: #222222; - color: #ffffff; - font-family: "Arial"; - font-size: 11px; - height: @footer_height; -} - -.footer-wrapper a { - color: #ffffff; - margin: 0; - padding: 0; - text-decoration: underline; -} - -.divider-footer-bottom { - margin: 0 auto; - width: 1020px; -} - -.footer-copyright-text { - display: inline-block; - width:612px; - margin-top: 18px; - margin-left: 50px; - text-align: left; - vertical-align: top; -} - -.footer-logo1 { - display: inline-block; - margin-top: 20px; - margin-left: 124px; -} - -.footer-logo2 { - margin-top: 22px; - margin-left: 9px; - display: inline-block; - font-size: 24px; - vertical-align: top; -} diff --git a/catalog-ui/src/app/directives/ecomp-footer/ecomp-footer.ts b/catalog-ui/src/app/directives/ecomp-footer/ecomp-footer.ts deleted file mode 100644 index 7796f60d70..0000000000 --- a/catalog-ui/src/app/directives/ecomp-footer/ecomp-footer.ts +++ /dev/null @@ -1,53 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * SDC - * ================================================================================ - * 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. - * ============LICENSE_END========================================================= - */ - -'use strict'; -import {IAppConfigurtaion} from "app/models"; - -export interface IEcompFooterDirectiveScope extends ng.IScope { - -} - -export class EcompFooterDirective implements ng.IDirective { - - constructor(private sdcConfig:IAppConfigurtaion) { - - } - - public replace = true; - public restrict = 'E'; - - public scope = {}; - - template = ():string => { - return require('./ecomp-footer.html'); - }; - - link = (scope:IEcompFooterDirectiveScope, $elem:JQuery, attr:any) => { - - }; - - public static factory = (sdcConfig:IAppConfigurtaion)=> { - return new EcompFooterDirective(sdcConfig); - }; - -} - -EcompFooterDirective.factory.$inject = ['sdcConfig']; diff --git a/catalog-ui/src/app/directives/ecomp-header/ecomp-header.ts b/catalog-ui/src/app/directives/ecomp-header/ecomp-header.ts index 7d616afba6..f73c82a190 100644 --- a/catalog-ui/src/app/directives/ecomp-header/ecomp-header.ts +++ b/catalog-ui/src/app/directives/ecomp-header/ecomp-header.ts @@ -20,7 +20,8 @@ 'use strict'; import {IAppConfigurtaion, User, IUser} from "app/models"; -import {IUserResourceClass, IUserResource} from "app/services"; +import {IUserProperties} from "../../models/user"; +import {UserService} from "../../ng2/services/user.service"; export class MenuItem { menuId:number; @@ -55,7 +56,7 @@ export class EcompHeaderDirective implements ng.IDirective { constructor(private $http:ng.IHttpService, private sdcConfig:IAppConfigurtaion, - private UserResourceClass:IUserResourceClass) { + private userService:UserService) { } @@ -90,14 +91,14 @@ export class EcompHeaderDirective implements ng.IDirective { let initUser = ():void => { let defaultUserId:string; - let user:IUserResource = this.UserResourceClass.getLoggedinUser(); - if (!user) { + let userInfo:IUserProperties = this.userService.getLoggedinUser(); + if (!userInfo) { defaultUserId = this.$http.defaults.headers.common[this.sdcConfig.cookie.userIdSuffix]; - user = this.UserResourceClass.get({id: defaultUserId}, ():void => { - $scope.user = new User(user); + this.userService.getUser(defaultUserId).subscribe((defaultUserInfo):void => { + $scope.user = new User(defaultUserInfo); }); } else { - $scope.user = new User(user); + $scope.user = new User(userInfo); } }; @@ -135,8 +136,8 @@ export class EcompHeaderDirective implements ng.IDirective { public static factory = ($http:ng.IHttpService, sdcConfig:IAppConfigurtaion, - UserResourceClass:IUserResourceClass)=> { - return new EcompHeaderDirective($http, sdcConfig, UserResourceClass); + userService:UserService)=> { + return new EcompHeaderDirective($http, sdcConfig, userService); }; } @@ -229,7 +230,7 @@ export class EcompHeaderController { }; } -EcompHeaderDirective.factory.$inject = ['$http', 'sdcConfig', 'Sdc.Services.UserResourceService']; +EcompHeaderDirective.factory.$inject = ['$http', 'sdcConfig', 'UserServiceNg2']; diff --git a/catalog-ui/src/app/directives/graphs-v2/common/common-graph-utils.ts b/catalog-ui/src/app/directives/graphs-v2/common/common-graph-utils.ts index f88db47524..2a7fd74e53 100644 --- a/catalog-ui/src/app/directives/graphs-v2/common/common-graph-utils.ts +++ b/catalog-ui/src/app/directives/graphs-v2/common/common-graph-utils.ts @@ -164,12 +164,54 @@ export class CommonGraphUtils { if (!this.isRelationCertified(cy.nodes(), link.source, link.target)) { link.classes = 'not-certified-link'; } - cy.add({ + let linkElement = cy.add({ group: 'edges', data: link, classes: link.classes }); + this.initLinkTooltip(linkElement, link); + }; + + /** + * This function will init qtip tooltip on the link + * @params linkElement - the link we want the tooltip to apply on, + * link - the link obj + */ + public initLinkTooltip(linkElement:Cy.CollectionElements, link:CompositionCiLinkBase) { + + let opts = { + content: function () { + return '
' + + 'R: ' + + ''+ link.relation.relationships[0].relation.requirement + '' + + '
' + + '
' + + '' + + 'C: ' + + '' + link.relation.relationships[0].relation.capability + '' + + '
'; + }, + position: { + my: 'top center', + at: 'bottom center', + adjust: {x:0, y:0} + }, + style: { + classes: 'qtip-dark qtip-rounded qtip-custom link-qtip', + tip: { + width: 16, + height: 8 + } + }, + show: { + event: 'mouseover', + delay: 1000 + }, + hide: {event: 'mouseout mousedown'}, + includeLabels: true + }; + linkElement.qtip(opts); }; /** diff --git a/catalog-ui/src/app/directives/graphs-v2/common/style/component-instances-nodes-style.ts b/catalog-ui/src/app/directives/graphs-v2/common/style/component-instances-nodes-style.ts index 7e21f8293b..36c75c55fc 100644 --- a/catalog-ui/src/app/directives/graphs-v2/common/style/component-instances-nodes-style.ts +++ b/catalog-ui/src/app/directives/graphs-v2/common/style/component-instances-nodes-style.ts @@ -225,6 +225,23 @@ export class ComponentInstanceNodesStyle { css: { 'overlay-opacity': 0 } + }, { + selector: '.configuration-node', + css: { + 'background-color': 'rgb(255,255,255)', + 'shape': 'rectangle', + 'label': 'data(displayName)', + 'background-image': 'data(img)', + 'background-width': GraphUIObjects.SMALL_RESOURCE_WIDTH, + 'background-height': GraphUIObjects.SMALL_RESOURCE_WIDTH, + 'width': GraphUIObjects.SMALL_RESOURCE_WIDTH, + 'height': GraphUIObjects.SMALL_RESOURCE_WIDTH, + 'text-valign': 'bottom', + 'text-halign': 'center', + 'background-opacity': 0, + 'overlay-color': GraphColors.NODE_BACKGROUND_COLOR, + 'overlay-opacity': 0 + } } ] } diff --git a/catalog-ui/src/app/directives/graphs-v2/composition-graph/composition-graph.directive.ts b/catalog-ui/src/app/directives/graphs-v2/composition-graph/composition-graph.directive.ts index 8b3a59ec1f..cdb163bda1 100644 --- a/catalog-ui/src/app/directives/graphs-v2/composition-graph/composition-graph.directive.ts +++ b/catalog-ui/src/app/directives/graphs-v2/composition-graph/composition-graph.directive.ts @@ -19,14 +19,20 @@ */ import { - MatchBase, + Match, LinkMenu, ComponentInstance, LeftPaletteComponent, + Capability, + Requirement, + Relationship, + PropertyModel, Component, - RelationMenuDirectiveObj, + ConnectRelationModel, CompositionCiNodeBase, CompositionCiNodeVl, + ModalModel, + ButtonModel, NodesFactory/*, AssetPopoverObj*/ } from "app/models"; @@ -42,6 +48,18 @@ import {ComponentInstanceNodesStyle} from "../common/style/component-instances-n import {CytoscapeEdgeEditation} from 'third-party/cytoscape.js-edge-editation/CytoscapeEdgeEditation.js'; import {ComponentServiceNg2} from "../../../ng2/services/component-services/component.service"; import {ComponentGenericResponse} from "../../../ng2/services/responses/component-generic-response"; +import {ModalService} from "../../../ng2/services/modal.service"; + +import {ConnectionWizardService} from "../../../ng2/pages/connection-wizard/connection-wizard.service"; +import {StepModel} from "../../../models/wizard-step"; +import {FromNodeStepComponent} from "app/ng2/pages/connection-wizard/from-node-step/from-node-step.component"; +import {PropertiesStepComponent} from "app/ng2/pages/connection-wizard/properties-step/properties-step.component"; +import {ToNodeStepComponent} from "app/ng2/pages/connection-wizard/to-node-step/to-node-step.component"; +import {ConnectionWizardHeaderComponent} from "app/ng2/pages/connection-wizard/connection-wizard-header/connection-wizard-header.component"; +import {ConnectionPropertiesViewComponent} from "../../../ng2/pages/connection-wizard/connection-properties-view/connection-properties-view.component"; +import {ComponentInstanceServiceNg2} from "../../../ng2/services/component-instance-services/component-instance.service"; +import {EVENTS} from "../../../utils/constants"; +import {PropertyBEModel} from "../../../models/properties-inputs/property-be-model"; interface ICompositionGraphScope extends ng.IScope { @@ -50,9 +68,10 @@ interface ICompositionGraphScope extends ng.IScope { isViewOnly: boolean; withSidebar: boolean; // Link menu - create link menu - relationMenuDirectiveObj:RelationMenuDirectiveObj; + relationMenuDirectiveObj:ConnectRelationModel; isLinkMenuOpen:boolean; - createLinkFromMenu:(chosenMatch:MatchBase, vl:Component)=>void; + createLinkFromMenu:(chosenMatch:Match, vl:Component)=>void; + saveChangedCapabilityProperties:()=>Promise; //modify link menu - for now only delete menu relationMenuTimeout:ng.IPromise; @@ -64,6 +83,7 @@ interface ICompositionGraphScope extends ng.IScope { verifyDrop(event:JQueryEventObject, ui:any):void; //Links menus + viewRelation(link:Cy.CollectionEdges):void; deleteRelation(link:Cy.CollectionEdges):void; hideRelationMenu(); @@ -73,6 +93,8 @@ interface ICompositionGraphScope extends ng.IScope { zoomAll(nodes?:Cy.CollectionNodes): void; getAutoCompleteValues(searchTerm: string):void; highlightSearchMatches(searchTerm: string): void; + + canvasMenuProps:any; /*//asset popover menu assetPopoverObj:AssetPopoverObj; @@ -102,7 +124,10 @@ export class CompositionGraph implements ng.IDirective { private commonGraphUtils:CommonGraphUtils, private matchCapabilitiesRequirementsUtils:MatchCapabilitiesRequirementsUtils, private CompositionGraphPaletteUtils:CompositionGraphPaletteUtils, - private ComponentServiceNg2: ComponentServiceNg2) { + private ComponentServiceNg2: ComponentServiceNg2, + private ModalServiceNg2: ModalService, + private ConnectionWizardServiceNg2: ConnectionWizardService, + private ComponentInstanceServiceNg2: ComponentInstanceServiceNg2) { } @@ -131,6 +156,8 @@ export class CompositionGraph implements ng.IDirective { _.forEach(GRAPH_EVENTS, (event) => { this.eventListenerService.unRegisterObserver(event); }); + this.eventListenerService.unRegisterObserver(EVENTS.SHOW_LOADER_EVENT + 'composition-graph'); + this.eventListenerService.unRegisterObserver(EVENTS.HIDE_LOADER_EVENT + 'composition-graph'); }); }; @@ -190,7 +217,7 @@ export class CompositionGraph implements ng.IDirective { if (this.GeneralGraphUtils.componentRequirementsAndCapabilitiesCaching.containsKey(leftPaletteComponent.uniqueId)) { let cacheComponent = this.GeneralGraphUtils.componentRequirementsAndCapabilitiesCaching.getValue(leftPaletteComponent.uniqueId); - let filteredNodesData = this.matchCapabilitiesRequirementsUtils.findByMatchingCapabilitiesToRequirements(cacheComponent, nodesData, nodesLinks); + let filteredNodesData = this.matchCapabilitiesRequirementsUtils.findMatchingNodes(cacheComponent, nodesData, nodesLinks); this.matchCapabilitiesRequirementsUtils.highlightMatchingComponents(filteredNodesData, this._cy); this.matchCapabilitiesRequirementsUtils.fadeNonMachingComponents(filteredNodesData, nodesData, this._cy); @@ -207,7 +234,7 @@ export class CompositionGraph implements ng.IDirective { component.capabilities = response.capabilities; component.requirements = response.requirements; this.GeneralGraphUtils.componentRequirementsAndCapabilitiesCaching.setValue(leftPaletteComponent.uniqueId, component); - let filteredNodesData = this.matchCapabilitiesRequirementsUtils.findByMatchingCapabilitiesToRequirements(component, nodesData, nodesLinks); + let filteredNodesData = this.matchCapabilitiesRequirementsUtils.findMatchingNodes(component, nodesData, nodesLinks); this.matchCapabilitiesRequirementsUtils.fadeNonMachingComponents(filteredNodesData, nodesData, this._cy); this.matchCapabilitiesRequirementsUtils.highlightMatchingComponents(filteredNodesData, this._cy) }); @@ -321,18 +348,124 @@ export class CompositionGraph implements ng.IDirective { scope.zoomAll(matchingNodes); }; - scope.createLinkFromMenu = (chosenMatch:MatchBase):void => { + scope.saveChangedCapabilityProperties = ():Promise => { + return new Promise((resolve) => { + const capabilityPropertiesBE: PropertyBEModel[] = this.ConnectionWizardServiceNg2.changedCapabilityProperties.map((prop) => { + prop.value = prop.getJSONValue(); + const propBE = new PropertyBEModel(prop); + propBE.parentUniqueId = this.ConnectionWizardServiceNg2.selectedMatch.relationship.relation.capabilityOwnerId; + return propBE; + }); + if (capabilityPropertiesBE.length > 0) { + // if there are capability properties to update, then first update capability properties and then resolve promise + this.ComponentInstanceServiceNg2 + .updateInstanceCapabilityProperties( + scope.component, + this.ConnectionWizardServiceNg2.selectedMatch.toNode, + this.ConnectionWizardServiceNg2.selectedMatch.capability.type, + this.ConnectionWizardServiceNg2.selectedMatch.capability.name, + capabilityPropertiesBE + ) + .subscribe((response) => { + console.log("Update resource instance capability properties response: ", response); + response.forEach((resProperty) => { + this.ConnectionWizardServiceNg2.selectedMatch.capabilityProperties.find((property) => { + return property.uniqueId == resProperty.uniqueId; + }).value = resProperty.value; + }); + this.ConnectionWizardServiceNg2.changedCapabilityProperties = []; + resolve(capabilityPropertiesBE); + }); + } else { + // no capability properties to update, immediately resolve promise + resolve(capabilityPropertiesBE); + } + }); + }; + + scope.createLinkFromMenu = ():void => { scope.isLinkMenuOpen = false; - this.CompositionGraphLinkUtils.createLinkFromMenu(this._cy, chosenMatch, scope.component); + + scope.saveChangedCapabilityProperties().then(() => { + //create link: + this.CompositionGraphLinkUtils + .createLinkFromMenu(this._cy, this.ConnectionWizardServiceNg2.selectedMatch, scope.component); + }); }; scope.hideRelationMenu = () => { this.commonGraphUtils.safeApply(scope, () => { - scope.linkMenuObject = null; + delete scope.canvasMenuProps; this.$timeout.cancel(scope.relationMenuTimeout); }); }; + scope.viewRelation = (link:Cy.CollectionEdges) => { + scope.hideRelationMenu(); + + const linkData = link.data(); + const sourceNode:CompositionCiNodeBase = link.source().data(); + const targetNode:CompositionCiNodeBase = link.target().data(); + const relationship:Relationship = linkData.relation.relationships[0]; + + let capability:Capability; + _.some(_.values(targetNode.componentInstance.capabilities), (capGroup) => { + //item.uniqueId + item.ownerId + item.name === (selectedReqOrCapModel.uniqueId + selectedReqOrCapModel.ownerId + selectedReqOrCapModel.name) + capability = _.find(_.values(capGroup), (cap:Capability) => ( + cap.uniqueId === relationship.relation.capabilityUid && + cap.ownerId === relationship.relation.capabilityOwnerId && + cap.name === relationship.relation.capability + )); + return capability; + }); + let requirement:Requirement; + _.some(_.values(sourceNode.componentInstance.requirements), (reqGroup) => { + requirement = _.find(_.values(reqGroup), (req:Requirement) => ( + req.uniqueId === relationship.relation.requirementUid && + req.ownerId === relationship.relation.requirementOwnerId && + req.name === relationship.relation.requirement + )); + return requirement; + }); + + new Promise<{capability:Capability, requirement:Requirement}>((resolve, reject) => { + if (capability && requirement) { + resolve({capability, requirement}); + } + else { + scope.component.fetchRelation(relationship.relation.id).then((fetchedRelation) => { + resolve({ + capability: fetchedRelation.relationships[0].capability, + requirement: fetchedRelation.relationships[0].requirement + }); + }, reject); + } + }).then((objReqCap) => { + capability = objReqCap.capability; + requirement = objReqCap.requirement; + + this.ConnectionWizardServiceNg2.currentComponent = scope.component; + this.ConnectionWizardServiceNg2.connectRelationModel = new ConnectRelationModel(sourceNode, targetNode, []); + this.ConnectionWizardServiceNg2.selectedMatch = new Match(requirement, capability, true, linkData.source, linkData.target); + this.ConnectionWizardServiceNg2.selectedMatch.relationship = relationship; + + const title = `Connection Properties`; + const saveButton: ButtonModel = new ButtonModel('Save', 'blue', () => { + scope.saveChangedCapabilityProperties().then(() => { this.ModalServiceNg2.closeCurrentModal(); }) + }); + const cancelButton: ButtonModel = new ButtonModel('Cancel', 'white', () => { this.ModalServiceNg2.closeCurrentModal(); }); + const modal = new ModalModel('xl', title, '', [saveButton, cancelButton]); + const modalInstance = this.ModalServiceNg2.createCustomModal(modal); + this.ModalServiceNg2.addDynamicContentToModal(modalInstance, ConnectionPropertiesViewComponent); + modalInstance.instance.open(); + + this.ComponentInstanceServiceNg2.getInstanceCapabilityProperties(scope.component, linkData.target, capability.type, capability.name) + .subscribe((response: Array) => { + this.ConnectionWizardServiceNg2.selectedMatch.capabilityProperties = response; + this.ModalServiceNg2.addDynamicContentToModal(modalInstance, ConnectionPropertiesViewComponent); + }, (error) => {}); + }, (error) => {}); + }; scope.deleteRelation = (link:Cy.CollectionEdges) => { scope.hideRelationMenu(); @@ -367,9 +500,26 @@ export class CompositionGraph implements ng.IDirective { this._cy.on('addedgemouseup', (event, data) => { scope.relationMenuDirectiveObj = this.CompositionGraphLinkUtils.onLinkDrawn(this._cy, data.source, data.target); if (scope.relationMenuDirectiveObj != null) { - scope.$apply(() => { - scope.isLinkMenuOpen = true; - }); + this.ConnectionWizardServiceNg2.setRelationMenuDirectiveObj(scope.relationMenuDirectiveObj); + this.ConnectionWizardServiceNg2.currentComponent = scope.component; + //TODO: init with the selected values + this.ConnectionWizardServiceNg2.selectedMatch = null; + + let steps:Array = []; + let fromNodeName:string = scope.relationMenuDirectiveObj.fromNode.componentInstance.name; + let toNodeName:string = scope.relationMenuDirectiveObj.toNode.componentInstance.name; + steps.push(new StepModel(fromNodeName, FromNodeStepComponent)); + steps.push(new StepModel(toNodeName, ToNodeStepComponent)); + steps.push(new StepModel('Properties', PropertiesStepComponent)); + let wizardTitle = 'Connect: ' + fromNodeName + ' to ' + toNodeName; + let modalInstance = this.ModalServiceNg2.createMultiStepsWizard(wizardTitle, steps, scope.createLinkFromMenu, ConnectionWizardHeaderComponent); + modalInstance.instance.open(); + + // + // this.ModalServiceNg2.createMultiStepsWizard('Connect', )Connect + // scope.$apply(() => { + // scope.isLinkMenuOpen = true; + // }); } }); this._cy.on('tapstart', 'node', (event:Cy.EventObject) => { @@ -424,7 +574,7 @@ export class CompositionGraph implements ng.IDirective { let nodesLinks = this.GeneralGraphUtils.getAllCompositionCiLinks(this._cy); let linkableNodes = this.commonGraphUtils.getLinkableNodes(this._cy, payload.node); - let filteredNodesData = this.matchCapabilitiesRequirementsUtils.findByMatchingCapabilitiesToRequirements(payload.node.data().componentInstance, linkableNodes, nodesLinks); + let filteredNodesData = this.matchCapabilitiesRequirementsUtils.findMatchingNodes(payload.node.data().componentInstance, linkableNodes, nodesLinks); this.matchCapabilitiesRequirementsUtils.highlightMatchingComponents(filteredNodesData, this._cy); this.matchCapabilitiesRequirementsUtils.fadeNonMachingComponents(filteredNodesData, nodesData, this._cy, payload.node.data()); @@ -498,14 +648,39 @@ export class CompositionGraph implements ng.IDirective { };*/ private openModifyLinkMenu = (scope:ICompositionGraphScope, linkMenuObject:LinkMenu, timeOutInMilliseconds?:number) => { + scope.hideRelationMenu(); + this.$timeout(() => { + scope.canvasMenuProps = { + open: true, + styleClass: 'w-sdc-canvas-menu-list', + items: [], + position: { + x: `${linkMenuObject.position.x}px`, + y: `${linkMenuObject.position.y}px` + } + }; + + if (this._cy.$('edge:selected').length === 1) { + scope.canvasMenuProps.items.push({ + contents: 'View', + styleClass: 'w-sdc-canvas-menu-item-view', + action: () => { + scope.viewRelation(linkMenuObject.link); + } + }); + } + scope.canvasMenuProps.items.push({ + contents: 'Delete', + styleClass: 'w-sdc-canvas-menu-item-delete', + action: () => { + scope.deleteRelation(linkMenuObject.link); + } + }); - this.commonGraphUtils.safeApply(scope, () => { - scope.linkMenuObject = linkMenuObject; + scope.relationMenuTimeout = this.$timeout(() => { + scope.hideRelationMenu(); + }, timeOutInMilliseconds ? timeOutInMilliseconds : 6000); }); - - scope.relationMenuTimeout = this.$timeout(() => { - scope.hideRelationMenu(); - }, timeOutInMilliseconds ? timeOutInMilliseconds : 6000); }; private initGraphNodes(componentInstances:ComponentInstance[], isViewOnly:boolean) { @@ -571,7 +746,10 @@ export class CompositionGraph implements ng.IDirective { CommonGraphUtils, MatchCapabilitiesRequirementsUtils, CompositionGraphPaletteUtils, - ComponentServiceNg2) => { + ComponentServiceNg2, + ModalService, + ConnectionWizardService, + ComponentInstanceServiceNg2) => { return new CompositionGraph( $q, $log, @@ -587,7 +765,10 @@ export class CompositionGraph implements ng.IDirective { CommonGraphUtils, MatchCapabilitiesRequirementsUtils, CompositionGraphPaletteUtils, - ComponentServiceNg2); + ComponentServiceNg2, + ModalService, + ConnectionWizardService, + ComponentInstanceServiceNg2); } } @@ -606,5 +787,8 @@ CompositionGraph.factory.$inject = [ 'CommonGraphUtils', 'MatchCapabilitiesRequirementsUtils', 'CompositionGraphPaletteUtils', - 'ComponentServiceNg2' + 'ComponentServiceNg2', + 'ModalServiceNg2', + 'ConnectionWizardServiceNg2', + 'ComponentInstanceServiceNg2' ]; diff --git a/catalog-ui/src/app/directives/graphs-v2/composition-graph/composition-graph.html b/catalog-ui/src/app/directives/graphs-v2/composition-graph/composition-graph.html index 248f19fb70..bbf2d6bbb2 100644 --- a/catalog-ui/src/app/directives/graphs-v2/composition-graph/composition-graph.html +++ b/catalog-ui/src/app/directives/graphs-v2/composition-graph/composition-graph.html @@ -8,17 +8,7 @@ - -
- -
-
- Delete -
- -
+
= this.matchCapabilitiesRequirementsUtils.getMatchedRequirementsCapabilities(fromUcpeInstance, toComponentInstance, this.getAllCompositionCiLinks(cy)); - let hostedOnMatch:MatchBase = _.find(matches, (match:MatchReqToCapability) => { + let matches:Array = this.matchCapabilitiesRequirementsUtils.getMatchedRequirementsCapabilities(fromUcpeInstance, toComponentInstance, this.getAllCompositionCiLinks(cy)); + let hostedOnMatch:Match = _.find(matches, (match:Match) => { return match.requirement.capability.toLowerCase() === 'tosca.capabilities.container'; }); - return hostedOnMatch; + return hostedOnMatch; }; @@ -128,7 +128,7 @@ export class CompositionGraphGeneralUtils { */ private isValidDropInsideUCPE(cy:Cy.Instance, nodeToInsert:ComponentInstance, ucpeNode:ComponentInstance):boolean { - let hostedOnMatch:MatchReqToCapability = this.canBeHostedOn(cy, ucpeNode, nodeToInsert); + let hostedOnMatch:Match = this.canBeHostedOn(cy, ucpeNode, nodeToInsert); let result:boolean = !angular.isUndefined(hostedOnMatch) || nodeToInsert.isVl(); //group validation return result; diff --git a/catalog-ui/src/app/directives/graphs-v2/composition-graph/utils/composition-graph-links-utils.ts b/catalog-ui/src/app/directives/graphs-v2/composition-graph/utils/composition-graph-links-utils.ts index 05f99ae9ea..89c5e14602 100644 --- a/catalog-ui/src/app/directives/graphs-v2/composition-graph/utils/composition-graph-links-utils.ts +++ b/catalog-ui/src/app/directives/graphs-v2/composition-graph/utils/composition-graph-links-utils.ts @@ -21,25 +21,17 @@ /** * Created by obarda on 6/28/2016. */ -import {GraphUIObjects, ComponentInstanceFactory, ResourceType} from "app/utils"; -import {LeftPaletteLoaderService, LoaderService} from "app/services"; +import {GraphUIObjects} from "app/utils"; +import {LoaderService} from "app/services"; import { NodeUcpe, CompositionCiNodeVf, - MatchReqToCapability, - MatchBase, - MatchReqToReq, - ComponentInstance, + Match, CompositionCiNodeBase, RelationshipModel, - RelationMenuDirectiveObj, - CapabilitiesGroup, + ConnectRelationModel, LinksFactory, - NodesFactory, - RequirementsGroup, Component, - Relationship, - Capability, LinkMenu, Point, CompositionCiLinkBase @@ -105,16 +97,16 @@ export class CompositionGraphLinkUtils { ); }; - private createSimpleLink = (match:MatchReqToCapability, cy:Cy.Instance, component:Component):void => { + private createSimpleLink = (match:Match, cy:Cy.Instance, component:Component):void => { let newRelation:RelationshipModel = match.matchToRelationModel(); let linkObg:CompositionCiLinkBase = this.linksFactory.createGraphLink(cy, newRelation, newRelation.relationships[0]); this.createLink(linkObg, cy, component); }; - public createLinkFromMenu = (cy:Cy.Instance, chosenMatch:MatchBase, component:Component):void => { + public createLinkFromMenu = (cy:Cy.Instance, chosenMatch:Match, component:Component):void => { if (chosenMatch) { - if (chosenMatch && chosenMatch instanceof MatchReqToCapability) { + if (chosenMatch && chosenMatch instanceof Match) { this.createSimpleLink(chosenMatch, cy, component); } } @@ -128,18 +120,18 @@ export class CompositionGraphLinkUtils { * @param matchesArray * @returns {Array} */ - public filterUcpeLinks(fromNode:CompositionCiNodeBase, toNode:CompositionCiNodeBase, matchesArray:Array):any { + public filterUcpeLinks(fromNode:CompositionCiNodeBase, toNode:CompositionCiNodeBase, matchesArray:Array):any { - let matchLink:Array; + let matchLink:Array; if (fromNode.isUcpePart) { - matchLink = _.filter(matchesArray, (match:MatchBase) => { + matchLink = _.filter(matchesArray, (match:Match) => { return match.isOwner(fromNode.id); }); } if (toNode.isUcpePart) { - matchLink = _.filter(matchesArray, (match:MatchBase) => { + matchLink = _.filter(matchesArray, (match:Match) => { return match.isOwner(toNode.id); }); } @@ -154,14 +146,14 @@ export class CompositionGraphLinkUtils { * @param toNode * @returns {any} */ - public onLinkDrawn(cy:Cy.Instance, fromNode:Cy.CollectionFirstNode, toNode:Cy.CollectionFirstNode):RelationMenuDirectiveObj { + public onLinkDrawn(cy:Cy.Instance, fromNode:Cy.CollectionFirstNode, toNode:Cy.CollectionFirstNode):ConnectRelationModel { if (!this.commonGraphUtils.nodeLocationsCompatible(cy, fromNode, toNode)) { return null; } let linkModel:Array = this.generalGraphUtils.getAllCompositionCiLinks(cy); - let possibleRelations:Array = this.matchCapabilitiesRequirementsUtils.getMatchedRequirementsCapabilities(fromNode.data().componentInstance, + let possibleRelations:Array = this.matchCapabilitiesRequirementsUtils.getMatchedRequirementsCapabilities(fromNode.data().componentInstance, toNode.data().componentInstance, linkModel); //filter relations found to limit to specific ucpe-cp @@ -169,8 +161,8 @@ export class CompositionGraphLinkUtils { //if found possibleRelations between the nodes we create relation menu directive and open the link menu if (possibleRelations.length) { - let menuPosition = this.generalGraphUtils.getLinkMenuPosition(cy, toNode.renderedPoint()); - return new RelationMenuDirectiveObj(fromNode.data(), toNode.data(), menuPosition, possibleRelations); + // let menuPosition = this.generalGraphUtils.getLinkMenuPosition(cy, toNode.renderedPoint()); + return new ConnectRelationModel(fromNode.data(), toNode.data(), possibleRelations); } return null; }; @@ -209,7 +201,7 @@ export class CompositionGraphLinkUtils { * @param vfNode */ public createVfToUcpeLink = (component:Component, cy:Cy.Instance, ucpeNode:NodeUcpe, vfNode:CompositionCiNodeVf):void => { - let hostedOnMatch:MatchReqToCapability = this.generalGraphUtils.canBeHostedOn(cy, ucpeNode.componentInstance, vfNode.componentInstance); + let hostedOnMatch:Match = this.generalGraphUtils.canBeHostedOn(cy, ucpeNode.componentInstance, vfNode.componentInstance); /* create relation */ let newRelation = new RelationshipModel(); newRelation.fromNode = ucpeNode.id; @@ -224,13 +216,12 @@ export class CompositionGraphLinkUtils { /** * Handles click event on links. * If one edge selected: do nothing. - /*Two edges selected - always select all - /* Three or more edges: first click - select all, secondary click - select single. + * Two or more edges: first click - select all, secondary click - select single. * @param cy * @param event */ public handleLinkClick(cy:Cy.Instance, event:Cy.EventObject) { - if (cy.$('edge:selected').length > 2 && event.cyTarget[0].selected()) { + if (cy.$('edge:selected').length > 1 && event.cyTarget[0].selected()) { cy.$(':selected').unselect(); } else { @@ -256,7 +247,7 @@ export class CompositionGraphLinkUtils { * @returns {Point} */ public calculateLinkMenuPosition(event, elementWidth, elementHeight):Point { - let point:Point = new Point(event.originalEvent.x, event.originalEvent.y); + let point:Point = new Point(event.originalEvent.clientX, event.originalEvent.clientY); if (event.originalEvent.view.screen.height - elementHeight < point.y) { point.y = event.originalEvent.view.screen.height - elementHeight; } diff --git a/catalog-ui/src/app/directives/graphs-v2/composition-graph/utils/match-capability-requierment-utils.ts b/catalog-ui/src/app/directives/graphs-v2/composition-graph/utils/match-capability-requierment-utils.ts index 5f717512f5..6a02381902 100644 --- a/catalog-ui/src/app/directives/graphs-v2/composition-graph/utils/match-capability-requierment-utils.ts +++ b/catalog-ui/src/app/directives/graphs-v2/composition-graph/utils/match-capability-requierment-utils.ts @@ -18,22 +18,17 @@ * ============LICENSE_END========================================================= */ -import {Requirement, CompositionCiLinkBase, ComponentInstance, CapabilitiesGroup, RequirementsGroup, MatchReqToCapability, MatchBase, - MatchReqToReq,CompositionCiNodeBase, Component, Capability} from "app/models"; +import { + Requirement, CompositionCiLinkBase, CapabilitiesGroup, RequirementsGroup, Match, + CompositionCiNodeBase, Component, Capability +} from "app/models"; +import {ComponentInstance} from "../../../../models/componentsInstances/componentInstance"; /** * Created by obarda on 1/1/2017. */ export class MatchCapabilitiesRequirementsUtils { - constructor() { - } - - public static linkable(requirement1:Requirement, requirement2:Requirement, vlCapability:Capability):boolean { - return MatchCapabilitiesRequirementsUtils.isMatch(requirement1, vlCapability) && MatchCapabilitiesRequirementsUtils.isMatch(requirement2, vlCapability); - }; - - /** * Shows + icon in corner of each node passed in * @param filteredNodesData @@ -77,9 +72,7 @@ export class MatchCapabilitiesRequirementsUtils { }) } - // -------------------------------------------ALL FUNCTIONS NEED REFACTORING---------------------------------------------------------------// - - private static requirementFulfilled(fromNodeId:string, requirement:any, links:Array):boolean { + private static isRequirementFulfilled(fromNodeId:string, requirement:any, links:Array):boolean { return _.some(links, { 'relation': { 'fromNode': fromNodeId, @@ -108,172 +101,97 @@ export class MatchCapabilitiesRequirementsUtils { return false; }; - private getFromToMatches(requirements1:RequirementsGroup, - requirements2:RequirementsGroup, - capabilities:CapabilitiesGroup, - links:Array, - fromId:string, - toId:string, - vlCapability?:Capability):Array { - let matches:Array = new Array(); - _.forEach(requirements1, (requirementValue:Array, key) => { - _.forEach(requirementValue, (requirement:Requirement) => { - if (requirement.name !== "dependency" && !MatchCapabilitiesRequirementsUtils.requirementFulfilled(fromId, requirement, links)) { - _.forEach(capabilities, (capabilityValue:Array, key) => { - _.forEach(capabilityValue, (capability:Capability) => { - if (MatchCapabilitiesRequirementsUtils.isMatch(requirement, capability)) { - let match:MatchReqToCapability = new MatchReqToCapability(requirement, capability, true, fromId, toId); - matches.push(match); - } - }); - }); - if (vlCapability) { - _.forEach(requirements2, (requirement2Value:Array, key) => { - _.forEach(requirement2Value, (requirement2:Requirement) => { - if (!MatchCapabilitiesRequirementsUtils.requirementFulfilled(toId, requirement2, links) && MatchCapabilitiesRequirementsUtils.linkable(requirement, requirement2, vlCapability)) { - let match:MatchReqToReq = new MatchReqToReq(requirement, requirement2, true, fromId, toId); - matches.push(match); - } - }); - }); - } - } - }); - }); - return matches; - } - - private getToFromMatches(requirements:RequirementsGroup, capabilities:CapabilitiesGroup, links:Array, fromId:string, toId:string):Array { - let matches:Array = []; - _.forEach(requirements, (requirementValue:Array, key) => { - _.forEach(requirementValue, (requirement:Requirement) => { - if (requirement.name !== "dependency" && !MatchCapabilitiesRequirementsUtils.requirementFulfilled(toId, requirement, links)) { - _.forEach(capabilities, (capabilityValue:Array, key) => { - _.forEach(capabilityValue, (capability:Capability) => { - if (MatchCapabilitiesRequirementsUtils.isMatch(requirement, capability)) { - let match:MatchReqToCapability = new MatchReqToCapability(requirement, capability, false, toId, fromId); - matches.push(match); - } - }); - }); - } - }); - }); - return matches; - } - public getMatchedRequirementsCapabilities(fromComponentInstance:ComponentInstance, toComponentInstance:ComponentInstance, - links:Array, - vl?:Component):Array {//TODO allow for VL array - let linkCapability; - if (vl) { - let linkCapabilities:Array = vl.capabilities.findValueByKey('linkable'); - if (linkCapabilities) { - linkCapability = linkCapabilities[0]; - } - } - let fromToMatches:Array = this.getFromToMatches(fromComponentInstance.requirements, - toComponentInstance.requirements, + links:Array):Array { + let fromToMatches:Array = this.getMatches(fromComponentInstance.requirements, toComponentInstance.capabilities, links, fromComponentInstance.uniqueId, - toComponentInstance.uniqueId, - linkCapability); - let toFromMatches:Array = this.getToFromMatches(toComponentInstance.requirements, + toComponentInstance.uniqueId, true); + let toFromMatches:Array = this.getMatches(toComponentInstance.requirements, fromComponentInstance.capabilities, links, fromComponentInstance.uniqueId, - toComponentInstance.uniqueId); + toComponentInstance.uniqueId, false); return fromToMatches.concat(toFromMatches); } + /***** REFACTORED FUNCTIONS START HERE *****/ + + public getMatches(requirements:RequirementsGroup, capabilities:CapabilitiesGroup, links:Array, + fromId:string, toId:string, isFromTo: boolean):Array { + let matches:Array = []; + let unfulfilledReqs = this.getUnfulfilledRequirements(fromId, requirements, links); + _.forEach(unfulfilledReqs, (req)=> { + _.forEach(_.flatten(_.values(capabilities)), (capability:Capability)=> { + if (MatchCapabilitiesRequirementsUtils.isMatch(req, capability)) { + if(isFromTo) { + matches.push(new Match(req, capability, isFromTo, fromId, toId)); + } else{ + matches.push(new Match(req, capability, isFromTo, toId, fromId)); + } + } + }); + }); + return matches; + } + + public getUnfulfilledRequirements = (fromNodeId:string, requirements:RequirementsGroup, links:Array):Array=> { + + let requirementArray:Array = []; + _.forEach(_.flatten(_.values(requirements)), (requirement:Requirement)=> { + if (requirement.name !== "dependency" && !MatchCapabilitiesRequirementsUtils.isRequirementFulfilled(fromNodeId, requirement, links)) { + requirementArray.push(requirement); + } + }); + return requirementArray; + }; + /** - * Step I: Check if capabilities of component match requirements of nodeDataArray - * 1. Get component capabilities and loop on each capability - * 2. Inside the loop, perform another loop on all nodeDataArray, and fetch the requirements for each one - * 3. Loop on the requirements, and verify match (see in code the rules) - * - * Step II: Check if requirements of component match capabilities of nodeDataArray - * 1. Get component requirements and loop on each requirement - * 2. - * - * @param component - this is the hovered resource of the left panel of composition screen - * @param nodeDataArray - Array of resource instances that are on the canvas - * @param links -getMatchedRequirementsCapabilities - * @param vl - - * @returns {any[]|T[]} + * Returns true if there is a match between the capabilities and requirements that are passed in + * @param requirements + * @param capabilities + * @returns {boolean} */ - public findByMatchingCapabilitiesToRequirements(component:Component, - nodeDataArray:Array, - links:Array, - vl?:Component):Array {//TODO allow for VL array - let res = []; - - // STEP I - { - let capabilities:any = component.capabilities; - _.forEach(capabilities, (capabilityValue:Array, capabilityKey)=> { - _.forEach(capabilityValue, (capability)=> { - _.forEach(nodeDataArray, (node:CompositionCiNodeBase)=> { - if (node && node.componentInstance) { - let requirements:any = node.componentInstance.requirements; - let fromNodeId:string = node.componentInstance.uniqueId; - _.forEach(requirements, (requirementValue:Array, requirementKey)=> { - _.forEach(requirementValue, (requirement)=> { - if (requirement.name !== "dependency" && MatchCapabilitiesRequirementsUtils.isMatch(requirement, capability) - && !MatchCapabilitiesRequirementsUtils.requirementFulfilled(fromNodeId, requirement, links)) { - res.push(node); - } - }); - }); - } - }); - }); + public containsMatch = (requirements:Array, capabilities:CapabilitiesGroup):boolean => { + return _.some(requirements, (req:Requirement)=> { + return _.some(_.flatten(_.values(capabilities)), (capability:Capability) => { + return MatchCapabilitiesRequirementsUtils.isMatch(req, capability); }); - } + }); + }; - // STEP II - { - let requirements:any = component.requirements; - let fromNodeId:string = component.uniqueId; - let linkCapability:Array = vl ? vl.capabilities.findValueByKey('linkable') : undefined; + /** + * Returns array of nodes that can connect to the component. + * In order to connect, one of the following conditions must be met: + * 1. component has an unfulfilled requirement that matches a node's capabilities + * 2. node has an unfulfilled requirement that matches the component's capabilities + * 3. vl is passed in which has the capability to fulfill requirement from component and requirement on node. + */ + public findMatchingNodes(component:Component, nodeDataArray:Array, + links:Array):Array //TODO allow for VL array and TEST + { + let componentRequirements:Array = this.getUnfulfilledRequirements(component.uniqueId, component.requirements, links); + return _.filter(nodeDataArray, (node:any)=> { + if (node && node.componentInstance) { + + //Check if component has an unfulfilled requirement that can be met by one of nodes's capabilities (#1) + if (componentRequirements.length && node.category !== 'groupCp' && this.containsMatch(componentRequirements, node.componentInstance.capabilities)) { + return true; - _.forEach(requirements, (requirementValue:Array, requirementKey)=> { - _.forEach(requirementValue, (requirement)=> { - if (requirement.name !== "dependency" && !MatchCapabilitiesRequirementsUtils.requirementFulfilled(fromNodeId, requirement, links)) { - _.forEach(nodeDataArray, (node:any)=> { - if (node && node.componentInstance && node.category !== 'groupCp') { - let capabilities:any = node.componentInstance.capabilities; - _.forEach(capabilities, (capabilityValue:Array, capabilityKey)=> { - _.forEach(capabilityValue, (capability)=> { - if (MatchCapabilitiesRequirementsUtils.isMatch(requirement, capability)) { - res.push(node); - } - }); - }); - if (linkCapability) { - let linkRequirements = node.componentInstance.requirements; - _.forEach(linkRequirements, (value:Array, key)=> { - _.forEach(value, (linkRequirement)=> { - if (!MatchCapabilitiesRequirementsUtils.requirementFulfilled(node.componentInstance.uniqueId, linkRequirement, links) - && MatchCapabilitiesRequirementsUtils.linkable(requirement, linkRequirement, linkCapability[0])) { - res.push(node); - } - }); - }); - } - } - }); + } else { //Check if node has unfulfilled requirement that can be filled by component (#2) + let nodeRequirements:Array = this.getUnfulfilledRequirements(node.componentInstance.uniqueId, node.componentInstance.requirements, links); + if (!nodeRequirements.length) return false; + if (this.containsMatch(nodeRequirements, component.capabilities)) { + return true; } - }); - }); - } - - return _.uniq(res); - }; + } + } + }); + } } MatchCapabilitiesRequirementsUtils.$inject = []; diff --git a/catalog-ui/src/app/directives/graphs-v2/deployment-graph/deployment-graph.directive.ts b/catalog-ui/src/app/directives/graphs-v2/deployment-graph/deployment-graph.directive.ts index ace9d1ce4c..127f43b734 100644 --- a/catalog-ui/src/app/directives/graphs-v2/deployment-graph/deployment-graph.directive.ts +++ b/catalog-ui/src/app/directives/graphs-v2/deployment-graph/deployment-graph.directive.ts @@ -27,6 +27,7 @@ import { ModulesNodesStyle } from "../common/style/module-node-style"; import { GRAPH_EVENTS } from "app/utils"; import { EventListenerService } from "app/services"; import '@bardit/cytoscape-expand-collapse'; +import {AngularJSBridge} from "../../../services/angular-js-bridge-service"; interface IDeploymentGraphScope extends ng.IScope { component: Component; @@ -105,6 +106,7 @@ export class DeploymentGraph implements ng.IDirective { private loadGraph = (scope: IDeploymentGraphScope, el: JQuery) => { let graphEl = el.find('.sdc-deployment-graph-wrapper'); + const imagePath = AngularJSBridge.getAngularConfig().imagesPath; this._cy = cytoscape({ container: graphEl, style: ComponentInstanceNodesStyle.getCompositionGraphStyle().concat(ModulesNodesStyle.getModuleGraphStyle()), @@ -124,8 +126,8 @@ export class DeploymentGraph implements ng.IDirective { fisheye: false, undoable: false, expandCollapseCueSize: 18, - expandCueImage: '/assets/styles/images/resource-icons/' + 'closeModule.png', - collapseCueImage: '/assets/styles/images/resource-icons/' + 'openModule.png', + expandCueImage: imagePath + '/assets/styles/images/resource-icons/' + 'closeModule.png', + collapseCueImage: imagePath + '/assets/styles/images/resource-icons/' + 'openModule.png', expandCollapseCueSensitivity: 2, cueOffset: -20 }); diff --git a/catalog-ui/src/app/directives/graphs-v2/palette/palette.directive.ts b/catalog-ui/src/app/directives/graphs-v2/palette/palette.directive.ts index f46dc6c939..8abf968c82 100644 --- a/catalog-ui/src/app/directives/graphs-v2/palette/palette.directive.ts +++ b/catalog-ui/src/app/directives/graphs-v2/palette/palette.directive.ts @@ -132,7 +132,7 @@ export class Palette implements ng.IDirective { private initLeftPanel(leftPanelComponents:Array, resourceFilterTypes:Array):LeftPanelModel { let leftPanelModel = new LeftPanelModel(); - + if (resourceFilterTypes && resourceFilterTypes.length) { leftPanelComponents = this.leftPanelResourceFilter(leftPanelComponents, resourceFilterTypes); } @@ -171,40 +171,6 @@ export class Palette implements ng.IDirective { this.EventListenerService.notifyObservers(GRAPH_EVENTS.ON_PALETTE_COMPONENT_HOVER_IN, displayComponent); this.$log.debug('palette::onMouseOver:: fired'); - // - // if (this.CompositionGraphGeneralUtils.componentRequirementsAndCapabilitiesCaching.containsKey(displayComponent.uniqueId)) { - // this.$log.debug(`palette::onMouseOver:: component id ${displayComponent.uniqueId} found in cache`); - // let cacheComponent:Component = this.CompositionGraphGeneralUtils.componentRequirementsAndCapabilitiesCaching.getValue(displayComponent.uniqueId); - // - // //TODO: Danny: fire event to highlight matching nodes - // //showMatchingNodes(cacheComponent); - // return; - // } - // - // this.$log.debug(`palette::onMouseOver:: component id ${displayComponent.uniqueId} not found in cache, initiating server get`); - // // This will bring the component from the server including requirements and capabilities - // // Check that we do not fetch many times, because only in the success we add the component to componentRequirementsAndCapabilitiesCaching - // if (this.fetchingComponentFromServer) { - // return; - // } - // - // this.fetchingComponentFromServer = true; - // this.ComponentFactory.getComponentFromServer(displayComponent.componentSubType, displayComponent.uniqueId) - // .then((component:Component) => { - // this.$log.debug(`palette::onMouseOver:: component id ${displayComponent.uniqueId} fetch success`); - // // this.LeftPaletteLoaderService.updateSpecificComponentLeftPalette(component, scope.currentComponent.componentType); - // this.CompositionGraphGeneralUtils.componentRequirementsAndCapabilitiesCaching.setValue(component.uniqueId, component); - // this.fetchingComponentFromServer = false; - // - // //TODO: Danny: fire event to highlight matching nodes - // //showMatchingNodes(component); - // }) - // .catch(() => { - // this.$log.debug('palette::onMouseOver:: component id fetch error'); - // this.fetchingComponentFromServer = false; - // }); - - }; scope.onMouseOut = () => { @@ -226,8 +192,13 @@ export class Palette implements ng.IDirective { private updateLeftPanelDisplay(scope:IPaletteScope) { let entityType:string = scope.currentComponent.componentType.toLowerCase(); let resourceFilterTypes:Array = this.sdcConfig.resourceTypesFilter[entityType]; - scope.components = this.LeftPaletteLoaderService.getLeftPanelComponentsForDisplay(scope.currentComponent); - scope.model = this.initLeftPanel(scope.components, resourceFilterTypes); + scope.components = this.LeftPaletteLoaderService.getLeftPanelComponentsForDisplay(scope.currentComponent); + //remove the container component from the list + let componentTempToDisplay = angular.copy(scope.components); + componentTempToDisplay = _.remove(componentTempToDisplay, function (component) { + return component.component.invariantUUID !== scope.currentComponent.invariantUUID; + }); + scope.model = this.initLeftPanel(componentTempToDisplay, resourceFilterTypes); scope.displaySortedCategories = angular.copy(scope.model.sortedCategories); }; diff --git a/catalog-ui/src/app/directives/graphs-v2/palette/palette.html b/catalog-ui/src/app/directives/graphs-v2/palette/palette.html index 4b123e5777..7f9bfd1e0d 100644 --- a/catalog-ui/src/app/directives/graphs-v2/palette/palette.html +++ b/catalog-ui/src/app/directives/graphs-v2/palette/palette.html @@ -32,7 +32,7 @@ data-ng-repeat="component in components | orderBy: 'displayName' track by $index" data-tests-id={{component.displayName}}>
-
diff --git a/catalog-ui/src/app/directives/graphs-v2/relation-menu/relation-menu.html b/catalog-ui/src/app/directives/graphs-v2/relation-menu/relation-menu.html index a0a9e4af27..e1cdf499a0 100644 --- a/catalog-ui/src/app/directives/graphs-v2/relation-menu/relation-menu.html +++ b/catalog-ui/src/app/directives/graphs-v2/relation-menu/relation-menu.html @@ -1,46 +1,46 @@ -