From efa037d34be7b1570efdc767c79fad8d4005f10e Mon Sep 17 00:00:00 2001 From: Michael Lando Date: Sun, 19 Feb 2017 12:57:33 +0200 Subject: [PATCH] Add new code new version Change-Id: Ic02a76313503b526f17c3df29eb387a29fe6a42a Signed-off-by: Michael Lando --- .gitignore | 4 + dox-sequence-diagram-ui/.babelrc | 3 + dox-sequence-diagram-ui/.gitignore | 6 + dox-sequence-diagram-ui/.npmignore | 1 + dox-sequence-diagram-ui/LICENSE.txt | 1 + dox-sequence-diagram-ui/eslintrc.json | 32 + dox-sequence-diagram-ui/package.json | 63 + .../src/main/webapp/WEB-INF/web.xml | 14 + .../src/main/webapp/favicon.ico | Bin 0 -> 894 bytes dox-sequence-diagram-ui/src/main/webapp/index.html | 13 + .../webapp/lib/ecomp/asdc/sequencer/Sequencer.jsx | 199 +++ .../lib/ecomp/asdc/sequencer/common/Common.js | 356 +++++ .../lib/ecomp/asdc/sequencer/common/Logger.js | 137 ++ .../lib/ecomp/asdc/sequencer/common/Options.js | 136 ++ .../components/application/Application.jsx | 268 ++++ .../asdc/sequencer/components/diagram/Diagram.jsx | 896 +++++++++++ .../components/diagram/components/popup/Popup.jsx | 94 ++ .../components/diagram/templates/diagram.html | 56 + .../components/diagram/templates/fragment.html | 18 + .../components/diagram/templates/lifeline.html | 19 + .../components/diagram/templates/message.html | 29 + .../components/diagram/templates/occurrence.html | 7 + .../components/diagram/templates/title.html | 3 + .../asdc/sequencer/components/dialog/Dialog.jsx | 222 +++ .../asdc/sequencer/components/editor/Editor.jsx | 171 +++ .../editor/components/designer/Designer.jsx | 403 +++++ .../designer/components/actions/Actions.jsx | 471 ++++++ .../designer/components/lifeline/Lifeline.jsx | 264 ++++ .../designer/components/lifeline/LifelineNew.jsx | 112 ++ .../designer/components/lifeline/Lifelines.jsx | 136 ++ .../designer/components/message/Message.jsx | 587 +++++++ .../designer/components/message/MessageNew.jsx | 106 ++ .../designer/components/message/Messages.jsx | 143 ++ .../designer/components/metadata/Metadata.jsx | 34 + .../components/editor/components/source/Source.jsx | 86 ++ .../editor/components/toolbar/Toolbar.jsx | 275 ++++ .../asdc/sequencer/components/export/Export.jsx | 31 + .../ecomp/asdc/sequencer/components/icons/Icon.jsx | 41 + .../asdc/sequencer/components/overlay/Overlay.jsx | 61 + .../lib/ecomp/asdc/sequencer/model/Metamodel.js | 94 ++ .../lib/ecomp/asdc/sequencer/model/Metamodels.js | 87 ++ .../webapp/lib/ecomp/asdc/sequencer/model/Model.js | 512 +++++++ .../sequencer/model/demo/scenarios/Scenarios.js | 110 ++ .../model/demo/scenarios/metamodel/BLANK.json | 16 + .../model/demo/scenarios/metamodel/DIMENSIONS.json | 16 + .../model/demo/scenarios/metamodel/ECOMP.json | 62 + .../model/demo/scenarios/model/BLANK.json | 37 + .../model/demo/scenarios/model/DIMENSIONS.json | 91 ++ .../model/demo/scenarios/model/ECOMP.json | 514 +++++++ .../model/schema/asdc-sequencer-meta-schema.xsd | 166 ++ .../model/schema/asdc-sequencer-schema.xsd | 274 ++++ .../model/schema/asdc_sequencer_meta_schema.json | 332 ++++ .../model/schema/asdc_sequencer_schema.json | 582 +++++++ .../model/templates/default.metamodel.json | 17 + .../sequencer/model/templates/default.model.json | 11 + .../src/main/webapp/lib/main.jsx | 35 + .../webapp/res/ecomp/asdc/common/_typography.scss | 25 + .../webapp/res/ecomp/asdc/common/_variables.scss | 44 + .../asdc/common/fonts/omnes-att-bold-italic.otf | Bin 0 -> 138100 bytes .../res/ecomp/asdc/common/fonts/omnes-att-bold.otf | Bin 0 -> 153056 bytes .../ecomp/asdc/common/fonts/omnes-att-italic.otf | Bin 0 -> 138748 bytes .../asdc/common/fonts/omnes-att-light-Italic.otf | Bin 0 -> 139760 bytes .../ecomp/asdc/common/fonts/omnes-att-light.otf | Bin 0 -> 145516 bytes .../asdc/common/fonts/omnes-att-medium-italic.otf | Bin 0 -> 141340 bytes .../ecomp/asdc/common/fonts/omnes-att-medium.otf | Bin 0 -> 131984 bytes .../ecomp/asdc/common/fonts/omnes-att-regular.otf | Bin 0 -> 144548 bytes .../ecomp/asdc/sequencer/sequencer-actions.scss | 120 ++ .../res/ecomp/asdc/sequencer/sequencer-common.scss | 112 ++ .../ecomp/asdc/sequencer/sequencer-controls.scss | 72 + .../ecomp/asdc/sequencer/sequencer-designer.scss | 256 ++++ .../asdc/sequencer/sequencer-development.scss | 29 + .../asdc/sequencer/sequencer-diagram-svg.scss | 189 +++ .../ecomp/asdc/sequencer/sequencer-diagram.scss | 206 +++ .../res/ecomp/asdc/sequencer/sequencer-dialog.scss | 159 ++ .../res/ecomp/asdc/sequencer/sequencer-editor.scss | 125 ++ .../ecomp/asdc/sequencer/sequencer-standalone.scss | 2 + .../res/ecomp/asdc/sequencer/sprites-raster.scss | 30 + .../res/ecomp/asdc/sequencer/sprites.css.svg | 1 + .../res/ecomp/asdc/sequencer/sprites.defs.svg | 1 + .../webapp/res/ecomp/asdc/sequencer/sprites.png | Bin 0 -> 2251 bytes .../res/ecomp/asdc/sequencer/sprites/amdocs.png | Bin 0 -> 2069 bytes .../asdc/sequencer/sprites/arrow/request-async.svg | 59 + .../asdc/sequencer/sprites/arrow/request-sync.svg | 26 + .../asdc/sequencer/sprites/arrow/response.svg | 27 + .../res/ecomp/asdc/sequencer/sprites/blank.svg | 60 + .../ecomp/asdc/sequencer/sprites/icon/close.svg | 27 + .../asdc/sequencer/sprites/icon/collapsed.svg | 28 + .../ecomp/asdc/sequencer/sprites/icon/delete.svg | 27 + .../ecomp/asdc/sequencer/sprites/icon/download.svg | 29 + .../res/ecomp/asdc/sequencer/sprites/icon/edit.svg | 28 + .../ecomp/asdc/sequencer/sprites/icon/exclaim.svg | 27 + .../ecomp/asdc/sequencer/sprites/icon/expanded.svg | 27 + .../sequencer/sprites/icon/fragment-default.svg | 22 + .../asdc/sequencer/sprites/icon/fragment-start.svg | 26 + .../asdc/sequencer/sprites/icon/fragment-stop.svg | 27 + .../ecomp/asdc/sequencer/sprites/icon/handle.svg | 26 + .../res/ecomp/asdc/sequencer/sprites/icon/info.svg | 27 + .../ecomp/asdc/sequencer/sprites/icon/notes.svg | 28 + .../sequencer/sprites/icon/occurrence-default.svg | 27 + .../sequencer/sprites/icon/occurrence-start.svg | 26 + .../sequencer/sprites/icon/occurrence-stop.svg | 26 + .../res/ecomp/asdc/sequencer/sprites/icon/open.svg | 29 + .../res/ecomp/asdc/sequencer/sprites/icon/plus.svg | 28 + .../ecomp/asdc/sequencer/sprites/icon/question.svg | 27 + .../res/ecomp/asdc/sequencer/sprites/icon/save.svg | 27 + .../ecomp/asdc/sequencer/sprites/icon/settings.svg | 29 + .../ecomp/asdc/sequencer/sprites/icon/upload.svg | 28 + .../ecomp/asdc/sequencer/sprites/icon/validate.svg | 27 + .../src/main/webapp/res/sdc-sequencer.scss | 87 ++ .../thirdparty/react-select/react-select.min.css | 1 + dox-sequence-diagram-ui/tools/copy-assets.js | 7 + dox-sequence-diagram-ui/webpack.config.js | 99 ++ .../openecomp-sdc-common-rest/pom.xml | 4 +- .../backend/openecomp-sdc-action-manager/pom.xml | 4 +- .../pom.xml | 2 +- .../openecomp-sdc-validation-manager/pom.xml | 4 +- .../pom.xml | 12 +- openecomp-be/lib/openecomp-common-lib/pom.xml | 4 +- .../openecomp-config-lib/pom.xml | 4 +- .../openecomp-facade-api/pom.xml | 5 +- .../openecomp-facade-core/pom.xml | 8 +- .../openecomp-facade-lib/pom.xml | 6 +- .../openecomp-nosqldb-api/pom.xml | 6 +- .../openecomp-nosqldb-core/pom.xml | 3 +- .../openecomp-nosqldb-lib/pom.xml | 6 +- .../openecomp-utilities-lib/pom.xml | 2 +- openecomp-be/lib/openecomp-core-lib/pom.xml | 2 +- openecomp-be/lib/openecomp-heat-lib/pom.xml | 6 +- .../openecomp-sdc-action-api/pom.xml | 6 +- .../openecomp-sdc-enrichment-api/pom.xml | 2 +- .../openecomp-sdc-enrichment-core/pom.xml | 2 +- .../openecomp-sdc-enrichment-impl/pom.xml | 8 +- .../openecomp-sdc-model-api/pom.xml | 6 +- .../openecomp-sdc-model-core/pom.xml | 2 +- .../openecomp-sdc-model-impl/pom.xml | 2 +- .../openecomp-sdc-translator-api/pom.xml | 6 +- .../openecomp-sdc-translator-core/pom.xml | 4 +- .../openecomp-sdc-validation-api/pom.xml | 2 +- .../openecomp-sdc-validation-core/pom.xml | 2 +- .../openecomp-sdc-validation-impl/pom.xml | 6 +- .../openecomp-sdc-vendor-license-api/pom.xml | 4 +- .../pom.xml | 6 +- .../pom.xml | 4 +- .../openecomp-sdc-versioning-api/pom.xml | 6 +- openecomp-be/lib/openecomp-tosca-lib/pom.xml | 6 +- openecomp-be/tools/swagger-ui/api-docs/api.html | 16 +- openecomp-be/tools/swagger-ui/api-docs/api.json | 36 +- openecomp-ui/.babelrc | 10 + openecomp-ui/.editorconfig | 18 + openecomp-ui/.eslintignore | 4 + openecomp-ui/.eslintrc | 155 ++ openecomp-ui/.gitignore | 7 + openecomp-ui/LICENSE | 1 + openecomp-ui/devConfig.defaults.json | 6 + openecomp-ui/fixture/data/entitlementPools.json | 36 + openecomp-ui/fixture/data/featureGroup.json | 59 + openecomp-ui/fixture/data/featureGroups.json | 28 + .../fixture/data/licenseAgreementList.json | 33 + openecomp-ui/fixture/data/licenseKeyGroups.json | 20 + openecomp-ui/fixture/data/licenseModels.json | 16 + openecomp-ui/fixture/data/softwareProduct.json | 96 ++ openecomp-ui/fixture/data/softwareProductList.json | 34 + openecomp-ui/fixture/express.js | 231 +++ openecomp-ui/fixture/fixture.js | 93 ++ openecomp-ui/fixture/middleware.js | 24 + openecomp-ui/gulpfile.js | 292 ++++ openecomp-ui/karma.conf.js | 102 ++ openecomp-ui/package.json | 102 ++ openecomp-ui/pom.xml | 84 + openecomp-ui/readMe.txt | 25 + openecomp-ui/resources/css/font-awesome.min.css | 4 + .../resources/fonts/fontawesome-webfont.eot | Bin 0 -> 60767 bytes .../resources/fonts/fontawesome-webfont.svg | 565 +++++++ .../resources/fonts/fontawesome-webfont.ttf | Bin 0 -> 122092 bytes .../resources/fonts/fontawesome-webfont.woff | Bin 0 -> 71508 bytes .../resources/fonts/fontawesome-webfont.woff2 | Bin 0 -> 56780 bytes .../resources/fonts/omnes-att-bold-italic.otf | Bin 0 -> 138100 bytes openecomp-ui/resources/fonts/omnes-att-bold.otf | Bin 0 -> 153056 bytes openecomp-ui/resources/fonts/omnes-att-italic.otf | Bin 0 -> 138748 bytes .../resources/fonts/omnes-att-light-Italic.otf | Bin 0 -> 139760 bytes openecomp-ui/resources/fonts/omnes-att-light.otf | Bin 0 -> 145516 bytes .../resources/fonts/omnes-att-medium-italic.otf | Bin 0 -> 141340 bytes openecomp-ui/resources/fonts/omnes-att-medium.otf | Bin 0 -> 131984 bytes openecomp-ui/resources/fonts/omnes-att-regular.otf | Bin 0 -> 144548 bytes .../resources/images/ecomp/ASDC_Sprite.png | Bin 0 -> 3416772 bytes .../images/ecomp/sprite-services-icons.png | Bin 0 -> 124154 bytes openecomp-ui/resources/images/icons/favicon.ico | Bin 0 -> 566 bytes openecomp-ui/resources/images/icons/favicon.png | Bin 0 -> 566 bytes .../images/onboarding/vendor-license-model.svg | 1 + .../images/onboarding/vendor-software-product.svg | 1 + openecomp-ui/resources/images/plus-circle-icon.svg | 18 + openecomp-ui/resources/scss/_common.scss | 6 + openecomp-ui/resources/scss/_components.scss | 73 + openecomp-ui/resources/scss/_modules.scss | 22 + .../resources/scss/bootstrap-cust/_buttons.scss | 13 + .../resources/scss/bootstrap-cust/_close.scss | 7 + .../resources/scss/bootstrap-cust/_dropdowns.scss | 16 + .../resources/scss/bootstrap-cust/_forms.scss | 110 ++ .../resources/scss/bootstrap-cust/_list-group.scss | 5 + .../resources/scss/bootstrap-cust/_mixins.scss | 3 + .../resources/scss/bootstrap-cust/_modals.scss | 18 + .../resources/scss/bootstrap-cust/_navbar.scss | 3 + .../resources/scss/bootstrap-cust/_navs.scss | 30 + .../resources/scss/bootstrap-cust/_panels.scss | 3 + .../resources/scss/bootstrap-cust/_tables.scss | 42 + .../resources/scss/bootstrap-cust/_variables.scss | 127 ++ openecomp-ui/resources/scss/bootstrap.scss | 61 + openecomp-ui/resources/scss/bootstrap/_alerts.scss | 72 + openecomp-ui/resources/scss/bootstrap/_badges.scss | 67 + .../resources/scss/bootstrap/_breadcrumbs.scss | 25 + .../resources/scss/bootstrap/_button-groups.scss | 256 ++++ .../resources/scss/bootstrap/_buttons.scss | 170 ++ .../resources/scss/bootstrap/_carousel.scss | 266 ++++ openecomp-ui/resources/scss/bootstrap/_close.scss | 35 + openecomp-ui/resources/scss/bootstrap/_code.scss | 68 + .../scss/bootstrap/_component-animations.scss | 43 + .../resources/scss/bootstrap/_dropdowns.scss | 217 +++ openecomp-ui/resources/scss/bootstrap/_forms.scss | 607 ++++++++ .../resources/scss/bootstrap/_glyphicons.scss | 1616 ++++++++++++++++++++ openecomp-ui/resources/scss/bootstrap/_grid.scss | 76 + .../resources/scss/bootstrap/_input-groups.scss | 171 +++ .../resources/scss/bootstrap/_jumbotron.scss | 51 + openecomp-ui/resources/scss/bootstrap/_labels.scss | 66 + .../resources/scss/bootstrap/_list-group.scss | 126 ++ openecomp-ui/resources/scss/bootstrap/_media.scss | 66 + openecomp-ui/resources/scss/bootstrap/_mixins.scss | 36 + openecomp-ui/resources/scss/bootstrap/_modals.scss | 162 ++ openecomp-ui/resources/scss/bootstrap/_navbar.scss | 650 ++++++++ openecomp-ui/resources/scss/bootstrap/_navs.scss | 235 +++ .../resources/scss/bootstrap/_normalize.scss | 424 +++++ openecomp-ui/resources/scss/bootstrap/_pager.scss | 53 + .../resources/scss/bootstrap/_pagination.scss | 89 ++ openecomp-ui/resources/scss/bootstrap/_panels.scss | 274 ++++ .../resources/scss/bootstrap/_popovers.scss | 140 ++ openecomp-ui/resources/scss/bootstrap/_print.scss | 101 ++ .../resources/scss/bootstrap/_progress-bars.scss | 92 ++ .../scss/bootstrap/_responsive-embed.scss | 35 + .../scss/bootstrap/_responsive-utilities.scss | 191 +++ .../resources/scss/bootstrap/_scaffolding.scss | 154 ++ openecomp-ui/resources/scss/bootstrap/_tables.scss | 228 +++ openecomp-ui/resources/scss/bootstrap/_theme.scss | 344 +++++ .../resources/scss/bootstrap/_thumbnails.scss | 37 + .../resources/scss/bootstrap/_tooltip.scss | 115 ++ openecomp-ui/resources/scss/bootstrap/_type.scss | 339 ++++ .../resources/scss/bootstrap/_utilities.scss | 57 + .../resources/scss/bootstrap/_variables.scss | 852 +++++++++++ openecomp-ui/resources/scss/bootstrap/_wells.scss | 29 + .../resources/scss/bootstrap/mixins/_alerts.scss | 14 + .../scss/bootstrap/mixins/_background-variant.scss | 12 + .../scss/bootstrap/mixins/_border-radius.scss | 21 + .../resources/scss/bootstrap/mixins/_buttons.scss | 68 + .../scss/bootstrap/mixins/_center-block.scss | 7 + .../resources/scss/bootstrap/mixins/_clearfix.scss | 22 + .../resources/scss/bootstrap/mixins/_forms.scss | 87 ++ .../scss/bootstrap/mixins/_gradients.scss | 60 + .../scss/bootstrap/mixins/_grid-framework.scss | 78 + .../resources/scss/bootstrap/mixins/_grid.scss | 134 ++ .../scss/bootstrap/mixins/_hide-text.scss | 21 + .../resources/scss/bootstrap/mixins/_image.scss | 30 + .../resources/scss/bootstrap/mixins/_labels.scss | 12 + .../scss/bootstrap/mixins/_list-group.scss | 32 + .../scss/bootstrap/mixins/_nav-divider.scss | 10 + .../scss/bootstrap/mixins/_nav-vertical-align.scss | 9 + .../resources/scss/bootstrap/mixins/_opacity.scss | 8 + .../scss/bootstrap/mixins/_pagination.scss | 24 + .../resources/scss/bootstrap/mixins/_panels.scss | 24 + .../scss/bootstrap/mixins/_progress-bar.scss | 10 + .../scss/bootstrap/mixins/_reset-filter.scss | 8 + .../scss/bootstrap/mixins/_reset-text.scss | 18 + .../resources/scss/bootstrap/mixins/_resize.scss | 6 + .../bootstrap/mixins/_responsive-visibility.scss | 27 + .../resources/scss/bootstrap/mixins/_size.scss | 10 + .../scss/bootstrap/mixins/_tab-focus.scss | 9 + .../scss/bootstrap/mixins/_table-row.scss | 28 + .../scss/bootstrap/mixins/_text-emphasis.scss | 12 + .../scss/bootstrap/mixins/_text-overflow.scss | 8 + .../scss/bootstrap/mixins/_vendor-prefixes.scss | 247 +++ openecomp-ui/resources/scss/common/_base.scss | 66 + openecomp-ui/resources/scss/common/_layout.scss | 22 + .../resources/scss/common/_typography.scss | 115 ++ openecomp-ui/resources/scss/common/_utils.scss | 299 ++++ openecomp-ui/resources/scss/common/_variables.scss | 47 + .../resources/scss/components/_buttons.scss | 46 + .../resources/scss/components/_dropzone.scss | 8 + .../resources/scss/components/_dualListBox.scss | 46 + .../scss/components/_expandableInput.scss | 61 + openecomp-ui/resources/scss/components/_forms.scss | 45 + .../resources/scss/components/_inputOptions.scss | 39 + .../resources/scss/components/_listEditorView.scss | 157 ++ .../resources/scss/components/_loader.scss | 159 ++ .../scss/components/_navigationSideBar.scss | 62 + .../resources/scss/components/_notifications.scss | 29 + .../resources/scss/components/_progressBar.scss | 24 + .../resources/scss/components/_punchOut.scss | 12 + .../scss/components/_sequenceDiagram.scss | 11 + .../resources/scss/components/_slidePanel.scss | 35 + .../scss/components/_submitErrorResponse.scss | 23 + .../resources/scss/components/_toggleInput.scss | 62 + .../resources/scss/components/_validationForm.scss | 102 ++ .../scss/components/_versionController.scss | 109 ++ .../resources/scss/modules/_entitlementPools.scss | 65 + .../resources/scss/modules/_featureGroup.scss | 77 + .../resources/scss/modules/_licenseAgreement.scss | 92 ++ .../resources/scss/modules/_licenseKeyGroup.scss | 54 + .../resources/scss/modules/_licenseModel.scss | 20 + .../resources/scss/modules/_onboardingCatalog.scss | 164 ++ .../modules/_softwareProductAttachmentPage.scss | 153 ++ .../modules/_softwareProductComponentGeneral.scss | 10 + .../modules/_softwareProductComponentNetwork.scss | 46 + .../scss/modules/_softwareProductCreatePage.scss | 39 + .../scss/modules/_softwareProductLandingPage.scss | 229 +++ .../scss/modules/_softwareProductNetworksPage.scss | 24 + .../modules/_softwareProductProcessesPage.scss | 84 + .../_softwareproductComponentLoadBalancing.scss | 43 + .../resources/scss/modules/_uploadScreen.scss | 46 + .../scss/modules/_vspComponentMonitoring.scss | 40 + .../scss/modules/_vspComponentQuestionnaire.scss | 54 + .../resources/scss/modules/_workflows.scss | 43 + openecomp-ui/resources/scss/onboarding.scss | 10 + openecomp-ui/resources/scss/style.scss | 3 + openecomp-ui/src/heat.html | 12 + openecomp-ui/src/index.html | 42 + .../src/nfvo-components/SubmitErrorResponse.jsx | 133 ++ .../confirmations/ConfirmationModalView.jsx | 53 + .../src/nfvo-components/editor/TabulatedEditor.jsx | 71 + .../src/nfvo-components/input/ExpandableInput.jsx | 77 + .../src/nfvo-components/input/SelectInput.jsx | 52 + .../src/nfvo-components/input/ToggleInput.jsx | 53 + .../input/dualListbox/DualListboxView.jsx | 132 ++ .../input/inputOptions/InputOptions.jsx | 221 +++ .../input/validation/ValidationButtons.jsx | 40 + .../input/validation/ValidationForm.jsx | 200 +++ .../input/validation/ValidationInput.jsx | 509 ++++++ .../input/validation/ValidationTab.jsx | 107 ++ .../input/validation/ValidationTabs.jsx | 72 + .../listEditor/ListEditorItemView.jsx | 47 + .../nfvo-components/listEditor/ListEditorView.jsx | 64 + openecomp-ui/src/nfvo-components/loader/Loader.jsx | 35 + .../src/nfvo-components/loader/LoaderConstants.js | 26 + .../src/nfvo-components/loader/LoaderReducer.js | 32 + openecomp-ui/src/nfvo-components/modal/Modal.jsx | 69 + .../notifications/NotificationConstants.js | 29 + .../notifications/NotificationModal.jsx | 100 ++ .../notifications/NotificationReducer.js | 51 + .../nfvo-components/panel/NavigationSideBar.jsx | 73 + .../src/nfvo-components/panel/SlidePanel.jsx | 109 ++ .../panel/versionController/VersionController.jsx | 165 ++ .../VersionControllerConstants.js | 38 + .../versionController/VersionControllerUtils.js | 49 + .../nfvo-components/progressBar/ProgressBar.jsx | 22 + .../src/nfvo-utils/ErrorResponseHandler.js | 72 + openecomp-ui/src/nfvo-utils/KeyMirror.js | 44 + openecomp-ui/src/nfvo-utils/RestAPIUtil.js | 288 ++++ openecomp-ui/src/nfvo-utils/UUID.js | 58 + openecomp-ui/src/nfvo-utils/i18n/i18n.js | 122 ++ openecomp-ui/src/nfvo-utils/i18n/locale.json | 1 + openecomp-ui/src/nfvo-utils/json/JSONPointer.js | 62 + openecomp-ui/src/nfvo-utils/json/JSONSchema.js | 155 ++ openecomp-ui/src/sdc-app/AppStore.js | 47 + openecomp-ui/src/sdc-app/Application.jsx | 23 + openecomp-ui/src/sdc-app/ModulesOptions.jsx | 150 ++ openecomp-ui/src/sdc-app/Test.jsx | 122 ++ openecomp-ui/src/sdc-app/config/Configuration.js | 62 + openecomp-ui/src/sdc-app/config/config.json | 8 + openecomp-ui/src/sdc-app/flows/FlowsActions.js | 191 +++ openecomp-ui/src/sdc-app/flows/FlowsConstants.js | 48 + openecomp-ui/src/sdc-app/flows/FlowsEditorModal.js | 54 + .../src/sdc-app/flows/FlowsEditorModalView.jsx | 40 + openecomp-ui/src/sdc-app/flows/FlowsListEditor.js | 53 + .../src/sdc-app/flows/FlowsListEditorView.jsx | 133 ++ openecomp-ui/src/sdc-app/flows/FlowsListReducer.js | 97 ++ openecomp-ui/src/sdc-app/flows/FlowsPunchOut.jsx | 63 + openecomp-ui/src/sdc-app/flows/FlowsReducersMap.js | 25 + openecomp-ui/src/sdc-app/flows/ImportantLogic.jsx | 96 ++ openecomp-ui/src/sdc-app/flows/SequenceDiagram.jsx | 35 + .../sdc-app/flows/SequenceDiagramModelHelper.js | 71 + openecomp-ui/src/sdc-app/flows/emptyModel.json | 11 + openecomp-ui/src/sdc-app/heatValidation.app.jsx | 13 + .../src/sdc-app/heatvalidation/UploadScreen.jsx | 182 +++ .../heatvalidation/UploadScreenActionHelper.js | 60 + .../heatvalidation/UploadScreenConstants.js | 28 + .../sdc-app/heatvalidation/UploadScreenReducer.js | 33 + .../heatvalidation/attachments/Attachments.js | 46 + .../attachments/AttachmentsActionHelper.js | 44 + .../attachments/AttachmentsConstants.js | 55 + .../attachments/AttachmentsReducer.js | 199 +++ .../heatvalidation/attachments/AttachmentsView.jsx | 190 +++ .../sdc-app/onboarding/OnboardingActionHelper.js | 188 +++ .../src/sdc-app/onboarding/OnboardingCatalog.js | 59 + .../sdc-app/onboarding/OnboardingCatalogView.jsx | 147 ++ .../src/sdc-app/onboarding/OnboardingConstants.js | 72 + .../src/sdc-app/onboarding/OnboardingPunchOut.jsx | 501 ++++++ .../src/sdc-app/onboarding/OnboardingReducers.js | 29 + .../sdc-app/onboarding/OnboardingReducersMap.js | 36 + .../FinalizedLicenseModelListReducer.js | 30 + .../onboarding/licenseModel/LicenseModel.js | 147 ++ .../licenseModel/LicenseModelActionHelper.js | 101 ++ .../licenseModel/LicenseModelConstants.js | 36 + .../licenseModel/LicenseModelEditorReducer.js | 33 + .../licenseModel/LicenseModelListReducer.js | 32 + .../onboarding/licenseModel/LicenseModelReducer.js | 66 + .../licenseModel/creation/LicenseModelCreation.js | 41 + .../creation/LicenseModelCreationActionHelper.js | 72 + .../creation/LicenseModelCreationConstants.js | 27 + .../creation/LicenseModelCreationReducer.js | 43 + .../creation/LicenseModelCreationView.jsx | 60 + .../EntitlementPoolsActionHelper.js | 149 ++ .../EntitlementPoolsConfirmationModal.jsx | 51 + .../entitlementPools/EntitlementPoolsConstants.js | 112 ++ .../entitlementPools/EntitlementPoolsEditor.js | 53 + .../EntitlementPoolsEditorReducer.js | 44 + .../EntitlementPoolsEditorView.jsx | 167 ++ .../entitlementPools/EntitlementPoolsListEditor.js | 53 + .../EntitlementPoolsListEditorView.jsx | 132 ++ .../EntitlementPoolsListReducer.js | 36 + .../featureGroups/FeatureGroupEditor.js | 66 + .../featureGroups/FeatureGroupEditorView.jsx | 339 ++++ .../featureGroups/FeatureGroupListEditor.js | 56 + .../featureGroups/FeatureGroupListEditorView.jsx | 136 ++ .../featureGroups/FeatureGroupsActionHelper.js | 165 ++ .../FeatureGroupsConfirmationModal.jsx | 48 + .../featureGroups/FeatureGroupsConstants.js | 60 + .../featureGroups/FeatureGroupsEditorReducer.js | 62 + .../featureGroups/FeatureGroupsListReducer.js | 36 + .../LicenseAgreementActionHelper.js | 160 ++ .../LicenseAgreementConfirmationModal.jsx | 43 + .../licenseAgreement/LicenseAgreementConstants.js | 66 + .../licenseAgreement/LicenseAgreementEditor.js | 60 + .../LicenseAgreementEditorReducer.js | 54 + .../LicenseAgreementEditorView.jsx | 247 +++ .../licenseAgreement/LicenseAgreementListEditor.js | 59 + .../LicenseAgreementListEditorView.jsx | 126 ++ .../LicenseAgreementListReducer.js | 37 + .../LicenseKeyGroupsActionHelper.js | 139 ++ .../LicenseKeyGroupsConfirmationModal.jsx | 49 + .../licenseKeyGroups/LicenseKeyGroupsConstants.js | 64 + .../licenseKeyGroups/LicenseKeyGroupsEditor.js | 53 + .../LicenseKeyGroupsEditorReducer.js | 43 + .../LicenseKeyGroupsEditorView.jsx | 92 ++ .../licenseKeyGroups/LicenseKeyGroupsListEditor.js | 50 + .../LicenseKeyGroupsListEditorView.jsx | 138 ++ .../LicenseKeyGroupsListReducer.js | 37 + .../onboarding/softwareProduct/SoftwareProduct.js | 321 ++++ .../softwareProduct/SoftwareProductActionHelper.js | 333 ++++ .../SoftwareProductCategoriesHelper.js | 35 + .../softwareProduct/SoftwareProductConstants.js | 53 + .../softwareProduct/SoftwareProductListReducer.js | 35 + .../softwareProduct/SoftwareProductReducer.js | 80 + .../attachments/SoftwareProductAttachments.js | 43 + .../SoftwareProductAttachmentsActionHelper.js | 44 + .../SoftwareProductAttachmentsConstants.js | 55 + .../SoftwareProductAttachmentsReducer.js | 199 +++ .../attachments/SoftwareProductAttachmentsView.jsx | 182 +++ .../SoftwareProductComponentEditorReducer.js | 47 + .../SoftwareProductComponentsActionHelper.js | 129 ++ .../SoftwareProductComponentsConstants.js | 46 + .../components/SoftwareProductComponentsList.js | 48 + .../SoftwareProductComponentsListReducer.js | 33 + .../SoftwareProductComponentsListView.jsx | 89 ++ .../compute/SoftwareProductComponentCompute.js | 52 + .../SoftwareProductComponentComputeView.jsx | 129 ++ .../general/SoftwareProductComponentsGeneral.js | 52 + .../SoftwareProductComponentsGeneralView.jsx | 186 +++ .../SoftwareProductComponentLoadBalancing.js | 47 + ...oftwareProductComponentLoadBalancingRefView.jsx | 103 ++ .../SoftwareProductComponentsMonitoring.js | 59 + ...twareProductComponentsMonitoringActionHelper.js | 110 ++ ...SoftwareProductComponentsMonitoringConstants.js | 38 + .../SoftwareProductComponentsMonitoringReducer.js | 54 + .../SoftwareProductComponentsMonitoringView.jsx | 117 ++ .../network/SoftwareProductComponentsNICEditor.js | 54 + .../SoftwareProductComponentsNICEditorReducer.js | 49 + .../SoftwareProductComponentsNICEditorView.jsx | 322 ++++ .../SoftwareProductComponentsNICListReducer.js | 33 + ...SoftwareProductComponentsNetworkActionHelper.js | 129 ++ .../SoftwareProductComponentsNetworkConstants.js | 33 + .../SoftwareProductComponentsNetworkList.js | 86 ++ .../SoftwareProductComponentsNetworkListView.jsx | 136 ++ ...oftwareProductComponentProcessesActionHelper.js | 145 ++ .../SoftwareProductComponentProcessesConstants.js | 34 + .../SoftwareProductComponentProcessesEditor.js | 54 + ...ftwareProductComponentProcessesEditorReducer.js | 44 + ...SoftwareProductComponentProcessesEditorView.jsx | 124 ++ .../SoftwareProductComponentProcessesList.js | 54 + ...SoftwareProductComponentProcessesListReducer.js | 37 + ...ProductComponentsProcessesConfirmationModal.jsx | 45 + .../SoftwareProductComponentsProcessesListView.jsx | 125 ++ .../storage/SoftwareProductComponentStorage.js | 48 + .../SoftwareProductComponentStorageView.jsx | 124 ++ .../creation/SoftwareProductCreation.js | 49 + .../SoftwareProductCreationActionHelper.js | 77 + .../creation/SoftwareProductCreationConstants.js | 27 + .../creation/SoftwareProductCreationReducer.js | 44 + .../creation/SoftwareProductCreationView.jsx | 123 ++ .../details/SoftwareProductDetails.js | 66 + .../details/SoftwareProductDetailsReducer.js | 63 + .../details/SoftwareProductDetailsView.jsx | 264 ++++ .../landingPage/SoftwareProductLandingPage.js | 97 ++ ...reProductLandingPageUploadConfirmationModal.jsx | 38 + .../landingPage/SoftwareProductLandingPageView.jsx | 272 ++++ .../networks/SoftwareProductNetworks.js | 30 + .../SoftwareProductNetworksActionHelper.js | 47 + .../networks/SoftwareProductNetworksConstants.js | 25 + .../networks/SoftwareProductNetworksListReducer.js | 30 + .../networks/SoftwareProductNetworksView.jsx | 73 + .../processes/SoftwareProductProcesses.js | 49 + .../SoftwareProductProcessesActionHelper.js | 151 ++ .../SoftwareProductProcessesConfirmationModal.jsx | 45 + .../processes/SoftwareProductProcessesConstants.js | 34 + .../processes/SoftwareProductProcessesEditor.js | 52 + .../SoftwareProductProcessesEditorReducer.js | 44 + .../SoftwareProductProcessesEditorView.jsx | 122 ++ .../SoftwareProductProcessesListReducer.js | 37 + .../processes/SoftwareProductProcessesView.jsx | 112 ++ openecomp-ui/src/sdc-app/punch-outs.js | 29 + openecomp-ui/src/sdc-app/sdc.app.jsx | 18 + openecomp-ui/test-utils/MockRest.js | 85 + openecomp-ui/test-utils/Util.js | 55 + openecomp-ui/test/flows/FlowsListEditor.test.js | 279 ++++ openecomp-ui/test/flows/flowsEditorModal.test.js | 89 ++ openecomp-ui/test/flows/test.js | 497 ++++++ .../test/licenseModel/entitlementPools/test.js | 244 +++ .../test/licenseModel/featureGroups/test.js | 212 +++ .../test/licenseModel/licenseAgreement/test.js | 205 +++ .../test/licenseModel/licenseKeyGroups/test.js | 197 +++ openecomp-ui/test/licenseModel/test.js | 66 + .../input/dualListBox/dualListbox.test.js | 94 ++ .../nfvo-components/listEditor/listEditor.test.js | 96 ++ .../notifications/notificationsModal.test.js | 144 ++ .../VersionController/versionController.test.js | 44 + .../versionControllerUtils.test.js | 172 +++ openecomp-ui/test/setup.test.js | 25 + .../SoftwareProductAttachmentsView.test.js | 198 +++ .../SoftwareproductAttachmentsHelper.test.js | 153 ++ .../softwareProduct/components/compute/test.js | 132 ++ .../SoftwareProductComponentsGeneral.test.js | 129 ++ .../softwareProductComponentLoadbalancing.test.js | 122 ++ .../SoftwareProductComponentsMonitoring.test.js | 101 ++ .../softwareProduct/components/monitoring/test.js | 215 +++ .../SoftwareProductComponentsNICEditor.test.js | 97 ++ .../SoftwareProductComponentsNetwork.test.js | 125 ++ ...areProductComponentsNetworkActionHelper.test.js | 305 ++++ .../softwareProduct/components/processes/test.js | 214 +++ .../softwareProduct/components/storage/test.js | 132 ++ .../test/softwareProduct/components/test.js | 101 ++ .../softwareProduct/details/detailsView.test.js | 438 ++++++ openecomp-ui/test/softwareProduct/details/test.js | 383 +++++ .../test/softwareProduct/details/vspQschema.js | 61 + .../networks/SoftwareProductNetworksView.test.js | 122 ++ .../softwareProductNetworksActionHelper.test.js | 63 + .../test/softwareProduct/processes/test.js | 459 ++++++ .../test/utils/errorResponseHandler.test.js | 135 ++ openecomp-ui/test/utils/restApiUtil.test.js | 149 ++ openecomp-ui/test/utils/uuid.test.js | 52 + openecomp-ui/tests.webpack.js | 35 + openecomp-ui/tools/gulp/deployment/gulpfile.js | 33 + openecomp-ui/tools/gulp/deployment/package.json | 23 + .../gulp/deployment/tools/gulp/tasks/i18nUpdate.js | 171 +++ openecomp-ui/tools/gulp/tasks/i18n.js | 115 ++ openecomp-ui/tools/gulp/tasks/prod.js | 100 ++ .../tools/webpack/config-json-loader/index.js | 26 + .../webapp-heat-validation/META-INF/context.xml | 4 + .../webapp-heat-validation/WEB-INF/jetty-web.xml | 8 + .../webapp-heat-validation/WEB-INF/rewrite.config | 2 + .../webapp-heat-validation/WEB-INF/web.xml | 51 + .../webapp-heat-validation/heat-validation.xml | 45 + .../webapp-onboarding/META-INF/context.xml | 4 + .../webapp-onboarding/WEB-INF/jetty-web.xml | 8 + .../webapp-onboarding/WEB-INF/rewrite.config | 2 + openecomp-ui/webapp-onboarding/WEB-INF/web.xml | 51 + openecomp-ui/webapp-onboarding/onboarding.xml | 45 + openecomp-ui/webpack.config.js | 122 ++ pom.xml | 2 +- .../sdc-normatives/files/default/normatives.tar.gz | Bin 49377 -> 49377 bytes 574 files changed, 50400 insertions(+), 104 deletions(-) create mode 100644 dox-sequence-diagram-ui/.babelrc create mode 100644 dox-sequence-diagram-ui/.gitignore create mode 100644 dox-sequence-diagram-ui/.npmignore create mode 100644 dox-sequence-diagram-ui/LICENSE.txt create mode 100644 dox-sequence-diagram-ui/eslintrc.json create mode 100644 dox-sequence-diagram-ui/package.json create mode 100644 dox-sequence-diagram-ui/src/main/webapp/WEB-INF/web.xml create mode 100644 dox-sequence-diagram-ui/src/main/webapp/favicon.ico create mode 100644 dox-sequence-diagram-ui/src/main/webapp/index.html create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/Sequencer.jsx create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/common/Common.js create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/common/Logger.js create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/common/Options.js create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/application/Application.jsx create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/diagram/Diagram.jsx create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/diagram/components/popup/Popup.jsx create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/diagram/templates/diagram.html create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/diagram/templates/fragment.html create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/diagram/templates/lifeline.html create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/diagram/templates/message.html create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/diagram/templates/occurrence.html create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/diagram/templates/title.html create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/dialog/Dialog.jsx create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/editor/Editor.jsx create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/editor/components/designer/Designer.jsx create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/editor/components/designer/components/actions/Actions.jsx create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/editor/components/designer/components/lifeline/Lifeline.jsx create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/editor/components/designer/components/lifeline/LifelineNew.jsx create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/editor/components/designer/components/lifeline/Lifelines.jsx create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/editor/components/designer/components/message/Message.jsx create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/editor/components/designer/components/message/MessageNew.jsx create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/editor/components/designer/components/message/Messages.jsx create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/editor/components/designer/components/metadata/Metadata.jsx create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/editor/components/source/Source.jsx create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/editor/components/toolbar/Toolbar.jsx create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/export/Export.jsx create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/icons/Icon.jsx create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/overlay/Overlay.jsx create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/Metamodel.js create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/Metamodels.js create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/Model.js create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/demo/scenarios/Scenarios.js create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/demo/scenarios/metamodel/BLANK.json create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/demo/scenarios/metamodel/DIMENSIONS.json create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/demo/scenarios/metamodel/ECOMP.json create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/demo/scenarios/model/BLANK.json create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/demo/scenarios/model/DIMENSIONS.json create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/demo/scenarios/model/ECOMP.json create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/schema/asdc-sequencer-meta-schema.xsd create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/schema/asdc-sequencer-schema.xsd create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/schema/asdc_sequencer_meta_schema.json create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/schema/asdc_sequencer_schema.json create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/templates/default.metamodel.json create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/templates/default.model.json create mode 100644 dox-sequence-diagram-ui/src/main/webapp/lib/main.jsx create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/common/_typography.scss create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/common/_variables.scss create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/common/fonts/omnes-att-bold-italic.otf create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/common/fonts/omnes-att-bold.otf create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/common/fonts/omnes-att-italic.otf create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/common/fonts/omnes-att-light-Italic.otf create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/common/fonts/omnes-att-light.otf create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/common/fonts/omnes-att-medium-italic.otf create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/common/fonts/omnes-att-medium.otf create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/common/fonts/omnes-att-regular.otf create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sequencer-actions.scss create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sequencer-common.scss create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sequencer-controls.scss create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sequencer-designer.scss create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sequencer-development.scss create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sequencer-diagram-svg.scss create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sequencer-diagram.scss create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sequencer-dialog.scss create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sequencer-editor.scss create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sequencer-standalone.scss create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites-raster.scss create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites.css.svg create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites.defs.svg create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites.png create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/amdocs.png create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/arrow/request-async.svg create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/arrow/request-sync.svg create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/arrow/response.svg create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/blank.svg create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/close.svg create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/collapsed.svg create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/delete.svg create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/download.svg create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/edit.svg create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/exclaim.svg create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/expanded.svg create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/fragment-default.svg create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/fragment-start.svg create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/fragment-stop.svg create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/handle.svg create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/info.svg create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/notes.svg create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/occurrence-default.svg create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/occurrence-start.svg create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/occurrence-stop.svg create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/open.svg create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/plus.svg create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/question.svg create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/save.svg create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/settings.svg create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/upload.svg create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/validate.svg create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/sdc-sequencer.scss create mode 100644 dox-sequence-diagram-ui/src/main/webapp/res/thirdparty/react-select/react-select.min.css create mode 100644 dox-sequence-diagram-ui/tools/copy-assets.js create mode 100644 dox-sequence-diagram-ui/webpack.config.js create mode 100644 openecomp-ui/.babelrc create mode 100644 openecomp-ui/.editorconfig create mode 100644 openecomp-ui/.eslintignore create mode 100644 openecomp-ui/.eslintrc create mode 100644 openecomp-ui/.gitignore create mode 100644 openecomp-ui/LICENSE create mode 100644 openecomp-ui/devConfig.defaults.json create mode 100644 openecomp-ui/fixture/data/entitlementPools.json create mode 100644 openecomp-ui/fixture/data/featureGroup.json create mode 100644 openecomp-ui/fixture/data/featureGroups.json create mode 100644 openecomp-ui/fixture/data/licenseAgreementList.json create mode 100644 openecomp-ui/fixture/data/licenseKeyGroups.json create mode 100644 openecomp-ui/fixture/data/licenseModels.json create mode 100644 openecomp-ui/fixture/data/softwareProduct.json create mode 100644 openecomp-ui/fixture/data/softwareProductList.json create mode 100644 openecomp-ui/fixture/express.js create mode 100644 openecomp-ui/fixture/fixture.js create mode 100644 openecomp-ui/fixture/middleware.js create mode 100644 openecomp-ui/gulpfile.js create mode 100644 openecomp-ui/karma.conf.js create mode 100644 openecomp-ui/package.json create mode 100644 openecomp-ui/pom.xml create mode 100644 openecomp-ui/readMe.txt create mode 100644 openecomp-ui/resources/css/font-awesome.min.css create mode 100644 openecomp-ui/resources/fonts/fontawesome-webfont.eot create mode 100644 openecomp-ui/resources/fonts/fontawesome-webfont.svg create mode 100644 openecomp-ui/resources/fonts/fontawesome-webfont.ttf create mode 100644 openecomp-ui/resources/fonts/fontawesome-webfont.woff create mode 100644 openecomp-ui/resources/fonts/fontawesome-webfont.woff2 create mode 100644 openecomp-ui/resources/fonts/omnes-att-bold-italic.otf create mode 100644 openecomp-ui/resources/fonts/omnes-att-bold.otf create mode 100644 openecomp-ui/resources/fonts/omnes-att-italic.otf create mode 100644 openecomp-ui/resources/fonts/omnes-att-light-Italic.otf create mode 100644 openecomp-ui/resources/fonts/omnes-att-light.otf create mode 100644 openecomp-ui/resources/fonts/omnes-att-medium-italic.otf create mode 100644 openecomp-ui/resources/fonts/omnes-att-medium.otf create mode 100644 openecomp-ui/resources/fonts/omnes-att-regular.otf create mode 100644 openecomp-ui/resources/images/ecomp/ASDC_Sprite.png create mode 100644 openecomp-ui/resources/images/ecomp/sprite-services-icons.png create mode 100644 openecomp-ui/resources/images/icons/favicon.ico create mode 100644 openecomp-ui/resources/images/icons/favicon.png create mode 100644 openecomp-ui/resources/images/onboarding/vendor-license-model.svg create mode 100644 openecomp-ui/resources/images/onboarding/vendor-software-product.svg create mode 100644 openecomp-ui/resources/images/plus-circle-icon.svg create mode 100644 openecomp-ui/resources/scss/_common.scss create mode 100644 openecomp-ui/resources/scss/_components.scss create mode 100644 openecomp-ui/resources/scss/_modules.scss create mode 100644 openecomp-ui/resources/scss/bootstrap-cust/_buttons.scss create mode 100644 openecomp-ui/resources/scss/bootstrap-cust/_close.scss create mode 100644 openecomp-ui/resources/scss/bootstrap-cust/_dropdowns.scss create mode 100644 openecomp-ui/resources/scss/bootstrap-cust/_forms.scss create mode 100644 openecomp-ui/resources/scss/bootstrap-cust/_list-group.scss create mode 100644 openecomp-ui/resources/scss/bootstrap-cust/_mixins.scss create mode 100644 openecomp-ui/resources/scss/bootstrap-cust/_modals.scss create mode 100644 openecomp-ui/resources/scss/bootstrap-cust/_navbar.scss create mode 100644 openecomp-ui/resources/scss/bootstrap-cust/_navs.scss create mode 100644 openecomp-ui/resources/scss/bootstrap-cust/_panels.scss create mode 100644 openecomp-ui/resources/scss/bootstrap-cust/_tables.scss create mode 100644 openecomp-ui/resources/scss/bootstrap-cust/_variables.scss create mode 100644 openecomp-ui/resources/scss/bootstrap.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/_alerts.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/_badges.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/_breadcrumbs.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/_button-groups.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/_buttons.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/_carousel.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/_close.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/_code.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/_component-animations.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/_dropdowns.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/_forms.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/_glyphicons.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/_grid.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/_input-groups.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/_jumbotron.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/_labels.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/_list-group.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/_media.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/_mixins.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/_modals.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/_navbar.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/_navs.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/_normalize.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/_pager.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/_pagination.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/_panels.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/_popovers.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/_print.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/_progress-bars.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/_responsive-embed.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/_responsive-utilities.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/_scaffolding.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/_tables.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/_theme.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/_thumbnails.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/_tooltip.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/_type.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/_utilities.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/_variables.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/_wells.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/mixins/_alerts.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/mixins/_background-variant.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/mixins/_border-radius.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/mixins/_buttons.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/mixins/_center-block.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/mixins/_clearfix.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/mixins/_forms.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/mixins/_gradients.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/mixins/_grid-framework.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/mixins/_grid.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/mixins/_hide-text.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/mixins/_image.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/mixins/_labels.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/mixins/_list-group.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/mixins/_nav-divider.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/mixins/_nav-vertical-align.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/mixins/_opacity.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/mixins/_pagination.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/mixins/_panels.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/mixins/_progress-bar.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/mixins/_reset-filter.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/mixins/_reset-text.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/mixins/_resize.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/mixins/_responsive-visibility.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/mixins/_size.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/mixins/_tab-focus.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/mixins/_table-row.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/mixins/_text-emphasis.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/mixins/_text-overflow.scss create mode 100644 openecomp-ui/resources/scss/bootstrap/mixins/_vendor-prefixes.scss create mode 100644 openecomp-ui/resources/scss/common/_base.scss create mode 100644 openecomp-ui/resources/scss/common/_layout.scss create mode 100644 openecomp-ui/resources/scss/common/_typography.scss create mode 100644 openecomp-ui/resources/scss/common/_utils.scss create mode 100644 openecomp-ui/resources/scss/common/_variables.scss create mode 100644 openecomp-ui/resources/scss/components/_buttons.scss create mode 100644 openecomp-ui/resources/scss/components/_dropzone.scss create mode 100644 openecomp-ui/resources/scss/components/_dualListBox.scss create mode 100644 openecomp-ui/resources/scss/components/_expandableInput.scss create mode 100644 openecomp-ui/resources/scss/components/_forms.scss create mode 100644 openecomp-ui/resources/scss/components/_inputOptions.scss create mode 100644 openecomp-ui/resources/scss/components/_listEditorView.scss create mode 100644 openecomp-ui/resources/scss/components/_loader.scss create mode 100644 openecomp-ui/resources/scss/components/_navigationSideBar.scss create mode 100644 openecomp-ui/resources/scss/components/_notifications.scss create mode 100644 openecomp-ui/resources/scss/components/_progressBar.scss create mode 100644 openecomp-ui/resources/scss/components/_punchOut.scss create mode 100644 openecomp-ui/resources/scss/components/_sequenceDiagram.scss create mode 100644 openecomp-ui/resources/scss/components/_slidePanel.scss create mode 100644 openecomp-ui/resources/scss/components/_submitErrorResponse.scss create mode 100644 openecomp-ui/resources/scss/components/_toggleInput.scss create mode 100644 openecomp-ui/resources/scss/components/_validationForm.scss create mode 100644 openecomp-ui/resources/scss/components/_versionController.scss create mode 100644 openecomp-ui/resources/scss/modules/_entitlementPools.scss create mode 100644 openecomp-ui/resources/scss/modules/_featureGroup.scss create mode 100644 openecomp-ui/resources/scss/modules/_licenseAgreement.scss create mode 100644 openecomp-ui/resources/scss/modules/_licenseKeyGroup.scss create mode 100644 openecomp-ui/resources/scss/modules/_licenseModel.scss create mode 100644 openecomp-ui/resources/scss/modules/_onboardingCatalog.scss create mode 100644 openecomp-ui/resources/scss/modules/_softwareProductAttachmentPage.scss create mode 100644 openecomp-ui/resources/scss/modules/_softwareProductComponentGeneral.scss create mode 100644 openecomp-ui/resources/scss/modules/_softwareProductComponentNetwork.scss create mode 100644 openecomp-ui/resources/scss/modules/_softwareProductCreatePage.scss create mode 100644 openecomp-ui/resources/scss/modules/_softwareProductLandingPage.scss create mode 100644 openecomp-ui/resources/scss/modules/_softwareProductNetworksPage.scss create mode 100644 openecomp-ui/resources/scss/modules/_softwareProductProcessesPage.scss create mode 100644 openecomp-ui/resources/scss/modules/_softwareproductComponentLoadBalancing.scss create mode 100644 openecomp-ui/resources/scss/modules/_uploadScreen.scss create mode 100644 openecomp-ui/resources/scss/modules/_vspComponentMonitoring.scss create mode 100644 openecomp-ui/resources/scss/modules/_vspComponentQuestionnaire.scss create mode 100644 openecomp-ui/resources/scss/modules/_workflows.scss create mode 100644 openecomp-ui/resources/scss/onboarding.scss create mode 100644 openecomp-ui/resources/scss/style.scss create mode 100644 openecomp-ui/src/heat.html create mode 100644 openecomp-ui/src/index.html create mode 100644 openecomp-ui/src/nfvo-components/SubmitErrorResponse.jsx create mode 100644 openecomp-ui/src/nfvo-components/confirmations/ConfirmationModalView.jsx create mode 100644 openecomp-ui/src/nfvo-components/editor/TabulatedEditor.jsx create mode 100644 openecomp-ui/src/nfvo-components/input/ExpandableInput.jsx create mode 100644 openecomp-ui/src/nfvo-components/input/SelectInput.jsx create mode 100644 openecomp-ui/src/nfvo-components/input/ToggleInput.jsx create mode 100644 openecomp-ui/src/nfvo-components/input/dualListbox/DualListboxView.jsx create mode 100644 openecomp-ui/src/nfvo-components/input/inputOptions/InputOptions.jsx create mode 100644 openecomp-ui/src/nfvo-components/input/validation/ValidationButtons.jsx create mode 100644 openecomp-ui/src/nfvo-components/input/validation/ValidationForm.jsx create mode 100644 openecomp-ui/src/nfvo-components/input/validation/ValidationInput.jsx create mode 100644 openecomp-ui/src/nfvo-components/input/validation/ValidationTab.jsx create mode 100644 openecomp-ui/src/nfvo-components/input/validation/ValidationTabs.jsx create mode 100644 openecomp-ui/src/nfvo-components/listEditor/ListEditorItemView.jsx create mode 100644 openecomp-ui/src/nfvo-components/listEditor/ListEditorView.jsx create mode 100644 openecomp-ui/src/nfvo-components/loader/Loader.jsx create mode 100644 openecomp-ui/src/nfvo-components/loader/LoaderConstants.js create mode 100644 openecomp-ui/src/nfvo-components/loader/LoaderReducer.js create mode 100644 openecomp-ui/src/nfvo-components/modal/Modal.jsx create mode 100644 openecomp-ui/src/nfvo-components/notifications/NotificationConstants.js create mode 100644 openecomp-ui/src/nfvo-components/notifications/NotificationModal.jsx create mode 100644 openecomp-ui/src/nfvo-components/notifications/NotificationReducer.js create mode 100644 openecomp-ui/src/nfvo-components/panel/NavigationSideBar.jsx create mode 100644 openecomp-ui/src/nfvo-components/panel/SlidePanel.jsx create mode 100644 openecomp-ui/src/nfvo-components/panel/versionController/VersionController.jsx create mode 100644 openecomp-ui/src/nfvo-components/panel/versionController/VersionControllerConstants.js create mode 100644 openecomp-ui/src/nfvo-components/panel/versionController/VersionControllerUtils.js create mode 100644 openecomp-ui/src/nfvo-components/progressBar/ProgressBar.jsx create mode 100644 openecomp-ui/src/nfvo-utils/ErrorResponseHandler.js create mode 100644 openecomp-ui/src/nfvo-utils/KeyMirror.js create mode 100644 openecomp-ui/src/nfvo-utils/RestAPIUtil.js create mode 100644 openecomp-ui/src/nfvo-utils/UUID.js create mode 100644 openecomp-ui/src/nfvo-utils/i18n/i18n.js create mode 100644 openecomp-ui/src/nfvo-utils/i18n/locale.json create mode 100644 openecomp-ui/src/nfvo-utils/json/JSONPointer.js create mode 100644 openecomp-ui/src/nfvo-utils/json/JSONSchema.js create mode 100644 openecomp-ui/src/sdc-app/AppStore.js create mode 100644 openecomp-ui/src/sdc-app/Application.jsx create mode 100644 openecomp-ui/src/sdc-app/ModulesOptions.jsx create mode 100644 openecomp-ui/src/sdc-app/Test.jsx create mode 100644 openecomp-ui/src/sdc-app/config/Configuration.js create mode 100644 openecomp-ui/src/sdc-app/config/config.json create mode 100644 openecomp-ui/src/sdc-app/flows/FlowsActions.js create mode 100644 openecomp-ui/src/sdc-app/flows/FlowsConstants.js create mode 100644 openecomp-ui/src/sdc-app/flows/FlowsEditorModal.js create mode 100644 openecomp-ui/src/sdc-app/flows/FlowsEditorModalView.jsx create mode 100644 openecomp-ui/src/sdc-app/flows/FlowsListEditor.js create mode 100644 openecomp-ui/src/sdc-app/flows/FlowsListEditorView.jsx create mode 100644 openecomp-ui/src/sdc-app/flows/FlowsListReducer.js create mode 100644 openecomp-ui/src/sdc-app/flows/FlowsPunchOut.jsx create mode 100644 openecomp-ui/src/sdc-app/flows/FlowsReducersMap.js create mode 100644 openecomp-ui/src/sdc-app/flows/ImportantLogic.jsx create mode 100644 openecomp-ui/src/sdc-app/flows/SequenceDiagram.jsx create mode 100644 openecomp-ui/src/sdc-app/flows/SequenceDiagramModelHelper.js create mode 100644 openecomp-ui/src/sdc-app/flows/emptyModel.json create mode 100644 openecomp-ui/src/sdc-app/heatValidation.app.jsx create mode 100644 openecomp-ui/src/sdc-app/heatvalidation/UploadScreen.jsx create mode 100644 openecomp-ui/src/sdc-app/heatvalidation/UploadScreenActionHelper.js create mode 100644 openecomp-ui/src/sdc-app/heatvalidation/UploadScreenConstants.js create mode 100644 openecomp-ui/src/sdc-app/heatvalidation/UploadScreenReducer.js create mode 100644 openecomp-ui/src/sdc-app/heatvalidation/attachments/Attachments.js create mode 100644 openecomp-ui/src/sdc-app/heatvalidation/attachments/AttachmentsActionHelper.js create mode 100644 openecomp-ui/src/sdc-app/heatvalidation/attachments/AttachmentsConstants.js create mode 100644 openecomp-ui/src/sdc-app/heatvalidation/attachments/AttachmentsReducer.js create mode 100644 openecomp-ui/src/sdc-app/heatvalidation/attachments/AttachmentsView.jsx create mode 100644 openecomp-ui/src/sdc-app/onboarding/OnboardingActionHelper.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/OnboardingCatalog.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/OnboardingCatalogView.jsx create mode 100644 openecomp-ui/src/sdc-app/onboarding/OnboardingConstants.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/OnboardingPunchOut.jsx create mode 100644 openecomp-ui/src/sdc-app/onboarding/OnboardingReducers.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/OnboardingReducersMap.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/FinalizedLicenseModelListReducer.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/LicenseModel.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/LicenseModelActionHelper.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/LicenseModelConstants.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/LicenseModelEditorReducer.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/LicenseModelListReducer.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/LicenseModelReducer.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/creation/LicenseModelCreation.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/creation/LicenseModelCreationActionHelper.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/creation/LicenseModelCreationConstants.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/creation/LicenseModelCreationReducer.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/creation/LicenseModelCreationView.jsx create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsActionHelper.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsConfirmationModal.jsx create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsConstants.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsEditor.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsEditorReducer.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsEditorView.jsx create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsListEditor.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsListEditorView.jsx create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsListReducer.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupEditor.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupEditorView.jsx create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupListEditor.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupListEditorView.jsx create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupsActionHelper.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupsConfirmationModal.jsx create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupsConstants.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupsEditorReducer.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupsListReducer.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementActionHelper.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementConfirmationModal.jsx create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementConstants.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementEditor.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementEditorReducer.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementEditorView.jsx create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementListEditor.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementListEditorView.jsx create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementListReducer.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsActionHelper.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsConfirmationModal.jsx create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsConstants.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsEditor.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsEditorReducer.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsEditorView.jsx create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsListEditor.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsListEditorView.jsx create mode 100644 openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsListReducer.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProduct.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductActionHelper.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductCategoriesHelper.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductListReducer.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductReducer.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachments.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsActionHelper.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsConstants.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsReducer.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsView.jsx create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/SoftwareProductComponentEditorReducer.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/SoftwareProductComponentsActionHelper.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/SoftwareProductComponentsConstants.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/SoftwareProductComponentsList.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/SoftwareProductComponentsListReducer.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/SoftwareProductComponentsListView.jsx create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/compute/SoftwareProductComponentCompute.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/compute/SoftwareProductComponentComputeView.jsx create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/general/SoftwareProductComponentsGeneral.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/general/SoftwareProductComponentsGeneralView.jsx create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/loadBalancing/SoftwareProductComponentLoadBalancing.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/loadBalancing/SoftwareProductComponentLoadBalancingRefView.jsx create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoring.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoringActionHelper.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoringConstants.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoringReducer.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoringView.jsx create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNICEditor.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNICEditorReducer.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNICEditorView.jsx create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNICListReducer.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNetworkActionHelper.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNetworkConstants.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNetworkList.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNetworkListView.jsx create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesActionHelper.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesConstants.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesEditor.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesEditorReducer.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesEditorView.jsx create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesList.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesListReducer.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentsProcessesConfirmationModal.jsx create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentsProcessesListView.jsx create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/storage/SoftwareProductComponentStorage.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/storage/SoftwareProductComponentStorageView.jsx create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreation.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreationActionHelper.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreationConstants.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreationReducer.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreationView.jsx create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/details/SoftwareProductDetails.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/details/SoftwareProductDetailsReducer.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/details/SoftwareProductDetailsView.jsx create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/landingPage/SoftwareProductLandingPage.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/landingPage/SoftwareProductLandingPageUploadConfirmationModal.jsx create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/landingPage/SoftwareProductLandingPageView.jsx create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/networks/SoftwareProductNetworks.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/networks/SoftwareProductNetworksActionHelper.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/networks/SoftwareProductNetworksConstants.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/networks/SoftwareProductNetworksListReducer.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/networks/SoftwareProductNetworksView.jsx create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcesses.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesActionHelper.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesConfirmationModal.jsx create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesConstants.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesEditor.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesEditorReducer.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesEditorView.jsx create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesListReducer.js create mode 100644 openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesView.jsx create mode 100644 openecomp-ui/src/sdc-app/punch-outs.js create mode 100644 openecomp-ui/src/sdc-app/sdc.app.jsx create mode 100644 openecomp-ui/test-utils/MockRest.js create mode 100644 openecomp-ui/test-utils/Util.js create mode 100644 openecomp-ui/test/flows/FlowsListEditor.test.js create mode 100644 openecomp-ui/test/flows/flowsEditorModal.test.js create mode 100644 openecomp-ui/test/flows/test.js create mode 100644 openecomp-ui/test/licenseModel/entitlementPools/test.js create mode 100644 openecomp-ui/test/licenseModel/featureGroups/test.js create mode 100644 openecomp-ui/test/licenseModel/licenseAgreement/test.js create mode 100644 openecomp-ui/test/licenseModel/licenseKeyGroups/test.js create mode 100644 openecomp-ui/test/licenseModel/test.js create mode 100644 openecomp-ui/test/nfvo-components/input/dualListBox/dualListbox.test.js create mode 100644 openecomp-ui/test/nfvo-components/listEditor/listEditor.test.js create mode 100644 openecomp-ui/test/nfvo-components/notifications/notificationsModal.test.js create mode 100644 openecomp-ui/test/nfvo-components/panel/VersionController/versionController.test.js create mode 100644 openecomp-ui/test/nfvo-components/panel/VersionController/versionControllerUtils.test.js create mode 100644 openecomp-ui/test/setup.test.js create mode 100644 openecomp-ui/test/softwareProduct/attachments/SoftwareProductAttachmentsView.test.js create mode 100644 openecomp-ui/test/softwareProduct/attachments/SoftwareproductAttachmentsHelper.test.js create mode 100644 openecomp-ui/test/softwareProduct/components/compute/test.js create mode 100644 openecomp-ui/test/softwareProduct/components/general/SoftwareProductComponentsGeneral.test.js create mode 100644 openecomp-ui/test/softwareProduct/components/loadBalancing/softwareProductComponentLoadbalancing.test.js create mode 100644 openecomp-ui/test/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoring.test.js create mode 100644 openecomp-ui/test/softwareProduct/components/monitoring/test.js create mode 100644 openecomp-ui/test/softwareProduct/components/network/SoftwareProductComponentsNICEditor.test.js create mode 100644 openecomp-ui/test/softwareProduct/components/network/SoftwareProductComponentsNetwork.test.js create mode 100644 openecomp-ui/test/softwareProduct/components/network/SoftwareProductComponentsNetworkActionHelper.test.js create mode 100644 openecomp-ui/test/softwareProduct/components/processes/test.js create mode 100644 openecomp-ui/test/softwareProduct/components/storage/test.js create mode 100644 openecomp-ui/test/softwareProduct/components/test.js create mode 100644 openecomp-ui/test/softwareProduct/details/detailsView.test.js create mode 100644 openecomp-ui/test/softwareProduct/details/test.js create mode 100644 openecomp-ui/test/softwareProduct/details/vspQschema.js create mode 100644 openecomp-ui/test/softwareProduct/networks/SoftwareProductNetworksView.test.js create mode 100644 openecomp-ui/test/softwareProduct/networks/softwareProductNetworksActionHelper.test.js create mode 100644 openecomp-ui/test/softwareProduct/processes/test.js create mode 100644 openecomp-ui/test/utils/errorResponseHandler.test.js create mode 100644 openecomp-ui/test/utils/restApiUtil.test.js create mode 100644 openecomp-ui/test/utils/uuid.test.js create mode 100644 openecomp-ui/tests.webpack.js create mode 100644 openecomp-ui/tools/gulp/deployment/gulpfile.js create mode 100644 openecomp-ui/tools/gulp/deployment/package.json create mode 100644 openecomp-ui/tools/gulp/deployment/tools/gulp/tasks/i18nUpdate.js create mode 100644 openecomp-ui/tools/gulp/tasks/i18n.js create mode 100644 openecomp-ui/tools/gulp/tasks/prod.js create mode 100644 openecomp-ui/tools/webpack/config-json-loader/index.js create mode 100644 openecomp-ui/webapp-heat-validation/META-INF/context.xml create mode 100644 openecomp-ui/webapp-heat-validation/WEB-INF/jetty-web.xml create mode 100644 openecomp-ui/webapp-heat-validation/WEB-INF/rewrite.config create mode 100644 openecomp-ui/webapp-heat-validation/WEB-INF/web.xml create mode 100644 openecomp-ui/webapp-heat-validation/heat-validation.xml create mode 100644 openecomp-ui/webapp-onboarding/META-INF/context.xml create mode 100644 openecomp-ui/webapp-onboarding/WEB-INF/jetty-web.xml create mode 100644 openecomp-ui/webapp-onboarding/WEB-INF/rewrite.config create mode 100644 openecomp-ui/webapp-onboarding/WEB-INF/web.xml create mode 100644 openecomp-ui/webapp-onboarding/onboarding.xml create mode 100644 openecomp-ui/webpack.config.js diff --git a/.gitignore b/.gitignore index da39ab03ca..9a8035e9fd 100644 --- a/.gitignore +++ b/.gitignore @@ -97,3 +97,7 @@ asdc-tests/test-output/** asdc-chef/cookbooks/Deploy-SDandC/attributes/version.rb asdc-tests/ExtentReport/ASDC_CI_Extent_Report.html + +**/*.log +sdctool.tar +asdc-tests.tar diff --git a/dox-sequence-diagram-ui/.babelrc b/dox-sequence-diagram-ui/.babelrc new file mode 100644 index 0000000000..91f0a7318b --- /dev/null +++ b/dox-sequence-diagram-ui/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["es2015", "react", "stage-0"] +} diff --git a/dox-sequence-diagram-ui/.gitignore b/dox-sequence-diagram-ui/.gitignore new file mode 100644 index 0000000000..3ad9501b01 --- /dev/null +++ b/dox-sequence-diagram-ui/.gitignore @@ -0,0 +1,6 @@ + +.idea +npm-debug.log +dist +node_modules +.npmrc diff --git a/dox-sequence-diagram-ui/.npmignore b/dox-sequence-diagram-ui/.npmignore new file mode 100644 index 0000000000..723ef36f4e --- /dev/null +++ b/dox-sequence-diagram-ui/.npmignore @@ -0,0 +1 @@ +.idea \ No newline at end of file diff --git a/dox-sequence-diagram-ui/LICENSE.txt b/dox-sequence-diagram-ui/LICENSE.txt new file mode 100644 index 0000000000..2507db8a57 --- /dev/null +++ b/dox-sequence-diagram-ui/LICENSE.txt @@ -0,0 +1 @@ +(c) Copyright 2016 ECOMP, all rights reserved. diff --git a/dox-sequence-diagram-ui/eslintrc.json b/dox-sequence-diagram-ui/eslintrc.json new file mode 100644 index 0000000000..b2a3f24aaa --- /dev/null +++ b/dox-sequence-diagram-ui/eslintrc.json @@ -0,0 +1,32 @@ +{ + "parserOptions": { + "ecmaVersion": 6, + "sourceType": "module", + "ecmaFeatures": { + "jsx": true + } + }, + "env": { + "browser": true + }, + "plugins": [ + "react" + ], + "extends": [ + "airbnb" + ], + "rules": { + "padded-blocks": 0, + "max-len": ["error", 160, 4], + "no-underscore-dangle": 0, + "global-require": 0, + "react/sort-comp": 0, + "new-cap": 0 + }, + "settings": { + "react": { + "pragma": "React", + "version": "0.14.8" + } + } +} diff --git a/dox-sequence-diagram-ui/package.json b/dox-sequence-diagram-ui/package.json new file mode 100644 index 0000000000..c53d6d0ebc --- /dev/null +++ b/dox-sequence-diagram-ui/package.json @@ -0,0 +1,63 @@ +{ + "name": "dox-sequence-diagram-ui", + "version": "1.0.0", + "description": "", + "main": "dist/index.js", + "devDependencies": { + "babel-core": "^6.2.4", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-lodash": "^3.1.4", + "babel-polyfill": "^6.5.0", + "babel-preset-es2015": "^6.3.13", + "babel-preset-react": "^6.5.0", + "babel-preset-stage-0": "^6.5.0", + "babelify": "^7.2.0", + "copy": "^0.2.0", + "css-loader": "^0.23.1", + "ejs-html-loader": "^1.2.2", + "eslint": "^2.10.2", + "eslint-config-airbnb": "^9.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-import": "^1.8.0", + "eslint-plugin-jsx-a11y": "^1.2.2", + "eslint-plugin-react": "^5.1.1", + "file-loader": "^0.8.5", + "json-loader": "^0.5.4", + "node-http-proxy": "^0.2.3", + "node-sass": "^3.7.0", + "path": "^0.12.7", + "raw-loader": "^0.5.1", + "redux-devtools": "^3.3.1", + "sass-loader": "^3.2.0", + "style-loader": "^0.13.1", + "svg-sprite-loader": "0.0.19", + "url-loader": "^0.5.7", + "webpack": "^1.13.1", + "webpack-dev-server": "^1.14.1" + }, + "author": "ECOMP", + "license": "SEE LICENSE IN LICENSE.TXT", + "dependencies": { + "d3": "^3.5.16", + "lodash": "^4.12.0", + "react": "^15.1.0", + "react-dnd": "^2.1.2", + "react-dnd-html5-backend": "^2.1.2", + "react-dom": "^15.1.0", + "react-redux": "^4.4.5", + "react-select": "^1.0.0-beta13", + "redux": "^3.5.2" + }, + "engines": { + "node": ">=5.1", + "npm": ">=3.3" + }, + "scripts": { + "prepublish": "npm run build", + "buildbabel": "babel src -d lib && node tools/copy-assets", + "build": "webpack", + "start": "webpack-dev-server", + "lint": "eslint . --ext .js --ext .jsx --cache" + } +} diff --git a/dox-sequence-diagram-ui/src/main/webapp/WEB-INF/web.xml b/dox-sequence-diagram-ui/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000000..a2f51b5271 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,14 @@ + + + + Ecomp ES6 Blueprint + + + index.html + + + + diff --git a/dox-sequence-diagram-ui/src/main/webapp/favicon.ico b/dox-sequence-diagram-ui/src/main/webapp/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a9ee1b63515a29428772b4682e5478902dabaf14 GIT binary patch literal 894 zcmZQzU<5(|0R|u`!H~hsz#zuJz@P!dKp_SNAO?xUfG{@$0|>)G(|ZQGBlEeR7GL_g z^X~6C=YFbB{RnhGz{)SUoZ+?X%m4rXFTeb=`r5Ap4}PC|`e)|ZpD(`r!=)amc*mXJ za9O(rpMfG@e&JKU;>s_$dLScj$2XuBWD#UG(5b)v{y+Taci)L0S=+u@&;Ojc_1lj> zIMqY+wjKEnv<2v}4L5$h{POShSDfyN-SD+|*EeJvEB1cJ6! z9;giHn7{x2?|<+c7^Ih8{`vXmKQNHt+OaZxmVcRX_9syN)YCt7XMDn{W=IM$0Ardg H49P(Nv4qHX literal 0 HcmV?d00001 diff --git a/dox-sequence-diagram-ui/src/main/webapp/index.html b/dox-sequence-diagram-ui/src/main/webapp/index.html new file mode 100644 index 0000000000..b4a3a73dda --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/index.html @@ -0,0 +1,13 @@ + + + + SDC Sequencer - DEMO + + + + + + +
+ + diff --git a/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/Sequencer.jsx b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/Sequencer.jsx new file mode 100644 index 0000000000..ff8e9a22ca --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/Sequencer.jsx @@ -0,0 +1,199 @@ +/*! + * 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. + */ + +import React from 'react'; +import Application from './components/application/Application'; +import Common from './common/Common'; +import Options from './common/Options'; +import Model from './model/Model'; +import Metamodel from './model/Metamodel'; +import Metamodels from './model/Metamodels'; +import Scenarios from './model/demo/scenarios/Scenarios'; +import '../../../../res/sdc-sequencer.scss'; +/** + * ASDC Sequencer entry point. + */ +export default class Sequencer extends React.Component { + + // ////////////////////////////////////////////////////////////////////////////////////////////// + + constructor(props, context) { + super(props, context); + + + this.setMetamodel.bind(this); + this.setModel.bind(this); + this.getModel.bind(this); + this.getMetamodel.bind(this); + this.getSVG.bind(this); + this.getDemoScenarios.bind(this); + this.newModel.bind(this); + + // Parse options. + + this.options = new Options(props.options); + + // Default scenarios. + + const scenarios = this.getDemoScenarios(); + this.setMetamodel(scenarios.getMetamodels()); + + // this.setModel(scenarios.getBlank()); + this.setModel(scenarios.getDimensions()); + // this.setModel(scenarios.getECOMP()); + + } + + // ////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Optionally save known metamodels so that subsequent loading and unloading + * of models needn't include the corresponding metamodel. + * @param metamodels array of conformant metamodel JSON definitions. + * @return this. + */ + setMetamodel(metamodels) { + Common.assertType(metamodels, 'Array'); + this.metamodels = new Metamodels(metamodels); + return this; + } + + // ////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Set current diagram. + * @param modelJSON JSON diagram spec. + * @param metamodelIdOrDefinition optional metamodel definition or reference. Defaults to + * the model's metadata @ref, or the default (permissive) metamodel. + * @return this. + */ + setModel(modelJSON, metamodelIdOrDefinition) { + Common.assertType(modelJSON, 'Object'); + const ref = (modelJSON.metadata) ? modelJSON.metadata.ref : undefined; + const metamodel = this.getMetamodel(metamodelIdOrDefinition || ref); + Common.assertInstanceOf(metamodel, Metamodel); + this.model = new Model(modelJSON, metamodel); + if (this.application) { + this.application.setModel(this.model); + } + return this; + } + + // ////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Get current diagram state. At any given instant the diagram might not make *sense* + * but it should always be syntactically valid. + * @return current Model. + */ + getModel() { + + if (this.application) { + const model = this.application.getModel(); + if (model) { + return model.unwrap(); + } + } + + return this.model; + } + + // ////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Extract SVG element. + * @return stringified SVG element. + */ + getSVG() { + return this.application.getSVG(); + } + + // ////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Get demo scenarios, allowing initialization in demo mode from the outside. + * @returns {Scenarios} + */ + getDemoScenarios() { + return new Scenarios(); + } + + // ////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Create new model. + * @param metamodelIdOrDefinition + * @return newly-created model. + */ + newModel(metamodelIdOrDefinition) { + const metamodel = this.getMetamodel(metamodelIdOrDefinition); + Common.assertInstanceOf(metamodel, Metamodel); + const model = new Model({}, metamodel); + if (this.application) { + this.application.setModel(model); + } + return model; + } + + // ////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Get Metamodel instance corresponding to an ID or JSON definition. + * @param metamodelIdOrDefinition String ID or JSON definition. + * @returns Metamodel instance. + * @private + */ + getMetamodel(metamodelIdOrDefinition) { + const metamodelType = Common.getType(metamodelIdOrDefinition); + if (metamodelType === 'Object') { + return new Metamodel(metamodelIdOrDefinition); + } + return this.metamodels.getMetamodelOrDefault(metamodelIdOrDefinition); + } + + // ////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Render current diagram state. + */ + render() { + + if (this.props.model) { + + // If a model was specified as a property, apply it. Otherwise + // fall back to the demo model. + + const scenarios = this.getDemoScenarios(); + const metamodel = [scenarios.getBlankMetamodel(), scenarios.getECOMPMetamodel()]; + if (this.props.metamodel) { + metamodel.push(this.props.metamodel); + } + this.setMetamodel(metamodel); + this.setModel(this.props.model); + } + + return ( + { this.application = a; }} /> + ); + } + +} + +Sequencer.propTypes = { + options: React.PropTypes.object.isRequired, + model: React.PropTypes.object, + metamodel: React.PropTypes.object, +}; diff --git a/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/common/Common.js b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/common/Common.js new file mode 100644 index 0000000000..7337367dca --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/common/Common.js @@ -0,0 +1,356 @@ +/*! + * 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. + */ + +/** + * Common operations. + */ +export default class Common { + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Retrieve and start a simple timer. Retrieve elapsed time by calling #ms(). + * @returns {*} + */ + static timer() { + const start = new Date().getTime(); + return { + ms() { + return (new Date().getTime() - start); + }, + }; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Get datatype, stripping '[object Boolean]' to just 'Boolean'. + * @param o JS object. + * @return String like String, Number, Date, Null, Undefined, stuff like that. + */ + static getType(o) { + const str = Object.prototype.toString.call(o); + const prefix = '[object '; + if (str.substr(str, prefix.length) === prefix) { + return str.substr(prefix.length, str.length - (prefix.length + 1)); + } + return str; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Assert that an argument was provided. + * @param value to be checked. + * @param message message on assertion failure. + * @return value. + */ + static assertNotNull(value, message = 'Unexpected null value') { + if (!value) { + throw new Error(message); + } + return value; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Assert argument type. + * @param value to be checked. + * @param expected expected type string, e,g. Number from [object Number]. + * @return value. + */ + static assertType(value, expected) { + const type = this.getType(value); + if (type !== expected) { + throw new Error(`Expected type ${expected}, got ${type}`); + } + return value; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Assert argument type. + * @param value to be checked. + * @param unexpected unexpected type string, e,g. Number from [object Number]. + * @return value. + */ + static assertNotType(value, unexpected) { + const type = this.getType(value); + if (type === unexpected) { + throw new Error(`Forbidden type "${unexpected}"`); + } + return value; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Assert argument is a simple JSON object, and specifically not (something like an) ES6 class. + * @param value to be checked. + * @return value. + */ + static assertPlainObject(value) { + Common.assertType(value, 'Object'); + // TODO + /* + if (!($.isPlainObject(value))) { + throw new Error(`Expected plain object: ${value}`); + } + */ + return value; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Assert argument type. + * @param value to be checked. + * @param c expected class. + * @return value. + */ + static assertInstanceOf(value, c) { + Common.assertNotNull(value); + if (!(value instanceof c)) { + throw new Error(`Expected instanceof ${c}: ${value}`); + } + return value; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Assert that a string matches a regex. + * @param value value to be tested. + * @param re pattern to be applied. + * @return value. + */ + static assertMatches(value, re) { + this.assertType(value, 'String'); + this.assertType(re, 'RegExp'); + if (!re.test(value)) { + throw new Error(`Value ${value} doesn't match pattern ${re}`); + } + return value; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Assert the value of a boolean. + * + * @param bool to be checked. + * @param message optional message on assertion failure. + * @return value. + */ + static assertThat(bool, message) { + if (!bool) { + throw new Error(message || `Unexpected: ${bool}`); + } + return bool; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Verify that a value, generally a function arg, is a DOM element. + * @param value to be checked. + * @return value. + */ + static assertHTMLElement(value) { + if (!Common.isHTMLElement(value)) { + throw new Error(`Expected HTMLElement: ${value}`); + } + return value; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Check whether a value, generally a function arg, is an HTML DOM element. + * @param o to be checked. + * @return true if DOM element. + */ + static isHTMLElement(o) { + if (typeof HTMLElement === 'object') { + return o instanceof HTMLElement; + } + return o && typeof o === 'object' && o !== null + && o.nodeType === 1 && typeof o.nodeName === 'string'; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Check if a string is non-empty. + * @param s string to be checked. + * @returns false if non-blank string, true otherwise. + */ + static isBlank(s) { + if (Common.getType(s) === 'String') { + return (s.trim().length === 0); + } + return true; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Detect dates that are numbers, milli/seconds since epoch.. + * + * @param n candidate number. + * @returns {boolean} + */ + static isNumber(n) { + return !isNaN(parseFloat(n)) && isFinite(n); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Parse the text output from a template to a DOM element. + * @param txt input text. + * @returns {Element} + */ + static txt2dom(txt) { + return new DOMParser().parseFromString(txt, 'image/svg+xml').documentElement; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Recursively convert a DOM element to an SVG (namespaced) element. Otherwise + * you get HTML elements that *happen* to have SVG names, but which aren't actually SVG. + * + * @param node DOM node to be converted. + * @param svg to be updated. + * @returns {*} for chaining. + */ + static dom2svg(node, svg) { + + Common.assertNotType(node, 'String'); + + if (node.childNodes && node.childNodes.length > 0) { + + for (const c of node.childNodes) { + switch (c.nodeType) { + case document.TEXT_NODE: + svg.text(c.nodeValue); + break; + default: + break; + } + } + + for (const c of node.childNodes) { + switch (c.nodeType) { + case document.ELEMENT_NODE: + Common.dom2svg(c, svg.append(`svg:${c.nodeName.toLowerCase()}`)); + break; + default: + break; + } + } + } + + if (node.hasAttributes()) { + for (let i = 0; i < node.attributes.length; i++) { + const a = node.attributes.item(i); + svg.attr(a.name, a.value); + } + } + + return svg; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Get the lines to be shown in the label. + * + * @param labelText original label text. + * @param wordWrapAt chars at which to break words. + * @param lineWrapAt chars at which to wrap. + * @param maximumLines lines at which to truncate. + * @returns {Array} + */ + static tokenize(labelText = '', wordWrapAt, lineWrapAt, maximumLines) { + + let l = labelText; + + // Hyphenate and break long words. + + const regex = new RegExp(`(\\w{${wordWrapAt - 1}})(?=\\w)`, 'g'); + l = l.replace(regex, '$1- '); + + const labelTokens = l.split(/\s+/); + const lines = []; + let label = ''; + for (const labelToken of labelTokens) { + if (label.length > 0) { + const length = label.length + labelToken.length + 1; + if (length > lineWrapAt) { + lines.push(label.trim()); + label = labelToken; + continue; + } + } + label = `${label} ${labelToken}`; + } + + if (label) { + lines.push(label.trim()); + } + + const truncated = lines.slice(0, maximumLines); + if (truncated.length < lines.length) { + let finalLine = truncated[maximumLines - 1]; + if (finalLine.length > (lineWrapAt - 4)) { + finalLine = finalLine.substring(0, lineWrapAt - 4); + } + finalLine = `${finalLine} ...`; + truncated[maximumLines - 1] = finalLine; + } + + return truncated; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Brutally sanitize an input string. We have no syntax rules, and hence no specific + * rules to apply, but we have very few unconstrained fields, so we can implement a + * crude default and devolve the rest to options. + * @param value value to be sanitized. + * @param options control options including validation rules. + * @param type validation type. + * @returns {*} sanitized string. + * @private + */ + static sanitizeText(value, options, type) { + const rules = Common.assertNotNull(options.validation[type]); + let v = value || rules.defaultValue || ''; + if (rules.replace) { + v = v.replace(rules.replace, ''); + } + if (v.length > rules.maxLength) { + v = `${v.substring(0, rules.maxLength)}...`; + } + return v; + } + +} diff --git a/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/common/Logger.js b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/common/Logger.js new file mode 100644 index 0000000000..187f49bb08 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/common/Logger.js @@ -0,0 +1,137 @@ +/*! + * 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. + */ + +/* eslint-disable no-console */ + +import Common from './Common'; + +/** + * Logger, to allow calls to console.log during development, but + * disable them for production. + */ +export default class Logger { + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * No-op call so that we can leave imports in place, + * even when there's no debugging. + */ + static noop() { + // Nothing. + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Set debug level. + * @param level threshold. + */ + static setLevel(level) { + this.level = Logger.OFF; + if (Common.getType(level) === 'Number') { + this.level = level; + } else { + this.level = Logger[level]; + } + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Get debug level. + * @returns {number|*} + */ + static getLevel() { + return this.level; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Write DEBUG-level log. + * @param msg message or tokens. + */ + static debug(...msg) { + if (this.level >= Logger.DEBUG) { + const out = this.serialize(msg); + console.info(`ASDCS [DEBUG] ${out}`); + } + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Write INFO-level log. + * @param msg message or tokens. + */ + static info(...msg) { + if (this.level >= Logger.INFO) { + const out = this.serialize(msg); + console.info(`ASDCS [INFO] ${out}`); + } + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Write debug. + * @param msg message or tokens. + */ + static warn(msg) { + if (this.level >= Logger.WARN) { + const out = this.serialize(msg); + console.warn(`ASDCS [WARN] ${out}`); + } + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Write error. + * @param msg message or tokens. + */ + static error(...msg) { + if (this.level >= Logger.ERROR) { + const out = this.serialize(msg); + console.error(`ASDCS [ERROR] ${out}`); + } + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Serialize msg. + * @param msg message or tokens. + * @returns {string} + */ + static serialize(...msg) { + let out = ''; + msg.forEach((token) => { + out = `${out}${token}`; + }); + return out; + } +} + +// ///////////////////////////////////////////////////////////////////////////////////////////////// + +Logger.OFF = 0; +Logger.ERROR = 1; +Logger.WARN = 2; +Logger.INFO = 3; +Logger.DEBUG = 4; +Logger.level = Logger.OFF; diff --git a/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/common/Options.js b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/common/Options.js new file mode 100644 index 0000000000..15897d7ee3 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/common/Options.js @@ -0,0 +1,136 @@ +/*! + * 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. + */ + +import _merge from 'lodash/merge'; + +import Logger from './Logger'; + +/** + * A wrapper for an options object. User-supplied options are merged with defaults, + * and the result -- runtime options -- are available by calling #getOptions(). + */ +export default class Options { + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Construct options, applying defaults. + * @param options optional override options. + */ + constructor(options = {}) { + this.options = _merge({}, Options.DEFAULTS, options); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Unwrap options. + * @returns {*} + */ + unwrap() { + return this.options; + } +} + +// ///////////////////////////////////////////////////////////////////////////////////////////////// + +/** + * Default options, overridden by anything of the same name. + */ +Options.DEFAULTS = { + log: { + level: Logger.WARN, + }, + demo: false, + useHtmlSelect: true, + diagram: { + svg: { + x: 0, + y: 0, + width: 1600, + height: 1200, + margin: 50, + floodColor: '#009fdb', + scale: { + height: true, + width: true, + minimum: 0.25, + }, + }, + title: { + height: 0, + }, + metadata: false, + lifelines: { + header: { + height: 225, + width: 350, + wrapWords: 14, + wrapLines: 18, + maxLines: 5, + }, + occurrences: { + marginTop: 50, + marginBottom: 75, + foreshortening: 5, + width: 50, + }, + spacing: { + horizontal: 400, + vertical: 400, + }, + }, + messages: { + label: { + wrapWords: 14, + wrapLines: 18, + maxLines: 4, + }, + }, + fragments: { + leftMargin: 150, + topMargin: 200, + widthMargin: 300, + heightMargin: 350, + label: { + wrapWords: 50, + wrapLines: 50, + maxLines: 2, + }, + }, + }, + validation: { + lifeline: { + maxLength: 100, + defaultValue: '', + replace: /[^\-\.\+ &%#@\?\(\)\[\]<>\w\d]/g, + }, + message: { + maxLength: 100, + defaultValue: '', + replace: /[^\-\.\+ &%#@\?\(\)\[\]<>\w\d]/g, + }, + notes: { + maxLength: 255, + defaultValue: '', + }, + guard: { + maxLength: 80, + defaultValue: '', + replace: /[^\-\.\+ &%#@\?\(\)\[\]<>\w\d]/g, + }, + }, +}; diff --git a/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/application/Application.jsx b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/application/Application.jsx new file mode 100644 index 0000000000..20b06922c8 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/application/Application.jsx @@ -0,0 +1,268 @@ + +import React from 'react'; + +import Common from '../../common/Common'; +import Logger from '../../common/Logger'; +import Diagram from '../diagram/Diagram'; +import Dialog from '../dialog/Dialog'; +import Editor from '../editor/Editor'; +import Export from '../export/Export'; +import Overlay from '../overlay/Overlay'; + +/** + * Application controller, also a view. + */ +export default class Application extends React.Component { + + /** + * Construct application view. + * @param props element properties. + * @param context react context. + */ + constructor(props, context) { + super(props, context); + + this.sequencer = Common.assertNotNull(props.sequencer); + this.model = this.sequencer.getModel(); + this.metamodel = this.sequencer.getMetamodel(); + this.options = props.options; + Logger.setLevel(this.options.unwrap().log.level); + + // Bindings. + + this.showInfoDialog = this.showInfoDialog.bind(this); + this.showEditDialog = this.showEditDialog.bind(this); + this.showConfirmDialog = this.showConfirmDialog.bind(this); + this.hideOverlay = this.hideOverlay.bind(this); + this.onMouseMove = this.onMouseMove.bind(this); + this.onMouseUp = this.onMouseUp.bind(this); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Get application options. + * @returns JSON options, see Options.js. + */ + getOptions() { + return this.options.unwrap(); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Set diagram name. + * @param n diagram (human-readable) name. + */ + setName(n) { + this.diagram.setName(n); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Set diagram model. + * @param model diagram instance. + */ + setModel(model) { + + Common.assertNotNull(model); + + this.model = model; + + if (this.editor) { + this.editor.render(); + } + + if (this.diagram) { + this.diagram.render(); + } + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Get Model wrapper. + * @returns Model. + */ + getModel() { + return this.model; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Get SVG element. + * @returns {*} + */ + getSVG() { + return this.diagram.getSVG(); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Get top-level widget. Provides the demo toolbar with access to the public API. + * @returns {*} + */ + getSequencer() { + return this.sequencer; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Present info dialog. + * @param msg info message. + */ + showInfoDialog(msg) { + this.dialog.showInfoDialog(msg); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Present error dialog. + * @param msg error message. + */ + showErrorDialog(msg) { + this.dialog.showErrorDialog(msg); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Present confirmation dialog. + * @param msg info message. + * @param cb callback function to be invoked on OK. + */ + showConfirmDialog(msg, cb) { + Common.assertType(cb, 'Function'); + this.dialog.showConfirmDialog(msg, cb); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Present edit (textarea) dialog. + * @param msg prompt. + * @param text current edit text. + * @param cb callback function to be invoked on OK, taking the updated text + * as an argument. + */ + showEditDialog(msg, text, cb) { + this.dialog.showEditDialog(msg, text, cb); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Select lifeline by ID. + * @param id lifeline ID. + */ + selectLifeline(id) { + if (this.editor) { + this.editor.selectLifeline(id); + } + if (this.diagram) { + this.diagram.selectLifeline(id); + } + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Select message by ID. + * @param id message ID. + */ + selectMessage(id) { + if (this.editor) { + this.editor.selectMessage(id); + } + if (this.diagram) { + this.diagram.selectMessage(id); + } + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * (Re)render just the diagram. + */ + renderDiagram() { + this.diagram.redraw(); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Show overlay between application and modal dialog. + */ + showOverlay() { + if (this.overlay) { + this.overlay.setVisible(true); + } + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Hide overlay between application and modal dialog. + */ + hideOverlay() { + if (this.overlay) { + this.overlay.setVisible(false); + } + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Capture mouse move events, for resize. + * @param event move event. + */ + onMouseMove(event) { + if (this.editor) { + this.editor.onMouseMove(event); + } + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Propagate mouse event to the editor that manages the resize. + */ + onMouseUp() { + if (this.editor) { + this.editor.onMouseUp(); + } + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Render current model state. + */ + render() { + + return ( + +
+ + { this.editor = r; }} /> + { this.diagram = r; }} /> + { this.dialog = r; }} /> + + { this.overlay = r; }} /> + +
+ ); + } + +} + +/** React properties. */ +Application.propTypes = { + options: React.PropTypes.object.isRequired, + sequencer: React.PropTypes.object.isRequired, +}; diff --git a/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/diagram/Diagram.jsx b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/diagram/Diagram.jsx new file mode 100644 index 0000000000..f2da7a5a1b --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/diagram/Diagram.jsx @@ -0,0 +1,896 @@ + +import React from 'react'; +import _template from 'lodash/template'; +import _merge from 'lodash/merge'; +import d3 from 'd3'; + +import Common from '../../common/Common'; +import Logger from '../../common/Logger'; +import Popup from './components/popup/Popup'; + +/** + * SVG diagram view. + */ +export default class Diagram extends React.Component { + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Construct React view. + * @param props properties. + * @param context context. + */ + constructor(props, context) { + super(props, context); + + this.application = Common.assertNotNull(props.application); + this.options = this.application.getOptions().diagram; + + this.events = {}; + this.state = { + height: 0, + width: 0, + }; + + this.templates = { + diagram: _template(require('./templates/diagram.html')), + lifeline: _template(require('./templates/lifeline.html')), + message: _template(require('./templates/message.html')), + occurrence: _template(require('./templates/occurrence.html')), + fragment: _template(require('./templates/fragment.html')), + title: _template(require('./templates/title.html')), + }; + + this.handleResize = this.handleResize.bind(this); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Set diagram name. + * @param n name. + */ + setName(n) { + this.svg.select('').text(n); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Get SVG from diagram. + * @returns {*|string} + */ + getSVG() { + const svg = this.svg.node().outerHTML; + return svg.replace(' 0) ? `height:${titleHeight}` : 'asdcs-hidden'; + + return ( +
+
{name}
+
{ this.wrapper = r; }}>
+ { this.popup = r; }} /> +
+ ); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + redraw() { + this.updateSVG(); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Initial render. + */ + componentDidMount() { + window.addEventListener('resize', this.handleResize); + this.updateSVG(); + + // Insurance: + + setTimeout(() => { + this.handleResize(); + }, 500); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + componentWillUnmount() { + window.removeEventListener('resize', this.handleResize); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Render on update. + */ + componentDidUpdate() { + this.updateSVG(); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Redraw SVG diagram. So far it's fast enough that it doesn't seem to matter whether + * it's completely redrawn. + */ + updateSVG() { + + if (!this.svg) { + const svgparams = _merge({}, this.options.svg); + this.wrapper.innerHTML = this.templates.diagram(svgparams); + this.svg = d3.select(this.wrapper).select('svg'); + } + + if (this.state.height === 0) { + + // We'll get a resize event, and the height will be non-zero when it's actually time. + + return; + } + + if (this.state.height && this.state.width) { + const margin = this.options.svg.margin; + const x = -margin; + const y = -margin; + const height = this.state.height + (margin * 2); + const width = this.state.width + (margin * 2); + const viewBox = `${x} ${y} ${width} ${height}`; + this.svg.attr('viewBox', viewBox); + } + + + // If we've already rendered, then save the current scale/translate so that we + // can reapply it after rendering. + + const gContentSelection = this.svg.selectAll('g.asdcs-diagram-content'); + if (gContentSelection.size() === 1) { + const transform = gContentSelection.attr('transform'); + if (transform) { + this.savedTransform = transform; + } + } + + // Empty the document. We're starting again. + + this.svg.selectAll('.asdcs-diagram-content').remove(); + + // Extract the model. + + const model = this.application.getModel(); + if (!model) { + return; + } + const modelJSON = model.unwrap(); + + // Extract dimension options. + + const header = this.options.lifelines.header; + const spacing = this.options.lifelines.spacing; + + // Make separate container elements so that we can control Z order. + + const gContent = this.svg.append('g').attr('class', 'asdcs-diagram-content'); + const gLifelines = gContent.append('g').attr('class', 'asdcs-diagram-lifelines'); + const gCanvas = gContent.append('g').attr('class', 'asdcs-diagram-canvas'); + gCanvas.append('g').attr('class', 'asdcs-diagram-occurrences'); + gCanvas.append('g').attr('class', 'asdcs-diagram-fragments'); + gCanvas.append('g').attr('class', 'asdcs-diagram-messages'); + + // Lifelines ----------------------------------------------------------------------------------- + + const actorsById = {}; + const positionsByMessageId = {}; + const lifelines = []; + for (const actor of modelJSON.diagram.lifelines) { + const x = (header.width / 2) + (lifelines.length * spacing.horizontal); + Diagram._processLifeline(actor, x); + lifelines.push({ x, actor }); + actorsById[actor.id] = actor; + } + + // Messages ------------------------------------------------------------------------------------ + + // Analyze occurrence information. + + const occurrences = model.analyzeOccurrences(); + const fragments = model.analyzeFragments(); + let y = this.options.lifelines.header.height + spacing.vertical; + let messageIndex = 0; + for (const step of modelJSON.diagram.steps) { + if (step.message) { + positionsByMessageId[step.message.id] = positionsByMessageId[step.message.id] || {}; + positionsByMessageId[step.message.id].y = y; + this._drawMessage(gCanvas, step.message, y, actorsById, + positionsByMessageId, ++messageIndex, occurrences, fragments); + } + y += spacing.vertical; + } + + // --------------------------------------------------------------------------------------------- + + // Draw the actual (dashed) lifelines in a background . + + this._drawLifelines(gLifelines, lifelines, y); + + // Initialize mouse event handlers. + + this._initMouseEvents(gLifelines, gCanvas); + + // Scale to fit. + + const bb = gContent.node().getBBox(); + this._initZoom(gContent, bb.width, bb.height); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + // /////////////////////////////////////////////////////////////////////////////////////////////// + // /////////////////////////////////////////////////////////////////////////////////////////////// + // /////////////////////////////////////////////////////////////////////////////////////////////// + // /////////////////////////////////////////////////////////////////////////////////////////////// + // /////////////////////////////////////////////////////////////////////////////////////////////// + // /////////////////////////////////////////////////////////////////////////////////////////////// + // /////////////////////////////////////////////////////////////////////////////////////////////// + // /////////////////////////////////////////////////////////////////////////////////////////////// + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Draw message into SVG canvas. + * @param gCanvas container. + * @param message message to be rendered. + * @param y current y position. + * @param actorsById actor lookup. + * @param positionsByMessageId x- and y-position of each message. + * @param messageIndex where we are in the set of messages to be rendered. + * @param oData occurrences info. + * @param fData fragments info. + * @private + */ + _drawMessage(gCanvas, message, y, actorsById, positionsByMessageId, + messageIndex, oData, fData) { + + Common.assertNotNull(oData); + + const request = message.type === 'request'; + const fromActor = request ? actorsById[message.from] : actorsById[message.to]; + const toActor = request ? actorsById[message.to] : actorsById[message.from]; + + if (!fromActor) { + Logger.warn(`Cannot draw message ${JSON.stringify(message)}: 'from' not found.`); + return; + } + + if (!toActor) { + Logger.warn(`Cannot draw message ${JSON.stringify(message)}: 'to' not found.`); + return; + } + + // Occurrences. -------------------------------------------------------------------------------- + + if (message.occurrence) { + Logger.debug(`Found occurrence for ${message.name}: ${JSON.stringify(message.occurrence)}`); + } + const activeTo = Diagram._calcActive(oData, toActor.id); + this._drawOccurrence(gCanvas, oData, positionsByMessageId, fromActor, message.id); + this._drawOccurrence(gCanvas, oData, positionsByMessageId, toActor, message.id); + const activeFrom = Diagram._calcActive(oData, fromActor.id); + + // Messages. ----------------------------------------------------------------------------------- + + const gMessages = gCanvas.select('g.asdcs-diagram-messages'); + + // Save positions for later. + + const positions = positionsByMessageId[message.id]; + positions.x0 = fromActor.x; + positions.x1 = toActor.x; + + // Calculate. + + const leftToRight = fromActor.x < toActor.x; + const loopback = (message.to === message.from); + const x1 = this._calcMessageX(activeTo, toActor.x, true, leftToRight); + const x0 = loopback ? x1 : this._calcMessageX(activeFrom, fromActor.x, false, leftToRight); + + let messagePath; + if (loopback) { + + // To self. + + messagePath = `M${x1},${y}`; + messagePath = `${messagePath} L${x1 + 200},${y}`; + messagePath = `${messagePath} L${x1 + 200},${y + 50}`; + messagePath = `${messagePath} L${x1},${y + 50}`; + } else { + + // Between lifelines. + + messagePath = `M${x0},${y}`; + messagePath = `${messagePath} L${x1},${y}`; + } + + const styles = Diagram._getMessageStyles(message); + + // Split message over lines. + + const messageWithPrefix = `${messageIndex}. ${message.name}`; + const maxLines = this.options.messages.label.maxLines; + const wrapWords = this.options.messages.label.wrapWords; + const wrapLines = this.options.messages.label.wrapLines; + const messageLines = Common.tokenize(messageWithPrefix, wrapWords, wrapLines, maxLines); + + const messageTxt = this.templates.message({ + id: message.id, + classes: styles.css, + marker: styles.marker, + dasharray: styles.dasharray, + labels: messageLines, + lines: maxLines, + path: messagePath, + index: messageIndex, + x0, x1, y, + }); + + const messageEl = Common.txt2dom(messageTxt); + const gMessage = gMessages.append('g'); + Common.dom2svg(messageEl, gMessage); + + // Set the background's bounding box to that of the text, + // so that they fit snugly. + + const labelBB = gMessage.select('.asdcs-diagram-message-label').node().getBBox(); + gMessage.select('.asdcs-diagram-message-label-bg') + .attr('x', labelBB.x) + .attr('y', labelBB.y) + .attr('height', labelBB.height) + .attr('width', labelBB.width); + + // Fragments. ---------------------------------------------------------------------------------- + + const fragment = fData[message.id]; + if (fragment) { + + // It ends on this message. + + this._drawFragment(gCanvas, fragment, positionsByMessageId); + + } + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Draw a single occurrence. + * @param gCanvas container. + * @param oData occurrence data. + * @param positionsByMessageId map of y positions by message ID. + * @param actor wrapper containing lifeline ID (.id), position (.x) and name (.name). + * @param messageId message identifier. + * @private + */ + _drawOccurrence(gCanvas, oData, positionsByMessageId, actor, messageId) { + + Common.assertType(oData, 'Object'); + Common.assertType(positionsByMessageId, 'Object'); + Common.assertType(actor, 'Object'); + Common.assertType(messageId, 'String'); + + const gOccurrences = gCanvas.select('g.asdcs-diagram-occurrences'); + + const oOptions = this.options.lifelines.occurrences; + const oWidth = oOptions.width; + const oHalfWidth = oWidth / 2; + const oForeshortening = oOptions.foreshortening; + const oMarginTop = oOptions.marginTop; + const oMarginBottom = oOptions.marginBottom; + const o = oData[actor.id]; + + const active = Diagram._calcActive(oData, actor.id); + + const x = (actor.x - oHalfWidth) + (active * oWidth); + const positions = positionsByMessageId[messageId]; + const y = positions.y; + + let draw = true; + if (o) { + + if (o.start[messageId]) { + + // Starting, but drawing nothing until we find the end. + + o.active.push(messageId); + draw = false; + + } else if (active > 0) { + + const startMessageId = o.stop[messageId]; + if (startMessageId) { + + // OK, it ends here. Draw the occurrence box. + + o.active.pop(); + const foreshorteningY = active * oForeshortening; + const startY = positionsByMessageId[startMessageId].y; + const height = ((oMarginTop + oMarginBottom) + (y - startY)) - (foreshorteningY * 2); + const oProps = { + x: (actor.x - oHalfWidth) + ((active - 1) * oWidth), + y: ((startY - oMarginTop) + foreshorteningY), + height, + width: oWidth, + }; + + const occurrenceTxt = this.templates.occurrence(oProps); + const occurrenceEl = Common.txt2dom(occurrenceTxt); + Common.dom2svg(occurrenceEl, gOccurrences.append('g')); + + } + draw = false; + } + } + + if (draw) { + + // Seems this is a singleton occurrence. We just draw a wee box around it. + + const height = (oMarginTop + oMarginBottom); + const occurrenceProperties = { x, y: y - oMarginTop, height, width: oWidth }; + const defaultTxt = this.templates.occurrence(occurrenceProperties); + const defaultEl = Common.txt2dom(defaultTxt); + Common.dom2svg(defaultEl, gOccurrences.append('g')); + } + + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Draw box(es) around fragment(s). + * @param gCanvas container. + * @param fragment fragment definition, corresponding to its final (stop) message. + * @param positionsByMessageId message dimensions. + * @private + */ + _drawFragment(gCanvas, fragment, positionsByMessageId) { + + const optFragments = this.options.fragments; + const gFragments = gCanvas.select('g.asdcs-diagram-fragments'); + const p1 = positionsByMessageId[fragment.stop]; + if (p1 && fragment.start && fragment.start.length > 0) { + + for (const start of fragment.start) { + + const message = this.application.getModel().getMessageById(start); + const bounds = this._calcFragmentBounds(message, fragment, positionsByMessageId); + if (bounds) { + + const maxLines = this.options.fragments.label.maxLines; + const wrapWords = this.options.fragments.label.wrapWords; + const wrapLines = this.options.fragments.label.wrapLines; + const lines = Common.tokenize(message.fragment.guard, wrapWords, wrapLines, maxLines); + + const params = { + id: start, + x: bounds.x0 - optFragments.leftMargin, + y: bounds.y0 - optFragments.topMargin, + height: (bounds.y1 - bounds.y0) + optFragments.heightMargin, + width: (bounds.x1 - bounds.x0) + optFragments.widthMargin, + operator: (message.fragment.operator || 'alt'), + lines, + }; + + const fragmentTxt = this.templates.fragment(params); + const fragmentEl = Common.txt2dom(fragmentTxt); + const gFragment = gFragments.append('g'); + Common.dom2svg(fragmentEl, gFragment); + + const labelBB = gFragment.select('.asdcs-diagram-fragment-guard').node().getBBox(); + gFragment.select('.asdcs-diagram-fragment-guard-bg') + .attr('x', labelBB.x) + .attr('y', labelBB.y) + .attr('height', labelBB.height) + .attr('width', labelBB.width); + + } else { + Logger.warn(`Bad fragment: ${JSON.stringify(fragment)}`); + } + } + } + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + _calcFragmentBounds(startMessage, fragment, positionsByMessageId) { + if (startMessage) { + const steps = this.application.getModel().unwrap().diagram.steps; + const bounds = { x0: 99999, x1: 0, y0: 99999, y1: 0 }; + let foundStart = false; + let foundStop = false; + for (const step of steps) { + const message = step.message; + if (message) { + if (message.id === startMessage.id) { + foundStart = true; + } + if (foundStart && !foundStop) { + const positions = positionsByMessageId[message.id]; + if (positions) { + bounds.x0 = Math.min(bounds.x0, Math.min(positions.x0, positions.x1)); + bounds.y0 = Math.min(bounds.y0, positions.y); + bounds.x1 = Math.max(bounds.x1, Math.max(positions.x0, positions.x1)); + bounds.y1 = Math.max(bounds.y1, positions.y); + } else { + // This probably means it hasn't been recorded yet, which is fine, because + // we draw fragments from where they END. + foundStop = true; + } + } + + if (message.id === fragment.stop) { + foundStop = true; + } + } + } + return bounds; + } + return undefined; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Draw all lifelines. + * @param gLifelines lifelines container. + * @param lifelines lifelines definitions. + * @param y height. + * @private + */ + _drawLifelines(gLifelines, lifelines, y) { + + const maxLines = this.options.lifelines.header.maxLines; + const wrapWords = this.options.lifelines.header.wrapWords; + const wrapLines = this.options.lifelines.header.wrapLines; + + for (const lifeline of lifelines) { + const lines = Common.tokenize(lifeline.actor.name, wrapWords, wrapLines, maxLines); + const lifelineTxt = this.templates.lifeline({ + x: lifeline.x, + y0: 0, + y1: y, + lines, + rows: maxLines, + headerHeight: this.options.lifelines.header.height, + headerWidth: this.options.lifelines.header.width, + id: lifeline.actor.id, + }); + + const lifelineEl = Common.txt2dom(lifelineTxt); + Common.dom2svg(lifelineEl, gLifelines.append('g')); + } + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Initialize all mouse events. + * @param gLifelines lifelines container. + * @param gCanvas top-level canvas container. + * @private + */ + _initMouseEvents(gLifelines, gCanvas) { + + const self = this; + const source = 'asdcs'; + const origin = `${window.location.protocol}//${window.location.host}`; + + let timer; + gLifelines.selectAll('.asdcs-diagram-lifeline-selectable') + .on('mouseenter', function f() { + timer = setTimeout(() => { + self.application.selectLifeline(d3.select(this.parentNode).attr('data-id')); + }, 150); + }) + .on('mouseleave', () => { + clearTimeout(timer); + self.application.selectLifeline(); + }) + .on('click', function f() { + const id = d3.select(this.parentNode).attr('data-id'); + window.postMessage({ source, id, type: 'lifeline' }, origin); + }); + + gLifelines.selectAll('.asdcs-diagram-lifeline-heading-box') + .on('mouseenter', function f() { + timer = setTimeout(() => { + self.application.selectLifeline(d3.select(this.parentNode).attr('data-id')); + }, 150); + }) + .on('mouseleave', () => { + clearTimeout(timer); + self.application.selectLifeline(); + }) + .on('click', function f() { + const id = d3.select(this.parentNode).attr('data-id'); + window.postMessage({ source, id, type: 'lifelineHeader' }, origin); + }); + + gCanvas.selectAll('.asdcs-diagram-message-selectable') + .on('mouseenter', function f() { + self.events.message = { x: d3.event.pageX, y: d3.event.pageY }; + timer = setTimeout(() => { + self.application.selectMessage(d3.select(this.parentNode).attr('data-id')); + }, 200); + }) + .on('mouseleave', () => { + delete self.events.message; + clearTimeout(timer); + self.application.selectMessage(); + }) + .on('click', function f() { + const id = d3.select(this.parentNode).attr('data-id'); + window.postMessage({ source, id, type: 'message' }, origin); + }); + + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Get CSS classes to be applied to a message, according to whether request/response + * or synchronous/asynchronous. + * @param message message being rendered. + * @returns CSS class name(s). + * @private + */ + static _getMessageStyles(message) { + + let marker = 'asdcsDiagramArrowSolid'; + let dasharray = ''; + let css = 'asdcs-diagram-message'; + if (message.type === 'request') { + css = `${css} asdcs-diagram-message-request`; + } else { + css = `${css} asdcs-diagram-message-response`; + marker = 'asdcsDiagramArrowOpen'; + dasharray = '30, 10'; + } + + if (message.asynchronous) { + css = `${css} asdcs-diagram-message-asynchronous`; + marker = 'asdcsDiagramArrowOpen'; + } else { + css = `${css} asdcs-diagram-message-synchronous`; + } + + return { css, marker, dasharray }; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Initialize or reinitialize zoom. This sets the initial zoom in the case of + * a re-rendering, and initializes the eventhandling in all cases. + * + * It does some fairly risky parsing of the 'transform' attribute, assuming that it + * can contain scale() and translate(). But only the zoom handler and us are writing + * the transform values, so that's probably OK. + * + * @param gContent container. + * @param width diagram width. + * @param height diagram height. + * @private + */ + _initZoom(gContent, width, height) { + + const zoomed = function zoomed() { + gContent.attr('transform', + `translate(${d3.event.translate})scale(${d3.event.scale})`); + }; + + const viewWidth = this.state.width || this.options.svg.width; + const viewHeight = this.state.height || this.options.svg.height; + const scaleMinimum = this.options.svg.scale.minimum; + const scaleWidth = viewWidth / width; + const scaleHeight = viewHeight / height; + + let scale = scaleMinimum; + if (this.options.svg.scale.width) { + scale = Math.max(scale, scaleWidth); + } + if (this.options.svg.scale.height) { + scale = Math.min(scale, scaleHeight); + } + + scale = Math.max(scale, scaleMinimum); + + let translate = [0, 0]; + if (this.savedTransform) { + const s = this.savedTransform; + const scaleStart = s.indexOf('scale('); + if (scaleStart !== -1) { + scale = parseFloat(s.substring(scaleStart + 6, s.length - 1)); + } + const translateStart = s.indexOf('translate('); + if (translateStart !== -1) { + const spec = s.substring(translateStart + 10, s.indexOf(')', translateStart)); + const tokens = spec.split(','); + translate = [parseFloat(tokens[0]), parseFloat(tokens[1])]; + } + + gContent.attr('transform', this.savedTransform); + } else { + gContent.attr('transform', `scale(${scale})`); + } + + const zoom = d3.behavior.zoom() + .scale(scale) + .scaleExtent([scaleMinimum, 10]) + .translate(translate) + .on('zoom', zoomed); + this.svg.call(zoom); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Hide from the linter the fact that we're modifying the lifeline. + * @param lifeline to be updated with X position. + * @param x X position. + * @private + */ + static _processLifeline(lifeline, x) { + const actor = lifeline; + actor.id = actor.id || actor.name; + actor.x = x; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Derive active occurrences for lifeline. + * @param oData occurrences data. + * @param lifelineId lifeline to be analyzed. + * @returns {number} + * @private + */ + static _calcActive(oData, lifelineId) { + const o = oData[lifelineId]; + let active = 0; + if (o && o.active) { + active = o.active.length; + } + return active; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Derive the X position of an occurrence on a lifeline, taking into account how + * many occurrences are active. + * @param active active count. + * @param x lifeline X position; basis for offset. + * @param arrow whether this is the arrow (to) end. + * @param leftToRight whether this message goes left-to-right. + * @returns {*} calculated X position for occurrence left-hand side. + * @private + */ + _calcMessageX(active, x, arrow, leftToRight) { + const width = this.options.lifelines.occurrences.width; + const halfWidth = width / 2; + const active0 = Math.max(0, active - 1); + let calculated = x + (active0 * width); + if (arrow) { + // End (ARROW). + if (leftToRight) { + calculated -= halfWidth; + } else { + calculated += halfWidth; + } + } else { + // Start (NOT ARROW). + if (leftToRight) { + calculated += halfWidth; + } else { + calculated -= halfWidth; + } + } + + return calculated; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Show popup upon hovering over a messages that has associated notes. + * @param id + * @private + */ + _showNotesPopup(id) { + if (this.popup) { + if (id) { + const message = this.application.getModel().getMessageById(id); + if (message && message.notes && message.notes.length > 0 && this.events.message) { + this.popup.setState({ + visible: true, + left: this.events.message.x - 50, + top: this.events.message.y + 20, + notes: message.notes[0], + }); + } + } else { + this.popup.setState({ visible: false, notes: '' }); + } + } + } +} + + +Diagram.propTypes = { + application: React.PropTypes.object.isRequired, +}; diff --git a/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/diagram/components/popup/Popup.jsx b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/diagram/components/popup/Popup.jsx new file mode 100644 index 0000000000..08c6da1e76 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/diagram/components/popup/Popup.jsx @@ -0,0 +1,94 @@ + + +import React from 'react'; + +import Icon from '../../../icons/Icon'; +import iconEdit from '../../../../../../../../res/ecomp/asdc/sequencer/sprites/icon/edit.svg'; + +/** + * A hover-over popup. It shows notes, but perhaps will be put to other uses. + * @param props React properties. + * @returns {XML} + * @constructor + */ +export default class Popup extends React.Component { + + // /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Construct react view. + * @param props element properties (of which there are none). + * @param context react context. + */ + constructor(props, context) { + super(props, context); + this.state = { + top: 0, + left: 0, + visible: false, + notes: '', + }; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Render view. + * @returns {XML} + */ + render() { + + // Build CSS + styles to position and configure popup. + + let top = this.state.top; + let left = this.state.left; + + const popupHeight = 200; + const popupWidth = 320; + + let auxCssVertical = 'top'; + let auxCssHorizontal = 'left'; + + if (this.state.top > (window.innerHeight - popupHeight)) { + top -= (popupHeight + 50); + auxCssVertical = 'bottom'; + } + + if (this.state.left > (window.innerWidth - popupWidth)) { + left -= (popupWidth - 80); + auxCssHorizontal = 'right'; + } + + const auxCss = `asdcs-diagram-popup-${auxCssVertical}${auxCssHorizontal}`; + const styles = { + top, + left, + display: (this.state.visible ? 'block' : 'none'), + }; + + // Render element. + + let notes = this.state.notes || ''; + if (notes.length > 255) { + notes = notes.substring(0, 255); + notes = `${notes} ...`; + } + + return ( +
+
Notes
+
+
+ +
+
+
+ {notes} +
+
+
+
+
+ ); + } +} diff --git a/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/diagram/templates/diagram.html b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/diagram/templates/diagram.html new file mode 100644 index 0000000000..22893ce864 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/diagram/templates/diagram.html @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/diagram/templates/fragment.html b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/diagram/templates/fragment.html new file mode 100644 index 0000000000..812f5fcfb8 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/diagram/templates/fragment.html @@ -0,0 +1,18 @@ + + + + + + + <%-operator%> + + + + <% + for (var lineIndex = 0; lineIndex < lines.length ; lineIndex++) { + %><%- lines[lineIndex] %><% + }%> + + diff --git a/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/diagram/templates/lifeline.html b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/diagram/templates/lifeline.html new file mode 100644 index 0000000000..cd01d42c5a --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/diagram/templates/lifeline.html @@ -0,0 +1,19 @@ + + + + + <% + for (var linesIndex = 0; linesIndex < lines.length && linesIndex < rows ; linesIndex++) { + %><%- lines[linesIndex] %><% + } + %> + + + + + + + + diff --git a/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/diagram/templates/message.html b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/diagram/templates/message.html new file mode 100644 index 0000000000..bd4c33a016 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/diagram/templates/message.html @@ -0,0 +1,29 @@ + + + <% + var delta = 40; + var x = (x0 + x1) / 2; + var y0 = y - ((labels.length + 1) * delta); + %> + + + + <% + for (var labelIndex = 0; labelIndex < labels.length && labelIndex < lines ; labelIndex++) { + %><%- labels[labelIndex] %><% + }%> + + + + + + + + + diff --git a/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/diagram/templates/occurrence.html b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/diagram/templates/occurrence.html new file mode 100644 index 0000000000..0af9ff3d68 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/diagram/templates/occurrence.html @@ -0,0 +1,7 @@ + + + diff --git a/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/diagram/templates/title.html b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/diagram/templates/title.html new file mode 100644 index 0000000000..b7a5d68a6d --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/diagram/templates/title.html @@ -0,0 +1,3 @@ + + <%-title%> + diff --git a/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/dialog/Dialog.jsx b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/dialog/Dialog.jsx new file mode 100644 index 0000000000..4429d80bc6 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/dialog/Dialog.jsx @@ -0,0 +1,222 @@ + + +import React from 'react'; + +import Icon from '../icons/Icon'; +import iconQuestion from '../../../../../../res/ecomp/asdc/sequencer/sprites/icon/question.svg'; +import iconExclaim from '../../../../../../res/ecomp/asdc/sequencer/sprites/icon/exclaim.svg'; +import iconInfo from '../../../../../../res/ecomp/asdc/sequencer/sprites/icon/info.svg'; +import iconEdit from '../../../../../../res/ecomp/asdc/sequencer/sprites/icon/edit.svg'; +import iconClose from '../../../../../../res/ecomp/asdc/sequencer/sprites/icon/close.svg'; + +/** + * Multi-purpose dialog. Rendered into the page on initialization, and then + * configured, shown and hidden as required. + */ +export default class Dialog extends React.Component { + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Construct view. + */ + constructor(props, context) { + + super(props, context); + + this.MODE = { + INFO: { + icon: 'asdcs-icon-info', + heading: 'Information', + }, + ERROR: { + icon: 'asdcs-icon-exclaim', + heading: 'Error', + }, + EDIT: { + icon: 'asdcs-icon-edit', + heading: 'Edit', + edit: true, + confirm: true, + }, + CONFIRM: { + icon: 'asdcs-icon-question', + heading: 'Confirm', + confirm: true, + }, + }; + + this.state = { + mode: this.MODE.INFO, + message: '', + text: '', + visible: false, + }; + + // Bindings. + + this.onClickOK = this.onClickOK.bind(this); + this.onClickCancel = this.onClickCancel.bind(this); + this.onChangeText = this.onChangeText.bind(this); + this.showConfirmDialog = this.showConfirmDialog.bind(this); + this.showInfoDialog = this.showInfoDialog.bind(this); + this.showEditDialog = this.showEditDialog.bind(this); + this.showErrorDialog = this.showErrorDialog.bind(this); + this.showDialog = this.showDialog.bind(this); + + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Show info dialog. + * @param message info message. + */ + showInfoDialog(message) { + this.showDialog(this.MODE.INFO, { message }); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Show error dialog. + * @param message error message. + */ + showErrorDialog(message) { + this.showDialog(this.MODE.ERROR, { message }); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Show edit dialog. + * @param message dialog message. + * @param text current edit text. + * @param callback callback function to be invoked on OK. + */ + showEditDialog(message, text, callback) { + this.showDialog(this.MODE.EDIT, { message, text, callback }); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Show confirmation dialog. + * @param message dialog message. + * @param callback callback function to be invoked on OK. + */ + showConfirmDialog(message, callback) { + this.showDialog(this.MODE.CONFIRM, { message, callback }); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Handle buttonclick. + */ + onClickOK() { + this.props.application.hideOverlay(); + this.setState({ visible: false }); + if (this.callback) { + + // So far the only thing we can return is edit text, but send it back + // as properties to allow for future return values. + + this.callback({ text: this.state.text }); + } + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Handle buttonclick. + */ + onClickCancel() { + this.props.application.hideOverlay(); + this.setState({ visible: false }); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Handle text changes. + * @param event update event. + */ + onChangeText(event) { + this.setState({ text: event.target.value }); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Show dialog in specified configuration. + * @param mode dialog mode. + * @param args dialog parameters, varying slightly by dialog type. + * @private + */ + showDialog(mode, args) { + this.props.application.showOverlay(); + this.callback = args.callback; + this.setState({ + mode, + visible: true, + message: args.message || '', + text: args.text || '', + }); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Render dialog into the page, initially hidden. + */ + render() { + + const dialogClass = (this.state.visible) ? '' : 'asdcs-hidden'; + const cancelClass = (this.callback) ? '' : 'asdcs-hidden'; + const textClass = (this.state.mode === this.MODE.EDIT) ? '' : 'asdcs-hidden'; + + return ( +
+
{this.state.mode.heading}
+
+ +
+
+ + + + +
+
+ {this.state.message} +
+
+ +
+ ); + } +} + +Source.propTypes = { + application: React.PropTypes.object.isRequired, +}; + diff --git a/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/editor/components/toolbar/Toolbar.jsx b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/editor/components/toolbar/Toolbar.jsx new file mode 100644 index 0000000000..dd75180b2a --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/editor/components/toolbar/Toolbar.jsx @@ -0,0 +1,275 @@ +/*! + * 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. + */ + +import React from 'react'; + +import Common from '../../../../common/Common'; + +import iconPlus from '../../../../../../../../res/ecomp/asdc/sequencer/sprites/icon/plus.svg'; +import iconOpen from '../../../../../../../../res/ecomp/asdc/sequencer/sprites/icon/open.svg'; + +/** + * Toolbar view. Buttons offered in the toolbar depend on the mode. Unless in demo mode, + * all you get are the buttons for toggling between JSON/YAML/Designer. + */ +export default class Toolbar extends React.Component { + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Construct view. + */ + constructor(props, context) { + super(props, context); + this.application = Common.assertType(this.props.application, 'Object'); + this.editor = Common.assertType(this.props.editor, 'Object'); + this.mode = 'design'; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Set editor mode, one of {design, json, yaml}. + * @param mode + */ + setMode(mode = 'design') { + this.mode = mode; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Render into the DOM. + */ + render() { + + const demo = this.application.getOptions().demo; + const demoCss = demo ? '' : 'asdc-hide'; + + return ( +
+
+ + + + + + +
+
+ + + +
+
+ ); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + // /////////////////////////////////////////////////////////////////////////////////////////////// + // /////////////////////////////////////////////////////////////////////////////////////////////// + // /////////////////////////////////////////////////////////////////////////////////////////////// + // /////////////////////////////////////////////////////////////////////////////////////////////// + // /////////////////////////////////////////////////////////////////////////////////////////////// + // /////////////////////////////////////////////////////////////////////////////////////////////// + // /////////////////////////////////////////////////////////////////////////////////////////////// + // /////////////////////////////////////////////////////////////////////////////////////////////// + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Initialize eventhandlers. + * @private + * + _initEvents() { + + $('button.asdcs-button-open', this.$el).click(() => { + this._doDemoOpen(); + }); + + $('button.asdcs-button-new', this.$el).click(() => { + this._doDemoNew(); + }); + + $('button.asdcs-button-save', this.$el).click(() => { + this._doDemoSave(); + }); + + $('button.asdcs-button-upload', this.$el).click(() => { + this._doDemoUpload(); + }); + + $('button.asdcs-button-download', this.$el).click(() => { + this._doDemoDownload(); + }); + + $('button.asdcs-button-validate', this.$el).click(() => { + this._doDemoValidate(); + }); + + $('button.asdcs-button-json', this.$el).click((e) => { + if ($(e.target).hasClass('asdcs-active')) { + return; + } + this.editor.toggleToJSON(); + }); + + $('button.asdcs-button-yaml', this.$el).click((e) => { + if ($(e.target).hasClass('asdcs-active')) { + return; + } + this.editor.toggleToYAML(); + }); + + $('button.asdcs-button-design', this.$el).click((e) => { + if ($(e.target).hasClass('asdcs-active')) { + return; + } + this.editor.toggleToDesign(); + }); + } + */ + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Demo action. + * + _doDemoOpen() { + const complete = function complete() { + const sequencer = this.application.getSequencer(); + const scenarios = sequencer.getDemoScenarios(); + sequencer.setModel(scenarios.getECOMP()); + }; + this.application.showConfirmDialog('[DEMO MODE] Open a canned DEMO sequence ' + + 'via the public #setModel() API?', complete); + + } + */ + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Demo action. + * + _doDemoNew() { + const complete = function complete() { + const sequencer = this.application.getSequencer(); + sequencer.newModel(); + }; + this.application.showConfirmDialog('[DEMO MODE] Create an empty sequence via the ' + + 'public #newModel() API?', complete); + } + */ + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Demo action. + * + _doDemoSave() { + const sequencer = this.application.getSequencer(); + Logger.info(`[DEMO MODE] model:\n${JSON.stringify(sequencer.getModel(), null, 4)}`); + this.application.showInfoDialog('[DEMO MODE] Retrieved model via the public #getModel ' + + 'API and logged its JSON to the console.'); + } + */ + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Demo action. + * + _doDemoUpload() { + const sequencer = this.application.getSequencer(); + const svg = sequencer.getSVG(); + // console.log(`[DEMO MODE] SVG:\n${svg}`); + const $control = this.$el.closest('.asdcs-control'); + Logger.info(`parent: ${$control.length}`); + const $form = $('form.asdcs-export', $control); + Logger.info(`form: ${$form.length}`); + $('input[name=svg]', $form).val(svg); + try { + $form.submit(); + } catch (e) { + Logger.error(e); + this.application.showErrorDialog('[DEMO MODE] Export service not available. Retrieved ' + + 'SVG via the public #getSVG API and dumped it to the console.'); + } + } + */ + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Demo action. + * + _doDemoDownload() { + const json = JSON.stringify(this.application.getSequencer().getModel()); + const $control = this.$el.closest('.asdcs-control'); + const $a = $('').appendTo($control); + $a.attr('href', `data:application/json;charset=utf-8,${encodeURIComponent(json)}`); + $a[0].click(); + $a.remove(); + } + */ + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Demo action. + * + _doDemoValidate() { + this.application.showInfoDialog('[DEMO MODE] Dumping validation result to the console.'); + const errors = this.application.getModel().validate(); + Logger.info(`[DEMO MODE] Validation: ${JSON.stringify(errors, null, 4)}`); + } + */ +} + +Toolbar.propTypes = { + application: React.PropTypes.object.isRequired, + editor: React.PropTypes.object.isRequired, +}; diff --git a/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/export/Export.jsx b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/export/Export.jsx new file mode 100644 index 0000000000..529ae92ded --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/export/Export.jsx @@ -0,0 +1,31 @@ +/*! + * 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. + */ + +import React from 'react'; + +const Export = function Export() { + return ( +
+ + + + + +
+ ); +}; + +export default Export; diff --git a/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/icons/Icon.jsx b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/icons/Icon.jsx new file mode 100644 index 0000000000..6bc04f997f --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/icons/Icon.jsx @@ -0,0 +1,41 @@ +/*! + * 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. + */ + +import React from 'react'; + +/** + * Simple icon view. + * @param glyph glyph definition, from import. + * @param className optional classname, for svg element. + * @returns {XML} + * @constructor + */ +const Icon = function Icon({ glyph, className }) { + return ( + + + + ); +}; + +/** Declare properties. */ +Icon.propTypes = { + className: React.PropTypes.string, + glyph: React.PropTypes.string.isRequired, +}; + +export default Icon; + diff --git a/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/overlay/Overlay.jsx b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/overlay/Overlay.jsx new file mode 100644 index 0000000000..817f4f1697 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/components/overlay/Overlay.jsx @@ -0,0 +1,61 @@ +/*! + * 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. + */ + +import React from 'react'; + +/** + * Overlay view. + */ +export default class Overlay extends React.Component { + + /** + * Construct view. + * @param props element properties. + * @param context react context. + */ + constructor(props, context) { + super(props, context); + this.state = { + visible: false, + }; + this.setVisible = this.setVisible.bind(this); + } + + /** + * Set visibility. + * @param visible true if visible. + */ + setVisible(visible) { + this.setState({ + visible, + }); + } + + /** + * Render view. + * @returns {XML} + */ + render() { + const display = this.state.visible ? 'block' : 'none'; + return ( +
+
+ ); + } +} diff --git a/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/Metamodel.js b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/Metamodel.js new file mode 100644 index 0000000000..82e8ada588 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/Metamodel.js @@ -0,0 +1,94 @@ +/*! + * 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. + */ + +import _merge from 'lodash/merge'; + +import Common from '../common/Common'; + +/** + * Rules governing what a definition can contain. + */ +export default class Metamodel { + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Construct from JSON definition. + * @param json schema definition. + */ + constructor(json) { + Common.assertType(json, 'Object'); + const dfault = require('./templates/default.metamodel.json'); + this.json = _merge({}, dfault, json); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Get schema identifier. + * @returns ID. + */ + getId() { + return this.json.diagram.metadata.id; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Get lifeline constraints. + * @returns {*} + */ + getConstraints() { + return this.json.diagram.lifelines.constraints; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Get lifeline metadata by lifeline ID. + * @param id sought lifeline. + * @returns lifeline if found. + */ + getLifelineById(id) { + for (const lifeline of this.json.diagram.lifelines.lifelines) { + if (lifeline.id === id) { + return lifeline; + } + } + return undefined; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Get original JSON. + * @returns JSON. + */ + unwrap() { + return this.json; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Get default schema. + * @returns Metamodel default (permissive) Metamodel. + */ + static getDefault() { + return new Metamodel({}); + } + +} diff --git a/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/Metamodels.js b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/Metamodels.js new file mode 100644 index 0000000000..4ecfc0b5f7 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/Metamodels.js @@ -0,0 +1,87 @@ +/*! + * 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. + */ + +import Common from '../common/Common'; +import Metamodel from './Metamodel'; + +/** + * A simple lookup for schemas by ID. + */ +export default class Metamodels { + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Construct metamodels from provided JSON definitions. + * @param metamodels JSON metamodel definitions. + */ + constructor(metamodels) { + + Common.assertType(metamodels, 'Array'); + + this.lookup = {}; + + // Save each metamodel. It's up to the Metamodel class to make sense of + // potentially nonsense metamodel definitions. + + for (const json of metamodels) { + const metamodel = new Metamodel(json); + this.lookup[metamodel.getId()] = metamodel; + } + + // Set (or override) the default metamodel with the inlined one. + + this.lookup.$ = Metamodel.getDefault(); + Common.assertInstanceOf(this.lookup.$, Metamodel); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Get Metamodel by its @id. + * @param id identifier. + * @returns Metamodel, or undefined if no matching metamodel found. + */ + getMetamodel(id) { + return this.lookup[id]; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Get the default (permissive) metamodel. + * @returns default Metamodel. + */ + getDefault() { + return this.lookup.$; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Get metamodel by its @id, falling back to the default. + * @param id identifier. + * @returns matching metamodel, or default. + */ + getMetamodelOrDefault(id) { + const metamodel = this.getMetamodel(id); + if (metamodel) { + return metamodel; + } + return this.getDefault(); + } + +} diff --git a/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/Model.js b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/Model.js new file mode 100644 index 0000000000..1e68cd6034 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/Model.js @@ -0,0 +1,512 @@ +/*! + * 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. + */ + +import _merge from 'lodash/merge'; +// import jsonschema from 'jsonschema'; + +import Common from '../common/Common'; +import Metamodel from './Metamodel'; + +/** + * A wrapper for a model instance. + */ +export default class Model { + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Construct model from model JSON. JSON is assumed to be in more or less + * the correct structure, but it's OK if it's missing IDs. + * + * @param json initial JSON; will be updated in situ. + * @param metamodel Metaobject definition. + */ + constructor(json, metamodel) { + + if (metamodel) { + Common.assertInstanceOf(metamodel, Metamodel); + } + + this.metamodel = metamodel || Metamodel.getDefault(); + Common.assertInstanceOf(this.metamodel, Metamodel); + + this.jsonschema = require('./schema/asdc_sequencer_schema.json'); + this.templates = { + defaultModel: require('./templates/default.model.json'), + defaultMetamodel: require('./templates/default.metamodel.json'), + }; + + this.model = this._preprocess(Common.assertType(json, 'Object')); + Common.assertPlainObject(this.model); + + this.renumber(); + + this.addLifeline = this.addLifeline.bind(this); + this.addMessage = this.addMessage.bind(this); + this.renumber = this.renumber.bind(this); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Unwrap to get model object. + * @returns {*} + */ + unwrap() { + return Common.assertPlainObject(this.model); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Get the metamodel which defines valid states for this model. + * @returns Metamodel definition. + */ + getMetamodel() { + return Common.assertInstanceOf(this.metamodel, Metamodel); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Find lifeline by its ID. + * @param id lifeline ID. + * @returns lifeline object, if found. + */ + getLifelineById(id) { + for (const lifeline of this.model.diagram.lifelines) { + if (lifeline.id === id) { + return lifeline; + } + } + return undefined; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Get message by ID. + * @param id message ID. + * @returns message if matched. + */ + getMessageById(id) { + Common.assertNotNull(id); + const step = this.getStepByMessageId(id); + if (step) { + return step.message; + } + return undefined; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Get step by message ID. + * @param id step ID. + * @returns step if matched. + */ + getStepByMessageId(id) { + Common.assertNotNull(id); + for (const step of this.model.diagram.steps) { + if (step.message && step.message.id === id) { + return step; + } + } + return undefined; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Add message to steps. + * @returns {{}} + */ + addMessage(index) { + const d = this.model.diagram; + const step = {}; + step.message = {}; + step.message.id = Model._guid(); + step.message.name = '[Unnamed Message]'; + step.message.type = 'request'; + step.message.from = d.lifelines.length > 0 ? d.lifelines[0].id : -1; + step.message.to = d.lifelines.length > 1 ? d.lifelines[1].id : -1; + if (index >= 0) { + d.steps.splice(index, 0, step); + } else { + d.steps.push(step); + } + this.renumber(); + return step; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Delete message with ID. + * @param id to be deleted. + */ + deleteMessageById(id) { + Common.assertNotNull(id); + const step = this.getStepByMessageId(id); + if (step) { + const index = this.model.diagram.steps.indexOf(step); + if (index !== -1) { + this.model.diagram.steps.splice(index, 1); + } + } + this.renumber(); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Add lifeline to lifelines. + * @param index optional index. + * @returns {{}} + */ + addLifeline(index) { + const lifeline = {}; + lifeline.id = Model._guid(); + lifeline.name = '[Unnamed Lifeline]'; + if (index >= 0) { + this.model.diagram.lifelines.splice(index, 0, lifeline); + } else { + this.model.diagram.lifelines.push(lifeline); + } + this.renumber(); + return lifeline; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Delete lifeline with ID. + * @param id to be deleted. + */ + deleteLifelineById(id) { + Common.assertNotNull(id); + this.deleteStepsByLifelineId(id); + const lifeline = this.getLifelineById(id); + if (lifeline) { + const index = this.model.diagram.lifelines.indexOf(lifeline); + if (index !== -1) { + this.model.diagram.lifelines.splice(index, 1); + } + } + this.renumber(); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Delete all steps corresponding to lifeline. + * @param id lifeline ID. + */ + deleteStepsByLifelineId(id) { + Common.assertNotNull(id); + const steps = this.getStepsByLifelineId(id); + for (const step of steps) { + this.deleteMessageById(step.message.id); + } + this.renumber(); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Get all steps corresponding to lifeline. + * @param id lifeline ID. + * @return steps from/to lifeline. + */ + getStepsByLifelineId(id) { + Common.assertNotNull(id); + const steps = []; + for (const step of this.model.diagram.steps) { + if (step.message) { + if (step.message.from === id || step.message.to === id) { + steps.push(step); + } + } + } + return steps; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Validate model. Disabled, because we removed the jsonschema dependency. + * @returns {Array} of validation errors, if any. + */ + validate() { + const errors = []; + return errors; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Reorder messages. + * @param index message index. + * @param afterIndex new (after) index. + */ + reorderMessages(index, afterIndex) { + Common.assertType(index, 'Number'); + Common.assertType(afterIndex, 'Number'); + const steps = this.model.diagram.steps; + const element = steps[index]; + steps.splice(index, 1); + steps.splice(afterIndex, 0, element); + this.renumber(); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Reorder lifelines. + * @param index lifeline index. + * @param afterIndex new (after) index. + */ + reorderLifelines(index, afterIndex) { + Common.assertType(index, 'Number'); + Common.assertType(afterIndex, 'Number'); + const lifelines = this.model.diagram.lifelines; + const element = lifelines[index]; + lifelines.splice(index, 1); + lifelines.splice(afterIndex, 0, element); + this.renumber(); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Renumber lifelines and messages. + */ + renumber() { + const modelJSON = this.unwrap(); + let stepIndex = 1; + let lifelineIndex = 1; + for (const step of modelJSON.diagram.steps) { + if (step.message) { + step.message.index = stepIndex++; + } + } + for (const lifeline of modelJSON.diagram.lifelines) { + lifeline.index = lifelineIndex++; + } + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Build a simple, navigable dataset describing fragments. + * @returns {{}}, indexed by (stop) message ID, describing fragments. + */ + analyzeFragments() { + + const fData = {}; + + let depth = 0; + const modelJSON = this.unwrap(); + const open = []; + + const getData = function g(stop, fragment) { + let data = fData[stop]; + if (!data) { + data = { stop, start: [], fragment }; + fData[stop] = data; + } + return data; + }; + + const fragmentsByStart = {}; + for (const step of modelJSON.diagram.steps) { + if (step.message && step.message.fragment) { + const message = step.message; + const fragment = message.fragment; + if (fragment.start) { + fragmentsByStart[fragment.start] = fragment; + open.push(message.id); + depth++; + } + if (fragment.stop) { + if (open.length > 0) { + getData(message.id).start.push(open.pop()); + } + depth = Math.max(depth - 1, 0); + } + } + } + + if (open.length > 0) { + for (const o of open) { + getData(o, fragmentsByStart[o]).start.push(o); + } + } + + return fData; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Build a simple, navigable dataset describing occurrences. + * @returns a map, indexed by lifeline ID, of objects containing {start:[],stop:[],active[]}. + * @private + */ + analyzeOccurrences() { + + const oData = {}; + + // A few inline functions. They make this method kinda lengthy, but they + // reduce clutter in the class and keep it coherent, so it's OK. + + const getDataByLifelineId = function get(lifelineId) { + if (!oData[lifelineId]) { + oData[lifelineId] = { active: [], start: {}, stop: {} }; + } + return oData[lifelineId]; + }; + + const contains = function contains(array, value) { + return (array && (array.indexOf(value) !== -1)); + }; + + const process = function process(message, lifelineId) { + const oRule = message.occurrences; + if (oRule) { + + const oDataLifeline = getDataByLifelineId(lifelineId); + if (oDataLifeline) { + + // Record all starts. + + if (contains(oRule.start, lifelineId)) { + oDataLifeline.active.push(message.id); + oDataLifeline.start[message.id] = undefined; + } + + // Reconcile with stops. + + if (contains(oRule.stop, lifelineId)) { + const startMessageId = oDataLifeline.active.pop(); + oDataLifeline.stop[message.id] = startMessageId; + if (startMessageId) { + oDataLifeline.start[startMessageId] = message.id; + } + } + } + } + }; + + // Analyze start and end. + + const modelJSON = this.unwrap(); + for (const step of modelJSON.diagram.steps) { + if (step.message) { + const message = step.message; + if (message.occurrences) { + process(message, message.from); + process(message, message.to); + } + } + } + + // Reset active. (We used it, but it's not actually for us; it's for keeping + // track of active occurrences when rendering the diagram.) + + for (const lifelineId of Object.keys(oData)) { + oData[lifelineId].active = []; + } + + // Reconcile the start and end (message ID) maps for each lifeline, + // finding a "stop" for every start. Default to starting and stopping + // on the same message, which is the same as no occurrence. + + for (const lifelineId of Object.keys(oData)) { + const lifelineData = oData[lifelineId]; + for (const startId of Object.keys(lifelineData.start)) { + const stopId = lifelineData.start[startId]; + if (!stopId) { + lifelineData.start[startId] = startId; + lifelineData.stop[startId] = startId; + } + } + } + + return oData; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + // /////////////////////////////////////////////////////////////////////////////////////////////// + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Preprocess model, adding IDs and whatnot. + * @param original to be preprocessed. + * @returns preprocessed JSON. + * @private + */ + _preprocess(original) { + + const json = _merge({}, this.templates.defaultModel, original); + const metamodel = this.metamodel.unwrap(); + if (!json.diagram.metadata.ref) { + if (metamodel.diagram.metadata.id) { + json.diagram.metadata.ref = metamodel.diagram.metadata.id; + } else { + json.diagram.metadata.ref = '$'; + } + } + + for (const lifeline of json.diagram.lifelines) { + lifeline.id = lifeline.id || lifeline.name; + } + + for (const step of json.diagram.steps) { + if (step.message) { + step.message.id = step.message.id || Model._guid(); + const occurrences = step.message.occurrences; + if (occurrences) { + occurrences.start = occurrences.start || []; + occurrences.stop = occurrences.stop || []; + } + } + } + + if (!json.diagram.metadata.id || json.diagram.metadata.id === '$') { + json.diagram.metadata.id = Model._guid(); + } + + return json; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Create pseudo-UUID. + * @returns {string} + * @private + */ + static _guid() { + function s4() { + return Math.floor((1 + Math.random()) * 0x10000) + .toString(16) + .substring(1); + } + return `${s4()}-${s4()}-${s4()}-${s4()}-${s4()}-${s4()}-${s4()}-${s4()}`; + } + +} diff --git a/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/demo/scenarios/Scenarios.js b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/demo/scenarios/Scenarios.js new file mode 100644 index 0000000000..4130ec7ec3 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/demo/scenarios/Scenarios.js @@ -0,0 +1,110 @@ +/*! + * 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. + */ + +/** + * Example scenarios, for development, testing and demos. + */ +export default class Scenarios { + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Construct scenarios; read model and metamodel templates. + */ + constructor() { + this.templates = { + model: { + ecomp: require('./model/ECOMP.json'), + blank: require('./model/BLANK.json'), + dimensions: require('./model/DIMENSIONS.json'), + }, + metamodel: { + ecomp: require('./metamodel/ECOMP.json'), + blank: require('./metamodel/BLANK.json'), + }, + }; + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Get ECOMP scenario. + * @return ECOMP scenario JSON. + */ + getECOMP() { + return JSON.parse(JSON.stringify(this.templates.model.ecomp)); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Get ECOMP scenario metamodel. + * @return scenario metamodel JSON. + */ + getECOMPMetamodel() { + return JSON.parse(JSON.stringify(this.templates.metamodel.ecomp)); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Get blank scenario. + * @return blank scenario JSON. + */ + getBlank() { + return JSON.parse(JSON.stringify(this.templates.model.blank)); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Get empty scenario metamodel. + * @return empty metamodel JSON. + */ + getBlankMetamodel() { + return JSON.parse(JSON.stringify(this.templates.metamodel.blank)); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Get scenario. + * @return scenario JSON. + */ + getDimensions() { + return JSON.parse(JSON.stringify(this.templates.model.dimensions)); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Get scenario metamodel. + * @return metamodel JSON. + */ + getDimensionsMetamodel() { + return JSON.parse(JSON.stringify(this.templates.metamodel.blank)); + } + + // /////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Get demo metamodels. + * @returns {*[]} + */ + getMetamodels() { + return [this.getBlankMetamodel(), this.getDimensionsMetamodel(), this.getECOMPMetamodel()]; + } +} diff --git a/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/demo/scenarios/metamodel/BLANK.json b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/demo/scenarios/metamodel/BLANK.json new file mode 100644 index 0000000000..2853405883 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/demo/scenarios/metamodel/BLANK.json @@ -0,0 +1,16 @@ +{ + "diagram": { + "metadata": { + "id": "BLANK", + "name": "Blank" + }, + "lifelines": { + "lifelines": [], + "constraints": { + "create": true, + "delete": true, + "reorder": true + } + } + } +} diff --git a/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/demo/scenarios/metamodel/DIMENSIONS.json b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/demo/scenarios/metamodel/DIMENSIONS.json new file mode 100644 index 0000000000..f02111d0f3 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/demo/scenarios/metamodel/DIMENSIONS.json @@ -0,0 +1,16 @@ +{ + "diagram": { + "metadata": { + "id": "DIMENSIONS", + "name": "Dimensions" + }, + "lifelines": { + "lifelines": [], + "constraints": { + "create": true, + "delete": true, + "reorder": true + } + } + } +} diff --git a/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/demo/scenarios/metamodel/ECOMP.json b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/demo/scenarios/metamodel/ECOMP.json new file mode 100644 index 0000000000..939c1398b5 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/demo/scenarios/metamodel/ECOMP.json @@ -0,0 +1,62 @@ +{ + "diagram": { + "metadata": { + "id": "ECOMP", + "name": "ECOMP" + + }, + "lifelines": { + "lifelines": [{ + "id": "1", + "name": "Customer" + }, { + "id": "2", + "name": "MSO" + }, { + "id": "3", + "name": "SDN" + }, { + "id": "4", + "name": "A&AI" + }, { + "id": "5", + "name": "IPE TOR" + }, { + "id": "6", + "name": "ORM" + }, { + "id": "7", + "name": "ORD" + }, { + "id": "8", + "name": "Heat" + }, { + "id": "9", + "name": "NovaAPI" + }, { + "id": "10", + "name": "Ntrn Contrl" + }, { + "id": "11", + "name": "RO" + }, { + "id": "12", + "name": "Nova Agent" + }, { + "id": "13", + "name": "VF Agent" + }, { + "id": "14", + "name": "Hypervisor" + }, { + "id": "15", + "name": "VF" + }], + "constraints": { + "create": true, + "delete": true, + "reorder": true + } + } + } +} diff --git a/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/demo/scenarios/model/BLANK.json b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/demo/scenarios/model/BLANK.json new file mode 100644 index 0000000000..784a80e820 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/demo/scenarios/model/BLANK.json @@ -0,0 +1,37 @@ +{ + "diagram": { + "metadata": { + "id": "$", + "ref": "BLANK", + "name": "New Sequence" + }, + "lifelines": [ + { + "id": "Alice", + "name": "Alice" + }, + { + "id": "Bob", + "name": "Bob" + } + ], + "steps": [ + { + "message": { + "from": "Alice", + "to": "Bob", + "label": "Sup Bob", + "type": "request" + } + }, + { + "message": { + "from": "Bob", + "to": "Alice", + "label": "Yo Alice", + "type": "response" + } + } + ] + } +} diff --git a/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/demo/scenarios/model/DIMENSIONS.json b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/demo/scenarios/model/DIMENSIONS.json new file mode 100644 index 0000000000..642e34a785 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/demo/scenarios/model/DIMENSIONS.json @@ -0,0 +1,91 @@ +{ + "diagram": { + "metadata": { + "id": "DIMENSIONS1", + "name": "Dimensions Test", + "ref": "DIMENSIONS" + }, + "lifelines": [ + { + "id": "L01", + "name": "Lorum Ipsum" + }, + { + "id": "L02", + "name": "Donec nisi urna, porttitor efficitur felis vel, efficitur consequat nunc" + }, + { + "id": "L03", + "name": "Mauris dignissim SphymomanometerSphymomanometer enim non sapien tristique lacinia" + } + ], + "steps": [ + { + "message": { + "id": "M01", + "from": "L01", + "to": "L02", + "name": "Morbi", + "type": "request", + "notes": [ + "Proin non libero malesuada." + ], + "fragment": { + "operator": "alt", + "start": true, + "guard": "Curabitur sollicitudin nulla elit, et ultrices tortor faucibus quis" + }, + "occurrences": { + "start": ["L01", "L02"], + "stop": [] + } + } + }, + { + "message": { + "id": "M02", + "from": "L02", + "to": "L03", + "name": "Quisque pretium tellus sit amet congue dictum. Mauris ac rutrum arcu, et fringilla orci", + "type": "request", + "notes": [ + "Nam quis felis hendrerit, lacinia ipsum vitae, faucibus elit. Morbi sit amet nunc eget massa vehicula rhoncus sit amet vel tellus. Aliquam accumsan eros elit, et sollicitudin lacus vehicula eu. Aenean rhoncus justo ut felis tincidunt, sit amet vulputate metus aliquet. Phasellus tellus est, consequat nec ex mollis, lacinia vestibulum justo. Nam quis felis hendrerit, lacinia ipsum vitae, faucibus elit. Morbi sit amet nunc eget massa vehicula rhoncus sit amet vel tellus. Aliquam accumsan eros elit, et sollicitudin lacus vehicula eu. Aenean rhoncus justo ut felis tincidunt, sit amet vulputate metus aliquet. Phasellus tellus est, consequat nec ex mollis, lacinia vestibulum justo." + ], + "occurrences": { + "start": [], + "stop": ["L02"] + } + } + }, + { + "message": { + "id": "M03", + "from": "L01", + "to": "L03", + "name": "Nullam", + "type": "response", + "fragment": { + "stop": true + }, + "occurrences": { + "start": [], + "stop": ["L01"] + } + } + }, + { + "message": { + "id": "M04", + "from": "L01", + "to": "L03", + "name": "Etiam convallis augue est. ", + "type": "request", + "occurrences": { + "start": [], + "stop": [] + } + } + } + ] + } +} diff --git a/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/demo/scenarios/model/ECOMP.json b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/demo/scenarios/model/ECOMP.json new file mode 100644 index 0000000000..dd9bfc5eb0 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/demo/scenarios/model/ECOMP.json @@ -0,0 +1,514 @@ +{ + "diagram": { + "metadata": { + "id": "ECOMP1", + "name": "Detailed flow in Ecomp1", + "ref": "ECOMP" + }, + "lifelines": [ + { + "id": "L01", + "name": "Customer" + }, + { + "id": "L02", + "name": "MSO" + }, + { + "id": "L03", + "name": "SDN" + }, + { + "id": "L04", + "name": "A&AI" + }, + { + "id": "L05", + "name": "IPE TOR" + }, + { + "id": "L06", + "name": "ORM" + }, + { + "id": "L07", + "name": "ORD" + }, + { + "id": "L08", + "name": "Heat" + }, + { + "id": "L09", + "name": "NovaAPI" + }, + { + "id": "L10", + "name": "Ntrn Contrl" + }, + { + "id": "L11", + "name": "RO" + }, + { + "id": "L12", + "name": "Nova Agent" + }, + { + "id": "L13", + "name": "VF Agent" + }, + { + "id": "L14", + "name": "Hypervisor" + }, + { + "id": "L15", + "name": "VF" + } + ], + "steps": [ + { + "message": { + "id": "M01", + "from": "L01", + "to": "L02", + "name": "Create", + "type": "request", + "notes": [ + "This note is short." + ], + "occurrences": { + "start": ["L01", "L02"], + "stop": [] + } + } + }, + { + "message": { + "id": "M02", + "from": "L02", + "to": "L04", + "name": "Check Tenant", + "type": "request", + "occurrences": { + "start": ["L02"], + "stop": [] + } + } + }, + { + "message": { + "id": "M03", + "from": "L02", + "to": "L06", + "name": "Create Tenant", + "type": "request", + "fragment": { + "operator": "alt", + "start": true, + "guard": "Does not exist" + }, + "occurrences": { + "start": ["L06"], + "stop": [] + } + } + }, + { + "message": { + "id": "M04", + "from": "L06", + "to": "L07", + "name": "Distribute", + "type": "request", + "occurrences": { + "start": [], + "stop": [] + } + } + }, + { + "message": { + "id": "M05", + "from": "L06", + "to": "L02", + "name": "Async Response", + "type": "response", + "asynchronous": true, + "fragment": { + "stop": true + }, + "occurrences": { + "start": [], + "stop": ["L02", "L06"] + } + } + }, + { + "message": { + "id": "M06", + "from": "L07", + "to": "L08", + "name": "Push", + "type": "request", + "occurrences": { + "start": [], + "stop": [] + } + } + }, + { + "message": { + "id": "M07", + "from": "L08", + "to": "L02", + "name": "Tenant Complete", + "type": "response", + "occurrences": { + "start": [], + "stop": [] + } + } + }, + { + "message": { + "id": "M08", + "from": "L02", + "to": "L03", + "name": "Service Topology", + "type": "request", + "occurrences": { + "start": ["L03"], + "stop": [] + } + } + }, + { + "message": { + "id": "M09", + "from": "L03", + "to": "L05", + "name": "Pre-configs", + "type": "request", + "occurrences": { + "start": [], + "stop": [] + } + } + }, + { + "message": { + "id": "M10", + "from": "L03", + "to": "L04", + "name": "Retrieve and populate", + "type": "request", + "occurrences": { + "start": [], + "stop": ["L03"] + } + } + }, + { + "message": { + "id": "M11", + "from": "L02", + "to": "L08", + "name": "VNF PreRequisite Heat Template", + "type": "request", + "notes": [ + "I got up and made coffee and read my emails and answered them until I got frustrated and made a mental note to answer the others later and then looked out of the window for a while and then made more coffee." + ], + "occurrences": { + "start": [], + "stop": [] + } + } + }, + { + "message": { + "id": "M12", + "from": "L08", + "to": "L10", + "name": "Provider and OAM nw", + "type": "request", + "occurrences": { + "start": [], + "stop": [] + } + } + }, + { + "message": { + "id": "M13", + "from": "L02", + "to": "L08", + "name": "Get Stack Status", + "type": "request", + "occurrences": { + "start": [], + "stop": [] + } + } + }, + { + "message": { + "id": "M14", + "from": "L08", + "to": "L02", + "name": "Status complete", + "type": "response", + "asynchronous": true, + "occurrences": { + "start": [], + "stop": [] + } + } + }, + { + "message": { + "id": "M15", + "from": "L11", + "to": "L04", + "name": "Provider and OAM Inventory", + "type": "response", + "asynchronous": true, + "occurrences": { + "start": [], + "stop": [] + } + } + }, + { + "message": { + "id": "M16", + "from": "L02", + "to": "L08", + "name": "VNF Server Heat Template", + "type": "request", + "occurrences": { + "start": [], + "stop": [] + } + } + }, + { + "message": { + "id": "M17", + "from": "L08", + "to": "L10", + "name": "Show Port", + "type": "request", + "occurrences": { + "start": [], + "stop": [] + } + } + }, + { + "message": { + "id": "M18", + "from": "L11", + "to": "L02", + "name": "Async Response with Stack ID", + "type": "response", + "asynchronous": true, + "occurrences": { + "start": [], + "stop": [] + } + } + }, + { + "message": { + "id": "M19", + "from": "L10", + "to": "L08", + "name": "Response", + "type": "response", + "asynchronous": true, + "occurrences": { + "start": [], + "stop": [] + } + } + }, + { + "message": { + "id": "M20", + "from": "L08", + "to": "L09", + "name": "Nova VM", + "type": "request", + "occurrences": { + "start": [], + "stop": [] + } + } + }, + { + "message": { + "id": "M21", + "from": "L09", + "to": "L12", + "name": "Scheduler Picks Nova Agent", + "type": "request", + "occurrences": { + "start": [], + "stop": [] + } + } + }, + { + "message": { + "id": "M22", + "from": "L12", + "to": "L14", + "name": "Picks VF", + "type": "request", + "occurrences": { + "start": [], + "stop": [] + } + } + }, + { + "message": { + "id": "M23", + "from": "L12", + "to": "L10", + "name": "Retrieves Port Info", + "type": "request", + "occurrences": { + "start": [], + "stop": [] + } + } + }, + { + "message": { + "id": "M24", + "from": "L12", + "to": "L13", + "name": "Calls CF Agent", + "type": "request", + "occurrences": { + "start": [], + "stop": [] + } + } + }, + { + "message": { + "id": "M25", + "from": "L13", + "to": "L15", + "name": "Configure VF", + "type": "response", + "occurrences": { + "start": [], + "stop": [] + } + } + }, + { + "message": { + "id": "M26", + "from": "L15", + "to": "L13", + "name": "Response", + "type": "response", + "asynchronous": true, + "occurrences": { + "start": [], + "stop": [] + } + } + }, + { + "message": { + "id": "M27", + "from": "L13", + "to": "L12", + "name": "Complete", + "type": "response", + "asynchronous": true, + "occurrences": { + "start": [], + "stop": [] + } + } + }, + { + "message": { + "id": "M28", + "from": "L12", + "to": "L08", + "name": "Response Complete", + "type": "response", + "asynchronous": true, + "occurrences": { + "start": [], + "stop": [] + } + } + }, + { + "message": { + "id": "M29", + "from": "L11", + "to": "L04", + "name": "VServer and Show Port Inventory", + "type": "response", + "asynchronous": true, + "occurrences": { + "start": [], + "stop": [] + } + } + }, + { + "message": { + "id": "M30", + "from": "L02", + "to": "L08", + "name": "Get Stack Status", + "type": "request", + "occurrences": { + "start": [], + "stop": [] + } + } + }, + { + "message": { + "id": "M31", + "from": "L08", + "to": "L02", + "name": "Stack Status Complete", + "type": "response", + "asynchronous": true, + "occurrences": { + "start": [], + "stop": [] + } + } + }, + { + "message": { + "id": "M32", + "from": "L02", + "to": "L01", + "name": "Done", + "type": "response", + "asynchronous": true, + "occurrences": { + "start": [], + "stop": ["L01", "L02"] + } + } + } + ] + } +} diff --git a/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/schema/asdc-sequencer-meta-schema.xsd b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/schema/asdc-sequencer-meta-schema.xsd new file mode 100644 index 0000000000..f75063bed5 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/schema/asdc-sequencer-meta-schema.xsd @@ -0,0 +1,166 @@ + + + + + + + + + Diagram meta-schema, defining what diagram documents may look like. + + The main difference between the metaschema (this) and the schema, is that + the metaschema describes what's *allowed* rather than what *is*. + + Specific differences: + + 1. The metaschema exists primarily to constrain lifelines; to declare any + that are predefined, to prescribe cardinality, order and whether or not + ad hoc lifelines may be created by the user. + 2. The metaschema doesn't constrain messages at all. This may come along later, + but for now they're freetext, and can be defined between any legal pair + of lifelines. + 3. The metaschema doesn't have @ref attributes; its @id attributes are the + target of @ref attributes in the instance schema.m + + + + + + + + + + + + + + + + + Common attributes, most importantly @id, which every entity must have. + + + + + + + + + + + + + + + Schema definition identifier. + + + + + + + Human-readable name. + + + + + + + + + + + Diagram metadata, including: + - Unique ID, referenced by @ref attributes in instance documents. + - Human-readable description, displayed on-screen. + + + + + + + + + + + + + Metadata concerning a single lifeline. + + + + + + + + Whether an instance may omit this lifeline. Only takes effect + where the lifelines setting is @delete=true. + + + + + + + + + + + + + Metadata concerning allowed lifelines. Somewhat more strict that + instance data. + + + + + + + + + + + + Whether the user may create their own lifelines. + + + + + + + Whether declared lifelines may be deleted. + See also @mandatory on lifeline. + + + + + + + Whether lifelines may be reordered. + + + + + + + + + + + diff --git a/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/schema/asdc-sequencer-schema.xsd b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/schema/asdc-sequencer-schema.xsd new file mode 100644 index 0000000000..71a7d07cb1 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/schema/asdc-sequencer-schema.xsd @@ -0,0 +1,274 @@ + + + + + + + + + + Diagram state. + + + + + + + + + + + + + + + + + Stuff common to all entities; an identifier, a name, an optional + schema reference, and some optional notes. + + + + + + + + + + + + + + Optional annotations; non-structural information attached to any entity. + + + + + + + + + + + + + Entity identifier. + + + + + + + Optional reference to schema definition, where this entity + corresponds to (and is constrained by) a schema entity. + + + + + + + Human-readable name. + + + + + + + ID of entity in originating system. For external use; not + used by the sequencer widget. + + + + + + + + + + + + Diagram metadata, including name, identifier and schema reference. + + + + + + + + + + + + + Definition of a single lifeline. + + + + + + + + + + + + + A set of lifelines. May be top-level or in a fragment. + + + + + + + + + + + + + + + + + An occurrence at one or other end of a message. + + + + + + + + + + + + + + + + + + + + A fragment directive. + + + + + + Whether fragment starts; fragment activated when @start=true. + + + + + + + Indication of the last message in this fragment. + + + + + + + Fragment operation. Start with the three everybody knows, but + there are others. + + + + + + + + + + + + + + Guard condition. + + + + + + + + + + + A message between lifelines. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Guard condition within a fragment. Some fragments have more than + one section, each with their own guard condition. + + + + + + + + + + + + + + An ordered set of messages and subsequences. + + + + + + + + + + + + + + diff --git a/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/schema/asdc_sequencer_meta_schema.json b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/schema/asdc_sequencer_meta_schema.json new file mode 100644 index 0000000000..cf4174ed35 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/schema/asdc_sequencer_meta_schema.json @@ -0,0 +1,332 @@ + +{ + "id":"#", + "definitions":{ + "LifelinesType.Constraints":{ + "type":"object", + "title":"LifelinesType.Constraints", + "required":[ + "create", + "delete", + "reorder" + ], + "properties":{ + "create":{ + "title":"create", + "allOf":[ + { + "$ref":"http://www.jsonix.org/jsonschemas/w3c/2001/XMLSchema.jsonschema#/definitions/boolean" + } + ], + "propertyType":"attribute", + "attributeName":{ + "localPart":"create", + "namespaceURI":"" + } + }, + "delete":{ + "title":"delete", + "allOf":[ + { + "$ref":"http://www.jsonix.org/jsonschemas/w3c/2001/XMLSchema.jsonschema#/definitions/boolean" + } + ], + "propertyType":"attribute", + "attributeName":{ + "localPart":"delete", + "namespaceURI":"" + } + }, + "reorder":{ + "title":"reorder", + "allOf":[ + { + "$ref":"http://www.jsonix.org/jsonschemas/w3c/2001/XMLSchema.jsonschema#/definitions/boolean" + } + ], + "propertyType":"attribute", + "attributeName":{ + "localPart":"reorder", + "namespaceURI":"" + } + } + }, + "typeType":"classInfo", + "propertiesOrder":[ + "create", + "delete", + "reorder" + ] + }, + "LifelinesType":{ + "required":[ + "constraints" + ], + "allOf":[ + { + "$ref":"#/definitions/EntityType" + }, + { + "type":"object", + "title":"LifelinesType", + "properties":{ + "lifeline":{ + "title":"lifeline", + "allOf":[ + { + "type":"array", + "items":{ + "$ref":"#/definitions/LifelineType" + }, + "minItems":0 + } + ], + "propertyType":"element", + "elementName":{ + "localPart":"lifeline", + "namespaceURI":"" + } + }, + "constraints":{ + "title":"constraints", + "allOf":[ + { + "$ref":"#/definitions/LifelinesType.Constraints" + } + ], + "propertyType":"element", + "elementName":{ + "localPart":"constraints", + "namespaceURI":"" + } + } + } + } + ], + "typeType":"classInfo", + "typeName":{ + "localPart":"lifelinesType", + "namespaceURI":"http://ns.ecomp.com/asdc/sequencer" + }, + "propertiesOrder":[ + "lifeline", + "constraints" + ] + }, + "EntityType.Notes":{ + "type":"object", + "title":"EntityType.Notes", + "properties":{ + "note":{ + "title":"note", + "allOf":[ + { + "type":"array", + "items":{ + "$ref":"http://www.jsonix.org/jsonschemas/w3c/2001/XMLSchema.jsonschema#/definitions/string" + }, + "minItems":0 + } + ], + "propertyType":"element", + "elementName":{ + "localPart":"note", + "namespaceURI":"" + } + } + }, + "typeType":"classInfo", + "propertiesOrder":[ + "note" + ] + }, + "MetadataType":{ + "allOf":[ + { + "$ref":"#/definitions/EntityType" + }, + { + "type":"object", + "title":"MetadataType", + "properties":{ + } + } + ], + "typeType":"classInfo", + "typeName":{ + "localPart":"metadataType", + "namespaceURI":"http://ns.ecomp.com/asdc/sequencer" + } + }, + "EntityType":{ + "type":"object", + "title":"EntityType", + "required":[ + "id", + "name" + ], + "properties":{ + "notes":{ + "title":"notes", + "allOf":[ + { + "$ref":"#/definitions/EntityType.Notes" + } + ], + "propertyType":"element", + "elementName":{ + "localPart":"notes", + "namespaceURI":"" + } + }, + "id":{ + "title":"id", + "allOf":[ + { + "$ref":"http://www.jsonix.org/jsonschemas/w3c/2001/XMLSchema.jsonschema#/definitions/string" + } + ], + "propertyType":"attribute", + "attributeName":{ + "localPart":"id", + "namespaceURI":"" + } + }, + "name":{ + "title":"name", + "allOf":[ + { + "$ref":"http://www.jsonix.org/jsonschemas/w3c/2001/XMLSchema.jsonschema#/definitions/string" + } + ], + "propertyType":"attribute", + "attributeName":{ + "localPart":"name", + "namespaceURI":"" + } + } + }, + "typeType":"classInfo", + "typeName":{ + "localPart":"entityType", + "namespaceURI":"http://ns.ecomp.com/asdc/sequencer" + }, + "propertiesOrder":[ + "notes", + "id", + "name" + ] + }, + "Diagram":{ + "type":"object", + "title":"Diagram", + "required":[ + "metadata", + "lifelines" + ], + "properties":{ + "metadata":{ + "title":"metadata", + "allOf":[ + { + "$ref":"#/definitions/MetadataType" + } + ], + "propertyType":"element", + "elementName":{ + "localPart":"metadata", + "namespaceURI":"" + } + }, + "lifelines":{ + "title":"lifelines", + "allOf":[ + { + "$ref":"#/definitions/LifelinesType" + } + ], + "propertyType":"element", + "elementName":{ + "localPart":"lifelines", + "namespaceURI":"" + } + } + }, + "typeType":"classInfo", + "propertiesOrder":[ + "metadata", + "lifelines" + ] + }, + "LifelineType":{ + "allOf":[ + { + "$ref":"#/definitions/EntityType" + }, + { + "type":"object", + "title":"LifelineType", + "properties":{ + "mandatory":{ + "title":"mandatory", + "allOf":[ + { + "$ref":"http://www.jsonix.org/jsonschemas/w3c/2001/XMLSchema.jsonschema#/definitions/boolean" + } + ], + "propertyType":"attribute", + "attributeName":{ + "localPart":"mandatory", + "namespaceURI":"" + } + } + } + } + ], + "typeType":"classInfo", + "typeName":{ + "localPart":"lifelineType", + "namespaceURI":"http://ns.ecomp.com/asdc/sequencer" + }, + "propertiesOrder":[ + "mandatory" + ] + } + }, + "anyOf":[ + { + "type":"object", + "properties":{ + "name":{ + "allOf":[ + { + "$ref":"http://www.jsonix.org/jsonschemas/w3c/2001/XMLSchema.jsonschema#/definitions/QName" + }, + { + "type":"object", + "properties":{ + "localPart":{ + "enum":[ + "diagram" + ] + }, + "namespaceURI":{ + "enum":[ + "http://ns.ecomp.com/asdc/sequencer" + ] + } + } + } + ] + }, + "value":{ + "$ref":"#/definitions/Diagram" + } + }, + "elementName":{ + "localPart":"diagram", + "namespaceURI":"http://ns.ecomp.com/asdc/sequencer" + } + } + ] +} \ No newline at end of file diff --git a/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/schema/asdc_sequencer_schema.json b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/schema/asdc_sequencer_schema.json new file mode 100644 index 0000000000..d655826290 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/schema/asdc_sequencer_schema.json @@ -0,0 +1,582 @@ + +{ + "id":"#", + "definitions":{ + "EntityType.Notes":{ + "type":"object", + "title":"EntityType.Notes", + "properties":{ + "note":{ + "title":"note", + "allOf":[ + { + "type":"array", + "items":{ + "$ref":"http://www.jsonix.org/jsonschemas/w3c/2001/XMLSchema.jsonschema#/definitions/string" + }, + "minItems":0 + } + ], + "propertyType":"element", + "elementName":{ + "localPart":"note", + "namespaceURI":"" + } + } + }, + "typeType":"classInfo", + "propertiesOrder":[ + "note" + ] + }, + "GuardType":{ + "type":"object", + "title":"GuardType", + "required":[ + "guard", + "steps" + ], + "properties":{ + "guard":{ + "title":"guard", + "allOf":[ + { + "$ref":"http://www.jsonix.org/jsonschemas/w3c/2001/XMLSchema.jsonschema#/definitions/string" + } + ], + "propertyType":"element", + "elementName":{ + "localPart":"guard", + "namespaceURI":"" + } + }, + "steps":{ + "title":"steps", + "allOf":[ + { + "$ref":"#/definitions/StepsType" + } + ], + "propertyType":"element", + "elementName":{ + "localPart":"steps", + "namespaceURI":"" + } + } + }, + "typeType":"classInfo", + "typeName":{ + "localPart":"guardType", + "namespaceURI":"http://ns.ecomp.com/asdc/sequencer" + }, + "propertiesOrder":[ + "guard", + "steps" + ] + }, + "MetadataType":{ + "allOf":[ + { + "$ref":"#/definitions/EntityType" + }, + { + "type":"object", + "title":"MetadataType", + "properties":{ + } + } + ], + "typeType":"classInfo", + "typeName":{ + "localPart":"metadataType", + "namespaceURI":"http://ns.ecomp.com/asdc/sequencer" + } + }, + "OccurrencesType":{ + "type":"object", + "title":"OccurrencesType", + "properties":{ + "start":{ + "title":"start", + "allOf":[ + { + "type":"array", + "items":{ + "$ref":"http://www.jsonix.org/jsonschemas/w3c/2001/XMLSchema.jsonschema#/definitions/string" + } + } + ], + "propertyType":"attribute", + "attributeName":{ + "localPart":"start", + "namespaceURI":"" + } + }, + "stop":{ + "title":"stop", + "allOf":[ + { + "type":"array", + "items":{ + "$ref":"http://www.jsonix.org/jsonschemas/w3c/2001/XMLSchema.jsonschema#/definitions/string" + } + } + ], + "propertyType":"attribute", + "attributeName":{ + "localPart":"stop", + "namespaceURI":"" + } + } + }, + "typeType":"classInfo", + "typeName":{ + "localPart":"occurrencesType", + "namespaceURI":"http://ns.ecomp.com/asdc/sequencer" + }, + "propertiesOrder":[ + "start", + "stop" + ] + }, + "Diagram":{ + "type":"object", + "title":"Diagram", + "required":[ + "metadata", + "lifelines", + "steps" + ], + "properties":{ + "metadata":{ + "title":"metadata", + "allOf":[ + { + "$ref":"#/definitions/MetadataType" + } + ], + "propertyType":"element", + "elementName":{ + "localPart":"metadata", + "namespaceURI":"" + } + }, + "lifelines":{ + "title":"lifelines", + "allOf":[ + { + "$ref":"#/definitions/LifelinesType" + } + ], + "propertyType":"element", + "elementName":{ + "localPart":"lifelines", + "namespaceURI":"" + } + }, + "steps":{ + "title":"steps", + "allOf":[ + { + "$ref":"#/definitions/StepsType" + } + ], + "propertyType":"element", + "elementName":{ + "localPart":"steps", + "namespaceURI":"" + } + } + }, + "typeType":"classInfo", + "propertiesOrder":[ + "metadata", + "lifelines", + "steps" + ] + }, + "LifelineType":{ + "allOf":[ + { + "$ref":"#/definitions/EntityType" + }, + { + "type":"object", + "title":"LifelineType", + "properties":{ + } + } + ], + "typeType":"classInfo", + "typeName":{ + "localPart":"lifelineType", + "namespaceURI":"http://ns.ecomp.com/asdc/sequencer" + } + }, + "LifelinesType":{ + "allOf":[ + { + "$ref":"#/definitions/EntityType" + }, + { + "type":"object", + "title":"LifelinesType", + "properties":{ + "lifeline":{ + "title":"lifeline", + "allOf":[ + { + "type":"array", + "items":{ + "$ref":"#/definitions/LifelineType" + }, + "minItems":0 + } + ], + "propertyType":"element", + "elementName":{ + "localPart":"lifeline", + "namespaceURI":"" + } + } + } + } + ], + "typeType":"classInfo", + "typeName":{ + "localPart":"lifelinesType", + "namespaceURI":"http://ns.ecomp.com/asdc/sequencer" + }, + "propertiesOrder":[ + "lifeline" + ] + }, + "FragmentType":{ + "type":"object", + "title":"FragmentType", + "properties":{ + "start":{ + "title":"start", + "allOf":[ + { + "$ref":"http://www.jsonix.org/jsonschemas/w3c/2001/XMLSchema.jsonschema#/definitions/boolean" + } + ], + "propertyType":"attribute", + "attributeName":{ + "localPart":"start", + "namespaceURI":"" + } + }, + "stop":{ + "title":"stop", + "allOf":[ + { + "$ref":"http://www.jsonix.org/jsonschemas/w3c/2001/XMLSchema.jsonschema#/definitions/string" + } + ], + "propertyType":"attribute", + "attributeName":{ + "localPart":"stop", + "namespaceURI":"" + } + }, + "operation":{ + "title":"operation", + "allOf":[ + { + "$ref":"http://www.jsonix.org/jsonschemas/w3c/2001/XMLSchema.jsonschema#/definitions/string" + } + ], + "propertyType":"attribute", + "attributeName":{ + "localPart":"operation", + "namespaceURI":"" + } + }, + "guard":{ + "title":"guard", + "allOf":[ + { + "$ref":"http://www.jsonix.org/jsonschemas/w3c/2001/XMLSchema.jsonschema#/definitions/string" + } + ], + "propertyType":"attribute", + "attributeName":{ + "localPart":"guard", + "namespaceURI":"" + } + } + }, + "typeType":"classInfo", + "typeName":{ + "localPart":"fragmentType", + "namespaceURI":"http://ns.ecomp.com/asdc/sequencer" + }, + "propertiesOrder":[ + "start", + "stop", + "operation", + "guard" + ] + }, + "StepsType":{ + "required":[ + "message" + ], + "allOf":[ + { + "$ref":"#/definitions/EntityType" + }, + { + "type":"object", + "title":"StepsType", + "properties":{ + "message":{ + "title":"message", + "allOf":[ + { + "type":"array", + "items":{ + "$ref":"#/definitions/MessageType" + }, + "minItems":1 + } + ], + "propertyType":"element", + "elementName":{ + "localPart":"message", + "namespaceURI":"" + } + } + } + } + ], + "typeType":"classInfo", + "typeName":{ + "localPart":"stepsType", + "namespaceURI":"http://ns.ecomp.com/asdc/sequencer" + }, + "propertiesOrder":[ + "message" + ] + }, + "EntityType":{ + "type":"object", + "title":"EntityType", + "required":[ + "id", + "name" + ], + "properties":{ + "notes":{ + "title":"notes", + "allOf":[ + { + "$ref":"#/definitions/EntityType.Notes" + } + ], + "propertyType":"element", + "elementName":{ + "localPart":"notes", + "namespaceURI":"" + } + }, + "id":{ + "title":"id", + "allOf":[ + { + "$ref":"http://www.jsonix.org/jsonschemas/w3c/2001/XMLSchema.jsonschema#/definitions/string" + } + ], + "propertyType":"attribute", + "attributeName":{ + "localPart":"id", + "namespaceURI":"" + } + }, + "ref":{ + "title":"ref", + "allOf":[ + { + "$ref":"http://www.jsonix.org/jsonschemas/w3c/2001/XMLSchema.jsonschema#/definitions/string" + } + ], + "propertyType":"attribute", + "attributeName":{ + "localPart":"ref", + "namespaceURI":"" + } + }, + "name":{ + "title":"name", + "allOf":[ + { + "$ref":"http://www.jsonix.org/jsonschemas/w3c/2001/XMLSchema.jsonschema#/definitions/string" + } + ], + "propertyType":"attribute", + "attributeName":{ + "localPart":"name", + "namespaceURI":"" + } + } + }, + "typeType":"classInfo", + "typeName":{ + "localPart":"entityType", + "namespaceURI":"http://ns.ecomp.com/asdc/sequencer" + }, + "propertiesOrder":[ + "notes", + "id", + "ref", + "name" + ] + }, + "MessageType":{ + "required":[ + "to", + "from" + ], + "allOf":[ + { + "$ref":"#/definitions/EntityType" + }, + { + "type":"object", + "title":"MessageType", + "properties":{ + "occurrences":{ + "title":"occurrences", + "allOf":[ + { + "$ref":"#/definitions/OccurrencesType" + } + ], + "propertyType":"element", + "elementName":{ + "localPart":"occurrences", + "namespaceURI":"" + } + }, + "fragment":{ + "title":"fragment", + "allOf":[ + { + "$ref":"#/definitions/FragmentType" + } + ], + "propertyType":"element", + "elementName":{ + "localPart":"fragment", + "namespaceURI":"" + } + }, + "to":{ + "title":"to", + "allOf":[ + { + "$ref":"http://www.jsonix.org/jsonschemas/w3c/2001/XMLSchema.jsonschema#/definitions/string" + } + ], + "propertyType":"attribute", + "attributeName":{ + "localPart":"to", + "namespaceURI":"" + } + }, + "from":{ + "title":"from", + "allOf":[ + { + "$ref":"http://www.jsonix.org/jsonschemas/w3c/2001/XMLSchema.jsonschema#/definitions/string" + } + ], + "propertyType":"attribute", + "attributeName":{ + "localPart":"from", + "namespaceURI":"" + } + }, + "type":{ + "title":"type", + "allOf":[ + { + "$ref":"http://www.jsonix.org/jsonschemas/w3c/2001/XMLSchema.jsonschema#/definitions/string" + } + ], + "propertyType":"attribute", + "attributeName":{ + "localPart":"type", + "namespaceURI":"" + } + }, + "asynchronous":{ + "title":"asynchronous", + "allOf":[ + { + "$ref":"http://www.jsonix.org/jsonschemas/w3c/2001/XMLSchema.jsonschema#/definitions/boolean" + } + ], + "propertyType":"attribute", + "attributeName":{ + "localPart":"asynchronous", + "namespaceURI":"" + } + } + } + } + ], + "typeType":"classInfo", + "typeName":{ + "localPart":"messageType", + "namespaceURI":"http://ns.ecomp.com/asdc/sequencer" + }, + "propertiesOrder":[ + "occurrences", + "fragment", + "to", + "from", + "type", + "asynchronous" + ] + } + }, + "anyOf":[ + { + "type":"object", + "properties":{ + "name":{ + "allOf":[ + { + "$ref":"http://www.jsonix.org/jsonschemas/w3c/2001/XMLSchema.jsonschema#/definitions/QName" + }, + { + "type":"object", + "properties":{ + "localPart":{ + "enum":[ + "diagram" + ] + }, + "namespaceURI":{ + "enum":[ + "http://ns.ecomp.com/asdc/sequencer" + ] + } + } + } + ] + }, + "value":{ + "$ref":"#/definitions/Diagram" + } + }, + "elementName":{ + "localPart":"diagram", + "namespaceURI":"http://ns.ecomp.com/asdc/sequencer" + } + } + ] +} \ No newline at end of file diff --git a/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/templates/default.metamodel.json b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/templates/default.metamodel.json new file mode 100644 index 0000000000..f6a28a8723 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/templates/default.metamodel.json @@ -0,0 +1,17 @@ +{ + "diagram": { + "metadata": { + "id": "$", + "name": "Blank Sequence" + + }, + "lifelines": { + "lifelines": [], + "constraints": { + "create": true, + "delete": true, + "reorder": true + } + } + } +} diff --git a/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/templates/default.model.json b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/templates/default.model.json new file mode 100644 index 0000000000..42edc5516b --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/lib/ecomp/asdc/sequencer/model/templates/default.model.json @@ -0,0 +1,11 @@ +{ + "diagram": { + "metadata": { + "id": "$", + "name": "New Sequence" + + }, + "lifelines": [], + "steps": [] + } +} diff --git a/dox-sequence-diagram-ui/src/main/webapp/lib/main.jsx b/dox-sequence-diagram-ui/src/main/webapp/lib/main.jsx new file mode 100644 index 0000000000..33a62f7228 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/lib/main.jsx @@ -0,0 +1,35 @@ +/*! + * 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. + */ + +import React from 'react'; +import { render } from 'react-dom'; +import Sequencer from './ecomp/asdc/sequencer/Sequencer'; +import '../res/ecomp/asdc/sequencer/sequencer-development.scss'; +import '../res/thirdparty/react-select/react-select.min.css'; + +function renderApplication() { + const shell = document.createElement('div'); + shell.setAttribute('style', 'height:100%;width:100%;margin:0;padding:0'); + document.body.appendChild(shell); + const options = { demo: true }; + render(, shell); +} + +if (window.addEventListener) { + window.addEventListener('DOMContentLoaded', renderApplication); +} else { + window.attachEvent('onload', renderApplication); +} diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/common/_typography.scss b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/common/_typography.scss new file mode 100644 index 0000000000..5d23eff34f --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/common/_typography.scss @@ -0,0 +1,25 @@ +/* Fonts */ +@font-face { + font-family: Omnes-Light; + src: url('ecomp/asdc/common/fonts/omnes-att-light.otf'); +} + +@font-face { + font-family: Omnes-Regular; + src: url('ecomp/asdc/common/fonts/omnes-att-regular.otf'); +} + +@font-face { + font-family: Omnes-Medium; + src: url('ecomp/asdc/common/fonts/omnes-att-medium.otf'); +} + +@font-face { + font-family: Omnes-Bold; + src: url('ecomp/asdc/common/fonts/omnes-att-bold.otf'); +} + +$base-font-regular: omnes-regular, "Omnes-Regular"; +$base-font-light: omnes-light, "Omnes-Light"; +$base-font-medium: omnes-medium, "Omnes-Medium"; +$base-font-bold: omnes-bold, "Omnes-Bold"; diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/common/_variables.scss b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/common/_variables.scss new file mode 100644 index 0000000000..1880ac3047 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/common/_variables.scss @@ -0,0 +1,44 @@ + +// primary colors +$blue: #009fdb; +$dark-blue: #0568ae; +$light-blue: #71c5e8; +$green: #4ca90c; +$dark-green: #007a3e; +$light-green: #b5bd00; +$orange: #ea7400; +$yellow: #ffb81c; +$dark-purple: #702f8a; +$purple: #9063cd; +$light-purple: #caa2dd; +$black: #000000; +$dark-gray: #5a5a5a; +$gray: #959595; +$light-gray: #d2d2d2; +$white: #ffffff; + +// Secondary Colors +$red: #cf2a2a; +$background-gray: #f2f2f2; +$text-black: #191919; +$link-blue: #056bae; +$functional-green: #007a3e; +$functional-yellow: #ffb81c; +$tlv-gray: #f8f8f8; +$tlv-light-gray: #eaeaea; +$tlv-hover: #e6f6fb; + + +$scroll-bar-color: $dark-gray; + +//responsive @media params +$tablet-max-width: 1024px; +$laptop-min-width: 1224px; +$desktop-min-width: 1824px; + +/* Textures */ +$images-folder-name: "../images"; +$plus-circle-icon: $images-folder-name + "/plus-circle-icon.svg"; +$interface-icon: $images-folder-name + "/interface.svg"; +$sdc-logo: $images-folder-name + "/logo.svg"; +$warning-icon: $images-folder-name + "/warning.svg"; diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/common/fonts/omnes-att-bold-italic.otf b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/common/fonts/omnes-att-bold-italic.otf new file mode 100644 index 0000000000000000000000000000000000000000..77f0dbc15fdfbdeb2b649525d2cf23a170ba1199 GIT binary patch literal 138100 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 dur= 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%0AcixvEdE7kysb?@WIe^*~)M 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

w6cT0h~qH zjb{&>NZ5mC63!*;1(&bE{$z&YSM@8KPX<)$b!hU@p8Kr+oj2^WqTY_8~m?^Wlv+ zv*zei32qVYaKgux!1j7n=WiI>v4LNCu{`(RU4bQ<#bH(>p zJli~!0~MpO zQspe@7_3)02Rat3R?dSyi?u5k(BrK1xrgIAL`SO;`TPY|f<++)YYgn<;Yi0IB5O3P z=E6#|Sf6k4yKz|YauIYq*1cQ;4ae%27eJp;{T-_a)jsKn*Hn$UqB;M92$hZSy1nB2U+TxP z8s`@B3lQV^J>ph2!54SO_rKMXuv+ID-cKPSKYu_p%Vv1!UiJMqa*7ZM`Xi!Sw!mZe z8WuX~5V3tx{S%^Hw!(w=x}OSG5FgbmXoV?imFf=Y6IfUDD%$d#svgJlSW$p=w?4jp zt5uxpD$3_z&C%ZY9wN_=s=r3m&hzj@Ui1A2@)jWq_>}sOh@e;puh2`rzu_9f zj`2bt5v6Wbzw0{yu>{%hk9>!^{iaI7k;jS#wa)`pGLHX+6%uN!k+5Nrm5-_%N0q8l zSa7AP!f}Ku4aXo=7LLKHY#a@$92||RTpUBNPEL)r6gzPor;5UHyeb;Ua8)dhPpJ0d zI89ZJ<8)OGjx$w>IBrteQAgM#u=YiT)h{ZnuTf#0jY>5R|H4YOT+nb(4QL4HdC-}t zrC57qy@e-HVYPt@t7KGICxc~=_`eGtEA>>t_{Yj6l@WQb;Q!zFzk~l*ktf)qUIP^t z>Hrj~C-5(<0iKS0f6z^!=X})axxfR~g+gag6OBPl^aC}~2Gm3sP?K?AO-6k+8S~Y` z2#@nIy5lH}>}oQutA$Y=0bEXu>D@pT8NWfvNR3fnpaL3v#gQ45jK82{gasAHQD1S~ z1W!gsP%;LBl93K~6Gk^R8QaukWK)xIO-)8MH5swgq%TvGo=i>pF}2u>kv>UHdL%XJ zkJMssMEVsq=|!*>57MC~a;PT#iJJ62YOJ8UiF`qB)uP0Rx|r(USVe|KlaM_K93)RI z${p#u)I`SAq!&(QPWRD z)b!I2HT|?hO+VdG(@!hZ^cw**{d7c4KkZP{Z^Y8{(-k%SG(}B6JyFw7OVsq!5jFiZ zL`^^aP}5I4)b!I0HT^V0O+UR*(@!JR^cycV{q#dkKkZP{PdC)`(+V~H##&839Z}O) z>%#l)qtk%zqsxHrtHWseX)v0;`U}p#r2g4=tnW5om+u>XnD?reDQCCfmn&zp;8!ST zvEZNUGi%jgPN|qtqWpQ~91{F0rM?1wwQ>dtevNXz2!5?{W(a%KrksUopmQlTE)8a7$~l<^^D*UYOoJ7LN)1ti*_m=~ror4yIWyB> zW~Q8%X)rHS&dM~Hl_}?B8qCR*GcpZkWXk!N2Jk>PhX7xooI8Lo>@#Q3V9ubNF=#MjP|O!_e#!rkH;dPrgmS@tZ;3ysG<175Jjcq}pCg_(nA-T+>( z#CYs5-~|he$NmCdu(x=uE#L*~ipRDBUa+NjEGgh&5mDGf1bK6Mtsy9f9YkRT5#-IS zuz?8j)}XL}2=dmbuzv{h)}*k02=dmfuzd*f)}pX_2=dmdnBfTW)~2w52=dmhuzm>g z)}fe@3G&vdu!RWn)}^q72=dmgu!9Kl)}ye32=dmeuz?8jwohRJ5#(*Z!u}!1+X033 zLy)(F3fqSuZ-*3?4?*4zE9@SEyd6b4fwoPAhC6g1nvaS{3lVF>CkE*}-GB?wzZH$1GhjM;GMnf?|d)$lFEl z{2b?(s4w*!-(bI$t+yyA_FCCm3!d0%Wh*UsVwd$;Wkq?rDqBoZPOPM|jTAhYk<0UO z@We(cTS&nZi>Pc51y5|BvgH#znW@Y3bnwLTDce246N{&8?*vcmo3eEiJh5iVwoLHE zb}3sf!HX71+5Sl64I`XneMGrvca*J;MBXsM$u>tKZy4cZizAUYjBv8Ok;ofHIN91r zi2q#+$L5l*%`5_!W2C)*r}ykUfsEsjLqFv7|9Mj~$*;bdzgkvEKRvaONG z8%8+U(n#bDBb;n!B=Uw4PPQ--dBX@N+h2&hVT6@`e#kvf|-=i&iqpMh0HAj!CvL@S;^rwuupW!w4r^#E86M zgp=%HI3Mzc5l*R3ivAMfEkU{LA0gfm@UmZoctya=eh|?MBFP&@IO3r|x$Ko7J_+!$ z1&r9gz{@@f;*kI^dmxDa0le&MAf5*BvSp0e#lXv+2I6M`FMAk>e*wJgPaxg|@Ur)S z_zu9!z5?PY054noMSH(2Zz|E+k8)Ao)RL87mN#F?#xKj8pJd^e<&Bc;`?9>zl67B} zH;rW5m*vf0vg*t7HbAoA$?~R^Z2Ypk=_KpEEN=rPi=!-WgCtwOEN=mlrC*k}!IGU{ zmbZr_E59snLnIr&EN??43%@LHfxe=BUzWFFl67B}H@#%rm*s7^WZ9SHZG>dkm*p); zvgph57A)C2WqC75_I+92jFNR0UP$n=yiFipN3Xm+EO-P_F3Z~^f)5b9EN_nr_Ga+1yiF85fZ%0$dra{6ftTg& zalx|(UY55>f*l&XEN_zqzaDs5-lhotJn*u-Jt27Sz{~PBRq)k;m*s7m;F$w2%iDC~ zU-Qb_lY(~*<+8lZAYL`EygfyHYF>GJnt0T_@-~zB)4cNb4DqIUi?W z%G+#WG55;b9O6^+%G+GxP4mjzJYwPZ%G-S6Tl31>0^(Wo%G*NXSM$o-BH~r^%G+Y% zQ}fE(65>(w%G*-nPxH##GU841%G+|{OY_Rx3gSug%G-0qkLH!PmBfSQmAB`Kf59tn ztB60%D{rfbH_a<=Yltt+D{pIw7tJeg>xgf{D{t$GPt7ZD8w4*E-nT4o8wDQ_cv;>y z3BDijvb=33J|C~VZ6O{Xue@y){5?2dmbYyldx

+xyAej(+mCv!A?0z{{_cw_W|@ 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

bu)hv=0VC(AF9l9s>I?f2IK+^EUhOSq zZXpHnJSPh<{`>+XZ!cYf4Ny0N4Kv(3kn>~$VZdihxH4s5v}I);?mBvm=|?$$R`?n0Er z_ujmFI*l||C!e&6$c95p52kMwkjK=o!A{*5l=K6CQaS z^*QwOaT0VXaAMBedu5XtCBD}D8p?ujw7Dc<2df2;ZlslJy}_*4(PUA%xGX=Py~DmA zrBIm+Iw1-1G8AQ`9zDz>X)9b%kb!3d2Z@T>5|>BVl2!$Z1Wt|J=7lIi7Q$Pc2Y~vJ z;jnp&a9AO4kr`*eJ%^I~GkWH?NjF()>rR7m7juNP_;6p)m+gBcXmVFya*w$}2f>8! zHS7&En;=1pI1+R}B>VK<^MO9+$x6xw0dvSZ@Kwz^L3RZeNl1mcR9{OKaa zOI0={Wr7G+_+E>wtgZ33QC-!UyEZ28TuTyKeV$$`)c7O-GVO3w(&TBBf0_inw->e^ zJ%?1_<@?F`H{O0D;lRR;NiuORK3WY71POns4rZBbI9d$S4FEbS?6M7HIY8$>A?iy) zR0N}u>_Wr4o+Pc+r3~44wI!qN?tyokz$BYIxNqN~gNggMZcR+wLUy*+cb#g=O4^>B zvW~oP==kZwb$d3yx@F^P@{1eYU%k8j;`DK|XOAZHO;DwY1Ra8f>muQUF>>T2c%A`c zAwem&l}EzX3!Z5tfSk(pWI0@i>q#(JZYGT$Q~%rPS8`Vfm%^5F>>M9-3k5DW$v^l# z@d0OB45;Pu^WEvyu;@4N`jY3+lnW$dvlYADLa*9Na<+{$%1z1w;K!v-rWzFfrD~dl h4a`r%J!U1zE!SD02V4()fJc8K`JiYd`}FDa{{ZQz8!`X@ literal 0 HcmV?d00001 diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/common/fonts/omnes-att-light-Italic.otf b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/common/fonts/omnes-att-light-Italic.otf new file mode 100644 index 0000000000000000000000000000000000000000..b13ae4fede8d0c9047c910c13acff6939fcd8194 GIT binary patch literal 139760 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 pE$lx9N#C7 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 literal 0 HcmV?d00001 diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/common/fonts/omnes-att-light.otf b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/common/fonts/omnes-att-light.otf new file mode 100644 index 0000000000000000000000000000000000000000..587d871e6ff95d485ddd6e6094c9e8b859294515 GIT binary patch literal 145516 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%0Aux1V{TS}dbzE~lAYp>r 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 PBt}gUSsE3DE*<{>?+b-2 literal 0 HcmV?d00001 diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/common/fonts/omnes-att-medium.otf b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/common/fonts/omnes-att-medium.otf new file mode 100644 index 0000000000000000000000000000000000000000..3085c1fa3927121fe971f0c858c0b21470ff9624 GIT binary patch literal 131984 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 z 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 i;c39F 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�XYuWVgAU`d%i}K&)3N8 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

-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 +
+
+
+
+ + +
+

jH0ya1ok3Pd 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 literal 0 HcmV?d00001 diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/common/fonts/omnes-att-bold.otf b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/common/fonts/omnes-att-bold.otf new file mode 100644 index 0000000000000000000000000000000000000000..136afca84c074c9c973e4b55710c5a02a42c4578 GIT binary patch literal 153056 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 AwEzGB literal 0 HcmV?d00001 diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/common/fonts/omnes-att-italic.otf b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/common/fonts/omnes-att-italic.otf new file mode 100644 index 0000000000000000000000000000000000000000..5dc1da79d46857af7f239aec763f85d08a1fb5f9 GIT binary patch literal 138748 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

+*/ + +.asdcs-control { + + $asdcsDialogIconSize: 70px; + $asdcsDialogWidth: 400px; + + .asdcs-overlay { + display: none; + position: fixed; + top: 0; + left: 0; + height: 100%; + width: 100%; + z-index: 5; + background-color: white; + opacity: 0.25; + pointer-events: all; + } + + .asdcs-dialog { + + position: fixed; + top: 50%; + left: 50%; + width: $asdcsDialogWidth; + margin-left: -($asdcsDialogWidth/2); + height: 300px; + margin-top: -150px; + background: $asdcsColorOneLight; + border: 1px solid $asdcsColorWhitish; + border-radius: $asdcsPopupBorderRadius; + z-index: 10; + + @include drop-shadow(); + + .asdcs-dialog-header { + position: absolute; + height: 60px; + line-height: 40px; + width: 100%; + box-sizing: border-box; + font-size: 14px; + font-weight: bold; + padding: 10px 15px; + } + + .asdcs-dialog-close { + position: absolute; + top: 15px; + right: 15px; + height: $asdcsSmallIconSize; + width: $asdcsSmallIconSize; + fill: $asdcsColorGrey; + cursor: pointer; + &:hover { + fill: $asdcsColorEmphasis; + } + } + + .asdcs-dialog-buttonbar { + + position: absolute; + height: 50px; + width: 100%; + bottom: 0; + //background-color: $asdcsColorOne; + text-align: right; + + button { + width: 75px; + border-radius: 4px; + border: none; + background-color: $asdcsColorTwo; + color: $asdcsColorWhite; + padding: 7px 10px; + margin: 10px 10px 10px 0px; + &:hover { + background-color: $asdcsColorTwoLight; + } + } + } + + .asdcs-dialog-icon { + position: absolute; + top: 80px; + left: 20px; + height: $asdcsDialogIconSize; + width: $asdcsDialogIconSize; + pointer-events: none; + fill: $asdcsColorOneDark; + + svg { + display: none; + } + + &.asdcs-icon-question { + svg.asdcs-icon-question { + display: block; + } + } + + &.asdcs-icon-exclaim { + svg.asdcs-icon-exclaim { + display: block; + } + } + + &.asdcs-icon-info { + svg.asdcs-icon-info { + display: block; + } + } + + &.asdcs-icon-edit { + svg.asdcs-icon-edit { + display: block; + } + } + } + + .asdcs-dialog-message { + position: absolute; + padding: 10px; + top: 90px; + height: 100px; + left: 100px; + width: $asdcsDialogWidth - 120px; + display: table-cell; + vertical-align: middle; + word-wrap: break-word; + text-overflow: ellipsis; + } + + .asdcs-dialog-text { + position:absolute; + padding: 10px; + top:60px; + height: 150px; + left:100px; + width: $asdcsDialogWidth - 130px; + textarea { + height:100%; + width:100%; + resize: none; + } + } + } +} diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sequencer-editor.scss b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sequencer-editor.scss new file mode 100644 index 0000000000..da35ba9182 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sequencer-editor.scss @@ -0,0 +1,125 @@ +.asdcs-control { + + div.asdcs-editor { + + $asdcsEditorResizeWidth: 6px; + $asdcsEditorToolbarPadding: 4px; + + box-sizing: border-box; + float: left; + height: 100%; + width: $asdcsEditorWidth; + overflow-x: hidden; + overflow-y: auto; + position: relative; + padding-right: $asdcsEditorResizeWidth; + + div.asdcs-editor-toolbar { + + display: none; + + height: 40px; + width: 100%; + + background-color: $asdcsColorOneDark; + text-align: center; + + .asdcs-editor-toolbar-demo { + padding: $asdcsEditorToolbarPadding; + display: inline; + float: left; + } + + .asdcs-editor-toolbar-toggle { + padding: $asdcsEditorToolbarPadding; + display: inline; + float: right; + } + + button { + + &.asdcs-button-mode { + + padding-left: 8px; + padding-right: 8px; + + &.asdcs-button-toggle-left { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + margin-right: -4px; + } + + &.asdcs-button-toggle-right { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + margin-left: -4px; + } + + &.asdcs-button-toggle-center { + border-radius: 0; + border-right: 1px solid lighten($asdcsColorOneDark, 3%); + border-left: 1px solid lighten($asdcsColorOneDark, 3%); + } + + &.asdcs-active { + background-color: $asdcsColorButtonBGHover; + } + + &:hover { + border-color: transparent; + @include transition(border-color $asdcsTransitionTime ease); + } + } + + svg { + height: $asdcsSmallIconSize; + width: $asdcsSmallIconSize; + fill: $asdcsColorWhitish; + } + } + } + + div.asdcs-editor-content { + + height: 100%; + width: 100%; + overflow-x: hidden; + overflow-y: auto; + + div.asdcs-editor-code { + display:none; + height: 100%; + width: 100%; + background-color: $asdcsColorWhitish; + textarea { + height: 100%; + } + .CodeMirror { + height: 100%; + } + } + + div.asdcs-editor-designer { + height: 100%; + width: 100%; + + .asdcs-designer-accordion { + height: 100%; + } + } + + } + + div.asdcs-editor-resize-handle { + background-color: $asdcsColorOne; + position: absolute; + top: 0; + right: 0; + height: 100%; + width: $asdcsEditorResizeWidth; + cursor: e-resize; + @include drop-shadow(); + + } + } +} diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sequencer-standalone.scss b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sequencer-standalone.scss new file mode 100644 index 0000000000..bd13af16e0 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sequencer-standalone.scss @@ -0,0 +1,2 @@ +@import 'sequencer-common.scss'; +@import 'sequencer-diagram-svg.scss'; diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites-raster.scss b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites-raster.scss new file mode 100644 index 0000000000..f23295399b --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites-raster.scss @@ -0,0 +1,30 @@ + +@mixin sprite-width($sprite) { + width: nth($sprite, 3); +} +@mixin sprite-height($sprite) { + height: nth($sprite, 4); +} +@function sprite-width($sprite) { + @return nth($sprite, 3); +} +@function sprite-height($sprite) { + @return nth($sprite, 4); +} +@mixin sprite-position($sprite) { + $sprite-offset-x: nth($sprite, 1); + $sprite-offset-y: nth($sprite, 2); + background-position: $sprite-offset-x $sprite-offset-y; +} +@mixin sprite($sprite, $display: block) { + @include sprite-position($sprite); + background-repeat: no-repeat; + overflow: hidden; + display: $display; + @include sprite-width($sprite); + @include sprite-height($sprite); +} + +.icon { + background-image: url('data:image/png;base64,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'); +} diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites.css.svg b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites.css.svg new file mode 100644 index 0000000000..ce02a1a41e --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites.css.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites.defs.svg b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites.defs.svg new file mode 100644 index 0000000000..81d66d69d0 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites.defs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites.png b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites.png new file mode 100644 index 0000000000000000000000000000000000000000..546a71c68142ec4b8c16ac99541e3882010e5c3e GIT binary patch literal 2251 zcmV;+2sHPJP))CdsuO$b2sX&9mY$^f;pvNFQszI+p}1km5Ry5TQt*J9DU zIWM2c3(oLV9{PgzUdnKh$OhitUNCLbycGM!H2O+-DEGjR9z8+_9slp;S9z$nw-3BL zJzy`DqM<>J^73+=Ek3V%Mi-ZXaB}E}qVwk=llj5lPli799Z^i}^A}5)o_zFZxVsL5 zQc;gzNLE&UMK@ks2@DtkZ!ZtDx3%EHg|fzHjmArY&rq*>mS3YQkvz^m8Ug3=cqaa}(_PN?}PrzTUMP zp58L}%RHfO(7@5r36ENvko@sF981q&wTA(WyU{#>F9QtQ<=}CHU52IAJ%XDoav2udpwd?EQ6g`gxZG>VQDRbokWZiCypUu)jFN6-YUF+z8O3Q za|mX3W(M{iOoK|@0IAd-F)_0-Av~14A{&K8#SEZ{NgsHU2X3N=x>`|*0nRQ+PFjgM zvu7cT#;;ht26gocg6o6CrSX^$GEN6HcELgh^ILjJ>6tlbX=#IprzhsjdLK^q{m4t7 zAdQ_L%U~YZzaJ;FbD?Q!hNq`D=FN@4x;3j&{Xr})U#mbs;7BAci$l$w8~F6=Z*b$* zZHPo-%$PnM(bHz2;`(*$P5mA*vu2^SQH3>|H=(lXCPX%3goTA;YGgRx$tytG(I0zb z$@+N#l}K!mlar0T2M(g>Vkt~aOwd6$>+0c&VLtD}!ouS5WVF5?wIMY%6^D=hz+@$~ ztimHEVuasd95|GUQw3+3{9;K7A|ocCU%$Sr{hISYOdK!A>4JRhO4);krWQ6&MP(&S zOwF)5Vaek;K#+&fgN7g{D+9as?1PFto-5a`U57PoVDSq-MD*kce6ndff`Wn|CeK{G z?F(e)=Id;59xWDG!p+r{$s8Q)(cDmrbXr|a&CN{4E&1A-`?&j{MmMgv3NN5P9XkT< z;EHUBFWd&Z!pF-ClOiL~*wkb&M+1d~%Icd2GPOnpg;E8js=+|sNM2=S(fMPI|IlHq zue7uj3bh876cf3^ZARRK-ML@O0CTe64eErDf4UG#S}lG0^x?$d0&PLz89bCtiY7WP*_kroSj^?Uqk@C*wmb-nTbdEOG)X(`nOD53v+Y$4w0dac4BT>zG%rxKh8|}$z+h)iFJ0{+S}po z?v4SDQr)I>v+4%88Apu_qzu9w?WDuqLvu?D0*Ajr8<-UN`Tu41O6h(Fxp~6JW3a(3 zz7ZHio7bNaJt>UIze!2K%&2!*z3g%+(*Bc%_+`sz&nTm?;cYPXSq)x56-p(XoSZO* za!6ZBC0txwuz1m8ObHu9Uem#3&zgi!UweBS_8dBbp~C_Yw=fpJ{f#s8%82j?{OQBF zohBYTZdvI?9Qy7!Mg+-`7{7?=a%tSO=xLM@yi2>a8e4a!urc}hd1$0;Vb#jz821)= zB$Z(_N9-SC(3dvby$8~m%tmaB1@k^Y^pr`g&7G!E7U1RKjw{!$>14fCcrE#@JHEu0 z4Qmk}ACEZ7{kXW+sA<5z_U^}f?@q^t&(`6`06B|sTwmA1NxGGjuD<%;Hmt`0CkKR5 zx)KuF={dC1;3_>(dz(E>O`q6a|H)eR5ivd_4CBU!vMISa6m_*&lJqf4?Koj}*3a1X z0`Q*!t4!WellBsMm}cxgVB*z+1CDD_A{@X#L7JYR4l~ndYKGSS6 z_q*qud*5wg=!lUftkP}iVMSmCW(8&iW(8&i_J5aNy?R-Jbyt4tHIP5ATgSq=Nx!(* zY<`Kr#9{~Ja$kDrHP#I4t{9C*Oh)6cE5qb+KYV3AxH>!2)~2Smww6m*%FVxfdiKZN z&4se^a{T>=5IDr2o&sDcFQ>es5`gfC2)w-ppj5Q-O+_U&wRPX~6C5-WxvvifeFs;s zegn2Pn4a_fF(hCp0sem2+u6~0vw@u4{O86W8xwbP*Z?56=+wCG(DXHG+_(V$SNkw_#+9K;+vu%8b$Z2@5RoO#5LkKokV zJVuTPLZ{Q>)Y}<5TN^&xwHuk-pFn>Z>NX91`nY54)RO*Q1}AcI0r2qb&x&QshzJ=$ zYilc=dOf|JdQ*1gGWNYhJj<+)dta8Mq!2wO9Hml$uA`GaZf@MadxwpiKO!f;$ZR`d z!eo}GE=FoE;z4sW5{VQCu|5Ahbb$36KL%j*>*GjYxfCafn3l(nv9lNBB$aUb^a+-& z&Ui6kzYiNt(#&ZTZzprDzJZ|N5LPTr zq50lTKKSf&Zr-_zSS(@sv}q(vole7z8|=&alEhiF=xkT9cJn40n{Fd^kPsam!<4uf z-Y705`}o)02PTy|P*_;NzC(v8tEfg01Wfe}c=^Z}?)MfVk?5(V07gAoSy>!C{uKa~ zRaL~qPGIDaK^!`g#ktap08~^~5*Irj7nj}uyyVfJ3FE>!Us}ShJ$q@>b|44>4ULTm zJ#1LBY_T~WAK750#6?n=pUbYj2T-+jZ3gxAH?S8wkh;RbZsrbMOP8&wKrSlYE(3)?o0hQ?dBEp%#)3WZXIQq^XmZ`bPRB@zG#95x()>gs9~ zY7KUFcIIYZS69cqhb;&~m+fx`bWO74`~{TiHhT8#*)^caMCpZ#JZg?7I5-H{j-T9@ zrW@C}-q2*>`)c`R=FY!te$Fo}V#bs>&Ybv?!gIx3xOj=9$G&3wjvYU(hb>>WlF4yV zh-_`p>U5~pDjFIa8Q9VLzB>uG6jW>Rb`= z-3PWJZ7nkTagH*^3l^Q*5V|Q;3#$E@slSOKEuPq!O%&;xvo;p z%-l(4=1zQNa^!MfMumm)dUz;{I&>s2N$dVOY)r%`nr=4o_uYG_tf@uara@$DOTb`% z^m;wUpW%FzpL4S7nBeb^vy;R;uHIn4+uNIdeVolr|8~<&jKHXnVC-ydF&GROjYf1G z9R!bf6?a!>N=p9SRpK?Z3>YZG&u5T@zgL4p$yoa*5++6i@cEuS%!q#jfSPO7WdAFh z)TK))tEj^sQJH>a`T!wkL-3P*U_bG|Fj)eC|} zN&R)hdiuG$5fvRnWK^`dA6~Do$DntmM~`of*T26GcQ+TtMMg7rT$Fh{#gi5mr@e;?Zt=q^*U&ZRQRiv$2X&&$4gS+g= z-2Gf&!t?I*y?uNc9Ug|%!GSxsZ*kyA768+y&%oJ1#3z5-jeo#UUUGBhOm3dVyMckf z!$~S8zp%(c9~2afjbNg<^!#^v%WDJ%3`P)4R8~}ylb6q^uu*8#N{cTGfRKuR$x|OR$x|OR1IQl00000NkvXXu0mjfvEAGk literal 0 HcmV?d00001 diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/arrow/request-async.svg b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/arrow/request-async.svg new file mode 100644 index 0000000000..11c5086198 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/arrow/request-async.svg @@ -0,0 +1,59 @@ + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/arrow/request-sync.svg b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/arrow/request-sync.svg new file mode 100644 index 0000000000..d7410035a4 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/arrow/request-sync.svg @@ -0,0 +1,26 @@ + + + + + + + + diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/arrow/response.svg b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/arrow/response.svg new file mode 100644 index 0000000000..3429077f21 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/arrow/response.svg @@ -0,0 +1,27 @@ + + + + + + + + diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/blank.svg b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/blank.svg new file mode 100644 index 0000000000..9ecbff0eca --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/blank.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/close.svg b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/close.svg new file mode 100644 index 0000000000..2fd91dea94 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/close.svg @@ -0,0 +1,27 @@ + + + + + + + + diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/collapsed.svg b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/collapsed.svg new file mode 100644 index 0000000000..2865518a49 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/collapsed.svg @@ -0,0 +1,28 @@ + + + + + + + + diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/delete.svg b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/delete.svg new file mode 100644 index 0000000000..2fd91dea94 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/delete.svg @@ -0,0 +1,27 @@ + + + + + + + + diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/download.svg b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/download.svg new file mode 100644 index 0000000000..1cc851b518 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/download.svg @@ -0,0 +1,29 @@ + + + + + + + + diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/edit.svg b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/edit.svg new file mode 100644 index 0000000000..f374e7c8d5 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/edit.svg @@ -0,0 +1,28 @@ + + + + + + + + diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/exclaim.svg b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/exclaim.svg new file mode 100644 index 0000000000..8194d819b1 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/exclaim.svg @@ -0,0 +1,27 @@ + + + + + + + + diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/expanded.svg b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/expanded.svg new file mode 100644 index 0000000000..0de9bffb93 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/expanded.svg @@ -0,0 +1,27 @@ + + + + + + + + diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/fragment-default.svg b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/fragment-default.svg new file mode 100644 index 0000000000..5c7af09ea3 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/fragment-default.svg @@ -0,0 +1,22 @@ + + + + + + diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/fragment-start.svg b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/fragment-start.svg new file mode 100644 index 0000000000..6ea25b8c70 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/fragment-start.svg @@ -0,0 +1,26 @@ + + + + + + + + diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/fragment-stop.svg b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/fragment-stop.svg new file mode 100644 index 0000000000..47f055c873 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/fragment-stop.svg @@ -0,0 +1,27 @@ + + + + + + + + diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/handle.svg b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/handle.svg new file mode 100644 index 0000000000..c21a7dddb7 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/handle.svg @@ -0,0 +1,26 @@ + + + + + + + + diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/info.svg b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/info.svg new file mode 100644 index 0000000000..04a8b2f205 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/info.svg @@ -0,0 +1,27 @@ + + + + + + + + diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/notes.svg b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/notes.svg new file mode 100644 index 0000000000..29a663f602 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/notes.svg @@ -0,0 +1,28 @@ + + + + + + + + diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/occurrence-default.svg b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/occurrence-default.svg new file mode 100644 index 0000000000..a943b4acbc --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/occurrence-default.svg @@ -0,0 +1,27 @@ + + + + + + + + diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/occurrence-start.svg b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/occurrence-start.svg new file mode 100644 index 0000000000..df0e78377d --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/occurrence-start.svg @@ -0,0 +1,26 @@ + + + + + + + + diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/occurrence-stop.svg b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/occurrence-stop.svg new file mode 100644 index 0000000000..9b7aecc04e --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/occurrence-stop.svg @@ -0,0 +1,26 @@ + + + + + + + + diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/open.svg b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/open.svg new file mode 100644 index 0000000000..779c20e471 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/open.svg @@ -0,0 +1,29 @@ + + + + + + + + diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/plus.svg b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/plus.svg new file mode 100644 index 0000000000..7854624a97 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/plus.svg @@ -0,0 +1,28 @@ + + + + + + + + diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/question.svg b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/question.svg new file mode 100644 index 0000000000..9cd19eda9a --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/question.svg @@ -0,0 +1,27 @@ + + + + + + + + diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/save.svg b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/save.svg new file mode 100644 index 0000000000..e71a3a3cae --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/save.svg @@ -0,0 +1,27 @@ + + + + + + + + diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/settings.svg b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/settings.svg new file mode 100644 index 0000000000..255980690a --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/settings.svg @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/upload.svg b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/upload.svg new file mode 100644 index 0000000000..453f8418b9 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/upload.svg @@ -0,0 +1,28 @@ + + + + + + + + diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/validate.svg b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/validate.svg new file mode 100644 index 0000000000..35cc9fa418 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/res/ecomp/asdc/sequencer/sprites/icon/validate.svg @@ -0,0 +1,27 @@ + + + + + + + + diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/sdc-sequencer.scss b/dox-sequence-diagram-ui/src/main/webapp/res/sdc-sequencer.scss new file mode 100644 index 0000000000..bcb01d2253 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/res/sdc-sequencer.scss @@ -0,0 +1,87 @@ +@import 'ecomp/asdc/sequencer/sequencer-common.scss'; + +.asdcs-control { + + width: 100%; + height: 100%; + min-height: $asdcsApplicationMinHeight; + + * { + outline: none; + line-height: initial; + text-align: initial; + } + + p, div, span, td, input, select, option { + font-size: $asdcsFontSize; + color: $asdcsColorOneDark; + padding: 0; + margin: 0; + } + + table { + border-collapse: initial; + border-spacing: initial; + } + + // SVG always fills its container. + + svg { + height:100%; + width: 100%; + } + + button { + + border-radius: 4px; + background-color: $asdcsColorButtonBG; + padding: 4px; + border: none; + color: $asdcsColorWhitish; + min-width: 30px; + min-height: 30px; + text-align: center; + vertical-align: middle; + + &:hover { + cursor: pointer; + background-color: $asdcsColorEmphasisHover; + color: $asdcsColorWhite; + @include transition(background-color 250ms ease); + } + + &:disabled { + cursor: default; + background-color:gray; + color:darkGray; + } + + } + + form { + display: none; + } + + ::-webkit-scrollbar { + width: 10px; + } + + ::-webkit-scrollbar-track { + border-radius: 0; + background-color: $asdcsColorOneLight; + } + + ::-webkit-scrollbar-thumb { + border-radius: 6px; + margin:1px; + background-color: $asdcsColorOne; + } +} + +@import 'ecomp/asdc/sequencer/sequencer-controls.scss'; +@import 'ecomp/asdc/sequencer/sequencer-diagram.scss'; +@import 'ecomp/asdc/sequencer/sequencer-editor.scss'; +@import 'ecomp/asdc/sequencer/sequencer-dialog.scss'; +@import 'ecomp/asdc/sequencer/sequencer-designer.scss'; +@import 'ecomp/asdc/sequencer/sequencer-actions.scss'; + diff --git a/dox-sequence-diagram-ui/src/main/webapp/res/thirdparty/react-select/react-select.min.css b/dox-sequence-diagram-ui/src/main/webapp/res/thirdparty/react-select/react-select.min.css new file mode 100644 index 0000000000..f1fa71dec4 --- /dev/null +++ b/dox-sequence-diagram-ui/src/main/webapp/res/thirdparty/react-select/react-select.min.css @@ -0,0 +1 @@ +.Select,.Select-control{position:relative}.Select-arrow-zone,.Select-clear-zone,.Select-loading-zone{text-align:center;cursor:pointer}.Select,.Select div,.Select input,.Select span{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.Select.is-disabled>.Select-control{background-color:#f9f9f9}.Select.is-disabled>.Select-control:hover{box-shadow:none}.Select.is-disabled .Select-arrow-zone{cursor:default;pointer-events:none}.Select-control{background-color:#fff;border-radius:4px;border:1px solid #ccc;color:#333;cursor:default;display:table;height:36px;outline:0;overflow:hidden;width:100%}.is-searchable.is-focused:not(.is-open)>.Select-control,.is-searchable.is-open>.Select-control{cursor:text}.Select-control:hover{box-shadow:0 1px 0 rgba(0,0,0,.06)}.is-open>.Select-control{border-bottom-right-radius:0;border-bottom-left-radius:0;background:#fff;border-color:#b3b3b3 #ccc #d9d9d9}.is-open>.Select-control>.Select-arrow{border-color:transparent transparent #999;border-width:0 5px 5px}.is-focused:not(.is-open)>.Select-control{border-color:#007eff;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 0 3px rgba(0,126,255,.1)}.Select--single>.Select-control .Select-value,.Select-placeholder{bottom:0;color:#aaa;left:0;line-height:34px;padding-left:10px;padding-right:10px;position:absolute;right:0;top:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.has-value.Select--single>.Select-control>.Select-value .Select-value-label,.has-value.is-pseudo-focused.Select--single>.Select-control>.Select-value .Select-value-label{color:#333}.has-value.Select--single>.Select-control>.Select-value a.Select-value-label,.has-value.is-pseudo-focused.Select--single>.Select-control>.Select-value a.Select-value-label{cursor:pointer;text-decoration:none}.has-value.Select--single>.Select-control>.Select-value a.Select-value-label:focus,.has-value.Select--single>.Select-control>.Select-value a.Select-value-label:hover,.has-value.is-pseudo-focused.Select--single>.Select-control>.Select-value a.Select-value-label:focus,.has-value.is-pseudo-focused.Select--single>.Select-control>.Select-value a.Select-value-label:hover{color:#007eff;outline:0;text-decoration:underline}.Select-input{height:34px;padding-left:10px;padding-right:10px;vertical-align:middle}.Select-input>input{width:100%;background:none;border:0;box-shadow:none;cursor:default;display:inline-block;font-family:inherit;font-size:inherit;margin:0;outline:0;line-height:14px;padding:8px 0 12px;-webkit-appearance:none}.Select-loading,.Select-loading-zone{width:16px;position:relative;vertical-align:middle}.is-focused .Select-input>input{cursor:text}.has-value.is-pseudo-focused .Select-input{opacity:0}.Select-control:not(.is-searchable)>.Select-input{outline:0}.Select-loading-zone{display:table-cell}.Select-loading{-webkit-animation:Select-animation-spin .4s infinite linear;-o-animation:Select-animation-spin .4s infinite linear;animation:Select-animation-spin .4s infinite linear;height:16px;box-sizing:border-box;border-radius:50%;border:2px solid #ccc;border-right-color:#333;display:inline-block}.Select-clear-zone{-webkit-animation:Select-animation-fadeIn .2s;-o-animation:Select-animation-fadeIn .2s;animation:Select-animation-fadeIn .2s;color:#999;display:table-cell;position:relative;vertical-align:middle;width:17px}.Select-clear-zone:hover{color:#D0021B}.Select-clear{display:inline-block;font-size:18px;line-height:1}.Select--multi .Select-clear-zone{width:17px}.Select-arrow-zone{display:table-cell;position:relative;vertical-align:middle;width:25px;padding-right:5px}.Select-arrow{border-color:#999 transparent transparent;border-style:solid;border-width:5px 5px 2.5px;display:inline-block;height:0;width:0}.Select-noresults,.Select-option{box-sizing:border-box;display:block;padding:8px 10px}.Select-arrow-zone:hover>.Select-arrow,.is-open .Select-arrow{border-top-color:#666}@-webkit-keyframes Select-animation-fadeIn{from{opacity:0}to{opacity:1}}@keyframes Select-animation-fadeIn{from{opacity:0}to{opacity:1}}.Select-menu-outer{border-bottom-right-radius:4px;border-bottom-left-radius:4px;background-color:#fff;border:1px solid #ccc;border-top-color:#e6e6e6;box-shadow:0 1px 0 rgba(0,0,0,.06);box-sizing:border-box;margin-top:-1px;max-height:200px;position:absolute;top:100%;width:100%;z-index:1;-webkit-overflow-scrolling:touch}.Select-menu{max-height:198px;overflow-y:auto}.Select-option{background-color:#fff;color:#666;cursor:pointer}.Select-option:last-child{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.Select-option.is-selected{background-color:#f5faff;background-color:rgba(0,126,255,.04);color:#333}.Select-option.is-focused{background-color:#ebf5ff;background-color:rgba(0,126,255,.08);color:#333}.Select-option.is-disabled{color:#ccc;cursor:default}.Select-noresults{color:#999;cursor:default}.Select--multi .Select-input{vertical-align:middle;margin-left:10px;padding:0}.Select--multi.has-value .Select-input{margin-left:5px}.Select--multi .Select-value{background-color:#ebf5ff;background-color:rgba(0,126,255,.08);border-radius:2px;border:1px solid rgba(0,126,255,.24);color:#007eff;display:inline-block;font-size:.9em;line-height:1.4;margin-left:5px;margin-top:5px;vertical-align:top}.Select--multi .Select-value-icon,.Select--multi .Select-value-label{display:inline-block;vertical-align:middle}.Select--multi .Select-value-label{border-bottom-right-radius:2px;border-top-right-radius:2px;cursor:default;padding:2px 5px}.Select--multi a.Select-value-label{color:#007eff;cursor:pointer;text-decoration:none}.Select--multi a.Select-value-label:hover{text-decoration:underline}.Select--multi .Select-value-icon{cursor:pointer;border-bottom-left-radius:2px;border-top-left-radius:2px;border-right:1px solid #c2e0ff;border-right:1px solid rgba(0,126,255,.24);padding:1px 5px 3px}.Select--multi .Select-value-icon:focus,.Select--multi .Select-value-icon:hover{background-color:#d8eafd;background-color:rgba(0,113,230,.08);color:#0071e6}.Select--multi .Select-value-icon:active{background-color:#c2e0ff;background-color:rgba(0,126,255,.24)}.Select--multi.is-disabled .Select-value{background-color:#fcfcfc;border:1px solid #e3e3e3;color:#333}.Select--multi.is-disabled .Select-value-icon{cursor:not-allowed;border-right:1px solid #e3e3e3}.Select--multi.is-disabled .Select-value-icon:active,.Select--multi.is-disabled .Select-value-icon:focus,.Select--multi.is-disabled .Select-value-icon:hover{background-color:#fcfcfc}@keyframes Select-animation-spin{to{transform:rotate(1turn)}}@-webkit-keyframes Select-animation-spin{to{-webkit-transform:rotate(1turn)}} diff --git a/dox-sequence-diagram-ui/tools/copy-assets.js b/dox-sequence-diagram-ui/tools/copy-assets.js new file mode 100644 index 0000000000..bc4f4f21c9 --- /dev/null +++ b/dox-sequence-diagram-ui/tools/copy-assets.js @@ -0,0 +1,7 @@ +var copy = require('copy'); + +copy(['**/*.json', '**/*.svg', '**/*.html'], 'lib', { + cwd: './src' +}, function (err, file) { + // exposes the vinyl `file` created when the file is copied +}); \ No newline at end of file diff --git a/dox-sequence-diagram-ui/webpack.config.js b/dox-sequence-diagram-ui/webpack.config.js new file mode 100644 index 0000000000..7b7f4b948c --- /dev/null +++ b/dox-sequence-diagram-ui/webpack.config.js @@ -0,0 +1,99 @@ +var webpack = require('webpack'); +var path = require('path'); + +var PATHS = { + SRC: path.resolve(__dirname, 'src/main/webapp'), + TARGET: path.resolve(__dirname, 'dist') +}; + +var devmode = (process.env.npm_lifecycle_event === 'start'); + +var entry = []; +if (devmode) { + entry.push('babel-polyfill'); + entry.push(path.resolve(PATHS.SRC, 'lib/main.jsx')); +} else { + entry.push(path.resolve(PATHS.SRC, 'lib/ecomp/asdc/sequencer/Sequencer.jsx')); +} + +var config = { + entry: entry, + output: { + path: PATHS.TARGET, + filename: 'index.js', + libraryTarget: 'umd' + }, + resolve: { + extensions: ['', '.js', '.jsx'] + }, + eslint: { + failOnWarning: false, + failOnError: true, + configFile: 'eslintrc.json' + }, + devtool: 'eval-source-map', + module: { + preLoaders: [{ + test: /\.(js|jsx)?$/, + loader: 'eslint-loader', + exclude: /node_modules/ + }], + loaders: [{ + test: /\.(js|jsx)$/, + include: path.join(PATHS.SRC, 'lib'), + loader: 'babel-loader', + exclude: /node_modules/, + query: { + presets: ['es2015', 'react'] + } + }, { + test: /\.css$/, + loaders: ['style', 'css'] + }, { + test: /\.(png|woff|woff2|eot|ttf|otf)$/, + loader: 'url-loader?limit=100000' + }, { + test: /\.scss$/, + include: path.join(PATHS.SRC, 'res'), + loaders: ['style', 'css', 'sass'] + }, { + test: /\.html$/, + include: path.join(PATHS.SRC, 'lib'), + loaders: ['raw'] + }, { + test: /\.json$/, + include: path.join(PATHS.SRC, 'lib'), + loaders: ['json'] + }, { + test: /\.svg$/, + loader: 'svg-sprite?' + JSON.stringify({ + name: '[name]_[hash]', + prefixize: true + }) + }] + }, + externals: (devmode ? {} : { + 'd3': 'd3', + 'lodash': 'lodash', + 'react': 'react', + 'react-dnd': 'react-dnd', + 'react-dnd-html5-backend': 'react-dnd-html5-backend', + 'react-dom': 'react-dom', + 'react-redux': 'react-redux', + 'react-select': 'react-select', + 'redux': 'redux' + }), + devServer: { + port: 4096, + quiet: false, + contentBase: 'src/main/webapp', + proxy: { + '/services/*': { + target: 'http://localhost:38080/asdc-sequencer', + secure: false + } + } + } +}; + +module.exports = config; diff --git a/openecomp-be/api/openecomp-sdc-rest-webapp/openecomp-sdc-common-rest/pom.xml b/openecomp-be/api/openecomp-sdc-rest-webapp/openecomp-sdc-common-rest/pom.xml index 764fb84db4..29476eb692 100644 --- a/openecomp-be/api/openecomp-sdc-rest-webapp/openecomp-sdc-common-rest/pom.xml +++ b/openecomp-be/api/openecomp-sdc-rest-webapp/openecomp-sdc-common-rest/pom.xml @@ -16,12 +16,12 @@ - org.openecomp.core + org.openecomp.sdc openecomp-utilities-lib ${project.version} - org.openecomp.core + org.openecomp.sdc openecomp-common-lib ${project.version} diff --git a/openecomp-be/backend/openecomp-sdc-action-manager/pom.xml b/openecomp-be/backend/openecomp-sdc-action-manager/pom.xml index af1652ad50..7817863c20 100644 --- a/openecomp-be/backend/openecomp-sdc-action-manager/pom.xml +++ b/openecomp-be/backend/openecomp-sdc-action-manager/pom.xml @@ -14,7 +14,7 @@ - org.openecomp.core + org.openecomp.sdc openecomp-utilities-lib ${project.version} @@ -24,7 +24,7 @@ ${project.version} - org.openecomp.core + org.openecomp.sdc openecomp-nosqldb-core ${project.version} diff --git a/openecomp-be/backend/openecomp-sdc-application-config-manager/pom.xml b/openecomp-be/backend/openecomp-sdc-application-config-manager/pom.xml index 437114404f..b614e2f2db 100644 --- a/openecomp-be/backend/openecomp-sdc-application-config-manager/pom.xml +++ b/openecomp-be/backend/openecomp-sdc-application-config-manager/pom.xml @@ -28,7 +28,7 @@ test - org.openecomp.core + org.openecomp.sdc openecomp-config-lib ${project.version} diff --git a/openecomp-be/backend/openecomp-sdc-validation-manager/pom.xml b/openecomp-be/backend/openecomp-sdc-validation-manager/pom.xml index 4a7b39aae1..0b9e862fe8 100644 --- a/openecomp-be/backend/openecomp-sdc-validation-manager/pom.xml +++ b/openecomp-be/backend/openecomp-sdc-validation-manager/pom.xml @@ -14,7 +14,7 @@ - org.openecomp.core + org.openecomp.sdc openecomp-utilities-lib ${project.version} @@ -24,7 +24,7 @@ ${project.version} - org.openecomp.core + org.openecomp.sdc openecomp-heat-lib ${project.version} diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/pom.xml b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/pom.xml index 6b98e15c75..6e71dde1d0 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/pom.xml +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/pom.xml @@ -26,7 +26,7 @@ test - org.openecomp.core + org.openecomp.sdc openecomp-utilities-lib ${project.version} @@ -36,9 +36,9 @@ ${project.version} - org.openecomp.core - openecomp-nosqldb-core - ${project.version} + org.openecomp.sdc + openecomp-nosqldb-core + ${project.version} org.openecomp.sdc @@ -46,12 +46,12 @@ ${project.version} - org.openecomp.core + org.openecomp.sdc openecomp-heat-lib ${project.version} - org.openecomp.core + org.openecomp.sdc openecomp-tosca-lib ${project.version} diff --git a/openecomp-be/lib/openecomp-common-lib/pom.xml b/openecomp-be/lib/openecomp-common-lib/pom.xml index 78c5e86ec7..1be7a072dd 100644 --- a/openecomp-be/lib/openecomp-common-lib/pom.xml +++ b/openecomp-be/lib/openecomp-common-lib/pom.xml @@ -9,12 +9,12 @@ openecomp-common-lib - org.openecomp.core + openecomp-common-lib - org.openecomp.core + org.openecomp.sdc openecomp-utilities-lib 1.0.0-SNAPSHOT diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-config-lib/pom.xml b/openecomp-be/lib/openecomp-core-lib/openecomp-config-lib/pom.xml index a10e9cbd04..0abf23900f 100644 --- a/openecomp-be/lib/openecomp-core-lib/openecomp-config-lib/pom.xml +++ b/openecomp-be/lib/openecomp-core-lib/openecomp-config-lib/pom.xml @@ -5,7 +5,7 @@ 4.0.0 - org.openecomp.core + org.openecomp.sdc openecomp-core-lib 1.0.0-SNAPSHOT @@ -26,7 +26,7 @@ test - org.openecomp.core + org.openecomp.sdc openecomp-nosqldb-core ${project.version} diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-api/pom.xml b/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-api/pom.xml index ccb3db833e..22e17f490d 100644 --- a/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-api/pom.xml +++ b/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-api/pom.xml @@ -11,18 +11,17 @@ openecomp-facade-api openecomp-facade-api - org.openecomp.core - org.openecomp.core + org.openecomp.sdc openecomp-utilities-lib ${project.version} - org.openecomp.core + org.openecomp.sdc openecomp-common-lib ${project.version} diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-core/pom.xml b/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-core/pom.xml index 0c5d36abcc..f59a136e6f 100644 --- a/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-core/pom.xml +++ b/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-core/pom.xml @@ -11,21 +11,21 @@ openecomp-facade-core openecomp-facade-core - org.openecomp.core + - org.openecomp.core + org.openecomp.sdc openecomp-utilities-lib ${project.version} - org.openecomp.core + org.openecomp.sdc openecomp-common-lib ${project.version} - org.openecomp.core + org.openecomp.sdc openecomp-facade-api ${project.version} diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/pom.xml b/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/pom.xml index 29e9cce688..18bc9c5c9a 100644 --- a/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/pom.xml +++ b/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/pom.xml @@ -4,7 +4,7 @@ openecomp-core-lib - org.openecomp.core + org.openecomp.sdc 1.0.0-SNAPSHOT @@ -19,13 +19,13 @@ - org.openecomp.core + org.openecomp.sdc openecomp-facade-api ${project.version} compile - org.openecomp.core + org.openecomp.sdc openecomp-facade-core ${project.version} runtime diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/pom.xml b/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/pom.xml index 174f2a36d9..c169e15d54 100644 --- a/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/pom.xml +++ b/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-api/pom.xml @@ -11,11 +11,11 @@ openecomp-nosqldb-api openecomp-nosqldb-api - org.openecomp.core + - org.openecomp.core + org.openecomp.sdc openecomp-facade-api ${project.version} @@ -30,7 +30,7 @@ ${datasatx.version} - org.openecomp.core + org.openecomp.sdc openecomp-facade-core ${project.version} diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-core/pom.xml b/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-core/pom.xml index d799edb961..32c5388c25 100644 --- a/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-core/pom.xml +++ b/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-core/pom.xml @@ -9,14 +9,13 @@ ../../.. - org.openecomp.core openecomp-nosqldb-core openecomp-nosqldb-core - org.openecomp.core + org.openecomp.sdc openecomp-nosqldb-api ${project.version} diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/pom.xml b/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/pom.xml index cb1d810547..d514a73b96 100644 --- a/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/pom.xml +++ b/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/pom.xml @@ -10,7 +10,7 @@ openecomp-nosqldb-lib - org.openecomp.core + openecomp-nosqldb-lib pom @@ -21,13 +21,13 @@ - org.openecomp.core + org.openecomp.sdc openecomp-nosqldb-api ${project.version} compile - org.openecomp.core + org.openecomp.sdc openecomp-nosqldb-core ${project.version} runtime diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/pom.xml b/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/pom.xml index a7a53a32f0..c22df85a87 100644 --- a/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/pom.xml +++ b/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/pom.xml @@ -4,7 +4,7 @@ openecomp-core-lib - org.openecomp.core + org.openecomp.sdc 1.0.0-SNAPSHOT diff --git a/openecomp-be/lib/openecomp-core-lib/pom.xml b/openecomp-be/lib/openecomp-core-lib/pom.xml index 312b085424..16a8e8d0bf 100644 --- a/openecomp-be/lib/openecomp-core-lib/pom.xml +++ b/openecomp-be/lib/openecomp-core-lib/pom.xml @@ -8,7 +8,7 @@ 1.0.0-SNAPSHOT - org.openecomp.core + openecomp-core-lib openecomp-core-lib diff --git a/openecomp-be/lib/openecomp-heat-lib/pom.xml b/openecomp-be/lib/openecomp-heat-lib/pom.xml index 47c7c728a0..046f1456cd 100644 --- a/openecomp-be/lib/openecomp-heat-lib/pom.xml +++ b/openecomp-be/lib/openecomp-heat-lib/pom.xml @@ -10,7 +10,7 @@ openecomp-heat-lib - org.openecomp.core + openecomp-heat-lib @@ -21,7 +21,7 @@ test - org.openecomp.core + org.openecomp.sdc openecomp-utilities-lib ${project.version} @@ -31,7 +31,7 @@ ${project.version} - org.openecomp.core + org.openecomp.sdc openecomp-common-lib ${project.version} diff --git a/openecomp-be/lib/openecomp-sdc-action-lib/openecomp-sdc-action-api/pom.xml b/openecomp-be/lib/openecomp-sdc-action-lib/openecomp-sdc-action-api/pom.xml index d0512a480d..feee6ae16c 100644 --- a/openecomp-be/lib/openecomp-sdc-action-lib/openecomp-sdc-action-api/pom.xml +++ b/openecomp-be/lib/openecomp-sdc-action-lib/openecomp-sdc-action-api/pom.xml @@ -15,18 +15,18 @@ - org.openecomp.core + org.openecomp.sdc openecomp-core-lib pom ${project.version} - org.openecomp.core + org.openecomp.sdc openecomp-facade-core ${project.version} - org.openecomp.core + org.openecomp.sdc openecomp-nosqldb-core ${project.version} diff --git a/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-api/pom.xml b/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-api/pom.xml index a2038a212e..982938f570 100644 --- a/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-api/pom.xml +++ b/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-api/pom.xml @@ -17,7 +17,7 @@ - org.openecomp.core + org.openecomp.sdc openecomp-facade-core ${project.version} diff --git a/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-core/pom.xml b/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-core/pom.xml index 1f0452cdfb..1c6a6ddda6 100644 --- a/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-core/pom.xml +++ b/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-core/pom.xml @@ -49,7 +49,7 @@ test - org.openecomp.core + org.openecomp.sdc openecomp-utilities-lib ${project.version} diff --git a/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/pom.xml b/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/pom.xml index 8f82967e74..a15e6399e9 100644 --- a/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/pom.xml +++ b/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/pom.xml @@ -48,7 +48,7 @@ test - org.openecomp.core + org.openecomp.sdc openecomp-utilities-lib ${project.version} @@ -63,7 +63,7 @@ ${project.version} - org.openecomp.core + org.openecomp.sdc openecomp-common-lib ${project.version} @@ -80,12 +80,12 @@ - org.openecomp.core + org.openecomp.sdc openecomp-heat-lib ${project.version} - org.openecomp.core + org.openecomp.sdc openecomp-tosca-lib ${project.version} diff --git a/openecomp-be/lib/openecomp-sdc-model-lib/openecomp-sdc-model-api/pom.xml b/openecomp-be/lib/openecomp-sdc-model-lib/openecomp-sdc-model-api/pom.xml index 81016a413b..e0a03b7551 100644 --- a/openecomp-be/lib/openecomp-sdc-model-lib/openecomp-sdc-model-api/pom.xml +++ b/openecomp-be/lib/openecomp-sdc-model-lib/openecomp-sdc-model-api/pom.xml @@ -14,7 +14,7 @@ - org.openecomp.core + org.openecomp.sdc openecomp-facade-core ${project.version} @@ -34,12 +34,12 @@ 1.5.3 - org.openecomp.core + org.openecomp.sdc openecomp-heat-lib ${project.version} - org.openecomp.core + org.openecomp.sdc openecomp-tosca-lib ${project.version} diff --git a/openecomp-be/lib/openecomp-sdc-model-lib/openecomp-sdc-model-core/pom.xml b/openecomp-be/lib/openecomp-sdc-model-lib/openecomp-sdc-model-core/pom.xml index ba4d404ae7..bde2b9987d 100644 --- a/openecomp-be/lib/openecomp-sdc-model-lib/openecomp-sdc-model-core/pom.xml +++ b/openecomp-be/lib/openecomp-sdc-model-lib/openecomp-sdc-model-core/pom.xml @@ -28,7 +28,7 @@ - org.openecomp.core + org.openecomp.sdc openecomp-utilities-lib ${project.version} diff --git a/openecomp-be/lib/openecomp-sdc-model-lib/openecomp-sdc-model-impl/pom.xml b/openecomp-be/lib/openecomp-sdc-model-lib/openecomp-sdc-model-impl/pom.xml index ff376f1e7d..f1471d9699 100644 --- a/openecomp-be/lib/openecomp-sdc-model-lib/openecomp-sdc-model-impl/pom.xml +++ b/openecomp-be/lib/openecomp-sdc-model-lib/openecomp-sdc-model-impl/pom.xml @@ -28,7 +28,7 @@ - org.openecomp.core + org.openecomp.sdc openecomp-utilities-lib ${project.version} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-api/pom.xml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-api/pom.xml index e6eca41134..b6a59750a0 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-api/pom.xml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-api/pom.xml @@ -14,7 +14,7 @@ - org.openecomp.core + org.openecomp.sdc openecomp-facade-core ${project.version} @@ -29,12 +29,12 @@ 1.5.3 - org.openecomp.core + org.openecomp.sdc openecomp-heat-lib ${project.version} - org.openecomp.core + org.openecomp.sdc openecomp-tosca-lib ${project.version} diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/pom.xml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/pom.xml index 2bfa7dfd31..64553653fc 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/pom.xml +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/pom.xml @@ -45,7 +45,7 @@ test - org.openecomp.core + org.openecomp.sdc openecomp-utilities-lib ${project.version} @@ -81,7 +81,7 @@ ${project.version} - org.openecomp.core + org.openecomp.sdc openecomp-heat-lib ${project.version} diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-api/pom.xml b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-api/pom.xml index 4f92b644c4..052c19efb0 100644 --- a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-api/pom.xml +++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-api/pom.xml @@ -14,7 +14,7 @@ - org.openecomp.core + org.openecomp.sdc openecomp-facade-core ${project.version} diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-core/pom.xml b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-core/pom.xml index 9a68e2e11e..b683d51507 100644 --- a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-core/pom.xml +++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-core/pom.xml @@ -58,7 +58,7 @@ test - org.openecomp.core + org.openecomp.sdc openecomp-utilities-lib ${project.version} diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/pom.xml b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/pom.xml index bacd79a97a..5d1dc4ffa5 100644 --- a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/pom.xml +++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/pom.xml @@ -57,7 +57,7 @@ test - org.openecomp.core + org.openecomp.sdc openecomp-utilities-lib ${project.version} @@ -67,7 +67,7 @@ ${project.version} - org.openecomp.core + org.openecomp.sdc openecomp-common-lib ${project.version} @@ -84,7 +84,7 @@ - org.openecomp.core + org.openecomp.sdc openecomp-heat-lib ${project.version} diff --git a/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-api/pom.xml b/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-api/pom.xml index 1cb542eba5..817b89823f 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-api/pom.xml +++ b/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-api/pom.xml @@ -14,7 +14,7 @@ - org.openecomp.core + org.openecomp.sdc openecomp-facade-core ${project.version} @@ -24,7 +24,7 @@ ${project.version} - org.openecomp.core + org.openecomp.sdc openecomp-nosqldb-core ${project.version} diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-api/pom.xml b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-api/pom.xml index 100e85536d..a8019cf30c 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-api/pom.xml +++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-api/pom.xml @@ -20,18 +20,18 @@ test - org.openecomp.core + org.openecomp.sdc openecomp-core-lib pom ${project.version} - org.openecomp.core + org.openecomp.sdc openecomp-facade-core ${project.version} - org.openecomp.core + org.openecomp.sdc openecomp-nosqldb-core ${project.version} diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/pom.xml b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/pom.xml index c732472152..c07b135b04 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/pom.xml +++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/pom.xml @@ -36,7 +36,7 @@ ${project.version} - org.openecomp.core + org.openecomp.sdc openecomp-nosqldb-api ${project.version} @@ -52,7 +52,7 @@ test - org.openecomp.core + org.openecomp.sdc openecomp-config-lib ${project.version} diff --git a/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-api/pom.xml b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-api/pom.xml index 180410dcf0..9c783c179f 100644 --- a/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-api/pom.xml +++ b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-api/pom.xml @@ -14,17 +14,17 @@ - org.openecomp.core + org.openecomp.sdc openecomp-facade-core ${project.version} - org.openecomp.core + org.openecomp.sdc openecomp-facade-api ${project.version} - org.openecomp.core + org.openecomp.sdc openecomp-nosqldb-core ${project.version} diff --git a/openecomp-be/lib/openecomp-tosca-lib/pom.xml b/openecomp-be/lib/openecomp-tosca-lib/pom.xml index eb67349896..66c9ef5639 100644 --- a/openecomp-be/lib/openecomp-tosca-lib/pom.xml +++ b/openecomp-be/lib/openecomp-tosca-lib/pom.xml @@ -10,14 +10,14 @@ 1.0.0-SNAPSHOT - org.openecomp.core + openecomp-tosca-lib openecomp-tosca-lib - org.openecomp.core + org.openecomp.sdc openecomp-utilities-lib ${project.version} @@ -27,7 +27,7 @@ ${project.version} - org.openecomp.core + org.openecomp.sdc openecomp-common-lib ${project.version} diff --git a/openecomp-be/tools/swagger-ui/api-docs/api.html b/openecomp-be/tools/swagger-ui/api-docs/api.html index 35bf7db136..f62de6767c 100644 --- a/openecomp-be/tools/swagger-ui/api-docs/api.html +++ b/openecomp-be/tools/swagger-ui/api-docs/api.html @@ -9572,11 +9572,11 @@ Performs one of the following actions on a action: |Checkout: Locks it for edits - contentDisposition + contentId - ContentDisposition + string optional @@ -9585,10 +9585,10 @@ Performs one of the following actions on a action: |Checkout: Locks it for edits - dataHandler + contentDisposition - DataHandler + ContentDisposition @@ -9598,11 +9598,11 @@ Performs one of the following actions on a action: |Checkout: Locks it for edits - contentId + dataHandler + DataHandler - string optional @@ -12054,7 +12054,7 @@ Performs one of the following actions on a action: |Checkout: Locks it for edits - wildcardSubtype + wildcardType @@ -12067,7 +12067,7 @@ Performs one of the following actions on a action: |Checkout: Locks it for edits - wildcardType + wildcardSubtype diff --git a/openecomp-be/tools/swagger-ui/api-docs/api.json b/openecomp-be/tools/swagger-ui/api-docs/api.json index 8396339628..efcb5e84ab 100644 --- a/openecomp-be/tools/swagger-ui/api-docs/api.json +++ b/openecomp-be/tools/swagger-ui/api-docs/api.json @@ -8,35 +8,35 @@ }, "basePath" : "/onboarding-api", "tags" : [ { - "name" : "Vendor License Models" + "name" : "Vendor Software Product Component NICs" }, { - "name" : "Vendor License Model - Entitlement Pools" + "name" : "Vendor Software Product Component Processes" }, { - "name" : "Vendor Software Product Processes" + "name" : "Vendor Software Product Component MIB Uploads" + }, { + "name" : "Vendor License Model - License Key Groups" }, { "name" : "Application Configuration" }, { - "name" : "Actions" + "name" : "Vendor License Model - License Agreements" }, { - "name" : "Vendor License Model - License Key Groups" + "name" : "Vendor License Model - Feature Groups" }, { - "name" : "Vendor Software Product Component Processes" + "name" : "Vendor Software Product Processes" }, { - "name" : "Vendor Software Product Components" + "name" : "Actions" }, { "name" : "Validation" }, { - "name" : "Vendor Software Product Component MIB Uploads" + "name" : "Vendor Software Product Components" }, { - "name" : "Vendor License Model - License Agreements" + "name" : "Vendor Software Products" }, { "name" : "Vendor Software Product Networks" }, { - "name" : "Vendor Software Products" - }, { - "name" : "Vendor Software Product Component NICs" + "name" : "Vendor License Model - Entitlement Pools" }, { - "name" : "Vendor License Model - Feature Groups" + "name" : "Vendor License Models" } ], "schemes" : [ "http" ], "paths" : { @@ -3513,14 +3513,14 @@ "contentType" : { "$ref" : "#/definitions/MediaType" }, + "contentId" : { + "type" : "string" + }, "contentDisposition" : { "$ref" : "#/definitions/ContentDisposition" }, "dataHandler" : { "$ref" : "#/definitions/DataHandler" - }, - "contentId" : { - "type" : "string" } } }, @@ -4343,11 +4343,11 @@ "type" : "string" } }, - "wildcardSubtype" : { + "wildcardType" : { "type" : "boolean", "default" : false }, - "wildcardType" : { + "wildcardSubtype" : { "type" : "boolean", "default" : false } diff --git a/openecomp-ui/.babelrc b/openecomp-ui/.babelrc new file mode 100644 index 0000000000..635081d464 --- /dev/null +++ b/openecomp-ui/.babelrc @@ -0,0 +1,10 @@ +{ + "presets": ["stage-0", "react"], + "plugins": [ + "transform-es2015-modules-commonjs", + "transform-es2015-destructuring", + "transform-es2015-spread", + "transform-object-rest-spread", + "transform-class-properties" + ] +} diff --git a/openecomp-ui/.editorconfig b/openecomp-ui/.editorconfig new file mode 100644 index 0000000000..fcdada6db0 --- /dev/null +++ b/openecomp-ui/.editorconfig @@ -0,0 +1,18 @@ +# EditorConfig is awesome: http://EditorConfig.org + +# top-most EditorConfig file +root = true + +# Unix-style newlines with a newline ending every file +[*] +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +# tab indentation +[src/**.js] +[src/**.jsx] +indent_style = tab + + diff --git a/openecomp-ui/.eslintignore b/openecomp-ui/.eslintignore new file mode 100644 index 0000000000..bd11f6ec26 --- /dev/null +++ b/openecomp-ui/.eslintignore @@ -0,0 +1,4 @@ +webpack.config*.js +gulpfile.js +fixture +tools diff --git a/openecomp-ui/.eslintrc b/openecomp-ui/.eslintrc new file mode 100644 index 0000000000..da8a422df3 --- /dev/null +++ b/openecomp-ui/.eslintrc @@ -0,0 +1,155 @@ +{ + "parser": "babel-eslint", + "env": { + "es6": true, + "jquery": true, + "node": true, + "mocha": true + }, + "plugins": [ + "react", + "import" + ], + "ecmaFeatures": { + "jsx": true, + "classes": true, + "modules": true + }, + "globals": { + "Event": true, + "window": true, + "navigator": true, + "System": true, + "document": true, + "localStorage": true, + "sessionStorage": true, + "Image": true, + "requestAnimationFrame": true, + "cancelAnimationFrame": true, + "DEBUG": true, + "SVGElement": true, + "FormData": true, + "DEV": true, + "Blob": true, + "XMLHttpRequest": true, + "URL": true, + "PunchOutRegistry": true, + "it": true, + "describe": true + }, + "rules": { + "linebreak-style": 0, + "no-unused-vars": 2, + "no-bitwise": 0, + "no-eq-null": 2, + "eqeqeq": 2, + "wrap-iife": [ + 2, + "any" + ], + "no-unused-expressions": 2, + "indent": [ + 1, + "tab", + { + "SwitchCase": 1 + } + ], + "no-use-before-define": 2, + "new-cap": [ + 2, + { + "capIsNewExceptions": [ + "DataTable", + "V" + ] + } + ], + "no-caller": 2, + "no-empty": 2, + "no-undef": 2, + "quotes": [ + 2, + "single", + "avoid-escape" + ], + "jsx-quotes": [ + 2, + "prefer-single" + ], + "no-plusplus": 0, + "no-cond-assign": [ + 2, + "except-parens" + ], + "comma-style": [ + 2, + "last" + ], + "no-invalid-this": 0, + "dot-notation": 0, + "max-len": [ + 1, + 200 + ], + "camelcase": [ + 2, + { + "properties": "never" + } + ], + "curly": 2, + "brace-style": 0, + "semi": [ + 2, + "always" + ], + "space-in-brackets": [ + 0, + "never" + ], + "space-infix-ops": 2, + "import/default": 0, + "import/no-unresolved": 0, + "import/no-named-as-default": 2, + "import/no-duplicates": 0, + "import/imports-first": 2, + "import/export": 2, + "react/display-name": 0, + "react/forbid-prop-types": 0, + "react/jsx-boolean-value": 0, + "react/jsx-closing-bracket-location": [ + 1, + { + "nonEmpty": "after-props", + "selfClosing": "after-props" + } + ], + "react/jsx-curly-spacing": 0, + "react/jsx-indent-props": [ + 1, + "tab" + ], + "react/jsx-max-props-per-line": 0, + "react/jsx-no-duplicate-props": 1, + "react/jsx-no-literals": 0, + "react/jsx-no-undef": 1, + "react/jsx-sort-prop-types": 0, + "react/jsx-sort-props": 0, + "react/jsx-uses-react": 1, + "react/jsx-uses-vars": 1, + "react/no-danger": 1, + "react/no-did-mount-set-state": 2, + "react/no-did-update-set-state": 2, + "react/no-direct-mutation-state": 1, + "react/no-multi-comp": 0, + "react/no-set-state": 0, + "react/no-unknown-property": 1, + "react/prop-types": 0, + "react/react-in-jsx-scope": 1, + "react/require-extension": 1, + "react/self-closing-comp": 1, + "react/sort-comp": 0, + "react/wrap-multilines": 1 + } +} diff --git a/openecomp-ui/.gitignore b/openecomp-ui/.gitignore new file mode 100644 index 0000000000..cce0a545f7 --- /dev/null +++ b/openecomp-ui/.gitignore @@ -0,0 +1,7 @@ + +.idea + +dist +node_modules +devConfig.json +.npmrc diff --git a/openecomp-ui/LICENSE b/openecomp-ui/LICENSE new file mode 100644 index 0000000000..2507db8a57 --- /dev/null +++ b/openecomp-ui/LICENSE @@ -0,0 +1 @@ +(c) Copyright 2016 ECOMP, all rights reserved. diff --git a/openecomp-ui/devConfig.defaults.json b/openecomp-ui/devConfig.defaults.json new file mode 100644 index 0000000000..bfcf9aae8f --- /dev/null +++ b/openecomp-ui/devConfig.defaults.json @@ -0,0 +1,6 @@ +{ + "port": 9000, + "proxyATTTarget": null, + "proxyTarget": null, + "useFixture": false +} diff --git a/openecomp-ui/fixture/data/entitlementPools.json b/openecomp-ui/fixture/data/entitlementPools.json new file mode 100644 index 0000000000..22750cbb6d --- /dev/null +++ b/openecomp-ui/fixture/data/entitlementPools.json @@ -0,0 +1,36 @@ +{ + "results":[ + { + "name": "ep1", + "description": "string", + "thresholdValue": 75, + "thresholdUnits": "%", + "entitlementMetric": {"choice": "User", "other":""}, + "increments": "string", + "aggregationFunction": {"choice": "Average", "other": ""}, + "operationalScope": {"choices": ["VM"], "other": ""}, + "time": {"choice": "Hour", "other": ""}, + "sku": "DEF2-385A-4521-AAAA", + "id": "1", + "referencingFeatureGroups": ["1","2"], + "partNumber": "51529" + }, + { + "name": "ep2", + "description": "string", + "thresholdValue": 99, + "thresholdUnits": "%", + "entitlementMetric": {"choice": "User", "other":""}, + "increments": "string", + "aggregationFunction": {"choice": "Average", "other": ""}, + "operationalScope": {"choices": ["Other"], "other": "blabla"}, + "time": {"choice": "Hour", "other": ""}, + "sku": "DEF2-385A-4521-AAAA", + "id": "2", + "refCount": 0, + "partNumber": "51529", + "referencingFeatureGroups": [] + } + ] +} + diff --git a/openecomp-ui/fixture/data/featureGroup.json b/openecomp-ui/fixture/data/featureGroup.json new file mode 100644 index 0000000000..278baecb36 --- /dev/null +++ b/openecomp-ui/fixture/data/featureGroup.json @@ -0,0 +1,59 @@ +{ + "name": "fssss", + "description": "gdfgdfgdsfg", + "id": "1", + "licenseKeyGroupsIds": [ + "1,2" + ], + "entitlementPoolsIds": [ + "1,2" + ], + "licenseKeyGroups": [ + { + "name": "ls1", + "description": "string", + "type": "string", + "operationalScope": "string", + "id": "1", + "refCount": 0 + }, + { + "name": "ls2", + "description": "string", + "type": "string", + "operationalScope": "string", + "id": "1", + "refCount": 0 + } + ], + "entitlementPools": [ + { + "name": "ep1", + "description": "string", + "thresholdValue": 0, + "thresholdUnits": "string", + "entitlementMetric": "string", + "increments": "string", + "aggregationFunction": "string", + "operationalScope": "string", + "time": "string", + "sku": "string", + "id": "string", + "refCount": 0 + }, + { + "name": "ep2", + "description": "string", + "thresholdValue": 0, + "thresholdUnits": "string", + "entitlementMetric": "string", + "increments": "string", + "aggregationFunction": "string", + "operationalScope": "string", + "time": "string", + "sku": "string", + "id": "string", + "refCount": 0 + } + ] +} diff --git a/openecomp-ui/fixture/data/featureGroups.json b/openecomp-ui/fixture/data/featureGroups.json new file mode 100644 index 0000000000..eea4967ca8 --- /dev/null +++ b/openecomp-ui/fixture/data/featureGroups.json @@ -0,0 +1,28 @@ +{ + "results": [ + { + "name": "fs1", + "id": "0", + "description": "fs1-description", + "licenseKeyGroupsIds": [ + "1" + ], + "entitlementPoolsIds": [ + "1" + ], + "referencingLicenseAgreements": ["1","2"] + }, + { + "name": "fs2", + "id": "1", + "description": "fs2-description", + "licenseKeyGroupsIds": [ + "2" + ], + "entitlementPoolsIds": [ + "2" + ], + "referencingLicenseAgreements": [] + } + ] +} diff --git a/openecomp-ui/fixture/data/licenseAgreementList.json b/openecomp-ui/fixture/data/licenseAgreementList.json new file mode 100644 index 0000000000..b113295fcb --- /dev/null +++ b/openecomp-ui/fixture/data/licenseAgreementList.json @@ -0,0 +1,33 @@ +{ + "results": [ + { + "name": "name0", + "description": "description0", + "licenseTerm": {"choice": "Other", "other": "blabla"}, + "requirementsAndConstrains": "requirementsAndConstrains0", + "featureGroupsIds": [], + "id": "0" + }, + { + "name": "name1", + "description": "description1", + "licenseTerm": {"choice": "Fixed_Term", "other": ""}, + "requirementsAndConstrains": "requirementsAndConstrains1", + "featureGroupsIds": [ + "1" + ], + "id": "1" + }, + { + "name": "name2", + "description": "description2", + "licenseTerm": {"choice": "Unlimited", "other": ""}, + "requirementsAndConstrains": "requirementsAndConstrains2", + "featureGroupsIds": [ + "2" + ], + "id": "2" + } + ], + "listCount": 3 +} diff --git a/openecomp-ui/fixture/data/licenseKeyGroups.json b/openecomp-ui/fixture/data/licenseKeyGroups.json new file mode 100644 index 0000000000..74050ab033 --- /dev/null +++ b/openecomp-ui/fixture/data/licenseKeyGroups.json @@ -0,0 +1,20 @@ +{ + "results":[ + { + "name": "lsk1", + "description": "string", + "type": "Unique", + "operationalScope": {"choices": ["Network_Wide","VM"], "other": ""}, + "id": "1", + "referencingFeatureGroups":["1","2"] + }, + { + "name": "lsk2", + "description": "string", + "type": "One_Time", + "operationalScope": {"choices": ["Other"], "other": "blabla"}, + "id": "2", + "referencingFeatureGroups": 0 + } + ] +} diff --git a/openecomp-ui/fixture/data/licenseModels.json b/openecomp-ui/fixture/data/licenseModels.json new file mode 100644 index 0000000000..5239c4fafc --- /dev/null +++ b/openecomp-ui/fixture/data/licenseModels.json @@ -0,0 +1,16 @@ +{ + "results":[ + { + "vendorName": "Omer Corp.", + "description": "", + "iconRef": "string", + "id": "1" + }, + { + "vendorName": "Robotricks", + "description": "Optimus Prime", + "iconRef": "string", + "id": "2" + } + ] +} diff --git a/openecomp-ui/fixture/data/softwareProduct.json b/openecomp-ui/fixture/data/softwareProduct.json new file mode 100644 index 0000000000..5b60587614 --- /dev/null +++ b/openecomp-ui/fixture/data/softwareProduct.json @@ -0,0 +1,96 @@ +{ + "name": "VSP5", + "version": "0.1", + "id": "4730033D16C64E3CA556AB0AC4478218", + "description": "A software model for Fortigate. Nam hendrerit sollicitudin semper. Aenean consectetur nisi sit amet ante sodales consectetur. Nullam rutrum massa in pellentesque ' +elementum. Aliquam efficitur tellus lacus, eget iaculis justo iaculis eu. ", + "categoryId": "category", + "vendorId": "1", + "checkinStatus": "CHECK_OUT", + "licensingData": "test data", + "validationData": { + "logicalStructure": [ + { + "type": "PPD", + "catalogInstances": [ + { + "name": "PPD1", + "artifacts": [ + { + "name": "chopstick.py" + }, + { + "name": "bread.py" + } + ] + } + ] + } + ], + "importStructure": { + "HEAT": [ + { + "fileName": "sushi.yml", + "env": "soy.env", + "nested": [ + { + "fileName": "salmon.yml", + "env": "skin.env", + "artifacts": [ + { + "name": "rice.py", + "status": "OK" + }, + { + "name": "tuna.py", + "status": "Missing" + } + ] + } + ], + "artifacts": [ + { + "name": "chopstick.py", + "status": "OK" + }, + { + "name": "bread.py", + "status": "Missing" + } + ], + "volume": [ + { + "fileName": "fishtank.yml", + "env": "middletown.env" + } + ], + "network": [ + { + "fileName": "fishnet.yml", + "env": "ship.env" + } + ] + } + ], + "volume": [ + { + "fileName": "vol1.yml", + "env": "e1.env" + }, + { + "fileName": "vol2.yml", + "env": "e2.env" + } + ], + "network": [ + { + "fileName": "net1.yml", + "env": "env1.env" + }, + { + "fileName": "net2.yml", + "env": "env2.env" + } + ] + } + } +} diff --git a/openecomp-ui/fixture/data/softwareProductList.json b/openecomp-ui/fixture/data/softwareProductList.json new file mode 100644 index 0000000000..4554abc95f --- /dev/null +++ b/openecomp-ui/fixture/data/softwareProductList.json @@ -0,0 +1,34 @@ +{ + "results": [ + { + "name": "Software Product 1", + "version": "1.0", + "id": "1", + "category": "Category1", + "subCategory": "Sub Category1", + "vendor": "1", + "status": "string", + "checkinStatus": "string" + }, + { + "name": "Software Product 2", + "version": "1.0", + "id": "2", + "category": "Category2", + "subCategory": "Sub Category2", + "vendor": "2", + "status": "string", + "checkinStatus": "string" + }, + { + "name": "Software Product 3", + "version": "1.0", + "id": "3", + "category": "Category3", + "subCategory": "Sub Category3", + "vendor": "3", + "status": "string", + "checkinStatus": "string" + } + ] +} diff --git a/openecomp-ui/fixture/express.js b/openecomp-ui/fixture/express.js new file mode 100644 index 0000000000..ed8bf956f9 --- /dev/null +++ b/openecomp-ui/fixture/express.js @@ -0,0 +1,231 @@ +/*- + * ============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========================================================= + */ + +var args = process.argv.slice(2); + +function defineRoutes(router) { + + //LICENSE-MODELS + router.get('/v1.0/vendor-license-models', licenseModelsList); + + //FEATURE-GROUP + router.get('/v1.0/vendor-license-models/:licenseModelId/feature-groups', featureGroupList); + router.get('/v1.0/vendor-license-models/:licenseModelId/feature-groups/:featureGroupId', featureGroup); + router.post('/v1.0/vendor-license-models/:licenseModelId/feature-groups', addFeatureGroup); + router.delete('/v1.0/vendor-license-models/:licenseModelId/feature-groups/:featureGroupId', deletefeatureGroup); + router.put('/v1.0/vendor-license-models/:licenseModelId/feature-groups/:featureGroupId', updatefeatureGroup); + + + + //LICENSE-AGREEMENT + router.get('/v1.0/vendor-license-models/:licenseModelId/license-agreements', licenseAgreementList); + router.post('/v1.0/vendor-license-models/:licenseModelId/license-agreements/', addLicenseAgreement); + router.delete('/v1.0/vendor-license-models/:licenseModelId/license-agreements/:licenseAgreementId', deleteLicenseAgreement); + router.put('/v1.0/vendor-license-models/:licenseModelId/license-agreements/:licenseAgreementId', updateLicenseAgreement); + + //ENTITLEMENT POOLS + router.get('/v1.0/vendor-license-models/:licenseModelId/entitlement-pools', entitlementPoolsList); + router.post('/v1.0/vendor-license-models/:licenseModelId/entitlement-pools', addEntitlementPool); + router.put('/v1.0/vendor-license-models/:licenseModelId/entitlement-pools/:entitlementPoolId', updateEntitlementPool); + router.delete('/v1.0/vendor-license-models/:licenseModelId/entitlement-pools/:entitlementPoolId', deleteEntitlementPool); + + //LICENSE KEY GROUPS + router.get('/v1.0/vendor-license-models/:licenseModelId/license-key-groups', licenseKeyGroupsList); + router.post('/v1.0/vendor-license-models/:licenseModelId/license-key-groups', addLicenseKeyGroup); + router.delete('/v1.0/vendor-license-models/:licenseModelId/license-key-groups/:licenseKeyGroupId', deleteLicenseKeyGroup); + router.put('/v1.0/vendor-license-models/:licenseModelId/license-key-groups/:licenseKeyGroupId', updateLicenseKeyGroup); + + //VENDOR SOFTWARE PRODUCT + + router.post('/v1.0/vendor-software-products/:vspId/upload', softwareProductUpload); + router.get('/v1.0/vendor-software-products/:vspId', getSoftwareProduct); + router.get('/v1.0/vendor-software-products', softwareProductList); + + router.put('/v1.0/vendor-software-products/:vspId/processes/:prcId', putSoftwareProductProcess); + router.post('/v1.0/vendor-software-products/:vspId/processes', postSoftwareProductProcess); +} + + +function licenseModelsList(req, res) { + res.json(require('./data/licenseModels')); +} + +function featureGroupList(req, res) { + res.json(require('./data/featureGroups')); +} + +function featureGroup(req, res) { + res.json(require('./data/featureGroup')); +} + +function deletefeatureGroup(req, res) { + res.json({ + returnCode: 'OK' + }); +} + + +function updatefeatureGroup(req, res) { + res.json({ + returnCode: 'OK' + }); +} + +function addFeatureGroup(req,res) { + var id = Math.floor(Math.random() * (100 - 1) + 1).toString(); + res.json({ + returnCode: 'OK', + value: id + }) +} + +/** ENTITLEMENT POOLS **/ +function entitlementPoolsList(req, res) { + res.json(require('./data/entitlementPools')); +} + +function updateEntitlementPool(req, res) { + res.json({ + returnCode: 'OK' + }); +} + +function addEntitlementPool(req,res) { + var id = Math.floor(Math.random() * (100 - 1) + 1).toString(); + res.json({ + returnCode: 'OK', + value: id + }) +} + +function deleteEntitlementPool(req, res) { + res.json({ + returnCode: 'OK' + }); +} + +/** LICENSE KEY GROUPS */ + +function licenseKeyGroupsList(req, res) { + res.json(require('./data/licenseKeyGroups')); +} + +function addLicenseKeyGroup(req,res) { + var id = Math.floor(Math.random() * (100 - 1) + 1).toString(); + res.json({ + returnCode: 'OK', + value: id + }) +} + +function deleteLicenseKeyGroup(req, res) { + res.json({ + returnCode: 'OK' + }); +} + +function updateLicenseKeyGroup(req, res) { + res.json({ + returnCode: 'OK' + }); +} + +function licenseAgreementList(req, res) { + res.json(require('./data/licenseAgreementList')); +} + + +function addLicenseAgreement(req,res) { + var id = Math.floor(Math.random() * (100 - 1) + 1).toString(); + res.json({ + returnCode: 'OK', + value: id + }) +} +function deleteLicenseAgreement(req, res) { + res.json({ + returnCode: 'OK' + }); +} +function updateLicenseAgreement(req, res) { + res.json({ + returnCode: 'OK' + }); +} + +/** VENDOR SOFTWARE PRODUCT */ + +function softwareProductUpload(req, res) { + res.json({ + status: 'SUCCESS' + }); +} + +function getSoftwareProduct(req, res) { + res.json(require('./data/softwareProduct')); +} + + +function putSoftwareProductProcess(req, res) { + res.json({ + status: 'SUCCESS' + }); +} + +function postSoftwareProductProcess(req, res) { + var id = Math.floor(Math.random() * (100 - 1) + 1).toString(); + res.json({ + returnCode: 'OK', + value: id + }); +} + + + + +function createFixtureServer(port) { + var express = require('express'); + var app = express(); + var bodyParser = require('body-parser'); + app.use(bodyParser.urlencoded({extended: true})); + app.use(bodyParser.json()); + + var router = express.Router(); + + defineRoutes(router); + + app.use('/api', router); + app.use('/onboarding-api', router); + app.use('/sdc1/feProxy/onboarding-api', router); + + app.listen(port); + + console.log('Fixture server is up. port->', port); + //console.log(router.stack); + return app; +} + +/** SOFTWARE PRODUCT LIST **/ +function softwareProductList(req, res) { + res.json(require('./data/softwareProductList')); +} + + +createFixtureServer(args[0]); diff --git a/openecomp-ui/fixture/fixture.js b/openecomp-ui/fixture/fixture.js new file mode 100644 index 0000000000..7e5b263c5c --- /dev/null +++ b/openecomp-ui/fixture/fixture.js @@ -0,0 +1,93 @@ +/*- + * ============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'; + +const PORT = 4000; + +function startFixtureServer() { + return require('child_process').fork('fixture/express', [PORT]); +} + +function buildProxyMiddleware() { + return require('./middleware')(PORT); +} + +function getProxyData(fixtureServerOptions, req, res, next) { + if (!fixtureServerOptions.serverProcess) { + fixtureServerOptions.serverProcess = startFixtureServer(); + } + + return fixtureServerOptions.proxy(req, res, next); +} + +function wrapFixture(fixtureServerOptions, req, res, next) { + if (fixtureServerOptions.proxy) { + return getProxyData(fixtureServerOptions, req, res, next); + } else { + next(); + } +} + + +module.exports = function fixture(options) { + + let proxy; + if(options.enabled) { + proxy = buildProxyMiddleware(); + } + + let fixtureServerOptions = { + proxy, + serverProcess: null + }; + + (function startWatch() { + var nodeWatch = require('node-watch'); + + nodeWatch(['fixture/data', 'fixture/express.js'], function () { + if (fixtureServerOptions.proxy && fixtureServerOptions.serverProcess) { + fixtureServerOptions.serverProcess.kill(); + fixtureServerOptions.serverProcess = startFixtureServer(); + } + }); + + nodeWatch(['devConfig.json'], function () { + let devConfigDefaults = require('../devConfig.defaults'); + require('fs').readFile('devConfig.json', (err, data) => { + if (err) throw err; + const config = Object.assign({}, devConfigDefaults, JSON.parse(data)); + if (config.useFixture) { + fixtureServerOptions.proxy = proxy || buildProxyMiddleware(); + } + else { + fixtureServerOptions.proxy = null; + if (fixtureServerOptions.serverProcess) { + fixtureServerOptions.serverProcess.kill(); + fixtureServerOptions.serverProcess = null; + } + } + }); + }); + + })(); + + return (req, res, next) => wrapFixture(fixtureServerOptions, req, res, next); +}; diff --git a/openecomp-ui/fixture/middleware.js b/openecomp-ui/fixture/middleware.js new file mode 100644 index 0000000000..915bb81cab --- /dev/null +++ b/openecomp-ui/fixture/middleware.js @@ -0,0 +1,24 @@ +/*- + * ============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========================================================= + */ + +module.exports = function createProxyMiddleware(port) { + var proxy = require('http-proxy-middleware'); + return proxy(['/api', '/onboarding-api'], {target: 'http://localhost:' + port}); +}; diff --git a/openecomp-ui/gulpfile.js b/openecomp-ui/gulpfile.js new file mode 100644 index 0000000000..57885ec6ca --- /dev/null +++ b/openecomp-ui/gulpfile.js @@ -0,0 +1,292 @@ +/*- + * ============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'; + +var path = require('path'); +var gulp = require('gulp'); +var gulpHelpers = require('gulp-helpers'); +var taskMaker = gulpHelpers.taskMaker(gulp); +var _ = gulpHelpers.framework('_'); +var runSequence = gulpHelpers.framework('run-sequence'); +var i18nTask = require('./tools/gulp/tasks/i18n'); +var prodTask = require('./tools/gulp/tasks/prod'); +var gulpCssUsage = require('gulp-css-usage').default; +var webpack = require('webpack'); +var WebpackDevServer = require('webpack-dev-server'); + +var localDevConfig = {}; +try { + localDevConfig = require('./devConfig'); +} catch (e) { +} +var devConfig = Object.assign({}, require('./devConfig.defaults'), localDevConfig); +var webpackConfig = require('./webpack.config'); + +function defineTasks(mode) { + let appName = 'onboarding'; + let dist = 'dist/' + mode + '/'; + + let path = { + locales: 'i18n/', + jssource: 'src/**/*.js', + jsxsource: 'src/**/*.jsx', + html: '**/*.html', + output: dist, + assets: './resources/**/*.{css,png,svg,eot,ttf,woff,woff2,otf}', + json: './src/**/*.json', + index: './src/index.html', + heat: './src/heat.html', + watch: ['./src/**'], + scss: './resources/scss/**/*.scss', + css: dist + '/css', + war: [dist + 'index.html', dist + 'punch-outs_en.js', dist + '**/*.{css,png,svg,eot,ttf,woff,woff2,otf}', dist + '**/*(config.json|locale.json)', 'tools/gulp/deployment/**', 'webapp-onboarding/**'], + heatWar: [dist + 'heat.html', dist + 'heat-validation_en.js', dist + '**/*.{css,png,svg,eot,ttf,woff,woff2,otf}', dist + '**/*(config.json|locale.json)', 'webapp-heat-validation/**'], + wardest: 'dist/' + }; + + taskMaker.defineTask('clean', {taskName: 'clean', src: path.output}); + taskMaker.defineTask('copy', {taskName: 'copy-assets', src: path.assets, dest: path.output}); + taskMaker.defineTask('copy', { + taskName: 'copy-json', + src: path.json, + dest: path.output, + changed: {extension: '.json'} + }); + taskMaker.defineTask('copy', { + taskName: 'copy-index.html', + src: path.index, + dest: path.output, + rename: 'index.html' + }); + taskMaker.defineTask('copy', { + taskName: 'copy-heat.html', + src: path.heat, + dest: path.output, + rename: 'heat.html' + }); + taskMaker.defineTask('sass', { + taskName: 'sass', + src: path.scss, + dest: path.css, + config: {outputStyle: 'compressed'} + }); + taskMaker.defineTask('compress', { + taskName: 'compress-war', + src: path.war, + filename: appName + '.war', + dest: path.wardest + }); + taskMaker.defineTask('compress', { + taskName: 'compress-heat-war', + src: path.heatWar, + filename: 'heat-validation.war', + dest: path.wardest + }); + taskMaker.defineTask('watch', { + taskName: 'watch-stuff', + src: [path.assets, path.json, path.index, path.heat], + tasks: ['copy-stuff'] + }); + taskMaker.defineTask('watch', {taskName: 'watch-sass', src: path.scss, tasks: ['sass']}); + + gulp.task('copy-stuff', callback => { + return runSequence(['copy-assets', 'copy-json', 'copy-index.html', 'copy-heat.html'], callback); + }); + + gulp.task('i18n', () => { + return i18nTask({ + outputPath: path.output, + localesPath: path.locales, + lang: 'en' + }).catch(err => { + console.log('i18n Task : Error! ', err); + throw err; + }); + }); + + + gulp.task('dependencies', () => { + //TODO: + }); + +} + +gulp.task('dev', callback => { + defineTasks('dev'); + return runSequence('clean', ['i18n', 'copy-stuff'], 'webpack-dev-server', ['watch-stuff'], callback); +}); + +// Production build +gulp.task('build', callback => { + defineTasks('prod'); + return runSequence('clean', ['copy-stuff', 'i18n'], 'prod', ['compress-war', 'compress-heat-war'], callback); +}); + +gulp.task('default', ['dev']); + +gulp.task('prod', () => { + + // configure webpack for production + let webpackProductionConfig = Object.create(webpackConfig); + + for (let name in webpackProductionConfig.entry) { + webpackProductionConfig.entry[name] = webpackProductionConfig.entry[name].filter(path => !path.startsWith('webpack')); + } + + webpackProductionConfig.cache = true; + webpackProductionConfig.output = { + path: path.join(__dirname, 'dist/prod'), + publicPath: '/onboarding/', + filename: '[name].js' + }; + webpackProductionConfig.resolveLoader = { + root: [path.resolve('.')], + alias: { + 'config-json-loader': 'tools/webpack/config-json-loader/index.js' + } + }; + + // remove source maps + webpackProductionConfig.devtool = undefined; + webpackProductionConfig.module.preLoaders = webpackProductionConfig.module.preLoaders.filter(preLoader => preLoader.loader != 'source-map-loader'); + webpackProductionConfig.module.loaders.forEach(loader => { + if (loader.loaders && loader.loaders[0] === 'style') { + loader.loaders = loader.loaders.map(loaderName => loaderName.replace('?sourceMap', '')); + } + }); + + webpackProductionConfig.module.loaders.push({test: /config.json$/, loaders: ['config-json-loader']}); + webpackProductionConfig.eslint = { + configFile: './.eslintrc', + failOnError: true + }; + webpackProductionConfig.babel = {//TODO: remove this when UglifyJS will support user or + // Webpack 2.0 + presets: ['es2015', 'stage-0', 'react'] + } + webpackProductionConfig.plugins = [ + new webpack.DefinePlugin({ + 'process.env': { + // This has effect on the react lib size + 'NODE_ENV': JSON.stringify('production') + }, + DEBUG: false, + DEV: false + }), + new webpack.optimize.DedupePlugin(), + new webpack.optimize.UglifyJsPlugin() + ]; + + // run production build + return prodTask({ + webpackProductionConfig, + outDir: 'dist/prod' + }) + .then(() => { + }) + .catch(err => { + if (err && err.stack) { + console.error(err, err.stack); + } + throw new Error('Webpack build FAILED'); + }); +}); + +gulp.task('webpack-dev-server', () => { + // modify some webpack config options for development + let myConfig = Object.create(webpackConfig); + + myConfig.devServer.setup = server => { + let fixture = require('./fixture/fixture'); + let proxy = require('http-proxy-middleware'); + let proxyConfigDefaults = { + changeOrigin: true, + secure: false, + onProxyRes: (proxyRes, req, res) => { + let setCookie = proxyRes.headers['set-cookie']; + if (setCookie) { + setCookie[0] = setCookie[0].replace(/\bSecure\b(; )?/, ''); + } + } + }; + + let middlewares = [ + (req, res, next) => { + let match = req.url.match(/^(.*)_en.js$/); + let newUrl = match && match[1] + '.js'; + if (newUrl) { + console.log(`REWRITING URL: ${req.url} -> ${newUrl}`); + req.url = newUrl; + } + next(); + }, + fixture({ + enabled: devConfig.useFixture + }) + ]; + + // standalon back-end (proxyTarget) has higher priority, so it should be first + if (devConfig.proxyTarget) { + middlewares.push( + proxy(['/api', '/onboarding-api', '/sdc1/feProxy/onboarding-api'], Object.assign({}, proxyConfigDefaults, { + target: devConfig.proxyTarget, + pathRewrite: { + '/sdc1/feProxy/onboarding-api': '/onboarding-api' + } + })) + ) + } + + // Ecorp environment (proxyATTTarget) has lower priority, so it should be second + if (devConfig.proxyATTTarget) { + middlewares.push( + proxy(['/sdc1', '/onboarding-api'], Object.assign({}, proxyConfigDefaults, { + target: devConfig.proxyATTTarget, + pathRewrite: { + // Workaround for some weird proxy issue + '/sdc1/feProxy/onboarding-api': '/sdc1/feProxy/onboarding-api', + '/onboarding-api': '/sdc1/feProxy/onboarding-api' + } + })) + ) + } + server.use(middlewares); + }; + + // Start a webpack-dev-server + let server = new WebpackDevServer(webpack(myConfig), myConfig.devServer); + server.listen(myConfig.devServer.port, '0.0.0.0', err => { + if (err) { + throw new Error('webpack-dev-server' + err); + } + }); +}); + + +gulp.task('gulp-css-usage', callback => { + return gulp.src('src/**/*.jsx').pipe(gulpCssUsage({css: 'dist/dev/css/style.css', babylon: ['objectRestSpread']})); +}); + +gulp.task('css-usage', callback => { + defineTasks('dev'); + runSequence('sass', 'gulp-css-usage'); +}); + diff --git a/openecomp-ui/karma.conf.js b/openecomp-ui/karma.conf.js new file mode 100644 index 0000000000..91c5040942 --- /dev/null +++ b/openecomp-ui/karma.conf.js @@ -0,0 +1,102 @@ +/*- + * ============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========================================================= + */ + +var path = require('path'); +var isparta = require('isparta'); + +module.exports = function (config) { + config.set({ + + browsers: [process.env.JENKINS_HOME ? 'Firefox' : 'Chrome'], + + singleRun: true, + + autoWatchBatchDelay: 50, + + frameworks: ['mocha'], + + files: [ + 'tests.webpack.js' + ], + + preprocessors: { + 'tests.webpack.js': ['webpack', 'sourcemap'], + 'src/**/*.jsx': ['coverage'] + }, + + reporters: ['progress', 'coverage'], + + coverageReporter: { + dir: 'dist/coverage/', + reporters: [ + {type: 'html'}, + {type: 'text-summary'} + ], + includeAllSources: true, + instrumenters: {isparta: isparta}, + instrumenter: { + '**/*.js': 'isparta', + '**/*.jsx': 'isparta' + }, + instrumenterOptions: { + isparta: { + embedSource: true, + noAutoWrap: true, + } + } + }, + + webpack: { + devtool: 'inline-source-map', + resolve: { + root: [path.resolve('.')], + alias: { + i18nJson: 'nfvo-utils/i18n/locale.json', + 'nfvo-utils/RestAPIUtil.js': 'test-utils/MockRest.js', + 'nfvo-utils': 'src/nfvo-utils', + 'nfvo-components': 'src/nfvo-components', + 'sdc-app': 'src/sdc-app' + } + }, + module: { + preLoaders: [ + {test: /\.js$/, exclude: /(src|node_modules)/, loader: 'eslint-loader'}, + {test: /\.(js|jsx)$/, exclude: /(test|test\.js|node_modules)/, loader: 'isparta'} + ], + loaders: [ + {test: /\.(js|jsx)$/, exclude: /node_modules/, loader: 'babel-loader'}, + {test: /\.json$/, loaders: ['json']}, + {test: /\.(css|scss|png|jpg|svg|ttf|eot|otf|woff|woff2)(\?.*)?$/, loader: 'ignore-loader'}, + ] + }, + eslint: { + configFile: './.eslintrc', + emitError: true, + emitWarning: true, + failOnError: true + }, + }, + + webpackServer: { + noInfo: true + } + + }); +}; diff --git a/openecomp-ui/package.json b/openecomp-ui/package.json new file mode 100644 index 0000000000..1d9a479e43 --- /dev/null +++ b/openecomp-ui/package.json @@ -0,0 +1,102 @@ +{ + "name": "dox-ui", + "version": "1.0.0", + "description": "", + "author": "ECOMP", + "license": "SEE LICENSE IN LICENSE", + "scripts": { + "start": "gulp dev", + "build": "gulp build", + "test": "karma start", + "test-dev": "karma start --auto-watch --no-single-run" + }, + "dependencies": { + "classnames": "^2.2.5", + "core-js": "^2.4.0", + "dox-sequence-diagram-ui": "file:../dox-sequence-diagram-ui", + "history": "^1.13.1", + "immutable": "^3.7.5", + "intl": "^1.0.1", + "intl-format-cache": "^2.0.5", + "intl-messageformat": "^1.2.0", + "intl-relativeformat": "^1.2.0", + "jquery": "^2.2.2", + "lodash": "^4.13.1", + "md5": "^2.1.0", + "react": "~15.3.0", + "react-bootstrap": "^0.28.1", + "react-dom": "~15.3.0", + "react-dropzone": "3.4.0", + "react-fontawesome": "^0.3.3", + "react-redux": "^4.4.1", + "react-select": "^1.0.0-beta13", + "redux": "^3.3.1", + "uuid-js": "^0.7.5", + "validator": "^4.3.0" + }, + "devDependencies": { + "babel-core": "^6.9.1", + "babel-eslint": "^6.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-transform-class-properties": "^6.10.2", + "babel-plugin-transform-es2015-destructuring": "^6.9.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.10.3", + "babel-plugin-transform-es2015-spread": "^6.8.0", + "babel-plugin-transform-object-rest-spread": "^6.8.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-react": "^6.5.0", + "babel-preset-stage-0": "^6.5.0", + "chai": "^3.5.0", + "css-loader": "^0.23.1", + "deep-freeze": "0.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-import": "^0.8.1", + "eslint-plugin-react": "^3.14.0", + "expect": "^1.20.1", + "express": "^4.13.3", + "file-loader": "^0.8.5", + "gulp": "^3.9.1", + "gulp-clean": "^0.3.1", + "gulp-css-usage": "^2.0.0", + "gulp-helpers": "^5.0.0", + "gulp-jsx-coverage": "^0.3.8", + "gulp-rename": "^1.2.2", + "gulp-replace": "^0.5.4", + "html-loader": "^0.4.3", + "http-proxy-middleware": "^0.8.2", + "ignore-loader": "^0.1.1", + "isparta": "^4.0.0", + "isparta-loader": "^2.0.0", + "istanbul": "^1.0.0-alpha.2", + "istanbul-instrumenter-loader": "^0.2.0", + "jsdom": "^8.3.0", + "json-loader": "^0.5.4", + "jsx-loader": "^0.13.2", + "karma": "^0.13.22", + "karma-chai": "^0.1.0", + "karma-chrome-launcher": "^1.0.1", + "karma-cli": "^1.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-mocha": "^1.0.1", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "mkdirp": "^0.5.1", + "mocha": "^2.4.5", + "node-watch": "^0.3.5", + "prompt": "^0.2.14", + "react-addons-test-utils": "~15.3.0", + "react-hot-loader": "^1.3.0", + "sass-loader": "^3.1.2", + "sinon": "^1.17.3", + "source-map-loader": "^0.1.5", + "style-loader": "^0.13.0", + "url-loader": "^0.5.7", + "webpack": "^1.13.1", + "webpack-dev-server": "^1.14.1" + }, + "engines": { + "node": ">=5.1", + "npm": ">=3.3" + } +} diff --git a/openecomp-ui/pom.xml b/openecomp-ui/pom.xml new file mode 100644 index 0000000000..456469e044 --- /dev/null +++ b/openecomp-ui/pom.xml @@ -0,0 +1,84 @@ + + 4.0.0 + + + org.openecomp.sdc + sdc-main + 1.0.0-SNAPSHOT + + + org.openecomp.sdc.onboarding + onboarding-fe + onboarding-ui-war + + war + + + + + maven-war-plugin + + webapp-onboarding\WEB-INF\web.xml + + + + + + + + rackspace + + true + + + + rackspace-public + Rackspace + https://10.208.197.75:8443/repository/maven-public/ + default + + + + virtuos + Virtuos + http://nexus.virtuos.uos.de/nexus/content/repositories/public/ + default + + + + apache-public + Apache-Public + https://repository.apache.org/content/groups/public/ + default + + + + elasticsearch-releases + https://maven.elasticsearch.org/releases + + true + + + false + + + + + + + rackspace-snapshots + Rackspace-Snapshots + https://10.208.197.75:8443/repository/maven-snapshots/ + + + + rackspace-public + Rackspace + https://10.208.197.75:8443/repository/maven-releases/ + + + + + + diff --git a/openecomp-ui/readMe.txt b/openecomp-ui/readMe.txt new file mode 100644 index 0000000000..6b70dfc5bb --- /dev/null +++ b/openecomp-ui/readMe.txt @@ -0,0 +1,25 @@ +# OpenECOMP SDC(UI) + +--- +--- + +# Steps + +### Install nodejs & gulp + +#### Download nodejs from here : https://nodejs.org/en/ (take the "current" version with latest features) & install it. +#### Install gulp by running the following command : npm install --global gulp-cli + +### Install DOX-UI a + +#### Pull for latest changes. +#### Go to folder dox-sequence-diagram-ui +#### Give the following command : run npm install +#### Wait for it.. +#### Go to folder dox-ui +#### run npm install +#### Create a copy of devConfig.defaults.json file and name it devConfig.json (we already configured git to ignore it so it will not be pushed). +#### In that file, populate the fields of the IP addresses of your BE machine you'd like to connect (pay attention, it is a JSON file): For example, http://: +#### After everything was successful, run gulp. +#### After server was up, your favourite UI will wait for you at : http://localhost:9000/sdc1/proxy-designer1#/onboardVendor + diff --git a/openecomp-ui/resources/css/font-awesome.min.css b/openecomp-ui/resources/css/font-awesome.min.css new file mode 100644 index 0000000000..24fcc04c4e --- /dev/null +++ b/openecomp-ui/resources/css/font-awesome.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.3.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.3.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.3.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.3.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.3.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0)}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-genderless:before,.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"} \ No newline at end of file diff --git a/openecomp-ui/resources/fonts/fontawesome-webfont.eot b/openecomp-ui/resources/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..33b2bb80055cc480e797de704925acaba4ba7d7d GIT binary patch literal 60767 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%0DKehr}RFC`2XTB_?==0w^)u1m5PYii@6f)6_5Ydu zv+NIZ_(Rt}Q++LT5!n8!J4x!>sE&v_3*cXat{Zq5;17w;B6$epw}$Rg`0nFJg5D-L zYvw@(goc5TeJjM($AJAZxZHZN}RzBcP0=_>ZI6WVGU zO#Nk-YqZTa3{!84P0K~GsI#32<+_AsXU43wILwZS(8n%S9)lP!Dg$$e2$$9$E?^Nj zql4do#+a8qEP(bD2)DpP|$dp<`TZ#bY6^~7Xv_Lle)77^OsVhMOm(@ z??8O8kA%}ZWpR&2v!7qFSw@TF6d*=9YT^Rtk(n8p=CQWvt1Om=n&5uP;GiT6 zMRvbm39kbp*KB`qoVg12w52Z)T}`X41P>D|q_%K#zuhwb+BpEogY0E)KnSy#@+(m5 z20@LG@LUEvk`I|OIUV^^0_YtG9AElBS!Dsh%k^P9r0moJ25Lkm-gh#igwBDhAOj0!EF&8MxV^-m1U1MEd?H7} zL;r;tfFIT|ei3-Z@gyM=!%Ba7Pa626JRAA`V<2D<{RLRT@0o=bE)XF)nFtUL67`2L z{?_Qz_`Yy2t+I)?9&z#z__Q%L3pnhN}U z_rN#WU)kD59D4whbSYERHY01jM7id50EuI1ctl?<_IT=Y5vP>(sNNkB&U5&F&^kBhm5y{o!y!F+4wdxXoy;!4$W`?_nL(+bK_QDAMUV1O0AwZ| z6j)s}9YEZbY-C^Y)9Ej`aS&~{sXCG2SS3ce$EY;Yv-c8TlrD$C85ATlLZpGP_YWfi z`RQ?z1@zIfa{yqfsUDMEPpwuX%XHdO+ASb3EPi1fBPocvfgsC0xa^CG2SWBPWQ&GS zpCXPti8b>WkYbf#Vg%A?&_UwUsUQE_t4GX?7QqUpKJ2Iw#%)Q4Ft(`9Ja&Yk{C@38 z@%T`)#wWy(kKfEH;ZBQ(m*Iq&L=<)4D7tNO{SsA4Fp4D?(Ex6nQS&f3TK|atgj`fE z2|OX0(&(ZqxJd~IANX&dvX?U14_<~h2(lP6k^H8ep;2HW6oPo?U%v{M>|{sU~;p zLTv$OTx3H^4zNUn4wUfo>j{CEvTC@C+cw+cW*ABH6u@!M2EdBL?1GbL_#e;7YDBas zic?MTazk(khXSyPeDom_I~wkLv?Wr8<%egEfM!*M9^kl$>zsVzaP}S!gcD3;Czy#58RTm?`p)RTS8I<-sC3+*n{A)P*rU!@Npj`e{x9xsif2v zTW`{q3p^?A!Mk60Q{(FLt(&TVe9z z0-!PiOV02JcNeq?AbJaI+B9xC;LB=}Ho0vH(@;Qe0zq~-8ckOa!(u@Wou`p_TR|QT z38H`lJE$G{q1egUX@&v$x7wNLWD#j*!D58GLv^bT+jpdKBrK#SsQsWK(+RO40VA^w z0nA7MN1Y1Fc#5JkwD5TtHG1t;lo=i)U+kFG?1Jh11h9382!marrRE2eZh;JGh`wNO zQA_~n?%97HOKLA^#oG(5*bgSllS%rOc(S%Yj00cYR;!D9G_90{pfq7D4I*$k?byOV zR|epi%oIJ{ou`5zS!-_dnxOa{uNv)(luMo^5TCOItq}2}sxCztLEzBGS)Mf6dzaw< z!GweAgvFYJu&mH(Vl9HJBV%=Jz~~i%nDGIF9ncTET-AQ=fv{L11&K_;ei!iht(!De;ym|y7ksL|^5Ko~B-vSh80++s?unD}bZaYa@ zPH4M$&fw;xEGN3_H1vHW><%-+dg7dfW)F8$bB+h7sThoOtteO(v{&-+iK}r$%G))# z*Nhx^!ZMj1VeG?EkWg+0CYQSX1t96fV9^3c+9C393LU&CHsFCa1q99$`zTMsEWwLc zxsw1|A?k8-m8HCrk6;K7dhNDJN3R9iws%6vTq_}PtR2CZ8TG;ltZ4I}sU+^s8`P3F5QxrypG1-{ zGlr^7$Wsy(lo=xfC~BpKfg<2z4OEeEF@~x{Pi7O#CvqMJy+f+}=CB_$&IuEslB@s# J000000038FvZ??8 literal 0 HcmV?d00001 diff --git a/openecomp-ui/resources/fonts/fontawesome-webfont.svg b/openecomp-ui/resources/fonts/fontawesome-webfont.svg new file mode 100644 index 0000000000..1ee89d4368 --- /dev/null +++ b/openecomp-ui/resources/fonts/fontawesome-webfont.svg @@ -0,0 +1,565 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/openecomp-ui/resources/fonts/fontawesome-webfont.ttf b/openecomp-ui/resources/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..ed9372f8ea0fbaa04f42630a48887e4b38945345 GIT binary patch literal 122092 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 +|+&Vdls@0SAya!5R?! ziVniRxeJP4Y;H*nR85uKLQ+b)snu%yXP=4xXp%p*V(|Ms+&!Ts<#?NwEy!5pm*V^D z-Dg(@-2T08jZHJMJ;tBX$}KEx30j?M*HUJ5Mb<~Bq@%FJ=7BOwx*lFd+F$0K&xW1pdHaQkd=Bs^f@3fK$p_V zG9Hv2&)O0|T2OPy!GKHF0X#SXs4z0Taeg=3QC~5u`}}#6=S3N37Oi2%(w*yCCSSO< zyLqvN<$urJ`x3fcQz5`fWSUx3WgYwdE#Xz6*&n-Zbw~V+{iC zvns#ZXmMIqg)QTL7MZ;K`UR~kCQXi&)xL25g^ye`E2@RW`phY`J}1GhPoTK=wg^jS zns~aMSW_T9(k1JEf z?H?bX?7T1k`f}^KrDwT)O2xQ#Ilv(aC0M;dm(kt|>3YmubBNSoB<_T?25ll$8=6Rh z5r8U~Rhl9!p)LqJks|QabdX~_-6T^Vh;0oAU$ux&w zujJkfnis{aOi@)^-BSrwuIVv;KOM6ud(XYJ%&#%7$o2=~I|BZyc%;FVOGX}x;4i62 z#nhmr3{_xm8B?8h#BmmRlFiViv2+8B>%c?Q8O1dDL_H+<36jQ)hFz84vhc zn6)AnaW$~B*0cN8Z{ro=Xh3n4xt!ZC<`EwQQ%qwl3*E+A>3#@s3*(qj!l5yPn88L_ z7(_^#A%s8eICk+?(7#06W3w+ENk(Qvq%6VGX~IBf;(<^An=lx=tdS801ZTsp8Wn^&D$b;III8>|cq?v&%ITV+`EV8j&r1NHBD%&}Fg9G&f1 zB@$7x?VS#%Ta^bTS%o@e%vFW1syAZHIppB6k|AF>n>jVk6?IAb!PfQ{9-DjWA@^+k zw_86a>y;LL{@f*Ps-wd0*uFuG`SGFjxHdW15tQ4;rGts;TFz^$6Twqn6uiqAd4|xe zmC7B)$|*i7uS3T40ob)v1O`<>;P*W4}nzfnD?w$^S>~ zHq8}fG)A;rG)l!$Sn7xz$MJu=-DB+&J}N(Yyh}&BbgXe*wD_MM>3?XfKdOym?~iTs z2)vZSPHFm|8s!g_(~Z>}Q`<=FZEAFyLu2!&g7?z$WABgc>)1S#p!guN_B00#_m7Kv zYS!sLUQ&AWozhaJ>4D*T*;S`X4*qrcsxnfbY(R7AGx|D|8$Y*Rmv^}5Qe(2D4-oO12yVqCYaHdH>)ZkV9?A|Af zcMffTg6;RK&;popG4Lj!uXOmXR7p*^CU}#!X0TKlhJgex3ob?Qws>(WOu#fO7KENG zx212(mOf?6@f^$caZnQmJm^z`0R3rNL71-Im3y528}vY6j_f{Hm6JQ6!WmWtg9 zSuIL}$Ac_mlca&eD~G00inpirU`vp-fSRd~Vw+a|c~y>I z9kS{9-|9H>D!q;M4fY$o>YtNO8of^@+A^s>CsArsPVNg)DO-q2ec$LE>}P#^Ad`HO z^*xbF{Rxr|!7B-RS%c_7oc@7wjse z&9euO$5W}etj*s13L9s8%m!=~2pQ=|0jf%lC~@L-#6KQz6HXovb%R zn`vUze(*aadj+Q>r&Be8qz}Sqr7cN%axzJg!2m!GQzeIC9T8xap{TBa&x=BS9f0@; zQnXi$bBtG(XjhzjS=8Fx+G2@bcJ3A05|&HES!29C?D2%#uEYggFSu z66gc+2e}`T#gyxqaGLLcykqOZt-V}|d5y=sF)v%QbE(| zJQgc^&By^?H1yxH$9Oty=T2A6#l5>aCNA$?ylnd9bVwi=6lpE?{YK37cwsd-8d(&k zmDIB*Pb^_F^k3{##MTuoC`-FLJfk+J4AEQZoZ6h47Wl*9Ps+N>jHP8|m*LEGek)Fw zmGL#kw~Adfr_#oUr_#Vw+GGoR1<#hTFNg=qj1TZARYLR0z#joUVm@aeC+r14h{VZA zKxAlRC3Z9p7%uLzqymZ)gGyVjm^5Nhp*5q7F8PNf=uRM`hU$cpbb!S5 zR%OHU$ENpD+T8uDA)W-yTz;@GWOkoe+dhgWL$;%PxBg4sI6Ta ze%s0KVz;~o3C;PB5Hpm;6y4xFeUaC zf&0l8j&}GG9ARoXOVFWd6Clwzlas(8_%&lVr)J4)0=%0zmZa%D1iQdQSdZ?L-$IrK zBjrccQ+#%(rkP_G9`0Hg@>A*|5I1_O>1WW;@fT?5FfcTH7&?Lwbl8Ec#m-+435*$5b$5>rzv_XF+v9zD9cb4RpaM=)FLWJ1^ixm1HFmk zzgd6^(pU_`BgavgIrd=XRG{$2!ldH>F zZcOX@ickCa7tT4b^k-$h3pK~gva;5AswouRHX}im`=|PS!HMJNPaV@GX{1lYdrdC( zsbEHAHXCF_VM#Q%!AxRQmq%G9N-$F{8ngEH3L`!=uB3zfq{jETd|aZENErR%YvxN8bVKsfz~13CUchHa`O3fzesD>u+~Ivd1!`)v{1o;^71x6v7= zQTdljtS(P7DrMh0^+Uszlz*6!;;6n9?54@dh=^IU2c~8va9RV(dySQ}ynp5QUxYL4 z5OKW7zw^VI%zuh!;Ls~dibv>KGPM2>6YAkH{}?<0eZo%|CIndFU0fA5l>jQ>Mbkf~ z;ODKzR^(lK`Y!+8{<8L{8l)^RI$mdl2Vvv*rjDaM=g+I$N+k4 zR%IJTiV`f<(+UqHmZI@nkmUWix0S||WIPL!N#j=-Yq*h?_-b&+|1I^h_egXwv zE&~MXf(J=h=zYmXfv4eU)$WV8pa~|wW)MR*ulH!23~($Pq_%+gaQC*0;~pYOU^o*BZf2S^4CPyV<=&iJ(*|4G<<8h*|(rENCWLnX)nm%SYk z<%bP&sXU6$6Lz@t0Ln+i11N&#fJSo;-J$+fy$Vt~46MT|WEg-jVk+!4jNXpAemE5L3J-%mkzuggkjZoQq^qKQ z;ayx(VIU%SDDkf18Z_%Yk);Y1R3d5;^}?2wNt>~z{D5!r;H!f3g$srg!_8DR({1Mr zXh^4lbPB7(?M=491_VBSs`~w=ibytcag*`BfOO;iri+oUXks=b&0EZ7E&^NOmhnD& z6Hi=*+aEVx65iG=AIBq?;r@dU7VoeYx?{XFe5Z78BOV2kLs)Ran$h%>Au7F;){_0L zX}SO!)o&8&d^|bG92q8$_?LW8p9BIp__)tzbG_!W*$@)s>n;q*a4BeZ@zjaGJn!-c zoX*f#>n;G zs$)-spz5eQfr;%E)YR9`yXBViHcidtrf#AX`VaK~eRZkOp&ztjl-Hv$rgK;)#Vg`G^N9=rDqatUz*Qn2|s#h#rA-CCf7yo4_|k zlS~;P2rU;(Q$Q_|rEC|_lQ2Ogb2SBjP?~di(nLOIy!N}DSoCGViZy{fO#f~ezqqYic~5t&8gQeY@6&?X4+aZSN-IX?FpY- zwx*M|v^Q*By=$xB^RR9pH*>>6R3aZenhtaKf{l1UAl-CW2sl+>@Nl|HAzjjlW^G8C zcxG?!nGyQ-x($5{RHtv7vcUGd7An+sQH z$U(o+xGOpMW5p#3l9NiqNJJ9yaQJZo*u`AXL^Ojb1DpWIX}C|;32iuswcNosrkXKf zroM6TW9%OG3cDx&Of+!)m!oyjoo5H+O9T6ibpBl@L%rZ*|)ZBxaR8= zbmr^VY}oeJOMm?V< zPdPlTW=LlN^4noS*9sdQ-`I90shuW80#XCT%ofL+g-0pL`2FC8V19&h=I-3#)&qcW2a}_UB}J|1U}AQV9s+_wb^`XBvBQYJ;{e} zW@Q%EA4tzWU~K!%{8!i|*If1KY3Kjjr0?A^t$!2s(=hmDBi;Oq&Y#OW4xj6pjcON6 z|HYo_p6Wj{k9V!d0lyku{K3wJp{kaa1>**2=NdS! zYVhMDeRgbP$I8~8=I++X6;ldD$Q!!o>PJO}qzQ{U8_Hr$mGv{Gt~hVUOtX$L7mH6R z)vKR5qkV3Dr4W-0x}f&%huXWJF8_2ojL!nhG42N@r4SDcS?ob_$Kq#jt5Ax^&dI@V(g! zUNDYNobIhqWR=^tcW!iz8-~QbC&zkdwm7?Y#`DzhfyupB=ii$fKBpp>UqIebaA1%%QuJNcb z*Ld{1AkQIo7~i?HsiA3U=Xf(q!H39Y+ssj5qLCc$&wbB${+VZ3_xD5zKy50dC?R5m z@C3hTq-g15G;kQll~Pc9Qi+j#I0=yj`HmO3%7TvSUJ}@zEDe6?iK2A(34g}V-++|A z!cRv3ROiru_N4r0A#*N~9}H{nG!g`x@@A@hSQ^ZKfjX$Jj32d|f@#!_I!)Rrr{tjZ z2PPZ(y5VXd)SLtpb_|&gIA_?gV=U*6s$h!>QrF71JEDf337mC@}GvhFHx|zPzq=A z7}Qm=TLsfnpkG1nwUec>*&!uN44@gcL;j%%-tohD*@?HDW%5A+nn5X&@^~uv7k?-~ zNb;1s9E#4AFGf8lQ=^a9LaLWHe7 zU}h{_L&Zr^>UOO@kzKuO*J_3%?_0e~?#qk3+)r0yyHG=6PFG+J`K1Qb1Y~CJ%QTy& z)jJD9^p7Aquo?v;L|m?@UtdveJl*(-?i2krnQFEeDJ5HzF%Av(uQ@W+_&1dmUL3>A z=T_GmTU+Kts;X<*KAhR)zVqiATQ$Y2lr)B9ITG*Jgl!G1T>wPH4FLBF=@+&o0y7fn z0Lpkj1dCW&rD|Hr7SyuJuUaWsSc%pa>s9D$@c{k-cd@K4$^E3|6ZoA_b{wEPN>dD2 zHRTLKFMP@hN3^~ruLr4LXdG$>Pz~iQgr{gvcY?wV(wxCQhJHaPtj!d1Jckj$PnG^I z0T|5;IZtu?ho!M}A_t6jJSXS!sEp-KrLCT_LO^3=>2jc=_ISg`>PAN!% zVK5F14Z4y}U}w6(v83C^0uO>SO`lmleb&^~E3Q><`t6yOtHx(8oL3ogMuMAWZoMZ` zcHbAad}rVKiQtVJVD2F7nq=5@$PbrW>lUV*-Pf+D^y^#KHg{Y(m6h`a+gui9+ETVs zUNdL=Ck`$5SUz#pLu#xQn*Jx@YlBT=Jx1nkN*av>XSR=%w!SVoAt-K3De|U)0x8=Xw_& zwg+ArJV5b3m0TgV-{9-yJBP^|{7yE1ot9gWIWECC2eQk|0{*3_Z%sGR19cr15$e4cY@OF>(-tp3car=xOvn~D)cf(UI2)38U96^w9@59ljQ2C%5#t0)c?5$HI3iEk4Kn_dC5Uiqh3lxY1ItDLa%Fuk-$YwtOLs(U2g* z0l=`G0yU0=arf74epXgnKVgQ==FqFQ>nr_^OUIYFZ6CJ<&($p-tFYQ!i$dd4Wz1_I zE^4{)lavoeWM^=!naC>m0GE6t% z1AZQE&8g?J>0Y?fEg$_?o+9`q9DJjog_A;Vl(X#z)r8@Nn>lT?I=fa2X^Vd_;% zxJo0qC8y=IRvV)gn*gi=DN~4`=ZtUs``Ih6doa-~+x;9wJ6C0msR>VI(01LO&#_tT z1~!X#-g%uZSm{Zqa0Z00B8mkZ&4~xETY0u|?0b`|9%Xe~uiqWM>41E@@u#=;c+RP_ zg7bt6k*4S}Hr7-ySywjqC);m-YtNqio*h4)TUM70rZk3|il*tZ%fobQ-8r6J%F5-d zkM3T$V9u+ds6T%jbo{~5a{py0vBi%-#9ZQ6k3H>w# zz2Jh`aZ=`!zJ}yz8MywELvT}TQ zg8I{2uIX2+YJHi2JJy(+Xib4S{oEai^LoE=?beVnKnR!l66+^VEDNU^(=E$)&z|t~ zhJ#O1)hV89SvdIzQ`W7CT>Y`e@JzKimZ?qn@;Oa+TfBVUrz2IKdGlk+3Li( z^W%wyGlHS@3vYk)jK;bJ8J^25D7$4rru>>+4awf$YTSj3t zi~?=I7!Dc}U@hIH3Yw=%B^N&)CP7y!Lw>A84AD>t>_b+g_#ZC{Pf0FGid;Q7Jfg$H z)fjUJGQQd>b=`{GEkA|P)A-7yGZyot>l5S3Q%ZZNK3NvQc(UH+MY)3;o}N%!yL)*{ zx~9%v=ASTSeZqK0j9DzSHTV1_TlRgPb;>F0L`6(S%8+VTGw;;$SzuX#57B#b-X3 zLjYypX<{qOpIdU>ye3b}!Wq#}C^}GPcbxWT5M*d|!{<)_pz_RaDp_dEo#by`- z$yg_4iN^{-ygV|~m|*il!9;a3uaXPYE9`NK0AXs!cn;oIZbXqH!iXYD6|yA#U@@Q| zuVz!^K7W3IOdhj>Dd{JbS*%xy1tU(=Tpc#xlv&fAhe(Dix}7(JX&fL0R?K9CSqx-% zexP8pE?`{-b(JLTN_&g97FbX0*rrB+EGTO9mP~C(h87Qy+tNHLS_$zNZ~x&B@3Yxk z=gpbKrp)E@{;+??ZS(jaWcd%eyK~%D_DU()xs!kO)z+CaTU%z$8vHc7^TCI=t?$n7 zW4ltm+KCVGt4b+N!qJkF!&z^( z-{q3Y;~CO-G1+Jjp-|w_G{rR-ONf)52Bv=47`bTwN##K542uYgy2lagV=fv%6J}ag zoAJ|fnA@lGTTLA#-}f}8kc<|2uL&VC$YxQnXk|>Q5ud!&KpF9zP({*nq>2=6$6P}Y zDP_?Ov4X%Lj)p<&aGzQs4#L#7p%cLK4G6Uk)Fv*4lv9BqyXw$(a$pxQ%S2Bg(KBJT za1B&GRJ*4FMb<*@7Q>Ls`%TETm|!h%a!&Bh8o04}7QyQcS2bDXvn1ekw!mTk7EX0yUS z+`3b7W7qI>;^PNwhwr`AzSODRcoi$pP4)(x-p$P?}hU`nJX*DCC{wS zu3a^$&KjK1Jw5E75(or6nnTw^jW(OJYwipRU=a!p2+MLHzpq&xb_;$Phpt6beLS?c zx+<&ny3G#Zt9_e8Q$mXBf%&|h%Qj1y%;hf<+TfO;_b+SD(8}7*yydKG&RTVawXUoz z60yh5uwJnW7j9nMR;DFDwKmqr>J-`Pa>3WNBOFeRcf#j4b+a4_%O>Lq&J(&)Az$jp zf_Iziy%?9Tcpe>-s)`~Gw6z1az_i7OHKuVe9|g1!aP zOtQ!vk|=l?>qp2w)?aOI;pP#Nc<53Kp|R)Ag{rl;uDBy0bQ$Z16=1dsphoK+u|kJ{ zLnk6u2li9);l?5Wlo0O;ViyWg*j~Xu8>H z^=p>JV*vYrSak!9ebwt-Z-&5R2C{*TR!RaNzYt-)6cf& z_6>gGy6;c=Z3nK+TOTS<%*&m<=)rI8?EJ%Ie@|e^d>dC3D*{XM7slOQQ58KS0uTSB zk69;#%R+4v=l%CzZmR3653d+k8LCd4@pBfq{R!h6C)&qVR$e}@?3{4jqxF~n?8sNA zPno)Cf^Gfs@XD~w>$Qcnx`${?7#&0$189taqtJT{gh{1AJ&70v;1KCU668ribX^t3 zhQ^1I3|>BFcq~f71v?Crh=4t~e$DENmTdK6>$-(G<1c4UsFkbiKE0)*xqL;1OZU~< zQ!%$(>6$cSl1&e?p6~48HLeP)ucNs$;Hqp;$|ueC&(>sCSFxhJxuZq**{kH*31>2I zZs9uX;_7Tm#p*TdgZ2Qtp8T^Xl`9REu0UsVhtFE!s^NRS)5C(g4RyOJWp^xPuk}H0 zV&Z(!Pt!Jj^xkxm1Deu1;s>(kH$~4F+GbR#xW|y+PhZh12n$xgml>x-6ZWhSkhO=I z|3d?oD`661FCVwY?{jU?pULJ}C45vYoSRng|# zEdTpMXLqt>+Axj`NkcDx{$BMx)}xk&bvsSDXX zCw^?2{GjV5eiHOf5*c%Mr_C9HG!Yb#oEt`X4BR zL&i7WD2KIEMD1gVE3UkiI}z3+dRHXL9AAP#>-9e`uMPMjGSk?9J^PJUnMZip8sCiu zg7NY<*sKswl;2wE^Ez+6@(Sa%$0`DW+VY>XTUh0noGe*>7nlv_tKWFmh|^e-fD|X9 z9jXzj2;4%kFGc+n+;Tuzk8letE;pH>i%YOkNu*cBGroKL_-=+D{vIiH_&w3AeDWcs z%r*F~t4vY8XpXe!yWZ99va5Zy_q!gpmYym69W4echN_*t&3^0jdY$?4UVqB4?X3juAaWchB-l(S+N z&&yw}28{P7to-=1A742^=|@MhSYSpLTK}czOilmkc?&GmEYJTbJ@uTWPsh%h;_=M8 zm`z~gc%bFdbC3C4-oB!pwPyNgSWr?nR{2G z{cPy(LpwB!x<~Lga770JPsi~@n}Ir^GleIoBU#6r$99OXiD4i^Jo6Za!6Pvc^faDV zd-qn^9CgoS9MzTe&rYz_JM`+nt+z%S>TMIAt*@+hWS*;Y*sAu9DOF#2>#ddbqs#Ez zn8$dC9<$evRNfFBU3I<9QGNUERd(B`GA2JK;7W(gVZ&H?q%g`O_Y?EKDPaRGRw|Dy z%GgX%>3BKb*(S$*|6R(HOANCuxSwK)y;86q#k7&c7 zYg6PVLK|^h9HG}I8W#pHQ0(`{Vztvd>nb@!({t-wWz6pj1ub*V#fatmn-?Lh;Q~`S zsjOYG{DtS)2EmOyxgcWBNT$VMyBpU+N9Z!X)&S+egnG{$ETiRjqWLfO2rP-{>?@-*y%z`Pi zKCw^jxhNEz)OGNZiw}0r+_}3p+qE>7g*$*`O9#WF z>4ba<_hMAVSkhvl|6+R+!fq1d6nEJswZIjCd?9yAA!LC12)Q3uG^;5T(`}?=GHNDEkw~%X7MZ_ac%){Ey`)Yww7e- z%367<7~1?y6I8484+qr(U}M-!K3dSD)q*l2A}HS8R&d|bHFy~^iqKD2fSgMG3(20? zupRcpcMq}m55R+O72Aj;5{KFQ z<^-JC*)Mn*u9W%?KvF}21xel37RHxKx?t3yrP2Y|`e@{BBbZ&{d{bD>C=5ZM-j+(Y zh+8_ue!&p!5OfQ1`=FTskkF0-BPA+{A5>hZme+<*cY7OzS|LPa6(zKA$^{0RrE93l zHl$Du2|y^cpBB=I?_^3AcyBDc}_p;dmGc$W7WqdK)2JJcftcfl~A^ z&Im>!1TL_72~n^_A!C6Y6q_DPL(zjikPN1lf~}AwhK_`p+E7)yc`pnmHv~UmEe(o8W#$c2Xelv|;b;;BkYBb#;Ye#XFgJgv-3|?EB#)!@-xs6zIo z-jwNR3H1dnLtI7t@iAT?@=Wg5xC*_o$Caw_@-T!DGI!XS2D@gP4S^5coXN7PS@022 z4V$ZMm)#zlW|ei7xdXDL6=$6}qlz4nRbA&yQxPiBujtmWrY6ecnx;D-O0_bFF4wwM zr((7FRhMjaSXJ5Kw%C~0V_{a+Vv(aZe}!Iw2%L7Clf#hOX~P>;)gtRLn^NXg6@|$# ztZtfsmiT;A%*fofs$1tQxmN1j9&eUZW%S78LRhM4Lq8F^o)a)ZDtt)iSwU zmC-ZR#_bl}f*6R5xpnx2xx7jcU#4XkZYw0zsuj{|wOZD>tc18%mVHi}M|N0cFL#H$ zhmYJN`(+>W^j43|ZHisfX{tC2x>bi2!Av<8lPbHdF2%_)cQEc$WZhrEAzO!O!5DOB ze3yBd&B1hwrdj+v!~hl{=5Yd~IELO@CaZRe+)nip;O>=0n3nRJsPMt9i zx?pEfuYx&qVH#O1tuV(KvRsFl&UUM&)@oW5A5C)6Gd$2xuBbsp#@qCuC&aaifX$N7 zbf<p8wz${B-7w04J^;`tTQ$2A`s@my4C52btm?8salpNH-2%;s>_gx+)uQ-4R=mlM zuYg1HZP5|#6{D(Jm|cN}0uBm|Hat$lj z&aE;&Dvmj^H9M=leEK>O*BDAp7ZHHP1HlZZ@M2L3K zsT3kq4Tgoi6EjIG{+ayQlP`2vIHcaAUufIySFJMEV;!1;&&dawLSJ2Q~H45fpPMOMioq3YgZrII=fSmm&Te zG0ov~A_-eh#3e6=iUVD1eru^&y%yh3@{0&@ur4+H^bsXhYEXWO?;{}$hzJfR`6KL2 z_BOsFgQ0*9iN-_B9N8{n#zv0;DKSZFgfLY>#E64HjrcOboE40AVG|%3k^<=&eTSM< z*$iU7UZ};T4mFf+ zXvIbb<2Q3oNTNXAHQ*IVGD2SiA;%hG9mPk0Xue3UU=L+paP(P
6YuX1v{q9=vI}{pN+P4FW!CI?#11< z!e^rg&DeJG*#!$zIlg7-?u#E=qIS=ivSWdEooPVGbLzEA7O}Mrjp1bF?RnQ}J~6E} z3%gUJy6~mx{3DB&T&r%oy)qeYY+xJ3O#(kz@(kUrZGoL;93B^!U=)aD0V`YuE)P@N zB$K(Z2=oEUrEn8eVc}YP(Zog$w@IcqyNPGgcor!NaUlHlA!i|exSFX?M_+~sX_Xwa z`}K}GcX`B7EytrrD(dT^_eS&6qer53>B@Vf(U&Xg$Ci?BJnPURjs68fEJ0j)ox(?lMM;f-SKdOlAkMchv5v|xCO`}jn_2@$R*N-mSzwE3Z zE!%PJ+2@>tnn!18U0|)|fLkjtMuPK)%0L*40*xxvH>8( zX&o=nps<}+Ssd}hp(hEdf9sgF@kDOptPb`!tRK_v0|I{IE#oNv594Scch0#t-gvHD z&h9dCv~k5uV;TE=b&}m>T#*!A8G0Y`d>QymmljE@rH#@KX}7cww@8W$OBuvZCmAEH zZme+-=b%9;Bfi*x-jZc3s8+f}=cY(lhn)tx9njL0a{-UQ zoEZ^IPzlwHKRlI&mXZj3SRb%_k*nt8z|{*Ogy%nMDCjyl&a9du}^> zrCndQbl3i6Gp){@JDt{<%l7YDx=vT?8_(Kv&#q z%0QyllLg6lOSi%%PFQ$HX8EG!*Y@0*Szhh5&YNd-Rxi)o*)!$R^qI?B?_4-xB2&8A zEfziNsZ9j-HtcGdlAuF=O3SW>ggEfN$@WCRGCm@EKo+t8j`3{PSaL1<9YD9EM!ZHM3W+1Wp@aAbEXnZaMI%f-|KX&Ft8~69f zmT60~%cteP5vi$6m9qz7RPC@C7frhol6pSt!UwiJe4%W)>XVQB=8F7dHiu`bji0~p zz{X2@2LCo~d3NbEKC3KM8LKcZ!o4mVdk_-+D^b}x+QSRBIx^PoL}`}!jSL1`I0P*P z2RJ+@_`*#=eGL1!qA0=i<0LQoVI>;oD@;^cPL|*klFJ2b#vg1G+@@A8hvAknO$Y)x z95R`{VqW;RXCFSD!OEg_L9y)dBret zYL3v{adD({zev%6y?Lr6Esmjn(3)Av)Ul=E2?~m)=mq90?9h;lk7`{}3pe)q$&s1K zF{1FN9xc_j9XHjAqc4^gcv(Eg?iQzfAB^J6xs-o5_6i$`PK{|npWL+W)xW_atW)X% z*1lA_4(LFv8XDbvzQ z)TXAVVd**c{z-#y{pKYbyC+SYRM~h*#4<7A_e}R}WDC!4>Ey-%ZG3n4_{#F8+Ox{e zpFHovnM-G}8`VFV7CNiTE2L7_c>=&MzfX<+l+c2 z*V`A z?~!cTNq~F*_y0kBmd<$R^FH(U^phXp7u*|=J(KGjd--Kds@^$qv(aRg&GW6*b&D_B z*3mw3;#-q?nxcPWx9P_C#zv=hb$0FEHs_jgHa*FWYi;>9IZ|HQ*4&wxKC`@XPN4u8 zGS$P->P$q+&sq9-@)DQ1DAu*R#TkT5c~j%k=BCA+?d@&uid_FmO}uXNnue-K#aO4u zS8O-yt(Hw=^JCF6p>SGEKQ3D2@dg7etsV0_^T4NM=)x+pI=P_nBD$;Ask%Yu^Pt)~ zkY=yP=gO+BT4VCNL6ZS^ub~DSG#*sLn~LuD5(aOkbDrEMOsH)T|YLe z7cIe-+5?3P=kCaF%x6MNq6N8tm{nUIX)+{5?o+||B6rI?Y=^MDhlRu1x`*EnWl8^vaXefW?b(*7~oTKXQ7Y+c|;p_ z?a-kzd?*gV4mz{0W*wgXhOC#dS=kvni4F%(-j>F6a6ul3K#x&FsI+lb#Qmm8@FAzp z0v7cVrGSy(414K2EV>a$WhKrNCtx>t-szOJv_J9U%9Z)~_+uA8`)o@K{>0y>ucW?} zJ`jJvpM9&Ip2ef}^sMvw>-lr}E0sb1T+6em<>@Oze)<5zPDvy7@oQ!dYl|3s zvB)~)84A_|n2;2U(2@y{YTAMUQw2XTGHvh?rg)XKS|S}Vt-QpN-?A89; z;*gQQ1pPrhX0ZA&n^{6%@2w0L;w6DT@C2wIj&bys_D3D0gpYz3@MKcKz|%^-o-~ zw6tqxz8=^IT1U<6_uqW~RU2EUS@luG54J7LS>=#kQ8HQ0=WvTo=eD0J zUfA2zz31}wo^OTBA>CN$^;^%n`R%*+fA`}>t&yEe3aTe=ThLjhET6n_DZBVD+y^YX zZa}*j;`=kTbE?U;(v_pDupxX&<+y1Ubys6>Q>6=hhBD9kmdF1*dG`|=dLG|%R_W}S z7LR0k%H<-B!Otqc4s{f;Mz|I5VbUbMLIp?D*U|8f2u7j};8-hJ7` zwYP_4qqWT8bG0o#^449K-uJgfErmN56;w^wI&W%~vU2sUL&3Zx*Ce@Z%Ll1u9;by| z)`k_He2PiH)QQwVWR^j1zitXs=mdb;m;P=ms~4*2>4A=Gm@k38h?%QSReOqnb`hAk@KZMmg2u zWEfLN3)Wt0HkaCLTHtf<-dg|Wo9l)5iYB#pC1;&A@1pJVx?85qIao2*S&|r2R3-iR#<{oF zPfRQxf6ZA_w@+zKw1tD?);3+fXKp;)yryE^y1BK3HwS8$x8;mQV#5maSV6EBHJ;r( zd1G^)xM|aGf4k{zlF_*CMuRMdx$uo8X_==-g-VJ7nu_4OjUk2+h7rXOCPY+@LWGbU ztA6yVM^XC8Z8y#=v5@YyWai!@duNuYJE3I5k%1)9CMkL3L#Uxa%VGf?wk+Ar`mXAV zx|RO-uQ_z_tXUTyQg=!T@;BoFg>S{gK$0GzyhI>kpkXY5>{v-ewZK16jcHTCDS)n| zB;WynO)P+bc6B47$cs8LvI}}C4Q5S>+FEgAs@HB<`WC{VwBVzA0`nn-bP4AoU$!dwyv?1hASSK`J-FGbeMbr*x zLu7|m%lH+2hkjSvGt+mRM~954(F6$fWSH1_eTYvMng#A35UnSOG7VgL5UC3lZ;X6n ziKIgLpo86jj0t7q*oG^{O*y}Yv6}OzjQcK|I<9nOr*h>oC1}n<@8ASRpnIzE5nK7^sT*fn{SFiidYUw)V$vF$hFYuU@Cm|ZKPFMq{tQ-HpYvOf-Vet>Fx^v~q&S~eIGx)pI z3xad~u1PidHK|{*>)5Ab#~uoeZ7ldxy6w|z5IkDJH&EDj5!9Qc$0p4rEi62FB}~>M zO(6s%D0#J-i(XOQyZu4s=jZB}{wkx*uIqerSI-X*&Y5%YhdnDFn|xK4)nngA=DOi_ zmivmB3%K0(Ub*P{1I8TvL4#mi(SzGx!&6fx9?Y_CT)Jj6Kysl(gPrfM@~;WoDxATP z1$if(DF8u0%3&=|Ytj&aBa3 zrj#^!8>4m6P0=VL>tQLwx2!Oo;C*&u4DU914F*z07F+ODQxM;WO;+*<_zb>v>a8f% zX>Q$nQd5e$#EH`df5GPl>4YdlELnfx6qsRjGkfN$uYffO@uTDugGDlyv7~11$aoDh zJKB$8xEz`6@{IhGr*B{;b@%Tz+F*5sZcWQ_ySwYwgKm47u#*3hdXevh^nF)Gm6<1~Q(7ndM|`@ink(0xv%Ft@C3*7R>O;~jUTzD4*9$G-x_L2mk5=ndCO$(~2n z&b_6valYGCV6^r;^3o$8T=loFfOHu6{HxI%c3<#1Y}JD&HR2U=lB`LTdmB?6^u57F zk@qm*xQGel<|;7?+92+9no{ps@+8E-NzW-8B)!w(lz%4q?QAMij6A@ufe(ZDbGLtB zca9+E+Qs5E%w+S6? zr?hI2V;A!v9v4e6fO32=qxMNDnSRM~kfArLY{Kw=)JQ zU_PUtJT_Vjz?h+SGc>DceyLZTgr2CDy5d@ z@^wqDfAT+{yncy@MsQgws`0kajM}Le&n_>Yeeu*avrT2DZ(e`>H?f<&=C-X>GqzXf z)<=WEXlg_YCw%)etfvpoJY<+;!|6Y!98{n}zT=mbD z9o*gq)&O%9-tE<1I|&+S8Qx{8)rL4j6*kRsqSs|Ho0T6UC1rxAr0hm|Nfq$&L@yOv z?p84_SvP8de@5JgB$n91%Ha~i8Bj`Y^MJk%NR`w_AR$~vOCmZ4I1`9NMqEe6N`?u; z?R}Jpkmgvp@btEK8Jfm^{^EX0df81$FIO0aj79#M^T{HAI}@9ytbj#+-@QUNa*=dX zsTEWUnKpY-trg}sxt)IBI}Q03*y+D_2zL4zZ3SefA5}&)oth#Ma5zK0$}m!5e0@n7 z=`(1BJB?X|{gN{FqVc*7xZi9B&~-1BmUX+7kIqm?6p_nOJg!%#Sq#0vkkw0VI~uNH z161lk-lQ+qBvc<{oG zy+^h$wbgdK=w96l?6R)b)$SMD3VM19+7d@LEXgaOSzeO2gb+H0&pLJ$8YdLgmbh$7 zw;$OH+w@P~eHUnJXba+dlIga9jx)o*0f0y6a07(86*gMF-c z24e5rO_#<^LF*9mH~uBsR(h13N8f$-=mGby4{`X8{37suPUSqV;XLfbNm0H4$0^OB zU%LiLb`Zm3WLUyW2i*!4}J4^UzY zxi6K(v>5!1CV^cftX7fzhn|)C_+= zEZ8Xxfg5MwZIB|VpKLj)1Z{_}!d!d+{wM=U8irbo)8gC?<;pxW8)rV@l)xvj-V+)T zv^;J3>>aj%p2X|<+pwXC^K_q`&ffNr=0}=WHGj~20uIUs52SL22;hdgeE5jCy#y^| z*uYVC=vd4;&c1%8FR;n8Z;es}G0Fx4VA+hbxRLu2XLq|gu%(|8u z{`t#~{3$_q6Tk}k|844p@AeHS7M*)cGlg^ z8SXyX^5gR1=|k9As9JvvOh+P(H=)|6TQsXiTByl4RhMDsT)g|zeTd#v9Y&flPBOg- zrkpR&DsRHKDtCt-Rqfa5t`$`Mo$?~=*H-;Ah!oO*1)IL%MR4of&7hywnV~~OjtBZO zHti&lfq?6IS0d1>T53$fc*#R1x+SjiOPKocodb2Ksu3xy2AJGV;JU zO>I8@QYI1{8pEGPmz0v+QlYglT|{NUOT{{v<#draSsm-*bq!>_t%KVTuGYbX0T1O; z#%g>rAU50Lx}bEhx$T#f6}kVzMu7ma2339s0o=#h}TW~=xCwu0G}5Ig{UDu%GjfNp9;V z{tG$jGxUe79odwKxGr@R(*Pz;Hp84j`k*LNMcwgZn((+Z5?-he_CZviQf<(lOm-9| zqV!=e{>QMj8mMMzd1<&@s!C_5NJE}j=^~+U>ckpdE~QT`8+`-cQcH!;k1UyxKv~pM zjebCA8d)#_eD+N7zoZ&)abrlL#q=LCOCmhMturv`bQgu~#%e$$Diw&ydjkj6Mx(Ne zUBwQb_VO`)1HTa)^_E@AF7>%nF7x)Xpj^MmluNZIa{nLXoZ$%`eJB^1Zbw}d=24l{ z&s~Kt@NcmV40HS(fV z^HsG@7n&NAy@7;xC`V(8T(T0l9?5J6oT zxTl%IyrFk~?Lly+-sbO|$t+ThNd1a(@>%fpI*^@vraobsnXDY|q&}g#r)SpJXne8! z49%(1Hy&eU<8f^uA)pbQzk=-{ZOeC)ABsxT5M|8)chak{PUEtC!C3@tg4^~}{h<&k zK?1Q*DAi9!W-V;gLP*5VNH;>aiZjVgFFL2yLPW>f(iK}iQNm4#YRkmhC9#B(?8p7} zAjV}#DVKXeU%gZ|T;ydX7LXSX%%EId3!?0^Dy+9=8pC7>I7qE*Exm0R>W#cE#>t1-EN(UN`YM-B_ilY*=Pcz$ElIIz#}$P?@nd(yDN3s|^=B z9gD)glWqYEwFVp^hH?7VaxGK8s!<-K!iq1CaAxGbF`|a+O?;}y{+Yfm@Fr+xBROL5 z!LM=bD9uTzQ8m;X0=9kB1ifr5bUd)XkWHp`#tIHG^(pE2)B1jKW+)UI@ zXbX)dWM%ez7DB>nZk!Ai0rL?SKJiB7*ObeaXS6*fW3SYkl^pknr+_FxcavVzDdvsq zZqn;ln?OQ6X*XyICSVLM$^Db%yIyZasMUgtia*CIcca2|bSHUvoMhgV-o2#WIl>nLX*yN&Q;w z&0HD1SMT7q39n$CjsyhLHwdkq<4#@8cT$R{B-k*0ux0sy<;xF9pQ^vU2nFnxUSZ#X zWt3fV*@0(}j{&(0l>fuIb3rwvr>>T!u6cwX4`Br=IMx5k4qxCrPsb6V%O=Fmp?=Fs8O2hSgK>y!tl+){e} z!NkhLm(RU#?&XJ9Ci+`rSKRR9Bg%_shH%@J!J18XZ@l5I8xO3%dt*)TO4idg zzoTRR$j!wU+~+ZwJojC&c>nZrtF?Ukex`r*;+b1oA_lE%Oxx-SyI=e0=-kCS*3OnuHNyF`ALE7q})_D3DyGsZ0NwU-l~cawJQcwdS1BU zcZqzTBuk;N1k?zp8gi#X#oC~E&P?qL_@TyLA%v`gJzoIjA4-i&{wL=}f3EyIs`m$S zD)l*6+;>Heer&a0G4gpWKupI!Hht{_A1Q+$J+KygCVlk4`=jtN*vl8*c;kh50bbL! zYE@Uj53jOU`Sj*5n4VJTF?u}x8j$Pd%F$P{=I!b0=H+mQSUTW_Odc0Bb^aT5)BCH( zrfXH16Y%S)u1dpyuWmItmG(@v^!myiR8=tiPwQrag@8~RVC6?OXpnLJ*VnI7G8RZd z#zTa1GN8o%do@vwg6#4CR^d561D%2$ZX>~%^k##5}(nBu2Q{H^D@9;Z^``%PwIet@2zRCJdd4?We$19cg@Oo2Oth@;< zhB9^^1N{MqivPG?glKUD{4=eUYlH>p8c)tV^{=+o(02^Ij*BJxyWKP%sg?Y9+tFs+wm`H@3-S$ z`V98uK`@MBw>>rVJHKuC_7SI<%Zf&Q8$h_!-!=5wE%g2`k~(N)z5tpYl5%0ow(vVX z&Dy52Pt;>2`%?NOy<_T6cK!mp(o41Y)J`$FgGu_M4~ev;?jyWW6ae(xi#&V_(N|3~f+U*MPu;9*9X4b#@aOavjJ4{{GpEUJ`TgWO&-F@zxQ$@{OGJAUL;#(ZU zyD(m1Ky#3H7(ydG-kNIsh(-cF_Wze=5fhKU`0}F2CJ$bNcgtxLIj@YDalLfV6V8eq>EH zNs{>craFW6xI@tWaH;;;687=`tRW#sk(|Qy2SpTLc8U_o>&8?}%c!blLg?gLlF>RD zsT?UQFeaQ<5d=&aLpqSrN+V-HDd)G)MjgZDC$H1Zll~69KoMoz;kitQV%xaR&Fcnm z6CtVtu%QiB(|q8+oTiwK1-#BdruA&;LDyOsthU;9U z@QKgxutV}$WRrT3>N$Po(y}Gy)x&=@M<~51@z$Lq?_swczn?unnGk4*MaPC5 z!6zx(D2iid)6IMKG@2buA7F>>nKIilFzP<#MDCA|QJ)AWzc_hJdxhMO=+R=-p&V^5 zI()K-9J4Nta~mZuPdIrp@K{k7Ic~Y+d?ww+m~#8X{G-jRt;NhfQ*K%)dwmX{GF};v zomXC{+!%6}vwywo&dc?@i`3vwq5VXyv4u?>Y%REtt(wT{ly52KaMb*_znP<9_D{Al z)S&BRKOHkh8P};J4uPFa!PjO#SR*eVt(@LLMGPT=_*V+wV)BKlq@!3idV{GxZ^YD-^xpi{Yz4x)A~VBpfkezXOg14SVj+f%OLb zFz0?zYb{lne7<%9xirCM7cloWb4^mJ4y-zc5M-hJW|NFHD15 ze}lj7zTtbsZY zE~p3>_ZrA+gvdWGV1LLh@?k-YyK z;0EdiQdmq4H^to3k+TVb!q8v=f_v60xE!2*wM-hyp^vgBPil-7vkAU?8tT4YHLp{D zR>ZI@s6au=BOcEu%n_U$1i+B;u`}XfUGq~nf1-Sn1|4EfTvHxS;|j4^9^u-o*QEZT zzM9>9Qe*NDeUKSWYWP?{z$%7BO;%8JKTk2$djVk!vDu!8Q~5Z^R0tyG`ox1zEfkhJ znKKPbqM(DFV5KL`ewoMB6y=b|QnbAoTgc(fIj>wG_msl*Pw1;LPUPH>bl<)f|MtC^`bW3YR;~TZADF{Y)33^yGSAXxX@~jS_p~09S|6 z+xoc7fepiDew^xyNo)H^5}^&1;T&uVPzKTm6DK|5BQC^#P?_RljF*HAYs0V4&t-8s zjk8=9CF^XIh5G5;w2`za4IPWLhzmQWxgH5H{b88^MDsqCV#u z#`Zk*lJH?l5vAH$XU(c@9#d0c^{x*@=dC~Q%Bty$XEcZ(+e_VPm6KMjo+f=omEL|OSk6wZ(Zu!bO&xKnkZ^Jk z@)lehvD!fA93{VXFR5Pm2*5H5a)f~=CRrB{^d8oJW;5jsCSy%0O>Dd!$0CkJ9485O zN2)8Fo;#>18&inAggpiq*06UtUO*2{Fwi)vID8Xy9zbD%#Rth74mhV|LY(E`skq{W zbq>M~A>0rO)m7DbC^8M>M4MbPdrW6}NA$c9^O_1T>8WU)9~l$b zG-v+#`O*A}XxEA(hN!^;#7&_fDjr$U6|KPa^A~h&!d>%Q6CYGEfXMnIW#!&+Rb8cX zm$E13&`%e~Z;8ubHH>xRq8;U(V`eW|I=8f|YMi&cEaDd=V2CnFGwRWFNygQIw2b%~ zrvWFE60Iq5vVUX#X>=6np-w}Z{&g`8(E+ZG*M!o?voaB@)?*P+p~3VBKe;?R-~V?lV`QMk0%qmP(v4TWV$ z>y?|2A84rWK4%lstl+{a_1SYCFt?3!kuHl^-?>KRqSOt?53IdMn7wA*X0-x!LcVfy z^1yLdcMZVh)N9#QwR9*(JQ<)@&>nA~8lF$%p7e7v$*5Y)WbWGlT7xiKK)+&vMWkTb z8Yd-`#IEIk?Q36k)sDS&c5|-TUblD0Rjb-nCl?`sOgGn!pZ1jaa7wfA{{0uv?F{Gu zn;Ynyd-4AJ7pjC1-ywYKD&~8OVtwS)pJXgF%p~J6wUDsE>t6EK~>eJJjG6$1}pNP6HjG%mq!h%$xdXtOa zF#{J@R1zlZNzLZ#)x~bls!;QmDXnhFQEa#P9A??oIAMKb4(t+ER$(=o}XwWUE_Jxm1??Lb>VDu5RTryRly~B*1^WS5xthr2k!gg2Eoxp0pAa)Dudxq zvZ1#++q@%wV=cn2UuHEf*IJU|nh+NMysK8Ye3ZT!w;|-c2KUwCM!JvREc|MeQhD_E z@oBKb1jRyGZ3(S^UA0;qO)}$woH-Q(ItkVcF;gI87g9njhXYYD0`FgIIn_z0^(^t@Qth zHv-yeM288xPSXbo9xvh`DV8;0WD$f<#3k3%MP1=I@-WF!X@h<6no41{_qk^+4|&-J ziLI+nU2IbtS4Zf3_JcW(PW8Y!#cMMEzlAewYOa*y+QTdFS*y*?b}MO^FFOBUnVyOga;t+I93*?=O~yFoF#y?VWEb^B*G^%0fnYnlva$jMFW z$xWZNueRy+Ue;}OO7HWfcd%FK_38z~+1K5B?{#MbY@7e+cG*`i-QyOn;N1GR3wKT? z56HgTAixp-G{0z#7SEf-2W@ZY5*?(AZ-kt=$`fjUfGZ zCbN|a?aRFBcqev_!j=A9<^SNYo$0jZD&a#F%J&>ZG|}_Ie6km))`HaDue4Ng9SW2u zNl}$`fXSFG3(^ug+N*!`IZHMc!%)aK6qk9rV=KtT1=UTMeb=Hq^?}vxu-y8Ni8(DviyOFyYrp>&<=tDY2BXvR z5?l7Vj{jgZv4U*0pclDKsPF?e)xz9((8)~i+-h;SEw{3QzkGkK%#aP2uIgS_?taPQ zG#bR0NBc--#;S>9n`CDO;iMdb0%hBQEFp}}9`OjdRTYGhN#5?Tosv-?b+dDtlORIJk zwqDo(f=oGCQb(|YA?uBJ_2ACv#^~P0ExnCumIECv5cSP|}?-ty*F)AL6;vt;uiEhM@8(vpcS)U|p*w)Ft2XftMvU_HnWXW;% zG#;y}N@1jjDj(Z?-B4qTPSq%Ug)bK=B`K*iH1yzpMmTX1rc@tCSp~9`(2t*0-d2HG zlGr!y?j`OUzUO{Svy%fD>}L5ASl)qb&fQ2*X#%4JS;qnZ`c58~%qyO77WYxml}E2P z_ZsXh(O2wrK&#+rkO3T!1F#sUWWgWb8T1dfrS+XD&6_Tbt zs~gPTaKDlL0djeU6&p&x6eu?KId?QUfMVWCH?7J4L=5JC)dQ|TAFm*I(9 za&wn;XO}d)opQ)G8ml0UZ=Dt>+G);>1ALrHv&e&7330If)Q4(A2;M`^pxF{1HSD`t zKQQ>m9&yyb8oK=y@_?2-)kSCnG7iFL+6AktZA#gd{bG2#NWkMOLdv(cR=e#E*# z4|;)kv+F1O&uI)B?={*09WIt_sJQQ%VzW6Q#6~pNqqrZGpqor7z47rYx-VMO^7tRj zNO8he?y9Zqg%w5U%Pyj-r|0xv0ORC@29j(j3}$NhoIw2J-i9O6b5ZaH1==VYF_h(2 zc#6{@Ed5C~JN3tt8c5{7uNr2QHq z5?@^=M{z1y>~Q+9N=$UIgm34W%f!ANiA0dMJQ!3G1lD} zmdSP6%<7REfV8`~hfJh0{N;3Nk_BAQLIWO4a}=m6J; z%3b4EP~T1z#C9sw%64{6|Jr5993z&BUW+8z+&RGl>)sct*_(EQQS{3}#gDWxFWSH% z_@M((_Kbb;5@%6Ct_NvnEEe;hkD5J{z6L3okdKGSzjIl(T3qACI<4ER&NrCGhwodC zl1Ub6nvjtuxdq4r+XB%Jv)Q)AWZQWaQqRbE0g^;v=<@a$M0<=U%A+#lBQ^P4XTyzu zkYsgQq_*PmS)h<4Z4eZFT9YFVqRBe|+-x~#1=V!Lzkl@f5r_!ukaNf=mvome=wVgV z6w0gYTTbg;P!e3HTu*l%!LYx?W!Z0a{^5b&@6qQNFEKH}AmpYbcFb-%@>T=qB~ zL|K_83T&J=ATzDR2~2H6EGKy`q6d)iWGwX=$C?K;T7@2^YZ%fs0X+!a$*TcxM{<7z zteRGQqjPrWN4sk4?9Irv)sV-}aw`mnYzTw>Qc-G^<+gC#m6dA@}m zfwFio;&Qrum9e%7i_?9!4}I2#HsB2aq$@8ad;s?y2N$e%AhgSAvka1fX83Yi*;Faf z>w~~3?sHo2^S$}qds&gysP{Z$Hz=?40qSGRfjhm*0_q!f$GBfyPemiX#%cXarQ-oe zgC%RN&O?v6A5m_#JDp~>`6Ywp5{ql$T&ER3Y;{>KqkD1KIu9}*>E|UK$_s8iOzLt9 zN2fAEOFU#aQdtgIyS+Y$uP)LJB07u$%G6<|;t25p=hg~KAH<;Or@;hZAin>l@*}<8 z==_Px_$yb`I7as)z2`>`qd~9y^jCb${hk%7dsKx@b6VF~Tnn7m9*awuXt&#)%A(jJ z|6&Kb+hw;pQa^NAdaTX`F3UP#c06Hm5idi+BMu5=6qoB^w%yL)3)u zkkZqM+r%W-K1il8XRytw7nBFt7t~IQ&SkkbW0vlxEB%O{556F-d*Naw!R}P{{`36N z&TF`E6Ux35aq*Z8q(VU1^gzh8!$Uhya~?*9E8>Dl7Z8|;a0}POBXj|Px#|T~Milvo z5hHvbi;F|09j1pOX9dwO(A80&WcFSic{8a)Nrxjrm~(VGaQk*dly^ex&Z{Gn+0j{d z&B2w;VdYna0{G*%?$-H_`gPxV{a)-%4x#ros_R4HYiW1x667Dmej$o&8wt!~rO36=(&v}vX5oHy;< zVbRsh+HuL;Tf0hbbxw7?P_Vfg$?}Yr8Jpisgm0Z&eCzCsdRkx4FPqY`xO%o;-xTYp znov=d@0yZR)KcA9IzcBl7fvi|jukn@L57`76)MyN7>b`;s&ZlD#VHl-j zB+0JtlS#VD($3U`B@O&zZ?Rfa_aT5ZGz1F~f;jkVt5xZ-dPBvH1O23EAe0A87qS;* z-dl`$GZmxK3!8x#VEZFpjnEy60nQfdM#GnnK9`T~Lu*aY~8?k1Ct7A=n9L)*S1^Z6S}|MbfLs+_L8JNf;) z-j{lQQ)!pntk67=p81c%cATyAmupO>UQ);mow_U#fc-LT=% zp$!{^BdHBUUPjitmg*fHt~WWclb$jyHfGhEB5kv4CVpu`A!M6K!wH^l5XaB$hd@MOne@J~kTz}he{YTgG z%~ngoY}(?Q~7SwhjG$#s=VHUVbG# z*W1YpI0_m?>9N6Go_Wki;jlvrnm8P!=+1@+76Nh-s3(StCIpn-$kIYiB$TH`p18QV zwym?HdUEPpXQ=eYfyS<#liDi$&bZAUjm=+U7d&&yHe7z_+}(HQE2Z}`B;$0p&F$O$ zhw&SxZJSZQ@N{)+qSWXb$;1ywm6#>KAqY& zG~b8n-oQPehwJ|3bZ%7jTwm54U!(4?W!LYSFKGxVUHO6Up04(TqpK;`oVGoOf=rBr;tR(Q zFcbo$NG~Bz1f$VlAl3^l4%9OUv=0ShQg4GztZ+DNaYIw$vZ5J|iMKDBxjPbw73KJQ zsyf2XfWe?M<+@#giq6Wg4PK)zCsL2g`F+Yl6YB*+vO>!E^f*9$7YljYW;329|xpY(4Z~IkAk-a z_kT%`<a&mRQ33CieiDt?wN~jpXiuTbXlUw5VtuT6{47FiPWD} zXf56z54A3ywax1GYoo<8WB&Y>;_3pA%iU5IFNwA|!;2Ez1RIddD5 zpvM!esmk*_-rmk3tlPCFyq*0!TTS?vJE{>C@<3rt%?Fc}CG6hGdzI^p%X959R;c{L zFW3s0fAis5Psx}f_R*ciC7ve?c~-BpI2LTav^f}yB* zw`4l64x^)v##4Q?F2V;4LfKF0Sm=c@+#rZm^UT0HZHNyML~#=J36U|(%W6b)I^y=? zHLlFqBSwX&k`Dm=r;bqZ#kkMw^~KrTv(6f9+Niv+el-g%S(1-r$!v+s>7Kh3WUb=SV7$E}o|_k+G!=r1km_ByP4h*e2z|Du1+f`E#9t#`?EY>&G@U1m{_5j75_ct(zUKsfo@$hFx7S zXb^w$#-vGaOinHOa7S~O*5lE3HE;Qtj&*Lg4#$!ehVj2M+q8r0<||)JerOJ!j&(iM zMK77FSQ^@*{u*{rxjrm-OW7Xi?70uov{HB-K0wOWeAIp#7Epm2OFQ*I9m#!Qc9L?LMM6-_~5IBd5eL>>xz!Dh2>nDYC2q;k`h4j$2TQn}&R8lLb0XJ$;z-}7dnRF zXk8b)N`vHOY>+(66W7&2?#I6dkHHL~`(x$1idQaEypXAVH?W0Jcq~fIVG9+f@;$kN z%~gEL{cI8Yi}F3iDYh!FDt}_*mG?F&zr~GMh&Oe!T=-rJ%6rnUl|L!3F{|;M8&)FtB&u3$(+9(5rL zeQ&B&e2fj;7-1KRy@S7oB`-C8uJAxSwczK%IWtp7+2icmi!c9O?WyJI)iX9N)3`t&5qhuVZ}bfXQ_d6Wmn(Hj-SQs6$OcCFe~E{c zSNerVQ!{%RQc0Z}$2?oURDJ>a2#Qo}*Q~>LywK8gdB6{ zI-KTa$Hr}Cxff1an$+uW5iSZw4Eo9{ov|>G8!_nea`pPipfj+hz0*CmQgrCug>{kc zXYGa?Z`2kxicj6E`15OX9eZQJE#|y2!CFK03%ehj8Ys`tx0x!O(M1(A+-)S}r)_$A zPSKkn>#rwD3i~Jc)cOV<8qUMsU1&kHuRxhP>%r-|YLO!ugvtih7XGJ(g;QfZh9nGX zTjz_oE|Co2JcZ%vnp;%LO5^jV=@%c^APNoTldpTi-5xKy?f$Y@yT?*dnE(76;iBqB zlWeAA}+2W*vheDP>uzU>Nwqjbx!6`)(hN^2y&w@AzMTBl|GqfC68WyRSv zTDY~e!s}k|MAnyy=b4waS1ooI%wHiR zR;+SO*dYA0&f5?kA2b)*++*`QuK9V9TdiA478xtCrU2s8@5c*YM(b=09mCHJ1@nGsier+8RNM_s5)r_@qsMz3X54#jO zO6V}k!D!L9+F&Rix#CG%+RB=XYIBT?!P#8TH8_uXh1Ae{ zJa!9PPH$(cERxGL5TZ9p{V_Yk%ax=ZuS6duGy}ktm-#!nb_N?L@j$xCl*xf8bQ&tb zs6q+-(4O=Ue`BSU*MPrMqZ!clrQb=qGO|VuX@Q^v0biu;qautdm9QU80m#PeDxiVz zPINK+wYQ=@V?2T|Ehdq46DbrCQlWCO#3yq}3co{E2Q!QV{0}+^!sc^(<*o7gmnN&0 zE}YOhXHLy6H{Gyx%Y#$b_Y{_|Tsvjg^4i+jkqHNtck}Yc*Vjke#p%-?W=K}ZChXbs zY$y~i#EJZm_YNP*&o3;TP?Tt|S-$n+=cS8Ur%xYW?=)#|+O%dj}Y2cf50B^IwAE*J?a7%H$n!K~LZYjM7mNR)%s_Yy>`N5E)J4qi2F%m5mt0SXM zor8iF$!i_X0rdssLj)>@K}s`2eHL0O_PdbJ7xJ>>A+I;&8yqNUXePj6Y+ zagV{+%!dJw&b6`L}!0ew}}ejR(4avb31oF*RbEB)0z*IlpHW?b(YjknWsvdo3V~E zB_*HGGT6F+6Ap(^H!EUQYzq4X0~(Bn7Q><1r;X`QDHbETqXP#FrGwZ49PHY78<5*U zyCFn_R@09-Qdhbd$T*$Q!iitJa15%$0*IWB5o8mJD``SvG&-#UCyDqBU1_L?Ng9u-|Fl@2J@r^%K(Fvh zd`&GVw~N-(5>(R$KAy_s@%pNDT8NZXBLEGcO7(H%#-u9afA@HX6X*e~5JT`uFR{>Y zn9CQaFjQ(<;fXf`k>quU4IS^NCcv$TGUNrs+ww)2H}FO(BWbhftyB|~y$$E6bpy_+ zX!Udx|32=;qRHQk*P?}}QPVF@w{yNM+-x!+(XYHrvKbKai%;b4nbs!f?=Q5d^K)q_c>*v+KQ{60gYe^DIu^Y-DlP>OCO|iN<89s6sB5-1iym zVnM#X#99%TELtYIjTIMMR^~IA1$IuHmQqk!)UO2X++$4eUIrDYM5*l-#XEjSgZC89k-G-uZlYm!MxT;}^4XlRA7!1}I zI)hGwRq)1~cDKvecvf+9YiHe9Q#=$7i&kc}1?)j-4RbLqs={od$)Z)}GCg3g^hSZ% zjmQXw?iQ3=oqk(R(4J>3)RoF(&vU!S-?gJykjgKrh_@8Lzo2byev#KRp-?X(!((+V z6DQ`l5Obc8^NT$OQNPz_5GCC>sHw&k*vbk7(PUtGE^j_7DUxhfvyWK=vfgKdQ;CC_ z4Gx1o1Lsn5+Ry!f?_|MvDg$BRfn@5?$*VcEqudChi{8_t8JuEL+au=n9WyJQ>hX-0cA?0Vv5w^Ii`i6tMV^PVu?t+UC z_Jvr5_|6+YT{LF%je~#3f-cN{`tupH_ivwc(Ucb3d*WecaJNt2GbzUfQ)gIyT1EoU{ZaHM=AW^5oXRwjO)y;E7AHeyucdjWZ{ME*T3>ghR@-?jcpVW z4%#ik>kNU!upGeGg5pOZSRdDV7aoP@*b`%$t1uDmFd9b@9xw$X!Fvvp}p)LP`Vx{KpAq4M%jOZl?>(aAdx9euaUzWIktzOHj-&p!1;8K4uifv71v zxkq{zEKdX;X&q<iHx{LsP1vHhsl2%Uo}rJUj=3MGkJPp&f=ZD$f-9aT6N&ma|WE9lS}3`i%E zWc!h^?UOXb>krbFT`MH%gxg3(>+nr6DiiV5P;|-tzzYOA47cpS1<2!~fyF(}ha?OP zCRZK2gor~V;Q(44@bQ^A8UT9~*W~@F{NDyd5KXM;t(XY=i{anpf6A*VZUm5O=Q@^L z*9nX#rF;K>?BD+%489hnY{3C#jm-%F>`yBuPOJbxXuxS>w;fO(C~Yjx^Rwi}jY`rl zcGCm<)v^MgqaRsv$m2H6=t9H98Q#%*m|9_C%aji}M!Fgk6PHcoe>es}CqOTieqI_e zL8(lDuirhmg_q%m{?>(KDqv)h7LOt@AF{W-)4B@+;8u!@a|>CZpnID4+SAa8 zIAn{r5x{RF^mvV$_zVOAd10dzbdcbSG(o&&&|Bglk$({OX25Tg|;TTMr2LPDIhXlMtOEup548^h_lH& zdpLXsaRSVokLw$sP=5Yc&(BUGL~Gw6ESRz7%4PkxQ>xbO&oSpW%N)+|!lj2#+<5+Z zV+yRgzo0htPxRf>qI~aH`v4%g`!Md!?(N@XzL)lBg)w6aX1%)o#uJBYoCVfm z%xP6etlEi7sWZ=W=&_a)%K)2*AEzC$IqMksX+b5TtF^8 zCeAnp+)~%E{(v$$mHYuS{y;!#;|F%V4*!0a>p9szCWJiKgUMh#Zn3@!$JaXdpSJZP zG?B&B2i4aozY#Q-{on_f;3rR>9Ms(?b!slh2_y$qj`P(N2;c?;2zs(MhSd=oOv&el zBLy;^Lg_TF<%rZL)90}qXzEKUKL|+0(0)N8o&hHvG!7m#9E*o@Jk~6Y>%8{*S`*Vzu zO+DXe(Tb9-ggMP#S+?ulwKjWReQ9y7MbJ78Mp>}xv^gynr^8eCA9L&6LGbtB>9r24 z-dR}E7Hz3SJPw2jw~>Y7)mriM#QUMT)dgdUJ*_Cj{=LCh6WaZLWAU}UO#2PHSJt|~Z%U%cQ@t@auVrynuFUjBO+B5(6D{UKgWz?U z0s=G3j)HJg?UIIr&|kU0wqnGf}-tM60fc zLFj^rFb=Z64&rfe53-SSQXKQZvz^!aF)mG?3lAdk0gb8I!C@W|MBua zZr(Vjvhwu}n^!{U)4{)6&ctD%>%!+&5=7MphH$4W|hU-{=-`>syj&z4M^P%de$ zHm&yRUsjZt3$oQ{9=EJx$NU_ZzSM_;xfhT3mq>EJ-@+Cws)-w_>jV1SqPDgN7v+vM z7v%2#$6(=Pn>7$FoD>S)W(mpwGAppkrsZq9iwd7!arUxc-s3IZH%_+tK02)KuI;#P ze@|Qct|vEbXHxS1%cmu-x0*2wgyz=q+bvcA&^epd3oDlIZp7D7hVk7NeBD1rw#@EM zZ4U;V)xo)sbxf*rY6}`GwE=)z4D%P;pdoR=|5rod{c#BKVBH-E{-*@TMaXsxV(CB> zq;&2B&prFV!Dk91&nUO0UV0qv-%{PTb1CTa?Yw>G5-(P zq+g~=ln;KjiX9zff6o71Tl*U?XtfuqamLgf}h8+_! zlC`pa@rp}3gm~+$1@mV#I~=}ht$%vgt{vC1?|1EJ4T;wL9Ha3)JoTb+7K z*|fd$D&3J;Gs^b&GEop6d5zPyPtJ9?#x#!~UuCmj)Twn(nzm)@H#%}UyUtoXZ*o2S z2bKnOzVUTU1%hwZC39QzotQu34Oi-X%@r}B3OYd#e2f1Idnb8lyLsFa=dz#`Bt{l0 zIS2hk;U1$@ z=9>2Q`MY*y@tQf{maua2xEoOXk&0MI2F!bgpeZStP70bySg9rjz5mMssDx`zlNhVx}YahO#7#<^d#4EZ}yi;amYUh-ua{OPE5mK`&9DipuUmut@kU+&S= zg9`XKO9n2@*?@Hbs6Y@)S=7g=k%*B_-Vul&gsK{r23OdF$OMEGh$q)JDX;zDcIE%l z_TGU}Rq6ZqoO|!|$@H3OnM_SDlgXrKQbEgJ$m(ai8JT)aaqXnp^?q^(KSxXc5Yl}_x?VZ*!3{)y@L`f!wYB)e z?H~l&@_y>lIC2ra@3FE#9n%ZFN#{UX~*}%i@$PSy=w^ z?4=FGw}rF@m8q^kr^INX^Z87fm06?Gx2~Ff`T3qYcI)W88Y64SjE*jl=C%|~7;Z|- zwT`Tr1v{NTCW9ok$03#Z7#I?r`iy8w?#|ueX{jocskLVZ2s{FPh%&xwRlg?=V>BER z)E7Z@X(PiWRXRakq53lr>4Vpk$ZaRo0~*;O6`KZDbj37fFSKtn7k`pJ{`(%a{x7UV zAy2V1tU zQeJuoq+8e^-4~7C{zZM^O#dsIJLwaO%iK!BXK z#o{+Dyo<_GO1PtXbOUTkLb?@5$%i4rJyd zmo~6M6Yw2Dn~}M z56(H5YOZLHX5Sb|?f?+0ST>qgj@)80SB$R6zH!cBYhNEJp2NSy{4}z1il_VzQ)>B` z;+)&&9=2NO%B>N3TP02!A*IE#k@WPDLsm=0=;EB7IX$#WH2dbLWJGz+P)#xaT#1Z7 zJ%^N2>ViRYF~!hBW2bL{P8(>n0_+OB(sY=ScuNtwhd~Gb`cX3j1|k?rX?u_qR*9qj zDl!<1!h-T4{rSk$+S;kPzt2-;DoR3ZEL0NB=<5xYRQmHC4zdol!(cTTO;!WeSfcb+ zpO0BNbCMkO8qFJhLx!ZSNs|R+d<%>o%#4h(l8}FdEp2HkV}Qk6Ar>p}V_@#LjG)hj zkJ=v_Ax3L%6paKQ;}Wn4V8RYC0%IjBIFSOHqc!C4^~NwV7hd{vm{2? zAC*`MzAYm)z}6{BgV9n8ze*a6nOc3ZD9u-l?Eta}NU&|*R7Vy)_aCuLtdZHd7XGu` zOoQ5Bcy-t&l}>`}8f~lZDU!P$zSq`Ik zu)@)q0?&LID`q@SqJWo5r8lUFjDL)mu|NSNOM9M}+dVR>vKs6fm&zxecOtPyBF;|Z z+V6k%P5#hK=JvbhWimzQUARTKnNyEm_A#lv;2!Y)sqHQ<#HQ#edjrvl13ubad{L8x zGZ{IHju`y#$wfE|SH*wz5r5^|eDM`4it>yXt0QdWEJ9jT;Xqc3=79 z;naHrC$Bp2iA&rDR^hcvI~tt#de-;1VUdsvN(B#mK4k_ldHb6%*c6bX8lLU5{{?AH z7|Mj?!h$%<_OiY44997OBO^{kM1)21U%4aW6n2zLu<{dDBqBZzu?GwtKZ_FRJm>x= z=|X$42mAYNr560Xph0*b!@uZSAL`nhL` z^O+t_#U++!l}M_~${2-Q)2opyn6k1O;bSgj$I|YVu%U$k4#+>t@SxWk_B~ z_#Qm}0^k{tv6W(Dh#>%HhXG8Z)HeckO%Jz7l&%)2F&45DQmV2tVksg1=LfpV3bX2~ zcRrozzov6_UU8(P%n|brSL|l$5|v6N^Xw4vJPGa4Xcm2eJFEQk+E>S_)xl|Hm*{?? z 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 literal 0 HcmV?d00001 diff --git a/openecomp-ui/resources/fonts/fontawesome-webfont.woff b/openecomp-ui/resources/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..8b280b98fa2fa261aa4b0f8fd061f772073ef83e GIT binary patch literal 71508 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 literal 0 HcmV?d00001 diff --git a/openecomp-ui/resources/fonts/omnes-att-bold-italic.otf b/openecomp-ui/resources/fonts/omnes-att-bold-italic.otf new file mode 100644 index 0000000000000000000000000000000000000000..77f0dbc15fdfbdeb2b649525d2cf23a170ba1199 GIT binary patch literal 138100 zcmeEv34E2s)&9)9Hz9;1?E7{}!kPpkU<87)7{V43Ktwi`C1EE}NU9)Gw6?V>V69p! zVEw?hRI$Y*Ac0_0rIw^IpprBKwN$M|ODTwAD&YM;&vO$9)}{U0zx8W{-<)^uyz|bP zIp@roGiR1$Oqh^iBFt*znZZ}5ruu)^>Bh6hhP`WSlhwn=W?ZwS(YJnYOlF!fgB~7! z&9y`OUE5-xF`JJWlNFJ1O|RawQx|kF#wHqLrq5b5W68uGdu}kMUX?Mv`E#>oWUhL8 z+`D*JhLAKD3H5#${s8j(@H=+yqMVyce%$mY#zdqT)3|Iw*3#@JI^}=Om<}i}waua# zH!txm8;h*A8$f9Gj73?yZX5C={Js}IM=V*qEGMwl^hW+hc<(osS&g|ZV`JYN8xDNW zcpmC$%;*n44CizID~;L)R)6@sZ*GD|1Cf>lbv*T*w5q08GrjuP%litWg*tIqB z#&zn`M0N1M;`*rdLHjW1%(yizTy{;|A$~_q+%pqhZ62TL=}y+9hnNmthnje(>ER8m ziPtlmyxBGJFw@2tRuiv}cyvv?f$8U~%^y)G9%Y95a%%E4GOc_&YT}JqpQ{%yS-y1M zoVhvvZnL`kdnaDj+dp%;f7Ie-b8~0-Q)Vp9%*u}UkIbIc(?4Y4Lcek@^DoU>mbLV& zS(!Z}GZtlME%VP?=AYruSvn&#Ytf9Q3;c^`mwrqE$~t7i1pmm9Ll-a1^pDJ$v2fn3 zAc|{pax>>G9^kK&$6qJY09EW0UQWzfx@_L!Y=2_nWjzxUd)MX~IWmDI1hI@=m^EWr z7V14aYpFkHu|H>Smj7bQmu1b$VF|Mr<0anAUYwm%r#Ulna+c1UnX4?>i*x49%39Vl zSZ#l>-j_6XZcfgU0lj+Nbkj{eGey2-YFp1)ix>6cyJesBGAnoC3|0QdAd$?~X0cgf zmYbz!o|$9jnjG|$Zf2J0j%RO^Xf6Zvo0-VrH=~eu8S>2wySX5B!8IIR|-WsN_Y$u>fg{&201N z-&uo;r4BI@@Sk-XX@;VVg(#K3a!~F2x@#XkGp(K7$OR<0K z%ZZ}OGU3feDT$(cPd$78O)c1#gbQ`3+m^9tQx;lADwFzIpc&~+iY^wMt2ZCVbAB@m z`Pg>WVK$z@FN5FkcQ)RCJa=Z`4Y@WCl9F4elx%#(GH0RmW#D*Snem&t^!{YoqDLpp`cgz0aFSAhELX>}zi#I~1FG`YuZd0() zHCnnIwH*eMXoOG>DK-C^udMdiH{D z?9=!1q$~RMACNro%Buzq9y0XmlwqmEM~oabI&DmP#@KP=ubFV|#Oo$ao-%dX^*7u& zea6gLnOU>v%$+xX!NNt^if3Jr`W@f+=C|(r_FZ@1 zvu5qOd%ttvckh4T!S6lv{fF0Y*!ai~9{rz9o6TcC{LznD$1Ub3kDDj9KKWB)erC+J zr}F-oU$A}0(>n`y?JnB$jQM%-FP?pF?=PSK)xMI_Uzfd5zW>0BFTH%QqVhLYuN*pj z?&$Add;N_+ylH&i2$VL_48~~Q!mKhs#MoJ2yV}d_6?TNpva9TUHsD&jU%5l> zw_b6FZ}^+}+xR>9qy1g{iT(lp6#o+ca{ns-ZT@fj*ZQ}1ijHm)-8y=DbXJ$FGtX5A z&bmMV<@=!#er$efcGw=aukCNs?0l5_fotWScUA5%%3bYm>Tl(5=l84J{wg=ezrw%T zf4hH8opLj4%C&(&;5`!J(tm;W!QUT-8FLPH&(R+Se;>W)==!5~9liDS2VQ^BnAd;t z`m?WZJ=)@TD_^y*9(i@ht3wVC48N>iRmfgR$pmu)deu@p!OpaE?KkaC$jYnsn0*^h zhT{nD+G=~QE^bQ;@00)i5v_mFe9s&M9UcNTHkzN9ZDxb{oq51K<_m*u@B{O(*=Jt& zg__6BQzi;Jw~=|$wEa!M4lw6!KWl8V?<;no_1VGJ z+AFPR2iXui#5#MG4YMgW)DE@v?A5lu9cIIAs%>D0+bBEIMnJL}+EF&r9I=h;XxkX_ z(8P|hO>MeuW;1MW*jJwM+2(evZE45b7IvI%W3RQX>@~KvonUsDr)^t1(YCjfY&(0M z?O-QcznyA3+9{CYP#a@!u+jE<+r`eXvGzvW&Car&?Q}@>OvqoBO|WxKvF&N+*}O(XldndKfc^-#uHch1DPO5}59mMt{RY+<0# zK4q?QElook9@uXyOe^aJ&e>Ig)ou;!=*LW|8)8D-$iR7*W1739zz48FV^IE3x5(5- zycNC+*d~FO?JrFSloMiqiM-)vh&yU}xq?8kyFc(gZ1ZmJanye<;>ma(#P7mDwM`5J zT%*8W-CanF2~>MNJb#Yx8?<3|;EX$j=N`a=EDEtiT!D!!)%Cfv>yxVBC8E zIFas>^j*2jMf+Y1@&R;;adS*d*Uz-{I-9om=Fj2_cwtYOC>tGk-JS|OV^5pGYB$@? zcC*d3ZDRddr;iJ)BkET-*bb;)op7OUtY6*0desf>Orl+Fu5|59dp9HSuA3bAgI!=^ zAzyvnSJ1vc;mPo8GYE8g8(}r%rnUDq$jEO3?;zfUzZF)Srpnvi^s%Mp3h#Q*E-COD zcF0>sy^!ZG8Z$0Wd2=9My+Ss?u5QP31Lus01ua&tL>jb zhZShs)p*8%M$zDXhd`y98u$yo8>Tu_wvc{-CaiC*Tu?S@Lv7z+n`*-x#Mw{k2K1TQ zep9Ed2kZ7B_9M5srXNx6YGsc!U|@f$4eVES1N+#;ekNMg(v5wtZm8{h?0?>>8o7BB z_&zGzl5Fw`U2*oyx`BO>{WRDI8rvR$vvvC`e*e-n0PSn?eYAh5@3Q~C z7ei**BJmGY`k1=%=ZiVZ3_@G|=EV~av48lMAeZyc`fqlTg&&KmKS_;EC^R^nP#*U_EmXnD+$o z@ViE?O!?{~UOy-+l$Zb1z<%)G5Ni5%Z6E*gS)=>@uhFGeSAY2oj#>X#>F|F|?!K(= z1^cLu?u5536!Y@22=x&>J2r3vX@d~&jbIQm5Sp1Sfw%CCugM>VctZrv?^_}G5IDbY zP!n&4XEy|XUmxGptNFeYeupFQdp_>_1F>Q(G9@U~8f=4O)c34_6QV$hIa4UbD7l5d2VW&B(wRz|n!TfN6qb zl%5`_MoNxy<_c~S%oi*WELNT}#mfQPo6+#dwKr+-jI}pol#&h~VS6(TWwtjrnl6CF zNa<*j0;d3T1ak#93FZqH2$l(!19mc_D&`ta1O9%;5=Xwuy->3 zlyjh9ieReXNPRm>IY%qb_I5JqDs7_TlLRLVP7$0bI7={7FiUW@;2gnuDu2G>3skFx z!ji3cj%t-FxLi3`=-E-(w8< z9%IP&7(>3tqSu80c2~R~s2Xdy<{pdnGs09sayb@sAS9P#K?lNVg5-59+D^D!`N_># zc=A~Sxfu)JKI2@ek42rCQlWUIU=?6z(+TzLY+?lCQJ>BxPw^7LQoybz8sBzBZL0xy zDqaZK4d0#xj1lCw-S918iC`&UcgXg6zz0xHck>7+)&pOi2aFNq+aCCeutcyFFiv^m zlqXIl#3@gl^28bDiASE}fYB&99yuBBtaQ>g9Ev}U_1RwHZ!ht*7v!)SE6FTBQROG9 z{6v+XsPYq4exk}xRQZW2KT+i;s{BNipQ!Q^Reqw%PgMDRQ1U5rImU?dfFptHa+Q3! zO1>PU2Gilc1KcE-FIXVR8eVS76fXx%G96J`5;T1nAa|Z5p=U6Dx!zI}CP90Y0}g~; zkz@ubJw@?U!4ViclTec<0Y`yTNoemDz_dUfV7lTHv5J_4_7YAOoFX_=aF$@EV3y!) z!8wBS1m}aBNzfz*02c--02e{7lAupc04`QNsZo=pQIn)ql0ZXZ+@Lyd6nsSascDm> zVUl2rkq%ENXP(+l-J1k$Lr86tByE!fF0iznN-q@LCF<=4Rg+AS;(HV?7M2o~Rw_un zog}@TB<++W?UW?#lmuNAFjs(Xgw()SfNq4vfc-#Q!qI4NKUfYPAV;5mSoO7llLRLV zP7%x$oGnP|^#k1q7Yb$zE>;P*DGzsB^)pWc_D2so14u2@-^8MK^f!Hhy+8Q=9w7Tm zf7Fw2)6m}j7!%(IOxN2CLGrr4xen#`7svaHoF`5w07hI(Lta*QNw!gU6AAOwlA$R(lU8-%7V6o~${n;OyijZ_30NFkZI1;*O z0D9sFfbd}gP8OUZI2Bk1K*KYCrc!1LF3`8xg10GUgW?+nVb>%76H0#?Fxj*P-egeq zEx>3{FB!CDJQh7A89J~UFj0`TN=CnC`XJ>Q3CT$o-;-fCTExlyWRq?}0Vk?7(m5IR zXUUTVrwC3}Y133PX`XCu5WG>4^iMXVe=)#?)E zEEOzM&T_#cfCHh&LI7g~M}qzXA*<&B(=a*=gp?A_QwpuJfzTd=kAO-8vC716iE{u%F;S!4$z%!4Z(y!H{hWNV{$@h6c{233=su}hyp{@ z>LF_N5VZFU@+?FhhM?7qlbb^@)(|dNIV*&P6c_>uus$0FIpPd~P0O5{m9j;U)EFY} z4-xl=V65R+I|NCYA<$-j1l$cxI|Snk<9ie@hL#v22^k^@83Ky&+e*PI!B6b>r2kW-|5G4Q z?;$7ke~R>f3aH9BNBk7&{}k!}6zPBLPy;6b>r2kVuE7qC%KLxfQTSWbzBK<#1y=fR)dddt#O9_)OiVZ^> z{{%Q1eP@_7#xUqx#?w)^VQAe4fV2#Up<@=L^HoBGxKjDFuR@H4H9^sad>B$l`Qe~BeVJyNY6iB^Xog_hw+ z?2hN#iGgE)SbGGVEI37ww#`V`HcX!hO)?T3B+OJwmg2J&pQHF(Xr7VK{AU5@D`kP| zzfkpGq!ilWBf(#mlcToe3N9C}+f*9Ig^|#Tgqs4t0Nkv%934hN9$23z_0_h(8;C!J zK08u}Gd|F@a6!t>FV$tC_m9SSOu)mCi6cLuGgmS?Ol~5^IC3pn& z9|azr2jplzN|H88k~T_ua+LJsD9O?&${NQ8V6n=4PG9ZSSLE+#@pm-%%WumCj{v5D+JroXkp^m?1*9F725K`- zFGQNCou+v~nrNPe-pBNTf`bAZ5KmD&Rd57oo(9bj033ssrkU|7eU+WV!2U}HhG%3kOnTikN7OXOnsZB_-w_oD+zDss+@Uh-F&6c z&z1%*5Ype61}+fN-n)sCl8-^*Bf>nY? z(5^8Wug8Fc;fO~A;~4eIG2qcT#0Ltd2&M|sBQXYj-2-G#8H1j39+1}W80pC|;1^5d zXg&s1&<c(u#?$#>^}pfmK!6jGDccu z45-Kam4a1*NAOj;o9Xddpd7I%vyp zIqOW9gr{rVNe6|Q!g)u!^h`P=oN>-U(k0>Ppf=k`2~U@Vr-Rz8^KB}Vqffd!sqlYN1Sv>I8#am zsgcqp;pyNJOQ;mA66Cx!LmbHf<P5kcQ8Y zhR=ZXGM#h(4A7a7dL~19CIfor9OBe78PYQu-~#i|lb-=D@LPKFGr$GL>B-Lk+}vAFFk=aj*>Ef+aK>R>3%E zfYX5K;L$ks`f=*@MN>d&d77wLxQF6L^@pRE}x~Ml@oSiPtP8Y4FOFpNICNuPQ zhThIpt!AoLGgYgZs?|)@YNl#6Q?;6@TFp}aS;{|4`DZErEaji2{IisQmhxvxsxu|k znUd;ENlT`rB@?Bc#o00TkxWT7PWvfNsm_#CXQG~rQ>rs1)tQp&Oi6X7q&id9LZ+lT zOBl0+F-sV;gfUAPvxG5A7_)>iOBl026N^)E>_v4 zxn((pf|RH^kXyc`M9q;z&Cv)l2X#1&5<8)UdGKly(z`MbazaSI$~?#kAwB2wAR&bG zIn0x{VIJ@@&UKJ^kQ2f@l|yg&JjgT4ED|gcECrk|DVmROJ;d1d1!((uK(>8>WOadL zb%A7cfn;@oq;!F#bOCaOA#nD+0Oc^we!W1lxTs6ohHya3c7 zJr|+`Leg^~N+9G4;6jv84Z2XvEkY~K0ZtN} zEI36lQ*gE*dnnJ%65ghiCj_aH7NPzufmYcfX`w};=OSTWB&seF_C>G_PNNi3GFz0y z`5ncnKeI*2Y*8{>l*|?-vqi~lv@r~MNXcycXPlJG7A3Pq$!t+FTa?TeC9_cz<|HMv zMagVYGFz0)79|&p4vRsDvsgc)2Y4~+Ku8bpV#)JjX!3K2&l1d3dY0n!1}}yt=iB*$ zDGWezN;Gk^mHX+h<{f?^8yJmg>=Z2@T;7v9QCyvjc7UQaXA{%aQasHIj-eEb5;X#E|3H1 z2m$0=jHiQHL#|ZvBrPHLKjeU7{Az>pZxp28I0thC=Gm+~T&c`aFU~a#QaUoY+$Q2iI#f4mPAy-;1 zS6s*y7jnggTyY^+T)-)0)r4z>x#B{uxR5I@}x#B{uxR5I@ z# zxsG`gC`QOR*G=fl0YI)}-UM0^awc^Xs6ohe%$v|^#<@awlh)>LLK~URbzKI|RK!HctiMS@%@SPtFDw_GV$E()(e8_(k;E|%>lRrox5!qxMHbgBvbb)M#dQnn zS&cKmoJXuw{*}tVQu$XZ|4QXwsr)OIf2H!@s{FSq|E@;4Co|>iO8L4{?oi4dO1VQR-%!do zl=2Ow+$Fqs3GZFPdl&KqaI%^6sk?;tF5$gPc<%;Z&f?57J$QG^4!m1-;N7wV??!1% zr{#IK?7+KK=H1|$MGEb}yTLogX$Rho@~Z*q(YhO0&H!>gbvL-i6#A*w2;&-ITqBHY zgmH~9t`WvH!nj5l*9hYpVO%4OYlLx)Fs>2CHNvkJgt`)|0!njTt*9qe~VO%GS z>x6NgFs>8Eb;7t#7}p8oI$>NVjO&DPoiMHw#&yEDP8in-;{(_gcG7$gqq_ dur= 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%0AcixvEdE7kysb?@WIe^*~)M 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

w6cT0h~qH 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

+xyAej(+mCv!A?0z{{_cw_W|@ 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

bu)hv=0VC(AF9l9s>I?f2IK+^EUhOSq zZXpHnJSPh<{`>+XZ!cYf4Ny0N4Kv(3kn>~$VZdihxH4s5v}I);?mBvm=|?$$R`?n0Er z_ujmFI*l||C!e&6$c95p52kMwkjK=o!A{*5l=K6CQaS z^*QwOaT0VXaAMBedu5XtCBD}D8p?ujw7Dc<2df2;ZlslJy}_*4(PUA%xGX=Py~DmA zrBIm+Iw1-1G8AQ`9zDz>X)9b%kb!3d2Z@T>5|>BVl2!$Z1Wt|J=7lIi7Q$Pc2Y~vJ z;jnp&a9AO4kr`*eJ%^I~GkWH?NjF()>rR7m7juNP_;6p)m+gBcXmVFya*w$}2f>8! zHS7&En;=1pI1+R}B>VK<^MO9+$x6xw0dvSZ@Kwz^L3RZeNl1mcR9{OKaa zOI0={Wr7G+_+E>wtgZ33QC-!UyEZ28TuTyKeV$$`)c7O-GVO3w(&TBBf0_inw->e^ zJ%?1_<@?F`H{O0D;lRR;NiuORK3WY71POns4rZBbI9d$S4FEbS?6M7HIY8$>A?iy) zR0N}u>_Wr4o+Pc+r3~44wI!qN?tyokz$BYIxNqN~gNggMZcR+wLUy*+cb#g=O4^>B zvW~oP==kZwb$d3yx@F^P@{1eYU%k8j;`DK|XOAZHO;DwY1Ra8f>muQUF>>T2c%A`c zAwem&l}EzX3!Z5tfSk(pWI0@i>q#(JZYGT$Q~%rPS8`Vfm%^5F>>M9-3k5DW$v^l# z@d0OB45;Pu^WEvyu;@4N`jY3+lnW$dvlYADLa*9Na<+{$%1z1w;K!v-rWzFfrD~dl h4a`r%J!U1zE!SD02V4()fJc8K`JiYd`}FDa{{ZQz8!`X@ literal 0 HcmV?d00001 diff --git a/openecomp-ui/resources/fonts/omnes-att-light-Italic.otf b/openecomp-ui/resources/fonts/omnes-att-light-Italic.otf new file mode 100644 index 0000000000000000000000000000000000000000..b13ae4fede8d0c9047c910c13acff6939fcd8194 GIT binary patch literal 139760 zcmeEv34E5twf@Y!A0dP!Y+;A+kpu`NfruD^L|Kf1KuACl5l~qY)(|KpDu`6AwO$pl z)>YXm_8Hqc%Ggc^$4tz*_{CwNsmA24GG^4R zV=lgAbWV$e!^S)mYD`{u&c%ZU|9Jhhca5>h#+aFN7SCFG$s2pR8`JWAV|)we=grE! z{=$c@!n-Pjl=(;qjR@U@{6730H-B;AH6OG&c&9PpxyH2HyC`p2!R!y_KVVGsSYt8< zFP?SHQr|ZwBCCxD2q~DgIPa<-TwjF0@4%mPmo8ae*s#?MMt;8c8_TT5{IcVyyer$J z{n2>dn@BNPcW(VDpZoK-M>OPr^seuxUX5{Rv12O!;Tu=>(E&5wH>e^1FW2Dxo2I6r zI{1>%_YGqv3L4K{V-rma<8!yVsSWR#@qC(b_6jrDqUB9R8gsufKbdGoj&CX@ebhzi zz~n#ag1FqT?Igc3-{X6G(0#}F@t<_*WmmFB`nM1;7`LX4S=bnNCd900jC*E)`DSC> zXF8exX^gi({-+w_AxN)ojJGtC%xjJDP!nO#X^gi*d~{>HwdrAV8sp*3;*qAeUDTM~ z)`Z*J8{_Q|zo#+YUUl%m;#R2p0sA26%(ykt?wZE9GvV&;#<*uDyG@O8pGkBl8sjZY zv=`GD4>5_}$i{d}v&qYEjE9|5z4(FwbyR>yzJ2$y>I3!IA=ha`IUNlamL3EK^djfQk8e zvzF(f)^qcg`3sl$3+LzgPq%w{-kd@fF?R`G;?3M81%=HTGpn$0*@D?c%2KeTaKW6s znP=vkLiCwsDGc}TqqFc&!^OpaNMubA!!enOU9h&;1Y@?zmw zgtR4QE)>AuR)f=}jxv++KNJ76PPH!+<7NEAx+i)?`i-2_ja195>&n|`SJzWm- zH&N^F`EH8nv0OL{P)4#SK2XoWpHqXRGiopqEy_c?NMTYw5A-6fNzEmK^Y!MF_|0$T zARk-KTFk{W_+{`L{#}6gpUjzActegYfRq$9E2RKmvCKIreL1+@oYsERoZ6qxRmx)_ zj-5Jp>DsM(kDk%J{Jmph>30+@ZsUr>32E{)myIMqiMAVaAxTnd8Q1O~}rfIO(E`Ctot<(y5nC zn?B?6E3TY5YxbPnyt(t{FIc!Je{sQ*rQcWvLKR(g^))M2Uc2hL)!)4Sh8w?i)3utBMS-b9z@80>nyS{(-5AONlz3Vq@yzfW%Kd@=DdGN;%{Wt5l#r)61=8>(B zK869m0unG^|4o9`_1dd=fMgwQ_M(=_MOaX^JDXf3D|!2EPJjUYxC@Cd#7!1 zUER;!A@{OZ9{p{9l)sxl+8^WZ>reI%_ow@p`d9c@`)~07mw&B)Ywwtt_Ay;!X2#_8 z%{%eT`wb^uLj%h9Lr?s-dCY9L1MCnx%x2kzDE9-`#Xall++mb^y}yIMi@%58uX2Z} z+(Q3K|MmVG{cD<)o7-5fZD?rtBMEWlzlNT{zds5!=0n&;M}Hjr`{?aQ*B`z0=yk8& z_3HPHdA0o2pT7FY(N4cw^@@Gv$Sb2>8Fe@{?5vh`E%r)ECYvkJ- zsQHn(*F0xl^|de$o5xKgG;v$=s40a_Q)L3`QJbKp_oKf(Z}yo3<^}Vjc?tEs#?+Y_ zQ){+iJcu%z&0%xU95O3SOVi4%H>=FG<~rC;tIhS`><#8y=0$)fn^|MlnYHFgv(f`AXTmH7#nFb zZMZpN+t_iotsQUMK_=SU3ATgHhV0Sy@!2SwV>{VNwxgYByMh~??M1eWz1VCwPuOnu z65GRGYP;Jhwx^wHd)a9=+Fk}J4zV%za@*U^uzl=I8*8tCG|#qi_Db8=&a(Y&u1&P_ zOu0=0ZwJ~1rZr{;AJ}v3Ajo90U1a@sx_Q~WZhm84F|XMKJJ-hBIgr~tQ)c#<3bV`X zHkIZs^Ke67}jWqGFmHW9N#%~XsPHvdVw{J8&;WEux zZc4*PE(iJFHZ8s3CW*l=)3Z084DoKIDRAdO3X731%$#it%x&&_rWea|ubTmGvx!3u zZ?iX;k@kj$y>`9%h8ti;n_oBl5@~7X*RZdzYzVkJ%*7}#-}N?KTz?bkE;0!&0p(n7 zE_R*F<*?}oAwJst*(8`hH@s?pZ_-iD*?9JalrQ$IndGi+c+)L6N$!74j(Zr-ixH9# zYRp8p-3+uX%urivI=Ded3q?CDp5+LCM*h+G+u=D0f3xn>%?kHJbBX(gxyoB>?sXS8 zyieMQ9=RsWUWs0p+wc!|QmyjXI{dDJIUvm~#*x=DMSPmzhkYb-=f=puETjR(V^1^O4{cWh}Xty?0 zyN+g++I@9HgWAnDH?@iNXPrJNu#Tu-^AM~b>lh5D>c;vt52zRGb}Do*S@uq|#3iGx z=_bN;Zur1vgKw9Z87|Jmd2P&O2KN*2v6F2DTKx)gGtDc2eEk`;LHtx0Z_Z_2`zJHS z9z>o(%u~i=K2vYHL%xRDLewS9j6#TUGa(=3IRkj;i!wQ0Io@|R=egbHJoL?cgv-q_ zjLFA<8?q|dCLh-{{24NrVkepr2=T5b>dw%?v^Vcyy#95=3pT&u1>YdZFv}-ho1TbE zmMBk+K{A9oc+sd6<%zU!45TO8d=R|)1)eXe{he$go_|ER4B@8;*C4zDjcQmg_e(R; zK48Ky7n|(Hn5*nvnBiukPjmx4lFd2xPYp*=u609AD85^wIzzTj(IZHgpiHnoG=-*q z!S*x{>?6$s`pc<4bE=&U&ou8p>_cvTqr6e(n&gh{XJB7y3hYzO1N+x>$V@XjHO1NA zng__4`W^e;DVezfWq(|*DbvkE1NvZNKWr}NinC8P55pj<*XAS^-XiSTWNn-J0wSU>8tQ3(I+_alPkHB`8j4HY(tsBM%ZIQF zAr0XWLLuITd`{T+l$5%_);LJx!$D5C|wWqtWKY19;0&!-TO2V-@% z`7WNQE5_ZGrauE@g0k}O9M}*36GE`BH}(0ipZ`bcK|TF-_`gqs#4t$GP)zAAYTlgkqEO9Mj?bF^lS{o+YRAc2xlW?BY!5I z=Oc_n7>h6hAp&6>0_$=e0@Gl>G`xlU|1s^w8s{m$jXZYn7B|3;)3A-}t)KW0zT=F6 zSUWCGHl}qaKm2bk8(uQq!IyZz5%9ouH<=B00*-IM?Al}rPEdMw!!e{3Drb@4Cc#p{ zfMB`uR4HB!*wc(R(STX-#`QE4l#-3w^)xe3W>0e^yox4g@Q$bn*>V* z1AeuoN|s= zobByxvQ^p?#it5hCOA!Sw%{DWT){lSxq|Zq7pVM&iZ4>F@`a^9am?X>rATmva<0_d z8>DvXL(A#p=wn}fS1#9%SRU&S`5tS? z_gF)|#~SiI){yV9hJ24TPXuo5sqc@mT-K_w(8PlEC!80JYto?^fl zl$?m1jQ3GGX`6^z5cY?3C8F#$fCJIqL^BArN;JuWck9~{eY->Poq`ogsRT>{mg9i2 zf{B79f)#?5fCG`|7+|bmBJ}w{)Rrj~f|Y=S&|e5ir9qJYYCvlEL6ZDIkbJ%+#|Mey zgT(Pc;`ks)JJZSQL6B8K@^=vAkdQh*S>-3I{A87%tn!mpezM9>R{6;)KUw7`tNdh@ zpRDqeRerL{PgeQKD*tShyw{wAG2#SZCNQ3(lFw1e=U~)edXeBJ!BWA1AZvJzsZzWe zFvavjX(`ab(SR}FOA2}hW~!akQ6f(Yc(mT$!frHpkxZ# zTMU>5{h5MV5yF2DI92d6!D)iC1?LFn3g!vU6`UuyKyaZTHA#vzNeb4YqY$S)Nr8u# z^`u5kfmR`;R!IR3iFbqQyixEz)rXokMH(i>Y*G3n%2}eeQ}?Do+YnOQq)6MOfD0^b zhthWn?h^HOs}5y~?@_#5SSnOnr6Bcoiu87hv{Q<-Q;M`x3Utv)cvZ&>QUjk0x)GKG z4h3xq$D_SNVL5~Wa`YK$rhxK8%~V0Im<=`41ak%F3X*z5p@9kW1q%e1sDvAo=Mljt z0EeLm)d5lq4Ks1*9mC8JU>^p)zXZtsG7ROOP@!45JAlWndUa6GFO=iG44R6NbRG`bt_RG7E*cKWd;@T*;AMi-1g8VbaAP)@s_72Asi5jZfH9z6Drn1i9QsHqbl@?-WI@&{75$p|M<`Dw zBqvpTPless0&#Lb6?1{EfKyZ&>70uCv*gPJrwLA1X){zZX`X7X5WG^5^iMUUe=0_E zVw@wGt8eoZpR4#h#peqyP?-xACmm8DQG|R1pU(>t0w@nFgm0` zN(mPzWsxB5u{4Z^#{f(8Rk`w1C|(J89ynDGn1!6@saKw77Ad^|@O-^JUn%Dsri=iu zPXKaM9f2Ot6za?o$}^%dPodI_1UCtCe?WT_1x+cHwJG!nAJlpN)xy*CoFL`ZvYB>F7j zbiJjuGZKA)DYW!PijpItTNo$zM?&keKD6aVqK7hNgHkpMZWi1k_=w(aQ+&H1ZMl)K zYU%(v`j5nHh;^&c+giaoLE3U7Wy_6}EjJ2usK!nrQhOAr!FZZrx?qN2X2UH=9|!)9 zf>b;N$PsE3cv=iNNqI5P@xI*Qu z6c$oo6ez&@Y!u|^GYa-Cb8c437C};Dl(;`i+#iK;hhJ?MBxOcHvuyy}4Xr!MlqtSP z@p9Fl5;95>GD^FFM`3(n33Y-8Ri8tGhXF@RZbwTdM@uFzP|5{Lxj-rD8Vk}j7Np~C zHEd#z1?d_K(lr*OYb;0yCHEqoV?nycf^}q=^6{tH5R0UR;)9} zf^^t{b$}cT(lr)bsNQrTTDsRL((cNyYchIp4D-erh)85l=SqI{0y8RA`rc$XpGWr%kf;$4P#mm%I| zh<6#{U50pL((cNyYchIp4D-erh)8RFd-_+Y}!81?!w(y?REt`kV1r8GwRZH)BW z7*IYMDWv=u$Ts8bvt!g}$EZJ!QSTe0-Zw^?XNKz|sPiE=QBGpjbU10^PFBA4aHDIzJb$ceHk#C2hgiPo( zLP};PX7P+?2xg*PnQC>WTAhhjM>R$Gty;|y z%vDOB;&T}~tNx3XQlOM2iWjOaMS?4Y>jss^aUm00k#LjV zZq{3l4w;Y#*5^^B7sCseX&y(P%~W5=L|-740)pH0)po%r^wkbw-ziuwIy|Ei_NoN- zmrO_zVUV)Hp~lQ#fB9C%GCYxf(C~keC`xdc1n^cyOQb%LJzhlKbPq{g(l0C5~5*9 z7prxTL%PO`*Wh z0=4S_X-8#&+Kkg9ktJ$pX^xO3nrET+F+EN2JhUYXT;NyfO34r$3(99fKb!=dpgi;w zW|@nGYYIl6EO8+VTwwe%!D)iiF}`Gh3(QY0WWiP^#w!ImK4ys{S>VXah|dwk{yN0- z6rZd3JjLg$oCRv>LZxuloCS^$(hr%XS#uUNFyqTqL-HjHegnc4!h3_tq}`q+yFCm2 zly5gHh1Po(`YG#BENYNzS>PHWxt1laWxu z;$4<_mj!!=R%KGd^2zjvz<*3E%=D$NC8v=?FQ?n1CKZ zxJc#GVw?btL0nj`0pu7oL3(2XXwEuw^q(LdG68gE3T=Q1(j*h4NhW}vOy4d@OJD+Q zX10B&AT{0uX_yJpFcUyM=C2j36Fh>iveg%;DF!3n8#0p(8WP3|a%P&XnQ69W8QJO! z*`V!7q^AjvfR4>ZFJMZBAoWr#Yyt(FbUj9(-yQyMA|pDK8n;50!}H5>9@2guoI zHYA)dS8q8R%?54xEoY1N3td1*`PMtND0rDglB`= ztn&>jlOs{KMxtychE~be7?ceOCw5ABwj?|o9AWY<~ZWiGda>TIp6~G(8HetF7R7= z_;bJo#_8eD0p$s)TXIDC9BGvtc_4G-fy@D&Swrgi9MG2KZ&nJmeGX{I6nZ9eKttx- zE=WC}1F5bCBn@-qvCILjn6pNCY6a^AkDw+KC2tdO@Mw~H{Ur7JN$T~J)axhV+Z*wgJ$;h;_$2kyN$Q)EV6QU0 z93@PFjeP=ek{~s}6wv1+AboCA;Af}@+y#nFfn|HlT&gkXQjI>B!b(4ZltF^Yg0$E# zRcV*v)J+S-S>~nCCyXyfnU_MJFunvFyi|USOQnG?1(rIblnGL=UMjtMnRL-*(n8ZT zQcpuU$Kf~R7(HD&VLJM42I9Ryx9O;1F(9?;bkvh^&IG5cp3|Wp_|*_ldpc-9c#*!P z{+upKP8TJoi;~kJS0|CqIl^?&bGqgT(?!+knj=hyT=6Y^EYoFQO-KJ_eW)9!oBM=? zT5&phC2PWQXF6KVx{(*tr4Oe|A5OISPSozfx_VDVdxpO3oA|XNrGES+^l~m_Ss&ggP zxsvK!Sqr(6>O5i06UIDY%oD~uVayZ8JYmce#ynxn15H|Bp9lL9&sj1~jCsPCCyaT* zh!Z2|M|r}CeIcm-T<|9vXF54<&O`602jsXp57_qt4gm+}L7LhC(r-2o(!!KQkcxSj zhw|ISke_+L%M^|&^B}h@XQv<~Y98d4Zz)mpAh(Qj1eu3ARHMY+C}9D-orLtXEP$L4 z(#Ns@azaRt`T|G@A^i^v>LSVNBFX9^N$Da<=_2HcM&L|*5z1kl{d$pPb&=?>ND{jU z)L{BfLH6QBpavm(@gh)zkknWtYUHCnJjuYdzkH;H0kWR?D3d9qXFf_GBt7#{0wGrh z^HIVv(1luVF`_pV>G@ZB@6JMaZ<8Clq?V> z3q;8RQL;dkEI>_|lawqFB@0B!0#UL+lw2Y@EI}RWv93mM@DkL4klx@WlIJDRUk0j3Gkf+~as z#T4#^D8!t)1t4vMLfHm|unl%0&K1l;P~#*Z`&Xg*SE2e>p+>YqjcA4HYlRxo3f1EZ zHKO61uD;^9RtU{`43KkyLP$pxAXhMXj+iy%3MS9o5^@Ez5ESEA8rGfkSmyl&~l7(1+x(L z46$$pvk*JU2&&ILXo(D^UA6T*AR=ug(7jGNL(nAbx|ZP z;4CueRwOPIi3>&I0?%28A)Q<(5*LcZg(7jG2r~tKMJ^PH3q|5Wk=Bum#DyYpp-5aP z5*LcZg(7jGNL(lq7mCD%B5|QeTqqJ3io}H?aiK_DC=wTn#DyZv>{vH)p$M}ELUN%< z*2~rMU0jV>SR0%%<@)B;pco<7H?Ic82s!7v8h!aBAlEmq2CWD=le!wzAmsYy)o3;2 zT)Dd%Z6xIS=GAD$8#uEXhm>oei=qIj4_82&)d9u|(pFrd@plDy{Sx9_L0$pQG7nb` zR>zgqcMEB|WcU#9jm=lO1@Q%DfF+Yk?HnfwzHojMEOh4dovLq(|#EV5tM7 z9e5kK#uVCtYlLx)Fs>2CHNvkJgt`)|$!njr#*9zlWVO%SWYlU&GFs>EGwZgbo z7}pBpI$>NVjO&DPoiMHw#&yEDP8in-<2qqnCyeWaah))(6UKGIxK0??3FA6pTqlg{ zgz@{>E%p@7*!P8&`+@f6tydk^s}Ac`hxMw%devdQ>abpQSTFlzy=t;vHCeBktXECe zt0wDJll7{}devmTYO-E6S+AO`S4}p^_ktANxFTLbo(ah_D$05o21(}Nw;s3Zr_ByQx8o<-M&e>eUo(iCh7J~((Rk1+c!zK zZwAflu#1tJ9Ou-bw>OK{iL@R>|sC$?8_g>Q>3> zR>|sC$?8_g>Q>3>R>|sC$?8_g>Z90sScjV?;?Zj!#V)~PfLytF6t)&&x*%689z}ci z0&;Kjqi8jAX6sv8r;oxeVjfcXQM83AToHH_b`Bx^`H#YqAuQKd^v^#k|NNt{L+Wvn zNncouSmDImVqmEUWZx+kmSTPNINsig`!QID$MLofkSivS125qcLGJ7=(LU!A?Q<@H zHegBuYE`0r&L!ICT!K+J8Y#5!OJrM?$f_)nRav6;mS_)52{7(O9@eKs7)v0fjB}<_ z0{JB5Os53WNJuYe38aybUeFRqBO$$@CEyw{(id6+8DOnwRhEcuC9ot}EADeHktJE8 zy)h+_Smx(G=Mq_uC6HdGaG!GtYy(2t?Ip4pOCZmD8>9yJIhVjrAfyFYA`7rY7GR0? zIhSZ}Oo{f!lt9kwQ7-p+mdY|Om1SNk%e+*Ud8sV(Qc>glEGd~d@(WUCqrRve8>d~d@(WRi_NtD3(QK@KH zDjJr`GA|V+OJ$jt$}%qnJ;RWb^P^Jr{Zd)xrLxRR(NkC-&W}n(+frHPrP2?jpjI@} zIX^0uWnL;emx|7%(i^3+%u8jNm!hwcZk!*LqQ^1L`B5o&K`fjfmC7vM*( z4Yb`0$bC)QK;f4FIYZedI&agswoTODCTedJwYO;dP1+fh$K&H=Z}PS`FxVLNKY6wU#+gZuS>v=g?Y4oumgIOl-dWhZP$t(eX^ z;1kGy0+3_h6Zq-`IM)|BcW4aSA*tR0s_sGxwfzoIwGNP{X?92h@6b+_9jGV2<*Mrr z)RU0=sdk`lgj`+SAzV9vi{A!uaTR-qWO9dOatG?noYVk2P*27wX*(ooJ5Xn)P?zqI zwCs?y>{Ok1s?IxA=bftaPSts*>bz5R-l;n8RGoLK&O24-ovQOr)p@7tyi;}FsXFge zop-9vJHg*$kZks&ovQOr)p@7tyi;}FsXFgeop-9vJ5}eMs`F0O89VDi$z71!I{~?_ zy-VxbyWla4LY!-_T%nByoC1uyP*1|k1g8nkPzhYo-Uaz2%vCy9w0EKY%+D3=U08Kx zoGaS!4C$*P!5fs$J-xe7bLQbb-d(Vi2%k_2_i5~cy~Gsm*WCpvJpnHy$LrnFb-U4u zTM(y5Znt#ZZZlSSxX*bvYEF2WAa^+LMm-6+OL@1n&~DI>ar(q|qb7`V4BaiQvKuvF z3N`a?>4e?V31y;TnP^xh8kUKMWujr3Xjmp1mWhUCqG6e6SO#7ngBO)FEJGhZ0Z1B_ ziH2q98X;=n3lX23pOf)PL4a-EsGWa>8kxm+xiH2pO z;U3X&k7&3@G~6Q^?hy_5h=zMm^J@5cNy9y&;U3hSanf*)Xt+l-+#?$95e@fTA zJ)+?r(QuDwxJNYHBN~=#-H`Pgj9Sv0T@D{IA=d@UVfP*b(AXX z<)9mD%e@5U(34EzuC{V;laPA}%AqqE=U#$x`Mt}vm!KS4o!GgTpd7p=$QmXOwX1vpE{6}JlTlyTbR z6_8#++T<1BDIsn03fbfp;3ng=$t%Ro3h6Wo4i8uUjcqG zg*JHw^e`dyNrn1C1-QevL7LDeuYgV_q=uQ>>l&lmbD@DmlQ4%M@LA^>*vQm_+6eTM~$x8GQVj(3fMafE0 zvQm_+6eTM~$x2bOQk1L|B`ZbAN>LJL+-Jm7-*&C|M~=R*I69qGY8gS&7jt8dyllN>Q>>l&lmbD@DmlQL<8$tP~}yWLH19bglxOnTO}s zs$^GJ$*!)FU0o%+x=MC+6?nl`b9Pe&J`i&Cr%F~wmH1L6zEp`XRp7!&+-7+W+|Zy-*a^LbE=kT&P@($CM!=6oI$V+w7~=cRR@m!^Flt!4^s&gao;LasYJk2W%$ zHfOasUM-IERCE|pcy6&;9IqC~tHtqZalBd_#|Z{dqgouV7RRxV7#zorTC^9tF9pf* zYH_?;9IqC~tHtqZalBd_uNKFv#qnx!94qsn16Jk*$#JYsgX7iWI9GMrp*g>iT=d&396(`53-B}tr&f7|vpYz#jalBd_uNKFv#qoXO_ pE$lx9N#C7 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 literal 0 HcmV?d00001 diff --git a/openecomp-ui/resources/fonts/omnes-att-light.otf b/openecomp-ui/resources/fonts/omnes-att-light.otf new file mode 100644 index 0000000000000000000000000000000000000000..587d871e6ff95d485ddd6e6094c9e8b859294515 GIT binary patch literal 145516 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%0Aux1V{TS}dbzE~lAYp>r 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 PBt}gUSsE3DE*<{>?+b-2 literal 0 HcmV?d00001 diff --git a/openecomp-ui/resources/fonts/omnes-att-medium.otf b/openecomp-ui/resources/fonts/omnes-att-medium.otf new file mode 100644 index 0000000000000000000000000000000000000000..3085c1fa3927121fe971f0c858c0b21470ff9624 GIT binary patch literal 131984 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 z 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 i;c39F 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�XYuWVgAU`d%i}K&)3N8 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

-Z@SfnSs1nYviO|`0u0zR!Sy)BK;-OPBAOvYjncPJCh zVk+XjTqGftp7tIh{qDzqL*C=w-!JicrKz*dT3<82 zImZ}td@p+JV|Kg4*7x0dW@hFNd+a{icV^~RKZ*ZtbsPU=uQ&hmCI08O>vwzC{?94=YEVcn`Vhb+#_9Pyo#_glSU zzn|W7mn**i>%pUsJ^EFTUbpW(wpz09;3Y@j{kRA3u4GKop*ltcIR&S(U~od_}cBZnmKo`lg@43|AklG>1Tu2J!y-hpSQ)in~v)} zdaI-FKJ&r%xRDy89Hzbno;pmw#zy z<_*W)!`EJZ8((qOx4-?P zOD_4=qdqlw;@lSwc=jJwf8r_U9&qI$|8dmLzrW%)|MJlvKJb|0$;a$=>)-y%C%*LS zJ>PQw^Iv(}=dJwik6*sq?>~6EtA4-D*S7oA9xKl}aEH5Jyw6>q{<6`DFTK2Y%XTjs zyz*h6e$ZF1TKM5bJO1ug%P%Tt-u<-YTRiKy*|$A;{#O6~=!e|-z)k1=@QRt4U!A?~ zafZZ$JAdc!e0 zyt{wDUw{1GJDz)+`+xkezx(mq{r;)d^9B$6)F%da9&EjE^!+zH^zoPWkvl&pGC{x9)##tGmr@`<-LA zSoz`uw}07I_j=v)f4l9+cfa*rU-G~upFj5Q`)v2<$@H^KKHiOtq&h8nR`Hg_XGDl@G;-o{cTI`|G@5DzH{69 zwzqoTKA(8VcE`W%(eHoohwt(qpSt(TqW!`Hci(aQZ`}3ecUyYrXB|8IRQsKdVUAyo0Ki%=|Cv|tf@Ak)k{yPf?zjw>#RXZ+u_~)K~$;p>| z@{-Oa_q$}HqZG{eJk+eZTOuN8RT~cm7fLN4HsgZPDNV%_r{ry|=w_ z#a+smKVk6BH=eogyY_kE+wRsq?8N5F&%Ng!kABNL-}LIQ-S?n-9dyN-cl~73hwt*e zS3lq}Cw%3AuYU2TyZz*ZpWN!#hu{7VFSy5ZKYQ%zhu-I;dvAH~)%Q94-tT(to^QR+ z*Isg;&#q|I?VrE)(%0STb?f#&aECK@_`7=?_l2!r{is(z_|^B@Vd;vupZ3<%zJJ>7 z_P>1pFRpm`+y8dIXP+_Izq8-PZ@=w7zvlG)PdoXsKi}_u`>lTaBi{DH(^kK2-HKiR z>8QtF`J&rA{*!xta_`|k?em8BJmunZKC|R@^Y?k*5j$>s@EuNn!C}XgpL+0nzWnXK zd&UlDzxK*)&VI=*r@j4+&9L*R&H?Y+_wrY*+I7o|U;FgmzJAkVZhPrNPd(xCqh9>| zyZ`cGKYZBz-rC*stoGuQ4nFNQC%ops(|138pVN2y`A4cVesSu_Z~e&l?8pD^m^=1A z`>2OJ=^?wVe))NSee$LIeS5#}ox1g@_uOljWxqLNr_&C8%l+PX_UQ1Btv&U!*Pimx zzdibtJ=dN3{Ubke>3`n;*-Ninapj@^dFpR=yZwQ;dEf0Hc$*7vf8M=!{&e~Dbvtjf z^s^WK+dji5fAW#Tx6HkI?t~va@3^xr*!j(0pZvq*PA^^anI~QRz>5$4%%Puo^Mh~m z;B6oL=)Hcn*JUT}yVqH7eb`$cvF9W9{Op&%^yN2w`5Uh*PuivZ&EnFNE&; z<(GvE8%M=p8P zrr$jM$v=4JSATQzN$)%96Tf)dh3~qox@^s5FZ}L5eyRJ94?E@YosD1l2U|V^PBJf;9Cwq?TWcy-fQ{4FW>Nw7cakf z=lc7__aFb1FV*LM@N*yh;@+QJcgjgKWK~9w|dbr{bQc^ zSHJu1GyiVekG*WyWfv~~`+L9ri~dXBa8~~w{g*%IozMBv$KSc_L7)5ASG;rED=vNQ zdB>f%=8n&Q>`_1Y##gqS`|;dMK6%vbAM*ScKL3Ch?E13x#~yg!3)&}?hhOmB;l_(b z|2cZi==&$FZtvZ^YxYs)4$Dv5>1jKEr~YvF!@GWFr&W*t($^0>`M^C6dG!68opv~* zT6@SxFZ%s2E`Q+S05U3Xmenn&(=>|=Vb z`hWU&-r;TceCdOJb+^MG^s=pw{KPh&SiRlS3#to_{nqeFJ3QbqzuJ9=y`K5Xe?9J; z^2i5%y7QJDe{|OK9`g2AoU`X0_Wa&S%TBrHiO*PaXtB$(kF=lr%Hv+~^ucM{?sfc` ztADoo$E%+4#dj<||Gj_s^xBtvaOneHz2)Z*e%~wJ@z;-^-TKVITYs|R2@n0|4qLu= z_2L1mKKA7oeW7{H>8CvW%fI;2`@V4DE9%$(@*l7I#a%yf*B`v{%(uMY(Fe?KbKs9Z z@{Xr9@7?+7M_#z~#rOE@hri%)w|U3TAA0ebI~@A;y-)we0VkYs)JGot%)Jgi=5Ig# zh39^H7oW)Z=f8LiLvFnO|TJh@@|GA>N z?5p4Vz}z=~yY_<1?)R*7{=NIJU%&8)=Uj2+^3Q+t!u_|{f3L5v`ugJU_W0fVuGsaA z7oGOg-@fK|hd%k8k2&<|zxeE}zIv-Gx7_}YXMXdnfByP5U)^QJzAyjA!+*Zp9Y6aw zAN|A0zdU^Q4%Hp@|A*Iq=7-y_A02tgPp`P`MOQrF4$HptjF&#^9Y5IeYk%{MZB}oy z^l5_=e|6&Ir2S6(-4j;Umaidl1m?P&Lhry z(yua zE_>%Wd!O@^UqA8}{cjJy_rkC5`ouqc_glaG?%zM{+{52+`32wI?TXtx|GDS?;ke(t z{7%Eae);QO{>2yE;RQcGrMJ9kez@y~D}Va?Q-|j-od4ic?)8T^{o#ve-0Pl8kNWM` zfBwz$E_m$)Z#>~wCmjE=L;vnASN`nWpWo+Q7k=gwpLxJXKYv80{kOk<-0yzz@x#A+ z_%^?M^F?>s`;xy~^7jwD>Y)F4&u{ko%BjCQ{yxVaf7PvT_1epSKi`?XaHjLN!I~8Z zZaQ$UJ(ta|J9MYHg>@?zcRJ$G^%BvUnVok%V*T9w!Hb)gtXy2ZX6-K9{qpROZMS62 z!Y*YyEKXpf$TcbHn0(&wR{^`DY$H-z;pm>+-F4K4O^%9J;t^Zpjgc9UNdEUa3#?`U$(uk&}iY#ze`0pyk!v^29WlFhc zne~TlIAr>23-e1C4_Q2PaqXs!ey)9^KW9ky+Ut)$dZWMY&_i$ZCpT^yKf@PXGa@(o zlN(nYxqfl!zKa{z9kyY9ar_K#vi*&{{KifDE?zgdiAVY4H~OIU*OoFj{$79l*Eczg zo7Swli5H1~bCW-|c*L5U__6pmSO3^_O>z3Dl$_@VPpFU^Z!kSe_rk--$pS<2P z7Uq|&TDRfQxlPO096Gmpaq0TCt9M>{-9NnEpPa7VWqYjMxM^j?G*NRXR+Iz?UlWS*`ltBX0barUv)au;n-`h>;L$lJ$kfm{;=3U9({GJ zSy(sk@qb)M%c^Q&uJXHP+bhe3*>-!enq67<7H8*Ht!yuL>#~@iU%2)cUGHIk_KWu3 zutq4HJLGzQCcb6CFI${n*{$d2%h`HmcjfFt<6D|)<@{`~Q?;wbxw1Fc>t6dSZsak4 z_N#VZv(dUc@_Oshs+UAw9O80G#L#NubB zv0>TVe1yB@^RdtujlvE7>2gQkY$8Y*~9DdN^+W%^!T>Yr& zpStOXY+Sc$)8TU)7W=EMkjx&w`l&bku|IwM&P(HXIAqQL2NSVz?in|48p>YLS#0K; z*{WF8nq8dhc4k-3m7Upza(-@cuBxk5tJ>F2^M7|5x(?#@wUOqQn}+LF@%%w^YgaEW zEMI!~+fBFy#Pa{k(3TJnF{H{a}-n#)wKp4R`}nOEluSD%qL z%vP?=fc`wYiTrq)=B?haxUeRwp&Op9)6{1$xB7mrk?P*+bT>+%UIc&Em$Ty;i5!Gz-1iIZu59L-rd>T^?Yf1EX%Gsi6%{d~9-mJe^oLy|yby1cpo4Q=Q_Vxex zZa4k<*Gps%J4_b4s?{l07ISm6bG=nwWEGg8w`x^2+w0ZsW>r%yl#A2cAwKcv&7>ba(xt)11g-PXdwY|~xU%+8mK3r*Rb>(-t2)swZVH&<6> zHRn$*n5+fm-pXQeZnm25^cEBatBQr{zc*PoUgpfNTx_bjs64EZD051wLoqko%=PNJ zo?lhY7ymnZ>Dg;{=Xyr0o^3ik^IW!7r``FMTD!Nn*p%%~yI1^A&fdz!ZhL;AwwhY@ z-gNd>mMi^jU9Rl3SJkbmo|b3-t-W{kj=W*~yfzr`vG&Gd?ll2-}tg`zJqsgXnV2(-$^Z@)t$1xU$wep{b8)@lzTQc<^B)t*Wy5uctlO}cqhL8`@?A4NiRytLIGr z{hvPPfA%Q*lQ)`vS$|<+$=uon^}+ge8#dj{&)eL?ZlP~{+?s{ObvN_VZsHlY&=>8o zcGb=Opc{Y0E%ZGW&du9cH}-&A=v($%oZB#e(9Qdtn|Q`8^hJ-|caO*QSB!7w4!X&w z+(KWqu()dOutPT8yotK0hulKnbkI6T(#`v#8-K(t^gY)M?~?g->yNy7pY?y@MEwtZ z*8fqnwGov(568Tjf#Rkga|^A)RqGC$U$^mQe$`DqBe}(bzr|J7DL(us~nlYPCC)ep58v zVo;5TCA_QO9W|qFQy2YFJ>Fa$>;c`XtS94Pe^UFoNvGc}n|?8D^@`T0X!@B4^oz1H zDTmEq*y(nA{m!^I=?&|0II6%EnFkCipD-z^K~q<~X3`l|IfZ&3GplOld`uRZbqm&0DK)oS|VQ8B28qs#+F!)jCy zi~eLVX?pdz8H~r1)@a-v44PJECH7jQvS~)0VZUnp+@v+I7CXbzi;Sz(1Ij_sp44M= z(Hga^g7%=*3fUHL84VKaz=(Bwy>ig&#Q>D$ zpc<7i{5=+QiGxxr5;d@hppCN*d0td<)B^FVq|Af zcLcW4FteG4sJrfD*t7$niNI9 z9B1A@>>G}T?bc{C?04$ES21|wq1`YVk23*f)R}ZUZ6R?mDu&%|41%}mRHJdLJIbuY z(Qqt~b;g6XqoLIw463@@jLL5970OId9e10aNvzAVUk`>h^q}eXZS09@ZR21z8 z-e58+hr^~bscVNt;$UgFYoWX|90_Pnm7=U_r)Ak4jGK-Sn|On6yEiTyOELKDLDLaY zJH=$wE4)i)H@3S2!K+^u-9h7RhV8?HO=yRu{of!yGa3$d)WqJ~XdU^b+gX`DWw-*2}Z2yKykJg|tH-l$!-9de05tg2?* zYK{BDeo@zDymlo;>6DY9c}Z+0`)*YAyWK%K=~ttXXx1LL>q);Qz7KMrFl?2ba@48@ z?Y31t8ka(n1>Lu@hGpgxtYg2u(<&xSr!_Gclm2kf>yPcF+yf>?%ld0K?QyHLA4ZeL zVAie9*s4yv0nM?Ts8=}@yMtDHC=m9>Et#*e$efMsy6HC6m|VK)S%|*899d6IAygJs zBEe`!LR*bH-rCL{bVr?m5YcwP4EwT{%qPh4TfJsfck8-ejs|T(sa+SNRrcd_;h=GBCmzsmcbuhW zVbYgt%600hYjxX{V^f-WfE;x)aH5ox?yzj?cDGUS*hmxloXi;X2UdTt99Q*3vQ<{2 zUcc89m;~2qkT_V{PWExx89NJoc3FuD<9@Fw>WT5_G>K1$(xPc5)=ueDde(3$Pf~o4 z5jUBDGFJ2SyTeJZ@AIp!-)=Z+S#Bxa$UR`FJP}gM{OXvMG;GjGtYMPw!4pcI59mo4jBJhF=Vy(%+^ z?UCuO#uFj6*DgA3$x^RzGDba|DL9IvG6m!DP}S*V?zSdXJL*`8A3!3JD;K5QTyE9r zil_bYM7h;cHCRhB_(>un6_x4kv}BvTVNbT+n~eIC&baDz3r|QK?@Bw>#-QJf1j2sN z@j~N%dmvBt=qj<9irRDw%o02(Mt{(OLK=m8YV{@)$7KzdNj*S3wiTqe5}aXV z7%e@Bu$f6Q$?Sze1?_2I2z~YAxNge2Rt8HQt5K85)`iewtN^E7YdR*>Fbw@8bL(gv zq~5^ZZx`}P%eU%`Yl(tsW}8smiX-49-ECl8ttEjted!ckN$uURDe<^EIBuZa3zCyhN6zq>Ip}tru zH|bACl|w!iRMl*QW>D0yw=pcLZvy)gb;VpWY-i%Zq!{>*tg>k<_=kc+zautvfdcg; zvlk`~XH9kkI1mu5oRngsOtGAp#3nO{lSWR}kqtQP1%*?vBTWjjfaisB{xy zT_6;K13?m+yNX_r&IBG=i7A~-rW*So{^)oZXPe0!!RiN93*7H368V8zUuB_A>Q_?U z2G;MKZcoaIEh#{3em8cCUbk|b+JIHrY88VL3?*yswkJb*Z{`6*X|-@H<%RAKM+S1J zfKjjy$vgp^vVAQXNW7x7vUW!l*N8Lo8C=aTryCFW@O)AiI>4;V^+6lc$ zH?f)g;TkkPE>$~DmC~{h;Lr=*UQA1343IIhIyrKuJL(EbQGWFWM|I0!n3;uoU>Vld zlIfG2Olo{duQzCSOh}VB+ByMj!%VuvPTfdZSWUW4h&}y6?R8Jy=*V$t0Sh8G@p1 z1ThlQ^h)9%{98vR#jwug9-&_H7904Ahh|) zsx#<08wQGx3M3QUoBpWGESSYwMl@DK4+{r9P(?7nuQ+W|2a7-?dImjKbk*T~IG9SK zD&biDGIK7dmJB!?$GQvh6j|Dz;JSKs-|3hbgNgbG^<80}`&CudASDZ;fR-DT#CC>W zG;tJ+THQ&jDumNc7nn8dblR}J#2a*NUkBR+vO8|9L%+U)lxs4WD4-HcS(0u6^?DJ{ zfRM0*Nu%n*{YzCcX&z?EyqA7|f2{Dt+eZcJ=hejR3_&3k8X81P*;c4Wu<_O;f}73I z*wCAwg>IqN8%_c{l1U8P2PMpr&j#8oQ6agND216Vh^jjE6l%dQc@dm(# zIE%ZAUQlEmq>(i!&xS$t6DzT69s`(#2aamv-dLF(2t;dw_H7bDHFO(Y6fX=#n$#Pk z1n|vj&yGrTkXcAD4@X$1^uj7%S+3Op!BIeU@H~kzDA7C)lySG7ln#gy8G4eq|+>y>&!9S+OPAS#> z+)61MKygtH5(x%ss0Y8bksPkduK|{&7U>PjKzK-e!k`a^aUM@(CHAEiJ!*S@#V~+5 z^9eGV!Y-tx64bg%4!E*aEx^cC64`nrx06-_&{p_?Lh#;{IdX)EsjUPM%w9k`_j-LaUD1GY({l|V4MKo}$=J^|S-(db!~U1_qj8VHie(nwH{ z-B3JdGA+^=Hd>M-DWm!rtjs!?3>9nS7mgzES*Juh$=6l$((ry_8q1c`NU`5?tab^T z{H4(3gzNYF!)_w1JB+bHDF0@FH}6{%HAx5dv^%z@5=EC+cC-y`Aq6bvHl%gdr6jR& zWGC{(0G=vxC}PGD9T+hJ@(_b4T>%9pjyBPw2f%~DO_ZQEVQo5X>c%WFfmWog%u?ZTqa7ztkp7b}4heV2l+kv(~g=t7?G8!}y zia_p&rl>Oth%)d%8W@EmJ&8hI!hs)<{Pi*5nKzKx45=0HOd(J;3KJ~67a7n;^)l0_ zak~Xim!bs0GtyrzRe&aTQLc63aK(nmWCB&DLoksJvGXgoBO)gSbRy9Nn&EcjR-l_9%)`P8Ss0$KYbp~l(I#r)n)~nFU+04s|qCdV*O|bGE|?q($uJuM(fovu*JMq3lDIDxSI}^0yt>Fyy%o_|#iK6A-8KC{Cs_ZD$FO(TFl352s0*1Z~T~Q#|81Mt2B(+@BPW?oV zWZi=EEFkO7@F6@&$_98_q%(a_;uGK}qk`fiU*O9Z8Blqyg3_qmV=rOG}k2m2#Z~3c5?6R1lwo zLc&jUb2`;ZdaO$IzA_WPxd`^1I1ZIhy_pE>8V9&MP%s0sw1aWzAF__rjC~aZ4J^;G%24FM;orxfXSzvXu&N}hRO7UL`D|26JgyN zhHPs@8fjjM-U(!d5~SZoabO)1vjDz8^!601K4VzHV}}Iqw0%JKQDzVsd3jgqNZ`8B zQDR1<`|2+8^~7E<;6%3A2(ksqg@Y0V0^Uc!gUJ(7nTo8yXd$L1Au2=J4Qhg8#|vPn zpBaOa@I#^JdU5^}i zRY^+`kaz=V2|3oF>4Tm$pkPPrVvKD|#+7=&fO26ZEeH&&)v8<4BpSJ4AMc`iNxXrB zSQAG%rcMK=jHhCRp%9AzgN7v@Fw|HF8wSjd`B0VWXC;g*6&wfR%{;&q^hP>g6u~7F zVjMKSEJN)x&eRK%>`raM5GoyrD9Q4L!=t7G`AMP18UDNr-H!eo zIkcOTIwO4dfDxLp;RlSe?&8M~X9Rws_?Gf!-e3%nhpMCfl#0Xdv{owcCOu77nFmM) z#7}G!Vq#EAk)7@h-dXb4WcnN9RG~K+M#>G<9Y(e%%1(w+N@g@!juBm*xPY>!^PxA; z&qeM?2{UfMq=`&bTVywMWKbyWY*TO&N#k_Yl|Zza7(_{yQxJ%YeOEckD$q3cr65l% zn|pw~y4|N0kaL37blzIo&S>CFBBT)m;V0$z(T_y6-gB@*FGxj&sMIH>o;HreWlX;h?2uUlAF zr2{OhJ;4_ZkhTu^Oec+I!Z?O;L?I{~>kD>ANz!5fOk>G4W6ft1lX^C5TW7 zqmq#qVnQGtx}Ez2bz%KtB;B+cpr6rT)bJmzp-4aCFnO{@KPo#6O&4i7NSw~N zTE`MK%>cL#V%NFhqgtWCrtC>182SJkjXc(4OVt3C)RRPAXF3s?8FWADh_?T8-15V@QK^Xnb3Ms-H`?g4%VppH0)&FlLv9M@5ZnwyMX zSuZD-f$oI3wjc#ky7g?0fPn}tb(U3;X1hQZN5S{9vMPeFI8f+}{0Q?{*Qa2by zT@{-FenqaSc7YD29)P0ngY(huwzNz^vpQ(9BQ)WU6T1<|-|vDfR881MUHdffEf9je zjd#gB00=x`96~<;*@j0@k-)PcYWg-4K$LLRZ0Z2;+kv?V<`Dfd;)p)KmZxaQdlM^VLim6HZ9VnOhB1Z zYPd!Kq)J8k6MCKwQG-r^PGS(FjgHD+lebja&?%RstAQuhlIyOnuWJ-Bq%<5-fvYFx(*Bz+G$qk>#)>3DtcFRb{%V zH&9rBl|dfE36is~{D;F;V6;iJ25o*C(So7N!w9irP&*)}f}YUMQjglh#AY&Aerq>; zNTRt{gKTu#6$BN+R7TVV!Z%zL2O87Vo_%5_1}m^k@o|#L(txS*IYa;>5Zx2e@Ev`- ziV!M{VP+b25a~e)Hp7F&lc~~Ia3N^v^%9vXey=2Zhkjw7QLP9wVh~ze>eG~JTxV>E z!i=RlQ7eXZ+~8Va8Diojk?zOV;}{`FMz#yb3`x+~q>9nsm{9}KbOL4jbyqtjxiwHP z8a^!q2}3`#okKlApNLavm4t~Xx-rJ3t4XjR+f3vKdLU>e+TqHh1jhQI44ewBG9%)~`x=O?9edwz7K^e;GZJ{%)lbAd&uwdV=meP8ax% z!?IOp22nx~9Y9rE`%DMlMbtzJgT2EbX7~k*D8$Xq03p=y1zB^vm` z(JGiVo+8mn0#%LXLfmUcVrdBIyyaGcB0v41^&5%51>LqDG6zc^bf(qT1|%gzx`LtN zTS7=de3@8C8rWFT=tjg3#Mp)26l;e#iGfKxKtz;eAYH-J@Q1OS*$xLl1Ob%^>p~$6 z7{!62;>AL-4@^?NQR9Pj5^sR5Ri+V!YN=E(>CYv=5TeylGVaU+LWV;E#KlG0?O-N} zBIdwfMn6pE0mMhGwgI!4g(X9&Cn=OXBvC~sCNfWnZZ3d_!BeY%f;d9=2l5MSHI;|&qK*EG%N)@O-pcq1`?w-xhg4iqkHPC%?K{;V1JE)!Z`U!Ly zWgehn<)ncnrCTOnk+H|wpbDn2Nn~k+U^uM`?&gr|RDlKRL#L`R4*d-G9x;Sm7(1pN zD0)1lC0g_(d(qjFhzH(ZgKd=E-1msI`JmX8vJ_Gn!pp=Mw6$9kfq~@d`@l~n%PG~Y z6Aq-9Krmd<6C{!0!O?ErMtLrbsS1QwHpkSQ=+J2E$fn1d1{1Fvuhn!H);q<;EB<*5>$1t48k+kPD7iHD9IAX ztwe@G%+%3ci7_MQ6N4;+QYp=qkwP&8#-VoF6}SRhJE-JFRK|TgSr~Qskjxu2(Rl%p z^a04eaQ1Yz5sArMQTd5=FwKg^9|8cTAmj+b5)cP}rp+#qBhi~>qDdUety7$^Cd^ILkQpV6 z)hqtN)q%;n4on8R7rB6Vr4UODqP-&w%TjcDV_an`Js2~Ek;TQ7bMw=v`AFd@q(@*> z<3KWt2^@l;zN2M1@c?c-FhF&N&t^sahWtL)7KV4V_hQ<9GHuATlFAGmY>+u z!einM^dVB-Yo0OY;GpOTRCJM;g>zNr6SRH}(R>ImA=MUwDav#BNf?(*Llo_mt~$at zQJE-*P!aViNtSp!CNi^t>V{pSOLf(;f7A(4OO66ipv_2taR{}D0_ZhTZ;MIFh_jP# zaqc6QOblY=0Tz&jBQFVuD5X+pEd^VweC7d;M&Og8$6**4cL=N4O{qZ?!ifiHR|rWT z|I#3f@C)>zQ}PntoN3)xW=3xyA(=dv3I><~R94B6iPFF)-aw0IKpxRg6@Bw`7&31H zH9OPaCmx`oss^tUk-=Z2M*bd!s!kMv za6!olHj!c?D?o}gCALy4k*xzz5Ih(L8G0y^1S0!GRT8Q|)DvNGzd> z!-AGKqdF1~V7H;!RxESAN>N9$J%?S)XxNEl9-!-hh|1~-G$%CVv7|bjZeTu0U~I{reuhj}SrD}dAvJRV%lc__ zUu(uUi%hrMi3Eex!pc+WYKS3vm#YD!`@s20tgFQF4$Q|F%E*ue%>LM(t0ARa!Ck8T zGGj38A<6iygShoy=q-isvy0{o3gOxO10>3*RmGnJI{ZhOfS6AG7$Moq$jZcUM`AR4 z>**Px1~hsjOVBIY+a`&a2(-~ms%|Ggk6ulSM>XFi?r~bT6A*|Jkug)%W^F6Mkti^V zQ$FZb1PvF7g2MyogZZTqD4T{Mx3mCK^wyC1W$X)NcCu>+D=^Mpl-Y#ic<^3ewcH!P z-5|j*S^eI`Y|=)kqAkG#p_3>$!lFvsMu_V`{8YR!z#x z+wjehC^6Y_mx#(yB3gM`>yU0V%AkO5^w|OdZ0|%wQYtzH!b`;2P;2`Qi6Zt3CJ=RC zVkviZ_fjCxAaQnPhZ>Su$hIDCCw^uOTv4D`LiKWBSY$--%#(=^XDPiQ$ z=Fua`Q-;nD%Gm;yW_Dv}FibsY8_|cXa;O1@5Osxy#eHalE_;%L^XN!bI^ z$RHRJ%x(*CLC>aIvK(k^L(oHG2vW>!CVnhbfIKvuZ&K~>5+Pg=BszK|6BP@B9^uN2 z#NkeG9=tuag&ziRSP7k2NbWpvkWINt=L>#D*+8&KjwGfe5)79nsQby0qRI)X)l#yn z)WP;u>TI+KS*QARSrw~y9Yj`=hMK5EGYE#3M!|#17zT%7QmKI@V^=D^$q+U_1{zqT zHE?B3!cc$+PAEH~+d_oSkTlT&6DSl9nTeFup5)er_XEs8auN|qOKV_&=n*SPaD&b( z0680hW>R%yxFKonW2nMyjfescR{LK(o&2+(SV-Y`Pep;X4YRaZejY~vpshqzornh# z>#(6DTM<{>?2K%sg`s=bsB3f*vk*$(QA_{`wlE}6w_u1kGC2~qT`-<1MCF&NmADwj5v$!-`kUC!wr?#j2IVlZ zB+Ls5x5^iLq-x8cI7)99!MKS;pD{sDT!ca$#gc=GS*rJ6qlb9v?E}crNuc>6FaSij z`XO@@h}A2}b8$kg@d**s(cCpDn=~OX7%7ut8bq1fOazHyFi)0n*a=e(w<7sbTbnv46Az|N z^QvzFFf8!MfWT@221vK7%x01xj~P&qUEqg;?smG-YsUp6DF_4#?8oHFT1fDeY-wN! zk`@l~a?MOc8jt~LN>pn53vn0_C&Zy?z~jSARF-J_V(doTYUNmzaH@86f9n~{sKPiO zYP<)z5GRJGF~z0Kox+I?0)#)Y4jf5>7+BWZla7ZK0{w!wQqHAzW5^rB&^08#gwC*F zD1BI$QKV#KrfNmW8LFNsG*H+Qvb*Sj7@zAhN|Zc$J4u0bRT1BFN=MQ_r?H2woumCt z#6(e8@k&@)dP2D7@eCm2P;`VPKw=sJ+R+C^f@S}5B48LVKVtS)OCU3s7kF!75Dpw@ zzT#a&lvrj@3r!NA%}*n&NI(%wVd*s5Hnn3S`W2DktfvwW5VwF~03Gg0k)S~FjkJ~gBt8M^D8UT%0`!eLtkI*K z<+tXz9wbVhQM56J5f1%8L0zZyUY-~yq*^@F*A_e*rWsxmmcEY0xF-qKqG8VWWX1s7 zt=CueZaG3<5PyuBAgfcS+XOv8Th5i%kwki;FORke>1;uH88*e4F|dCDdZGLY14PVe z7-kt$tu*>;60_g|@?(uG!)b@Gt$=%zJDXd_b>;yCD|VBS^BO_=bCh*840s>)n>gOF z({ZI$Nc`}>0<3dd!O1~F*^(h`p)aXYY0MI9gqnqQLDM*OM|s8D6O3;Hpe`nU-<85wlnw`aqYqeKMBfW=OA_D?n$DF z4^PZO*bvc$O`M8oB0mgEVC*Ad>@L6m_Zq+DT4ip9^ofpiGb3wcrJkq+R8 zU=iX{xIHBTN_dyjpoEhL+Fa!URRbqta6yV01BJ0&%teMaEjmlbG)-7n-Z~B{$WrDL zLO|itM&?{vjV-{5Zm_WX4&8f3^gRyyU3`Rgu2DG0g}sixMCg#O$}|T;ixdXhun4~6 z>Iuhz9LXJa;enPxbv?i#M8~B@QFXXNwcB>{V!H|J@H#UFqG04hSWktIR$~T+jH(81 z=}`+NHj~y^RkCDN_t3Q7k)%<|;*Hs~WB^H3roK|(lNx?(9HQGB*)rrr;$G22o;dA6 zahfp>aZjHm%um)DBKAWVWpZV$3L1zgCZcDVrjdby;wPHJ^cXgoF(8(A(V2uu$rc_Q zQ;b$XLz>#3iOock88<5-*Jw%1W1|cY{tOQd705gw?sd|-Bfnt&=a5#3%TgphQm;%v zp+1qFGBk?IN2J)Hne`Ck7%hH@H&9+F(u8s~JKenK$T!`#0A%RUNjxA6~_G#&E+28gy#)r9Yr9OuPR=R1E|)9OuT`EMKBMRN85ztAdFq2(U?#Wte1EI zH)y{a!v|xR-QeE^YNdNf5i$@6*F7_+bcHRRvwsnt_GOya6x~>L9L!5ha5x zjy!P}D(!bl@M}-yFkA$fwX<^`*8BBGevrg$BIt)vpA3l;amtby4 zaSB5LU&^mh&v6+`T=oYeC4RvAXl%;F16|I555J5NgoHJu_t8#6J*}f7bFfIWWoDRa zD_OQfBS?O1J5ue&0g;$S>K~2!Y^@?T1HuGpJs<=vA*N5nMC}ijALxxN3RM`CkJ1rm zQ-feKAPgyIMdcq(eek^KF_rn^(G_4ElM z{EC~9;IY^?yGi~H7*oS!eD?#2gey<*TqNL13n=}=IFaWH?1HecHbq2w}2#_k!-|(;ndT7tXpAQvqf&^SB^9kW_ z7I?ajxQJ~8_1oc2=qnTD?^)|#IQs=*G|(v;baVY`VX*6AGgWa&}XIqj|{As%^?0AZMb0MEdv zatrC1UmNbG+OGNIfP@n3U=(e2TtGTJ>Rq9rdjMgea1GPzR^|ajY@tjJ`drbVhK-v! ztbi~k$<)rF`A~C*zR50?-nk3G73qWoH@Ab zsrFnInOaD8o*&glBp!g%rMIdrI>8XiChnjBe9==zrsl3ireUGE1u2;j8hlLTW)~8? zO0{ePT+$u7F8x_SA7W`L+*JYw@&JdbN+TQ#Ft!*0-(*f@O<1eVYjHdvU_Wlc!IkJv zBiNN>=)6{dku_vK!C45BWq-+^3KoKQa%)}qOo@)0j|YJpN^RnDVg}#D7_vkTMI_I* zx4}ugf!(jhX}hW~b|OR;`AseyhqE?<%mbn=jW-n>oHsb@IG@5)MrV%Bvdy1Nmal9^ zRF1Qe&9WjM@k{&5H_E+^n_tQvpyXAzD?4=$5peJjaKLhL5aJV@Yg^k7J)Vl+RieUj zl&k7+aSi*ZA1E;fn!nUr&^+mx5*QL1R-_;?JFAmfNX)TfFB*9v5zG!W;2x=hB``^F zuCTkP65?i}@X?qSz5y+=$lTB*7`K+OP4M^IUp>R#eX zsh`v(@d;sIBdBVt16ssI(GYH_Kde_Vm>B~DuPd1BLeq!riuWBUgQJ$hMxvB>1NLf^ zkXCZ&WMwM6Wf`IJFo=ef%oxPIqaY{mAfE`T5Y1p;AkYPI< z0RsR)PetMrWEE0fF4JLX<8%ryLkY7&IAG4q1FQomhK|TsLyDE?yvDu(^pv5Q2gF^d zQfu;9fIP@xMB_{4i0p!9B_2T3Xx?=Q!jiR8(3kSOQivhr1+z9Pf9vd|5VQ0s>iCZteZoDW=5tz`-ocL>Eas zU?Q6#NmK5?bE7|%$v7FlEU}*%L}iMrOsIV&__F4Z(3lN0F!_1HL$Xc6MJB5$3Zlx= zhZ6|WhquSbwd;`5#4M=&-SIA#!H-Btg2J{h>A5Dlsx}YCc>_q2R5h;ha1u$mRL!=t z1YDkJR*LOo3*6mt#_%M2pq#10ge9p`2=Byo&&(X9c7WP)m3j>K!u z9h9M#2V_twLgrA}PN&3mtVEG6t7o4DX|boMcuBkvSVRngbfp@3sR81``qO zfhJYHYfmMnaq4|hk-~|BsC#Chu;H-z3M%eu1hb9!~?Bj302 z;#I0GYozqk9z@QcINE>??0{^3i4Cv6u-J*SMa{-Jt(ORChTLfe*Nj5Nb#*pIG;mv; zZYoREjb4+GF1#uL8f(YNrm(JRlNMIlh@-(j6C~D14o< zPU*NUJn;tny!k2PwHOcx#&FEw-{T5N%Hhm3GS-%kMfD7QL6Q(1Q1d9LEsk+!ArXOS zkH!+K5}|_lAqPI)KYoC5apDtvfzz}Ge?qkUdQ`lqE+WY<5|?CCJ75F!lS=fW-i%AO zG|EaYl#tvV5^o?5Igl_#Y_a4vBAZ@OKn%u1b57y`x{vsg5F5bX=mO!>Q2@g<0gDMA zO>u*oPCkJsSAJnz{k6MGEl}us~7S&@d>^ZlIS=V z7_>^mGeJmkAFH;CQQ~Z*xNv=_w0I;oNwyJe>Q@;zOH#N>;tl8r7;NhlXj6@&77QLZ zs&7^CqsS~}EhDbCVtc4mV+cVt5chVmR8`KWKEcn#Ngz!XK=AH@bjX3icPs-$;hBXE z(gj+720cOUC}0CQ01g_D&5r?wOzTYa$;wOY0qg?dD;c~VLC|960igy8Z!yUoIRu%k zVy72(Z-0&Yy7oA8JQqL#X95yp^(H`$R)zM+}0Md z2jVzax&u}f4ypizW9n#A`=eKJtey}m#kjmqRMyE3T~FLqW(;KMachTg5*J_6@ssI= z^B)y|;{HYt04GWb$tW~}>2IW8ka$xA>Ag6GzHt@ElE727s^u z09R5f$2+zs{Gl*?LQLFxm*}jsd3-Q31WTve+a&(ntHWRWLpTX&kMwk>s zhKGAJlv+R(aEXN^oWj0Z44ow0EK~ppwqf|x#HDA62ZUmPi>&C3qHxfXkGPnHdR_Ny z;`ReI7inj-%17&im4v!v=Nhn(@krPkY0D-il8TVQ&;~Ms@oNcCKwE^CnN-&UpwZe= zRo$c@lu2>(LuevUFBuGle}WyL(DMV-#!RL`5bhSixbgN#)Q#cu?#g>#&2CH6G4Zr* zfiME-Q3NDrA$sbhwFJU`y)I2{UD*8SE|hC$;z0<|G_!C7f+PVEFpantJBp|(VUNu3 z!Nm^_B|8xgB(G2hT2(q@3~J(9UJszclUYW&9vqv7OF9xw-+^uk==v85 zET6alg3mQ*RsEb8L=RA4MH~<9Ki-iVC45z|EV*^y0XnJrAy%e#S1-xjVF>P!LlUpT0n_q9Dz5pPC1oocRR2hEx;mMOMlXMe&03L0Y*HGjT;V_ZjG)1Jco~ zy-?LbZR&E8u=(cYnMrlY@g!(8>Y>?}EjiNgE*uFc2@;kr-hktQrhmprz~E>u4W}?^ zClg7BWnv86u?5I=fh?;jD#6fRpv!O#A=*nkz`C8nUXhouK^2|3lSs6QYoecH^KT%{ z_xs#Lp`#BJ9G3$tJ)(i0abD(J@Bmse7veYvunK?+ZldAs9Inp^=3Aj5(Wc+h)8|AE z_TND*V~ITmv(9{i{spBHH6aiH>folk&{5!$(XNS;Y08wN`$CANYG#R|e4=9kjjEn9 zgUAbrv`ls@(Ts~LoRKgrgbx%X(KsKLzLImK7^0f4DXxU2Yt$a4_g~JH7z0vo^h_Lu zcnRn@cwfIXqG)=lOXdNr!W<)ypBjE)a+T+i{dp&_*usp!2xCTdOF0D8mZ`jwF z#Ek+(nrPY9Qixj%OJ}f^`)p-gvJJ5;wV#3x8=004k5;2%v+=(Yhv(-KmfS>^%q z^r>%0gfNWC+6b3R9)4ujhzL^zuk?okLTyUflqT_tyVg_std{-6k_H9aV;3H0jf;b z?CFpT_rj^>(@g}Kpc+@N2Uv z_RyY}c!2au{FLF@(zIMIhXRI04TR@P$V|ar*cj4}>D9QhMsac<@iTG0 z=?;ra*ch=T-atA8&y*vnoh6+1GOsii=KcwJM&BQMO57rHsg&jW`kftX^F}n4n5Z0uSK-00eM@W9AKP-MCR!gQKD6 z^&~(s6agw*ps7!g)q_9$UY%qr2R+~%_n33&6V0%FP6dI8L{n3rIwLAC2rC&xG}tA& z2cU_HG!iUa@mRsFY6)pqT(C?WlL4Y|=3pC%N$5;NN`x!Z_^S{OHa!tki7ThqU?N1k zy^rx#J#)1SBdi zMUcraDf8g@A)*28awhd!R@CN~a)@JX#jBm`3+EF3v!YuQ2^Y15J#vu#IO&rS0xoNLeu;1jA0=HChOo;sOzo-$WvEp3;S zFq0r01*-@OneD8#R3L`YBfzy)QS^kRh11%*C2j_iR1t&8PIaHKSd()rO)UQFo}zxdTmy>Vr|OYWYUo ztYL2^J|WhCOjFHBM?|Vg=O{p{fPq4Z=0NHv>>&Ofs4Q()$=kzi(bc376J$bKA8;T) z$BoF&?J3d&Ri~;~J)Q6hBLV>z35znL=*%>Mq8m&@4Q5<2n`vO>4#iK~*%^ZziOoTM z&HNkNl^Dcm=|i^x@S^(e1n-Y)bXdW}ibQ@8_N}r?9%mMTP@)+q+GRybjY$bhSaoyI zeHw&a84n}32;%;C%@epo{UnJ`;L)zUA&3)4;UAP-KKGu8$0JFR-RC0zq=2u?}eMnQV(vAPg{6Vjp**BD#1pxvVbkUyqBj z7;CT6AclU2`DiVQ;NLY|`hGIKuzLsaZhjV2Y$_AB zMk-jgPL!33pSY1Xf^`N*lG&@R{IX!H!`PWpmsXmF0n?Ew`*e_C%yqu77>a96RE?TP z%nk9b7R$sZ@b74`H4k=2LyWMBwv#$S<%r7?$Ge8_5c`La1roy%B;Fz}HVxP7OwlE! zM4juXf`g-ra70juxERSj&75))pMYk<7jn*&>9`SzmV$Jf){^KJ?VET2EonH6D>!@v zT$v8u`2dZ=7-XU{2M0{6Ac%H^NqKPwMXqlXlA#)jM3bNw#fS{ixDJ`8*>;1Z>Juu_ z)>f1F1Z8drIP3sDg7Q29$+mY_ztKD99sooETv&+UCsJw83TckQ4|A4z0~&9)smO|i zV{y^Pm|7;+fWi##9JPOBw@?S@jYclcDhdUAjQ%&_w@yk*wuH(E9Eo#-o;ZRSRhvKs z;7(*HejO^n*7FKjSM7aq+coY^RMWqj7y~T_R7CVxHh?2ZVx(*jC(CGQNWef|I&^(V z0ij5S!rUni>8Z_f>ToT=h%Ay!pr^1JQ@aFw(C|=T&5_6x5i9rz4YFh$Zat&pKzq6U zGF&-Z?aWfHH5N|qN??KuP1U7pCE5)-22))mr5qhqrvRqu@iKa%f+&-;;4M-ijSCEt z3xJ^B2p9#dsmWH+0pH7rx&r)*>kpl)awNPhmmS10b)bRGWb1Gz*{NSk8=tmWcUeS zn!CFNh^1zkNOMiwskhFJcW^9nuSE48=E#(cxmB;VzhXWSV-iNgvR(mz7snB;jwh@ z_(Na}8@|NR7I?N|N5u{QqjZNUM#94qlt3=C8+9BgHN%6`rB*--7%#pyYWTRSD6ta# zNv9|{U9Mvp1ufulx?M3Ph{Mg#f{s}29x^i_)!;|FXjlsa59I$DV4AkssfaRkkkKXv zS4pTC^e;Fiak-JL6MpO1NyG0~Th)HI6FLwHddI{kL^~$o4})tiB;p{OEShT* z8_l2D2qnHd@8SZn%(*~GrNj*-hO!5g5k|r8nhP+3!$xKdq}e7PTdsd3F88Jn4P~eyACcopyTt?b2e)o!0*PtFu=7lduJce&fTsl$<%*WFxQ;RN0Ls1) zCd%+7i~tlUOe{&Bu&HF5#+fHC^T})YQpu$xEBqY7`8zX+3Kf^55sJH}nuG;B3=^Sp zoJidgekc%NM=}IMilzvTIfx73VpU_UGA-L6WECQ5a)_{8$fM4nhLWC0ndR__K~%Ga z$r(%;0L4s%AEu9o$-z@H;(yi$DyCLkdgsnG^@fBKrV>O;+|!(S1H8R#l|Yj+3O!^* z2eb>oh;V_+JV5&!c`(rgg)}&cHK1dnvKVCOU?aTSs*2#}F(74WE;u>t z{z93A$+nC%Mv%oM9^ghT7cD@)^!ABp#NHg}&80HNr(_-w#{t!dW&sH*VVY<#pui4; zpo|Ixe$A0rp2-)Mi;PJHY=+EKAquBUyn%~U7!arvq}kRlfm&2>aaA$tXrf{fePB;O z1TLT$9vh1Q+oRl+u42gS1&nJY!{+K6*QtuI(s%4kNF*T;oBsrc^%7F973$u&l!=)I z>nz5B@-%{u!~^Jbg=3S5=rEB}XcfS#LCsm4KrqlCQbmLS{6#d8s5>H|n@W1yJaM=} zZnUM+@W@hF*CPcat55)Nl=M4+9}w=CcbJKjK>Zj;3|kurZHVDBe4__MrG@Xcf8l4s z65+e!7RO^-BnFYbFmAnbhb4n%%mj=Y?;0X%0>RV+IN&%-VMg4U)r!DnkdULtOGBs+g;a$)H;9+O&r7kj!0tmi~>UIM`#M8ITfB0H{Pimjf=i> z6O%}Ffk+{%6bY1%aS4jM(shuNc*(aj)jLYeQK-$|hK2!!HZ1Nhv@tc}B(5foN(~+l ze9#sf(v^X(VbZS1QmAnf5J*jx3xkbz9vG^Z=WzsElPQLSK_;L$68z$@@^x>awl0Q1 z9LuOF#&M-+VjbAeQc@NW9F9;0altrWUuoJj#H1d84U(I=mK*k=A&xgL?pNckvm$Xa z$q{v6XfqCFqRTY+LXm!JUuFq_YskET&TIk6VF=LS1LD$yxVXSgPdq^riKb?au-vfx zN#4=+w0ZiNuwHQsW=3MkTwKW|d>~m&WzCSo?R#j7(6?kN7H#j*d>}Jsoq#(>Q0e-P zYr<6J8G?fQrW~{3USTYPwRKYvAY$wm4peGp9Z(9u4Gn_$Grbv$?tx%1G#F5|#4H33 zsu9h70rsG7Hvb{a08D9zNH}@wk7w8+*Di3K&O;3Z!!S??e`fNSOjOoxZYotf0cql= zV5v%3g@+}PIo<(paVuD$77_|59=@8+5$%jN%s^pr@rNyJDIxno!C2GK;fIwYBp~w% zyn#um!m1tHLpIi7;43ZZ#wz3ki;ox{e^|QN>+T{{6dPJLS(mUO|Q1=U?tztQe%6` zS~An9fr%%UZXnqvERnWLc14(F8X$#CEmSc>o}|EM*G!_qgkrfmY%ZblE~t z`J`be8P&;?#RjRO7G|o+%megb5yr+%BvUZi2^aSpi|VAdiQU-4cv6gFq;F%KrX7itEu>Hgdq)|P zkcg(IXWuuWX>xBsaY8=jOV}o$oOCisl(f=JuinlKqBBg6-{WoMcCt{y*cl=dJVP;- zd4Q^4J`h^X=m+vY&Id;$V@X#!q#h8r9=HwH?UjHS22E7#Qj{pB6L(a(!otA0&>CA$ zjsww*!aZzJ!xT1?p|G%-UdW^N1dReFqsbRK<*0RgVj`#l{#1G>Ux|@E;b=~CEIT7) zni-#M=uKSo2|*?gKONh_R5m{xnyqVi>W!83=eU+Py2f?={2 zYDbtl$^owFj@wK;;LqgcEj%LCQ2vWh!GF8Slrcr-aMkQA!Ei87(+oxghBK}klkq_s z6Jrn;9%v*|;|U}%DAC;=f{ezd1ajs9aa|()fCNW77?~X)Pze+_3P9I04^SRP<)?TS zOewQ`QCtO}-B`3sJYY1v_Arh#yNztuHm}X)YxNf3rHHQ8q?CAoD=Y)nC8^Yp7TwO`filLm+xkcn z3rVj>9Uh|E3qgxSWpSsG+%+U(5`@GX#J$MiQ2Iz67+h)Ksfs^6MF_ufW(+_dLNQAb zM>6LEB$-7);1iv08J}%jIl+qpffR`Cfb?*BTlCbbM)8^W1g(S`l?4Mh4)Ds6B+X(I zr2`<67(4>tg|8j4VZgNuHDVgaGnmA~|l0qi|HC zpjlO8n(mIwN<^`QaNX?N4^w*@h$w**K)}3Y-XM~JFvBGm#}@+B<3=EH-C37u!GPrj z0II1>v7w1TOeG%f2-cA`B@hh8JU9i39*Cd8vV>Wlr6a~FLLenTS(}!U%NvB1E7*m@ zGh#yDxjX1sTPDVU|ElU;spG%VwarvH8qZ1Tt>r|Hq*zh0P8BE`2yDUFmZ*lf*#!!d zcmwb?jj53^dk!XbgY*!lrZx!}B5N*7U#8|W;tlwJ5JV1Kv!{M=@AKOQ3kxM9HtOPb09}FU_X{kwpLN=h_ zF^+LVFl;PhUE&RNi-(?6qC{Ux-w4Wt%1XVX7bLS6!mAvA4?T%N07lES<+?~8AC`!T z>@PxaAj1S}T7mKdb%){;E}$bL@d+f~VL=N7z?XvYlp1s-_ywa`WZu9}(K2CNF*A-e zG(HtLkk~_H-HA7#{gPG^@T0#K{B#f@#AgB!*j6H_qN(HhM>wj=QL}4QjYJ%@u9&h+ z(G}NHRp=3y-9eIMYbHW_lN+lgjG20YXa~h&5Rk2qY&4&WD=(#tV5kh+Jl6R+aT#5 zD(7qF0qO#epx73eMR=#2-U0lGiJWBO0oaSw046I6O*`P@BOJ_BP6T&}H{d#;!T}yx z!DPD;7IplFAwqPQB_5!7cYRCDfaMg|A8NqR?@60T*N_xpb#VtBhw6T z9F1O?F@WQuW8^aiUz@PPg-X&TJdoDw9^@F#X7sl0tF zl<4q;28U`N0tAI9TC5clgQ&YUdY-ibk=rYl`6I(6O9EPgj10>ooyG9t2SUgqk{Jo8 ztlL!8la83pj{)G(DvDde^o&qkJ6Q?9!;HfFWDZwtp+c!+g@^&3B-14rMq^vpT?u32 z4YX8gZS}`_H)`1z*`jMVY>qIfsRy`iLGU3EYz#hN)~L`t%a^ELQx8zRhmZ|h%+N<8 zPTV!56-Tz<3b@24NN&~c&~?+HNm=EGcBZ(6XR(b+Jb;3To|4D2a~%kXeAjRtGP}6O zF|nBjB<5rHkSZ9WVVm`tbPcEjUyN{@cmrd|zEDdXk0gzaM7qFG4}u6{A~O%5N{#DZ z+&>r=1OaHcS4e6A7Ra<R27(ZSaC8kO-XK;npFX!jA@Q9rm~-|4gg|6L8DM(a z_#d7PVObYVebM4b!Vj0gB4)-wktn-%7EH_@p&tzfI0GO_#X7D3|(#ERX~$N=Bs{ zgc?THNt8TL6Bf40UCT%xnhA73nnYy)yXnjP95}p- zA4uh+lR~CCHT>fzKqTj8jLaAy2B|%0MJdAKo_g1Gg~b&S0@gPX6HP$4EvPl1K>nXY zK}(aFGzU%Q>OogYK~Lgx^SQE1V4@OTA|LC0$6G0W64lP-ZT1=L( z`K9auC|*AYH=uJ>GFgcx0zm=WNi5~K?+!~_#1&`Q8oYH>;RrZ|kfbT`1|377zM-pi zG7&W)7t}uzW&R!+DUIe%5rm4zrBLKp#DyG|@dK{ziVd20134kTdJPM4voOQHp1W9Z zuTEFp2Z^%J>bDt9IUTUstq90_R;{Nr*qpyn!oRjam}ueSXjd8n)A3cj9?oJ87hiIh7!stCv%YHNPi+TZGB+^ zZ&wg%CQ6?0hX(+K94&67h2K~b)Qxnbp^Qk30Ry1uLt_yYB0(~E(NWqu4bGVq$A}4P zQ$JM&IAbPJIdqyXrcpy>cH@X1NDPOZ*u%Qp$Z*URdAwpjZ;Dn{AYwTjwRZOlL zacSue?BxQc0#mT@WP$mGwV7thmuEkH_&%3AFuGC4l>k779}MPQ^=&tk?hKL{J|>;6 zDI|Qc$#|r|fGr@CGS3uxBnZP#V31E%N~!NpK!V8x?Tk$5vMg@P1vD2>6l|s9sPH)T zjRZge!<Xw3e7B8OZot)Msf;#AE%<)1s|DfOdjK1YH62+)F@^nVefnpK>a%*Oi7Lkt75Q@Pd7dEwL#gXr#FVMmooHZb7B!On&ld`_%=qOkc=zH{rQVse zc4fb3vy>dhi^AErSh6GpYV_q?85;*lk;h7c&);YGAt-6N15Zle8vM#o8T>6!&bpMM z0FP664GXEF5aY>O`9ZO6Uk8MUoA)$Z6~hH|YuwRRj#ubx27+)}2MigOy%=E>^{Pbf z0|D`*0~GhN97x`II)s)juMw!tAgS*cx}Z$dwB&wpPQT(9hM(Zy(`^)IDzky)nqu8i z57dUKEQO|0ihD?9SMLi$(craxj`Tjig!JM9cyZjHGoW{5CP|Cg#)04w7LzTppsBf1RI?Dbq9*)4r1A zw|NW;j`Wm6Ovpv@K$@%aM%W&@K6Waw;<6Hz=W$X57g$DTw5)vHn3K}!H4iq6?8K@o}0gGB#--3x9DNZ)PydFdDw>Hq6 z9rP@KbJOKS)Y z2}7~KAZ3`=Jq8vKlzn)yp}2s*2qnP!q1FQp7gMF|1dt--hlND(@8K!Uc*DvEquA9# zc!1f?htt_^1kwKCdO(A^m zSV>iXf7BJd8^)2;Q7FX=@0#a z^^^BTuj}z6ugM{ZUQ~m)SLuGR{bMF&PN&-OPMAIX4-_f>2Jh2_xd-augMase9x&9%X23mxv%mp263{Gf-M3xOVpiK`7DGXDk>WUy79_$^(R^R##_w?6Di5dczY) z5lEBhe17yxTQ`t2#H7k=gdu?>L>HP1dSJ%lYb%>^xdRLZ zM-l~=lR=$EU0M!>_dy)EoD1HfC(wB2CcB1Baz{WvR#mCa|>UE zR@yud z9k5ceiOq(GSh^J-mdyS(6eo=7k!r@676;sL0oq1c_lR%R8j6t>D(Sk3I+~Xyv5mCV zzp5w^feFgW#R8I~;Ltw0_HqXV6etn3niavNTN9ijiOX*q=)!%ZXCpwMKmsL*^f^*l z=`}fwuFG4XrmHoPj-^d#+#8OFCBku^(r@?)YAGbWlf2AtiF>3_O|JK+Z?@{?0$!ik zN1r5%v59>~Tyrk-1(9+u!w-GHlFf_NR-MbHkv{Rstmk-Brwy#HIz~*D%zfV3z$j_##Sdgj)B4LX-Dcfk<;)w<6#7g1Cn8|b|9=Xjho)r)=rr=*igXXPNC+& z9F3=@_fOZU3q<)L>(0BjX7~`O*J?Hgg|Y|ptk9%o2PzGxGj*?m_D^1UQ{S}lwkImZ zQdWoR%kDc}$}V8@JtVUJ2Lln7N@Sn-E^;+%d$~YH z!e%YH5onx%p-20PX^1pY%Q}!Y!1<3K0;53&mA>jEAvdT#|8Teir8V?Vb_EF06QC{q zLsQ^!sX~6vi!6O|tUYE$wTNf~<$ytm%cv7oJIl8KuyQU?vxsN^BoNR-}R9Jkr z;13(C6iRy&)?=WFTmZMlKcv7gztN2oKf8<4%g7PszHSq9k?0FJDDjwPpNax$~F%c6?MrYKFZA6Z z_q+Ur3X>Q{=BZu14NV7}ci53!0BKF) z>wIC8Miv(k3(emw|CVmrNy3Iv@|!I}vZ<$gj;Z{u51Q~pt5o5R@8C_$5|$9El$9Lq%!8`fyEiNHPA!?(sG%8 z`-5LvUt&cEmEpF5tj^u@?%f42=GHG^m<C#?ZKWPr?O-VJbVsxlar4$Yv{?BYXzVwF`hzNE)SHRO0I4aC8719|WP;@)PUNXpfNpZP=*&(H`V8;+dU~#;FK2CBRwELVkwtI(P zWwNBKlpM!xed$$zg_76|cc8M6K4MEdgeNrP;=Qhmu7JS*hF7_a#1;_Gm2N+|m1{@3+WG|HrN*1NsgvAgQEf*kt z;!h8G;-Sb2g}Eg$qn`IphYQ%Z*fw;W$0ywQQC(DGKcMiCYKsDZhsxi;YO&(c?L$*2 zAqoa9(qp&-;UN(_geZDmhEq;3dn~yq@$A60m1aW>Mg&JTLP}IV7_q1_53nvuaJU0b z8e$E>4O)&=+WKc9Q-}tD|DY1BRq!Qw+}iHR_@HyA?xOdn@@!U<-(!^C@(gIRCCrs73`;DD zL5ikL!6C(DvwREsJ(MrVg@S+=FKz)Y<|&q+b}s&x+u|A2V%SIik?4}~5TigrZbrlo zZvn|dQ>kDjh@&3~;O{SYygRXm0)u~z;er8vd>A6Bdnvc3_|1K@f&#<{ZHp z+fa}*Dn*RTFPGAQ=Gg`-t}@#b=M}31!XN{}KQcNEB90!s;D;m4Q|MS>Hnl!Bx6+9Q zk_L>aCI#Z9wEu^2G91{TsAj|v&<@WaOck zOHl8!kVG3h41vH(!_H=^TZ8v3q#wQ4@(^1?j#aRvL=6!bO=zxjv=Fi2!%tvpbrAcC zJvr_wf4G2GY&rm7kXVxKgPhDmwXHV1f?AVkfGCOe6+}Di2QJ_gxJU-Ky&uXziFc&z ze4h@?VN*>;c!WWhX$=B`UO5}->Rx`xFt-o%;!i1!soNkP6u(k_m@QSif-DD-rw=f> zImXkS_%VPi|1Us^6a;H9yajNLc{C1U5|GAy)xb%~5g~wZ8hR$c9l}!#jQ*Q4(KAJm zIO3rY%~%@lz&oH7P+0NDS&?{}L<|vsC1VU1079A}lcb6g3KZ*1=OHNAgxqqwfXA-H z(g3>?SX+tngpY;cB z*NXeDmhPQ+;mAJZ8&D(2p1^vxPh-63Z)1y!3Pd4O&8fd)rpQXhQ#~V!0Dci zEugHi7KgVW!<0sxhrqd@Meu1)Y8Z2u8PBdMH^?1FH}fP06+vhEXDpMrji; zRh2bu7eScTk;PCCsM5MDKLJOlz@Pvic#wLpa27qsh7w^j49S*Er8yIrK;8+JJgg7U z2d%u39;TlS578J}hJnH>Ad=MP3FFX(XcOP{bb+Mz+I~$m%Cvc?*y5&|WSt$VG?@YZ zcFBQ>!+eN_g~9o)Euv#0o%5d%Ls@c!cw-Ql5Ca_>9OB|G8Va&p0H1#4;^} z=G#tBSTu-vR5({^A{Hvjhom4@VcG$)zQ$Y+wlo)T7HTqy(Tw)O(9rx!b`j!0c|6$C zT%hUXAnEWsssjzMjh(VCNx{$X77CDnZTpVkIT&zjo3TviDWFL&Fg!%{ad8dF)=fbn zbM`gnl@^SF#2YR^DoyGipc|G&(qUzqV_GB(P<6S0(uklG5U0z5gf>w~JhNcicb&{~ z0i%dKa0rI2oiFWP1idq=6vWq1WLYuHnP?Guh2lK@^)%#UZ6awY9EUsT+l9TP45i9s z%mau3+C`)y%a&)*uuRCl_(R{M{@V|i%>=q~tDMD~!FSIje zcGh)3Kh!v$DI8+>2_g?070#fnMAs<_MU}zv4u&FB8mctG@Z#1LI6p;mC$bYbPPED? z`R8{Hci=?Hbm0&26q1PXd9wA0WwAU51B6critKx|6gdFM`sjh+IH*1vy9Gm${zxL~ z){ROtQK^AfJ_w!?=My%2_z6f-J*wytBc`0scol@t=M7zEfe#1MX)Nmi zQc%!%kcn>BGSbSj)n&(_Ygm4Ql}syb5%Vp$rr zS>y}+4~m{)cmWO4G29u~nt}rC@oUf%1H9>9h94~Zfep=8lKM!e<_CyUEWKUtAS`Fu z6VXwid0lH$n)Jar8xIF{r^NCatystEn-amGF>0EknRW3_IAZDn2D*gUG`mpRoSIW& zIV`b;NB8Ri4X;s!OuGLOv~O+!g(_#^Z{934#dJDrG&G;~BA$PraFP<>8uA?bz3|Sl zi~d?;;`kRR@a?M_f3nRF4egNB~ZS*Hc6Xk1oe(cnJE4hMquoWp3gBRot5{8FJ{ z)})Fz>Pz?C=4{HAKn(>G)PJcD1d~Vb>Uz1k3_cX2$Jpj6ND5m}939?+bc7`df(LcM z^n{Ct20=xa!_@|=OEHZ(c`tu&!%!J()ax{>!?&Oma0a5y@PdR;|xE+kab5R`d%QjlEhaj3^F}dedq8ks8ivpwlXCZQJBVqalZLylF#^C zhC2{5)*zvV1vm~V($auypFE7$qRnG{p#Grkqti@9b#%_Y2j>$oVYvg9wHyp*+aHr5 z+EuT`9%x_Vbz5X*<*F;HFE&L@zmu8!0BuVR1X36VzBz=!7Y#E}Ch?wR-Uo8q8D$uf zYYq<))d^FE>}quB${-i~jnRkb+oi;zZM2j%2RF;nk(L?)F8#8zXv>FcUB4wn13Re7 zOX^!hxlvJuqR3~OF5npU88ZpfVac5*gE!zs-$cg@${3yjW44ulQ1;FPPz+2P9AFu$ zy@m~i4^M>WFS6fWjIN`_Dgwi%V1r-Se<{dCLX$pVy#cv0X^7K24~UfFarg<&K%^Y& zwE{KKgqmy`}s7m6;zn=i!Ak`R2Ews?e>S=r}5p}~#P%>~LzPc&!EH^dGk=eaR63#O{B@*!YKbNl)L z+&C$QVk69dLAKE%4SAD73O>Xg$2Th%1pn*3md+JDK_ZHnU`K4Yl#ZSDfQX-M5@ji0W@VxX49w zfbAs_z?w&2qj=o`Pt1an2BeV%6c6-i=nnOQ06E~y@(hSz4x28;1~HrofF7fTg?@sK z4HXJXf9Plf4cnCqITJc2UDL<8JVevU9IORnQO7!BBx>sYe4%RY z!N(#128>9fs;u(2a{kjd!q!rTJaA6KGf-FQH82zv3Q`L_P;dl|mEC&U6E$1d7`qo0 z6>X+F_iYI*qI(tIG~9vy?!!5bn_^BQW@#zI*Jae)g$gbgK&db^f`?s2X=hD)kdBB? z9sF>(7L`cJNcQZRvx6}YG}IJZ!ss-8ObJJ1TRRivUqJTl59Bbeln;72+H7H(%!U?< zx4k;seT3#Hx-&4sP$wGR1JAY(q6jhQaG(+u)ZEkyYWDMoh={Qb^E~TM#DS>s@Q(V0 zZcO6za)CSp@DCUm6_ck2R3=l?bc(B5F2J@94^*ms8)yViObx(*A;+W34tG%4q`ys} zNF!-e<{L1^Q~n;c-Y_V<+)L*HEJ~g0bRelR{SoO&+yZJGwsm_ap@Llu&&ytChZaIX z>a1jGMGZfJRy)mn>Qqd1_6JbtThSC$Mawflloex~r%McM=5Jerv?{ftBW}3^(ah4F zB-J@15r4pWOI!JB{N9jG#CNaX5S+(rtkm%ExSZjEM>q@ScDRFBZm3VS5lo-W4o#-W zXa>UDLKo_EVDms>*)B*r5}03*n(C32-I^ZmK+nfE@R9(E`*pZ$mee;uEeGVHgaN=f z(&bO6a5VD98ab`u3Gr>9nBflWge7}JLZUP;WK9cUX?zPJ0wF*y0C+(6$T`-(sdVdKhM(XUQ0(_T*o9mU zVGbNdf!25|U!%W|q)Rq#GcOtFVHr+qjkCI8+E93U8EF#1Fy$HbMFEh+Ec(cyKm3Fo zRTvprE~GDY-!>>56;RsK7!Fq(0b!=d3&||rq5*v34+(<`%cag(?jRQ%j!(Ds!wn^_ z4c&t;`XLfsMBm0L0dM_m;Yu#0c~Twm%f3S;mKecBFhSIvo_z58TP)2j~|3XF*v> z!-nDl>U9;Jcy6!ai}GK?;)vsHvR9oyL|JQkJ=AY$`C^Vm=fN;cjAr$Pw+|Qipt6N| z+$rPaV`m+gDHN`Z@)+_DY<&*ZQs)UWn|?_0uKo_I7o;(aoRgOkoubze;i6Z4%UI}9 z>b||(w3u{-`sg?S%#Wd()L4}PnrBL{+H8O7;Il*2FDb$Ez6 zga%mhdM1UUIn}a>^$}QPUe;=`u?HSi6r8#HEuONE+2-)9Q6Q3ezG$sFV#vK=s+-mg5}= z<#+!8vphiI9h!bPIba1S^>wQ(r+F!5^$)(eAcnjz`Os^8bmJR}f-W0q=zU!M@ zta%D+IE=tL>HjP^u*`Qj1an@>qD6~igon|yP!AhADa=QfRRv$Id^Fzh6Y>w$Y%_xS zoJC~AxUCE`9ca6j9jRF^&0t_EA~M7_IBD!HeiaMEP$R|l3VHTlLIaxs!Plqs3kg#9 zE_Yx8rm#U<89`C}@evjjfln(uj92<#ly|O`xNpvskHB82#t|k$k^>JL9^zmBGBt}2 zsp!SRB!w9Ge@g#pQ?>3X9=ryS3$n7TFvd3PO7HX-1c5~#2BhKGKsJK$M0*55btFXx@uw<6DMGZTW!`N6UiY(&>64=RzX^g6~ zjbU>Uad><*q8>dT3hlf7^^asRo|<7I`t@czG0Vy{F&1Qa2Fh&f z53&rIHv|BI3#=~%R7T6f^04;COtLBaEVFw8Hq*(mu2y>ucfgqlbxWeEK#(H}2Z(SL z-W3bET!6rwzgcPHjCQ{$_iQe=7^@p9`3;D%sf$i z0hKF15Q&xGLB%WElsXV$pk6vG8Xl!nJZgz#4 zzHo3|A1D$g2Z{K^1XJ`ZOId-GLEX8GD}kxX*CyDlZ2N{;4-e7dYSkUwHOAX36ouf1 z)ZdN18ZMwXwG9!+Q6V{s_-J6ESwYy2m*XAd>~uo62Z9>-T>=47g8v1Y`W;GL1?rUs zgqSH^75I$q9aq;h1Jub-?u(?R3M)v6MO?rRMMT;C3U7Pzb$AQ9bbbjh!MgELQs!yl zK{~{KNX+R16ezT^z$bSh9_p25R9X;F^KBR%U~<8?&IZ3Ec22Ul=fRyv@Ox9{(Dj_Z zMsY6u-P$hqE7gTG5!(!*l@N?@8J4m_%D1n!EhwCrMbGDvWSIrCE=w7V#a8QRq?a#2 z1*GC9fMqf@EU%H54RCj-DuXbl&C~pF}-s4n0bImK)$Kz^2V(j7z|L(ud$psXVuwgR4o2*xN?Zc(D8xMBc-_a zX}})HzNNYhf$c4P`hmiI-L||t<*ud7&miqd`8q5luUrHLo=LrDQ=}$Pps8^5jy}lY z0+<;NAoro)F;)rR+E5_9Fy3%Eor(Q@{S>bJY`RUVRmU?B%?67N9`Hm=u}_B%#ZIQs z`_KR>cV#8%oH5ADPY@$Q9GJ>cd0Lf1G@ihduxXa4XI$u5W^k+fcWn@KE5siex2N$A=@A|hRheSW=BfpTdn%(Aej zQ5w)Z$D%kSbZe#wIx11y#wlvx01<$(;U}1DrA)_eL@kJvf!@51ac!&+3+IX_1jO=R z$=6{?RHm^6(l+_HGExk8pe<3`n8E@?GOoK*-S4+KzNZV&2Nr&y zPJT6Rk3I~&L(C)SYv~(Rs1Z7V5Lk3VGOhuKEZH`{?;@pX*aL;>m-tF4ga%Y;{F??- ze1YFGyhbfHmboI+5d}pfLs02BnC)|m&=n`AXSNB@@uy+W$jzkMGbfGs^zLO zq=uuUVD6JST`P{@ShTt_52gKCiGs?^s0S^o?=TArCjO>jQ}q=ytU!XXQa(%DA@D;N z2AKr#4?B|Is@cT9t8l0}3RRXAZy_f!TxcR=(I8;WKGeLKMGW3#N$Rl*BwRX{1Z4^% zER}pT`dY0AhNOv6zLACDFw9khW~>>8fMB7Hwe0o-7}9&5zedNpPX|9*F0jW~spA(R zI8<-TxnL_S>VOU`FqiLIq9Oy+RW1u0*f1*Y zA8I@}90?IYi0rmz3n$=T?tmIEd$lH9#T-in({;*K@<9ZLpMdlw!%&(jX)Hlwk>KpI zG}Mmhis1t03dNPfFR7;+#({zNc^J{+Jq%@@G#v>nO4~@gbQI){fLVcMu=eS2Z3wWv z@R*C7$xxw6Gi_BivTXSl>}U&%Uf^)+7C(|}-hD_XQX^_Rt%%_#s3zSzvQEV-8;cOD$qjFwE$`>@42aT_j$l0DiqQjP zauo1VNl4kJ3t$CMG_1BX{K$37n))1*V3`5 z<%+n+Gn*bN*95u?gK;ui*81S#A*vIRTiOoKo~)*j9`WZ|M{jg--sf)h^)^ORpec!( z-INBMa#Th6R1g{)P-Nj8LuB>C>CllF*WwJD`fge)%?0Q%U%1RZ9_UxAzP4k-QObS zVd~?lyKB}oJvvtpK){x)A@*%r^x+Pq>0le_S1dqPmiI~n((rTSz{dd2gOiaHLJx?F zDBt;Lz+$*c1|jgyaJYiwVen38E7##ptnPDeAO+F6sb#}Y(BWwr6}VsI1DG8J3%R*% zh9u!@`3ZVd+ajjkhmCmG0aE`eF!UWB&Tt3B5@>4(fOp5@TA0SWAOl{KTt3SMWWioE zIZ_82T!1(Cd*s1zb*DxR)FC`4d zAkQFa!}&A75eGkdc1ehw$L;MJ-(qsn1vJqO+| zh;Ullr-o<1V7FpRDJBezNiI=vL6H1{Q!XW`yU5QA0(uh zxKQ;xbSz#yjkjHhFqS0?d22^;T4&^+RADZF*u&qadKQ90UQ1DeyoT~l0~{Pio)teQ zAn5?MF`Y>|l$=VRt-JQ!j-d(!Y4`x3>V5?CttltvH`vS(a_ zSds;hRG*6o7wY7Qwt#bDIq0Yf8fG``2UG`OFr}r4c-RNrgaqNwF|Y8LJ|=n4p^!d8 zUopnT#zqgL1h>a60ZZ0TL=iMv-_EP3$b!d+fY6AO%MK3_RVMW@Xqvjo0)2@o}(GegI+rD?RP&eh43NqmAfBn_lDDNJIaNDM0Qz#-Dj zWC>y~AlRQ(YLjRV6^aX3{05^zRW*$Ap=9eet%(hVBWQStW+G|1-M=bLLK>m8s?nHW zZ%1_aZ~KtED@lfhr%=0ATfaUA39PREsK(QRla?>q{ zgjMIyK#O8>fPN3d3fc8pYTwf{(e0{tmkX3S%9F*v@Gi_zZaAjXw$^Ck_n}T?*-)pm zg^B4W6s@{(*qH?>kIx1*+=2QEex~PF=jP9Y(*uE&TquV{4OGY$R~)ieQ1p>2a)iP9 z3E=649#9WBjjTe&5g|?E-Yr9Um|UNdw}+o#2`KO^e%VIyL~tWD8&ZylJ(uKv5myGJ zqxK-l_@(A{VUq3AwkNvD;SS=w_0HK`{mB+&4KyUDlX7_rv|OB28U|4`4p!5x;E=!} z9JF?NxdUsCfJw)}XGyP_XxMRAioHT_xqxG+kZsSg9)-`7S2*3O?`zQ~+C!+nG>gZ! z=9Q!!j&Y*<<#-+LAX#p<8_!S=ng=J2M*>{tn&Ehd{;KhhC||UBQg2nWR!;lNXE@Y} z$s$=ittCbGk^XR~07xVag`A#&FQ{Bvl`6uDOB3N!u~h?RB*^d#(3QV9PVO1j6*5D7qH}%h#;IaDf5|b;ImkNc#8r^NMnPBcBfj$gJ;ZO|>l$JP&qcV{CpjN%q|2lHbVuc#!YRNJ52|Q zZCpwmsmRU!#L@T(+HZq6xVbz4@uVo|jF-@$OnooJp73KiE6DcetAq6wvHlzbanU%q+bNXN2SH5$ZY5(VC%^B;Htx}49DX& zhUJ&C4AG*)QZqI4-8Q+X#(lf`#6yfmRn|-r#JL_a5?2E=`~)Ij3#9F>cQ1M22egiCvY4U@2sm{rFDPogH)-<)`2R`;1Vrf8KkfnDno#ntw0jplH_Ru?@jog=Ll|C_u+P5{lMn?(}NMkqHs_xix&WT?lC1{>7{NVyx zE)q$#x?CgYx!R<7-lzSHx@oxs488U!@}Dfuvmo=#eT=M>kh5%Q+J3u{oGy40{H|bB zns$T3)Igwbdi#QR`4mZ3JZ z&Y;j{g-Q5AayF<*TDt+;nYWi`AP9z#?9T!7hZd5R&OWW=2klUm40R&Y5I~(9(&8fp zf+3hvt^NlNmOwW=16xO9i2T)nFds1OggQadQ^~$O#D^fyBHoBq8+Uy zb+`j%6+@E?0N^N65YE=LPlFoYUb|cXYy|>_fr13VF``WD=SoLd`E)Ybmf`7UZy?6> zzbFpSn(7-@^7FUU2T#b2%21)5X1vjTWc-JD)>PY}UwBHC!7<8aW_~g0JXekXL#=~7 zn+gm#oQ4&jqOjr2OR0_d2ZMYDmxUyO)yt!W0fuBe z0Hiun3{CTuFP^T%oZ2?i4=pF=Ch`*|9!)5@uu<^CIzhf)_xU`+3F0f>d|gH%2%o_yhGUy7*2K}&_A(uT|DaU_tXR&BnkIV2+ZOyyk$ zx`-ZeI3g*yfHW!g7V-n!@j<>VyE1L3K|bjAe4-Rxje@W}D?bgM`x8+u7{~(bjqlHF-F6t>aUfZ%KPH;i6shKhSg`I zP$mvLlJo{<}n zA#;P+jIt^sk14el07AoDxI9pk56Ui5*94SCmqbx4&j7b*0o%ajE2)mXhSH|#DM(RX zLxI7NM#Uww%yZ<@7C~xA4#LA@AS>H0fbgfll5cJcv!Y0i`K^mrc`fP2vhl&0CVdgr z@mb4|U+WALW_C z9~Jomv-l~b7c$c892aMu3uK&;A*r_W!*zh_R&q%q49fB0CzwIfp973i@#iqcTjRYP z^=+)n1sa0s-<5VR5u?0&VhU_y!ui(#198je_(<;x%TX%p7Mj{6#ch$5DX3)9&^si@)Ablck-Eu_glJfD^JHhp zT}WSjai$T_Q-!IvNp*!}FZKgbOlk@7m6}Ce8rF>%!1;h_@pzX)GfdvOM7#hO<&o5| z2+{Lpq&Gc>1M?Y_pJEkjw&;>Hn+W)@S+w1dV(9{MnU#3Ggr@R%3oyRt2$lEJTP2^e1-6fGTMBHJidIIsHZY+rwe=%GhycdqJM0e zhAucF6pgO(ItO9gfeNvV=U;`PQUj16<{7*W&R{Pb?f?KsdW4`OKxh;St1BErrA*5) zpm_EbVZcbn@PM)N;VT$uVTgK$pP)X1;4uQ} zP;4$R;->GFXiNEizM=3AHHj#Hup=!Dl9LL6q79cB|2p4PapksOkrh5aD2^~55&{$? zpA~7+5b@M>ElOn-0tiLtkSfeaMEb9DTT*Grs3-$PHroFL_%(TvZ<>Rhy73Mf7#<>S zPfc9T1>H8E8%n7ADN}5HM`y?us3Kx37~9ez^nT zry(ekva4D%DdJsC18isW0I56pI2$_ zAiFsf9U= zFwUnE7cNh)%vU8$g1_ngyh@Xl_@-4#cmhZ=h}0Gd$kD@incnYk2jX8STpi^OcnzN% z4`Sb2+gVW#%LO1V#6v6uIwsYjBA@oy#^})uI8tGc%_41VD1wLPImIxIlk(G%v3!kW zsmMiacTxFCJ5x8+cY*i@J(6H(pS`~O3P|?}6TTy8fM^td%yP??hGxShFtOlX9VMbH zElZpuwd|5D><*A^zTB5H3K|U!BUgp#l;hwtAKpS$J@8D!3(Ce7d7nyc5Gg2a$X9j; zHZI>U@PPfBTGf(J?y=04Omj|9xPZ-A_lvhi4+`(}r>NYZNXn!kp{WZn#70zulXQ#B z<{6q`8V6Z%{tVQaSCnapu8Kl^XGx%GxT^xSh7H99K!4(;{d71$6F5{E)IC~aJRNC5mN+{3dLq5waQ?f z;UPkV?Lv~e5KB;0{@k+bbiyjo0Ty-uDe>#JG{0CXEo`HGY)r^kSnF^HtvF|ay@-Yf zm<2$?tu$T=EHLbeW#Z`d(Q7bae|<`4Rk{a&jvppKBst(lBCJHJU^)+vC~#bK8}4VA z6h=GY`N15VFB&+$phiaJXYy&#iw)0!DOHchCr$023<ED z35w3A>VWWB@;);;4tD_dxKOVEqU^)KVE!fnnvuWC=jC(OC&52;pF$5PLOclPnhFP1 zA)RHo1E*pc3hEImSwvx*iu^&gs)+dE0-U+nkwTt*%K9HfA6O+RyGg%8(*=~a9TnLx zcF*c{$~oRJZ|(viKiq*Wm_b#icWj7QKPR=BCwwha_*2FQNprq2b^#KCpwb zrh=%gqi<@zcM>_}@=&GuTWWc23%UJC?8v5xs;HgKJR9IZC#$C4A|N(}Uo;h7S zPXL`hJOf&RV;>ft+H+vwMwJ49oV9cX%LQPdUSf^2UV%GHpbpCU#*+e~J--0$g+#o^k?{(JaFj~BoKW2U&IsQ=U|JD`4E(4A!QQ3x>w>}MzXR|B?GHE6bJ$who#J@ zkvACYNQ5F~x%7o(p4j9vPKUPuKXj6Nf)cuFdQh#hwsaANvJ6cZbEh&ukPH);5Em4z z^vi}DtJY}amOF6E^u9{#s#V5os8Ca~lnD5$;R2{)sz9SWj`<16U!;DAE8uL!*o-Dro_@SqfQE?^dP_KOxD2e05^J7xNDG z5=O4pLp-8fhFw`fA*C8wnZ_`#HoLKkONvIg&~OLVuHsIs2u~7-d1tfKjo$Q+s+Hv} z@ZqTQEk4P>9)KCw^jy$Q0jd0I!yN>}U#_$~s3t;w{}p|hv8f2h{WKSglWECb` zN|~=H$+W^{x&wom9L8Cek?*Qzj$zWg2F+Mb%N?jD(BD{*9=a^g02WKbL+uPy_3IV> z-iPi_)u(nFenK%y>YL01gra5wvEMrx%`adFU+&ZBNAm)+wuQUitBVy3NBCL2Y=r|Oa z)&Ij!5J71n8NVvmTIQmcU!sTp!+LsK9wK9)3K{%l3uT!HfM6DMvUbF&QuXen2claM zmXb5_<2WV32LNJ>tN#|?3T|TA)U2NbgRj&IcOs8)&_<)lK%Ddb_nYJac zNF;HnVyXaI_5}(*#<1Z6xkZSPlw|Dl7&l#L8YjyMXEv3Sy_+1$|DCy-6s9I6)O%jm5}#V_z`fvlH1fIKkO z(X!BhTvY8JAZ@m~9>v0Nl!z=?+RI0~0jJ4+pA;RAniAZXJK&^LsLNo{YrXp#9Y^*A zZDS+5mT$p()VY@ge8&hdg7KulrX_|UIfkC8VMa6vDLYxVIoTZ3DqXOMwq-fq@c<2z zvMG6!rtdYh%P$~uva5d&I}*HvSe=Z>7F=qB4O!uTRD3F>p+X^?pg;=}1;-;yH&DvTL~jIGLc6;KFx$ya0 z;9>Ih;g~_IghF=7f9zitOK|s$vd#aWoSi7 z3#r54i;A2U)NltjR7a_I0Tq{NN)BPLl4VHjNw>OOz;@!DJKmiPP6s}W7-xqa3B&L; z;`kT~**j5GjEeqlYz0AxkuDC(WgSR1ql4jBce+rQD)~#0mmkrMOcx-!uUwXD!}hQJ zCCc+**;wd!heA_DZZ*@UsukY=%=jK6eC#`T4R0|#MB?cDH^c*W6J($F@$s}nD7ICL z%LO!f$TnwMK{|pT{OPRI)J^u;;Q~B$loPst`oac@(D!9yplg9hE=$=E9ITGK26Uk} ziS@m~!YCocFfL>rc0-e8ygV>9Cx?(BAGfwiwgawX`3VHypfI}a25;y*@}(FSBoI~o zw_JeS1Y;LnC9F>A4pHJ86-Hs7UN#g`D&zW&vOu#!=4^2bksorAqLmE3vf8r_{$43YMjoGGYm}wRZ_Pu zKLG&jPg2r36cid{(%N7zw#lxKfiBb&NO;2zX&K=9*b!hxN{Cb$gNsCWVQ7P0P&Uqs zN)CCACF67jD|i}1fx$B(9FEYF`KNLboJKcFypHW6Wf&F`)r1XElO#e>i~`0~=Y-{= zShlp63qT*}Cp2uD=kCAk20Nu9LpsfJ0oWIPAs32QuQnqLD-u%LUb=MRw;kQ9hx0qajSQ9QVt07k(TINFyBlsiB| zRpuCIRTCIO3a*B(FZ==r2JTtksn=52DH4pE5)SQ{v{MdS+6_tN37`mVZHPMYiHYu2 zOY9U&wQd{c0=lIh$4Mx631Muhh~p=4WH{c@QI0jr1EFn%QD9Xx3z3?R!=hMzf-}h` zqyq=6dIL9gO>$)bSD6$2O?qPRFy6A;ah{FY_$%JyfBM7(;yaDBr zpF`+nF)tntm{l>bQdm&84hCo*Vu0h?Oa&I`;SNBm$h|BN)Hfh%SYW>ekLuQzp8)^z zn;8a-r}9P%_BHR$*eW3s!+dAkCpg#0Lv6phtPdewmhg8q7m#=O33gMTpPm6seTHF7DpBjr0Lmu0=6tCz;g`hlXh(gc197dO z(mRX7@D~#jNeH3=ATl!=S)DeNc_9T<=TvY`2Eqj~Ikn@VItsw)4t~)H3Hgv^e8!?o zOaKuert_xD8s36QR!(NJIL=xF99VnsJD9dSN{`_u#BORhJ~WDsr)Hwi^*N^rJ>O|2 z&+ouyME+n8but1Uv`iWe6}vA>!89x+IiegB1cnhJ$RbrMIg>(-E{qI#xdY-A>%an5 zBsX<|QC9;``;5#VwsqUj6{c={E157u54NNj3S9sv#^Nqi3lZd5z$(2%-KEkcn-?bX z#aOgFL^y|=Z7(|9{)Shgx~yxWZD`K$43skt0^-_ld$Uqk--0zFJWWHr+<_4$$~hDT zcb7t&z)YS4RSzVK^Ln@gV^bYsiWBE*hFh{Cz7E5El?cnh@`d7tz+yI-t;<%S4Ncca zwdgqx6$*M+P#cZBg2>M1yo$N*HQ#oW%4FRKEtDpx;UL2W2#6$7 zF?PlGIguO=DowS5{&g{lqVCDfd2O3vquSEOHe^TL$T7LNNJ1|Nd_$uEvWE9LS13b_ zh^qP@cBEdLrN_}}l!^Q}S~S9S->1kh8|&~4{QK6tFG;GEqYbpn1%UGej5=(G3&{Sc zWkn0Ic3Mbw5d~`*!KO+MXCtl2!B0u7cP3D~k|G)B!h75ph2yPD(XZQ9)C2wuo`~oScCzI zE3~)UOmXk&pwcMnc*KD&MqF$3B`cYnsB zYp9agnmv22-W#p0BQT#^b zLxvqm(tT+A zntaooio?l7?@c@d1u5z6$mBJxPYho}O+aG99l){$q>}?8xJnEx875el`7mTS=rP(_!PI>j2}BS$ zWhI@JO*$w8!!moF0~rQAm^+fES85`x-7BI;-X$9wLdV zs4zimUWFb|#|svtiBj)?w}uN)N>DQ~MFOGB78hZ`cc62IIAcJk3$Qc!8SrHW{Pgp_ zW*{+t+a#gT@uG*ddBJ(M5b;t1UWihBTs&Uqcc3>Q1+@0{Jbi{f0eWlHU$)yt{Ew9q z+^^T9gu=73Fx=%lF_e{vu#~!HI#p26NNfE(1CSt999@&(zT1$KrMr9Km=T0_1a1F| z`uYx77Ym^w9U|k??wH6bo5(e21a;iFMw%Wm6q@;ALvbF{`$D~-Q0)mJQcX0q#S(oF zRa&`fWrUGn^a{aAI_dHVrDqw7F}y|>Ah(BSbAJ=mNlL>uQRQ)XE-~4jK@_D20E$0U zMBGs{vb1H8u|@1_)SX?m=0cI`Ec5VCWjslO3}I};PXJ&_1Olaib3n5+Ea?P0@yc~s zF5s^>3&(%IIZcAvv)a;p#&Zl5iH6ZEVEWvK0aLCQkxQdTmZF_pEEqZ)44c}jaertk zjJ*c9c%ZcV%WM4f$Qho2gIOAgecb#20wBpapAIWSzu;I) zh2meOV=K$o3H25VseO};VNEHOhtv7)G-HKQ<-ycJSj05iH*~2a2kNHbClDD>U=dSh z04EG{IGyEjJ!$gn!)iQ1G-|!#Knpc6vUn)-%;6z?mq=2!n5Wm^MnmMB4bI%9^%V^V zfW-A`Jyps2mF$(61&}N!!SE0f>=6{`4RBJE=B+@H3ZU92pnbUj-%A~{;p!s&V0A4MiL-0MO@(E4H7D460=wWRt$3IHXO>I!N(P?EuTs zsnR@iW;yB<3HtHdvZdMn8%?Y_XZChFnH-6BE&u>Py=MCuGiBwJGA$|Dc zfD4d>m=XpPPd&}Ix?I5HDj>?%ERF?|2^cqSowASQaQGUjr&RT+qk$+00#lJuR&Sw`P;O~Z|!WWAU{9GO)Fp{2= zgNyYnLi0HcFEyeNWa8Qg(Kr&H}ODRJ2Xd~<7`+24Ca97xUBxF1N}ca#mg*H7jdP< zJEx-ES4-jhlpk0} zJgY|l586gn7;LRg*0I`Sz*#K`42_Q94s8YlK;0@tnag%*I;=2);b?Q;c6BMRza*qS-Q|Xy6-eyi}?<8D}Fn6Z%3Jcn#RsyjS-j!v_(E z?!;?|@Gd*Vj|ZZ-g!&ieKYa^q)k-stPMeV)8f{4dz^!@2DGr4u0g9@gVP16#FkqWE z;685e|IV97rVB8vI&F~DWYJE?@8xh5*!{RGcdXQab))Ks@ zKtqdBF%f&Vt<%G(Zc3Of#%*YMs`2#v^|?+adbolg`#)un`G@DvKyek@2gO4g(tnWR zXuniE_I3)R;Q|FYI}qKmPl7v<$c;_cOVma!G*MzAFuJnDxC0|VGrvQ5%fB-`aoClW zw4LNl?R1ifAx)9u_F+=?xZ!L3y|PqFG|@QuW6)8~Jp7+f6NbrQB1}{_6cnHtHY&GJ z^QYjlJ?Z~oD#JsBGU%>+lessv{JmD9NxKU1_D~-jTr1l->pB1qItakYneuL@(}4_k z;0!VFPO+{~@?QkM+W{ z9g++bBC(%Wy1YiYXs|naGG&?UKwx4cePRsd6)&H&o!Dtei(?Wl|A|(IWL4*k05y1O zc!<7U5=ot&vq@mL^3?V!#0?JSCoLC%fg>s8G5rx(Iuz09mL`q_p}#C7xe+YlwaU3d z6=tw?9EW67o8+<%OvFxND`TEM&j`up6s3gFiJ{zvpMZ+NBT#)X{E}SLH;FQ-W6}~& zJCeC6I2QH|l0F+L6HcL=#>=D{Ufu#W3g@e1|3I#IflWJW@E}bGFTwH?C|to<8C7Az zH*uUo#%xR2mfHeIY7$jQ#wXwhI#sm~_E(LIiis0qxC8PRr8XNH2qH60!edPfq6k(w z^i020+KO90K|ZubOQqptolE}lDBX*b{Xcpb8FcIJ6a0ig&bQka}C>AA#M#1TT zH>V32CI?!7DcXQ=?mP=S(E)x3aZi)L`99nMjtq{2&aktGUm#2s9Ol}PLM*ZQz(5%R z0F2}_LBY!1x-WjmK9A)NV!G3`65%TipvrmNFa;#5!;~x{@icvWWz|)IdZ;RFTUkMj zyUTvSo~l`4ZB<%Qq^LNtr!nEu#+De1^4_qmGDP#wb9mYg`1^d`Wz7!f0%4>w>qq}= zMY;kpQkHe8l-P!4Kd|~`5YvfLo`YS$A0&#nUwv3=n)A27`bCszM=F3+s40Nn0wmp* zpGd~LTtL%hSUNi%2>>^eHzD5$Y38(e4h#p-2wb7pmv?AKHenfVc_$_EEi}A zvT?-S)Ahi`>KWpXOFvsKP(+*(2f7R+SKNj4Hzi8TwK!?ib&dv2H`@ys%E(2}-b@8U zzX*$#rR?vECsiLv+ZNE1oJOJFHVNz$}AgJ!eg-mT*LMVmk_atG+)64O0)`c61#BW{Fb(Ln2imbZ{KQkMt8qj&FI65|2XQS~%h zXLtt9qGl(9CkwRYr_y#(Hu1Sar52qkyo3Y9u1rwF4Fy;CMVK>1!%_a$a0l>QMS-;_ z%~H-eDU0?U5+}gjCp}!ieCJQZ2rRYu`bN^gQf!HA9dN1T0+e~09%s1&&fdn82;;TE zD}4Tz3z!&@oYRva55{vexvjBz)&=TkxC3*ka?bmp)tKIfUHvVVK=C#)UH&FMU0PK| zf#VG<=};t#B7e}(E(@ud6Q98zLLfEm%63MM2Fj4_E;DJ!S6HbiW1-U6c4l3I9^?qD z-_u=oBz2vG0G)S zqa@0Nf@1l=eHq2m5_z4!MieFR%3dy*hVHvLrigDoW8|kTX}LhahqwsroUKh^U=`aH zU;-F}=>pAmgF&b;Y$w*C-9`0|z0-jXrLGVe8?ld%m5Uq&5(~n>T!MI2%mcRm=L=Th zVMFx%-iI7R5*C=I$%9_#@C;BZD5BV2dRN7+kS-k%t5|-3*`B~NYNG2XdI7a<&utO zurnmf`cw3aI|}HxHOjvm?%*2+tsEdn@&>be0;TQnZ$50u%5s5#yRybB^{5!iAra1^ zdRMy-rLNzPl(PRQllW-NnMYh|pg07Dst!96O&;t=rAJdk)k!TXsEE2vt${flHq~N; zb-Kg?`Ya?PSeT4OD5sB-sA_lyIk^BAG)a7I(nJKM39KpzK|4Q`c~Cf?p~nTz&7^4P zmP1-5rE*zr)^Z1?HacA~EEY8A#vloVRnlSFuH{>3_6(Uj-G}xWFeu5RDoL@e?F zK6`RwE@h}D1(b#d>trkPDU!J@4-tL}#nxFvvy zv!z8~5pB{K>TOv_56_HLnRZ5{!oERsZXNV(Xd{<9AUlBvt4G)?!Kx?*jX03nI+%26 z^tkp?Kf?~d7#25TuCA=-MEt{yYb}23m=K2`2oNVQS{x}Mge{7@WO)WnxzCPNhNl`| z6r^MJdT}2@*p@w!ZYuO5H=0j~>J={UOYm`(EjcV@-(FF9INtcuGEmfNK5x=06w+{k zSE3W$u7iLikTk4SU`1l@w{6|+Dzc6=W-G|v!Vu%6hbeKW#g_1hH(-~l_T!?Luga~V7P!^+HvB^$t!4NfhS^1 zg9`Yfhn2`oMcWuXLLyygxs6%N1{&8gEskp!&?01ugiA8A<<;eeaa0KbSm=Q`US+Y5 z&_d>Mv;6Ey&@4AbWH&s6aLxDj%t>((|R z8%f_wy-&4F&#^eJiR6WE@Ma2n28x$v;x*bSfs1im;x8g#rk*#>zyDCysqm8jjqFi~j#+JY=27@(mvqAB2!i|gE~)uUp* z0jOoZ5fgDuGrt-#qu3mt0W&8bN^w4BIFip0$vNbhiR=!G8HoJJ0~90U^%LxJV;uu} zXkUw4S~e8ST+Dw(+JWq%ssLl8s>ySf4J8{Koqe!JB1bVrd0S{SbB=Ep0E77uGR5JW zowTIyU>(tI_L$)zHu106N4{1@!RQ{Ldu{Mo*vqn%&At^v%gg9h5_R#MCJrKU!rM%* zk%I@0q`80!vppaR^T>%4P%pPcRTJXnDwy4E>!R7lGP%Plci z=B{}7KsYTcOo<$;R8{-bFLBmusFk&v_&F4fzS|fS@^2wqTr7GH?%82eMI)fQgA6E9 zMJ9Eo;o-$oj3m2P@-As*c2G;sCgdC= zW`Sg)jMGd)35{?Z?!d~;`A{A${d}`@K*LXf23%_)u9HDR#}$>Fg^n1-PBDt9>0y*Z zi37f{tr7zPbJUFGMz)fyWQWzFlqFqK53098h63M>`EeGp=S^|g(d=dxqu-+x!~e__L3mT3aE9nW zx1Zpi)hNm`lXcw#p{Ak}+rniz?FT~U%6PJ$Yu(}70y(9$kY`a@UY4Z{xYQr;xHm0; z_JzffRWCV}r#M|ebEGonC=(S%z~6U`H)GSH4O=$VxXBD;^p(&zur^#C2M-p->o0GC z1SVs$;|xEPxQc?FB8uMEe_D2BGBk2L)L==NCYj*D3maFj=Vlnz0Y6-U@x)8TXmb3z zfA7PmaD$*|QA$GZyvKr#Pz07sl$7of1J$NvsoIQTSL{=f$=Q=ywkt zhE5GSE`TC@l`~8x;^1#|0pGL3fYlfp?mwpMB2BTBh|rgnh|w};kFr+F3lHVUW3sfB zlr20sDCG6E^679I*rpGszL52O^$*@n&^s?MTtFZc;Y}01_&gZ}p^1d-TEBeX!)r9a zl&%=nW}b?&osI`g-<)to%HX_r2C^zcEM!Vi@gOSD^aql|li5y~%~v@{sUk`@M6C8v3L zh@tA*4fTKm#eiJ9x-3=Rqy&4*$>aiutjk_PD$KJWCzpQ279r>Mym!9Ba!DZ25%hSN zF8C&=Grc!_4c)WsiBx$YJa~zXh>*scRBD=&b0je?8;bJ68zi(uQn^s+$jS{zvlTIf z%Je7mMk{eNYrw!vD9}|kE8b#x3%RR>6OmzfgDR7TxtbX6NMJ-6itU%7S70zT+kf5FNCa`j%bR5cAe5d-HcI#qK+cK(ei)M04)eN7=V!p?=W zp6`h$1^UQ*?sp0d=Mt@@l3&`E{Pm^4APTIqwU`;GAe#Jm5UAWZYVaYASYIwGkf@$ib~KPDX+BbKrHrF;WXYY z1-`vBwdW zHk>HR?=VJ*+M+riXd*&3uy`}6oGTz^;x6F26#9D#?(0yg24wpC!NN~A(>OyXeOWAE z!X;G39r*cRS$s$_Mc@<^tb#*q6jb(H9Vpn_2ukBr=w%z-$^3kmSw~bvOyk!L57F)m zyip-IRO`6;B5f?>IXRc znhFvN-KVwo^;k-INIL>0Fs1s7W`kX@Oa28v<2xa^4^ z$!i~Xh@1v|xC70;Xd$|Hf2#wQ1pS-MQLiEI%go{PJFo(IN9czLD#Z(162(b|C~`3j zIT$6&+fu9>^qy1JXlLs}GG}I0;xLw+76llNn?vPH ztvb}o01H7Z+!tUl;8&}ehQT_dpjPz{KOs}8)*z=g(oPDZyl<5^|F$bF&ww-)zw287 zXs6SqE0IB%s>9|!Y-#o#^{slph-(KbdW6L?>Ixb-c>8QzRz8A8mt;lIwlXp(Za{pN z^$?FN21j-Z083S47tk-!1RD7Kl3Wd%8MZV$8Hx!2L>H!BDnTQ~Y#upZe7KR$qhBq2WO>n-3}%?0p*;sQmNutVDDLaCeg}@W19elq>Y(r7vJEO z+UJ48L#<2z6E8#VtvCWFQS!?o0aZ6CY{3&vCMVe@9kP!wNq4w5Pe$gwUV5NRDe`=a z*|l-qcdqe+snbAfyC@rmv$64`{xV+GV|)geud3goEPWl@HhfHAGX#-_neCW^M8d3q zsiGk)#lh>V2+;G|yiAnA%=j&xNIs@ClRCKJ4nQ{&qDig4&5Xzn<^Lqfp;3}Gw44j3 z+i`6;mmv`_1eV0~-_+lI(#wtn#!QtcS=e~Cyj&z^s8P)20DpDY^hKJe^MH0DzET3T%qg;UTtupxJ_b9p^?2kuexzA;TbSbomw{ zd3||)ubWUg8@z}Fh97W-4UzGFf}d?)BCI1!Dn-!*x?Vy~oPqgvfyA{)5mk<_5LfA# zS6L8r;jNc#T|ogAw`|p^sc(pr{0G`BZ+2P-DiIPGW*90C-;qsKfIzmY(B@@Nd`Z}o zw)S-p=5|6J5|4qdNG$1)UWoVh;whO-yjNWbgkU&F+|y1|6b-p~U4SrIRq8ab5tFLo zepPzrRhKY&zK}3WyqvY&BG2Mk6nx}*js<}C5Ju{+#Q2+olvh;GN~=ucM@<5pgz64U z`C{&<4+Yqc9 z+!s@z+*bENMW?n8_g`%1v7zyiC8R->0(mh<4({PCz|ldFn#GisU(E9*55DLK{I5&=>pkC)PSpz@EfFH0W0v!10wEZfx1~~8%k--4Q#orBgpuljpsPW`O z5yNnZIx1PW{S)tFxd0!P>KKwM^%29SLTaG0`b?YT zvJL?8D4urT`J)QG{Hq;J@#+ipV3(gj*{kV=YyVk} zP1?dyF-bv)8?Q1vM0J@Vp5$@-sd9eA0~h0;)XxQmDh+~P@(95^P!%{Tzg;8CesElJ zd5A)k^@ubWhLgd9F->_w&|Mb8V8wARa>TgnsJ zIyl#Idbpb)lQx#+El4v`tJ6YVNfNoC6sgcn>?LW?keips+P{x6MG`cT#nih_8o&ww zWC&z6@!r~DBVvHj^%Jrn6@a^l53-^mJMijdm#~C82k6QRWDsTDb}arv0+tqV^1_6tYcl9q(BD3*dE9f<%TWPx$V$5=xneV8b?aJ08}Mf z1apJ>2Sl?>@&<51!XUvCvER0bfbd0HG)ns*1pcWRu7TbmPsj<4(d83=zY zy^_h%veB%j5e!g$W3W>0E*Btt(d#e{z)}csh)}r5m21ZyHC#Yn5&4YSVZI^Fqd2uc zX@fp#eTN+>^Aqd^*UIBeJZXr&xj!+N79WVqotq+h32bTCQD(T}8U`xyz6j3~Q z6{^H(m{vioFm4cx$PH$T%UC333beYcM9`@%S?_BXrK=<@C01?-1M+!DXyPms;-g}x5k`~v zs2uIdx@zeSK^T651z;gM3y9Z27s|6H94WJ?JqIHU;EGP2<{5(L-&dy;a0~pPCsMC3 z3yCjQ=4D%|cY&x0ypxdRlvV*yE_U(QV^HQ?Y}m zwP!+!dB!(J!T1OZ$SZ^qG;ps=Q@9);`v$}f%2R_Z9 zby?UxPk@5T@*{(A^YXpW=B&QP3ah$?hgd{lV&x)HaTxNv&D? zL^Q|Wlc`d~CH4bQ4t8b9W;%6QKF&lyfUwi-jG+IoWg zAHu^w7Ef0*FU9D9@ai}P-8FU`{_?2kz(Ad^gHN+tWW3QWkY#E;X@>1>p;&O`rO>3Q zWD8{_B%J3@m2T^>q@BK#rBO~VcYqm0lA#+h#!5W;8Hvp*{|7*6d5s3q(ue||@YUE6 z4J-G)cjAm*0@o}dBtL_<`c_fpKm0;BAz{FIYiy|2<;9sn({%S&nS(y&BG36Rkm*#^ z!!vNEDDJ7e3qtS&gjh=Gso*UGf4KlXBLM@7p=wJQ5BD>5T;gr2+vNff$arVEROvRv z^D>eos|4~IWHDSo`z@Y`L|Vg%vsAoOp28s1X$tP;0=LHAfiofcR&uFvnpm_UFzsX5 z)|pOJmrY!7Hjqz*O7j}p)*wqmmUDHizI5Lj{!ZHxyYASSPDRtVp5Vz&hy}Ln5+j4rwItqNpWrAUMv5a8%!quqIfuLTgAb zyhgG4Tj{N(yn$jJF%U70Ln(+u;F=3O#C9mFlK(q@>!^z35uS}hQbAfGsm_Y>0((oB_4IJSd??J zz(6p3;URrb#GXDs?E)=SvqaUN!!#77fZ!839IWg4F6ksB)xVZ5Xvv^b+`jd*f0~_w>%QNflAj~A=^x9wP-XMDDa#f z1QYx>< z%Z%GXU=7az_68Pq!rKImM1es#oYAd5NqT_g0;mw(ws&9@t2|Y3W@>Hr3HGezEikx> z_F-K~Mq@6EsBZ@ax3Cgnx&XpCOw~aMik3`6qHCf=^Z zh=dgbHU{s%QqBxvTvuMEA`^`bV7pf^0j5zO!yOzmwxVqdgc011yvAEc_b;y@%Q1MRNpry-oU3#1Qp5>PR`Q)YSmg}+fJ0tlCNphI#X7hR`Ac*j#B zAem!;F^t&Dw@_Xhi#+^8dmzw)`2T}LO1UJ*aJm3xA5hqi>}#Oop*#iHUF zV{17sRn61q%wo)sW*bKM>)tr`K^J-muqYs5_z8eOlMBS7QP&oh2RRAHQTdd+HC#a3 zjrcW-r!--`k3K=8kolJleyEk{VC<^6(!AE#0jDHc8emVk?f)L`fG*bhB~1l9m2)p# z#*r_`)X1@gYoiuOmgl*ZvZg`;3!$za`XH8$VM{~OiL=J2$O6^tf#3@HE?7l*uwZFq z!ReJ{wKd36iNn`a?@cVHdm9>0krg-SE#JG;J;ebajaN|*<2(ObI9Euhd}=F?b=RxE{ zmOD^p_FrjdQ2!tinijjO>WLL&xImW9e8ze&yNK$>=)k5BWY`{(edSYqV5pr3SU!=1 zz!zbbH1}X3oZ;{>5eaZFS+}A`iR`c}P9$VD&bP;nP*4rnOq6F;I0)SEFub16~h0?D)F%@k7Qh+NJ_wyOf7(MlW;GEoVMkXLBa%#w?{FxZ146Pcl~QP$X_y+evhe9;M?yFgupLaXgPFw?%Y%S68AdSg@-fjCgHAFO9*K!D6b6M$ z)gfdU5*)Sa{3{q1Lr~0lPhKcb#Loe%iIHEnbs7N}g5uI2;>)Ywu@PuH${<`e6zt>_`YoG3grav?1avda3q>jwVqi|{_o`>DoNt| ztwfm%@E2(&zGgEdgl8?5tV7G?+snm(b9!}9TgSdA9*kiEgoQ)so?P0)139Dyd$1g% z{m5#Ta-Ue8UWN2Sx$g?laegwKn_BCFYC8X%ImhH0lgFyIQBF?fVy=7((nK_I%LN>0 zqBK-UKyGq81tdFnjubk_8wN$v8ku^nbL|atDA0wjoVUNn=eH7R_u+2QlJqmJ1*! zIti&89T8!yU4AO4qp?G|H59Hv$j%W3@Fasi%3TDCHZgg@xK(ROx8iRB>U=>h;R z>i}U+{y}@8*f5P%t*+Evs`Z|E_S(M`#Ou9Ij75j*e2`}LZs<%+E6x?Qq4L?E4 zO--am@YG5i5NrdPPh=*DZdr*6JeaEcfM0S>D7^D`slHjL7dMe^pE?xftI=bAVLr)w zO>js1P6{*p1OS!-PqiJa?pQQq8fQullPqF6SU@28Q%ys~t0b?**Z?K;;YpsCJJ9D+ zlu0X~$svBQxk6$LjH8QKBvo3KvaJ9(Pz1K3a!iy5iVKC?_p+&iZ>?fA4IzZnD41DZ zl>*7Q+{GAIKEE0#7lUW{DK;Vd1OYfdgBp5x1`QFGUs587hKock`SX!~rU6+Nk^!*J z1W~k#LyUw6Cm{w(`<69id5z#IosMxj1=8pOSuPpkOb2z^d=1;WnP&G!_Nfa@JZ6hNOhza*c|Lo1;H&xn+srvI+UF9h9~CO zgy)nmtZ*AXXUPrr0jDAT2k$)2D07*=oXJ$s>-kC~@h9>{w>n(Xk7V7(SpsOADX`pu zqyT52W4YW&(Y*RE8-)F>XrAc;umkJn%eeyHhsK~PizZ=V)|3xFAwI&4KBYdn`Z0Zy zFb19pQUL)B7f=@IxIr+WdFX{g)t034FNJT>C-ODY);$~qN<%~5J<}8oSOW0S5_fhd z!+CrAzkmH3EdQ_fumAktzrO!{{qMj2*L(QS$A2&X`*r*G|9Hz^m;dq24}bDl8la0yaI;!B!*p{j_0sMDb)Fi92PPW zNx-!bK@7ttE#@nEY7Agcl1Yr}w6Ti9tTed8TV)O`?8yK!ha4M)DN7~RQaI2|F3Y0m zFgq0CW<9)?Tn8%Z7A z<6g8e%{N)n4E)O=A()(JVS~<6V-8uKC8LrYk>{!9p>bG&2m{zG5E(bj_;fd&gkHMfGG<$W7cG zCQi|6a)1|(q~PUEvM0bhn>+^LwP_Epv8m1|A7CVrWtGoUzD^m9!2ju6AcFwuXnRQ# zqI(1^fW`pcxk?61hK?e}QTI;Cpi0BQ04K zaHl|*Jy{k2c)xrN^|NK|BlSTKyD}&P%_pqPSy}T$PJvMU6L&)dy!4?zIyD%QzMCz9 zdi0%7Pd29g=$Nf|{tPfxpeTuH7!PGulh+NP#$h_5D7%LXXg!s_*0GI50f;%G81!MK zA6)=W?mBrqf&`7e^M~KUX)Qz*wVG$~gn*J8Pjpwet9P+qYDa#0LfoeI4x1`;l@Nxi zNfYQu$GVjH6Tnp**H9lg!ZW8yFQlhpmn@>!+n~pHQcMpK)dmUDKm($na*V@he7;S= z%|bSYx1f>{^3-!DzmLEnhlWh~6!3V<1w6DyLORM7y>epIDPN-bZ7OdjJ`HyOC$|-n zqC?3g8$8fgwA5t0VE_MT?9S2~2a+p{Zb<_rijNc}EyQm3{+HnMXDxu&Zht+v3k3p+ z%!oV1BFP}bDeVf3rk%_HtBtim5g+@HzLuYWvL{E;fSJYz4ZwqI0Dz`O-5>&npMW-Y zvN4!KmM~r@%+T2rszER_T)+v!V<>>Elov`AU%>@tPncd}?{Wco_d36zy+(CQ(U&f& z!a~S194!}!J3M|#h?YTqaFt>)Nq>1Ph9V2q*6aZ6Gy4PGC2InRNA{OJO|HXm2g+(^ zF>Fh*#a^V)vLRx!%mSmDS}t(FO>19#70WXUTiP{9L#520FkB!h4C*r=DNPAolH_D| zY&y)zrG{5fVJw3C5lv z9Y%{~(h%7Ge zQsL)ukt(WLAP1?vc)7H*USBHyNrve3I3TI3n(;hz751DwcuVrjFBskH@> z8%HM)O|kzn>`2bFn)v3{qwKWhWkwM=7}3#iz2y!xdQ4sD#}6HYvN0EdPrCUc!;Bkf zu$jc#Ga@rnnvo{{W`L<2t;UrOMV4TcW6nC`edJG}znX)W9GRhafY#h_1FFDKK0vK^ zb0ox95g)2qmzL+-E(TBnDe~yhmgs+iC`2dq9}Ug73-}gIkwdfi4y7fbKjD;Rka?QJ zTi}qbWAiCSrxOqxrs;>+mxBM73uqDPfgqc&763U$*p_xf(h%})xd5Fg`9{VP))s@? zimg_)8JP{287|=poD=XzX(alMbCG)bU#i@40r@)i0W}c?uqR1$ z=dX5HP(`S?hC3iuOj*Sj7{34}Cq6V!?_}C7r}H<8#;dn{iah=LJ_@NH<6_DrIG%TsZ#0v8uE3!ekuV z6bX-Y@W?!!&~gXDP4ZReyh%u~bTUKRXD2I<5T4ZBHMRs?0hs#Vl*-@XY>Z>#B=NlTjp7{X znutk?ulkiBHPi=!_lPUAh_Oyt3ZOr^2x z2Nb7d==hGXWe2;j+sR^hG|+$PSo-NoMD-1CO9Ax7eyexR2{C<4$-S8f7>#LKOi0Fd zH2H=RTP?~ozD|vI4dXWZ~?`(-);l-6bWV}wfJ)(Qeubh%Tgvu z5;VovqEe;B5&LExs?xA78jExTxEQ3;5|&n;27F8($7^ znzBUGmp$jUti;foH?0)tZl>9^a zv6$pF3xWYMvZu+^<@Cb;pq@li)PV7=-Iq{`Fefkwd6=jg5vMZn;9w34wF-c1`3c%i zwK}h)3Xi_d-%lYyriRpCBpJ|XMHbOEQly>()Gs{WLuJ3yk`H$v5?F0cDhw1>bHh%& z!p=7k@zO7V&w#mCRTb|zO28SF*{xxO#V{{-;MLO}z~h|l6oL#|$UCo5gz++(gtk-D zLKOtTktX0+5Ht%1G`5=TZ+Ht8##HOxTF7=&HPhQD?RBt}QIhX? zvw9KWeqycX&w$)if<473XtQrYFaTUVQ+k6v2MC1Rxd1x4A~=rFA@XzmI1@4TvS}~F z9ROe+{^mU3esL9i8M5-&*3b|U9+HeQ&77h3?yK*z^ zo2n`u(~ogbEwwUnC@x0NnezTh<5#@}WF-Mqwhp`UgKbxwqVWf|AX|&!A{s{LG6GNU zG5iEYGDx_bClSBGBu@~c20Accm|RY!%jS3F(O53~y4+@)|8#pR!k|`J^-?4v>|DmG|2m za>Gwhmpc&6*}|N*J!(BZ9SMrphImaEz%P04DYn0AC^%2)NB0!N{jaP#_@ zE>Nnl&)>kMrimo7QYYCaWOYpIfR5e{c(;EENCHv&s}*QJNO<4a@-dN0v(V?Nu`}`v zDo>zWh#&v?B2y!R%Ag4nM-%B0NM!IV4Sf>jwwTayTQQ_sjSqfj@>!vR^zV*3x=C14^kZ^rsmhb8xB{g(6R{VKRVBgIDv_?8okiObMX$_ zIuVP5DAzFenTklusKDL^W&yI-U|>cz`@^&={h{=b!UWuv>Bktsi*bKnZVy<q}&u*#LWO# zzXBKGT8n(Z(^9J2gl#1NDG;Jd$k&v*gX&oB0Nr_FaTpYtaH(OK32gF|i(b#NA5a&1 zf#4&uQ?7Bt+Z8zE6mrNs+TkHGbDW+ zn1ifRqq9s6cRsQ4(RxenmTC6@MKuWzxV=G|Cqce4%R$)$?co_nFk~~vPY{8~ zwooPGOPu-u3@yWQ0WGqqU1z$YTQI3Z`a~6Dq6L-=7x33`T4L!eUQv8xEd{Q(?IBxa}g`GRVX4R9GOIp%dTukugVsZLqb3i$kR~lb8iM5vfKfatm=*w%g*xK zS0v~|p@r;`O1WHsFNv-UtzaR;h9QeIuhtcj(^4nKs#tcK1lVlpdp2_*CuJX0ZRwc` zEi*pRo+#bps^@&e`FNDMjjqe_PO1O{aiqjGx_xRmItt-oZ!+-~5T>~Skh>z2Oys}} z`2e(Gre+zqvv6%BWe_wHWmVk(%<>3|*UkT_7!% zRr3kXgXrr1be-r|pXl&4HZhEahjyAov_g}0)NBu{5Rv#ZfU=Zaz;Rod6IBcwEtjrI ztu3gd!ED1rv>_*B_tWugkOa$0^AqWbl^@DH#C=n8DOsE*VpY9RB0r)Q3qt!n+yVPQ zW7E#CHkh(KF+j_yLcF=e=xLW8+0pFhqU(Y4z+8+kg=uSJS&4!l=~r|K1cnx{5Pz_u zlj&|#yAE5LIu)^30vn=G7KeYTzR>$LZ)drHWz^S*F@%Zv*Ze_%2NjB^vWzBiB58Oy zmYt;H5cqA22-bL0_Dp^V=YZqc1P>ZVf2HEm=LzPIe}}LSudxVCVHh$&1vw~^Eehg5 zr9l}T%R&+pM4ie8B0tV?8fA>R{3K$*oD659G*rbUaGHjUER%{!mZM+-3Ac)^|X9O@#!~ketXd)~C zv_MU2u%&wK_nJhG9!s%97qL8p^gnosB%&x%ZVW~YkB`R&I6c${{%&^L459#bRSuI) zJ99UP;wCtWH5SQ(^TtH?x)21_-Admvbiv%4Mh@YHcxq#iwu_~g(*?_su zfl3|eQ{>K>?tnQBgiVAHA;H!!??;V>z$AfPo&g}W@O?T>h;*tvg%VFksX=z<;U@sK z6)8$o?Eyp3g*HnTUrG|Au$R{;OofC6mYZ{iPOn}XQ)G8&!t8Jd4p#E;Pp|>KEfoS3 zviB)^_b%mQxj>09o`Y%;LqVcOoaa|?(y-4B^?`0xmF(G>OsmpWs!?}3-dI?H{>xjS z_}2ESxXGP82LGp4rf%{W=-q~&K>1%@K0wxTQXY%d%M8Mm4uu%LMj2(I6f=wyn1;*V zpouJ>FZl=-?wwoTQLb@^I~a%(zWk7A;NvD+Tufm~a+*%znm`cLfHjG-BX?!1hiwh5 zuhmDXE7w6pFRFuX+ja;cmG1}0SuWr-$k$kap2{#ymW_#On}Xa2F}#Il=?DpbEz%Y; zuUjR{IlAH8u*(I^YmPk@h}@A z%i)QZP+NemWX(8N4J08?EaH@ObGZXDfx@C4h&DmEmIIy`-`cdMh7w1AVH?qUYvTdY zXo5`eiknPn!{KU}j6WZ@B2S^fub&^_a8tY#Upk1VKfwi*0=RAq*HGCT5Bb@qX|mW& zhb+P_pv{vVU*eBqCv2UKrnDiT|MNZ31)8RETofs@VDu^^Jc~`e)ZXDI=+%`c&B;nB zPQ3!sQ)tIO%Yj-hpl^3D=ZR#=E;mlJjwNhfu9*t(ByjEW z45+zmh+tSt$KOmJn!Ad2SV+ns`X=9zlVugyN1E)&We47-c4qMchb_+l6OdlQ9)>4$ zjpM|E0O`beA%=&D3MjnIA@3})DH7;$N71BFQ4eO}T*;EEXvTF7;+D+6d!C%2Wugg!MUI4rF;Lw)eSAaxDHANCEYRFS)-*E~9?ySdh zB=x;nAwU3-^0(*5dkTzvKb^7u;&4=Zs=y-@BAD;_*_haX*}w=%WonzV0z+jYUyz=M zx@UNer7%PZsJ66jGz_pHbSu6r@_4v_cZJmh>eB$|8=Vad)PS5f_}(C`V~Hd%rffCP z6lo@!g5vhmSxLqsLjHNR4%5aC+0YSP2JARyCFU{OkWycnhI%uti-b zaA$akP632F>wugkUjrXTL0mVy^Mg=rxj<8|iLnHm0^!gz9HQO}VTzq;ITs+3ND-J1 z={|rOT}Dkri}Yq&{dit%b4+NxWf&M3jp0*T(K^~(U@;B+c;0+xab+O^g{4M=;yGy` zVUkvRpaWs)0(RrJWBOcS7MOHFl6J*-SpC=YhbYL@$7J(ibJhKXX4zb*tMJZ?%oO%v zYJ;+llA>LWdcc0Hj6+mh00SA%wTy{`0ZP<4VuXe} z&}LnT4rG4$a~M-3hnQF0o2B{sy!~&IDiH1upc#iRLPe#mUa&O)Mh9t~3Qe$%cu{5c zX`h_ZO?OdhuxP$M2d2}aVmsZg+3$Ea=bHoxyCT-*mnvd-1|*@tG`8`aq6&QvHJPJ& zTi-csX$>v2h6_LR;{l6GemYNKNovPIdaoAL@GvLpH2z9FAUW-bgA9w;8wd*9M?zyg zt0E)kHVn?1#-AG6#0Wh+gPb(^)ICe{n$@blZ^x@j+5GjPz<^R9_ek!25>}rYA$1}l zjPp?=xZHu+mt5|WG`?(O`cEA*e;YB2gL2tW5>$R9)&*ZVkKBTfQ_Dg?%)2|>0ZF5o zZxSSRkos?9)J^#@`QgYZXi<3(v$Ew!`O*r=2LK%y!PZBYl7p zDgUwWgWp#XyWD}#$GJ$JXqpDmt8ODiS-}fdUG6~si~HxTlN!dWUePgeiEe9ksx-vPd`0djmf@f(e7HK0|+H#`H;Z(ku%@Rzim zgkepZ_P;-ocgqD(8CT{^Fbvl?FhQmttz14enS9d)oW~_)3Hrt_kbVGBbboB~ILnb3P)@`^zk#!C;?iEoWsbakS#J9&3GStd!fQb=l6$;}MP6}bB znI+M&wgxLsdVxlSy?XE6y}wvGtKQp$81lU3C(u-?5A8>#D>+>`d(2%^HTg!TvoUiq znp~f%C{xwQlMqQMuS#gw5WCH+@l6(Mxp=qVwuse!?)lO_CJ0uF$~qLN)wa?NZ~}l7cO^TPb3v)145Nc z=tTE08=id;6tP@@v6q|)BSM$wNb^e7`XqMv_phNw^3}0V6r{<~VjF2+F&)P$E*4=p znUuxG+PHJR?URuz%7hYK@kYOU8BS+;QfV5QJShtGEvD44x)NSHp{<4C8AycnB?dx9 zIR{6B*A+@6S%RO23*d6-3++DuhvTzWZ(QiY;B&x@;R3=;8J2-aPNF=j7Dazl4*=aC zs&)1uW_5~ZscArV0Xx1a=c;Gx9+scLHABZG`hg-#RxHkyph+)(BFKk2kuXz%NA^z0 zfNJ&-!MY4u@JYhiWhDxW=Wf+>X)_2ZYzH193`)7-#2X&s7wnZ~MCWRI6_liQx1}De z8Opp|z*a&jjwTfHh8>_L%TZtMn8{d;j#{vnKoZ`DQrGK~&!tY+cJzPB-S&0dn|zl+#9;?WQzhq5 zU>UJ}>ym7?>|}EE!64}Z-+{?=_7(s+6K9`?BA+hMurJ36s_eubf|%P}+>m9k zJOh1}P1JyEikdXzOl34dl((>%LBN3KOxY#`rvMU+fN@bK8zxn@#21bQF=A?$h$&%` zPBrzJ{s%B)r`Em?9ZNx^&c|k_G3Ta7QZCbg$RBQY)bJLRmw>-lQVs>1!-+!lgR2GW zWwTr^kRuJb;3!k1OTIL^I(KAtJp#kw4%FEyRP*Yiy`>)K;h?yL$4S#$3Jg+n-b`@~ zG@7K-T1Q~4T{7YH%dny3RX9sfA`&d*ru#Rh#}qPe6r%C`ClvH(`+(puuc#=#Kx+cr z$phv34?!BTy%aXmg>Wk>ZjVm`VUq<+syPQ)8NOTNN{3}z18Jj3G)uN6PXV$qjOB0v z$_cHelaY9YY#0_*@&VG65n?!4u#5dUlr44W;=eaVNaG{=<@45{)E_tt#VCge0CWmw9v ztB#ViwgyUmTYOR&{S#Q#h>oE`fy`60^%*(d#MwiZJyyl0G15$pWY-| zgC_c z+GJr!jyHQ#LZ0%}ap2WCgP@5a6Q`9|7<2(c;1riS0K}40B>r#cnY2m1Ac>8@RTh?# z^Q>zvjC~F~H9P}WW9BW)1Xo|UMbE7&w+8YztW+kE*r)< z+BfBoHgV34ry?LCf@mgK6im7hRVAG_*@tCArU;&vBrAO+O9-LrvJ$o3WCDC2x|JVk zTYxo)f+54n440J%z)Kx#fEZ!h0aD4CfSIL04ldIq*3Kjju1Ir_6VIT&xRulmlp0Fi zc5g~+U=%zta*0+OTF#zVQ10>*;5`kd3EYRk5wzJA)!%S5`txNWHTc};pJG`S%=IKo zV?L#qW6p=u8Gr_ZKcFs|!wB4o&*5?6{IBSbK>^>5h^0P|{8%g~=i8e7a3F}rhs#6sSaODu9aDm1 z@07|Eyf#Sdd^(s~k|@*b-pgQx{?H{sHF17&J%(o>4O>lTMM}#Sqky_U5WDjMGQ2zk zc|<8L)FwCNoLp+t9DRr?RUpbx;w0WFP*pCNzml)e4rMb)Md7p@P+ce>^pa)U8{k5a z1`5$cnnFTI?Up+*+M4WJJ#kl@l(^49qTD*Uw#&)HH1LN|u_v1CQGMY=P;sK&B;yQW zr0@oaOL8I%txXhX&7uZn=CTuPG8}F3jD*6HI9L zy#Nx5=qexe2ifg#GBshA;vNi&7;&sMNRmV`35kAs*b_;4j1f^VXZq*2rm`bO^7tGr zNUz~1*ngEJtcb~lnJMm;HlR8_8ZNY4K+e8O+jge7b1JC(b-_AFg12Q`ho>tLOl{C@ zQZOLE1A{~^ks&OjM2a>mzW@kuLsuedSjbHgc}H_qst!LvnvJ%dMv#jOnrj*%NEg&? zN{l$tC&WG6(sNPL57(&d@RFnol4cdFY4(y)l2$sxPV_%h>OalUtQX%mm3>RPy&Y5a8{_x9+DpI$JE)1;w9HPSY z2p+nX56K1{=rV-nIS~laHDW_(y-u5OFZ?wjRHV0oa7~iuIc=ia@C=~2M4=KVtOjtj-Nb;#Pnbrn z@3Ibbv}74Z8A?Nm~GDa^0mB1ag(A@G@M-0xEY>01hiVqhyDIHY^vh!?Z?J8 z*ht&ll`HwZ^-Fw8gE`Q5gGm4?r;KaNGFOb~wER>!n}y*}o@g9h0F3Or#8udv@Ro{9 zzhZfawnH?p(}V~_jjBYBbKz_ev9n-l2EZiAB1#0G2@C^&A$*EF68`=*lzFHv8CAc2 zHe$>dNL#10@%NXeKTPTUP}33&vkIsb-FhN19UJ^Y17_CNuo8&@9jd3m=kChs4Augx zQQBDy%LSS^?jV;tn3jgf(B1}CXOcA2aJfLPFdFZCieNAsV>BDZFKx`=>9UhRJ^`1gD zu)8v)bgs@wKVQdZThc&JQd_(hg>Xf`I$cCKkDDJ;{KM79F`Uk*n8-aJw9QQAPeq|) zYyg7YZIKtUa7dx3|8*w)v8uD+@a;R8u;GhNRdE8<7a4C`fluFHWt}y!$M+T z;<5%Sp5!)mU2E9c0*~-+mW343K)9h(LDDD>9P*wdZ5(^kBBk*FHCjvqd3-s_lz2)< zzsT-r&ere~$R&)8zzzcP5cx_iH)2BtvB5T%3pm4MF3@||`RMmF0L9HULvh*GKL!5j z*hTrkH7yAm(X$!iU2N~ewk{1;i3h(e0yY-_wi;tB2+RB)ibG=n?a!Mt>Rg(o(IykftptHVRIgDH~j?y55*xA=_-J>g**aem$90xYor zeP9&zL9xuifS7N9{gV8TRrbJ!dZAE&uJ;dxe7!;TMr=;wC>p^c+Y{$ z6!;EBAJ(tm;jw6oho6x9fTNYf6FWgGN#k1pynede^5Fs=6?d!XJ(#Y)S_&hQOYU3X z)WY&0iC}4b!Umn;DK+4Fac2}3UEQ-RWw4`e6~kJx3w{lvXquxH=@~9H67L4mTZD)R zO3DSnbJn1?Ny@5N*kvKX44~11+js#<55%a@^1GMv_KX-5zS~BXyOo$?m%jsV*-1$?1?x&eF3J?c5GE5++@-S9TS(t8ZoQ`c$1P& zO?a9r%!{ zv6@lz{0?-TzuGpP_le$Q=d#1`8B-%+7=|5*nM~$>7>>2XO~hSCS|l4s7bi}0xP!tk z!O-l%-YD%c+k@393(}%k_(pZM0T`4U$bNF1UtkzR9ZQYqeH`X+2l`B80Jpk`W&4s! z)!lHri8-Rg-Y%f)0eoa1azYf>@03-$Bj1K^K}enXH9EDVEZ7P*w>0Yt4e;tPA&TNh zfketBrW|CTR0?O?Q6c+Nc@M%eTSt?h^CGpd;uHDr4r-- z%`KoQY0}a+x`2DFrmQ5Ow)Rg#5NrzK=N86O%%jyOTw5qIED??+mG;J~N+jf)9A2ZB z=Sy^`d-Dvo;84_v1IBbRVN}iI<0x<9L7oyu$Vv$Psm(I)`h}mV-jZQBU0>^S-dzX zbSR4LWajSLLXui9e-YcIMk5Cq9-{C~eGZ+Z!h#>nL$D#!ku;rXx&X$vd^nGvp3Lf} zsIZctd5D)~SJocd{KRxADU6JNQzM`|Nog*UA%2#HL==f#CC6!+r(=#r6e!1K$C9up zB<-L?4=k3|Hn0>^jvOoehMLz&@C^S3WjC{4-|L9Qp`tANvWcS>>psVhnlw=s=)zx1 zhVo6YDuu!NSonp;0UN_pT7YiByg`ElN~M7EkzFqjkw>6pDcLm2Z8~FYlLcW*1B@(D z9%_9Ap}*KCg``v)iKAdoqrZiDFDH|lNGdJfw5&6VB9nDcm>T+KI4lQ?jI352FjUh6 z&Iyl*_{RG|g@$iIb!k_{lob4LTmT;AhgV2EmeB;8Fu7Mp&)M? z?f`NC!!DOM=C|;Au|mQZVHkj<;Q}1`Fme2t{m|BCQz(4UF6X3K$~=I!!dknNwARL= z-a9o`(Q#Z(!yPCH{rnD89jHcum5RnHkDOY2Io_2bK0rTNWuoQGDUCnpy!AdG%Ue(- z;|H~fd>o()X7vUTaw#&f59vfYzS^@u1JE{`q~1ZDq|}2H+g^ufko^iGf5I~rStLmm z@6~vU{_B9LB3hm6I4;6(5-JC!Km(^#!fESrxdRz4+`V8EHa6UV9TH|_9PL-fA^(q}AE!Bnc7XeN>N<#4bEg*OU z-DDm*&K0_FP0h2`)1k{aJ6!<&7+aUyHR2P(jAxNhViv&gH8w=Une2RPIuFHh(+mao z8O`d%+AaV#v5V90G$~IkC@{{sKtGF)AASOHBW0j7iGRn^K`#&)%Ct~C)9EZ1ki|;! zAZdC>N-h#zC(x{>deQ%mW8UAo`J7can5-0K(MjXX<2Ly zVtO(X3|m@Iq#v!yZng~)-2q=ZhlcjeVLLnnA#oO;-qpscYa$?ES;d)Xd^k#`3lIaQ zYQ5RcJOG$TEP)=5s9<@GRDH(W+lyq-itj+UDVxo-aIQ%t9PU7vQpadYe;>0P%osz( zI*@i^|7{z>Qy990IVdfgDWuSYK%}x;wsjsL)l6|lb|Q0d2#T8Ws{{3EF5Z7Xna(x0 zy&MqU${1+j#?WE_=aNcOWC7EO08*WXPuN}#hG5($KX$qf50NCdbYZ6g%`;gaQwwI} zK=j12!v&CnvCSpoYB=9$0lE`eRfKJe)K;miD&%FOA+bjD|sq#hscK$qsTb+_E&kRN~EmOyeD zxVbbO!dPo{!6%C3qOHWLA{}*dI{3x1&69}RaS}$+HGdD)K~Tn(MQgc4Jhcq0`QW=~ zfmh5wMAFYVuXWkh>2fiKrqNIx`yo~}vPKjh&W7P`c!(9G{x^}e>_3|-CvpM_(j%_*~n5Os% z(w<_fz)1=YO#IsbNK$LuptrzubD;>Q`>eo9zG>h2Vj36nMhOSLvZ?V(i;zrDM8eHm zGo_V@b45=;J>FHS=#@NePGx8g3H0(1Rc9jhqP##1zSF!`u!_8JtSfRH&=145SE^!!(s!pALO! zzU?5j{T|qjuPl}mUq>pcXjQl^&%j&aTpm&`1d(i-*Fei z9VqW?f^@P1K=8C7@-jRswb7T$YdpuG*{5WI6n6BfjKYFxv^$8RZguW+NoO^`N3O+9M;$J6Hpl-D54e88K_q@=X+8~#8z@}h0 zl8#Sh!VKc4BRYb)75|TAOT%Um_$e^_=>jR#e7u(2Z9eWHu-)d{xX1Er$_CQJkO(yXYO?Mu@g6yD)ncil3DTikC90tLUY>!I`G9xH z#koASUV^Sc)712QHN!KYT7l})IU-MQj6A7M%k=$Kx-OL}XkDfMm17*a2f?tWN&D0b zmvlkP9r%)hfZ)LVzNF&@|M@QIiBufRrpojJMTA~}3y`+90#g$hN^r)w-{B5;IOr`T zrg3m-`^+0_cO@}0&1Auq8DP;spSSu!SK-59OY) z9gtowQ6hkC%NHI4V8-(Bar?}d@k)i*BoM_YC{cNt@Ej(>5NQHLeV)%(Vu_=$ z2Nbb)0i9J~D=-AgfZJ`Z!v(a7XnMjn36`b8dibTaQwzSC6un$PY2Znwgs~9hxT1a; z7tpBubwhnn015CRo~pTTRxcb)m1T?}oN(CEtQxeQ5>I6WSyo^u5H%}GZ~oO`Ke&?? zHgSUfy{J1IBuFbK6Il*uZFmNP6UsqGR#F#c$g-7CIu<@B?02~UUdVr!0>DZ zbLg;nNw4g{$kMttY7XNp$-%fH(DhA z+M2(p1Bq~ejYAA(arox?LI0F(7buog_zhbeNKuB#bA@bcv?z!SZC zYetPr6z5A$iLYvIKFrWNlc$!fMHoy6RJSE**>*;?OX;-e4}b<-Y5GKFBt(~d-%@EM z_^Xk?Z-!(=G%3Gs&uWI^M;hd%m>E*fYO0CT^JXHhmT7f_QsQ{`jRsp>Uo9Dy-f z5HDph#yJ2AdJ{wH^L6qb!+>areT(wK>!i9N%gKN^70BKoYgn5@R8%kZOmM z(69sIcY`28oevD2f+xL`!i3x`ie74u&M58^83>>lwd6fZ|DrdO9J1!`Fx(18Bm9aklg?xPfMr zL7UYlQ>Cglr-KVb5tIx{FptMcrE1}|qxu_OW8M`hLMmoA!*-xH;9O3rW@8!lM5~Wj zK`o+Vw=3x)8}EZWOz^w_)36hGcH(<`nm{CkOUgo?qUs{9#YJUMeQD>e1+#Z#_THVd-3Pjl7VG3^<^24Y|Vp|0&JF#{8JJ zG#7w6IgW80l!Y2m^=`gC@b01p^5y(sH!a1Y#!Ar0g3}yF(9~^!!f41eo(eTRn;-%P zh!@c^js>-jCp)~xIHss7%`58nMGK{Ag5!8S$gAZ7W(uoOvTbw5?}te-0h*v zYxWC@P?=Sg)odBfbf4nIu5eqv1^gHUL3_a@Srnp~w95TYNy~P*<#Q&7gP(j-UaMFM z;6b!VFYT-TWx-Is!Cov-sEwE^XcUrwQ4YRslUPt)LSfZ5*#HTFPBX?!L^#zk6#({R zcnfY6WzKm(x(z$ZNS!5~lM1+m~tW^4T%VEh$xmrSzcs90`(= z7<|*n#*2nc-|1SJE{MP=L$$yK+7l{On5^wt z+|~lZh!u9E3fn8j7NCeI0BOlPN4mMx@Dtu-?veL$HmbAf?&*3o%`a@%%|M$j(4=oJ zV}fzF0i4AggMo;$rfF#^WziudRNMxB4i=u|SIU%p>BbcecVLW2f==)a{Rm5ySfGZC zxg~|?aIi4EI7?0pjVcw(LYMWg{}(^-yR1YaRjN|mE9V9ozK)5X1`7Xxr50y>EfIWxZvd>g7Fkp z;CxjclQ6ZRXwQbeaqYej+d63{d$sCNx5Y;0Wx%g8;a~t2zQaS5$fHNjlZP<&IU-1u z8D58a^?SJke?nkG_Ua(ChY`gVw=<6SRpGVVfkxNKX!|L!-eJ<*cLqx$Z0Qig1?(P5 z+~f{g47h$ec6AP2o=tivvP4=#Q9N_@dp{vhm{QwG<7`&z40jMiRj?3er^?dVo^W34 zQl+y9+vLIOv~{ntWvpdQ1Gz3K0z-qnZFvS5isZ7g3z%#j5y`pqq7+d~hs%CISBUDe z`@mG)GcS-a?>az)9m(AA47d^zBO?0|U4$cSzm}p5g@oWsOg77g-N2sAM?u}?8!}K9 zv<;8(MJ*c&UP@`}XFFf`s*(t!e*NW{I+n9h9JJJo@WVgjA92sG58!OI*ST8;X5@a*z2$@#MrDV9HzftXoNehkhaO9SsLD^X!6 zghQs4J7e(&DcMYIOtL*-tHTAr z9{N3Km|D|=Gvz5&5gCAjX|e7Do0cX8`A`f7)l(?azeC{T~zPG zN-Sv{Ia4l|O)14TIMVOeKmt35k4eKyh147kXF)L%(&h+8IUa4*%Op`W012H>(HCus zr-WUi=@MmR_q{K3IOMCD@72HqWOF&9p24euv_(qbksQqFYBwfOblf^yHJ^*1NpIA*>uXA6jAw(Q>HF~ux%`&T+0$cL0p(dZ zuxVNZFO#`Y)1VPvegY+&-W$E?4;v|>TYRI_qd09q(Q*Nn&_7k0LLEKlXwYqm3{!v` zWHA&NL}2EA;2Smmn8$Kli21{LQK?JvzfkLxGi7^gl+Yw;U~b2-tkN< z5OEUPc0nKvA&rQ#AeIYw`UUx#Gbb8Fr5RKWmLrIw>R&FPuL!__#7i{7@qpEQ40n5z zbAPzNO^=0B5q?3=qHs2+O^Il8u(K?q%KZtxCo-}=KU#H=j>4VLm|0m8+;Rs{97iEJ z+YgFErE4FcJh0En!W&v1#l8*`h>`c(X5=Aw5owU=lolwg!1tO|{bnBn*{!)}1gkJr z!kFbPNH`Z0pkP;N8&&S4WcNJL)kxf-;ZWhpma3v6Y$GG$V#-2Kf{`<0d5A^M7dXNC zZ(k4o6EQu)BN5_)(X~zb1m@G=SOm4Fpu+4j7D~Az`SsbCA7XhP<2jLDG7nE zG7vGALoBH~mcQ|l?N<_0NZi6hqS{R=t z@f{^aErRZ1qoH!sd)EYm*fDkl8N(ekwJzeFM_hG4pG*9XvvCm-=tG5~G}E@ipo&`e zC8;sOEKfh=kIPFvZ24 z=9fxQvjqyJj6)hspEEKi&`P@vM#av!j3)q)rN>!hrVN!-KV)b?T-`EKgYCgVuXSR22JASj}R=5mq~xq#2eS|t0gyesEdY@k{V z47Gr=giwt<_z_nC4N;mnXFebDx&?;xcuBQPcgZ z>uA2&L8xf#5ccHj*(`_G*u)4755xhO3WKtU!uD*b%)`UkXbFJOjQk@_<;J3;(74jN zmQbr@8SX%0JW9zrv^%%EE3Yu#o}Z}OMFHWzuheyv%6t$UpalaG>lM-{iiKS6fc!y3 zbu2Rk2(pf`h;DHsatxLWcz+-~V3e#jaheDlY?}j)Vsmkks4V@LBPY1P$Ojl$(0&pm zh{&Pq!yT9@3`W)OTR9ZtaCS3hn6i8z(EjBDMZh{+yg@~ULzW@g*Mi?!(GWE%zfC_|4cxQV+CSp->gOQOl()} zQ$*_U6U1`q+>0=PeIf4~U15)U5CW){h6|+P5Z7>Fa(5kLp6rO!#{~4o&MhC4YJ&DE z99yOlp)sxIMd+%qt=wfVTxRBdg#T?TO zums6QTP$}#1ZW)-5V4cUHPr{xrEnDKAo-?;pWvN?(KPHNeOQ(<=YgTP78Syx0x2hq z{h+u5dl|CV2M|HiFac@B%N-DQHdgB)F1rC1hGJMvRBevvMaW|Q%N?hm zY+2fAjo@;$v4L?kk}+sAHGCjVYrx%S(Og*H=)F7Fg8wrAfj~+f!?6-LR#dOUGa&KQ zZ(?+`t6Il~r(-_R75a!JXPc6UFF9kIcK|^uVMYoZ8d|kG08!8aIhgK1x)}9}6wFL5 ztc@5{6I!2_x-KB4OkqX7LvAf|3?9SJ0)?=n4Lp+zASUG^(L}+*07x)a=Y2$ndiD8I zhU6-;C?Im6s8xysrslD#Qp^rooGxGwgJoF-4U!?1CS28$E4O)dpT5Q}fLv3aLrqFs zH>T?jp4V$|K@7QhU=pRRMoFqMiqIJ?P(rKYxU?HQmOE&^mw06Swaq{Ss|}4DQ8~&c zd44)a&bkYZi_HU*YxtheQGw?>NEG24c|6~dx&T;P1T1C^s!eGqvR?ccMFMBU@-3A3 z#(B=|4MhNe`La(GWisT!=Ne7{>p&CP)(PqwJLZG{bpO4vXgxpLT!6pVoO`XN1$5#p z8b8UQq=Ozf7Q95#PBoh9$brW4N+3sCWmm!BF0T=~Pq?AFqZnr-6O>M+81tip9yk`= zja^iAZ!JT8evktgWHg_@o@02q1KC<4Sd~S9CuJtVyv9kla(JTUYjgn{a2{)tI64sD zmhY&XFkZvwji;ZW4l(u=FzOuO!Y3H!l*YCoEr#(4E`Sm%oh`vH7?y**C&?+S$Qs5c z=m~^)NQY`rJ;t1q3OsI~#Npv6p4W-`n-kF;{ssIoriw`t2T!+7Zak=gTmao!XrQw_ zFo_}vGoZlG0y;8>9f_P&>;QQmWEzBI-a7rexHr=2Wj4{VJZNpqV9;#Jhw(#-%Q|il z2C3l=R1;3&^1*DRJ^^tWbU`$?3XP%A#b zg8bzUC?pg0IS#SUnO5-=s(#0~HUQCz6&eisG`tHc8c#ADZT3Jf z0J6)w0-I!*mCHm5;m{-;eqL<51DH=f78R9!gb4;dYPz&75`;4B%Jy;AN=sKkV}tY% zH9`E(^o3mK!%77HInFQx*#|!R9tr(0g?xF696bv_w9t7K%c&Km0`T0{ENrZVQz~yYTk|m-1Q35tv z*J*-zN7*)%!il?l3yxqNQZ5`0U;mO10l13tgRc#Cq)*y^F}w^o968WvfV?vTix=Mgqis+5m`(Q1!&mVmW?EJppky{=DTGkSA+Y zH9&G!!(wk=Xfs;iuH25O{+;ZCtn40|HAfMhn_SbA@3+EFXd zMkkz)e#jb^L!v^LDa&wBSU)$42Jo&zv7&qp!yO2Vbi<#VH&A84DqsV^atTdVoVsI))4U*nQ}z&?4gY z6MyS}=>i{&h7h{t0zau4i9X>+hJ_Cp#!93; zZ}_BXtkeTV!Yt1qk8)kRCMS;RyF{0KW%fA9B+r*J#0{Lza1Z`sU63DVH#Y^32*g)8 z9PflD@>FzqKv9{6YW&otP0EQuoGzdub)qvB@*r>og0#I$tYOjX%THhh0)#i_i3h^w zz_zYelC%pa9Y9&+Bq&vi4KE<*z&_fPU2aLst44Hqhya|n4@aC1UgQ++-fR~BUAxQR zwB?CBASgVM`TZedO4~g3S}=(;ANDHLm7)!{wk&1Y8&F6z zul7LM?TmJ)L6&_ICbA3u?8RN8-v##lepdY04Aj)^4sSLV37=9A7Zfw?8gGMb!N(!lP|o0GkGMxd7hU zkuCwIWMg~_x1|C_IFEXLxj+#fY9zu73yKX$ag@=MudKkH;SMT>N~c1R5ejqsQ$E<* z$a%2;(*^Qq3%x_xHyP(Hz7AmsP9Olj3}<8Y5weuDS2#D%vX{@D1ld(JN=JGA6I_5= zA7q0#hXaB>E<}0CPPM9}tKk9y!O$vpL}oZAd|g|1C`7o!P)NEap& zLKp~71yFRT(ria?T{OGnk^A3jppW$t0BQ??8-9WvTq;bt1%LjTx2~~iZUEgTK76?V z%?g%=Qaz_Vt#@gnq_=P^z{qd`%SK^eu$RoigN$0wL>v~_BCW#-3ifU?uP;Hz#grs^ zATAk5$!|Q|LHj^+L`;(8ur9CPe6ND8Bs~wxIJ{);Gqx}vw0LLS0Hq{3i-qt?*2_nZa zFHOgWeD zxd13GF{RoJ6sGf+V_+3Bu}~~8KcS77>qFbC*r7tOkTlSar!QyYa55=o6v!|bCY0vP z@kYY*Kp1Y!YFvJTHnEvt=49gwjdzAanOG%Akv3*%eT_<#Kk8tm*>}W1-jZns*<_@(@vaY)q;I zv5WeS2J|%fyRa)Zg5f9l?PZ{Fe%peG4~p$WJHu4fD$BMmrre2uAE5$bp7#$gvp^If zeA8=0C;4^>RH49aC}g`1DBWA59G7*#xPhi=AhHMo*%1Qd6s`t=Q1vhEzg9yiPdO5B zJ%qE0Q${yPxFJ0YMMC_;@jyPWpuroH%NKw_uU8h`QtE0B2ul+w17#`XobTdwG11a) zw6D)!BkKW$YkgKZ4CekhCTQIPL?NZaLej89Z=2&mc>k_05JA8Xq5~6JHH6leHeo|G zz!BXfq)D;oh*YU6GGLWMiBoQiqrimel65$ynGP#9@mTFi`Fma?78 z2p!fHeV@I|YNW(qLc#oytPWe63t&W~GB-qlFUh4EpaIQ`f*r~{&;i+bagkCK352Ee za;xiFkJxW{jc)vp6Q%j!#zQlJdlTNKmdE=YPNwQgStOjUC))K zgNYt+ul%KjP4Sf|HXOA?1;bDHhL`XXswPB;AQei2^jTM9S%@U zOjjd%(2&~&0;VmdSL=YAL2v`ZDQHTR{h|uPfB)Os37BuInA%^fe*5bR| z?+4OW3xtOIoi0$RO;3rWW08d=vspH7O|-3O%V8aeez6pthmL333A1bg4?bmjX&%_& z0`l?bGjYVg2fcU1tCAh6BqeDW4D9dH{V06);Z_?fjP^;;=?mv3!Y`}=c{g22E`e7=6kY6mpdTNRoCbkn@;5K)I*ieL-9z& zu&e_ZwuEy<9&lT;12}18@(4hZL%B$P_4n46s z%c#=y;(K3t_J+{)JP9_;5)WM z4B>FJ)#4sIo5x6tVv82gQ#=Xhxn(un0oRG;L*A=4f-d`n#Re3wjPhA{CN#6h?MO1; zIRm-m1p$<3WV1{Zj?eF)rwzZMS%}9O(~WoaOVsHb820TdfSNc7-zu$|Z&67=r@M9P(XN2JpXX2h&_X6_jy2>edj}&=K?7E zFu;oh4dt1yTA|>UDtw27MR7vN6!61*=Iu*U0$)3~xcO7RHZCxzKl~Os+cO za}banVK`XI6;9nPq{yb=<^}AaD8zv1d+x(ZF)_vPla;#=#DxFucGCTvfOdJQd@^{lh_#u8%;m%R-(@)6F#91oMhXSV(KQRMv zvu$Cz1Hz}=?$WUwjF2^|65wDd?EW$Q1oY&CB9mJprUWD}2N6M}X0R^}ZJ$S$tQ7*{ zecIC~`^eCnaV=Y9X*`{6Z_QlvF0BE?rw_~IGTaX!YALd0RRFJwDrg9VYEg-%Z}(9V z&kmk0X%~7eJQXyWITsG2SmgF}xLA+3O> zA_)41%cB9%8|hkr;BtX>0DG8SC?N%YK;pSX4;U>-Ww-$C2>90-iK}w95b%gwy2bv> zG8l?1ctO*xj6d}LjMhrJ>jsJ@0qrh7LEEaxWG|$9kyXv>3fp>kmCEiR%7cK2?a6m@ zAW2dr{txrMweMGhM2FP-E>Kw!w@3T|pjGFALI5K9NQTonJ*aUcxyim9awkm{!Gh>h zH7)8u=bug=Pb0JdW&L3*U;%imkpqk_=K=!=B-GPaFrzJbc}@yF1p}Yd@)Lx22xlv8 zkn%#IN_1;8<7ZOvFJ>Uo2cQcXeMBFc9C;QNGAV+wPcApK|2hMr3lJm$hI8E?Y8s1Z znSlDGduM#WQQ)|2Nfx#jN6WCS7aA(%?4uxDAdCxqP*lnEuth4wmpjm@NG4{zAy_XX+dkkq z3IJp!8NSBoX#rhqP#iIhug}JBnt+p~hr8TCKo*kK*{XApA|R)YuSx62Q!y-Ms$BG> zWyjR1&PF1WlxTb4S`-9BfnnogogpAYc=_G7vXdcL@|-SysM5%M={8cm2(e8X=s1Wj z1xa|E(*+o$&!j>WtM<$EjN%_9IC?YpVOQ3z)1d&Os7(O~z&ym2KotjcNBr;>+`14#*;3WCCl^5JO5G;jR`j z29&7ib9s%HAz2pyPTNjFPwi`9)hz*sC$l^QveJHiYUk!#l@FV>&}m1Tuq=W5$-@Av#=*)TXSn95WVK#K}}C zqfFphK4&?PDH@ZfX?o2@qAK!6ovcL6%StRQO|t^S(zif@Ow zFpjtY66Yh=GZBNpph8ZE`oK1fEhZF46Wznnj7z6%dbhSTj>`p1k16|v)0N5DFVVEB zu?i#fDGXm@US&rBrbnM7^?(onwCLAs;&oonUn6hr4}+~zwI1AoOd3;~VlmeQ+`|Q! z#gA#)S7cv*bAjY~rNW4#SYD$$kD8>b%zr=%Lv>8$1Qk`h4u>nc8a5BkV{-hoH!(k0 z4ltNE#M=-)c%)=fsu-nCa4`ineYs~+*%h$*WhT$Rvq8|W{n+haw3|fviM_LZgAgKW7gtV(hSxP&j;=yy2Fods~F3>n> zbxQ0tR1!fUxZkQ)>MX@J(1iaD6W^8t-(1!uig19*+Z_Cu(-sk?f@yrrR$C5FnUp0Y}DftH@NOd<^G;bSQsVSQ+R0aZ0MyhzHnf z&{=v9cF>ey)8zuHGgVs3N>x>TPc@_S z7G}T5OffNuD@~l&I(}g6?aAf%1p(M6hdWS>5OkHZghFq~4=s^(jPt^N54&t%wVcO+2Ud{hgfDKF6nAfhbn%7&<4uAR4~ z;vJWAU#ad?^c9M%!)2KJ+&hBOO{!P$tG6n$7V2E@F7&;e zyAl(ic-|qNQL*4_Tuvsp3-SV(I8W8Pg!_e78)yR__Du~x0WwWqOQcJG^UqRbA27;7 z1_H2oxj^Kq$A2l@R;Ca5hT6^+;TJ4jo7*IlMw8&iJb=RT0(fEFY~XLpjzpHK-X^_q znA=4p;M-d53ctj83z7xu`H-8*)yl^~ha)_W%}nRcelR68VdNT5?xg{a3|XU3WKUD% z0F!ha!$U-m6c*@&m!j|{Y+IRv`i9gab z>fg01*cQzLmmM`xvp5%Lor6$ynKQS+x(XHLqIQ8a}syX$I zR49(^WhH7g@7hc~QyQkC)&$g$33>?(#KT+Qpwa0NN4FEeg=rwPe3=l4gqFjV{v{vE z2YN(_08s)%sP*%J+!uGD%AgDnwi|;m@NBT0f`zGPX^0m!5Qe6AZ)h4wP^FeTPp|UB zouYDGwspN3G}R+J(aLbV{Ahe#8hCBT@DQzJ#T3TX8L7@imq1V`(_lEuAW$)lxS^zc zIxe;c=Mmer{@>+z35LEA;6N-4I6;?F7~n0!84dI#u%oB^PdR{AJUB}AvKJW{-r6CS_g>zHNB2(mIi!Cd{0Vg zQ}+G9o>cw1V4Aw)VxYAgax`sz3K?)5evp&|yQAi^xCuGbCojXnLdxeXLw24)aTH~4 ziL0rNU4=5NM7|5h0jdY^a3{kuo~WsD>VC^&dJ7^bbsW-UDf-SBT8MU`z$jB&&GV() zq(woz4G|#-8K|@O~R3lB4pdYt-z2%ut=($?KCG|A)bTk!4B_Z)&bbrEv%thN0sw{H1$A@ zDveR6!vg~d%Hz2d7+?pQX=XY&cD6?NdSj;j8xc86fsw=Ib6ZWMRck6(1fM$`#^NhA4A($eVls554I$=Ddd?yosS0=c;wqiIj1k_?mT{oyqN58wt-Gdc$dkmZoGPuBK)z@$VgIgpC`Pt-*qF|MZdIrc2)^(Xx28@)VE8K~dhkxOuC$fojs$nwPV`hTUSd9dn6q9zCRash)D z%Kf0hm%;!J{cfO2g9x&zEf??trE2-p3KRY~(zJ`rY#w$=ipxq&J|)AFDOOCD-mxZ7 z?TYsGKg&-js<6KhXHD{qH^V%t+wBoeJRg2SpHM7yTKQ5z)OsS1%2c2)8|niUx~*Kn zY7JgVU~mLB1}q8ckW6s61JIocGhd))yK-IMEk+?93c_i*01&l7ZxVqyyVUv$Hxfhq z3aQm}0qBFa7vJPptJ%xtDPI{t%hWX7fmt>rT;8IFq4|6CAQ=rw9`)Ws&jfi=>0u=r z38U#P-I{|UX^;JOx_~#Jv_|uoIgaPUQkCBa8`lC1RhktK{SpeJ)&fL+)G&K^y$qGs zatC;3v#6_1oN-6%2@+!CZ(i8~g@M8WsER}~075nb04M-#-aJ9UFw3s|LpIVoFedzA zK$b(Tup=jx17Z>T`T$7gounQi@Jf0|9W(*7O+`CBtOKZ-KQ15%sMf}6Pf87-h!x8*I6rDA+_ivD(_FS<$Ier{=V%a*t^10QLqoKLwX zw9w&bx|c-bXv5(xGyuZ;3N_*K!<`>2kbqo~HbuI~S0bTus{5ueb!=T{IogrIgLKAGxT+PTr1(0Ae!*AQE{L5e7fOaBPYca)B?rSqDjgTia-o+X?&3E@Of>?6AbSs_YZki*zyq3=i>(oxx&)^bZ$MR%11I&((DZD-^zyDZ{b^!9^`hkV_uf&_|T9 z+602YG|sR|WCOBa?tr-)tpN`eO(oTdOIn3S2Hga{;aq^YNv!w0Io;W!6c)!{2&A{b z77zxz!OBRxuPnkVIN-2Da`Svi`oLjB2|wgLQqA}ZI8E(GI#^#8kd6d)cm|*oKfokh zc6U%nL%T?{>=5{}1&jlt5lc6YCJhRPu#};kqM$VL>*Wp_d{8!y{YWPd+3u8tfhb&; zwol9CcAc&QG%Z4WnLQ3bPRCASx2!~VGS)uQ8z6?NR~xV318pHV;6TGqc=$6u8+ECk z{ZF?j0zxBv0c_dWmJ5&|9X!*>N=H*$6J#`7O(*?u0Ua;si7FKg1Ni}}`G`bn=%ett z%LVMi61x0;eZ0*P1FMI(DpU=B%WFK*vEOig^nW?u_Gk4!loCGsz1#s%7T1bjyQ8d_ z=!@Wl${Lf?DKq>8ZfEG3+1$2eC!97ubD-UzR%E(BF=1dY%&`>}l6tt`>~0*l%N_WO z2?x}u`bAS8>QT4x7~T61{| zKqPVrc_g59+`TqK?XFj0LLk*z?f}!SSyqzi+c9Qj*JA6VUpuRY3pf=0WHCT!5s#5D zk7=2G+80T!He5i+9%jk1lkb~+g*Xzxj$k3e{aQ8@9B1_ivp_hK)*bmwN}x*NRb4KC zxtA8HI44&{tTX^JlcXXmSIF=aeDpNRfFpmFc^^Ux+QgmFm^tHy3q0OL_mQ)41@d@O zgotkpUTqHNlH{3f2D&c0!)B(+6jekIA$cFb%)7tb0ac`*?nuOx;WP?HwwuAR5H8DW zjPlj~+X?wth12}ee-TmTklW@x4`rCyoY z9$k}6oN|87a0ewSt7{!<0vJLfb${ZgZ_SUtakD4KK|fK*y%O}C-f zaBk&)$Mmot*mZEs)vC%H(gPvi@FylkC#A1?xPykLz@Yi8{TWl^GRbAffoC9%mJ1lH z42VlhxH}zO0=Vr^SJ^30qrNRHMT{-&*VA>JmloD zeV9(HL|_g4Ef52Mf&^WDg4bV$s`x}g0<{7PU#IZ!A1b<*x1dJX?UJ!UQp&ndV+R4! zvgu%l{Xk8MVka5T@J-OgUP4Skke9i!(g=7p>S9k6d$`u1h~ua8sJE4^Ry zAZ=>d53D#K7RZGILv=z-MonV$fw5n3g<&a+R%U9;+es?w&MgVZqRNrvaxp{^Hsg#9^8zNe;7|3)ycd3UR;EzGQ(YF5SHDfkcomYWNB2LA^>!6k(8x4I@lT z1E9-7P%Ibl#%M^8gsNSG_V~%9!~jCN)-u2W-_8#Q&BqceO$=&kD2H>6r-n3R_z7aV zQ~pB)wFr^U*tYb>Sbbi-WB4Ky)*zQk{#Mw=h?B4ehXkE{gJn6K_b5$HtJ_`-Qf=CB99>92tc_X*!0YAn}LU=@(9AUF8*oSh22N{9 zTg2r1<`$;qFGX)zNB~T*hw`crf##d>O2R`DPK)Oq-h#YNBWQdJA`6I@B^gGdDmUco zEL53e&5uyg8Rjf_)4d2EpwW}jQt33@0mV2+6muP!AwQgs0bPPT_9TH}!v)~-_S-KD#Ha#6N2U@9s=n5n*Dg7s!c&4;u87Rgmaks2j2;XP~XboXq01M zF#>M70~;Yc(2-8+s)0_at%t@OI~b-5;AOJTlQF54NlcrFLHHXC*vvX8 zrU(NAiZ6VA4cM8ab@ovobNXmV6i~7yEiB!0A%0#Ak_rox-5B2`U>H1rtx+q0b^$8< zyU(8iiL?{Y_Gj~;uoJdM$%HCk7%a`?d5uH?g<&^=150ZgRUG>Fh$hu4FUqhhyMP5i zqKoQs9Op~4obn439b1i0--1Lk2sD*u30F2j2dau6w}C7(&ER><;{xeygVG#F7<6w^ z|Ef%3y+$1_cVMCqh69Qyo#!r07Z4+SC|YM!iqd#)ms# zFed5+WFZCAXVU-mkk+E3hLeA}0FJd@jm+7j-zR*e_k z>!*XNGJLrM{f03pFc8oa?Qzpc;QGg3H2{)VO&5AMGKp?M+vi{z)Pe4RPeH>)@GaDt{lT7!uW-6z+lJ271yt37rtAR}wz@st z3Rx624@hdLRP|aJ4|4LoK%=>y<)ZpGQABbDmS>>h)$~viRjKJ(nR_(BPU+VY42OrP z+il*ZbB)flnfI(=)T(wj^5iBm6!*Zvs?g9fulzG_eXh~?DC{JK4u1+=QWbsmX1uW0FBk5a2*uP>cp4jFInR` zBO~YVun#}M->2u2OU$0DQ$X6<-ESrQVrrHxO=;jY_#35~ zs_?W>Iamm4RE_uLVBuKrAhR)8`mm!WSCZk-NNOIJpFld#C)$j1re&^WXq>(u0S^-x zBvp}(I^{mq9m5jP) zE-xSg94RLqOjz}_+yTtQ4j%A=UY3A^fIHivtE+CsoVFtrdX+t2J#HczFm89Mp zaHMPgdJ+h}2NDbnlPm&h6vl~~3!?U1?m(>uE{ysHdb#B%s1CGD z_GI4>IhR;yq9%xzUnYuRc#X^g3Ib&bOUwr;MaR95+s{g!wOpVfYj$82l|!n$c%?or zzEKj>N-Qj*gzyHeSMcdty;S2ow0|GZ-2e&I;A9gp zPbK??Ja0%gp|JJ^j8dw|^9#Vwv2xG@-w_>{7!RQupdh`tr!d?BE`|=J1Q@3*0=Os_ z;Ci_@1h>Pc3O|wFNPfj%s?KaGb0P?aOa0*M@EQp;&9R`d1>T%k72{=PsO24|dmcV# z#Sq84K^Vo(0SwGh;qA=RVJ62Qbmb#V?rap2?MS8!6ayfDZPl_7g$>_A$B8o?cw;fE z^8Ay8RhW>IP3JMZ#wG}XV4|NfT!N}0PyjJz2$Oz>l}PHGBQ604BqC(q0Sk*MWk^`i za0i+t$C7WjuGQwymyEVyNI@VE=Yr;6r|UE@a<7L^!Oj|`7Zh+rB{kduQKbsMnVIlN zXAJB_Bmxo?arw18#L`SNbXm;~RrRIb3Hzyw;o@I@f*TbfLx2MQ5~?KfPZ|kK1ouqj zH~a)Ths10uT+7+^N{r!mIND|03^|%)btcovG;*qVi}*E}FmyHA5G~j+me&P}i-+G~ zs3bEXc4WKI(1a>FE|;I6&9;6tik~D*Wt}-~%g9!H4)Otr!zTd6H;gc|v&xZxsE}Vc zqf;mjcVM`j2n`f7`aE3F_X!a-gc8;|BsdZUO0nd>FQdxm=TvgWzL1unCw!yB9T?OA zg(fp6tVB7hF=+Uyt-TQ&)pCKF95sRMM2TA7RSdjlL#Z(BiSnsUj}a-%zW#4+Ly=47 zuPK#>EK!h$j>S1Dw9v)|h0^?pLrt)1IW1e7IbEzoYBGL_Oh`qUzJroLIQYZi8Tj=0 zpKcbA$UH(%;I>m5oC4k(AkmCSXu1NxlX{#hL{yQxL<0=$n>@Xy3AiKp56Az@V~SzG+d6Dy5;+1!SRo zt0w5{ur2=ACLLXgXM>#5Te} z@t@!e2r9ZC1Vmz{JW=@)IW65gF=BB*W<%+F=@J2fx)!xg^1h{aHld81sd?#mHp@ww zZg>AMja2JAOqA81DY4~Xl7hi8lHco`&${$6EPZ3tJ;E>?-KB&CF?W?4nAFZeHM|9< z0U4j+SiD?~9&}i%ezBmqih-oT7GpSLx=OpE$&(Jv4n&2aeyHsT z&-qalm^O52@2?8?dG36hUL*YTt{gH(L#5D8M(62qfNI}t z55sFT0aePq7!m`&n+|3OqkF>g$l1CtUt@D@?|N5V4tuEQXc6aC6~WFmJKTYewYYKS zK6Mtq0BH}(rn%KV)S*(v!=})4K1FWJM;=-#(#pG zu&5wY(;fJ|q85!2HZG6Umq^giH%Juq?_gVJ8uA4Z0-5zjut4a`r3(+WnV28>y4-<+ zlv5r%2p-41pK%}=z+nnzwG3}TcL@Noo4tubkz`PHlZr$nhNEV<06mfF#&D(RV?$u& zKTt-JF_W1M`N~&5IGgc}(GUg6v%%~Fh?l{dM`p~|cG36) zAoNZePDG8lag3^3ndNH)!_)WD;W^gTtI&POAdRTmxH_@n85mFv`!o#*J5!plX*v#U zxe&zPOV7kz8Fa#Lt!=~P)BY1WB3op$$ju+_fL~celYDLRG!rE4DrWrXq@lBdHI@t5 zmZ2ty>kri(oEodjo3UT#LPFj zD4aU4HSKdYfCW!1x&tYqX(IP7r&xlXnC85`T7cneRH|!uEL=&nG@6%hlvULcvaI0c z;TfnSK;p_}&@j}+hOErOIr};G)#U>6skEtrJS;~tLFhO+0tU5Y*kL~~OzO0$O7@aK z90!s-Ey{Msm!rL7@|oJ1QbvvAg- z`POqY0ojNxV3r&*Suy~R6a6o@Y+1_ep{avmVJXdZT4}I@RmnA%lL=joRFe9yTXeSZ zCBBfyd4rBds@LH)f=qmdg1P+ng&vaWIUf9Z-hpjH(Wb#-n`R`*R0rufI#m#NpyEZ` z2ZrMPw|!D-VjQsxCD%Fe=@sS64nN_Wwp5vQ6$;{{cTPxOh&_8(s1ErD(v)=;vbtTv z62g@#I&Ba#eidJz%WK4F6tTutTY7;uM^zvcgpnRoF#QCFA@NF>c(bW=4MjMr6afi? zugy74SoR>iUWf&^AI_UK;9S6$Jo?d-u8MrMC_@WkWl&T=zl=7fFNP_eOCzOCE z9wbh5)6T?N>eVb zRDA_J31sC`RjWPn-AWZ0zD7rh8VjHC+6ag6Fmn)OnnXQoS)Q*%okfKvFxDOrPs#Yq zrDs32J1;E{qp#-=b|P6<;7Fvj@`I1&~yR zb1?*(MWcUDH-Nu%R{9TzIx*F}pWVC!hl`TH8DZvps0u)2d5Bcw&T$ypuRI><4cbUB z7VWpqZh8im9o>CXFfE*zk#BDW+eD`}DIlaSKFFOlJsux*r?LdO!hB6P2~!y!qIcjs zR_ZsSO5@7qN))7KK)wDg577}IdBL)SX`{-bi#wS}kSQCMhe!m+A1p~myN(~ssY-im zJxPaI&c^;qz6aLel#&XRXRX_l4cc z+ZqxaO%gJTwB!>sMcEl(bw@04D~aWz(QFW_-~)E!H!^^R5NbHk6Vax^*N2tpefxBM zexiWXTN0`ohKs|bhacR9enKWBa2�N;ViT<*%|6$MIO&KIIXMBjJ$7OZ#j!rr3PA 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
q7YO=N1Xz06;9vI3!C( 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 $Oj07o==fWrt9Xk@njTpT+~Nz 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 i_F`A7Xm5;NSulMd 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�@D}LZy2k5@QuwFTl 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¥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
    ,
      , or
      . + +.list-group { + // No need to set list-style: none; since .list-group-item is block level + margin-bottom: 20px; + padding-left: 0; // reset padding because ul and ol +} + +// Individual list items +// +// Use on `li`s or `div`s within the `.list-group` parent. + +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + // Place the border on the list items and negative margin up for better styling + margin-bottom: -1px; + background-color: $list-group-bg; + border: 1px solid $list-group-border; + + // Round the first and last items + &:first-child { + @include border-top-radius($list-group-border-radius); + } + &:last-child { + margin-bottom: 0; + @include border-bottom-radius($list-group-border-radius); + } +} + +// Interactive list items +// +// Use anchor or button elements instead of `li`s or `div`s to create interactive items. +// Includes an extra `.active` modifier class for showing selected items. + +a.list-group-item, +button.list-group-item { + color: $list-group-link-color; + + .list-group-item-heading { + color: $list-group-link-heading-color; + } + + // Hover state + &:hover, + &:focus { + text-decoration: none; + color: $list-group-link-hover-color; + background-color: $list-group-hover-bg; + } +} + +button.list-group-item { + width: 100%; + text-align: left; +} + +.list-group-item { + // Disabled state + &.disabled, + &.disabled:hover, + &.disabled:focus { + background-color: $list-group-disabled-bg; + color: $list-group-disabled-color; + cursor: $cursor-disabled; + + // Force color to inherit for custom content + .list-group-item-heading { + color: inherit; + } + .list-group-item-text { + color: $list-group-disabled-text-color; + } + } + + // Active class on item itself, not parent + &.active, + &.active:hover, + &.active:focus { + z-index: 2; // Place active items above their siblings for proper border styling + color: $list-group-active-color; + background-color: $list-group-active-bg; + border-color: $list-group-active-border; + + // Force color to inherit for custom content + .list-group-item-heading, + .list-group-item-heading > small, + .list-group-item-heading > .small { + color: inherit; + } + .list-group-item-text { + color: $list-group-active-text-color; + } + } +} + +// Contextual variants +// +// Add modifier classes to change text and background color on individual items. +// Organizationally, this must come after the `:hover` states. + +@include list-group-item-variant(success, $state-success-bg, $state-success-text); +@include list-group-item-variant(info, $state-info-bg, $state-info-text); +@include list-group-item-variant(warning, $state-warning-bg, $state-warning-text); +@include list-group-item-variant(danger, $state-danger-bg, $state-danger-text); + +// Custom content options +// +// Extra classes for creating well-formatted content within `.list-group-item`s. + +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; +} + +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3; +} diff --git a/openecomp-ui/resources/scss/bootstrap/_media.scss b/openecomp-ui/resources/scss/bootstrap/_media.scss new file mode 100644 index 0000000000..b9a5663ee8 --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap/_media.scss @@ -0,0 +1,66 @@ +.media { + // Proper spacing between instances of .media + margin-top: 15px; + + &:first-child { + margin-top: 0; + } +} + +.media, +.media-body { + zoom: 1; + overflow: hidden; +} + +.media-body { + width: 10000px; +} + +.media-object { + display: block; + + // Fix collapse in webkit from max-width: 100% and display: table-cell. + &.img-thumbnail { + max-width: none; + } +} + +.media-right, +.media > .pull-right { + padding-left: 10px; +} + +.media-left, +.media > .pull-left { + padding-right: 10px; +} + +.media-left, +.media-right, +.media-body { + display: table-cell; + vertical-align: top; +} + +.media-middle { + vertical-align: middle; +} + +.media-bottom { + vertical-align: bottom; +} + +// Reset margins on headings for tighter default spacing +.media-heading { + margin-top: 0; + margin-bottom: 5px; +} + +// Media list variation +// +// Undo default ul/ol styles +.media-list { + padding-left: 0; + list-style: none; +} diff --git a/openecomp-ui/resources/scss/bootstrap/_mixins.scss b/openecomp-ui/resources/scss/bootstrap/_mixins.scss new file mode 100644 index 0000000000..62dfda69dc --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap/_mixins.scss @@ -0,0 +1,36 @@ +// Mixins +// -------------------------------------------------- +// Utilities +@import "mixins/hide-text"; +@import "mixins/opacity"; +@import "mixins/image"; +@import "mixins/labels"; +@import "mixins/reset-filter"; +@import "mixins/resize"; +@import "mixins/responsive-visibility"; +@import "mixins/size"; +@import "mixins/tab-focus"; +@import "mixins/reset-text"; +@import "mixins/text-emphasis"; +@import "mixins/text-overflow"; +@import "mixins/vendor-prefixes"; +// Components +@import "mixins/alerts"; +@import "mixins/buttons"; +@import "mixins/panels"; +@import "mixins/pagination"; +@import "mixins/list-group"; +@import "mixins/nav-divider"; +@import "mixins/forms"; +@import "mixins/progress-bar"; +@import "mixins/table-row"; +// Skins +@import "mixins/background-variant"; +@import "mixins/border-radius"; +@import "mixins/gradients"; +// Layout +@import "mixins/clearfix"; +@import "mixins/center-block"; +@import "mixins/nav-vertical-align"; +@import "mixins/grid-framework"; +@import "mixins/grid"; diff --git a/openecomp-ui/resources/scss/bootstrap/_modals.scss b/openecomp-ui/resources/scss/bootstrap/_modals.scss new file mode 100644 index 0000000000..e089e7bfae --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap/_modals.scss @@ -0,0 +1,162 @@ +// +// Modals +// -------------------------------------------------- + +// .modal-open - body class for killing the scroll +// .modal - container to scroll within +// .modal-dialog - positioning shell for the actual modal +// .modal-content - actual modal w/ bg and corners and shit + +// Kill the scroll on the body +.modal-open { + overflow: hidden; +} + +// Container that the modal scrolls within +.modal { + display: none; + overflow: hidden; + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: $zindex-modal; + -webkit-overflow-scrolling: touch; + + // Prevent Chrome on Windows from adding a focus outline. For details, see + // https://github.com/twbs/bootstrap/pull/10951. + outline: 0; + + // When fading in the modal, animate it to slide down + &.fade .modal-dialog { + @include translate(0, -25%); + @include transition-transform(0.3s ease-out); + } + &.in .modal-dialog { + @include translate(0, 0) + } +} + +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; +} + +// Shell div to position the modal with bottom padding +.modal-dialog { + position: relative; + width: auto; + margin: 10px; +} + +// Actual modal +.modal-content { + position: relative; + background-color: $modal-content-bg; + border: 1px solid $modal-content-fallback-border-color; //old browsers fallback (ie8 etc) + border: 1px solid $modal-content-border-color; + border-radius: $border-radius-large; + @include box-shadow(0 3px 9px rgba(0, 0, 0, .5)); + background-clip: padding-box; + // Remove focus outline from opened modal + outline: 0; +} + +// Modal background +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: $zindex-modal-background; + background-color: $modal-backdrop-bg; + // Fade for backdrop + &.fade { + @include opacity(0); + } + &.in { + @include opacity($modal-backdrop-opacity); + } +} + +// Modal header +// Top section of the modal w/ title and dismiss +.modal-header { + padding: $modal-title-padding; + border-bottom: 1px solid $modal-header-border-color; + min-height: ($modal-title-padding + $modal-title-line-height); +} + +// Close icon +.modal-header .close { + margin-top: -2px; +} + +// Title text within header +.modal-title { + margin: 0; + line-height: $modal-title-line-height; +} + +// Modal body +// Where all modal content resides (sibling of .modal-header and .modal-footer) +.modal-body { + position: relative; + padding: $modal-inner-padding; +} + +// Footer (for actions) +.modal-footer { + padding: $modal-inner-padding; + text-align: right; // right align buttons + border-top: 1px solid $modal-footer-border-color; + @include clearfix; // clear it in case folks use .pull-* classes on buttons + + // Properly space out buttons + .btn + .btn { + margin-left: 5px; + margin-bottom: 0; // account for input[type="submit"] which gets the bottom margin like all other inputs + } + // but override that for button groups + .btn-group .btn + .btn { + margin-left: -1px; + } + // and override it for block buttons as well + .btn-block + .btn-block { + margin-left: 0; + } +} + +// Measure scrollbar width for padding body during modal show/hide +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; +} + +// Scale up the modal +@media (min-width: $screen-sm-min) { + // Automatically set modal's width for larger viewports + .modal-dialog { + width: $modal-md; + margin: 30px auto; + } + .modal-content { + @include box-shadow(0 5px 15px rgba(0, 0, 0, .5)); + } + + // Modal sizes + .modal-sm { + width: $modal-sm; + } +} + +@media (min-width: $screen-md-min) { + .modal-lg { + width: $modal-lg; + } +} diff --git a/openecomp-ui/resources/scss/bootstrap/_navbar.scss b/openecomp-ui/resources/scss/bootstrap/_navbar.scss new file mode 100644 index 0000000000..af38fd9e97 --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap/_navbar.scss @@ -0,0 +1,650 @@ +// +// Navbars +// -------------------------------------------------- + +// Wrapper and base class +// +// Provide a static navbar from which we expand to create full-width, fixed, and +// other navbar variations. + +.navbar { + position: relative; + min-height: $navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode) + margin-bottom: $navbar-margin-bottom; + border: 1px solid transparent; + + // Prevent floats from breaking the navbar + @include clearfix; + + @media (min-width: $grid-float-breakpoint) { + border-radius: $navbar-border-radius; + } +} + +// Navbar heading +// +// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy +// styling of responsive aspects. + +.navbar-header { + @include clearfix; + + @media (min-width: $grid-float-breakpoint) { + float: left; + } +} + +// Navbar collapse (body) +// +// Group your navbar content into this for easy collapsing and expanding across +// various device sizes. By default, this content is collapsed when <768px, but +// will expand past that for a horizontal display. +// +// To start (on mobile devices) the navbar links, forms, and buttons are stacked +// vertically and include a `max-height` to overflow in case you have too much +// content for the user's viewport. + +.navbar-collapse { + overflow-x: visible; + padding-right: $navbar-padding-horizontal; + padding-left: $navbar-padding-horizontal; + border-top: 1px solid transparent; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); + @include clearfix; + -webkit-overflow-scrolling: touch; + + &.in { + overflow-y: auto; + } + + @media (min-width: $grid-float-breakpoint) { + width: auto; + border-top: 0; + box-shadow: none; + + &.collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; // Override default setting + overflow: visible !important; + } + + &.in { + overflow-y: visible; + } + + // Undo the collapse side padding for navbars with containers to ensure + // alignment of right-aligned contents. + .navbar-fixed-top &, + .navbar-static-top &, + .navbar-fixed-bottom & { + padding-left: 0; + padding-right: 0; + } + } +} + +.navbar-fixed-top, +.navbar-fixed-bottom { + .navbar-collapse { + max-height: $navbar-collapse-max-height; + + @media (max-device-width: $screen-xs-min) and (orientation: landscape) { + max-height: 200px; + } + } +} + +// Both navbar header and collapse +// +// When a container is present, change the behavior of the header and collapse. + +.container, +.container-fluid { + > .navbar-header, + > .navbar-collapse { + margin-right: -$navbar-padding-horizontal; + margin-left: -$navbar-padding-horizontal; + + @media (min-width: $grid-float-breakpoint) { + margin-right: 0; + margin-left: 0; + } + } +} + +// +// Navbar alignment options +// +// Display the navbar across the entirety of the page or fixed it to the top or +// bottom of the page. + +// Static top (unfixed, but 100% wide) navbar +.navbar-static-top { + z-index: $zindex-navbar; + border-width: 0 0 1px; + + @media (min-width: $grid-float-breakpoint) { + border-radius: 0; + } +} + +// Fix the top/bottom navbars when screen real estate supports it +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: $zindex-navbar-fixed; + + // Undo the rounded corners + @media (min-width: $grid-float-breakpoint) { + border-radius: 0; + } +} + +.navbar-fixed-top { + top: 0; + border-width: 0 0 1px; +} + +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; // override .navbar defaults + border-width: 1px 0 0; +} + +// Brand/project name + +.navbar-brand { + float: left; + padding: $navbar-padding-vertical $navbar-padding-horizontal; + font-size: $font-size-large; + line-height: $line-height-computed; + height: $navbar-height; + + &:hover, + &:focus { + text-decoration: none; + } + + > img { + display: block; + } + + @media (min-width: $grid-float-breakpoint) { + .navbar > .container &, + .navbar > .container-fluid & { + margin-left: -$navbar-padding-horizontal; + } + } +} + +// Navbar toggle +// +// Custom button for toggling the `.navbar-collapse`, powered by the collapse +// JavaScript plugin. + +.navbar-toggle { + position: relative; + float: right; + margin-right: $navbar-padding-horizontal; + padding: 9px 10px; + @include navbar-vertical-align(34px); + background-color: transparent; + background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 + border: 1px solid transparent; + border-radius: $border-radius-base; + + // We remove the `outline` here, but later compensate by attaching `:hover` + // styles to `:focus`. + &:focus { + outline: 0; + } + + // Bars + .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px; + } + .icon-bar + .icon-bar { + margin-top: 4px; + } + + @media (min-width: $grid-float-breakpoint) { + display: none; + } +} + +// Navbar nav links +// +// Builds on top of the `.nav` components with its own modifier class to make +// the nav the full height of the horizontal nav (above 768px). + +.navbar-nav { + margin: ($navbar-padding-vertical / 2) (-$navbar-padding-horizontal); + + > li > a { + padding-top: 10px; + padding-bottom: 10px; + line-height: $line-height-computed; + } + + @media (max-width: $grid-float-breakpoint-max) { + // Dropdowns get custom display when collapsed + .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + box-shadow: none; + > li > a, + .dropdown-header { + padding: 5px 15px 5px 25px; + } + > li > a { + line-height: $line-height-computed; + &:hover, + &:focus { + background-image: none; + } + } + } + } + + // Uncollapse the nav + @media (min-width: $grid-float-breakpoint) { + float: left; + margin: 0; + + > li { + float: left; + > a { + padding-top: $navbar-padding-vertical; + padding-bottom: $navbar-padding-vertical; + } + } + } +} + +// Navbar form +// +// Extension of the `.form-inline` with some extra flavor for optimum display in +// our navbars. + +.navbar-form { + margin-left: -$navbar-padding-horizontal; + margin-right: -$navbar-padding-horizontal; + padding: 10px $navbar-padding-horizontal; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + $shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); + @include box-shadow($shadow); + + // Mixin behavior for optimum display + @include form-inline; + + .form-group { + @media (max-width: $grid-float-breakpoint-max) { + margin-bottom: 5px; + + &:last-child { + margin-bottom: 0; + } + } + } + + // Vertically center in expanded, horizontal navbar + @include navbar-vertical-align($input-height-base); + + // Undo 100% width for pull classes + @media (min-width: $grid-float-breakpoint) { + width: auto; + border: 0; + margin-left: 0; + margin-right: 0; + padding-top: 0; + padding-bottom: 0; + @include box-shadow(none); + } +} + +// Dropdown menus + +// Menu position and menu carets +.navbar-nav > li > .dropdown-menu { + margin-top: 0; + @include border-top-radius(0); +} + +// Menu position and menu caret support for dropups via extra dropup class +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + margin-bottom: 0; + @include border-top-radius($navbar-border-radius); + @include border-bottom-radius(0); +} + +// Buttons in navbars +// +// Vertically center a button within a navbar (when *not* in a form). + +.navbar-btn { + @include navbar-vertical-align($input-height-base); + + &.btn-sm { + @include navbar-vertical-align($input-height-small); + } + &.btn-xs { + @include navbar-vertical-align(22); + } +} + +// Text in navbars +// +// Add a class to make any element properly align itself vertically within the navbars. + +.navbar-text { + @include navbar-vertical-align($line-height-computed); + + @media (min-width: $grid-float-breakpoint) { + float: left; + margin-left: $navbar-padding-horizontal; + margin-right: $navbar-padding-horizontal; + } +} + +// Component alignment +// +// Repurpose the pull utilities as their own navbar utilities to avoid specificity +// issues with parents and chaining. Only do this when the navbar is uncollapsed +// though so that navbar contents properly stack and align in mobile. +// +// Declared after the navbar components to ensure more specificity on the margins. + +@media (min-width: $grid-float-breakpoint) { + .navbar-left { + float: left !important; + } + .navbar-right { + float: right !important; + margin-right: -$navbar-padding-horizontal; + + ~ .navbar-right { + margin-right: 0; + } + } +} + +// Alternate navbars +// -------------------------------------------------- + +// Default navbar +.navbar-default { + background-color: $navbar-default-bg; + border-color: $navbar-default-border; + + .navbar-brand { + color: $navbar-default-brand-color; + &:hover, + &:focus { + color: $navbar-default-brand-hover-color; + background-color: $navbar-default-brand-hover-bg; + } + } + + .navbar-text { + color: $navbar-default-color; + } + + .navbar-nav { + > li > a { + color: $navbar-default-link-color; + + &:hover, + &:focus { + color: $navbar-default-link-hover-color; + background-color: $navbar-default-link-hover-bg; + } + } + > .active > a { + &, + &:hover, + &:focus { + color: $navbar-default-link-active-color; + background-color: $navbar-default-link-active-bg; + } + } + > .disabled > a { + &, + &:hover, + &:focus { + color: $navbar-default-link-disabled-color; + background-color: $navbar-default-link-disabled-bg; + } + } + } + + .navbar-toggle { + border-color: $navbar-default-toggle-border-color; + &:hover, + &:focus { + background-color: $navbar-default-toggle-hover-bg; + } + .icon-bar { + background-color: $navbar-default-toggle-icon-bar-bg; + } + } + + .navbar-collapse, + .navbar-form { + border-color: $navbar-default-border; + } + + // Dropdown menu items + .navbar-nav { + // Remove background color from open dropdown + > .open > a { + &, + &:hover, + &:focus { + background-color: $navbar-default-link-active-bg; + color: $navbar-default-link-active-color; + } + } + + @media (max-width: $grid-float-breakpoint-max) { + // Dropdowns get custom display when collapsed + .open .dropdown-menu { + > li > a { + color: $navbar-default-link-color; + &:hover, + &:focus { + color: $navbar-default-link-hover-color; + background-color: $navbar-default-link-hover-bg; + } + } + > .active > a { + &, + &:hover, + &:focus { + color: $navbar-default-link-active-color; + background-color: $navbar-default-link-active-bg; + } + } + > .disabled > a { + &, + &:hover, + &:focus { + color: $navbar-default-link-disabled-color; + background-color: $navbar-default-link-disabled-bg; + } + } + } + } + } + + // Links in navbars + // + // Add a class to ensure links outside the navbar nav are colored correctly. + + .navbar-link { + color: $navbar-default-link-color; + &:hover { + color: $navbar-default-link-hover-color; + } + } + + .btn-link { + color: $navbar-default-link-color; + &:hover, + &:focus { + color: $navbar-default-link-hover-color; + } + &[disabled], + fieldset[disabled] & { + &:hover, + &:focus { + color: $navbar-default-link-disabled-color; + } + } + } +} + +// Inverse navbar + +.navbar-inverse { + background-color: $navbar-inverse-bg; + border-color: $navbar-inverse-border; + + .navbar-brand { + color: $navbar-inverse-brand-color; + &:hover, + &:focus { + color: $navbar-inverse-brand-hover-color; + background-color: $navbar-inverse-brand-hover-bg; + } + } + + .navbar-text { + color: $navbar-inverse-color; + } + + .navbar-nav { + > li > a { + color: $navbar-inverse-link-color; + + &:hover, + &:focus { + color: $navbar-inverse-link-hover-color; + background-color: $navbar-inverse-link-hover-bg; + } + } + > .active > a { + &, + &:hover, + &:focus { + color: $navbar-inverse-link-active-color; + background-color: $navbar-inverse-link-active-bg; + } + } + > .disabled > a { + &, + &:hover, + &:focus { + color: $navbar-inverse-link-disabled-color; + background-color: $navbar-inverse-link-disabled-bg; + } + } + } + + // Darken the responsive nav toggle + .navbar-toggle { + border-color: $navbar-inverse-toggle-border-color; + &:hover, + &:focus { + background-color: $navbar-inverse-toggle-hover-bg; + } + .icon-bar { + background-color: $navbar-inverse-toggle-icon-bar-bg; + } + } + + .navbar-collapse, + .navbar-form { + border-color: darken($navbar-inverse-bg, 7%); + } + + // Dropdowns + .navbar-nav { + > .open > a { + &, + &:hover, + &:focus { + background-color: $navbar-inverse-link-active-bg; + color: $navbar-inverse-link-active-color; + } + } + + @media (max-width: $grid-float-breakpoint-max) { + // Dropdowns get custom display + .open .dropdown-menu { + > .dropdown-header { + border-color: $navbar-inverse-border; + } + .divider { + background-color: $navbar-inverse-border; + } + > li > a { + color: $navbar-inverse-link-color; + &:hover, + &:focus { + color: $navbar-inverse-link-hover-color; + background-color: $navbar-inverse-link-hover-bg; + } + } + > .active > a { + &, + &:hover, + &:focus { + color: $navbar-inverse-link-active-color; + background-color: $navbar-inverse-link-active-bg; + } + } + > .disabled > a { + &, + &:hover, + &:focus { + color: $navbar-inverse-link-disabled-color; + background-color: $navbar-inverse-link-disabled-bg; + } + } + } + } + } + + .navbar-link { + color: $navbar-inverse-link-color; + &:hover { + color: $navbar-inverse-link-hover-color; + } + } + + .btn-link { + color: $navbar-inverse-link-color; + &:hover, + &:focus { + color: $navbar-inverse-link-hover-color; + } + &[disabled], + fieldset[disabled] & { + &:hover, + &:focus { + color: $navbar-inverse-link-disabled-color; + } + } + } +} diff --git a/openecomp-ui/resources/scss/bootstrap/_navs.scss b/openecomp-ui/resources/scss/bootstrap/_navs.scss new file mode 100644 index 0000000000..30a609851b --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap/_navs.scss @@ -0,0 +1,235 @@ +// +// Navs +// -------------------------------------------------- + +// Base class +// -------------------------------------------------- + +.nav { + margin-bottom: 0; + padding-left: 0; // Override default ul/ol + list-style: none; + @include clearfix; + + > li { + position: relative; + display: block; + + > a { + position: relative; + display: block; + padding: $nav-link-padding; + &:hover, + &:focus { + text-decoration: none; + background-color: $nav-link-hover-bg; + } + } + + // Disabled state sets text to gray and nukes hover/tab effects + &.disabled > a { + color: $nav-disabled-link-color; + + &:hover, + &:focus { + color: $nav-disabled-link-hover-color; + text-decoration: none; + background-color: transparent; + cursor: $cursor-disabled; + } + } + } + + // Open dropdowns + .open > a { + &, + &:hover, + &:focus { + background-color: $nav-link-hover-bg; + border-color: $link-color; + } + } + + // Nav dividers (deprecated with v3.0.1) + // + // This should have been removed in v3 with the dropping of `.nav-list`, but + // we missed it. We don't currently support this anywhere, but in the interest + // of maintaining backward compatibility in case you use it, it's deprecated. + .nav-divider { + @include nav-divider; + } + + // Prevent IE8 from misplacing imgs + // + // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989 + > li > a > img { + max-width: none; + } +} + +// Tabs +// ------------------------- + +// Give the tabs something to sit on +.nav-tabs { + border-bottom: 1px solid $nav-tabs-border-color; + > li { + float: left; + // Make the list-items overlay the bottom border + margin-bottom: -1px; + + // Actual tabs (as links) + > a { + margin-right: 2px; + line-height: $line-height-base; + border: 1px solid transparent; + border-radius: $border-radius-base $border-radius-base 0 0; + &:hover { + border-color: $nav-tabs-link-hover-border-color $nav-tabs-link-hover-border-color $nav-tabs-border-color; + } + } + + // Active state, and its :hover to override normal :hover + &.active > a { + &, + &:hover, + &:focus { + color: $nav-tabs-active-link-hover-color; + background-color: $nav-tabs-active-link-hover-bg; + border: 1px solid $nav-tabs-active-link-hover-border-color; + border-bottom-color: transparent; + cursor: default; + } + } + } + // pulling this in mainly for less shorthand + &.nav-justified { + @extend .nav-justified; + @extend .nav-tabs-justified; + } +} + +// Pills +// ------------------------- +.nav-pills { + > li { + float: left; + + // Links rendered as pills + > a { + border-radius: $nav-pills-border-radius; + } + + li { + margin-left: 2px; + } + + // Active state + &.active > a { + &, + &:hover, + &:focus { + color: $nav-pills-active-link-hover-color; + background-color: $nav-pills-active-link-hover-bg; + } + } + } +} + +// Stacked pills +.nav-stacked { + > li { + float: none; + + li { + margin-top: 2px; + margin-left: 0; // no need for this gap between nav items + } + } +} + +// Nav variations +// -------------------------------------------------- + +// Justified nav links +// ------------------------- + +.nav-justified { + width: 100%; + + > li { + float: none; + > a { + text-align: center; + margin-bottom: 5px; + } + } + + > .dropdown .dropdown-menu { + top: auto; + left: auto; + } + + @media (min-width: $screen-sm-min) { + > li { + display: table-cell; + width: 1%; + > a { + margin-bottom: 0; + } + } + } +} + +// Move borders to anchors instead of bottom of list +// +// Mixin for adding on top the shared `.nav-justified` styles for our tabs +.nav-tabs-justified { + border-bottom: 0; + + > li > a { + // Override margin from .nav-tabs + margin-right: 0; + border-radius: $border-radius-base; + } + + > .active > a, + > .active > a:hover, + > .active > a:focus { + border: 1px solid $nav-tabs-justified-link-border-color; + } + + @media (min-width: $screen-sm-min) { + > li > a { + border-bottom: 1px solid $nav-tabs-justified-link-border-color; + border-radius: $border-radius-base $border-radius-base 0 0; + } + > .active > a, + > .active > a:hover, + > .active > a:focus { + border-bottom-color: $nav-tabs-justified-active-link-border-color; + } + } +} + +// Tabbable tabs +// ------------------------- + +// Hide tabbable panes to start, show them when `.active` +.tab-content { + > .tab-pane { + display: none; + } + > .active { + display: block; + } +} + +// Dropdowns +// ------------------------- + +// Specific dropdowns +.nav-tabs .dropdown-menu { + // make dropdown border overlap tab border + margin-top: -1px; + // Remove the top rounded corners here since there is a hard edge above the menu + @include border-top-radius(0); +} diff --git a/openecomp-ui/resources/scss/bootstrap/_normalize.scss b/openecomp-ui/resources/scss/bootstrap/_normalize.scss new file mode 100644 index 0000000000..9dddf73ad2 --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap/_normalize.scss @@ -0,0 +1,424 @@ +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ + +// +// 1. Set default font family to sans-serif. +// 2. Prevent iOS and IE text size adjust after device orientation change, +// without disabling user zoom. +// + +html { + font-family: sans-serif; // 1 + -ms-text-size-adjust: 100%; // 2 + -webkit-text-size-adjust: 100%; // 2 +} + +// +// Remove default margin. +// + +body { + margin: 0; +} + +// HTML5 display definitions +// ========================================================================== + +// +// Correct `block` display not defined for any HTML5 element in IE 8/9. +// Correct `block` display not defined for `details` or `summary` in IE 10/11 +// and Firefox. +// Correct `block` display not defined for `main` in IE 11. +// + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} + +// +// 1. Correct `inline-block` display not defined in IE 8/9. +// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. +// + +audio, +canvas, +progress, +video { + display: inline-block; // 1 + vertical-align: baseline; // 2 +} + +// +// Prevent modern browsers from displaying `audio` without controls. +// Remove excess height in iOS 5 devices. +// + +audio:not([controls]) { + display: none; + height: 0; +} + +// +// Address `[hidden]` styling not present in IE 8/9/10. +// Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22. +// + +[hidden], +template { + display: none; +} + +// Links +// ========================================================================== + +// +// Remove the gray background color from active links in IE 10. +// + +a { + background-color: transparent; +} + +// +// Improve readability of focused elements when they are also in an +// active/hover state. +// + +a:active, +a:hover { + outline: 0; +} + +// Text-level semantics +// ========================================================================== + +// +// Address styling not present in IE 8/9/10/11, Safari, and Chrome. +// + +abbr[title] { + border-bottom: 1px dotted; +} + +// +// Address style set to `bolder` in Firefox 4+, Safari, and Chrome. +// + +b, +strong { + font-weight: bold; +} + +// +// Address styling not present in Safari and Chrome. +// + +dfn { + font-style: italic; +} + +// +// Address variable `h1` font-size and margin within `section` and `article` +// contexts in Firefox 4+, Safari, and Chrome. +// + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +// +// Address styling not present in IE 8/9. +// + +mark { + background: #ff0; + color: #000; +} + +// +// Address inconsistent and variable font size in all browsers. +// + +small { + font-size: 80%; +} + +// +// Prevent `sub` and `sup` affecting `line-height` in all browsers. +// + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +// Embedded content +// ========================================================================== + +// +// Remove border when inside `a` element in IE 8/9/10. +// + +img { + border: 0; +} + +// +// Correct overflow not hidden in IE 9/10/11. +// + +svg:not(:root) { + overflow: hidden; +} + +// Grouping content +// ========================================================================== + +// +// Address margin not present in IE 8/9 and Safari. +// + +figure { + margin: 1em 40px; +} + +// +// Address differences between Firefox and other browsers. +// + +hr { + box-sizing: content-box; + height: 0; +} + +// +// Contain overflow in all browsers. +// + +pre { + overflow: auto; +} + +// +// Address odd `em`-unit font size rendering in all browsers. +// + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} + +// Forms +// ========================================================================== + +// +// Known limitation: by default, Chrome and Safari on OS X allow very limited +// styling of `select`, unless a `border` property is set. +// + +// +// 1. Correct color not being inherited. +// Known issue: affects color of disabled elements. +// 2. Correct font properties not being inherited. +// 3. Address margins set differently in Firefox 4+, Safari, and Chrome. +// + +button, +input, +optgroup, +select, +textarea { + color: inherit; // 1 + font: inherit; // 2 + margin: 0; // 3 +} + +// +// Address `overflow` set to `hidden` in IE 8/9/10/11. +// + +button { + overflow: visible; +} + +// +// Address inconsistent `text-transform` inheritance for `button` and `select`. +// All other form control elements do not inherit `text-transform` values. +// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. +// Correct `select` style inheritance in Firefox. +// + +button, +select { + text-transform: none; +} + +// +// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` +// and `video` controls. +// 2. Correct inability to style clickable `input` types in iOS. +// 3. Improve usability and consistency of cursor style between image-type +// `input` and others. +// + +button, +html input[type="button"], // 1 +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; // 2 + cursor: pointer; // 3 +} + +// +// Re-set default cursor for disabled elements. +// + +button[disabled], +html input[disabled] { + cursor: default; +} + +// +// Remove inner padding and border in Firefox 4+. +// + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +// +// Address Firefox 4+ setting `line-height` on `input` using `!important` in +// the UA stylesheet. +// + +input { + line-height: normal; +} + +// +// It's recommended that you don't attempt to style these elements. +// Firefox's implementation doesn't respect box-sizing, padding, or width. +// +// 1. Address box sizing set to `content-box` in IE 8/9/10. +// 2. Remove excess padding in IE 8/9/10. +// + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; // 1 + padding: 0; // 2 +} + +// +// Fix the cursor style for Chrome's increment/decrement buttons. For certain +// `font-size` values of the `input`, it causes the cursor style of the +// decrement button to change from `default` to `text`. +// + +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +// +// 1. Address `appearance` set to `searchfield` in Safari and Chrome. +// 2. Address `box-sizing` set to `border-box` in Safari and Chrome. +// + +input[type="search"] { + -webkit-appearance: textfield; // 1 + box-sizing: content-box; //2 +} + +// +// Remove inner padding and search cancel button in Safari and Chrome on OS X. +// Safari (but not Chrome) clips the cancel button when the search input has +// padding (and `textfield` appearance). +// + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +// +// Define consistent border, margin, and padding. +// + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +// +// 1. Correct `color` not being inherited in IE 8/9/10/11. +// 2. Remove padding so people aren't caught out if they zero out fieldsets. +// + +legend { + border: 0; // 1 + padding: 0; // 2 +} + +// +// Remove default vertical scrollbar in IE 8/9/10/11. +// + +textarea { + overflow: auto; +} + +// +// Don't inherit the `font-weight` (applied by a rule above). +// NOTE: the default cannot safely be changed in Chrome and Safari on OS X. +// + +optgroup { + font-weight: bold; +} + +// Tables +// ========================================================================== + +// +// Remove most spacing between table cells. +// + +table { + border-collapse: collapse; + border-spacing: 0; +} + +td, +th { + padding: 0; +} diff --git a/openecomp-ui/resources/scss/bootstrap/_pager.scss b/openecomp-ui/resources/scss/bootstrap/_pager.scss new file mode 100644 index 0000000000..5799c9bd54 --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap/_pager.scss @@ -0,0 +1,53 @@ +// +// Pager pagination +// -------------------------------------------------- + +.pager { + padding-left: 0; + margin: $line-height-computed 0; + list-style: none; + text-align: center; + @include clearfix; + li { + display: inline; + > a, + > span { + display: inline-block; + padding: 5px 14px; + background-color: $pager-bg; + border: 1px solid $pager-border; + border-radius: $pager-border-radius; + } + + > a:hover, + > a:focus { + text-decoration: none; + background-color: $pager-hover-bg; + } + } + + .next { + > a, + > span { + float: right; + } + } + + .previous { + > a, + > span { + float: left; + } + } + + .disabled { + > a, + > a:hover, + > a:focus, + > span { + color: $pager-disabled-color; + background-color: $pager-bg; + cursor: $cursor-disabled; + } + } +} diff --git a/openecomp-ui/resources/scss/bootstrap/_pagination.scss b/openecomp-ui/resources/scss/bootstrap/_pagination.scss new file mode 100644 index 0000000000..882cee1f0d --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap/_pagination.scss @@ -0,0 +1,89 @@ +// +// Pagination (multiple pages) +// -------------------------------------------------- +.pagination { + display: inline-block; + padding-left: 0; + margin: $line-height-computed 0; + border-radius: $border-radius-base; + + > li { + display: inline; // Remove list-style and block-level defaults + > a, + > span { + position: relative; + float: left; // Collapse white-space + padding: $padding-base-vertical $padding-base-horizontal; + line-height: $line-height-base; + text-decoration: none; + color: $pagination-color; + background-color: $pagination-bg; + border: 1px solid $pagination-border; + margin-left: -1px; + } + &:first-child { + > a, + > span { + margin-left: 0; + @include border-left-radius($border-radius-base); + } + } + &:last-child { + > a, + > span { + @include border-right-radius($border-radius-base); + } + } + } + + > li > a, + > li > span { + &:hover, + &:focus { + z-index: 3; + color: $pagination-hover-color; + background-color: $pagination-hover-bg; + border-color: $pagination-hover-border; + } + } + + > .active > a, + > .active > span { + &, + &:hover, + &:focus { + z-index: 2; + color: $pagination-active-color; + background-color: $pagination-active-bg; + border-color: $pagination-active-border; + cursor: default; + } + } + + > .disabled { + > span, + > span:hover, + > span:focus, + > a, + > a:hover, + > a:focus { + color: $pagination-disabled-color; + background-color: $pagination-disabled-bg; + border-color: $pagination-disabled-border; + cursor: $cursor-disabled; + } + } +} + +// Sizing +// -------------------------------------------------- + +// Large +.pagination-lg { + @include pagination-size($padding-large-vertical, $padding-large-horizontal, $font-size-large, $line-height-large, $border-radius-large); +} + +// Small +.pagination-sm { + @include pagination-size($padding-small-vertical, $padding-small-horizontal, $font-size-small, $line-height-small, $border-radius-small); +} diff --git a/openecomp-ui/resources/scss/bootstrap/_panels.scss b/openecomp-ui/resources/scss/bootstrap/_panels.scss new file mode 100644 index 0000000000..f37b58147b --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap/_panels.scss @@ -0,0 +1,274 @@ +// +// Panels +// -------------------------------------------------- + +// Base class +.panel { + margin-bottom: $line-height-computed; + background-color: $panel-bg; + border: 1px solid transparent; + border-radius: $panel-border-radius; + @include box-shadow(0 1px 1px rgba(0, 0, 0, .05)); +} + +// Panel contents +.panel-body { + padding: $panel-body-padding; + @include clearfix; +} + +// Optional heading +.panel-heading { + padding: $panel-heading-padding; + border-bottom: 1px solid transparent; + @include border-top-radius(($panel-border-radius - 1)); + + > .dropdown .dropdown-toggle { + color: inherit; + } +} + +// Within heading, strip any `h*` tag of its default margins for spacing. +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: ceil(($font-size-base * 1.125)); + color: inherit; + + > a, + > small, + > .small, + > small > a, + > .small > a { + color: inherit; + } +} + +// Optional footer (stays gray in every modifier class) +.panel-footer { + padding: $panel-footer-padding; + background-color: $panel-footer-bg; + border-top: 1px solid $panel-inner-border; + @include border-bottom-radius(($panel-border-radius - 1)); +} + +// List groups in panels +// +// By default, space out list group content from panel headings to account for +// any kind of custom content between the two. + +.panel { + > .list-group, + > .panel-collapse > .list-group { + margin-bottom: 0; + + .list-group-item { + border-width: 1px 0; + border-radius: 0; + } + + // Add border top radius for first one + &:first-child { + .list-group-item:first-child { + border-top: 0; + @include border-top-radius(($panel-border-radius - 1)); + } + } + + // Add border bottom radius for last one + &:last-child { + .list-group-item:last-child { + border-bottom: 0; + @include border-bottom-radius(($panel-border-radius - 1)); + } + } + } + > .panel-heading + .panel-collapse > .list-group { + .list-group-item:first-child { + @include border-top-radius(0); + } + } +} + +// Collapse space between when there's no additional content. +.panel-heading + .list-group { + .list-group-item:first-child { + border-top-width: 0; + } +} + +.list-group + .panel-footer { + border-top-width: 0; +} + +// Tables in panels +// +// Place a non-bordered `.table` within a panel (not within a `.panel-body`) and +// watch it go full width. + +.panel { + > .table, + > .table-responsive > .table, + > .panel-collapse > .table { + margin-bottom: 0; + + caption { + padding-left: $panel-body-padding; + padding-right: $panel-body-padding; + } + } + // Add border top radius for first one + > .table:first-child, + > .table-responsive:first-child > .table:first-child { + @include border-top-radius(($panel-border-radius - 1)); + + > thead:first-child, + > tbody:first-child { + > tr:first-child { + border-top-left-radius: ($panel-border-radius - 1); + border-top-right-radius: ($panel-border-radius - 1); + + td:first-child, + th:first-child { + border-top-left-radius: ($panel-border-radius - 1); + } + td:last-child, + th:last-child { + border-top-right-radius: ($panel-border-radius - 1); + } + } + } + } + // Add border bottom radius for last one + > .table:last-child, + > .table-responsive:last-child > .table:last-child { + @include border-bottom-radius(($panel-border-radius - 1)); + + > tbody:last-child, + > tfoot:last-child { + > tr:last-child { + border-bottom-left-radius: ($panel-border-radius - 1); + border-bottom-right-radius: ($panel-border-radius - 1); + + td:first-child, + th:first-child { + border-bottom-left-radius: ($panel-border-radius - 1); + } + td:last-child, + th:last-child { + border-bottom-right-radius: ($panel-border-radius - 1); + } + } + } + } + > .panel-body + .table, + > .panel-body + .table-responsive, + > .table + .panel-body, + > .table-responsive + .panel-body { + border-top: 1px solid $table-border-color; + } + > .table > tbody:first-child > tr:first-child th, + > .table > tbody:first-child > tr:first-child td { + border-top: 0; + } + > .table-bordered, + > .table-responsive > .table-bordered { + border: 0; + > thead, + > tbody, + > tfoot { + > tr { + > th:first-child, + > td:first-child { + border-left: 0; + } + > th:last-child, + > td:last-child { + border-right: 0; + } + } + } + > thead, + > tbody { + > tr:first-child { + > td, + > th { + border-bottom: 0; + } + } + } + > tbody, + > tfoot { + > tr:last-child { + > td, + > th { + border-bottom: 0; + } + } + } + } + > .table-responsive { + border: 0; + margin-bottom: 0; + } +} + +// Collapsable panels (aka, accordion) +// +// Wrap a series of panels in `.panel-group` to turn them into an accordion with +// the help of our collapse JavaScript plugin. + +.panel-group { + margin-bottom: $line-height-computed; + + // Tighten up margin so it's only between panels + .panel { + margin-bottom: 0; + border-radius: $panel-border-radius; + + + .panel { + margin-top: 5px; + } + } + + .panel-heading { + border-bottom: 0; + + + .panel-collapse > .panel-body, + + .panel-collapse > .list-group { + border-top: 1px solid $panel-inner-border; + } + } + + .panel-footer { + border-top: 0; + + .panel-collapse .panel-body { + border-bottom: 1px solid $panel-inner-border; + } + } +} + +// Contextual variations +.panel-default { + @include panel-variant($panel-default-border, $panel-default-text, $panel-default-heading-bg, $panel-default-border); +} + +.panel-primary { + @include panel-variant($panel-primary-border, $panel-primary-text, $panel-primary-heading-bg, $panel-primary-border); +} + +.panel-success { + @include panel-variant($panel-success-border, $panel-success-text, $panel-success-heading-bg, $panel-success-border); +} + +.panel-info { + @include panel-variant($panel-info-border, $panel-info-text, $panel-info-heading-bg, $panel-info-border); +} + +.panel-warning { + @include panel-variant($panel-warning-border, $panel-warning-text, $panel-warning-heading-bg, $panel-warning-border); +} + +.panel-danger { + @include panel-variant($panel-danger-border, $panel-danger-text, $panel-danger-heading-bg, $panel-danger-border); +} diff --git a/openecomp-ui/resources/scss/bootstrap/_popovers.scss b/openecomp-ui/resources/scss/bootstrap/_popovers.scss new file mode 100644 index 0000000000..73d0bf27bf --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap/_popovers.scss @@ -0,0 +1,140 @@ +// +// Popovers +// -------------------------------------------------- + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: $zindex-popover; + display: none; + max-width: $popover-max-width; + padding: 1px; + // Our parent element can be arbitrary since popovers are by default inserted as a sibling of their target element. + // So reset our font and text properties to avoid inheriting weird values. + @include reset-text; + font-size: $font-size-base; + + background-color: $popover-bg; + background-clip: padding-box; + border: 1px solid $popover-fallback-border-color; + border: 1px solid $popover-border-color; + border-radius: $border-radius-large; + @include box-shadow(0 5px 10px rgba(0, 0, 0, .2)); + + // Offset the popover to account for the popover arrow + &.top { + margin-top: -$popover-arrow-width; + } + &.right { + margin-left: $popover-arrow-width; + } + &.bottom { + margin-top: $popover-arrow-width; + } + &.left { + margin-left: -$popover-arrow-width; + } +} + +.popover-title { + margin: 0; // reset heading margin + padding: 8px 14px; + font-size: $font-size-base; + background-color: $popover-title-bg; + border-bottom: 1px solid darken($popover-title-bg, 5%); + border-radius: ($border-radius-large - 1) ($border-radius-large - 1) 0 0; +} + +.popover-content { + padding: 9px 14px; +} + +// Arrows +// +// .arrow is outer, .arrow:after is inner + +.popover > .arrow { + &, + &:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; + } +} + +.popover > .arrow { + border-width: $popover-arrow-outer-width; +} + +.popover > .arrow:after { + border-width: $popover-arrow-width; + content: ""; +} + +.popover { + &.top > .arrow { + left: 50%; + margin-left: -$popover-arrow-outer-width; + border-bottom-width: 0; + border-top-color: $popover-arrow-outer-fallback-color; // IE8 fallback + border-top-color: $popover-arrow-outer-color; + bottom: -$popover-arrow-outer-width; + &:after { + content: " "; + bottom: 1px; + margin-left: -$popover-arrow-width; + border-bottom-width: 0; + border-top-color: $popover-arrow-color; + } + } + &.right > .arrow { + top: 50%; + left: -$popover-arrow-outer-width; + margin-top: -$popover-arrow-outer-width; + border-left-width: 0; + border-right-color: $popover-arrow-outer-fallback-color; // IE8 fallback + border-right-color: $popover-arrow-outer-color; + &:after { + content: " "; + left: 1px; + bottom: -$popover-arrow-width; + border-left-width: 0; + border-right-color: $popover-arrow-color; + } + } + &.bottom > .arrow { + left: 50%; + margin-left: -$popover-arrow-outer-width; + border-top-width: 0; + border-bottom-color: $popover-arrow-outer-fallback-color; // IE8 fallback + border-bottom-color: $popover-arrow-outer-color; + top: -$popover-arrow-outer-width; + &:after { + content: " "; + top: 1px; + margin-left: -$popover-arrow-width; + border-top-width: 0; + border-bottom-color: $popover-arrow-color; + } + } + + &.left > .arrow { + top: 50%; + right: -$popover-arrow-outer-width; + margin-top: -$popover-arrow-outer-width; + border-right-width: 0; + border-left-color: $popover-arrow-outer-fallback-color; // IE8 fallback + border-left-color: $popover-arrow-outer-color; + &:after { + content: " "; + right: 1px; + border-right-width: 0; + border-left-color: $popover-arrow-color; + bottom: -$popover-arrow-width; + } + } +} diff --git a/openecomp-ui/resources/scss/bootstrap/_print.scss b/openecomp-ui/resources/scss/bootstrap/_print.scss new file mode 100644 index 0000000000..fa05d1a007 --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap/_print.scss @@ -0,0 +1,101 @@ +/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ + +// ========================================================================== +// Print styles. +// Inlined to avoid the additional HTTP request: h5bp.com/r +// ========================================================================== + +@media print { + *, + *:before, + *:after { + background: transparent !important; + color: #000 !important; // Black prints faster: h5bp.com/s + box-shadow: none !important; + text-shadow: none !important; + } + + a, + a:visited { + text-decoration: underline; + } + + a[href]:after { + content: " (" attr(href) ")"; + } + + abbr[title]:after { + content: " (" attr(title) ")"; + } + + // Don't show links that are fragment identifiers, + // or use the `javascript:` pseudo protocol + a[href^="#"]:after, + a[href^="javascript:"]:after { + content: ""; + } + + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + + thead { + display: table-header-group; // h5bp.com/t + } + + tr, + img { + page-break-inside: avoid; + } + + img { + max-width: 100% !important; + } + + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + + h2, + h3 { + page-break-after: avoid; + } + + // Bootstrap specific changes start + + // Bootstrap components + .navbar { + display: none; + } + .btn, + .dropup > .btn { + > .caret { + border-top-color: #000 !important; + } + } + .label { + border: 1px solid #000; + } + + .table { + border-collapse: collapse !important; + + td, + th { + background-color: #fff !important; + } + } + .table-bordered { + th, + td { + border: 1px solid #ddd !important; + } + } + + // Bootstrap specific changes end +} diff --git a/openecomp-ui/resources/scss/bootstrap/_progress-bars.scss b/openecomp-ui/resources/scss/bootstrap/_progress-bars.scss new file mode 100644 index 0000000000..d99fc49dec --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap/_progress-bars.scss @@ -0,0 +1,92 @@ +// +// Progress bars +// -------------------------------------------------- + +// Bar animations +// ------------------------- + +// WebKit +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +// Spec and IE10+ +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +// Bar itself +// ------------------------- + +// Outer container +.progress { + overflow: hidden; + height: $line-height-computed; + margin-bottom: $line-height-computed; + background-color: $progress-bg; + border-radius: $progress-border-radius; + @include box-shadow(inset 0 1px 2px rgba(0, 0, 0, .1)); +} + +// Bar of progress +.progress-bar { + float: left; + width: 0%; + height: 100%; + font-size: $font-size-small; + line-height: $line-height-computed; + color: $progress-bar-color; + text-align: center; + background-color: $progress-bar-bg; + @include box-shadow(inset 0 -1px 0 rgba(0, 0, 0, .15)); + @include transition(width .6s ease); +} + +// Striped bars +// +// `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the +// `.progress-bar-striped` class, which you just add to an existing +// `.progress-bar`. +.progress-striped .progress-bar, +.progress-bar-striped { + @include gradient-striped; + background-size: 40px 40px; +} + +// Call animation for the active one +// +// `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the +// `.progress-bar.active` approach. +.progress.active .progress-bar, +.progress-bar.active { + @include animation(progress-bar-stripes 2s linear infinite); +} + +// Variations +// ------------------------- + +.progress-bar-success { + @include progress-bar-variant($progress-bar-success-bg); +} + +.progress-bar-info { + @include progress-bar-variant($progress-bar-info-bg); +} + +.progress-bar-warning { + @include progress-bar-variant($progress-bar-warning-bg); +} + +.progress-bar-danger { + @include progress-bar-variant($progress-bar-danger-bg); +} diff --git a/openecomp-ui/resources/scss/bootstrap/_responsive-embed.scss b/openecomp-ui/resources/scss/bootstrap/_responsive-embed.scss new file mode 100644 index 0000000000..282589f97c --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap/_responsive-embed.scss @@ -0,0 +1,35 @@ +// Embeds responsive +// +// Credit: Nicolas Gallagher and SUIT CSS. + +.embed-responsive { + position: relative; + display: block; + height: 0; + padding: 0; + overflow: hidden; + + .embed-responsive-item, + iframe, + embed, + object, + video { + position: absolute; + top: 0; + left: 0; + bottom: 0; + height: 100%; + width: 100%; + border: 0; + } +} + +// Modifier class for 16:9 aspect ratio +.embed-responsive-16by9 { + padding-bottom: 56.25%; +} + +// Modifier class for 4:3 aspect ratio +.embed-responsive-4by3 { + padding-bottom: 75%; +} diff --git a/openecomp-ui/resources/scss/bootstrap/_responsive-utilities.scss b/openecomp-ui/resources/scss/bootstrap/_responsive-utilities.scss new file mode 100644 index 0000000000..915d723599 --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap/_responsive-utilities.scss @@ -0,0 +1,191 @@ +// +// Responsive: Utility classes +// -------------------------------------------------- + +// IE10 in Windows (Phone) 8 +// +// Support for responsive views via media queries is kind of borked in IE10, for +// Surface/desktop in split view and for Windows Phone 8. This particular fix +// must be accompanied by a snippet of JavaScript to sniff the user agent and +// apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at +// our Getting Started page for more information on this bug. +// +// For more information, see the following: +// +// Issue: https://github.com/twbs/bootstrap/issues/10497 +// Docs: http://getbootstrap.com/getting-started/#support-ie10-width +// Source: http://timkadlec.com/2013/01/windows-phone-8-and-device-width/ +// Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/ + +@at-root { + @-ms-viewport { + width: device-width; + } +} + +// Visibility utilities +// Note: Deprecated .visible-xs, .visible-sm, .visible-md, and .visible-lg as of v3.2.0 + +@include responsive-invisibility('.visible-xs'); +@include responsive-invisibility('.visible-sm'); +@include responsive-invisibility('.visible-md'); +@include responsive-invisibility('.visible-lg'); + +.visible-xs-block, +.visible-xs-inline, +.visible-xs-inline-block, +.visible-sm-block, +.visible-sm-inline, +.visible-sm-inline-block, +.visible-md-block, +.visible-md-inline, +.visible-md-inline-block, +.visible-lg-block, +.visible-lg-inline, +.visible-lg-inline-block { + display: none !important; +} + +@media (max-width: $screen-xs-max) { + @include responsive-visibility('.visible-xs'); +} + +.visible-xs-block { + @media (max-width: $screen-xs-max) { + display: block !important; + } +} + +.visible-xs-inline { + @media (max-width: $screen-xs-max) { + display: inline !important; + } +} + +.visible-xs-inline-block { + @media (max-width: $screen-xs-max) { + display: inline-block !important; + } +} + +@media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) { + @include responsive-visibility('.visible-sm'); +} + +.visible-sm-block { + @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) { + display: block !important; + } +} + +.visible-sm-inline { + @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) { + display: inline !important; + } +} + +.visible-sm-inline-block { + @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) { + display: inline-block !important; + } +} + +@media (min-width: $screen-md-min) and (max-width: $screen-md-max) { + @include responsive-visibility('.visible-md'); +} + +.visible-md-block { + @media (min-width: $screen-md-min) and (max-width: $screen-md-max) { + display: block !important; + } +} + +.visible-md-inline { + @media (min-width: $screen-md-min) and (max-width: $screen-md-max) { + display: inline !important; + } +} + +.visible-md-inline-block { + @media (min-width: $screen-md-min) and (max-width: $screen-md-max) { + display: inline-block !important; + } +} + +@media (min-width: $screen-lg-min) { + @include responsive-visibility('.visible-lg'); +} + +.visible-lg-block { + @media (min-width: $screen-lg-min) { + display: block !important; + } +} + +.visible-lg-inline { + @media (min-width: $screen-lg-min) { + display: inline !important; + } +} + +.visible-lg-inline-block { + @media (min-width: $screen-lg-min) { + display: inline-block !important; + } +} + +@media (max-width: $screen-xs-max) { + @include responsive-invisibility('.hidden-xs'); +} + +@media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) { + @include responsive-invisibility('.hidden-sm'); +} + +@media (min-width: $screen-md-min) and (max-width: $screen-md-max) { + @include responsive-invisibility('.hidden-md'); +} + +@media (min-width: $screen-lg-min) { + @include responsive-invisibility('.hidden-lg'); +} + +// Print utilities +// +// Media queries are placed on the inside to be mixin-friendly. + +// Note: Deprecated .visible-print as of v3.2.0 + +@include responsive-invisibility('.visible-print'); + +@media print { + @include responsive-visibility('.visible-print'); +} + +.visible-print-block { + display: none !important; + + @media print { + display: block !important; + } +} + +.visible-print-inline { + display: none !important; + + @media print { + display: inline !important; + } +} + +.visible-print-inline-block { + display: none !important; + + @media print { + display: inline-block !important; + } +} + +@media print { + @include responsive-invisibility('.hidden-print'); +} diff --git a/openecomp-ui/resources/scss/bootstrap/_scaffolding.scss b/openecomp-ui/resources/scss/bootstrap/_scaffolding.scss new file mode 100644 index 0000000000..910afd55e5 --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap/_scaffolding.scss @@ -0,0 +1,154 @@ +// +// Scaffolding +// -------------------------------------------------- + +// Reset the box-sizing +// +// Heads up! This reset may cause conflicts with some third-party widgets. +// For recommendations on resolving such conflicts, see +// http://getbootstrap.com/getting-started/#third-box-sizing +* { + @include box-sizing(border-box); +} + +*:before, +*:after { + @include box-sizing(border-box); +} + +// Body reset + +html { + font-size: 10px; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +body { + font-family: $font-family-base; + font-size: $font-size-base; + line-height: $line-height-base; + color: $text-color; + background-color: $body-bg; +} + +// Reset fonts for relevant elements +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +// Links + +a { + color: $link-color; + text-decoration: none; + + &:hover, + &:focus { + color: $link-hover-color; + text-decoration: $link-hover-decoration; + } + + &:focus { + @include tab-focus; + } +} + +// Figures +// +// We reset this here because previously Normalize had no `figure` margins. This +// ensures we don't break anyone's use of the element. + +figure { + margin: 0; +} + +// Images + +img { + vertical-align: middle; +} + +// Responsive images (ensure images don't scale beyond their parents) +.img-responsive { + @include img-responsive; +} + +// Rounded corners +.img-rounded { + border-radius: $border-radius-large; +} + +// Image thumbnails +// +// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`. +.img-thumbnail { + padding: $thumbnail-padding; + line-height: $line-height-base; + background-color: $thumbnail-bg; + border: 1px solid $thumbnail-border; + border-radius: $thumbnail-border-radius; + @include transition(all .2s ease-in-out); + + // Keep them at most 100% wide + @include img-responsive(inline-block); +} + +// Perfect circle +.img-circle { + border-radius: 50%; // set radius in percents +} + +// Horizontal rules + +hr { + margin-top: $line-height-computed; + margin-bottom: $line-height-computed; + border: 0; + border-top: 1px solid $hr-border; +} + +// Only display content to screen readers +// +// See: http://a11yproject.com/posts/how-to-hide-content/ + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} + +// Use in conjunction with .sr-only to only display content when it's focused. +// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 +// Credit: HTML5 Boilerplate + +.sr-only-focusable { + &:active, + &:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; + } +} + +// iOS "clickable elements" fix for role="button" +// +// Fixes "clickability" issue (and more generally, the firing of events such as focus as well) +// for traditionally non-focusable elements with role="button" +// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile + +[role="button"] { + cursor: pointer; +} diff --git a/openecomp-ui/resources/scss/bootstrap/_tables.scss b/openecomp-ui/resources/scss/bootstrap/_tables.scss new file mode 100644 index 0000000000..39379abba2 --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap/_tables.scss @@ -0,0 +1,228 @@ +// +// Tables +// -------------------------------------------------- + +table { + background-color: $table-bg; +} + +caption { + padding-top: $table-cell-padding; + padding-bottom: $table-cell-padding; + color: $text-muted; + text-align: left; +} + +th { + text-align: left; +} + +// Baseline styles + +.table { + width: 100%; + max-width: 100%; + margin-bottom: $line-height-computed; + // Cells + > thead, + > tbody, + > tfoot { + > tr { + > th, + > td { + padding: $table-cell-padding; + line-height: $line-height-base; + vertical-align: top; + border-top: 1px solid $table-border-color; + } + } + } + // Bottom align for column headings + > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid $table-border-color; + } + // Remove top border from thead by default + > caption + thead, + > colgroup + thead, + > thead:first-child { + > tr:first-child { + > th, + > td { + border-top: 0; + } + } + } + // Account for multiple tbody instances + > tbody + tbody { + border-top: 2px solid $table-border-color; + } + + // Nesting + .table { + background-color: $body-bg; + } +} + +// Condensed table w/ half padding + +.table-condensed { + > thead, + > tbody, + > tfoot { + > tr { + > th, + > td { + padding: $table-condensed-cell-padding; + } + } + } +} + +// Bordered version +// +// Add borders all around the table and between all the columns. + +.table-bordered { + border: 1px solid $table-border-color; + > thead, + > tbody, + > tfoot { + > tr { + > th, + > td { + border: 1px solid $table-border-color; + } + } + } + > thead > tr { + > th, + > td { + border-bottom-width: 2px; + } + } +} + +// Zebra-striping +// +// Default zebra-stripe styles (alternating gray and transparent backgrounds) + +.table-striped { + > tbody > tr:nth-of-type(odd) { + background-color: $table-bg-accent; + } +} + +// Hover effect +// +// Placed here since it has to come after the potential zebra striping + +.table-hover { + > tbody > tr:hover { + background-color: $table-bg-hover; + } +} + +// Table cell sizing +// +// Reset default table behavior + +table col[class*="col-"] { + position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623) + float: none; + display: table-column; +} + +table { + td, + th { + &[class*="col-"] { + position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623) + float: none; + display: table-cell; + } + } +} + +// Table backgrounds +// +// Exact selectors below required to override `.table-striped` and prevent +// inheritance to nested tables. + +// Generate the contextual variants +@include table-row-variant('active', $table-bg-active); +@include table-row-variant('success', $state-success-bg); +@include table-row-variant('info', $state-info-bg); +@include table-row-variant('warning', $state-warning-bg); +@include table-row-variant('danger', $state-danger-bg); + +// Responsive tables +// +// Wrap your tables in `.table-responsive` and we'll make them mobile friendly +// by enabling horizontal scrolling. Only applies <768px. Everything above that +// will display normally. + +.table-responsive { + overflow-x: auto; + min-height: 0.01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837) + + @media screen and (max-width: $screen-xs-max) { + width: 100%; + margin-bottom: ($line-height-computed * 0.75); + overflow-y: hidden; + -ms-overflow-style: -ms-autohiding-scrollbar; + border: 1px solid $table-border-color; + + // Tighten up spacing + > .table { + margin-bottom: 0; + + // Ensure the content doesn't wrap + > thead, + > tbody, + > tfoot { + > tr { + > th, + > td { + white-space: nowrap; + } + } + } + } + + // Special overrides for the bordered tables + > .table-bordered { + border: 0; + + // Nuke the appropriate borders so that the parent can handle them + > thead, + > tbody, + > tfoot { + > tr { + > th:first-child, + > td:first-child { + border-left: 0; + } + > th:last-child, + > td:last-child { + border-right: 0; + } + } + } + + // Only nuke the last row's bottom-border in `tbody` and `tfoot` since + // chances are there will be only one `tr` in a `thead` and that would + // remove the border altogether. + > tbody, + > tfoot { + > tr:last-child { + > th, + > td { + border-bottom: 0; + } + } + } + + } + } +} diff --git a/openecomp-ui/resources/scss/bootstrap/_theme.scss b/openecomp-ui/resources/scss/bootstrap/_theme.scss new file mode 100644 index 0000000000..dfec418770 --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap/_theme.scss @@ -0,0 +1,344 @@ +/*! + * Bootstrap v3.3.5 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +// +// Load core variables and mixins +// -------------------------------------------------- +@import "variables"; +@import "mixins"; + +// +// Buttons +// -------------------------------------------------- + +// Common styles +.btn-default, +.btn-primary, +.btn-success, +.btn-info, +.btn-warning, +.btn-danger { + text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); + $shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); + @include box-shadow($shadow); + + // Reset the shadow + &:active, + &.active { + @include box-shadow(inset 0 3px 5px rgba(0, 0, 0, .125)); + } + + &.disabled, + &[disabled], + fieldset[disabled] & { + @include box-shadow(none); + } + + .badge { + text-shadow: none; + } +} + +// Mixin for generating new styles +@mixin btn-styles($btn-color: #555) { + @include gradient-vertical($start-color: $btn-color, $end-color: darken($btn-color, 12%)); + @include reset-filter; // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620 + background-repeat: repeat-x; + border-color: darken($btn-color, 14%); + + &:hover, + &:focus { + background-color: darken($btn-color, 12%); + background-position: 0 -15px; + } + + &:active, + &.active { + background-color: darken($btn-color, 12%); + border-color: darken($btn-color, 14%); + } + + &.disabled, + &[disabled], + fieldset[disabled] & { + &, + &:hover, + &:focus, + &.focus, + &:active, + &.active { + background-color: darken($btn-color, 12%); + background-image: none; + } + } +} + +// Common styles +.btn { + // Remove the gradient for the pressed/active state + &:active, + &.active { + background-image: none; + } +} + +// Apply the mixin to the buttons +.btn-default { + @include btn-styles($btn-default-bg); + text-shadow: 0 1px 0 #fff; + border-color: #ccc; +} + +.btn-primary { + @include btn-styles($btn-primary-bg); +} + +.btn-success { + @include btn-styles($btn-success-bg); +} + +.btn-info { + @include btn-styles($btn-info-bg); +} + +.btn-warning { + @include btn-styles($btn-warning-bg); +} + +.btn-danger { + @include btn-styles($btn-danger-bg); +} + +// +// Images +// -------------------------------------------------- + +.thumbnail, +.img-thumbnail { + @include box-shadow(0 1px 2px rgba(0, 0, 0, .075)); +} + +// +// Dropdowns +// -------------------------------------------------- + +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + @include gradient-vertical($start-color: $dropdown-link-hover-bg, $end-color: darken($dropdown-link-hover-bg, 5%)); + background-color: darken($dropdown-link-hover-bg, 5%); +} + +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + @include gradient-vertical($start-color: $dropdown-link-active-bg, $end-color: darken($dropdown-link-active-bg, 5%)); + background-color: darken($dropdown-link-active-bg, 5%); +} + +// +// Navbar +// -------------------------------------------------- + +// Default navbar +.navbar-default { + @include gradient-vertical($start-color: lighten($navbar-default-bg, 10%), $end-color: $navbar-default-bg); + @include reset-filter; // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered + border-radius: $navbar-border-radius; + $shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); + @include box-shadow($shadow); + + .navbar-nav > .open > a, + .navbar-nav > .active > a { + @include gradient-vertical($start-color: darken($navbar-default-link-active-bg, 5%), $end-color: darken($navbar-default-link-active-bg, 2%)); + @include box-shadow(inset 0 3px 9px rgba(0, 0, 0, .075)); + } +} + +.navbar-brand, +.navbar-nav > li > a { + text-shadow: 0 1px 0 rgba(255, 255, 255, .25); +} + +// Inverted navbar +.navbar-inverse { + @include gradient-vertical($start-color: lighten($navbar-inverse-bg, 10%), $end-color: $navbar-inverse-bg); + @include reset-filter; // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257 + border-radius: $navbar-border-radius; + .navbar-nav > .open > a, + .navbar-nav > .active > a { + @include gradient-vertical($start-color: $navbar-inverse-link-active-bg, $end-color: lighten($navbar-inverse-link-active-bg, 2.5%)); + @include box-shadow(inset 0 3px 9px rgba(0, 0, 0, .25)); + } + + .navbar-brand, + .navbar-nav > li > a { + text-shadow: 0 -1px 0 rgba(0, 0, 0, .25); + } +} + +// Undo rounded corners in static and fixed navbars +.navbar-static-top, +.navbar-fixed-top, +.navbar-fixed-bottom { + border-radius: 0; +} + +// Fix active state of dropdown items in collapsed mode +@media (max-width: $grid-float-breakpoint-max) { + .navbar .navbar-nav .open .dropdown-menu > .active > a { + &, + &:hover, + &:focus { + color: #fff; + @include gradient-vertical($start-color: $dropdown-link-active-bg, $end-color: darken($dropdown-link-active-bg, 5%)); + } + } +} + +// +// Alerts +// -------------------------------------------------- + +// Common styles +.alert { + text-shadow: 0 1px 0 rgba(255, 255, 255, .2); + $shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); + @include box-shadow($shadow); +} + +// Mixin for generating new styles +@mixin alert-styles($color) { + @include gradient-vertical($start-color: $color, $end-color: darken($color, 7.5%)); + border-color: darken($color, 15%); +} + +// Apply the mixin to the alerts +.alert-success { + @include alert-styles($alert-success-bg); +} + +.alert-info { + @include alert-styles($alert-info-bg); +} + +.alert-warning { + @include alert-styles($alert-warning-bg); +} + +.alert-danger { + @include alert-styles($alert-danger-bg); +} + +// +// Progress bars +// -------------------------------------------------- + +// Give the progress background some depth +.progress { + @include gradient-vertical($start-color: darken($progress-bg, 4%), $end-color: $progress-bg) +} + +// Mixin for generating new styles +@mixin progress-bar-styles($color) { + @include gradient-vertical($start-color: $color, $end-color: darken($color, 10%)); +} + +// Apply the mixin to the progress bars +.progress-bar { + @include progress-bar-styles($progress-bar-bg); +} + +.progress-bar-success { + @include progress-bar-styles($progress-bar-success-bg); +} + +.progress-bar-info { + @include progress-bar-styles($progress-bar-info-bg); +} + +.progress-bar-warning { + @include progress-bar-styles($progress-bar-warning-bg); +} + +.progress-bar-danger { + @include progress-bar-styles($progress-bar-danger-bg); +} + +// Reset the striped class because our mixins don't do multiple gradients and +// the above custom styles override the new `.progress-bar-striped` in v3.2.0. +.progress-bar-striped { + @include gradient-striped; +} + +// +// List groups +// -------------------------------------------------- + +.list-group { + border-radius: $border-radius-base; + @include box-shadow(0 1px 2px rgba(0, 0, 0, .075)); +} + +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + text-shadow: 0 -1px 0 darken($list-group-active-bg, 10%); + @include gradient-vertical($start-color: $list-group-active-bg, $end-color: darken($list-group-active-bg, 7.5%)); + border-color: darken($list-group-active-border, 7.5%); + + .badge { + text-shadow: none; + } +} + +// +// Panels +// -------------------------------------------------- + +// Common styles +.panel { + @include box-shadow(0 1px 2px rgba(0, 0, 0, .05)); +} + +// Mixin for generating new styles +@mixin panel-heading-styles($color) { + @include gradient-vertical($start-color: $color, $end-color: darken($color, 5%)); +} + +// Apply the mixin to the panel headings only +.panel-default > .panel-heading { + @include panel-heading-styles($panel-default-heading-bg); +} + +.panel-primary > .panel-heading { + @include panel-heading-styles($panel-primary-heading-bg); +} + +.panel-success > .panel-heading { + @include panel-heading-styles($panel-success-heading-bg); +} + +.panel-info > .panel-heading { + @include panel-heading-styles($panel-info-heading-bg); +} + +.panel-warning > .panel-heading { + @include panel-heading-styles($panel-warning-heading-bg); +} + +.panel-danger > .panel-heading { + @include panel-heading-styles($panel-danger-heading-bg); +} + +// +// Wells +// -------------------------------------------------- + +.well { + @include gradient-vertical($start-color: darken($well-bg, 5%), $end-color: $well-bg); + border-color: darken($well-bg, 10%); + $shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); + @include box-shadow($shadow); +} diff --git a/openecomp-ui/resources/scss/bootstrap/_thumbnails.scss b/openecomp-ui/resources/scss/bootstrap/_thumbnails.scss new file mode 100644 index 0000000000..ec4a9cbf97 --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap/_thumbnails.scss @@ -0,0 +1,37 @@ +// +// Thumbnails +// -------------------------------------------------- + +// Mixin and adjust the regular image class +.thumbnail { + display: block; + padding: $thumbnail-padding; + margin-bottom: $line-height-computed; + line-height: $line-height-base; + background-color: $thumbnail-bg; + border: 1px solid $thumbnail-border; + border-radius: $thumbnail-border-radius; + @include transition(border .2s ease-in-out); + + > img, + a > img { + @include img-responsive; + margin-left: auto; + margin-right: auto; + } + + // [converter] extracted a&:hover, a&:focus, a&.active to a.thumbnail:hover, a.thumbnail:focus, a.thumbnail.active + + // Image captions + .caption { + padding: $thumbnail-caption-padding; + color: $thumbnail-caption-color; + } +} + +// Add a hover state for linked versions only +a.thumbnail:hover, +a.thumbnail:focus, +a.thumbnail.active { + border-color: $link-color; +} diff --git a/openecomp-ui/resources/scss/bootstrap/_tooltip.scss b/openecomp-ui/resources/scss/bootstrap/_tooltip.scss new file mode 100644 index 0000000000..8a7d8856bc --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap/_tooltip.scss @@ -0,0 +1,115 @@ +// +// Tooltips +// -------------------------------------------------- + +// Base class +.tooltip { + position: absolute; + z-index: $zindex-tooltip; + display: block; + // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element. + // So reset our font and text properties to avoid inheriting weird values. + @include reset-text; + font-size: $font-size-small; + + @include opacity(0); + + &.in { + @include opacity($tooltip-opacity); + } + &.top { + margin-top: -3px; + padding: $tooltip-arrow-width 0; + } + &.right { + margin-left: 3px; + padding: 0 $tooltip-arrow-width; + } + &.bottom { + margin-top: 3px; + padding: $tooltip-arrow-width 0; + } + &.left { + margin-left: -3px; + padding: 0 $tooltip-arrow-width; + } +} + +// Wrapper for the tooltip content +.tooltip-inner { + max-width: $tooltip-max-width; + padding: 3px 8px; + color: $tooltip-color; + text-align: center; + background-color: $tooltip-bg; + border-radius: $border-radius-base; +} + +// Arrows +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +// Note: Deprecated .top-left, .top-right, .bottom-left, and .bottom-right as of v3.3.1 +.tooltip { + &.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -$tooltip-arrow-width; + border-width: $tooltip-arrow-width $tooltip-arrow-width 0; + border-top-color: $tooltip-arrow-color; + } + &.top-left .tooltip-arrow { + bottom: 0; + right: $tooltip-arrow-width; + margin-bottom: -$tooltip-arrow-width; + border-width: $tooltip-arrow-width $tooltip-arrow-width 0; + border-top-color: $tooltip-arrow-color; + } + &.top-right .tooltip-arrow { + bottom: 0; + left: $tooltip-arrow-width; + margin-bottom: -$tooltip-arrow-width; + border-width: $tooltip-arrow-width $tooltip-arrow-width 0; + border-top-color: $tooltip-arrow-color; + } + &.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -$tooltip-arrow-width; + border-width: $tooltip-arrow-width $tooltip-arrow-width $tooltip-arrow-width 0; + border-right-color: $tooltip-arrow-color; + } + &.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -$tooltip-arrow-width; + border-width: $tooltip-arrow-width 0 $tooltip-arrow-width $tooltip-arrow-width; + border-left-color: $tooltip-arrow-color; + } + &.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -$tooltip-arrow-width; + border-width: 0 $tooltip-arrow-width $tooltip-arrow-width; + border-bottom-color: $tooltip-arrow-color; + } + &.bottom-left .tooltip-arrow { + top: 0; + right: $tooltip-arrow-width; + margin-top: -$tooltip-arrow-width; + border-width: 0 $tooltip-arrow-width $tooltip-arrow-width; + border-bottom-color: $tooltip-arrow-color; + } + &.bottom-right .tooltip-arrow { + top: 0; + left: $tooltip-arrow-width; + margin-top: -$tooltip-arrow-width; + border-width: 0 $tooltip-arrow-width $tooltip-arrow-width; + border-bottom-color: $tooltip-arrow-color; + } +} diff --git a/openecomp-ui/resources/scss/bootstrap/_type.scss b/openecomp-ui/resources/scss/bootstrap/_type.scss new file mode 100644 index 0000000000..8fb97e4798 --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap/_type.scss @@ -0,0 +1,339 @@ +// +// Typography +// -------------------------------------------------- + +// Headings +// ------------------------- + +h1, h2, h3, h4, h5, h6, +.h1, .h2, .h3, .h4, .h5, .h6 { + font-family: $headings-font-family; + font-weight: $headings-font-weight; + line-height: $headings-line-height; + color: $headings-color; + + small, + .small { + font-weight: normal; + line-height: 1; + color: $headings-small-color; + } +} + +h1, .h1, +h2, .h2, +h3, .h3 { + margin-top: $line-height-computed; + margin-bottom: ($line-height-computed / 2); + + small, + .small { + font-size: 65%; + } +} + +h4, .h4, +h5, .h5, +h6, .h6 { + margin-top: ($line-height-computed / 2); + margin-bottom: ($line-height-computed / 2); + + small, + .small { + font-size: 75%; + } +} + +h1, .h1 { + font-size: $font-size-h1; +} + +h2, .h2 { + font-size: $font-size-h2; +} + +h3, .h3 { + font-size: $font-size-h3; +} + +h4, .h4 { + font-size: $font-size-h4; +} + +h5, .h5 { + font-size: $font-size-h5; +} + +h6, .h6 { + font-size: $font-size-h6; +} + +// Body text +// ------------------------- + +p { + margin: 0 0 ($line-height-computed / 2); +} + +.lead { + margin-bottom: $line-height-computed; + font-size: floor(($font-size-base * 1.15)); + font-weight: 300; + line-height: 1.4; + + @media (min-width: $screen-sm-min) { + font-size: ($font-size-base * 1.5); + } +} + +// Emphasis & misc +// ------------------------- + +// Ex: (12px small font / 14px base font) * 100% = about 85% +small, +.small { + font-size: floor((100% * $font-size-small / $font-size-base)); +} + +mark, +.mark { + background-color: $state-warning-bg; + padding: .2em; +} + +// Alignment +.text-left { + text-align: left; +} + +.text-right { + text-align: right; +} + +.text-center { + text-align: center; +} + +.text-justify { + text-align: justify; +} + +.text-nowrap { + white-space: nowrap; +} + +// Transformation +.text-lowercase { + text-transform: lowercase; +} + +.text-uppercase { + text-transform: uppercase; +} + +.text-capitalize { + text-transform: capitalize; +} + +// Contextual colors +.text-muted { + color: $text-muted; +} + +@include text-emphasis-variant('.text-primary', $brand-primary); + +@include text-emphasis-variant('.text-success', $state-success-text); + +@include text-emphasis-variant('.text-info', $state-info-text); + +@include text-emphasis-variant('.text-warning', $state-warning-text); + +@include text-emphasis-variant('.text-danger', $state-danger-text); + +// Contextual backgrounds +// For now we'll leave these alongside the text classes until v4 when we can +// safely shift things around (per SemVer rules). +.bg-primary { + // Given the contrast here, this is the only class to have its color inverted + // automatically. + color: #fff; +} + +@include bg-variant('.bg-primary', $brand-primary); + +@include bg-variant('.bg-success', $state-success-bg); + +@include bg-variant('.bg-info', $state-info-bg); + +@include bg-variant('.bg-warning', $state-warning-bg); + +@include bg-variant('.bg-danger', $state-danger-bg); + +// Page header +// ------------------------- + +.page-header { + padding-bottom: (($line-height-computed / 2) - 1); + margin: ($line-height-computed * 2) 0 $line-height-computed; + border-bottom: 1px solid $page-header-border-color; +} + +// Lists +// ------------------------- + +// Unordered and Ordered lists +ul, +ol { + margin-top: 0; + margin-bottom: ($line-height-computed / 2); + ul, + ol { + margin-bottom: 0; + } +} + +// List options + +// [converter] extracted from `.list-unstyled` for libsass compatibility +@mixin list-unstyled { + padding-left: 0; + list-style: none; +} + +// [converter] extracted as `@mixin list-unstyled` for libsass compatibility +.list-unstyled { + @include list-unstyled; +} + +// Inline turns list items into inline-block +.list-inline { + @include list-unstyled; + margin-left: -5px; + + > li { + display: inline-block; + padding-left: 5px; + padding-right: 5px; + } +} + +// Description Lists +dl { + margin-top: 0; // Remove browser default + margin-bottom: $line-height-computed; +} + +dt, +dd { + line-height: $line-height-base; +} + +dt { + font-weight: bold; +} + +dd { + margin-left: 0; // Undo browser default +} + +// Horizontal description lists +// +// Defaults to being stacked without any of the below styles applied, until the +// grid breakpoint is reached (default of ~768px). + +.dl-horizontal { + dd { + @include clearfix; // Clear the floated `dt` if an empty `dd` is present + } + + @media (min-width: $grid-float-breakpoint) { + dt { + float: left; + width: ($dl-horizontal-offset - 20); + clear: left; + text-align: right; + @include text-overflow; + } + dd { + margin-left: $dl-horizontal-offset; + } + } +} + +// Misc +// ------------------------- + +// Abbreviations and acronyms +abbr[title], + // Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257 +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted $abbr-border-color; +} + +.initialism { + font-size: 90%; + @extend .text-uppercase; +} + +// Blockquotes +blockquote { + padding: ($line-height-computed / 2) $line-height-computed; + margin: 0 0 $line-height-computed; + font-size: $blockquote-font-size; + border-left: 5px solid $blockquote-border-color; + + p, + ul, + ol { + &:last-child { + margin-bottom: 0; + } + } + + // Note: Deprecated small and .small as of v3.1.0 + // Context: https://github.com/twbs/bootstrap/issues/11660 + footer, + small, + .small { + display: block; + font-size: 80%; // back to default font-size + line-height: $line-height-base; + color: $blockquote-small-color; + + &:before { + content: '\2014 \00A0'; // em dash, nbsp + } + } +} + +// Opposite alignment of blockquote +// +// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0. +.blockquote-reverse, +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + border-right: 5px solid $blockquote-border-color; + border-left: 0; + text-align: right; + + // Account for citation + footer, + small, + .small { + &:before { + content: ''; + } + &:after { + content: '\00A0 \2014'; // nbsp, em dash + } + } +} + +// Addresses +address { + margin-bottom: $line-height-computed; + font-style: normal; + line-height: $line-height-base; +} diff --git a/openecomp-ui/resources/scss/bootstrap/_utilities.scss b/openecomp-ui/resources/scss/bootstrap/_utilities.scss new file mode 100644 index 0000000000..137720136b --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap/_utilities.scss @@ -0,0 +1,57 @@ +// +// Utility classes +// -------------------------------------------------- + +// Floats +// ------------------------- + +.clearfix { + @include clearfix; +} + +.center-block { + @include center-block; +} + +.pull-right { + float: right !important; +} + +.pull-left { + float: left !important; +} + +// Toggling content +// ------------------------- + +// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1 +.hide { + display: none !important; +} + +.show { + display: block !important; +} + +.invisible { + visibility: hidden; +} + +.text-hide { + @include text-hide; +} + +// Hide from screenreaders and browsers +// +// Credit: HTML5 Boilerplate + +.hidden { + display: none !important; +} + +// For Affix plugin +// ------------------------- + +.affix { + position: fixed; +} diff --git a/openecomp-ui/resources/scss/bootstrap/_variables.scss b/openecomp-ui/resources/scss/bootstrap/_variables.scss new file mode 100644 index 0000000000..50b8781a3d --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap/_variables.scss @@ -0,0 +1,852 @@ +$bootstrap-sass-asset-helper: false !default; +// +// Variables +// -------------------------------------------------- + +//== Colors +// +//## Gray and brand colors for use across Bootstrap. + +$gray-base: #000 !default; +$gray-darker: lighten($gray-base, 13.5%) !default; +// #222 +$gray-dark: lighten($gray-base, 20%) !default; +// #333 +$gray: lighten($gray-base, 33.5%) !default; +// #555 +$gray-light: lighten($gray-base, 46.7%) !default; +// #777 +$gray-lighter: lighten($gray-base, 93.5%) !default; +// #eee + +$brand-primary: darken(#428bca, 6.5%) !default; +// #337ab7 +$brand-success: #5cb85c !default; +$brand-info: #5bc0de !default; +$brand-warning: #f0ad4e !default; +$brand-danger: #d9534f !default; + +//== Scaffolding +// +//## Settings for some of the most global styles. + +//** Background color for ``. +$body-bg: #fff !default; +//** Global text color on ``. +$text-color: $gray-dark !default; + +//** Global textual link color. +$link-color: $brand-primary !default; +//** Link hover color set via `darken()` function. +$link-hover-color: darken($link-color, 15%) !default; +//** Link hover decoration. +$link-hover-decoration: underline !default; + +//== Typography +// +//## Font, line-height, and color for body text, headings, and more. + +$font-family-sans-serif: "Helvetica Neue", Helvetica, Arial, sans-serif !default; +$font-family-serif: Georgia, "Times New Roman", Times, serif !default; +//** Default monospace fonts for ``, ``, and `
      `.
      +$font-family-monospace: Menlo, Monaco, Consolas, "Courier New", monospace !default;
      +$font-family-base: $font-family-sans-serif !default;
      +
      +$font-size-base: 14px !default;
      +$font-size-large: ceil(($font-size-base * 1.25)) !default;
      +// ~18px
      +$font-size-small: ceil(($font-size-base * 0.85)) !default;
      +// ~12px
      +
      +$font-size-h1: floor(($font-size-base * 2.6)) !default;
      +// ~36px
      +$font-size-h2: floor(($font-size-base * 2.15)) !default;
      +// ~30px
      +$font-size-h3: ceil(($font-size-base * 1.7)) !default;
      +// ~24px
      +$font-size-h4: ceil(($font-size-base * 1.25)) !default;
      +// ~18px
      +$font-size-h5: $font-size-base !default;
      +$font-size-h6: ceil(($font-size-base * 0.85)) !default;
      +// ~12px
      +
      +//** Unit-less `line-height` for use in components like buttons.
      +$line-height-base: 1.428571429 !default;
      +// 20/14
      +//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
      +$line-height-computed: floor(($font-size-base * $line-height-base)) !default;
      +// ~20px
      +
      +//** By default, this inherits from the ``.
      +$headings-font-family: inherit !default;
      +$headings-font-weight: 500 !default;
      +$headings-line-height: 1.1 !default;
      +$headings-color: inherit !default;
      +
      +//== Iconography
      +//
      +//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
      +
      +//** Load fonts from this directory.
      +
      +// [converter] If $bootstrap-sass-asset-helper if used, provide path relative to the assets load path.
      +// [converter] This is because some asset helpers, such as Sprockets, do not work with file-relative paths.
      +$icon-font-path: if($bootstrap-sass-asset-helper, "bootstrap/", "../fonts/") !default;
      +
      +//** File name for all font files.
      +$icon-font-name: "glyphicons-halflings-regular" !default;
      +//** Element ID within SVG icon file.
      +$icon-font-svg-id: "glyphicons_halflingsregular" !default;
      +
      +//== Components
      +//
      +//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
      +
      +$padding-base-vertical: 6px !default;
      +$padding-base-horizontal: 12px !default;
      +
      +$padding-large-vertical: 10px !default;
      +$padding-large-horizontal: 16px !default;
      +
      +$padding-small-vertical: 5px !default;
      +$padding-small-horizontal: 10px !default;
      +
      +$padding-xs-vertical: 1px !default;
      +$padding-xs-horizontal: 5px !default;
      +
      +$line-height-large: 1.3333333 !default;
      +// extra decimals for Win 8.1 Chrome
      +$line-height-small: 1.5 !default;
      +
      +$border-radius-base: 4px !default;
      +$border-radius-large: 6px !default;
      +$border-radius-small: 3px !default;
      +
      +//** Global color for active items (e.g., navs or dropdowns).
      +$component-active-color: #fff !default;
      +//** Global background color for active items (e.g., navs or dropdowns).
      +$component-active-bg: $brand-primary !default;
      +
      +//** Width of the `border` for generating carets that indicator dropdowns.
      +$caret-width-base: 4px !default;
      +//** Carets increase slightly in size for larger components.
      +$caret-width-large: 5px !default;
      +
      +//== Tables
      +//
      +//## Customizes the `.table` component with basic values, each used across all table variations.
      +
      +//** Padding for ``s and ``s.
      +$table-cell-padding: 8px !default;
      +//** Padding for cells in `.table-condensed`.
      +$table-condensed-cell-padding: 5px !default;
      +
      +//** Default background color used for all tables.
      +$table-bg: transparent !default;
      +//** Background color used for `.table-striped`.
      +$table-bg-accent: #f9f9f9 !default;
      +//** Background color used for `.table-hover`.
      +$table-bg-hover: #f5f5f5 !default;
      +$table-bg-active: $table-bg-hover !default;
      +
      +//** Border color for table and cell borders.
      +$table-border-color: #ddd !default;
      +
      +//== Buttons
      +//
      +//## For each of Bootstrap's buttons, define text, background and border color.
      +
      +$btn-font-weight: normal !default;
      +
      +$btn-default-color: #333 !default;
      +$btn-default-bg: #fff !default;
      +$btn-default-border: #ccc !default;
      +
      +$btn-primary-color: #fff !default;
      +$btn-primary-bg: $brand-primary !default;
      +$btn-primary-border: darken($btn-primary-bg, 5%) !default;
      +
      +$btn-success-color: #fff !default;
      +$btn-success-bg: $brand-success !default;
      +$btn-success-border: darken($btn-success-bg, 5%) !default;
      +
      +$btn-info-color: #fff !default;
      +$btn-info-bg: $brand-info !default;
      +$btn-info-border: darken($btn-info-bg, 5%) !default;
      +
      +$btn-warning-color: #fff !default;
      +$btn-warning-bg: $brand-warning !default;
      +$btn-warning-border: darken($btn-warning-bg, 5%) !default;
      +
      +$btn-danger-color: #fff !default;
      +$btn-danger-bg: $brand-danger !default;
      +$btn-danger-border: darken($btn-danger-bg, 5%) !default;
      +
      +$btn-link-disabled-color: $gray-light !default;
      +
      +// Allows for customizing button radius independently from global border radius
      +$btn-border-radius-base: $border-radius-base !default;
      +$btn-border-radius-large: $border-radius-large !default;
      +$btn-border-radius-small: $border-radius-small !default;
      +
      +//== Forms
      +//
      +//##
      +
      +//** `` background color
      +$input-bg: #fff !default;
      +//** `` background color
      +$input-bg-disabled: $gray-lighter !default;
      +
      +//** Text color for ``s
      +$input-color: $gray !default;
      +//** `` border color
      +$input-border: #ccc !default;
      +
      +// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4
      +//** Default `.form-control` border radius
      +// This has no effect on ``s in CSS.
      +$input-border-radius: $border-radius-base !default;
      +//** Large `.form-control` border radius
      +$input-border-radius-large: $border-radius-large !default;
      +//** Small `.form-control` border radius
      +$input-border-radius-small: $border-radius-small !default;
      +
      +//** Border color for inputs on focus
      +$input-border-focus: #66afe9 !default;
      +
      +//** Placeholder text color
      +$input-color-placeholder: #999 !default;
      +
      +//** Default `.form-control` height
      +$input-height-base: ($line-height-computed + ($padding-base-vertical * 2) + 2) !default;
      +//** Large `.form-control` height
      +$input-height-large: (ceil($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2) !default;
      +//** Small `.form-control` height
      +$input-height-small: (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2) !default;
      +
      +//** `.form-group` margin
      +$form-group-margin-bottom: 15px !default;
      +
      +$legend-color: $gray-dark !default;
      +$legend-border-color: #e5e5e5 !default;
      +
      +//** Background color for textual input addons
      +$input-group-addon-bg: $gray-lighter !default;
      +//** Border color for textual input addons
      +$input-group-addon-border-color: $input-border !default;
      +
      +//** Disabled cursor for form controls and buttons.
      +$cursor-disabled: not-allowed !default;
      +
      +//== Dropdowns
      +//
      +//## Dropdown menu container and contents.
      +
      +//** Background for the dropdown menu.
      +$dropdown-bg: #fff !default;
      +//** Dropdown menu `border-color`.
      +$dropdown-border: rgba(0, 0, 0, .15) !default;
      +//** Dropdown menu `border-color` **for IE8**.
      +$dropdown-fallback-border: #ccc !default;
      +//** Divider color for between dropdown items.
      +$dropdown-divider-bg: #e5e5e5 !default;
      +
      +//** Dropdown link text color.
      +$dropdown-link-color: $gray-dark !default;
      +//** Hover color for dropdown links.
      +$dropdown-link-hover-color: darken($gray-dark, 5%) !default;
      +//** Hover background for dropdown links.
      +$dropdown-link-hover-bg: #f5f5f5 !default;
      +
      +//** Active dropdown menu item text color.
      +$dropdown-link-active-color: $component-active-color !default;
      +//** Active dropdown menu item background color.
      +$dropdown-link-active-bg: $component-active-bg !default;
      +
      +//** Disabled dropdown menu item background color.
      +$dropdown-link-disabled-color: $gray-light !default;
      +
      +//** Text color for headers within dropdown menus.
      +$dropdown-header-color: $gray-light !default;
      +
      +//** Deprecated `$dropdown-caret-color` as of v3.1.0
      +$dropdown-caret-color: #000 !default;
      +
      +//-- Z-index master list
      +//
      +// Warning: Avoid customizing these values. They're used for a bird's eye view
      +// of components dependent on the z-axis and are designed to all work together.
      +//
      +// Note: These variables are not generated into the Customizer.
      +
      +$zindex-navbar: 1000 !default;
      +$zindex-dropdown: 1000 !default;
      +$zindex-popover: 1060 !default;
      +$zindex-tooltip: 1070 !default;
      +$zindex-navbar-fixed: 1030 !default;
      +$zindex-modal-background: 1040 !default;
      +$zindex-modal: 1050 !default;
      +
      +//== Media queries breakpoints
      +//
      +//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
      +
      +// Extra small screen / phone
      +//** Deprecated `$screen-xs` as of v3.0.1
      +$screen-xs: 480px !default;
      +//** Deprecated `$screen-xs-min` as of v3.2.0
      +$screen-xs-min: $screen-xs !default;
      +//** Deprecated `$screen-phone` as of v3.0.1
      +$screen-phone: $screen-xs-min !default;
      +
      +// Small screen / tablet
      +//** Deprecated `$screen-sm` as of v3.0.1
      +$screen-sm: 768px !default;
      +$screen-sm-min: $screen-sm !default;
      +//** Deprecated `$screen-tablet` as of v3.0.1
      +$screen-tablet: $screen-sm-min !default;
      +
      +// Medium screen / desktop
      +//** Deprecated `$screen-md` as of v3.0.1
      +$screen-md: 992px !default;
      +$screen-md-min: $screen-md !default;
      +//** Deprecated `$screen-desktop` as of v3.0.1
      +$screen-desktop: $screen-md-min !default;
      +
      +// Large screen / wide desktop
      +//** Deprecated `$screen-lg` as of v3.0.1
      +$screen-lg: 1200px !default;
      +$screen-lg-min: $screen-lg !default;
      +//** Deprecated `$screen-lg-desktop` as of v3.0.1
      +$screen-lg-desktop: $screen-lg-min !default;
      +
      +// So media queries don't overlap when required, provide a maximum
      +$screen-xs-max: ($screen-sm-min - 1) !default;
      +$screen-sm-max: ($screen-md-min - 1) !default;
      +$screen-md-max: ($screen-lg-min - 1) !default;
      +
      +//== Grid system
      +//
      +//## Define your custom responsive grid.
      +
      +//** Number of columns in the grid.
      +$grid-columns: 12 !default;
      +//** Padding between columns. Gets divided in half for the left and right.
      +$grid-gutter-width: 30px !default;
      +// Navbar collapse
      +//** Point at which the navbar becomes uncollapsed.
      +$grid-float-breakpoint: $screen-sm-min !default;
      +//** Point at which the navbar begins collapsing.
      +$grid-float-breakpoint-max: ($grid-float-breakpoint - 1) !default;
      +
      +//== Container sizes
      +//
      +//## Define the maximum width of `.container` for different screen sizes.
      +
      +// Small screen / tablet
      +$container-tablet: (720px + $grid-gutter-width) !default;
      +//** For `$screen-sm-min` and up.
      +$container-sm: $container-tablet !default;
      +
      +// Medium screen / desktop
      +$container-desktop: (940px + $grid-gutter-width) !default;
      +//** For `$screen-md-min` and up.
      +$container-md: $container-desktop !default;
      +
      +// Large screen / wide desktop
      +$container-large-desktop: (1140px + $grid-gutter-width) !default;
      +//** For `$screen-lg-min` and up.
      +$container-lg: $container-large-desktop !default;
      +
      +//== Navbar
      +//
      +//##
      +
      +// Basics of a navbar
      +$navbar-height: 50px !default;
      +$navbar-margin-bottom: $line-height-computed !default;
      +$navbar-border-radius: $border-radius-base !default;
      +$navbar-padding-horizontal: floor(($grid-gutter-width / 2)) !default;
      +$navbar-padding-vertical: (($navbar-height - $line-height-computed) / 2) !default;
      +$navbar-collapse-max-height: 340px !default;
      +
      +$navbar-default-color: #777 !default;
      +$navbar-default-bg: #f8f8f8 !default;
      +$navbar-default-border: darken($navbar-default-bg, 6.5%) !default;
      +
      +// Navbar links
      +$navbar-default-link-color: #777 !default;
      +$navbar-default-link-hover-color: #333 !default;
      +$navbar-default-link-hover-bg: transparent !default;
      +$navbar-default-link-active-color: #555 !default;
      +$navbar-default-link-active-bg: darken($navbar-default-bg, 6.5%) !default;
      +$navbar-default-link-disabled-color: #ccc !default;
      +$navbar-default-link-disabled-bg: transparent !default;
      +
      +// Navbar brand label
      +$navbar-default-brand-color: $navbar-default-link-color !default;
      +$navbar-default-brand-hover-color: darken($navbar-default-brand-color, 10%) !default;
      +$navbar-default-brand-hover-bg: transparent !default;
      +
      +// Navbar toggle
      +$navbar-default-toggle-hover-bg: #ddd !default;
      +$navbar-default-toggle-icon-bar-bg: #888 !default;
      +$navbar-default-toggle-border-color: #ddd !default;
      +
      +//=== Inverted navbar
      +// Reset inverted navbar basics
      +$navbar-inverse-color: lighten($gray-light, 15%) !default;
      +$navbar-inverse-bg: #222 !default;
      +$navbar-inverse-border: darken($navbar-inverse-bg, 10%) !default;
      +
      +// Inverted navbar links
      +$navbar-inverse-link-color: lighten($gray-light, 15%) !default;
      +$navbar-inverse-link-hover-color: #fff !default;
      +$navbar-inverse-link-hover-bg: transparent !default;
      +$navbar-inverse-link-active-color: $navbar-inverse-link-hover-color !default;
      +$navbar-inverse-link-active-bg: darken($navbar-inverse-bg, 10%) !default;
      +$navbar-inverse-link-disabled-color: #444 !default;
      +$navbar-inverse-link-disabled-bg: transparent !default;
      +
      +// Inverted navbar brand label
      +$navbar-inverse-brand-color: $navbar-inverse-link-color !default;
      +$navbar-inverse-brand-hover-color: #fff !default;
      +$navbar-inverse-brand-hover-bg: transparent !default;
      +
      +// Inverted navbar toggle
      +$navbar-inverse-toggle-hover-bg: #333 !default;
      +$navbar-inverse-toggle-icon-bar-bg: #fff !default;
      +$navbar-inverse-toggle-border-color: #333 !default;
      +
      +//== Navs
      +//
      +//##
      +
      +//=== Shared nav styles
      +$nav-link-padding: 10px 15px !default;
      +$nav-link-hover-bg: $gray-lighter !default;
      +
      +$nav-disabled-link-color: $gray-light !default;
      +$nav-disabled-link-hover-color: $gray-light !default;
      +
      +//== Tabs
      +$nav-tabs-border-color: #ddd !default;
      +
      +$nav-tabs-link-hover-border-color: $gray-lighter !default;
      +
      +$nav-tabs-active-link-hover-bg: $body-bg !default;
      +$nav-tabs-active-link-hover-color: $gray !default;
      +$nav-tabs-active-link-hover-border-color: #ddd !default;
      +
      +$nav-tabs-justified-link-border-color: #ddd !default;
      +$nav-tabs-justified-active-link-border-color: $body-bg !default;
      +
      +//== Pills
      +$nav-pills-border-radius: $border-radius-base !default;
      +$nav-pills-active-link-hover-bg: $component-active-bg !default;
      +$nav-pills-active-link-hover-color: $component-active-color !default;
      +
      +//== Pagination
      +//
      +//##
      +
      +$pagination-color: $link-color !default;
      +$pagination-bg: #fff !default;
      +$pagination-border: #ddd !default;
      +
      +$pagination-hover-color: $link-hover-color !default;
      +$pagination-hover-bg: $gray-lighter !default;
      +$pagination-hover-border: #ddd !default;
      +
      +$pagination-active-color: #fff !default;
      +$pagination-active-bg: $brand-primary !default;
      +$pagination-active-border: $brand-primary !default;
      +
      +$pagination-disabled-color: $gray-light !default;
      +$pagination-disabled-bg: #fff !default;
      +$pagination-disabled-border: #ddd !default;
      +
      +//== Pager
      +//
      +//##
      +
      +$pager-bg: $pagination-bg !default;
      +$pager-border: $pagination-border !default;
      +$pager-border-radius: 15px !default;
      +
      +$pager-hover-bg: $pagination-hover-bg !default;
      +
      +$pager-active-bg: $pagination-active-bg !default;
      +$pager-active-color: $pagination-active-color !default;
      +
      +$pager-disabled-color: $pagination-disabled-color !default;
      +
      +//== Jumbotron
      +//
      +//##
      +
      +$jumbotron-padding: 30px !default;
      +$jumbotron-color: inherit !default;
      +$jumbotron-bg: $gray-lighter !default;
      +$jumbotron-heading-color: inherit !default;
      +$jumbotron-font-size: ceil(($font-size-base * 1.5)) !default;
      +$jumbotron-heading-font-size: ceil(($font-size-base * 4.5)) !default;
      +
      +//== Form states and alerts
      +//
      +//## Define colors for form feedback states and, by default, alerts.
      +
      +$state-success-text: #3c763d !default;
      +$state-success-bg: #dff0d8 !default;
      +$state-success-border: darken(adjust-hue($state-success-bg, -10), 5%) !default;
      +
      +$state-info-text: #31708f !default;
      +$state-info-bg: #d9edf7 !default;
      +$state-info-border: darken(adjust-hue($state-info-bg, -10), 7%) !default;
      +
      +$state-warning-text: #8a6d3b !default;
      +$state-warning-bg: #fcf8e3 !default;
      +$state-warning-border: darken(adjust-hue($state-warning-bg, -10), 5%) !default;
      +
      +$state-danger-text: #a94442 !default;
      +$state-danger-bg: #f2dede !default;
      +$state-danger-border: darken(adjust-hue($state-danger-bg, -10), 5%) !default;
      +
      +//== Tooltips
      +//
      +//##
      +
      +//** Tooltip max width
      +$tooltip-max-width: 200px !default;
      +//** Tooltip text color
      +$tooltip-color: #fff !default;
      +//** Tooltip background color
      +$tooltip-bg: #000 !default;
      +$tooltip-opacity: .9 !default;
      +
      +//** Tooltip arrow width
      +$tooltip-arrow-width: 5px !default;
      +//** Tooltip arrow color
      +$tooltip-arrow-color: $tooltip-bg !default;
      +
      +//== Popovers
      +//
      +//##
      +
      +//** Popover body background color
      +$popover-bg: #fff !default;
      +//** Popover maximum width
      +$popover-max-width: 276px !default;
      +//** Popover border color
      +$popover-border-color: rgba(0, 0, 0, .2) !default;
      +//** Popover fallback border color
      +$popover-fallback-border-color: #ccc !default;
      +
      +//** Popover title background color
      +$popover-title-bg: darken($popover-bg, 3%) !default;
      +
      +//** Popover arrow width
      +$popover-arrow-width: 10px !default;
      +//** Popover arrow color
      +$popover-arrow-color: $popover-bg !default;
      +
      +//** Popover outer arrow width
      +$popover-arrow-outer-width: ($popover-arrow-width + 1) !default;
      +//** Popover outer arrow color
      +$popover-arrow-outer-color: fade_in($popover-border-color, 0.05) !default;
      +//** Popover outer arrow fallback color
      +$popover-arrow-outer-fallback-color: darken($popover-fallback-border-color, 20%) !default;
      +
      +//== Labels
      +//
      +//##
      +
      +//** Default label background color
      +$label-default-bg: $gray-light !default;
      +//** Primary label background color
      +$label-primary-bg: $brand-primary !default;
      +//** Success label background color
      +$label-success-bg: $brand-success !default;
      +//** Info label background color
      +$label-info-bg: $brand-info !default;
      +//** Warning label background color
      +$label-warning-bg: $brand-warning !default;
      +//** Danger label background color
      +$label-danger-bg: $brand-danger !default;
      +
      +//** Default label text color
      +$label-color: #fff !default;
      +//** Default text color of a linked label
      +$label-link-hover-color: #fff !default;
      +
      +//== Modals
      +//
      +//##
      +
      +//** Padding applied to the modal body
      +$modal-inner-padding: 15px !default;
      +
      +//** Padding applied to the modal title
      +$modal-title-padding: 15px !default;
      +//** Modal title line-height
      +$modal-title-line-height: $line-height-base !default;
      +
      +//** Background color of modal content area
      +$modal-content-bg: #fff !default;
      +//** Modal content border color
      +$modal-content-border-color: rgba(0, 0, 0, .2) !default;
      +//** Modal content border color **for IE8**
      +$modal-content-fallback-border-color: #999 !default;
      +
      +//** Modal backdrop background color
      +$modal-backdrop-bg: #000 !default;
      +//** Modal backdrop opacity
      +$modal-backdrop-opacity: .5 !default;
      +//** Modal header border color
      +$modal-header-border-color: #e5e5e5 !default;
      +//** Modal footer border color
      +$modal-footer-border-color: $modal-header-border-color !default;
      +
      +$modal-lg: 900px !default;
      +$modal-md: 600px !default;
      +$modal-sm: 300px !default;
      +
      +//== Alerts
      +//
      +//## Define alert colors, border radius, and padding.
      +
      +$alert-padding: 15px !default;
      +$alert-border-radius: $border-radius-base !default;
      +$alert-link-font-weight: bold !default;
      +
      +$alert-success-bg: $state-success-bg !default;
      +$alert-success-text: $state-success-text !default;
      +$alert-success-border: $state-success-border !default;
      +
      +$alert-info-bg: $state-info-bg !default;
      +$alert-info-text: $state-info-text !default;
      +$alert-info-border: $state-info-border !default;
      +
      +$alert-warning-bg: $state-warning-bg !default;
      +$alert-warning-text: $state-warning-text !default;
      +$alert-warning-border: $state-warning-border !default;
      +
      +$alert-danger-bg: $state-danger-bg !default;
      +$alert-danger-text: $state-danger-text !default;
      +$alert-danger-border: $state-danger-border !default;
      +
      +//== Progress bars
      +//
      +//##
      +
      +//** Background color of the whole progress component
      +$progress-bg: #f5f5f5 !default;
      +//** Progress bar text color
      +$progress-bar-color: #fff !default;
      +//** Variable for setting rounded corners on progress bar.
      +$progress-border-radius: $border-radius-base !default;
      +
      +//** Default progress bar color
      +$progress-bar-bg: $brand-primary !default;
      +//** Success progress bar color
      +$progress-bar-success-bg: $brand-success !default;
      +//** Warning progress bar color
      +$progress-bar-warning-bg: $brand-warning !default;
      +//** Danger progress bar color
      +$progress-bar-danger-bg: $brand-danger !default;
      +//** Info progress bar color
      +$progress-bar-info-bg: $brand-info !default;
      +
      +//== List group
      +//
      +//##
      +
      +//** Background color on `.list-group-item`
      +$list-group-bg: #fff !default;
      +//** `.list-group-item` border color
      +$list-group-border: #ddd !default;
      +//** List group border radius
      +$list-group-border-radius: $border-radius-base !default;
      +
      +//** Background color of single list items on hover
      +$list-group-hover-bg: #f5f5f5 !default;
      +//** Text color of active list items
      +$list-group-active-color: $component-active-color !default;
      +//** Background color of active list items
      +$list-group-active-bg: $component-active-bg !default;
      +//** Border color of active list elements
      +$list-group-active-border: $list-group-active-bg !default;
      +//** Text color for content within active list items
      +$list-group-active-text-color: lighten($list-group-active-bg, 40%) !default;
      +
      +//** Text color of disabled list items
      +$list-group-disabled-color: $gray-light !default;
      +//** Background color of disabled list items
      +$list-group-disabled-bg: $gray-lighter !default;
      +//** Text color for content within disabled list items
      +$list-group-disabled-text-color: $list-group-disabled-color !default;
      +
      +$list-group-link-color: #555 !default;
      +$list-group-link-hover-color: $list-group-link-color !default;
      +$list-group-link-heading-color: #333 !default;
      +
      +//== Panels
      +//
      +//##
      +
      +$panel-bg: #fff !default;
      +$panel-body-padding: 15px !default;
      +$panel-heading-padding: 10px 15px !default;
      +$panel-footer-padding: $panel-heading-padding !default;
      +$panel-border-radius: $border-radius-base !default;
      +
      +//** Border color for elements within panels
      +$panel-inner-border: #ddd !default;
      +$panel-footer-bg: #f5f5f5 !default;
      +
      +$panel-default-text: $gray-dark !default;
      +$panel-default-border: #ddd !default;
      +$panel-default-heading-bg: #f5f5f5 !default;
      +
      +$panel-primary-text: #fff !default;
      +$panel-primary-border: $brand-primary !default;
      +$panel-primary-heading-bg: $brand-primary !default;
      +
      +$panel-success-text: $state-success-text !default;
      +$panel-success-border: $state-success-border !default;
      +$panel-success-heading-bg: $state-success-bg !default;
      +
      +$panel-info-text: $state-info-text !default;
      +$panel-info-border: $state-info-border !default;
      +$panel-info-heading-bg: $state-info-bg !default;
      +
      +$panel-warning-text: $state-warning-text !default;
      +$panel-warning-border: $state-warning-border !default;
      +$panel-warning-heading-bg: $state-warning-bg !default;
      +
      +$panel-danger-text: $state-danger-text !default;
      +$panel-danger-border: $state-danger-border !default;
      +$panel-danger-heading-bg: $state-danger-bg !default;
      +
      +//== Thumbnails
      +//
      +//##
      +
      +//** Padding around the thumbnail image
      +$thumbnail-padding: 4px !default;
      +//** Thumbnail background color
      +$thumbnail-bg: $body-bg !default;
      +//** Thumbnail border color
      +$thumbnail-border: #ddd !default;
      +//** Thumbnail border radius
      +$thumbnail-border-radius: $border-radius-base !default;
      +
      +//** Custom text color for thumbnail captions
      +$thumbnail-caption-color: $text-color !default;
      +//** Padding around the thumbnail caption
      +$thumbnail-caption-padding: 9px !default;
      +
      +//== Wells
      +//
      +//##
      +
      +$well-bg: #f5f5f5 !default;
      +$well-border: darken($well-bg, 7%) !default;
      +
      +//== Badges
      +//
      +//##
      +
      +$badge-color: #fff !default;
      +//** Linked badge text color on hover
      +$badge-link-hover-color: #fff !default;
      +$badge-bg: $gray-light !default;
      +
      +//** Badge text color in active nav link
      +$badge-active-color: $link-color !default;
      +//** Badge background color in active nav link
      +$badge-active-bg: #fff !default;
      +
      +$badge-font-weight: bold !default;
      +$badge-line-height: 1 !default;
      +$badge-border-radius: 10px !default;
      +
      +//== Breadcrumbs
      +//
      +//##
      +
      +$breadcrumb-padding-vertical: 8px !default;
      +$breadcrumb-padding-horizontal: 15px !default;
      +//** Breadcrumb background color
      +$breadcrumb-bg: #f5f5f5 !default;
      +//** Breadcrumb text color
      +$breadcrumb-color: #ccc !default;
      +//** Text color of current page in the breadcrumb
      +$breadcrumb-active-color: $gray-light !default;
      +//** Textual separator for between breadcrumb elements
      +$breadcrumb-separator: "/" !default;
      +
      +//== Carousel
      +//
      +//##
      +
      +$carousel-text-shadow: 0 1px 2px rgba(0, 0, 0, .6) !default;
      +
      +$carousel-control-color: #fff !default;
      +$carousel-control-width: 15% !default;
      +$carousel-control-opacity: .5 !default;
      +$carousel-control-font-size: 20px !default;
      +
      +$carousel-indicator-active-bg: #fff !default;
      +$carousel-indicator-border-color: #fff !default;
      +
      +$carousel-caption-color: #fff !default;
      +
      +//== Close
      +//
      +//##
      +
      +$close-font-weight: bold !default;
      +$close-color: #000 !default;
      +$close-text-shadow: 0 1px 0 #fff !default;
      +
      +//== Code
      +//
      +//##
      +
      +$code-color: #c7254e !default;
      +$code-bg: #f9f2f4 !default;
      +
      +$kbd-color: #fff !default;
      +$kbd-bg: #333 !default;
      +
      +$pre-bg: #f5f5f5 !default;
      +$pre-color: $gray-dark !default;
      +$pre-border-color: #ccc !default;
      +$pre-scrollable-max-height: 340px !default;
      +
      +//== Type
      +//
      +//##
      +
      +//** Horizontal offset for forms and lists.
      +$component-offset-horizontal: 180px !default;
      +//** Text muted color
      +$text-muted: $gray-light !default;
      +//** Abbreviations and acronyms border color
      +$abbr-border-color: $gray-light !default;
      +//** Headings small color
      +$headings-small-color: $gray-light !default;
      +//** Blockquote small color
      +$blockquote-small-color: $gray-light !default;
      +//** Blockquote font size
      +$blockquote-font-size: ($font-size-base * 1.25) !default;
      +//** Blockquote border color
      +$blockquote-border-color: $gray-lighter !default;
      +//** Page header border color
      +$page-header-border-color: $gray-lighter !default;
      +//** Width of horizontal description list titles
      +$dl-horizontal-offset: $component-offset-horizontal !default;
      +//** Horizontal line color.
      +$hr-border: $gray-lighter !default;
      diff --git a/openecomp-ui/resources/scss/bootstrap/_wells.scss b/openecomp-ui/resources/scss/bootstrap/_wells.scss
      new file mode 100644
      index 0000000000..8d13cb67d3
      --- /dev/null
      +++ b/openecomp-ui/resources/scss/bootstrap/_wells.scss
      @@ -0,0 +1,29 @@
      +//
      +// Wells
      +// --------------------------------------------------
      +
      +// Base class
      +.well {
      +  min-height: 20px;
      +  padding: 19px;
      +  margin-bottom: 20px;
      +  background-color: $well-bg;
      +  border: 1px solid $well-border;
      +  border-radius: $border-radius-base;
      +  @include box-shadow(inset 0 1px 1px rgba(0, 0, 0, .05));
      +  blockquote {
      +	border-color: #ddd;
      +	border-color: rgba(0, 0, 0, .15);
      +  }
      +}
      +
      +// Sizes
      +.well-lg {
      +  padding: 24px;
      +  border-radius: $border-radius-large;
      +}
      +
      +.well-sm {
      +  padding: 9px;
      +  border-radius: $border-radius-small;
      +}
      diff --git a/openecomp-ui/resources/scss/bootstrap/mixins/_alerts.scss b/openecomp-ui/resources/scss/bootstrap/mixins/_alerts.scss
      new file mode 100644
      index 0000000000..b092e85eb4
      --- /dev/null
      +++ b/openecomp-ui/resources/scss/bootstrap/mixins/_alerts.scss
      @@ -0,0 +1,14 @@
      +// Alerts
      +
      +@mixin alert-variant($background, $border, $text-color) {
      +  background-color: $background;
      +  border-color: $border;
      +  color: $text-color;
      +
      +  hr {
      +	border-top-color: darken($border, 5%);
      +  }
      +  .alert-link {
      +	color: darken($text-color, 10%);
      +  }
      +}
      diff --git a/openecomp-ui/resources/scss/bootstrap/mixins/_background-variant.scss b/openecomp-ui/resources/scss/bootstrap/mixins/_background-variant.scss
      new file mode 100644
      index 0000000000..533ff12c84
      --- /dev/null
      +++ b/openecomp-ui/resources/scss/bootstrap/mixins/_background-variant.scss
      @@ -0,0 +1,12 @@
      +// Contextual backgrounds
      +
      +// [converter] $parent hack
      +@mixin bg-variant($parent, $color) {
      +  #{$parent} {
      +	background-color: $color;
      +  }
      +  a#{$parent}:hover,
      +  a#{$parent}:focus {
      +	background-color: darken($color, 10%);
      +  }
      +}
      diff --git a/openecomp-ui/resources/scss/bootstrap/mixins/_border-radius.scss b/openecomp-ui/resources/scss/bootstrap/mixins/_border-radius.scss
      new file mode 100644
      index 0000000000..30e065daf8
      --- /dev/null
      +++ b/openecomp-ui/resources/scss/bootstrap/mixins/_border-radius.scss
      @@ -0,0 +1,21 @@
      +// Single side border-radius
      +
      +@mixin border-top-radius($radius) {
      +  border-top-right-radius: $radius;
      +  border-top-left-radius: $radius;
      +}
      +
      +@mixin border-right-radius($radius) {
      +  border-bottom-right-radius: $radius;
      +  border-top-right-radius: $radius;
      +}
      +
      +@mixin border-bottom-radius($radius) {
      +  border-bottom-right-radius: $radius;
      +  border-bottom-left-radius: $radius;
      +}
      +
      +@mixin border-left-radius($radius) {
      +  border-bottom-left-radius: $radius;
      +  border-top-left-radius: $radius;
      +}
      diff --git a/openecomp-ui/resources/scss/bootstrap/mixins/_buttons.scss b/openecomp-ui/resources/scss/bootstrap/mixins/_buttons.scss
      new file mode 100644
      index 0000000000..255c259ddb
      --- /dev/null
      +++ b/openecomp-ui/resources/scss/bootstrap/mixins/_buttons.scss
      @@ -0,0 +1,68 @@
      +// Button variants
      +//
      +// Easily pump out default styles, as well as :hover, :focus, :active,
      +// and disabled options for all buttons
      +
      +@mixin button-variant($color, $background, $border) {
      +  color: $color;
      +  background-color: $background;
      +  border-color: $border;
      +
      +  &:focus,
      +  &.focus {
      +	color: $color;
      +	background-color: darken($background, 10%);
      +	border-color: darken($border, 25%);
      +  }
      +  &:hover {
      +	color: $color;
      +	background-color: darken($background, 10%);
      +	border-color: darken($border, 12%);
      +  }
      +  &:active,
      +  &.active,
      +  .open > &.dropdown-toggle {
      +	color: $color;
      +	background-color: darken($background, 10%);
      +	border-color: darken($border, 12%);
      +
      +	&:hover,
      +	&:focus,
      +	&.focus {
      +	  color: $color;
      +	  background-color: darken($background, 17%);
      +	  border-color: darken($border, 25%);
      +	}
      +  }
      +  &:active,
      +  &.active,
      +  .open > &.dropdown-toggle {
      +	background-image: none;
      +  }
      +  &.disabled,
      +  &[disabled],
      +  fieldset[disabled] & {
      +	&,
      +	&:hover,
      +	&:focus,
      +	&.focus,
      +	&:active,
      +	&.active {
      +	  background-color: $background;
      +	  border-color: $border;
      +	}
      +  }
      +
      +  .badge {
      +	color: $background;
      +	background-color: $color;
      +  }
      +}
      +
      +// Button sizes
      +@mixin button-size($padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) {
      +  padding: $padding-vertical $padding-horizontal;
      +  font-size: $font-size;
      +  line-height: $line-height;
      +  border-radius: $border-radius;
      +}
      diff --git a/openecomp-ui/resources/scss/bootstrap/mixins/_center-block.scss b/openecomp-ui/resources/scss/bootstrap/mixins/_center-block.scss
      new file mode 100644
      index 0000000000..e06fb5e276
      --- /dev/null
      +++ b/openecomp-ui/resources/scss/bootstrap/mixins/_center-block.scss
      @@ -0,0 +1,7 @@
      +// Center-align a block level element
      +
      +@mixin center-block() {
      +  display: block;
      +  margin-left: auto;
      +  margin-right: auto;
      +}
      diff --git a/openecomp-ui/resources/scss/bootstrap/mixins/_clearfix.scss b/openecomp-ui/resources/scss/bootstrap/mixins/_clearfix.scss
      new file mode 100644
      index 0000000000..8042d1823b
      --- /dev/null
      +++ b/openecomp-ui/resources/scss/bootstrap/mixins/_clearfix.scss
      @@ -0,0 +1,22 @@
      +// Clearfix
      +//
      +// For modern browsers
      +// 1. The space content is one way to avoid an Opera bug when the
      +//    contenteditable attribute is included anywhere else in the document.
      +//    Otherwise it causes space to appear at the top and bottom of elements
      +//    that are clearfixed.
      +// 2. The use of `table` rather than `block` is only necessary if using
      +//    `:before` to contain the top-margins of child elements.
      +//
      +// Source: http://nicolasgallagher.com/micro-clearfix-hack/
      +
      +@mixin clearfix() {
      +  &:before,
      +  &:after {
      +	content: " "; // 1
      +	display: table; // 2
      +  }
      +  &:after {
      +	clear: both;
      +  }
      +}
      diff --git a/openecomp-ui/resources/scss/bootstrap/mixins/_forms.scss b/openecomp-ui/resources/scss/bootstrap/mixins/_forms.scss
      new file mode 100644
      index 0000000000..7a26de5515
      --- /dev/null
      +++ b/openecomp-ui/resources/scss/bootstrap/mixins/_forms.scss
      @@ -0,0 +1,87 @@
      +// Form validation states
      +//
      +// Used in forms.less to generate the form validation CSS for warnings, errors,
      +// and successes.
      +
      +@mixin form-control-validation($text-color: #555, $border-color: #ccc, $background-color: #f5f5f5) {
      +  // Color the label and help text
      +  .help-block,
      +  .control-label,
      +  .radio,
      +  .checkbox,
      +  .radio-inline,
      +  .checkbox-inline,
      +  &.radio label,
      +  &.checkbox label,
      +  &.radio-inline label,
      +  &.checkbox-inline label {
      +	color: $text-color;
      +  }
      +  // Set the border and box shadow on specific inputs to match
      +  .form-control {
      +	border-color: $border-color;
      +	@include box-shadow(inset 0 1px 1px rgba(0, 0, 0, .075)); // Redeclare so transitions work
      +	&:focus {
      +	  border-color: darken($border-color, 10%);
      +	  $shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px lighten($border-color, 20%);
      +	  @include box-shadow($shadow);
      +	}
      +  }
      +  // Set validation states also for addons
      +  .input-group-addon {
      +	color: $text-color;
      +	border-color: $border-color;
      +	background-color: $background-color;
      +  }
      +  // Optional feedback icon
      +  .form-control-feedback {
      +	color: $text-color;
      +  }
      +}
      +
      +// Form control focus state
      +//
      +// Generate a customized focus state and for any input with the specified color,
      +// which defaults to the `$input-border-focus` variable.
      +//
      +// We highly encourage you to not customize the default value, but instead use
      +// this to tweak colors on an as-needed basis. This aesthetic change is based on
      +// WebKit's default styles, but applicable to a wider range of browsers. Its
      +// usability and accessibility should be taken into account with any change.
      +//
      +// Example usage: change the default blue border and shadow to white for better
      +// contrast against a dark gray background.
      +@mixin form-control-focus($color: $input-border-focus) {
      +  $color-rgba: rgba(red($color), green($color), blue($color), .6);
      +  &:focus {
      +	border-color: $color;
      +	outline: 0;
      +	@include box-shadow(inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px $color-rgba);
      +  }
      +}
      +
      +// Form control sizing
      +//
      +// Relative text size, padding, and border-radii changes for form controls. For
      +// horizontal sizing, wrap controls in the predefined grid classes. ` this.searchInputNode = input}
      +					className={inputClasses}
      +					groupClassName='expandable-input-control'
      +					onChange={e => this.handleInput(e)}
      +					onFocus={this.handleFocus}/>
      +				{this.state.showInput && this.state.value && }
      +				{!this.state.value && }
      +			
      + ); + } +} + +export default ExpandableInput; diff --git a/openecomp-ui/src/nfvo-components/input/SelectInput.jsx b/openecomp-ui/src/nfvo-components/input/SelectInput.jsx new file mode 100644 index 0000000000..1036ac41c3 --- /dev/null +++ b/openecomp-ui/src/nfvo-components/input/SelectInput.jsx @@ -0,0 +1,52 @@ +/** + * The HTML structure here is aligned with bootstrap HTML structure for form elements. + * In this way we have proper styling and it is aligned with other form elements on screen. + * + * Select and MultiSelect options: + * + * label - the label to be shown which paired with the input + * + * all other "react-select" props - as documented on + * http://jedwatson.github.io/react-select/ + * or + * https://github.com/JedWatson/react-select + */ +import React, {Component} from 'react'; +import Select from 'react-select'; + +class SelectInput extends Component { + + inputValue = []; + + render() { + let {label, value, ...other} = this.props; + return ( +
      +
      + {label && } + + +
      +
      + ); + } + + click = () => { + let value = !this.state.value; + this.setState({value}); + + let onChange = this.props.onChange; + if (onChange) { + onChange(value); + } + } + + getValue() { + return this.state.value; + } +} diff --git a/openecomp-ui/src/nfvo-components/input/dualListbox/DualListboxView.jsx b/openecomp-ui/src/nfvo-components/input/dualListbox/DualListboxView.jsx new file mode 100644 index 0000000000..171bead9bb --- /dev/null +++ b/openecomp-ui/src/nfvo-components/input/dualListbox/DualListboxView.jsx @@ -0,0 +1,132 @@ +import React from 'react'; +import FontAwesome from 'react-fontawesome'; +import Input from 'react-bootstrap/lib/Input.js'; + +class DualListboxView extends React.Component { + + static propTypes = { + + availableList: React.PropTypes.arrayOf(React.PropTypes.shape({ + id: React.PropTypes.string.isRequired, + name: React.PropTypes.string.isRequired + })), + filterTitle: React.PropTypes.shape({ + left: React.PropTypes.string, + right: React.PropTypes.string + }), + selectedValuesList: React.PropTypes.arrayOf(React.PropTypes.string), + + onChange: React.PropTypes.func.isRequired + }; + + static defaultProps = { + selectedValuesList: [], + availableList: [], + filterTitle: { + left: '', + right: '' + } + }; + + state = { + availableListFilter: '', + selectedValuesListFilter: '' + }; + + static contextTypes = { + isReadOnlyMode: React.PropTypes.bool + }; + + render() { + let {availableList, selectedValuesList, filterTitle} = this.props; + let {availableListFilter, selectedValuesListFilter} = this.state; + let isReadOnlyMode = this.context.isReadOnlyMode; + + let unselectedList = availableList.filter(availableItem => !selectedValuesList.find(value => value === availableItem.id)); + let selectedList = availableList.filter(availableItem => selectedValuesList.find(value => value === availableItem.id)); + selectedList = selectedList.sort((a, b) => selectedValuesList.indexOf(a.id) - selectedValuesList.indexOf(b.id)); + + return ( +
      + {this.renderListbox(filterTitle.left, unselectedList, { + value: availableListFilter, + ref: 'availableListFilter', + disabled: isReadOnlyMode, + onChange: () => this.setState({availableListFilter: this.refs.availableListFilter.getValue()}) + }, {ref: 'availableValues', disabled: isReadOnlyMode})} + {this.renderOperationsBar(isReadOnlyMode)} + {this.renderListbox(filterTitle.right, selectedList, { + value: selectedValuesListFilter, + ref: 'selectedValuesListFilter', + disabled: isReadOnlyMode, + onChange: () => this.setState({selectedValuesListFilter: this.refs.selectedValuesListFilter.getValue()}) + }, {ref: 'selectedValues', disabled: isReadOnlyMode})} +
      + ); + } + + renderListbox(filterTitle, list, filterProps, props) { + let regExFilter = new RegExp(escape(filterProps.value), 'i'); + let matchedItems = list.filter(item => item.name.match(regExFilter)); + let unMatchedItems = list.filter(item => !item.name.match(regExFilter)); + + + return ( +
      +

      {filterTitle}

      +
      + + +
      + + {matchedItems.map(item => this.renderOption(item.id, item.name))} + {matchedItems.length && unMatchedItems.length && } + {unMatchedItems.map(item => this.renderOption(item.id, item.name))} + +
      + ); + } + + renderOption(value, name) { + return (); + } + + renderOperationsBar(isReadOnlyMode) { + return ( +
      + {this.renderOperationBarButton(() => this.addToSelectedList(), 'angle-right')} + {this.renderOperationBarButton(() => this.removeFromSelectedList(), 'angle-left')} + {this.renderOperationBarButton(() => this.addAllToSelectedList(), 'angle-double-right')} + {this.renderOperationBarButton(() => this.removeAllFromSelectedList(), 'angle-double-left')} +
      + ); + } + + renderOperationBarButton(onClick, fontAwesomeIconName){ + return (
      ); + } + + addToSelectedList() { + this.props.onChange(this.props.selectedValuesList.concat(this.refs.availableValues.getValue())); + } + + removeFromSelectedList() { + const selectedValues = this.refs.selectedValues.getValue(); + this.props.onChange(this.props.selectedValuesList.filter(value => !selectedValues.find(selectedValue => selectedValue === value))); + } + + addAllToSelectedList() { + this.props.onChange(this.props.availableList.map(item => item.id)); + } + + removeAllFromSelectedList() { + this.props.onChange([]); + } +} + +export default DualListboxView; diff --git a/openecomp-ui/src/nfvo-components/input/inputOptions/InputOptions.jsx b/openecomp-ui/src/nfvo-components/input/inputOptions/InputOptions.jsx new file mode 100644 index 0000000000..5daaffea41 --- /dev/null +++ b/openecomp-ui/src/nfvo-components/input/inputOptions/InputOptions.jsx @@ -0,0 +1,221 @@ +import React from 'react'; +import i18n from 'nfvo-utils/i18n/i18n.js'; +import classNames from 'classnames'; +import Select from 'nfvo-components/input/SelectInput.jsx'; + +export const other = {OTHER: 'Other'}; + +class InputOptions extends React.Component { + + static propTypes = { + values: React.PropTypes.arrayOf(React.PropTypes.shape({ + enum: React.PropTypes.string, + title: React.PropTypes.string + })), + isEnabledOther: React.PropTypes.bool, + title: React.PropTypes.string, + selectedValue: React.PropTypes.string, + multiSelectedEnum: React.PropTypes.array, + selectedEnum: React.PropTypes.string, + otherValue: React.PropTypes.string, + onEnumChange: React.PropTypes.func, + onOtherChange: React.PropTypes.func, + isRequired: React.PropTypes.bool, + isMultiSelect: React.PropTypes.bool + }; + + + static contextTypes = { + isReadOnlyMode: React.PropTypes.bool + }; + + state = { + otherInputDisabled: !this.props.otherValue + }; + + oldProps = { + selectedEnum: '', + otherValue: '', + multiSelectedEnum: [] + }; + + render() { + let {label, isRequired, values, otherValue, onOtherChange, isMultiSelect, onBlur, multiSelectedEnum, selectedEnum, hasError, validations, children} = this.props; + + let currentMultiSelectedEnum = []; + let currentSelectedEnum = ''; + let {otherInputDisabled} = this.state; + if (isMultiSelect) { + currentMultiSelectedEnum = multiSelectedEnum; + if(!otherInputDisabled) { + currentSelectedEnum = multiSelectedEnum ? multiSelectedEnum.toString() : undefined; + } + } + else if(selectedEnum){ + currentSelectedEnum = selectedEnum; + } + + let isReadOnlyMode = this.context.isReadOnlyMode; + + return( +
      + {label && } + {isMultiSelect && otherInputDisabled ? + onBlur()} + disabled={isReadOnlyMode || Boolean(this.props.disabled)} + onChange={ value => this.enumChanged(value)} + type='select'> + {values && values.length && values.map(val => this.renderOptions(val))} + {onOtherChange && } + {children} + + + {!otherInputDisabled &&
      } + onBlur()} + onChange={() => this.changedOtherInput()}/> +
      + } +
      + ); + } + + renderOptions(val){ + return( + + ); + } + + + renderMultiSelectOptions(values) { + let {onOtherChange} = this.props; + let optionsList = []; + if (onOtherChange) { + optionsList = values.map(option => { + return { + label: option.title, + value: option.enum, + }; + }).concat([{ + label: i18n(other.OTHER), + value: i18n(other.OTHER), + }]); + } + else { + optionsList = values.map(option => { + return { + label: option.title, + value: option.enum, + }; + }); + } + if (optionsList.length > 0 && optionsList[0].value === '') { + optionsList.shift(); + } + return optionsList; + } + + getValue() { + let res = ''; + let {isMultiSelect} = this.props; + let {otherInputDisabled} = this.state; + + if (otherInputDisabled) { + res = isMultiSelect ? this.refs._myInput.getValue() : this.refs._myInput.value; + } else { + res = this.refs._otherValue.value; + } + return res; + } + + enumChanged() { + let enumValue = this.refs._myInput.value; + let {onEnumChange, isMultiSelect, onChange} = this.props; + this.setState({ + otherInputDisabled: enumValue !== other.OTHER + }); + + let value = isMultiSelect ? [enumValue] : enumValue; + if (onEnumChange) { + onEnumChange(value); + } + if (onChange) { + onChange(value); + } + } + + multiSelectEnumChanged(enumValue) { + let {onEnumChange} = this.props; + let selectedValues = enumValue.map(enumVal => { + return enumVal.value; + }); + + if (this.state.otherInputDisabled === false) { + selectedValues.shift(); + } + else if (selectedValues.includes(i18n(other.OTHER))) { + selectedValues = [i18n(other.OTHER)]; + } + + this.setState({ + otherInputDisabled: !selectedValues.includes(i18n(other.OTHER)) + }); + onEnumChange(selectedValues); + } + + changedOtherInput() { + let {onOtherChange} = this.props; + onOtherChange(this.refs._otherValue.value); + } + + componentDidUpdate() { + let {otherValue, selectedEnum, onInputChange, multiSelectedEnum} = this.props; + if (this.oldProps.otherValue !== otherValue + || this.oldProps.selectedEnum !== selectedEnum + || this.oldProps.multiSelectedEnum !== multiSelectedEnum) { + this.oldProps = { + otherValue, + selectedEnum, + multiSelectedEnum + }; + onInputChange(); + } + } + + static getTitleByName(values, name) { + for (let key of Object.keys(values)) { + let option = values[key].find(option => option.enum === name); + if (option) { + return option.title; + } + } + return name; + } + +} + +export default InputOptions; diff --git a/openecomp-ui/src/nfvo-components/input/validation/ValidationButtons.jsx b/openecomp-ui/src/nfvo-components/input/validation/ValidationButtons.jsx new file mode 100644 index 0000000000..a87c8d6f40 --- /dev/null +++ b/openecomp-ui/src/nfvo-components/input/validation/ValidationButtons.jsx @@ -0,0 +1,40 @@ +/** + * Holds the buttons for save/reset for forms. + * Used by the ValidationForm that changes the state of the buttons according to its own state. + * + * properties: + * labledButtons - whether or not to use labeled buttons or icons only + */ +import React from 'react'; +import i18n from 'nfvo-utils/i18n/i18n.js'; +import Button from 'react-bootstrap/lib/Button.js'; +import FontAwesome from 'react-fontawesome'; + +class ValidationButtons extends React.Component { + + static propTypes = { + labledButtons: React.PropTypes.bool.isRequired, + isReadOnlyMode: React.PropTypes.bool + }; + + state = { + isValid: this.props.formValid + }; + + render() { + var submitBtn = this.props.labledButtons ? i18n('Save') : ; + var closeBtn = this.props.labledButtons ? i18n('Cancel') : ; + return ( +
      + {!this.props.isReadOnlyMode ? +
      + + +
      + : + } +
      + ); + } +} +export default ValidationButtons; diff --git a/openecomp-ui/src/nfvo-components/input/validation/ValidationForm.jsx b/openecomp-ui/src/nfvo-components/input/validation/ValidationForm.jsx new file mode 100644 index 0000000000..098ccf1fd4 --- /dev/null +++ b/openecomp-ui/src/nfvo-components/input/validation/ValidationForm.jsx @@ -0,0 +1,200 @@ +/** + * ValidationForm should be used in order to have a form that handles it's internal validation state. + * All ValidationInputs inside the form are checked for validity and the styling and submit buttons + * are updated accordingly. + * + * The properties that ahould be given to the form: + * labledButtons - whether or not use icons only as the form default buttons or use buttons with labels + * onSubmit - function for click on the submit button + * onReset - function for click on the reset button + */ +import React from 'react'; +import JSONSchema from 'nfvo-utils/json/JSONSchema.js'; +import JSONPointer from 'nfvo-utils/json/JSONPointer.js'; +import ValidationButtons from './ValidationButtons.jsx'; + +class ValidationForm extends React.Component { + + static childContextTypes = { + validationParent: React.PropTypes.any, + isReadOnlyMode: React.PropTypes.bool, + validationSchema: React.PropTypes.instanceOf(JSONSchema), + validationData: React.PropTypes.object + }; + + static defaultProps = { + hasButtons : true, + onSubmit : null, + onReset : null, + labledButtons: true, + onValidChange : null, + isValid: true + }; + + static propTypes = { + isValid : React.PropTypes.bool, + isReadOnlyMode : React.PropTypes.bool, + hasButtons : React.PropTypes.bool, + onSubmit : React.PropTypes.func, + onReset : React.PropTypes.func, + labledButtons: React.PropTypes.bool, + onValidChange : React.PropTypes.func, + onValidityChanged: React.PropTypes.func, + schema: React.PropTypes.object, + data: React.PropTypes.object + }; + + state = { + isValid: this.props.isValid + }; + + constructor(props) { + super(props); + this.validationComponents = []; + } + + componentWillMount() { + let {schema, data} = this.props; + if (schema) { + this.processSchema(schema, data); + } + } + + componentWillReceiveProps(nextProps) { + let {schema, data} = this.props; + let {schema: nextSchema, data: nextData} = nextProps; + + if (schema !== nextSchema || data !== nextData) { + if (!schema || !nextSchema) { + throw new Error('ValidationForm: dynamically adding/removing schema is not supported'); + } + + if (schema !== nextSchema) { + this.processSchema(nextSchema, nextData); + } else { + this.setState({data: nextData}); + } + } + } + + processSchema(rawSchema, rawData) { + let schema = new JSONSchema(); + schema.setSchema(rawSchema); + let data = schema.processData(rawData); + this.setState({ + schema, + data + }); + } + + render() { + // eslint-disable-next-line no-unused-vars + let {isValid, isReadOnlyMode, hasButtons, onSubmit, labledButtons, onValidChange, onValidityChanged, schema, data, children, ...formProps} = this.props; + return ( +
      this.handleFormSubmit(event)}> +
      {children}
      + {hasButtons && } + + ); + } + + handleFormSubmit(event) { + event.preventDefault(); + let isFormValid = true; + this.validationComponents.forEach(validationComponent => { + const isInputValid = validationComponent.validate().isValid; + isFormValid = isInputValid && isFormValid; + }); + if(isFormValid && this.props.onSubmit) { + return this.props.onSubmit(event); + } else if(!isFormValid) { + this.setState({isValid: false}); + } + } + + componentWillUpdate(nextProps, nextState) { + if(this.state.isValid !== nextState.isValid && this.props.onValidityChanged) { + this.props.onValidityChanged(nextState.isValid); + } + } + + componentDidUpdate(prevProps, prevState) { + // only handling this programatically if the validation of the form is done outside of the view + // (example with a form that is dependent on the state of other forms) + if (prevProps.isValid !== this.props.isValid) { + if (this.props.hasButtons) { + this.refs.buttons.setState({isValid: this.state.isValid}); + } + } else if(this.state.isValid !== prevState.isValid) { + if (this.props.hasButtons) { + this.refs.buttons.setState({isValid: this.state.isValid}); + } + // callback in case form is part of bigger picture in view + if (this.props.onValidChange) { + this.props.onValidChange(this.state.isValid); + } + } + } + + componentDidMount() { + if (this.props.hasButtons) { + this.refs.buttons.setState({isValid: this.state.isValid}); + } + } + + + getChildContext() { + return { + validationParent: this, + isReadOnlyMode: this.props.isReadOnlyMode, + validationSchema: this.state.schema, + validationData: this.state.data + }; + } + + + /*** + * Used by ValidationInput in order to let the (parent) form know + * the valid state. If there is a change in the state of the form, + * the buttons will be updated. + * + * @param validationComponent + * @param isValid + */ + childValidStateChanged(validationComponent, isValid) { + if (isValid !== this.state.isValid) { + let oldState = this.state.isValid; + let newState = isValid && this.validationComponents.filter(otherValidationComponent => validationComponent !== otherValidationComponent).every(otherValidationComponent => { + return otherValidationComponent.isValid(); + }); + + if (oldState !== newState) { + this.setState({isValid: newState}); + } + } + } + + register(validationComponent) { + if (this.state.schema) { + // TODO: register + } else { + this.validationComponents.push(validationComponent); + } + } + + unregister(validationComponent) { + this.childValidStateChanged(validationComponent, true); + this.validationComponents = this.validationComponents.filter(otherValidationComponent => validationComponent !== otherValidationComponent); + } + + onValueChanged(pointer, value, isValid, error) { + this.props.onDataChanged({ + data: JSONPointer.setValue(this.props.data, pointer, value), + isValid, + error + }); + } +} + + +export default ValidationForm; diff --git a/openecomp-ui/src/nfvo-components/input/validation/ValidationInput.jsx b/openecomp-ui/src/nfvo-components/input/validation/ValidationInput.jsx new file mode 100644 index 0000000000..0f14307645 --- /dev/null +++ b/openecomp-ui/src/nfvo-components/input/validation/ValidationInput.jsx @@ -0,0 +1,509 @@ +/** + * Used for inputs on a validation form. + * All properties will be passed on to the input element. + * + * The following properties can be set for OOB validations and callbacks: + - required: Boolean: Should be set to true if the input must have a value + - numeric: Boolean : Should be set to true id the input should be an integer + - onChange : Function : Will be called to validate the value if the default validations are not sufficient, should return a boolean value + indicating whether the value is valid + - didUpdateCallback :Function: Will be called after the state has been updated and the component has rerendered. This can be used if + there are dependencies between inputs in a form. + * + * The following properties of the state can be set to determine + * the state of the input from outside components: + - isValid : Boolean - whether the value is valid + - value : value for the input field, + - disabled : Boolean, + - required : Boolean - whether the input value must be filled out. + */ +import React from 'react'; +import ReactDOM from 'react-dom'; +import Validator from 'validator'; +import FormGroup from 'react-bootstrap/lib/FormGroup.js'; +import Input from 'react-bootstrap/lib/Input.js'; +import Overlay from 'react-bootstrap/lib/Overlay.js'; +import Tooltip from 'react-bootstrap/lib/Tooltip.js'; +import isEqual from 'lodash/isEqual.js'; +import i18n from 'nfvo-utils/i18n/i18n.js'; +import JSONSchema from 'nfvo-utils/json/JSONSchema.js'; +import JSONPointer from 'nfvo-utils/json/JSONPointer.js'; + + +import InputOptions from '../inputOptions/InputOptions.jsx'; + +const globalValidationFunctions = { + required: value => value !== '', + maxLength: (value, length) => Validator.isLength(value, {max: length}), + minLength: (value, length) => Validator.isLength(value, {min: length}), + pattern: (value, pattern) => Validator.matches(value, pattern), + numeric: value => { + if (value === '') { + // to allow empty value which is not zero + return true; + } + return Validator.isNumeric(value); + }, + maxValue: (value, maxValue) => value < maxValue, + minValue: (value, minValue) => value >= minValue, + alphanumeric: value => Validator.isAlphanumeric(value), + alphanumericWithSpaces: value => Validator.isAlphanumeric(value.replace(/ /g, '')), + validateName: value => Validator.isAlphanumeric(value.replace(/\s|\.|\_|\-/g, ''), 'en-US'), + validateVendorName: value => Validator.isAlphanumeric(value.replace(/[\x7F-\xFF]|\s/g, ''), 'en-US'), + freeEnglishText: value => Validator.isAlphanumeric(value.replace(/\s|\.|\_|\-|\,|\(|\)|\?/g, ''), 'en-US'), + email: value => Validator.isEmail(value), + ip: value => Validator.isIP(value), + url: value => Validator.isURL(value) +}; + +const globalValidationMessagingFunctions = { + required: () => i18n('Field is required'), + maxLength: (value, maxLength) => i18n('Field value has exceeded it\'s limit, {maxLength}. current length: {length}', { + length: value.length, + maxLength + }), + minLength: (value, minLength) => i18n('Field value should contain at least {minLength} characters.', {minLength}), + pattern: (value, pattern) => i18n('Field value should match the pattern: {pattern}.', {pattern}), + numeric: () => i18n('Field value should contain numbers only.'), + maxValue: (value, maxValue) => i18n('Field value should be less than: {maxValue}.', {maxValue}), + minValue: (value, minValue) => i18n('Field value should be at least: {minValue}.', {minValue}), + alphanumeric: () => i18n('Field value should contain letters or digits only.'), + alphanumericWithSpaces: () => i18n('Field value should contain letters, digits or spaces only.'), + validateName: ()=> i18n('Field value should contain English letters, digits , spaces, underscores, dashes and dots only.'), + validateVendorName: ()=> i18n('Field value should contain English letters digits and spaces only.'), + freeEnglishText: ()=> i18n('Field value should contain English letters, digits , spaces, underscores, dashes and dots only.'), + email: () => i18n('Field value should be a valid email address.'), + ip: () => i18n('Field value should be a valid ip address.'), + url: () => i18n('Field value should be a valid url address.'), + general: () => i18n('Field value is invalid.') +}; + +class ValidationInput extends React.Component { + + static contextTypes = { + validationParent: React.PropTypes.any, + isReadOnlyMode: React.PropTypes.bool, + validationSchema: React.PropTypes.instanceOf(JSONSchema), + validationData: React.PropTypes.object + }; + + static defaultProps = { + onChange: null, + disabled: null, + didUpdateCallback: null, + validations: {}, + value: '' + }; + + static propTypes = { + type: React.PropTypes.string.isRequired, + onChange: React.PropTypes.func, + disabled: React.PropTypes.bool, + didUpdateCallback: React.PropTypes.func, + validations: React.PropTypes.object, + isMultiSelect: React.PropTypes.bool, + onOtherChange: React.PropTypes.func, + pointer: React.PropTypes.string + }; + + + state = { + isValid: true, + style: null, + value: this.props.value, + error: {}, + previousErrorMessage: '', + wasInvalid: false, + validations: this.props.validations, + isMultiSelect: this.props.isMultiSelect + }; + + componentWillMount() { + if (this.context.validationSchema) { + let {validationSchema: schema, validationData: data} = this.context, + {pointer} = this.props; + + if (!schema.exists(pointer)) { + console.error(`Field doesn't exists in the schema ${pointer}`); + } + + let value = JSONPointer.getValue(data, pointer); + if (value === undefined) { + value = schema.getDefault(pointer); + if (value === undefined) { + value = ''; + } + } + this.setState({value}); + + let enums = schema.getEnum(pointer); + if (enums) { + let values = enums.map(value => ({enum: value, title: value, groupName: pointer})), + isMultiSelect = schema.isArray(pointer); + + if (!isMultiSelect && this.props.type !== 'radiogroup') { + values = [{enum: '', title: i18n('Select...')}, ...values]; + } + if (isMultiSelect && Array.isArray(value) && value.length === 0) { + value = ''; + } + + this.setState({ + isMultiSelect, + values, + onEnumChange: value => this.changedInputOptions(value), + value + }); + } + + this.setState({validations: this.extractValidationsFromSchema(schema, pointer, this.props)}); + } + } + + extractValidationsFromSchema(schema, pointer, props) { + /* props are here to get precedence over the scheme definitions */ + let validations = {}; + + if (schema.isRequired(pointer)) { + validations.required = true; + } + + if (schema.isNumber(pointer)) { + validations.numeric = true; + + const maxValue = props.validations.maxValue || schema.getMaxValue(pointer); + if (maxValue !== undefined) { + validations.maxValue = maxValue; + } + + const minValue = props.validations.minValue || schema.getMinValue(pointer); + if (minValue !== undefined) { + validations.minValue = minValue; + } + } + + + if (schema.isString(pointer)) { + + const pattern = schema.getPattern(pointer); + if (pattern) { + validations.pattern = pattern; + } + + const maxLength = schema.getMaxLength(pointer); + if (maxLength !== undefined) { + validations.maxLength = maxLength; + } + + const minLength = schema.getMinLength(pointer); + if (minLength !== undefined) { + validations.minLength = minLength; + } + } + + return validations; + } + + componentWillReceiveProps({value: nextValue, validations: nextValidations, pointer: nextPointer}, nextContext) { + const {validations, value} = this.props; + const validationsChanged = !isEqual(validations, nextValidations); + if (nextContext.validationSchema) { + if (this.props.pointer !== nextPointer || + this.context.validationData !== nextContext.validationData) { + let currentValue = JSONPointer.getValue(this.context.validationData, this.props.pointer), + nextValue = JSONPointer.getValue(nextContext.validationData, nextPointer); + if(nextValue === undefined) { + nextValue = ''; + } + if (this.state.isMultiSelect && Array.isArray(nextValue) && nextValue.length === 0) { + nextValue = ''; + } + if (currentValue !== nextValue) { + this.setState({value: nextValue}); + } + if (validationsChanged) { + this.setState({ + validations: this.extractValidationsFromSchema(nextContext.validationSchema, nextPointer, {validations: nextValidations}) + }); + } + } + } else { + if (validationsChanged) { + this.setState({validations: nextValidations}); + } + if (this.state.wasInvalid && (value !== nextValue || validationsChanged)) { + this.validate(nextValue, nextValidations); + } else if (value !== nextValue) { + this.setState({value: nextValue}); + } + } + } + + shouldTypeBeNumberBySchemeDefinition(pointer) { + return this.context.validationSchema && + this.context.validationSchema.isNumber(pointer); + } + + hasEnum(pointer) { + return this.context.validationSchema && + this.context.validationSchema.getEnum(pointer); + } + + render() { + let {value, isMultiSelect, values, onEnumChange, style, isValid, validations} = this.state; + let {onOtherChange, type, pointer} = this.props; + if (this.shouldTypeBeNumberBySchemeDefinition(pointer) && !this.hasEnum(pointer)) { + type = 'number'; + } + let props = {...this.props}; + + let groupClasses = this.props.groupClassName || ''; + if (validations.required) { + groupClasses += ' required'; + } + let isReadOnlyMode = this.context.isReadOnlyMode; + + if (value === true && (type === 'checkbox' || type === 'radio')) { + props.checked = true; + } + return ( +
      + { + !isMultiSelect && !onOtherChange && type !== 'select' && type !== 'radiogroup' + && this.changedInput()} + onBlur={() => this.blurInput()}> + {this.props.children} + + } + { + type === 'radiogroup' + && + { + values.map(val => + this.changedInput()}/> + ) + } + + } + { + (isMultiSelect || onOtherChange || type === 'select') + && this.changedInput()} + onBlur={() => this.blurInput()} + hasError={!isValid} + ref={'_myInput'} + isMultiSelect={isMultiSelect} + values={values} + onEnumChange={onEnumChange} + selectedEnum={value} + multiSelectedEnum={value} + {...props} /> + } + {this.renderOverlay()} +
      + ); + } + + renderOverlay() { + let position = 'right'; + if (this.props.type === 'text' + || this.props.type === 'email' + || this.props.type === 'number' + || this.props.type === 'password' + + ) { + position = 'bottom'; + } + + let validationMessage = this.state.error.message || this.state.previousErrorMessage; + return ( + { + let target = ReactDOM.findDOMNode(this.refs._myInput); + return target.offsetParent ? target : undefined; + }} + container={this}> + + {validationMessage} + + + ); + } + + componentDidMount() { + if (this.context.validationParent) { + this.context.validationParent.register(this); + } + } + + componentDidUpdate(prevProps, prevState) { + if (this.context.validationParent) { + if (prevState.isValid !== this.state.isValid) { + this.context.validationParent.childValidStateChanged(this, this.state.isValid); + } + } + if (this.props.didUpdateCallback) { + this.props.didUpdateCallback(); + } + + } + + componentWillUnmount() { + if (this.context.validationParent) { + this.context.validationParent.unregister(this); + } + } + + isNumberInputElement() { + return this.props.type === 'number' || this.refs._myInput.props.type === 'number'; + } + + /*** + * Adding same method as the actual input component + * @returns {*} + */ + getValue() { + if (this.props.type === 'checkbox') { + return this.refs._myInput.getChecked(); + } + if (this.props.type === 'radiogroup') { + for (let key in this.refs) { // finding the value of the radio button that was checked + if (this.refs[key].getChecked()) { + return this.refs[key].getValue(); + } + } + } + if (this.isNumberInputElement()) { + return Number(this.refs._myInput.getValue()); + } + + return this.refs._myInput.getValue(); + } + + resetValue() { + this.setState({value: this.props.value}); + } + + + /*** + * internal method that validated the value. includes callback to the onChange method + * @param value + * @param validations - map containing validation id and the limitation describing the validation. + * @returns {object} + */ + validateValue = (value, validations) => { + let {customValidationFunction} = validations; + let error = {}; + let isValid = true; + for (let validation in validations) { + if ('customValidationFunction' !== validation) { + if (validations[validation]) { + if (!globalValidationFunctions[validation](value, validations[validation])) { + error.id = validation; + error.message = globalValidationMessagingFunctions[validation](value, validations[validation]); + isValid = false; + break; + } + } + } else { + let customValidationResult = customValidationFunction(value); + + if (customValidationResult !== true) { + error.id = 'custom'; + isValid = false; + if (typeof customValidationResult === 'string') {//custom validation error message supplied. + error.message = customValidationResult; + } else { + error.message = globalValidationMessagingFunctions.general(); + } + break; + } + + + } + } + + return { + isValid, + error + }; + }; + + /*** + * Internal method that handles the change event of the input. validates and updates the state. + */ + changedInput() { + + let {isValid, error} = this.state.wasInvalid ? this.validate() : this.state; + let onChange = this.props.onChange; + if (onChange) { + onChange(this.getValue(), isValid, error); + } + if (this.context.validationSchema) { + let value = this.getValue(); + if (this.state.isMultiSelect && value === '') { + value = []; + } + if (this.shouldTypeBeNumberBySchemeDefinition(this.props.pointer)) { + value = Number(value); + } + this.context.validationParent.onValueChanged(this.props.pointer, value, isValid, error); + } + } + + changedInputOptions(value) { + this.context.validationParent.onValueChanged(this.props.pointer, value, true); + } + + blurInput() { + if (!this.state.wasInvalid) { + this.setState({wasInvalid: true}); + } + + let {isValid, error} = !this.state.wasInvalid ? this.validate() : this.state; + let onBlur = this.props.onBlur; + if (onBlur) { + onBlur(this.getValue(), isValid, error); + } + } + + validate(value = this.getValue(), validations = this.state.validations) { + let validationStatus = this.validateValue(value, validations); + let {isValid, error} = validationStatus; + let _style = isValid ? null : 'error'; + this.setState({ + isValid, + error, + value, + previousErrorMessage: this.state.error.message || '', + style: _style, + wasInvalid: !isValid || this.state.wasInvalid + }); + + return validationStatus; + } + + isValid() { + return this.state.isValid; + } + +} +export default ValidationInput; diff --git a/openecomp-ui/src/nfvo-components/input/validation/ValidationTab.jsx b/openecomp-ui/src/nfvo-components/input/validation/ValidationTab.jsx new file mode 100644 index 0000000000..6036518288 --- /dev/null +++ b/openecomp-ui/src/nfvo-components/input/validation/ValidationTab.jsx @@ -0,0 +1,107 @@ +import React from 'react'; +import Tab from 'react-bootstrap/lib/Tab.js'; + +export default +class ValidationTab extends React.Component { + + static propTypes = { + children: React.PropTypes.node, + eventKey: React.PropTypes.any.isRequired, + onValidationStateChange: React.PropTypes.func //This property is assigned dynamically via React.cloneElement. lookup ValidationTabs.jsx. therefore it cannot be stated as required! + }; + + constructor(props) { + super(props); + this.validationComponents = []; + } + + static childContextTypes = { + validationParent: React.PropTypes.any + }; + + static contextTypes = { + validationParent: React.PropTypes.any + }; + + getChildContext() { + return {validationParent: this}; + } + + state = { + isValid: true, + notifyParent: false + }; + + componentDidMount() { + let validationParent = this.context.validationParent; + if (validationParent) { + validationParent.register(this); + } + } + + componentWillUnmount() { + let validationParent = this.context.validationParent; + if (validationParent) { + validationParent.unregister(this); + } + } + + register(validationComponent) { + this.validationComponents.push(validationComponent); + } + + unregister(validationComponent) { + this.childValidStateChanged(validationComponent, true); + this.validationComponents = this.validationComponents.filter(otherValidationComponent => validationComponent !== otherValidationComponent); + } + + notifyValidStateChangedToParent(isValid) { + + let validationParent = this.context.validationParent; + if (validationParent) { + validationParent.childValidStateChanged(this, isValid); + } + } + + childValidStateChanged(validationComponent, isValid) { + + const currentValidState = this.state.isValid; + if (isValid !== currentValidState) { + let filteredValidationComponents = this.validationComponents.filter(otherValidationComponent => validationComponent !== otherValidationComponent); + let newValidState = isValid && filteredValidationComponents.every(otherValidationComponent => { + return otherValidationComponent.isValid(); + }); + this.setState({isValid: newValidState, notifyParent: true}); + } + } + + validate() { + let isValid = true; + this.validationComponents.forEach(validationComponent => { + const isValidationComponentValid = validationComponent.validate().isValid; + isValid = isValidationComponentValid && isValid; + }); + this.setState({isValid, notifyParent: false}); + return {isValid}; + } + + componentDidUpdate(prevProps, prevState) { + if(prevState.isValid !== this.state.isValid) { + if(this.state.notifyParent) { + this.notifyValidStateChangedToParent(this.state.isValid); + } + this.props.onValidationStateChange(this.props.eventKey, this.state.isValid); + } + } + + isValid() { + return this.state.isValid; + } + + render() { + let {children, ...tabProps} = this.props; + return ( + {children} + ); + } +} diff --git a/openecomp-ui/src/nfvo-components/input/validation/ValidationTabs.jsx b/openecomp-ui/src/nfvo-components/input/validation/ValidationTabs.jsx new file mode 100644 index 0000000000..6eda4b9827 --- /dev/null +++ b/openecomp-ui/src/nfvo-components/input/validation/ValidationTabs.jsx @@ -0,0 +1,72 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; +import Tabs from 'react-bootstrap/lib/Tabs.js'; +import Overlay from 'react-bootstrap/lib/Overlay.js'; +import Tooltip from 'react-bootstrap/lib/Tooltip.js'; + +import i18n from 'nfvo-utils/i18n/i18n.js'; + +export default +class ValidationTab extends React.Component { + + static propTypes = { + children: React.PropTypes.node + }; + + state = { + invalidTabs: [] + }; + + cloneTab(element) { + const {invalidTabs} = this.state; + return React.cloneElement( + element, + { + key: element.props.eventKey, + tabClassName: invalidTabs.indexOf(element.props.eventKey) > -1 ? 'invalid-tab' : 'valid-tab', + onValidationStateChange: (eventKey, isValid) => this.validTabStateChanged(eventKey, isValid) + } + ); + } + + validTabStateChanged(eventKey, isValid) { + let {invalidTabs} = this.state; + let invalidTabIndex = invalidTabs.indexOf(eventKey); + if (isValid && invalidTabIndex > -1) { + this.setState({invalidTabs: invalidTabs.filter(otherEventKey => eventKey !== otherEventKey)}); + } else if (!isValid && invalidTabIndex === -1) { + this.setState({invalidTabs: [...invalidTabs, eventKey]}); + } + } + + showTabsError() { + const {invalidTabs} = this.state; + return invalidTabs.length > 0 && (invalidTabs.length > 1 || invalidTabs[0] !== this.props.activeKey); + } + + render() { + return ( +
      + + {this.props.children.map(element => this.cloneTab(element))} + + { + let target = ReactDOM.findDOMNode(this.refs.tabsList).querySelector('ul > li.invalid-tab:not(.active):nth-of-type(n)'); + return target && target.offsetParent ? target : undefined; + } + } + container={this}> + + {i18n('One or more tabs are invalid')} + + +
      + ); + } +} diff --git a/openecomp-ui/src/nfvo-components/listEditor/ListEditorItemView.jsx b/openecomp-ui/src/nfvo-components/listEditor/ListEditorItemView.jsx new file mode 100644 index 0000000000..e8d0fc2536 --- /dev/null +++ b/openecomp-ui/src/nfvo-components/listEditor/ListEditorItemView.jsx @@ -0,0 +1,47 @@ +import React from 'react'; +import FontAwesome from 'react-fontawesome'; +import store from 'sdc-app/AppStore.js'; +import NotificationConstants from 'nfvo-components/notifications/NotificationConstants.js'; + +class ListEditorItem extends React.Component { + static propTypes = { + onSelect: React.PropTypes.func, + onDelete: React.PropTypes.func, + onEdit: React.PropTypes.func, + children: React.PropTypes.node, + isReadOnlyMode: React.PropTypes.bool + } + + render() { + let {onDelete, onSelect, onEdit, children, isReadOnlyMode} = this.props; + let isAbilityToDelete = isReadOnlyMode === undefined ? true : !isReadOnlyMode; + return ( +
      +
      + {children} +
      +
      + {onEdit && this.onClickedItem(onEdit)}/>} + {onDelete && isAbilityToDelete && this.onClickedItem(onDelete)}/>} +
      +
      + ); + } + + onClickedItem(callBackFunc) { + if(typeof callBackFunc === 'function') { + let {isCheckedOut} = this.props; + if (isCheckedOut === false) { + store.dispatch({ + type: NotificationConstants.NOTIFY_ERROR, + data: {title: 'Error', msg: 'This item is checkedin/submitted, Click Check Out to continue'} + }); + } + else { + callBackFunc(); + } + } + } +} + +export default ListEditorItem; diff --git a/openecomp-ui/src/nfvo-components/listEditor/ListEditorView.jsx b/openecomp-ui/src/nfvo-components/listEditor/ListEditorView.jsx new file mode 100644 index 0000000000..1ee91f31f6 --- /dev/null +++ b/openecomp-ui/src/nfvo-components/listEditor/ListEditorView.jsx @@ -0,0 +1,64 @@ +import React from 'react'; +import FontAwesome from 'react-fontawesome'; +import Input from 'react-bootstrap/lib/Input.js'; + + +class ListEditorView extends React.Component { + + static defaultProps = { + className: '' + }; + + static propTypes = { + title: React.PropTypes.string, + plusButtonTitle: React.PropTypes.string, + children: React.PropTypes.node, + filterValue: React.PropTypes.string, + onFilter: React.PropTypes.func, + className: React.PropTypes.string, + isReadOnlyMode: React.PropTypes.bool, + placeholder: React.PropTypes.string + }; + + render() { + let {title, plusButtonTitle, onAdd, children, filterValue, onFilter, className, placeholder, isReadOnlyMode} = this.props; + return ( +
      + {title && onAdd &&
      {title}
      } +
      + {title && !onAdd &&
      {title}
      } +
      + { onAdd && +
      + + {plusButtonTitle} +
      + } +
      + + { + onFilter && +
      + onFilter(this.refs.filter.getValue())}/> + +
      + } +
      +
      +
      + {children} +
      +
      +
      + ); + } + +} +export default ListEditorView; diff --git a/openecomp-ui/src/nfvo-components/loader/Loader.jsx b/openecomp-ui/src/nfvo-components/loader/Loader.jsx new file mode 100644 index 0000000000..cc1ffdb2b3 --- /dev/null +++ b/openecomp-ui/src/nfvo-components/loader/Loader.jsx @@ -0,0 +1,35 @@ +import React from 'react'; +import {connect} from 'react-redux'; + +const mapStateToProps = ({loader}) => { + return { + isLoading: loader.isLoading + }; +}; + +class Loader extends React.Component { + + static propTypes = { + isLoading: React.PropTypes.bool.isRequired + }; + + static defaultProps = { + isLoading: false + }; + + render() { + let {isLoading} = this.props; + + return ( +
      + { + isLoading &&
      +
      +
      + } +
      + ); + } +} + +export default connect(mapStateToProps) (Loader); diff --git a/openecomp-ui/src/nfvo-components/loader/LoaderConstants.js b/openecomp-ui/src/nfvo-components/loader/LoaderConstants.js new file mode 100644 index 0000000000..e8e4953eb9 --- /dev/null +++ b/openecomp-ui/src/nfvo-components/loader/LoaderConstants.js @@ -0,0 +1,26 @@ +/*- + * ============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========================================================= + */ + +import keyMirror from 'nfvo-utils/KeyMirror.js'; + +export const actionTypes = keyMirror({ + SHOW: null, + HIDE: null +}); diff --git a/openecomp-ui/src/nfvo-components/loader/LoaderReducer.js b/openecomp-ui/src/nfvo-components/loader/LoaderReducer.js new file mode 100644 index 0000000000..582eff330d --- /dev/null +++ b/openecomp-ui/src/nfvo-components/loader/LoaderReducer.js @@ -0,0 +1,32 @@ +/*- + * ============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========================================================= + */ + +import {actionTypes} from './LoaderConstants.js'; + +export default (state = {}, action) => { + switch (action.type) { + case actionTypes.SHOW: + return {isLoading: true}; + case actionTypes.HIDE: + return {isLoading: false}; + default: + return state; + } +}; diff --git a/openecomp-ui/src/nfvo-components/modal/Modal.jsx b/openecomp-ui/src/nfvo-components/modal/Modal.jsx new file mode 100644 index 0000000000..be4963ef65 --- /dev/null +++ b/openecomp-ui/src/nfvo-components/modal/Modal.jsx @@ -0,0 +1,69 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; +import BootstrapModal from 'react-bootstrap/lib/Modal.js'; + +let nextModalId = 0; + +export default class Modal extends React.Component { + + static Header = BootstrapModal.Header; + + static Title = BootstrapModal.Title; + + static Footer = BootstrapModal.Footer; + + static Body = class ModalBody extends React.Component { + + render() { + let {children, ...props} = this.props; + return ( + + {children} + + ); + } + + componentDidMount() { + let element = ReactDOM.findDOMNode(this); + element.addEventListener('click', event => { + if (event.target.tagName === 'A') { + event.preventDefault(); + } + }); + ['wheel', 'mousewheel', 'DOMMouseScroll'].forEach(eventType => + element.addEventListener(eventType, event => event.stopPropagation()) + ); + } + }; + + componentWillMount() { + this.modalId = `dox-ui-modal-${nextModalId++}`; + } + + componentDidMount() { + this.ensureRootClass(); + } + + componentDidUpdate() { + this.ensureRootClass(); + } + + ensureRootClass() { + let element = document.getElementById(this.modalId); + while(element && !element.hasAttribute('data-reactroot')) { + element = element.parentElement; + } + if (element && !element.classList.contains('dox-ui')) { + element.classList.add('dox-ui'); + } + } + + render() { + let {children, ...props} = this.props; + return ( + + {children} + + ); + } +} diff --git a/openecomp-ui/src/nfvo-components/notifications/NotificationConstants.js b/openecomp-ui/src/nfvo-components/notifications/NotificationConstants.js new file mode 100644 index 0000000000..1a53f4c135 --- /dev/null +++ b/openecomp-ui/src/nfvo-components/notifications/NotificationConstants.js @@ -0,0 +1,29 @@ +/*- + * ============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========================================================= + */ + +import keyMirror from 'nfvo-utils/KeyMirror.js'; + +export default keyMirror({ + NOTIFY_ERROR: null, + NOTIFY_SUCCESS: null, + NOTIFY_WARNING: null, + NOTIFY_INFO: null, + NOTIFY_CLOSE: null +}); diff --git a/openecomp-ui/src/nfvo-components/notifications/NotificationModal.jsx b/openecomp-ui/src/nfvo-components/notifications/NotificationModal.jsx new file mode 100644 index 0000000000..71793097fb --- /dev/null +++ b/openecomp-ui/src/nfvo-components/notifications/NotificationModal.jsx @@ -0,0 +1,100 @@ +/** + * NotificationModal options: + * + * show: whether to show notification or not, + * type: the type of the notification. valid values are: 'default', 'error', 'warning', 'success' + * msg: the notification content. could be a string or node (React component) + * title: the notification title + * timeout: timeout for the notification to fade out. if timeout == 0 then the notification is rendered until the user closes it + * + */ +import React, {Component, PropTypes} from 'react'; +import {connect} from 'react-redux'; +import Button from 'react-bootstrap/lib/Button.js'; + +import i18n from 'nfvo-utils/i18n/i18n.js'; +import Modal from 'nfvo-components/modal/Modal.jsx'; +import SubmitErrorResponse from 'nfvo-components/SubmitErrorResponse.jsx'; +import NotificationConstants from './NotificationConstants.js'; + +let typeClass = { + 'default': 'primary', + error: 'danger', + warning: 'warning', + success: 'success' +}; + +const mapActionsToProps = (dispatch) => { + return {onCloseClick: () => dispatch({type: NotificationConstants.NOTIFY_CLOSE})}; +}; + +const mapStateToProps = ({notification}) => { + + let show = notification !== null && notification.title !== 'Conflict'; + let mapResult = {show}; + if (show) { + mapResult = {show, ...notification}; + } + + return mapResult; +}; + +export class NotificationModal extends Component { + + static propTypes = { + show: PropTypes.bool, + type: PropTypes.oneOf(['default', 'error', 'warning', 'success']), + title: PropTypes.string, + msg: PropTypes.node, + validationResponse: PropTypes.object, + timeout: PropTypes.number + }; + + static defaultProps = { + show: false, + type: 'default', + title: '', + msg: '', + timeout: 0 + }; + + state = {type: undefined}; + + componentWillReceiveProps(nextProps) { + if (this.props.show !== nextProps.show && nextProps.show === false) { + this.setState({type: this.props.type}); + } + else { + this.setState({type: undefined}); + } + } + + componentDidUpdate() { + if (this.props.timeout) { + setTimeout(this.props.onCloseClick, this.props.timeout); + } + } + + render() { + let {title, type, msg, show, validationResponse, onCloseClick} = this.props; + if (!show) { + type = this.state.type; + } + if (validationResponse) { + msg = (); + } + return ( + + + {title} + + {msg} + + + + + ); + } +} + +export default connect(mapStateToProps, mapActionsToProps)(NotificationModal); diff --git a/openecomp-ui/src/nfvo-components/notifications/NotificationReducer.js b/openecomp-ui/src/nfvo-components/notifications/NotificationReducer.js new file mode 100644 index 0000000000..c8b30d6e50 --- /dev/null +++ b/openecomp-ui/src/nfvo-components/notifications/NotificationReducer.js @@ -0,0 +1,51 @@ +/*- + * ============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========================================================= + */ + +import NotificationConstants from './NotificationConstants.js'; + +export default (state = null, action) => { + switch (action.type) { + case NotificationConstants.NOTIFY_INFO: + return {type: 'default', title: action.data.title, msg: action.data.msg, timeout: action.data.timeout}; + + case NotificationConstants.NOTIFY_ERROR: + return { + type: 'error', + title: action.data.title, + msg: action.data.msg, + validationResponse: action.data.validationResponse, + timeout: action.data.timeout + }; + + case NotificationConstants.NOTIFY_WARNING: + return {type: 'warning', title: action.data.title, msg: action.data.msg, timeout: action.data.timeout}; + + case NotificationConstants.NOTIFY_SUCCESS: + return { + type: 'success', title: action.data.title, msg: action.data.msg, timeout: action.data.timeout + }; + case NotificationConstants.NOTIFY_CLOSE: + return null; + + default: + return state; + } + +}; diff --git a/openecomp-ui/src/nfvo-components/panel/NavigationSideBar.jsx b/openecomp-ui/src/nfvo-components/panel/NavigationSideBar.jsx new file mode 100644 index 0000000000..feb0f813ea --- /dev/null +++ b/openecomp-ui/src/nfvo-components/panel/NavigationSideBar.jsx @@ -0,0 +1,73 @@ +import React from 'react'; +import classnames from 'classnames'; +import Collapse from 'react-bootstrap/lib/Collapse.js'; + +class NavigationSideBar extends React.Component { + + static PropTypes = { + activeItemId: React.PropTypes.string.isRequired, + onSelect: React.PropTypes.func, + onToggle: React.PropTypes.func, + groups: React.PropTypes.array + }; + + render() { + let {groups, activeItemId} = this.props; + + return ( +
      + {groups.map(group => ( +
      +
      {group.name}
      +
      + { + group.items && group.items.map(item => this.renderGroupItem(item, activeItemId)) + } +
      +
      + ))} +
      + ); + } + + renderGroupItem(item, activeItemId) { + let isGroup = item.items && item.items.length > 0; + return ( +
      +
      this.handleItemClicked(event, item)}> + {item.name} +
      + {isGroup && + +
      + {item.items.map(item => this.renderGroupItem(item, activeItemId))} +
      +
      + } +
      + ); + } + + handleItemClicked(event, item) { + event.stopPropagation(); + if(this.props.onToggle) { + this.props.onToggle(this.props.groups, item.id); + } + if(item.onSelect) { + item.onSelect(); + } + if(this.props.onSelect) { + this.props.onSelect(item); + } + } +} + +export default NavigationSideBar; diff --git a/openecomp-ui/src/nfvo-components/panel/SlidePanel.jsx b/openecomp-ui/src/nfvo-components/panel/SlidePanel.jsx new file mode 100644 index 0000000000..10c5326300 --- /dev/null +++ b/openecomp-ui/src/nfvo-components/panel/SlidePanel.jsx @@ -0,0 +1,109 @@ +import React from 'react'; +import FontAwesome from 'react-fontawesome'; +import ReactDOM from 'react-dom'; + +class SlidePanel extends React.Component { + + static PropTypes = { + direction: React.PropTypes.string.isRequired, + className: React.PropTypes.string, + title: React.PropTypes.string, + isOpen: React.PropTypes.bool + }; + + static defaultProps = { + title: '', + className: '', + isOpen: true + }; + + state = { + isOpen: this.props.isOpen, + direction: this.props.direction, + width: 0, + arrowWidth: 0 + }; + + componentDidMount() { + this.setSliderPosition(); + } + + componentDidUpdate() { + this.setSliderPosition(); + } + + render() { + + let {children, className} = this.props; + let {isOpen} = this.state; + + return ( +
      + {this.renderHeader(isOpen)} +
      {children}
      +
      + ); + } + + renderHeader(isOpen) { + let {direction: initialDirection, title} = this.props; + let {direction: currentDirection} = this.state; + + let iconName = currentDirection === 'right' ? 'angle-double-right collapse-double-icon' : 'angle-double-left collapse-double-icon'; + + let awestyle = {padding: '5px'}; + + if (!isOpen && initialDirection === 'right') { + awestyle.marginLeft = '-1px'; + } + return ( +
      + { initialDirection === 'left' && {title}} + + { initialDirection === 'right' && {title}} +
      + ); + } + + handleClick = () => { + this.setState({ + isOpen: !this.state.isOpen, + direction: this.state.direction === 'left' ? 'right' : 'left' + }); + } + + setSliderPosition = () => { + + let el = ReactDOM.findDOMNode(this); + let {style} = el; + + let {direction: initialDirection} = this.props; + let arrowIconSize = Math.floor(ReactDOM.findDOMNode(this.refs.arrowIcon).getBoundingClientRect().width) * 2; + if (!this.state.isOpen) { + if (this.props.direction === 'left') { + style.left = arrowIconSize - el.getBoundingClientRect().width + 'px'; + } + if (initialDirection === 'right') { + style.right = arrowIconSize - el.getBoundingClientRect().width + 'px'; + } + } + else { + if (initialDirection === 'left') { + style.left = '0px'; + } + + if (this.props.direction === 'right') { + style.right = '0px'; + } + } + } + +} + +export default SlidePanel; \ No newline at end of file diff --git a/openecomp-ui/src/nfvo-components/panel/versionController/VersionController.jsx b/openecomp-ui/src/nfvo-components/panel/versionController/VersionController.jsx new file mode 100644 index 0000000000..78525f84c6 --- /dev/null +++ b/openecomp-ui/src/nfvo-components/panel/versionController/VersionController.jsx @@ -0,0 +1,165 @@ +import React from 'react'; +import classnames from 'classnames'; +import i18n from 'nfvo-utils/i18n/i18n.js'; + +import Navbar from 'react-bootstrap/lib/Navbar.js'; +import Nav from 'react-bootstrap/lib/Nav.js'; +import ValidationInput from 'nfvo-components/input/validation/ValidationInput.jsx'; +import {actionsEnum, statusEnum} from './VersionControllerConstants.js'; + + +class VersionController extends React.Component { + + static propTypes = { + version: React.PropTypes.string, + viewableVersions: React.PropTypes.array, + onVersionSwitching: React.PropTypes.func, + isCheckedOut: React.PropTypes.bool.isRequired, + status: React.PropTypes.string.isRequired, + callVCAction: React.PropTypes.func, + onSave: React.PropTypes.func, + onClose: React.PropTypes.func, + isFormDataValid: React.PropTypes.bool + }; + + render() { + let {status, isCheckedOut, version = '', viewableVersions = [], onVersionSwitching, callVCAction, onSave, isFormDataValid, onClose} = this.props; + let isCheckedIn = Boolean(status === statusEnum.CHECK_IN_STATUS); + let isLatestVersion = Boolean(version === viewableVersions[viewableVersions.length - 1]); + if (!isLatestVersion) { + status = statusEnum.PREVIOUS_VERSION; + } + + return ( +
      + + + + + + +
      + ); + } + + renderStatus(status) { + switch (status) { + case statusEnum.CHECK_OUT_STATUS: + return ( +
      +
      +
      {i18n('CHECKED OUT')}
      +
      + ); + case statusEnum.LOCK_STATUS: + return ( +
      {i18n('LOCKED')}
      + ); + case statusEnum.CHECK_IN_STATUS: + return ( +
      {i18n('CHECKED IN')}
      + ); + case statusEnum.SUBMIT_STATUS: + return ( +
      {i18n('SUBMITTED')}
      + ); + default: + return ( +
      {i18n(status)}
      + ); + } + } + + checkinCheckoutVersion(callVCAction) { + if (this.props.isCheckedOut) { + this.checkin(callVCAction); + } + else { + this.checkout(callVCAction); + } + } + + checkin(callVCAction) { + + const action = actionsEnum.CHECK_IN; + + if (this.props.onSave) { + this.props.onSave().then(()=>{ + callVCAction(action); + }); + }else{ + callVCAction(action); + } + + } + + checkout(callVCAction) { + const action = actionsEnum.CHECK_OUT; + callVCAction(action); + } + + submit(callVCAction) { + const action = actionsEnum.SUBMIT; + callVCAction(action); + } + + revertCheckout(callVCAction) { + const action = actionsEnum.UNDO_CHECK_OUT; + callVCAction(action); + } +} + +export default VersionController; diff --git a/openecomp-ui/src/nfvo-components/panel/versionController/VersionControllerConstants.js b/openecomp-ui/src/nfvo-components/panel/versionController/VersionControllerConstants.js new file mode 100644 index 0000000000..9251fd12c4 --- /dev/null +++ b/openecomp-ui/src/nfvo-components/panel/versionController/VersionControllerConstants.js @@ -0,0 +1,38 @@ +/*- + * ============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========================================================= + */ + +import keyMirror from 'nfvo-utils/KeyMirror.js'; + +export const actionsEnum = keyMirror({ + CHECK_IN: 'Checkin', + CHECK_OUT: 'Checkout', + UNDO_CHECK_OUT: 'Undo_Checkout', + SUBMIT: 'Submit', + CREATE_PACKAGE: 'Create_Package' +}); + +export const statusEnum = keyMirror({ + CHECK_OUT_STATUS: 'Locked', + CHECK_IN_STATUS: 'Available', + SUBMIT_STATUS: 'Final', + LOCK_STATUS: 'LockedByUser', + PREVIOUS_VERSION: 'READ ONLY' +}); + diff --git a/openecomp-ui/src/nfvo-components/panel/versionController/VersionControllerUtils.js b/openecomp-ui/src/nfvo-components/panel/versionController/VersionControllerUtils.js new file mode 100644 index 0000000000..de9914454c --- /dev/null +++ b/openecomp-ui/src/nfvo-components/panel/versionController/VersionControllerUtils.js @@ -0,0 +1,49 @@ +/*- + * ============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========================================================= + */ + +import Configuration from 'sdc-app/config/Configuration.js'; +import {statusEnum} from './VersionControllerConstants.js'; + + +const VersionControllerUtils = { + + getCheckOutStatusKindByUserID(status, lockingUser) { + let currentLoginUserID = Configuration.get('ATTUserID'); + let isCheckedOut = currentLoginUserID === lockingUser; + + return { + status: isCheckedOut ? status : statusEnum.LOCK_STATUS, + isCheckedOut + }; + }, + + isCheckedOutByCurrentUser(resource) { + let currentLoginUserID = Configuration.get('ATTUserID'); + return resource.lockingUser !== undefined && resource.lockingUser === currentLoginUserID; + }, + + isReadOnly(resource) { + const {version, viewableVersions = []} = resource; + const latestVersion = viewableVersions[viewableVersions.length - 1]; + return version !== latestVersion || !VersionControllerUtils.isCheckedOutByCurrentUser(resource); + } +}; + +export default VersionControllerUtils; diff --git a/openecomp-ui/src/nfvo-components/progressBar/ProgressBar.jsx b/openecomp-ui/src/nfvo-components/progressBar/ProgressBar.jsx new file mode 100644 index 0000000000..d786aeef8b --- /dev/null +++ b/openecomp-ui/src/nfvo-components/progressBar/ProgressBar.jsx @@ -0,0 +1,22 @@ +import React from 'react'; + +class ProgressBar extends React.Component { + static propTypes = { + label: React.PropTypes.string, + now: React.PropTypes.string.isRequired + } + render() { + let {label, now} = this.props; + + return( +
      +
      +
      +
      +
      {label}
      +
      + ); + } +} + +export default ProgressBar; diff --git a/openecomp-ui/src/nfvo-utils/ErrorResponseHandler.js b/openecomp-ui/src/nfvo-utils/ErrorResponseHandler.js new file mode 100644 index 0000000000..0d27204bef --- /dev/null +++ b/openecomp-ui/src/nfvo-utils/ErrorResponseHandler.js @@ -0,0 +1,72 @@ +/*- + * ============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========================================================= + */ + +import store from 'sdc-app/AppStore.js'; +import NotificationConstants from 'nfvo-components/notifications/NotificationConstants.js'; + +function showVariablesInMessage(variables, msg) { + let regex; + variables.forEach((value, index) => { + value = value.replace(';', ','); + regex = new RegExp('\'\%' + (index + 1) + '\''); + msg = msg.replace(regex, value); + }); + return msg; +} + +function parseATTExceptionObject(responseJSON) { + let title, msg; + if (responseJSON.requestError && responseJSON.requestError.policyException) { + title = 'Error: ' + responseJSON.requestError.policyException.messageId; + msg = responseJSON.requestError.policyException.text; + } + else if (responseJSON.requestError && responseJSON.requestError.serviceException) { + title = 'Error: ' + responseJSON.requestError.serviceException.messageId; + msg = responseJSON.requestError.serviceException.text; + let {variables} = responseJSON.requestError.serviceException; + if (variables) { + msg = showVariablesInMessage(variables, msg); + } + } + else { + title = responseJSON.status; + msg = responseJSON.message; + } + return {title, msg}; +} + +var errorResponseHandler = (xhr/*, textStatus, errorThrown*/) => { + let errorData; + if (xhr.responseJSON) { + errorData = parseATTExceptionObject(xhr.responseJSON); + } + else { + errorData = { + title: xhr.statusText, + msg: xhr.responseText + }; + } + store.dispatch({ + type: NotificationConstants.NOTIFY_ERROR, + data: {...errorData} + }); +}; + +export default errorResponseHandler; diff --git a/openecomp-ui/src/nfvo-utils/KeyMirror.js b/openecomp-ui/src/nfvo-utils/KeyMirror.js new file mode 100644 index 0000000000..eb50d31e07 --- /dev/null +++ b/openecomp-ui/src/nfvo-utils/KeyMirror.js @@ -0,0 +1,44 @@ +/*- + * ============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========================================================= + */ + +var keyMirror = function (obj) { + var ret = {}; + var key; + var val; + if (!(obj instanceof Object && !Array.isArray(obj))) { + throw new Error('keyMirror(...): Argument must be an object.'); + } + for (key in obj) { + if (obj.hasOwnProperty(key)) { + val = obj[key]; + if (val instanceof Object) { + ret[key] = keyMirror(obj[key]); + } else if(val !== null && val !== undefined){ + ret[key] = val; + } + else { + ret[key] = Symbol(key); + } + } + } + return Object.freeze(ret); +}; + +export default keyMirror; diff --git a/openecomp-ui/src/nfvo-utils/RestAPIUtil.js b/openecomp-ui/src/nfvo-utils/RestAPIUtil.js new file mode 100644 index 0000000000..24734739a2 --- /dev/null +++ b/openecomp-ui/src/nfvo-utils/RestAPIUtil.js @@ -0,0 +1,288 @@ +/*- + * ============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========================================================= + */ + +import _extend from 'lodash/extend.js'; +import _clone from 'lodash/clone.js'; +import _defaults from 'lodash/defaults.js'; +import $ from 'jquery'; +import uuid from 'uuid-js'; +import md5 from 'md5'; + +import store from 'sdc-app/AppStore.js'; +import {actionTypes as LoaderConstants} from 'nfvo-components/loader/LoaderConstants.js'; +import Configuration from 'sdc-app/config/Configuration.js'; +import errorResponseHandler from './ErrorResponseHandler.js'; + +const methodMap = { + 'create': 'POST', + 'update': 'PUT', + 'delete': 'DELETE', + 'read': 'GET' +}; +const AUTHORIZATION_HEADER = 'X-AUTH-TOKEN'; +const STORAGE_AUTH_KEY = 'sdc-auth-token'; +const REQUEST_ID_HEADER = 'X-ECOMP-RequestID'; +const CONTENT_MD5_HEADER = 'Content-MD5'; +const namedParam = /{(\w+)}/g; +const queryParamsNames = { + pageStart: 'pageStart', + pageSize: 'pageSize', + sortField: 'sortField', + sortDir: 'sortDir', + filtering: 'filter' +}; + + +// jQuery binary transport to download files through XHR +// http://www.henryalgus.com/reading-binary-files-using-jquery-ajax/ +// https://github.com/henrya/js-jquery/tree/master/BinaryTransport +$.ajaxTransport('+binary', function (options/*, originalOptions , jqXHR*/) { + // check for conditions and support for blob / arraybuffer response type + if (window.FormData && ((options.dataType && (options.dataType === 'binary')) || + (options.data && ((window.ArrayBuffer && options.data instanceof ArrayBuffer) || + (window.Blob && options.data instanceof Blob)))) + ) { + return { + // create new XMLHttpRequest + send: function (headers, callback) { + // setup all variables + var xhr = new XMLHttpRequest(), + url = options.url, + type = options.type, + async = options.async || true, + // blob or arraybuffer. Default is blob + dataType = options.responseType || 'blob', + data = options.data || null, + username = options.username || null, + password = options.password || null; + + xhr.addEventListener('load', function () { + var data = {}; + data[options.dataType] = xhr.response; + // make callback and send data + callback(xhr.status, xhr.statusText, data, xhr.getAllResponseHeaders()); + }); + + xhr.open(type, url, async, username, password); + + // setup custom headers + for (var i in headers) { + xhr.setRequestHeader(i, headers[i]); + } + + xhr.responseType = dataType; + xhr.send(data); + }, + abort: function () { + } + }; + } +}); + +$(document).ajaxStart(()=> store.dispatch({type: LoaderConstants.SHOW})); +$(document).ajaxStop(()=> store.dispatch({type: LoaderConstants.HIDE})); + +function urlError() { + throw new Error('A "url" property or function must be specified'); +}; + +export function makeQueryParams(options) { + var qParams = {}; + if (options.pagination) { + qParams[queryParamsNames.pageStart] = options.pagination.pageStart; + qParams[queryParamsNames.pageSize] = options.pagination.pageSize; + } + if (options.sorting) { + qParams[queryParamsNames.sortField] = options.sorting.sortField; + qParams[queryParamsNames.sortDir] = options.sorting.sortDir; + } + if (options.filtering) { + qParams[queryParamsNames.filtering] = JSON.stringify(options.filtering); + } + + return _defaults(qParams, options.qParams); +} + +function appendQueryParam(p, value) { + var str = ''; + + if (value instanceof Array) { + if (value.length === 1) { + str = appendQueryParam(p, value[0]); + } else if (value.length > 1) { + str = appendQueryParam(p, value.shift()) + '&' + appendQueryParam(p, value); + } + } else { + str = p + '=' + encodeURIComponent(value); + } + + return str; +} + +function appendQueryString(url, qParams) { + var str = ''; + for (var param in qParams) { + str += (str ? '&' : '') + appendQueryParam(param, qParams[param]); + } + return url + (str ? '?' : '') + str; +} + +function composeURL(baseUrl, options) { + var url = baseUrl || urlError(); + if (options.url) { + delete options.url; + } + + var qParams = makeQueryParams(options); + url = appendQueryString(url, qParams); + + var matches = url.match(namedParam); + if (matches) { + for (var i = 0; i < matches.length; i++) { + var param = matches[i].substring(1, matches[i].length - 1); + var value = (options.params && options.params[param]); + + if (value === undefined) { + value = options[param]; + } + url = url.replace(matches[i], encodeURIComponent(value)); + } + } + + return url; +} + +function applyMD5Header(options, data) { + if (options.md5) { + let headers = options.headers; + headers[CONTENT_MD5_HEADER] = window.btoa(md5(JSON.stringify(data)).toLowerCase()); + } +} + +function applySecurity(options, data) { + var headers = options.headers || (options.headers = {}); + + var authToken = localStorage.getItem(STORAGE_AUTH_KEY); + if (authToken) { + headers[AUTHORIZATION_HEADER] = authToken; + } + + var attApiHeaders = Configuration.get('ATTApiHeaders'), + attUidHeader = attApiHeaders && attApiHeaders.userId; + if (attUidHeader) { + headers[attUidHeader.name] = attUidHeader.value; + } + + headers[REQUEST_ID_HEADER] = uuid.create().toString(); + + applyMD5Header(options, data); +} + +function handleResponse(options) { + var authToken = options.xhr.getResponseHeader(AUTHORIZATION_HEADER); + var prevToken = options.headers && options.headers[AUTHORIZATION_HEADER]; + if (authToken && authToken !== prevToken) { + if (authToken === 'null') { + localStorage.removeItem(STORAGE_AUTH_KEY); + } else { + localStorage.setItem(STORAGE_AUTH_KEY, authToken); + } + } +} + +function sync(baseUrl, method, options, data) { + + options = options ? _clone(options) : {}; + + var type = methodMap[method]; + _defaults(options || (options = {})); + var params = { + type: type, + dataType: 'json' + }; + params.url = composeURL(baseUrl, options); + + if ((method === 'create' || method === 'update') && data instanceof FormData) { + params.contentType = 'multipart/form-data'; + params.data = data; + } + else if (method === 'create' || method === 'update') { + params.contentType = 'application/json'; + params.data = JSON.stringify(data); + } + + if (params.type !== 'GET') { + params.processData = false; + } + var success = options.success; + options.success = function (resp) { + if (success) { + handleResponse(options); + success.call(options.context, _clone(resp), resp, options); + } + }; + + options.error = options.error || errorResponseHandler; + + if (typeof options.progressCallback === 'function' && options.fileSize) { + const {fileSize} = options; + options.xhrFields = { + // add listener to XMLHTTPRequest object directly for progress (jquery doesn't have this yet) + onprogress: function (progress) { + // calculate upload progress + let percentage = Math.floor((progress.loaded / fileSize) * 100); + // log upload progress to console + //console.log('progress', percentage); + options.progressCallback(percentage); + if (percentage === 100) { + console.log('DONE!'); + } + } + }; + } + + applySecurity(options, data); + + if (DEBUG) { + console.log('--> Making REST call (' + type + '): ' + params.url); + } + var xhr = options.xhr = $.ajax(_extend(params, options)); + return xhr; +} + +export default { + + fetch(baseUrl, options) { + return sync(baseUrl, 'read', options); + }, + + save(baseUrl, data, options) { + return sync(baseUrl, 'update', options, data); + }, + + create(baseUrl, data, options) { + return sync(baseUrl, 'create', options, data); + }, + + destroy(baseUrl, options) { + return sync(baseUrl, 'delete', options); + } + +}; diff --git a/openecomp-ui/src/nfvo-utils/UUID.js b/openecomp-ui/src/nfvo-utils/UUID.js new file mode 100644 index 0000000000..314c98ba6f --- /dev/null +++ b/openecomp-ui/src/nfvo-utils/UUID.js @@ -0,0 +1,58 @@ +/*- + * ============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========================================================= + */ + +import UUID from 'uuid-js'; + +let toCustomUUID = (uuid) => { + return 'U' + uuid.replace(/-/g, ''); +}; + +let getUUID = function(num, isSync) { + if (isSync) { + let uuid; + if (!num) { + uuid = toCustomUUID(UUID.create().toString()); + } else { + uuid = []; + for (var i = 0; i < num; i++) { + uuid[i] = toCustomUUID(UUID.create().toString()); + } + } + if (num === 1) { + return uuid[0]; + } else { + return uuid; + } + } + return new Promise(resolve => { + let uuid; + if (!num) { + uuid = toCustomUUID(UUID.create().toString()); + } else { + uuid = []; + for (var i = 0; i < num; i++) { + uuid[i] = toCustomUUID(UUID.create().toString()); + } + } + setTimeout(() => resolve(uuid), 100); + }); +}; + +export default getUUID; diff --git a/openecomp-ui/src/nfvo-utils/i18n/i18n.js b/openecomp-ui/src/nfvo-utils/i18n/i18n.js new file mode 100644 index 0000000000..64587713b7 --- /dev/null +++ b/openecomp-ui/src/nfvo-utils/i18n/i18n.js @@ -0,0 +1,122 @@ +/*- + * ============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========================================================= + */ + +import IntlObj from 'intl'; +import IntlMessageFormatObj from 'intl-messageformat'; +import IntlRelativeFormatObj from 'intl-relativeformat'; +import createFormatCacheObj from 'intl-format-cache'; +import i18nJson from 'i18nJson'; + +/* + Intl libs are using out dated transpailer from ecmascript6. +* TODO: As soon as they fix it, remove this assignments!!! +* */ +var Intl = window.Intl || IntlObj.default, + IntlMessageFormat = IntlMessageFormatObj.default, + IntlRelativeFormat = IntlRelativeFormatObj.default, + createFormatCache = createFormatCacheObj.default; + +var i18nData; + +if(i18nJson) { + i18nData = i18nJson.dataWrapperArr[i18nJson.i18nDataIdx]; +} + + +/*extract locale*/ +var _locale = window.localStorage && localStorage.getItem('user_locale'); +if(!_locale) { + if(window.navigator) { + _locale = navigator.language || navigator.userLanguage; + + //For now removing the dashes from the language. + let indexOfDash = _locale.indexOf('-'); + if(-1 !== indexOfDash) { + _locale = _locale.substr(0, indexOfDash); + } + } + if(!_locale) { + _locale = 'en'; + } +} + +var _localeUpper = _locale.toUpperCase(); + +var i18n = { + + _locale: _locale, + _localeUpper: _localeUpper, + _i18nData: i18nData || {}, + + number(num) { + return createFormatCache(Intl.NumberFormat)(this._locale).format(num); + }, + + date(date, options, relativeDates) { + if (undefined === relativeDates || relativeDates) { + return this.dateRelative(date, options); + } else { + return this.dateNormal(date, options); + } + }, + + dateNormal(date, options) { + return createFormatCache(Intl.DateTimeFormat)(this._locale, options).format(date); + }, + + dateRelative(date, options) { + return createFormatCache(IntlRelativeFormat)(this._locale, options).format(date); + }, + + message(messageId, options) { + return createFormatCache(IntlMessageFormat)(this._i18nData[messageId] || String(messageId), this._locale).format(options); + }, + + getLocale() { + return this._locale; + }, + + getLocaleUpper() { + return this._localeUpper; + }, + + setLocale(locale) { + localStorage.setItem('user_locale', locale); + window.location.reload(); + } + +}; + +function i18nWrapper() { + return i18nWrapper.message.apply(i18nWrapper, arguments); +} + +/*replace with some kind of extend method*/ +var prop, propKey; +for (propKey in i18n) { + prop = i18n[propKey]; + if (typeof prop === 'function') { + prop = prop.bind(i18nWrapper); + } + i18nWrapper[propKey] = prop; +} + + +export default i18nWrapper; diff --git a/openecomp-ui/src/nfvo-utils/i18n/locale.json b/openecomp-ui/src/nfvo-utils/i18n/locale.json new file mode 100644 index 0000000000..d9047ba582 --- /dev/null +++ b/openecomp-ui/src/nfvo-utils/i18n/locale.json @@ -0,0 +1 @@ +{"dataWrapperArr":["I18N_IDENTIFIER_START",{},"I18N_IDENTIFIER_END"],"i18nDataIdx":1} \ No newline at end of file diff --git a/openecomp-ui/src/nfvo-utils/json/JSONPointer.js b/openecomp-ui/src/nfvo-utils/json/JSONPointer.js new file mode 100644 index 0000000000..a6e8198537 --- /dev/null +++ b/openecomp-ui/src/nfvo-utils/json/JSONPointer.js @@ -0,0 +1,62 @@ +/*- + * ============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========================================================= + */ + +const JSONPointer = { + + extractParentPointer(pointer) { + return pointer.replace(/\/[^\/]+$/, ''); + }, + + extractLastPart(pointer) { + const [,lastPart] = pointer.match(/\/([^\/]+)$/) || []; + return lastPart; + }, + + extractParts(pointer) { + return pointer.split('/').slice(1) + .map(part => part.replace(/~1/g, '/')) + .map(part => part.replace(/~0/g, '~')); + }, + + getValue(object, pointer) { + let parts = JSONPointer.extractParts(pointer); + return parts.reduce((object, part) => object && object[part], object); + }, + + setValue(object, pointer, value) { + let clone = obj => Array.isArray(obj) ? [...obj] : {...obj}; + + let parts = JSONPointer.extractParts(pointer), + newObject = clone(object), + subObject = object, + subNewObject = newObject; + + for(let i = 0, n = parts.length - 1; i < n; ++i) { + let nextSubObject = subObject && subObject[parts[i]]; + subNewObject = subNewObject[parts[i]] = nextSubObject ? clone(nextSubObject) : {}; + subObject = nextSubObject; + } + subNewObject[parts[parts.length - 1]] = value; + + return newObject; + } +}; + +export default JSONPointer; diff --git a/openecomp-ui/src/nfvo-utils/json/JSONSchema.js b/openecomp-ui/src/nfvo-utils/json/JSONSchema.js new file mode 100644 index 0000000000..8c7d8cf9aa --- /dev/null +++ b/openecomp-ui/src/nfvo-utils/json/JSONSchema.js @@ -0,0 +1,155 @@ +/*- + * ============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========================================================= + */ + +// import Ajv from 'ajv'; +import cloneDeep from 'lodash/cloneDeep.js'; +import JSONPointer from './JSONPointer.js'; + +export default class JSONSchema { + + setSchema(schema) { + this._schema = schema; + this._fragmentsCache = new Map(); + // this._ajv = new Ajv({ + // useDefaults: true, + // coerceTypes: true + // }); + // this._validate = this._ajv.compile(schema); + } + + processData(data) { + data = cloneDeep(data); + // this._validate(data); + return data; + } + + getTitle(pointer) { + return this._getSchemaFragment(pointer).title; + } + + exists(pointer) { + const fragment = this._getSchemaFragment(pointer); + return !!fragment; + } + + getDefault(pointer) { + const fragment = this._getSchemaFragment(pointer); + return fragment && fragment.default; + } + + getEnum(pointer) { + const fragment = this._getSchemaFragment(pointer); + return fragment && (fragment.type === 'array' ? fragment.items.enum : fragment.enum); + } + + isRequired(pointer) { + const parentPointer = JSONPointer.extractParentPointer(pointer); + const lastPart = JSONPointer.extractLastPart(pointer); + let parentFragment = this._getSchemaFragment(parentPointer); + return parentFragment && parentFragment.required && parentFragment.required.includes(lastPart); + } + + isNumber(pointer) { + const fragment = this._getSchemaFragment(pointer); + return fragment && fragment.type === 'number'; + } + + getMaxValue(pointer) { + const fragment = this._getSchemaFragment(pointer); + return fragment && fragment.maximum; + } + + getMinValue(pointer) { + const fragment = this._getSchemaFragment(pointer); + return fragment && fragment.minimum; + } + + isString(pointer) { + const fragment = this._getSchemaFragment(pointer); + return fragment && fragment.type === 'string'; + } + + getPattern(pointer) { + const fragment = this._getSchemaFragment(pointer); + return fragment && fragment.pattern; + } + + getMaxLength(pointer) { + const fragment = this._getSchemaFragment(pointer); + return fragment && fragment.maxLength; + } + + getMinLength(pointer) { + const fragment = this._getSchemaFragment(pointer); + return fragment && fragment.minLength; + } + + isArray(pointer) { + const fragment = this._getSchemaFragment(pointer); + return fragment && fragment.type === 'array'; + } + + _getSchemaFragment(pointer) { + if (this._fragmentsCache.has(pointer)) { + return this._fragmentsCache.get(pointer); + } + + let parts = JSONPointer.extractParts(pointer); + + let fragment = parts.reduce((fragment, part) => { + if (fragment === undefined) { + return undefined; + } + + if (fragment.$ref) { + fragment = this._getSchemaFragmentByRef(fragment.$ref); + } + + switch (fragment.type) { + case 'object': + return fragment.properties && fragment.properties[part]; + + case 'array': + return fragment.enum && fragment.enum[part]; + + default: + // throw new Error(`Incorrect/unsupported JSONPointer "${pointer}" from "${part}"`); + return undefined; + } + }, this._schema); + + while(fragment && fragment.$ref) { + fragment = this._getSchemaFragmentByRef(fragment.$ref); + } + + this._fragmentsCache.set(pointer, fragment); + return fragment; + } + + _getSchemaFragmentByRef($ref) { + let pointer = $ref.substr(1); + return JSONPointer.getValue(this._schema, pointer); + // let fragmentAjv = new Ajv(); + // fragmentAjv.addSchema(this._schema); + // let compiledFragment = fragmentAjv.compile({$ref}); + // let fragment = compiledFragment.refVal[compiledFragment.refs[$ref]]; + // return fragment; + } +}; diff --git a/openecomp-ui/src/sdc-app/AppStore.js b/openecomp-ui/src/sdc-app/AppStore.js new file mode 100644 index 0000000000..0abcaac3fe --- /dev/null +++ b/openecomp-ui/src/sdc-app/AppStore.js @@ -0,0 +1,47 @@ +/*- + * ============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========================================================= + */ + +import {combineReducers, createStore} from 'redux'; +import onBoardingReducersMap from './onboarding/OnboardingReducersMap.js'; +import flowsReducersMap from './flows/FlowsReducersMap.js'; +import notificationReducer from 'nfvo-components/notifications/NotificationReducer.js'; +import loaderReducer from 'nfvo-components/loader/LoaderReducer.js'; +import uploadScreenReducer from 'sdc-app/heatvalidation/UploadScreenReducer.js'; +import SoftwareProductAttachmentsReducer from 'sdc-app/heatvalidation/attachments/AttachmentsReducer'; + +export const storeCreator = (initialState) => createStore(combineReducers({ + // on-boarding reducers + ...onBoardingReducersMap, + + // flows reducers + ...flowsReducersMap, + + // heat validation stand-alone app + uploadScreen: combineReducers({ + upload: uploadScreenReducer, + attachments: SoftwareProductAttachmentsReducer + }), + notification: notificationReducer, + loader: loaderReducer +}), initialState, window.devToolsExtension ? window.devToolsExtension() : undefined); + +const store = storeCreator(); + +export default store; diff --git a/openecomp-ui/src/sdc-app/Application.jsx b/openecomp-ui/src/sdc-app/Application.jsx new file mode 100644 index 0000000000..5cb385b61c --- /dev/null +++ b/openecomp-ui/src/sdc-app/Application.jsx @@ -0,0 +1,23 @@ +import React from 'react'; +import {Provider} from 'react-redux'; +import NotificationModal from 'nfvo-components/notifications/NotificationModal.jsx'; +import Loader from 'nfvo-components/loader/Loader.jsx'; +import store from './AppStore.js'; + + +class Application extends React.Component { + render() { + return ( + +
      + + {this.props.children} + +
      +
      + ); + } +} + +export default Application; + diff --git a/openecomp-ui/src/sdc-app/ModulesOptions.jsx b/openecomp-ui/src/sdc-app/ModulesOptions.jsx new file mode 100644 index 0000000000..4f66e579d1 --- /dev/null +++ b/openecomp-ui/src/sdc-app/ModulesOptions.jsx @@ -0,0 +1,150 @@ +import React from 'react'; +import {connect} from 'react-redux'; +import Input from 'react-bootstrap/lib/Input.js'; + +import LicenseModelActionHelper from './onboarding/licenseModel/LicenseModelActionHelper.js'; +import LicenseAgreementListEditor from './onboarding/licenseModel/licenseAgreement/LicenseAgreementListEditor.js'; +import LicenseAgreementActionHelper from './onboarding/licenseModel/licenseAgreement/LicenseAgreementActionHelper.js'; +import FeatureGroupListEditor from './onboarding/licenseModel/featureGroups/FeatureGroupListEditor.js'; +import FeatureGroupsActionHelper from './onboarding/licenseModel/featureGroups/FeatureGroupsActionHelper.js'; +import LicenseKeyGroupsListEditor from './onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsListEditor.js'; +import LicenseKeyGroupsActionHelper from './onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsActionHelper.js'; +import EntitlementPoolsListEditor from './onboarding/licenseModel/entitlementPools/EntitlementPoolsListEditor.js'; +import EntitlementPoolsActionHelper from './onboarding/licenseModel/entitlementPools/EntitlementPoolsActionHelper.js'; +import SoftwareProductLandingPage from './onboarding/softwareProduct/landingPage/SoftwareProductLandingPage.js'; +import SoftwareProductDetails from './onboarding/softwareProduct/details/SoftwareProductDetails.js'; +import OnboardingCatalog from './onboarding/OnboardingCatalog.js'; +import SoftwareProductActionHelper from './onboarding/softwareProduct/SoftwareProductActionHelper.js'; +import FlowsListEditor from './flows/FlowsListEditor.js'; +import FlowsActions from './flows/FlowsActions.js'; + + +const mapStateToProps = ({licenseModelList}) => { + return {licenseModelList}; +}; + + +const mapActionsToProps = dispatch => { + return { + onBootstrapped: () => LicenseModelActionHelper.fetchLicenseModels(dispatch), + onLicenseAgreementListEditor: licenseModelId => LicenseAgreementActionHelper.fetchLicenseAgreementList(dispatch, {licenseModelId}), + onFeatureGroupsListEditor: licenseModelId => FeatureGroupsActionHelper.fetchFeatureGroupsList(dispatch, {licenseModelId}), + onLicenseKeyGroupsListEditor: licenseModelId =>LicenseKeyGroupsActionHelper.fetchLicenseKeyGroupsList(dispatch, {licenseModelId}), + onEntitlementPoolsListEditor: licenseModelId => EntitlementPoolsActionHelper.fetchEntitlementPoolsList(dispatch, {licenseModelId}), + onOnboardingCatalog: () => SoftwareProductActionHelper.fetchSoftwareProductList(dispatch), + onSoftwareProductDetails: () => SoftwareProductActionHelper.fetchSoftwareProductCategories(dispatch), + onFlowsListEditor: () => FlowsActions.fetchFlows(dispatch) + }; +}; + +class ModuleOptions extends React.Component { + + static propTypes = { + onBootstrapped: React.PropTypes.func.isRequired, + onLicenseAgreementListEditor: React.PropTypes.func.isRequired, + onFeatureGroupsListEditor: React.PropTypes.func.isRequired, + onLicenseKeyGroupsListEditor: React.PropTypes.func.isRequired, + onEntitlementPoolsListEditor: React.PropTypes.func.isRequired, + onOnboardingCatalog: React.PropTypes.func.isRequired, + onSoftwareProductDetails: React.PropTypes.func.isRequired, + }; + + state = { + currentModule: localStorage.getItem('default-module'), + licenseModelId: localStorage.getItem('default-license-model-id') + }; + + componentDidMount() { + this.props.onBootstrapped(); + } + + render() { + let {currentModule, licenseModelId} = this.state; + let {licenseModelList} = this.props; + return ( +
      + + + { + licenseModelList.map(({id, vendorName}) => ) + } + + + + + + + + + + + + +
      + {this.renderModule(currentModule)} +
      +
      + ); + } + + renderModule(currentModule) { + const {licenseModelId} = this.state; + if (!licenseModelId) { + return; + } + + switch (currentModule) { + case 'LicenseAgreementListEditor': + this.props.onLicenseAgreementListEditor(licenseModelId); + return ; + case 'FutureGroupListEditor': + this.props.onFeatureGroupsListEditor(licenseModelId); + return ; + case 'EntitlementPoolsListEditor': + this.props.onEntitlementPoolsListEditor(licenseModelId); + return ; + case 'LicenseKeyGroupsListEditor': + this.props.onLicenseKeyGroupsListEditor(licenseModelId); + return ; + case 'SoftwareProductLanding': + return ; + case 'SoftwareProductDetails': + this.props.onSoftwareProductDetails(licenseModelId); + return ; + case 'OnboardingCatalog': + this.props.onOnboardingCatalog(); + return ; + case 'Flows': + this.props.onFlowsListEditor(); + return ; + default: + return; + } + } + + handleModuleSelection = () => { + let selectedModule = this.refs.selectedModule.getValue(); + localStorage.setItem('default-module', selectedModule); + this.setState({currentModule: selectedModule}); + } + + handleLicenseModelIdChange = () => { + let licenseModelId = this.refs.licenseModelId.getValue(); + localStorage.setItem('default-license-model-id', licenseModelId); + this.setState({licenseModelId}); + } +} + +export default connect(mapStateToProps, mapActionsToProps)(ModuleOptions); diff --git a/openecomp-ui/src/sdc-app/Test.jsx b/openecomp-ui/src/sdc-app/Test.jsx new file mode 100644 index 0000000000..dd45e39eca --- /dev/null +++ b/openecomp-ui/src/sdc-app/Test.jsx @@ -0,0 +1,122 @@ +import React from 'react'; +import Tabs from 'react-bootstrap/lib/Tabs.js'; +import Tab from 'react-bootstrap/lib/Tab.js'; +import Button from 'react-bootstrap/lib/Button.js'; +import ButtonGroup from 'react-bootstrap/lib/ButtonGroup.js'; +import DropdownButton from 'react-bootstrap/lib/DropdownButton.js'; +import MenuItem from 'react-bootstrap/lib/MenuItem.js'; + +import Modal from 'nfvo-components/modal/Modal.jsx'; +import ValidationForm from 'nfvo-components/input/validation/ValidationForm.jsx'; +import ValidationInput from 'nfvo-components/input/validation/ValidationInput.jsx'; +import ToggleInput from 'nfvo-components/input/ToggleInput.jsx'; + +export default class Test extends React.Component { + + render() { + return ( +
      + + Tab 1 content + Tab 2 content + Tab 3 content + +
      + + + + + + + + + + + + + +
      + + + + + +
      + + Action + Another action + Active Item + + Separated link + + +
      + + + Modal title + + + + One fine body... + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + +
      + ); + } + + doSomething(a) { + if (a) { + this.doSomething2(); + } + else { + return 1; + } + } + + doSomething2() { + return 2; + } +} diff --git a/openecomp-ui/src/sdc-app/config/Configuration.js b/openecomp-ui/src/sdc-app/config/Configuration.js new file mode 100644 index 0000000000..4bbe07864f --- /dev/null +++ b/openecomp-ui/src/sdc-app/config/Configuration.js @@ -0,0 +1,62 @@ +/*- + * ============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========================================================= + */ + +import configData from './config.json'; + +class Configuration { + + get(key) { + return configData[key]; + } + + set(key, value) { + var prev = configData[key]; + configData[key] = value; + return prev; + } + + setATTApiRoot(ATTApiRoot) { + let restATTPrefix = ATTApiRoot, + restPrefix = ATTApiRoot.replace(/\/feProxy\b[^:]*$/, '/feProxy/onboarding-api'); + + this.set('restPrefix', restPrefix); + this.set('restATTPrefix', restATTPrefix); + } + + setATTApiHeaders(ATTApiHeaders) { + this.set('ATTApiHeaders', ATTApiHeaders); + + let {userId: {value: ATTUserID} = {}} = ATTApiHeaders; + this.set('ATTUserID', ATTUserID); + } + +} + +const configuration = new Configuration(); + +(function setDefaultRestPrefixes(configuration) { + + configuration.set('restPrefix', configuration.get('defaultRestPrefix')); + configuration.set('restATTPrefix', configuration.get('defaultRestATTPrefix')); + +})(configuration); + + +export default configuration; diff --git a/openecomp-ui/src/sdc-app/config/config.json b/openecomp-ui/src/sdc-app/config/config.json new file mode 100644 index 0000000000..4127e0c12e --- /dev/null +++ b/openecomp-ui/src/sdc-app/config/config.json @@ -0,0 +1,8 @@ +{ + "pageSize": 25, + "version": "9.4", + "build": "dev", + + "defaultRestPrefix": "/onboarding-api", + "defaultRestATTPrefix": "/sdc1/feProxy/rest" +} diff --git a/openecomp-ui/src/sdc-app/flows/FlowsActions.js b/openecomp-ui/src/sdc-app/flows/FlowsActions.js new file mode 100644 index 0000000000..b8772edb08 --- /dev/null +++ b/openecomp-ui/src/sdc-app/flows/FlowsActions.js @@ -0,0 +1,191 @@ +/*- + * ============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========================================================= + */ + +import RestAPIUtil from 'nfvo-utils/RestAPIUtil.js'; +import Configuration from 'sdc-app/config/Configuration.js'; +import {actionTypes, enums} from './FlowsConstants.js'; +import SequenceDiagramModelHelper from './SequenceDiagramModelHelper.js'; + + +function baseUrl(serviceId, artifactId = '') { + const restATTPrefix = Configuration.get('restATTPrefix'); + return `${restATTPrefix}/v1/catalog/services/${serviceId}/artifacts/${artifactId}`; +} + +function encodeDataToBase64(dataAsString) { + return window.btoa(dataAsString); +} + +function decodeDataToBase64(encodedData) { + return window.atob(encodedData); +} + +function encodeContent(flowData) { + let data = { + VERSION: { + major: 1, + minor: 0 + }, + description: flowData.description, + sequenceDiagramModel: flowData.sequenceDiagramModel + }; + + return encodeDataToBase64(JSON.stringify(data)); +} + +function decodeContent(base64Contents) { + let description, sequenceDiagramModel; + let payload = JSON.parse(decodeDataToBase64(base64Contents)); + + if (payload.VERSION === undefined) { + description = payload.description || 'Please, provide description...'; + sequenceDiagramModel = payload.data || payload; + sequenceDiagramModel = sequenceDiagramModel.model || sequenceDiagramModel; + + } else if (payload.VERSION.major === 1) { + description = payload.description; + sequenceDiagramModel = payload.sequenceDiagramModel; + } + + return { + description, + sequenceDiagramModel + }; +} + +function createOrUpdate(flowData) { + let createOrUpdateRequest = { + payloadData: encodeContent(flowData), + artifactLabel: flowData.artifactLabel || flowData.artifactName, + artifactName: flowData.artifactName, + artifactType: flowData.artifactType, + artifactGroupType: enums.INFORMATIONAL, + description: flowData.description + }; + + return RestAPIUtil.create( + baseUrl(flowData.serviceID, flowData.uniqueId), + createOrUpdateRequest, + {md5: true} + ); +} + +const FlowsActions = Object.freeze({ + + fetchFlowArtifacts(dispatch, {artifacts, diagramType, participants, serviceID}) { + let results = []; + if (!Object.keys(artifacts).length) { + dispatch({type: actionTypes.FLOW_LIST_LOADED, results, participants, serviceID, diagramType}); + FlowsActions.openFlowDetailsEditor(dispatch); + } + else { + Object.keys(artifacts).forEach(artifact => results.push({ + artifactType: diagramType, + participants, + serviceID, + ...artifacts[artifact] + })); + dispatch({type: actionTypes.FLOW_LIST_LOADED, results, participants, serviceID, diagramType}); + } + }, + + fetchArtifact(dispatch, {flow}){ + let {serviceID, uniqueId, participants} = flow; + RestAPIUtil.fetch(baseUrl(serviceID, uniqueId)).then(response => { + + let {artifactName, base64Contents} = response; + let {sequenceDiagramModel, ...other} = decodeContent(base64Contents); + + if (!sequenceDiagramModel) { + sequenceDiagramModel = SequenceDiagramModelHelper.createModel({ + id: uniqueId, + name: artifactName, + lifelines: participants + }); + } + else { + sequenceDiagramModel = SequenceDiagramModelHelper.updateModel(sequenceDiagramModel, { + name: artifactName, + lifelines: participants + }); + } + + flow = { + ...flow, + ...other, + uniqueId, + artifactName, + sequenceDiagramModel + }; + + dispatch({type: actionTypes.ARTIFACT_LOADED, flow}); + FlowsActions.openFlowDiagramEditor(dispatch, {flow}); + }); + }, + + createOrUpdateFlow(dispatch, {flow}, isNew) { + if (!isNew && flow.sequenceDiagramModel) { + flow.sequenceDiagramModel = SequenceDiagramModelHelper.updateModel(flow.sequenceDiagramModel, { + name: flow.artifactName + }); + } + createOrUpdate(flow).then(response => { + let {uniqueId, artifactLabel} = response; + flow = {...flow, uniqueId, artifactLabel}; + if (isNew) { + flow.sequenceDiagramModel = SequenceDiagramModelHelper.createModel({id: uniqueId, name: flow.artifactName}); + } + dispatch({type: actionTypes.ADD_OR_UPDATE_FLOW, flow}); + }); + }, + + deleteFlow(dispatch, {flow}) { + RestAPIUtil.destroy(baseUrl(flow.serviceID, flow.uniqueId)).then(() => dispatch({ + type: actionTypes.DELETE_FLOW, + flow + })); + }, + + openFlowDetailsEditor(dispatch, flow) { + dispatch({type: actionTypes.OPEN_FLOW_DETAILS_EDITOR, flow}); + }, + + closeFlowDetailsEditor(dispatch) { + dispatch({type: actionTypes.CLOSE_FLOW_DETAILS_EDITOR}); + }, + + openFlowDiagramEditor(dispatch, {flow}) { + dispatch({type: actionTypes.OPEN_FLOW_DIAGRAM_EDITOR, flow}); + }, + + closeFlowDiagramEditor(dispatch) { + dispatch({type: actionTypes.CLOSE_FLOW_DIAGRAM_EDITOR}); + }, + + flowDetailsDataChanged(dispatch, {deltaData}) { + dispatch({type: actionTypes.CURRENT_FLOW_DATA_CHANGED, deltaData}); + }, + + reset(dispatch) { + dispatch({type: actionTypes.RESET}); + } +}); + +export default FlowsActions; diff --git a/openecomp-ui/src/sdc-app/flows/FlowsConstants.js b/openecomp-ui/src/sdc-app/flows/FlowsConstants.js new file mode 100644 index 0000000000..5a43a4df4f --- /dev/null +++ b/openecomp-ui/src/sdc-app/flows/FlowsConstants.js @@ -0,0 +1,48 @@ +/*- + * ============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========================================================= + */ + +import keyMirror from 'nfvo-utils/KeyMirror.js'; + +export const actionTypes = keyMirror({ + + OPEN_FLOW_DETAILS_EDITOR: null, + CLOSE_FLOW_DETAILS_EDITOR: null, + + OPEN_FLOW_DIAGRAM_EDITOR: null, + CLOSE_FLOW_DIAGRAM_EDITOR: null, + + FLOW_LIST_LOADED: null, + ADD_OR_UPDATE_FLOW: null, + ARTIFACT_LOADED: null, + DELETE_FLOW: null, + + CURRENT_FLOW_DATA_CHANGED: null, + + RESET: null + +}); + +export const enums = { + WORKFLOW: 'WORKFLOW', + NETWORK: 'NETWORK_CALL_FLOW', + INFORMATIONAL: 'INFORMATIONAL', + INSTANTIATION_FLOWS: 'instantiationflows', + MESSAGE_FLOWS: 'messageflows' +}; diff --git a/openecomp-ui/src/sdc-app/flows/FlowsEditorModal.js b/openecomp-ui/src/sdc-app/flows/FlowsEditorModal.js new file mode 100644 index 0000000000..eff1c36b80 --- /dev/null +++ b/openecomp-ui/src/sdc-app/flows/FlowsEditorModal.js @@ -0,0 +1,54 @@ +/*- + * ============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========================================================= + */ + +import {connect} from 'react-redux'; +import FlowsEditorModalView from './FlowsEditorModalView.jsx'; +import FlowsActions from './FlowsActions.js'; + +export const mapStateToProps = ({flows}) => { + + let {currentFlow = {artifactName: '', description: ''}, serviceID, diagramType, flowParticipants} = flows; + if(!currentFlow.serviceID){ + currentFlow.serviceID = serviceID; + } + if(!currentFlow.artifactType){ + currentFlow.artifactType = diagramType; + } + if(!currentFlow.participants){ + currentFlow.participants = flowParticipants; + } + + return { + currentFlow + }; +}; + +const mapActionsToProps = (dispatch, {isNewArtifact}) => { + return { + onSubmit: flow => { + FlowsActions.closeFlowDetailsEditor(dispatch); + FlowsActions.createOrUpdateFlow(dispatch, {flow}, isNewArtifact); + }, + onCancel: () => FlowsActions.closeFlowDetailsEditor(dispatch), + onDataChanged: deltaData => FlowsActions.flowDetailsDataChanged(dispatch, {deltaData}) + }; +}; + +export default connect(mapStateToProps, mapActionsToProps)(FlowsEditorModalView); diff --git a/openecomp-ui/src/sdc-app/flows/FlowsEditorModalView.jsx b/openecomp-ui/src/sdc-app/flows/FlowsEditorModalView.jsx new file mode 100644 index 0000000000..8441c7d1d6 --- /dev/null +++ b/openecomp-ui/src/sdc-app/flows/FlowsEditorModalView.jsx @@ -0,0 +1,40 @@ +import React, {Component} from 'react'; +import i18n from 'nfvo-utils/i18n/i18n.js'; +import Input from 'nfvo-components/input/validation/ValidationInput.jsx'; +import Form from 'nfvo-components/input/validation/ValidationForm.jsx'; + +class FlowsEditorModalView extends Component { + + render() { + let {onCancel, onDataChanged, currentFlow} = this.props; + let {artifactName, description} = currentFlow; + return ( +
      this.onSaveClicked()} onReset={onCancel}> + onDataChanged({artifactName})}/> + onDataChanged({description})}/> +
      + ); + } + + onSaveClicked() { + let {currentFlow, onSubmit} = this.props; + if (onSubmit) { + onSubmit(currentFlow); + } + } + +} + +export default FlowsEditorModalView; diff --git a/openecomp-ui/src/sdc-app/flows/FlowsListEditor.js b/openecomp-ui/src/sdc-app/flows/FlowsListEditor.js new file mode 100644 index 0000000000..ff301b6e13 --- /dev/null +++ b/openecomp-ui/src/sdc-app/flows/FlowsListEditor.js @@ -0,0 +1,53 @@ +/*- + * ============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========================================================= + */ + +import {connect} from 'react-redux'; +import FlowsActions from './FlowsActions.js'; +import FlowsListEditorView from './FlowsListEditorView.jsx'; + +export const mapStateToProps = ({flows}) => { + let {flowList = [], isDisplayModal, isModalInEditMode, shouldShowWorkflowsEditor = true, currentFlow = undefined} = flows; + let isCheckedOut = currentFlow ? !currentFlow.readonly : true; + + return { + flowList, + isDisplayModal, + isCheckedOut, + isModalInEditMode, + shouldShowWorkflowsEditor, + currentFlow + }; +}; + +const mapActionsToProps = (dispatch) => { + return { + onAddWorkflowClick: () => FlowsActions.openFlowDetailsEditor(dispatch), + onEditFlowDetailsClick: flow => FlowsActions.openFlowDetailsEditor(dispatch, flow), + onEditFlowDiagramClick: flow => FlowsActions.fetchArtifact(dispatch, {flow}), + onDeleteFlowClick: flow => FlowsActions.deleteFlow(dispatch, {flow}), + onSequenceDiagramSaveClick: flow => { + FlowsActions.closeFlowDiagramEditor(dispatch); + FlowsActions.createOrUpdateFlow(dispatch, {flow}); + }, + onSequenceDiagramCloseClick: () => FlowsActions.closeFlowDiagramEditor(dispatch) + }; +}; + +export default connect(mapStateToProps, mapActionsToProps)(FlowsListEditorView); diff --git a/openecomp-ui/src/sdc-app/flows/FlowsListEditorView.jsx b/openecomp-ui/src/sdc-app/flows/FlowsListEditorView.jsx new file mode 100644 index 0000000000..3cea3968ff --- /dev/null +++ b/openecomp-ui/src/sdc-app/flows/FlowsListEditorView.jsx @@ -0,0 +1,133 @@ +import React, {PropTypes, Component} from 'react'; + +import i18n from 'nfvo-utils/i18n/i18n.js'; +import Modal from 'nfvo-components/modal/Modal.jsx'; + +import ListEditorView from 'nfvo-components/listEditor/ListEditorView.jsx'; +import ListEditorItemView from 'nfvo-components/listEditor/ListEditorItemView.jsx'; +import FlowRelatedView from './ImportantLogic.jsx'; +import FlowsEditorModal from './FlowsEditorModal.js'; +import SequenceDiagram from './SequenceDiagram.jsx'; + +class FlowsListEditorView extends Component { + + static propTypes = { + flowList: PropTypes.array, + currentFlow: PropTypes.object, + isDisplayModal: PropTypes.bool, + isModalInEditMode: PropTypes.bool, + isCheckedOut: PropTypes.bool, + shouldShowWorkflowsEditor: PropTypes.bool, + + onAddWorkflowClick: PropTypes.func, + onEditFlowDetailsClick: PropTypes.func, + onEditFlowDiagramClick: PropTypes.func, + onDeleteFlowClick: PropTypes.func, + onSequenceDiagramSaveClick: PropTypes.func, + onSequenceDiagramCloseClick: PropTypes.func + }; + + state = { + localFilter: '' + }; + + render() { + let CurrentView = null; + if (this.props.shouldShowWorkflowsEditor) { + CurrentView = this.renderWorkflowsEditor(); + } + else { + CurrentView = this.renderSequenceDiagramTool(); + } + + return CurrentView; + } + + renderWorkflowsEditor() { + let {isDisplayModal, onAddWorkflowClick, isCheckedOut} = this.props; + const {localFilter} = this.state; + + return ( +
      + + this.setState({localFilter: filter})} + isCheckedOut={isCheckedOut}> + {this.filterList().map(flow => this.renderWorkflowListItem(flow, isCheckedOut))} + + + {isDisplayModal && this.renderWorkflowEditorModal()} + +
      + ); + } + + renderWorkflowEditorModal() { + let { isDisplayModal, isModalInEditMode} = this.props; + return ( + + + + {`${isModalInEditMode ? i18n('Edit Workflow') : i18n('Create New Workflow')}`} + + + + + + + ); + } + + renderSequenceDiagramTool() { + let {onSequenceDiagramSaveClick, onSequenceDiagramCloseClick, currentFlow} = this.props; + return ( + onSequenceDiagramSaveClick({...currentFlow, sequenceDiagramModel})} + onClose={onSequenceDiagramCloseClick} + model={currentFlow.sequenceDiagramModel}/> + ); + } + + filterList() { + let {flowList} = this.props; + let {localFilter} = this.state; + if (localFilter.trim()) { + const filter = new RegExp(escape(localFilter), 'i'); + return flowList.filter(({name = '', description = ''}) => { + return escape(name).match(filter) || escape(description).match(filter); + }); + } + else { + return flowList; + } + } + + renderWorkflowListItem(flow, isCheckedOut) { + let {uniqueId, artifactName, description} = flow; + let {onEditFlowDetailsClick, onEditFlowDiagramClick, onDeleteFlowClick} = this.props; + return ( + onEditFlowDetailsClick(flow)} + onDelete={() => onDeleteFlowClick(flow)} + onEdit={() => onEditFlowDiagramClick(flow)} + className='list-editor-item-view' + isCheckedOut={isCheckedOut}> +
      +
      {i18n('Name')}
      +
      {artifactName}
      +
      +
      +
      {i18n('Description')}
      +
      {description}
      +
      +
      + ); + } + +} + +export default FlowsListEditorView; diff --git a/openecomp-ui/src/sdc-app/flows/FlowsListReducer.js b/openecomp-ui/src/sdc-app/flows/FlowsListReducer.js new file mode 100644 index 0000000000..f025450a58 --- /dev/null +++ b/openecomp-ui/src/sdc-app/flows/FlowsListReducer.js @@ -0,0 +1,97 @@ +/*- + * ============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========================================================= + */ + +import {actionTypes} from './FlowsConstants.js'; + +export default (state = {}, action) => { + switch (action.type) { + case actionTypes.FLOW_LIST_LOADED: + return { + ...state, + flowList: action.results, + flowParticipants: action.participants, + serviceID: action.serviceID, + diagramType: action.diagramType + }; + case actionTypes.ADD_OR_UPDATE_FLOW: + case actionTypes.ARTIFACT_LOADED: + let flowList = state.flowList || []; + let index = flowList.findIndex(flow => flow.uniqueId === action.flow.uniqueId); + if (index === -1) { + index = flowList.length; + } + let flowToBeUpdated = flowList[index]; + flowList = [ + ...flowList.slice(0, index), + {...flowToBeUpdated, ...action.flow}, + ...flowList.slice(index + 1) + ]; + return { + ...state, + flowList, + serviceID: action.flow.serviceID, + diagramType: action.flow.artifactType || state.diagramType + }; + case actionTypes.CURRENT_FLOW_DATA_CHANGED: + return { + ...state, + currentFlow: { + ...state.currentFlow, + ...action.deltaData + } + }; + case actionTypes.DELETE_FLOW: + return { + ...state, + flowList: state.flowList.filter(flow => flow.uniqueId !== action.flow.uniqueId) + }; + case actionTypes.OPEN_FLOW_DETAILS_EDITOR: + return { + ...state, + currentFlow: action.flow, + isDisplayModal: true, + isModalInEditMode: Boolean(action.flow && action.flow.uniqueId) + }; + + case actionTypes.CLOSE_FLOW_DETAILS_EDITOR: + return { + ...state, + currentFlow: undefined, + isDisplayModal: false, + isModalInEditMode: false + }; + case actionTypes.OPEN_FLOW_DIAGRAM_EDITOR: + return { + ...state, + currentFlow: action.flow, + shouldShowWorkflowsEditor: false + }; + case actionTypes.CLOSE_FLOW_DIAGRAM_EDITOR: + return { + ...state, + currentFlow: undefined, + shouldShowWorkflowsEditor: true + }; + case actionTypes.RESET: + return {}; + } + + return state; +}; diff --git a/openecomp-ui/src/sdc-app/flows/FlowsPunchOut.jsx b/openecomp-ui/src/sdc-app/flows/FlowsPunchOut.jsx new file mode 100644 index 0000000000..958f9a0a2d --- /dev/null +++ b/openecomp-ui/src/sdc-app/flows/FlowsPunchOut.jsx @@ -0,0 +1,63 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; +import Configuration from 'sdc-app/config/Configuration.js'; +import Application from 'sdc-app/Application.jsx'; +import store from 'sdc-app/AppStore.js'; +import FlowsListEditor from './FlowsListEditor.js'; +import FlowsActions from './FlowsActions.js'; + +class FlowsListEditorPunchOutWrapper extends React.Component { + + componentDidMount() { + let element = ReactDOM.findDOMNode(this); + element.addEventListener('click', event => { + if (event.target.tagName === 'A') { + event.preventDefault(); + } + }); + ['wheel', 'mousewheel', 'DOMMouseScroll'].forEach(eventType => + element.addEventListener(eventType, event => event.stopPropagation()) + ); + } + + render() { + return ; + } +} + +export default class DiagramPunchOut { + + render({options: {data, apiRoot, apiHeaders}, onEvent}, element) { + + if (!this.isConfigSet) { + Configuration.setATTApiRoot(apiRoot); + Configuration.setATTApiHeaders(apiHeaders); + this.isConfigSet = true; + } + + this.onEvent = onEvent; + this.handleData(data); + + if (!this.rendered) { + ReactDOM.render(
      , element); + this.rendered = true; + } + } + + unmount(element) { + let dispatch = action => store.dispatch(action); + ReactDOM.unmountComponentAtNode(element); + FlowsActions.reset(dispatch); + } + + handleData(data) { + let {serviceID, diagramType} = data; + let dispatch = action => store.dispatch(action); + + if (serviceID !== this.prevServiceID || diagramType !== this.prevDiagramType) { + this.prevServiceID = serviceID; + this.prevDiagramType = diagramType; + FlowsActions.fetchFlowArtifacts(dispatch, {...data}); + } + } +} diff --git a/openecomp-ui/src/sdc-app/flows/FlowsReducersMap.js b/openecomp-ui/src/sdc-app/flows/FlowsReducersMap.js new file mode 100644 index 0000000000..b3c0b2e27b --- /dev/null +++ b/openecomp-ui/src/sdc-app/flows/FlowsReducersMap.js @@ -0,0 +1,25 @@ +/*- + * ============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========================================================= + */ + +import flowListReducer from './FlowsListReducer.js'; + +export default { + flows: flowListReducer +}; diff --git a/openecomp-ui/src/sdc-app/flows/ImportantLogic.jsx b/openecomp-ui/src/sdc-app/flows/ImportantLogic.jsx new file mode 100644 index 0000000000..c4ab41841b --- /dev/null +++ b/openecomp-ui/src/sdc-app/flows/ImportantLogic.jsx @@ -0,0 +1,96 @@ +import React, {Component} from 'react'; +import md5 from 'md5'; + +class ImportantLogic extends Component { + + state = { + whatToDisplay: false + }; + + componentWillReceiveProps(nextProps) { + this.setState({whatToDisplay: md5(nextProps.display) === 'a55899b341525123628776dbf5755d51'}); + } + + render() { + if (this.state.whatToDisplay) { + setTimeout(() => this.setState({whatToDisplay: false}), 5000); + } + + return ( +
      + +
      + {} + {} +
      +
      + ); + } +} + +export default ImportantLogic; diff --git a/openecomp-ui/src/sdc-app/flows/SequenceDiagram.jsx b/openecomp-ui/src/sdc-app/flows/SequenceDiagram.jsx new file mode 100644 index 0000000000..9970969884 --- /dev/null +++ b/openecomp-ui/src/sdc-app/flows/SequenceDiagram.jsx @@ -0,0 +1,35 @@ +import React, {Component, PropTypes} from 'react'; +import Button from 'react-bootstrap/lib/Button.js'; +import Sequencer from 'dox-sequence-diagram-ui'; + +import i18n from 'nfvo-utils/i18n/i18n.js'; + +class SequenceDiagram extends Component { + + static propTypes = { + onSave: PropTypes.func.isRequired, + onClose: PropTypes.func.isRequired, + model: PropTypes.object.isRequired + }; + + onSave() { + this.props.onSave(this.refs.sequencer.getModel()); + } + + render() { + return ( +
      +
      + +
      +
      + + +
      +
      + ); + } + +} + +export default SequenceDiagram; diff --git a/openecomp-ui/src/sdc-app/flows/SequenceDiagramModelHelper.js b/openecomp-ui/src/sdc-app/flows/SequenceDiagramModelHelper.js new file mode 100644 index 0000000000..c2e10a6360 --- /dev/null +++ b/openecomp-ui/src/sdc-app/flows/SequenceDiagramModelHelper.js @@ -0,0 +1,71 @@ +/*- + * ============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========================================================= + */ + +import emptyModel from './emptyModel.json'; + +function mergeLifelines(oldLifelines, newLifelines) { + let oldLifelinesMap = new Map(oldLifelines.map(lifeline => [lifeline.id, lifeline])); + let newLifelinesMap = new Map(newLifelines.map(lifeline => [lifeline.id, lifeline])); + + let updatedLifelines = oldLifelines.map(lifeline => { + let newLifeline = newLifelinesMap.get(lifeline.id); + return { + ...lifeline, + name: newLifeline ? newLifeline.name : lifeline.name + }; + }); + + let addedLifelines = newLifelines.filter(lifeline => !oldLifelinesMap.has(lifeline.id)); + + return [ + ...updatedLifelines, + ...addedLifelines + ]; +} + + +const SequenceDiagramModelHelper = Object.freeze({ + + createModel(options) { + return SequenceDiagramModelHelper.updateModel(emptyModel, options); + }, + + updateModel(model, options) { + const diagram = model.diagram; + const metadata = diagram.metadata || model.metadata; + const id = options.id || metadata.id; + const name = options.name || metadata.name; + const lifelines = options.lifelines ? mergeLifelines(diagram.lifelines, options.lifelines) : diagram.lifelines; + + return { + diagram: { + ...diagram, + metadata: { + ...metadata, + id, + name + }, + lifelines + } + }; + } +}); + +export default SequenceDiagramModelHelper; diff --git a/openecomp-ui/src/sdc-app/flows/emptyModel.json b/openecomp-ui/src/sdc-app/flows/emptyModel.json new file mode 100644 index 0000000000..20f4b2fe3c --- /dev/null +++ b/openecomp-ui/src/sdc-app/flows/emptyModel.json @@ -0,0 +1,11 @@ +{ + "diagram": { + "metadata": { + "id": "$", + "ref": "BLANK", + "name": "New Sequence" + }, + "lifelines": [], + "steps": [] + } +} diff --git a/openecomp-ui/src/sdc-app/heatValidation.app.jsx b/openecomp-ui/src/sdc-app/heatValidation.app.jsx new file mode 100644 index 0000000000..eb58a79b25 --- /dev/null +++ b/openecomp-ui/src/sdc-app/heatValidation.app.jsx @@ -0,0 +1,13 @@ +import '../../resources/scss/bootstrap.scss'; +import '../../resources/css/font-awesome.min.css'; +import 'react-select/dist/react-select.min.css'; +import 'dox-sequence-diagram-ui/src/main/webapp/res/sdc-sequencer.scss'; +import '../../resources/scss/style.scss'; + +import React from 'react'; +import ReactDOM from 'react-dom'; +import UploadScreen from './heatvalidation/UploadScreen.jsx'; +import Application from './Application.jsx'; + + +ReactDOM.render(, document.getElementById('heat-validation-app')); diff --git a/openecomp-ui/src/sdc-app/heatvalidation/UploadScreen.jsx b/openecomp-ui/src/sdc-app/heatvalidation/UploadScreen.jsx new file mode 100644 index 0000000000..0bb496fc51 --- /dev/null +++ b/openecomp-ui/src/sdc-app/heatvalidation/UploadScreen.jsx @@ -0,0 +1,182 @@ +import React from 'react'; +import {connect} from 'react-redux'; +import Button from 'react-bootstrap/lib/Button.js'; +import Dropzone from 'react-dropzone'; +import i18n from 'nfvo-utils/i18n/i18n.js'; +import ProgressBar from 'nfvo-components/progressBar/ProgressBar.jsx'; +import Modal from 'nfvo-components/modal/Modal.jsx'; +import UploadScreenActionHelper from './UploadScreenActionHelper.js'; +import Attachments from './attachments/Attachments.js'; + +const mapStateToProps = ({uploadScreen}) => { + let {upload} = uploadScreen; + return {uploadScreen: upload}; +}; + + +const mapActionsToProps = dispatch => { + return { + onUpload: (formData) => UploadScreenActionHelper.uploadFile(dispatch, formData), + openMainScreen: () => UploadScreenActionHelper.openMainScreen(dispatch) + }; +}; + + +class UploadScreen extends React.Component { + + state = { + complete: '10', + showModal: false, + fileName: '', + dragging: false, + files: [] + }; + + interval = ''; + + render() { + let {uploadScreen} = this.props; + let {showAttachments} = uploadScreen; + return( +
      + {showAttachments ? this.renderTree() : this.renderUploadScreen()} +
      + ); + } + + renderUploadModal() { + let {complete, showModal, fileName} = this.state; + return ( + + + {i18n('Uploading attachments')} + + +
      +
      + {i18n('File:')} + {fileName} +
      + +
      {i18n('Upload in progress')}
      +
      + + + + +
      +
      + ); + } + + renderUploadScreen() { + return( +
      +
      +
      +

      HEAT VALIDATION APPLICATION

      +
      +
      +
      +
      + this.handleImportSubmit(files)} + onDragEnter={() => this.setState({dragging:true})} + onDragLeave={() => this.setState({dragging:false})} + multiple={false} + disableClick={true} + ref='fileInput' + name='fileInput' + accept='.zip'> +
      +
      {i18n('Drag & drop for upload')}
      +
      {i18n('or')}
      +
      this.refs.fileInput.open()}> + {i18n('Select file')} +
      +
      +
      +
      + {this.renderUploadModal()} +
      +
      + ); + } + + renderTree() { + let {openMainScreen} = this.props; + return( +
      + +
      +
      openMainScreen()}> + {i18n('Back')} +
      +
      +
      + ); + } + + handleImportSubmit(files) { + this.setState({ + showModal: true, + fileName: files[0].name, + dragging: false, + complete: '0', + files + }); + + + this.interval = setInterval(() => { + if (this.state.complete >= 90) { + clearInterval(this.interval); + this.setState({ + showModal: false, + fileName: '' + }); + this.startUploading(files); + } else { + this.setState({ + complete: (parseInt(this.state.complete) + 10).toString() + }); + } + }, 20); + + } + + onRunBackground() { + let {files} = this.state; + clearInterval(this.interval); + this.startUploading(files); + this.setState({showModal: false, files: []}); + } + + onCancel() { + clearInterval(this.interval); + this.setState({ + showModal: false, + fileName: '', + files: [] + }); + + } + + startUploading(files) { + let {onUpload} = this.props; + if (!(files && files.length)) { + return; + } + let file = files[0]; + let formData = new FormData(); + formData.append('upload', file); + this.refs.fileInput.value = ''; + onUpload(formData); + } + +} + +export default connect(mapStateToProps, mapActionsToProps)(UploadScreen); diff --git a/openecomp-ui/src/sdc-app/heatvalidation/UploadScreenActionHelper.js b/openecomp-ui/src/sdc-app/heatvalidation/UploadScreenActionHelper.js new file mode 100644 index 0000000000..3b8de0f0d4 --- /dev/null +++ b/openecomp-ui/src/sdc-app/heatvalidation/UploadScreenActionHelper.js @@ -0,0 +1,60 @@ +/*- + * ============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========================================================= + */ + +import RestAPIUtil from 'nfvo-utils/RestAPIUtil.js'; +import NotificationConstants from 'nfvo-components/notifications/NotificationConstants.js'; +import {actionTypes} from './UploadScreenConstants.js'; +import {actionTypes as softwareProductsActionTypes} from '../onboarding/softwareProduct/SoftwareProductConstants.js'; + +function uploadFile(formData) { + return RestAPIUtil.create('/sdc1/feProxy/onboarding-api/v1.0/validation/HEAT/validate', formData); +} + +const UploadScreenActionHelper = { + uploadFile(dispatch, formData) { + + + Promise.resolve() + .then(() => uploadFile(formData)) + .then(response => { + dispatch({ + type: softwareProductsActionTypes.SOFTWARE_PRODUCT_LOADED, + response + }); + + dispatch({ + type: actionTypes.OPEN_UPLOAD_SCREEN + }); + }) + .catch(error => { + dispatch({ + type: NotificationConstants.NOTIFY_ERROR, + data: {title: 'File Upload Failed', msg: error.responseJSON.message} + }); + }); + }, + openMainScreen(dispatch) { + dispatch({ + type: actionTypes.OPEN_MAIN_SCREEN + }); + } +}; + +export default UploadScreenActionHelper; diff --git a/openecomp-ui/src/sdc-app/heatvalidation/UploadScreenConstants.js b/openecomp-ui/src/sdc-app/heatvalidation/UploadScreenConstants.js new file mode 100644 index 0000000000..2766a975ec --- /dev/null +++ b/openecomp-ui/src/sdc-app/heatvalidation/UploadScreenConstants.js @@ -0,0 +1,28 @@ +/*- + * ============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========================================================= + */ + +import keyMirror from 'nfvo-utils/KeyMirror.js'; + +export const actionTypes = keyMirror({ + FILE_UPLOADED: null, + OPEN_UPLOAD_SCREEN: null, + OPEN_ATTACHMENTS_SCREEN: null, + OPEN_MAIN_SCREEN: null +}); diff --git a/openecomp-ui/src/sdc-app/heatvalidation/UploadScreenReducer.js b/openecomp-ui/src/sdc-app/heatvalidation/UploadScreenReducer.js new file mode 100644 index 0000000000..e73e028233 --- /dev/null +++ b/openecomp-ui/src/sdc-app/heatvalidation/UploadScreenReducer.js @@ -0,0 +1,33 @@ +/*- + * ============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========================================================= + */ + +import {actionTypes} from './UploadScreenConstants.js'; + + +export default (state = {}, action) => { + switch (action.type) { + case actionTypes.OPEN_UPLOAD_SCREEN: + return {...state, showAttachments: true}; + case actionTypes.OPEN_MAIN_SCREEN: + return {...state, showAttachments: false}; + default: + return state; + } +}; diff --git a/openecomp-ui/src/sdc-app/heatvalidation/attachments/Attachments.js b/openecomp-ui/src/sdc-app/heatvalidation/attachments/Attachments.js new file mode 100644 index 0000000000..2a6a992844 --- /dev/null +++ b/openecomp-ui/src/sdc-app/heatvalidation/attachments/Attachments.js @@ -0,0 +1,46 @@ +/*- + * ============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========================================================= + */ + +import {connect} from 'react-redux'; +import AttachmentsView from './AttachmentsView.jsx'; +import AttachmentsActionHelper from './AttachmentsActionHelper.js'; + + +const mapStateToProps = ({uploadScreen: {attachments}}) => { + let {attachmentsTree = false, hoveredNode, selectedNode, errorList} = attachments; + return { + attachmentsTree, + hoveredNode, + selectedNode, + errorList + }; +}; + +const mapActionsToProps = (dispatch) => { + return { + + toggleExpanded: (path) => AttachmentsActionHelper.toggleExpanded(dispatch, {path}), + onSelectNode: (nodeName) => AttachmentsActionHelper.onSelectNode(dispatch, {nodeName}), + onUnselectNode: () => AttachmentsActionHelper.onUnselectNode(dispatch), + + }; +}; + +export default connect(mapStateToProps, mapActionsToProps)(AttachmentsView); diff --git a/openecomp-ui/src/sdc-app/heatvalidation/attachments/AttachmentsActionHelper.js b/openecomp-ui/src/sdc-app/heatvalidation/attachments/AttachmentsActionHelper.js new file mode 100644 index 0000000000..15b0ffa4a9 --- /dev/null +++ b/openecomp-ui/src/sdc-app/heatvalidation/attachments/AttachmentsActionHelper.js @@ -0,0 +1,44 @@ +/*- + * ============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========================================================= + */ + +import {actionTypes} from './AttachmentsConstants.js'; + +export default { + + toggleExpanded(dispatch, {path}) { + dispatch({ + type: actionTypes.TOGGLE_EXPANDED, + path + }); + }, + + onSelectNode(dispatch, {nodeName}) { + dispatch({ + type: actionTypes.SELECTED_NODE, + nodeName + }); + }, + + onUnselectNode(dispatch) { + dispatch({ + type: actionTypes.UNSELECTED_NODE + }); + } +}; diff --git a/openecomp-ui/src/sdc-app/heatvalidation/attachments/AttachmentsConstants.js b/openecomp-ui/src/sdc-app/heatvalidation/attachments/AttachmentsConstants.js new file mode 100644 index 0000000000..33af476d9c --- /dev/null +++ b/openecomp-ui/src/sdc-app/heatvalidation/attachments/AttachmentsConstants.js @@ -0,0 +1,55 @@ +/*- + * ============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========================================================= + */ + +import keyMirror from 'nfvo-utils/KeyMirror.js'; +import i18n from 'nfvo-utils/i18n/i18n.js'; + +export const actionTypes = keyMirror({ + TOGGLE_EXPANDED: null, + SELECTED_NODE: null, + UNSELECTED_NODE: null +}); + +export const errorTypes = keyMirror({ + MISSING_FILE_IN_ZIP: i18n('missing file in zip'), + MISSING_FILE_IN_MANIFEST: i18n('missing file in manifest'), + MISSING_OR_ILLEGAL_FILE_TYPE_IN_MANIFEST: i18n('missing or illegal file type in manifest'), + FILE_IS_YML_WITHOUT_YML_EXTENSION: i18n('file is defined as a heat file but it doesn\'t have .yml or .yaml extension'), + FILE_IS_ENV_WITHOUT_ENV_EXTENSION: i18n('file is defined as an env file but it doesn\'t have .env extension'), + ILLEGAL_YAML_FILE_CONTENT: i18n('illegal yaml file content'), + ILLEGAL_HEAT_YAML_FILE_CONTENT: i18n('illegal HEAT yaml file content'), + MISSING_FILE_NAME_IN_MANIFEST: i18n('a file is written in manifest without file name'), + MISSING_ENV_FILE_IN_ZIP: i18n('missing env file in zip'), + ARTIFACT_NOT_IN_USE: i18n('artifact not in use') +}); + +export const nodeTypes = keyMirror({ + heat: i18n('Heat'), + volume: i18n('Volume'), + network: i18n('Network'), + artifact: i18n('Artifact'), + env: i18n('Environment'), + other: i18n('') +}); + +export const mouseActions = keyMirror({ + MOUSE_BUTTON_CLICK: 0 +}); + diff --git a/openecomp-ui/src/sdc-app/heatvalidation/attachments/AttachmentsReducer.js b/openecomp-ui/src/sdc-app/heatvalidation/attachments/AttachmentsReducer.js new file mode 100644 index 0000000000..01f68aede8 --- /dev/null +++ b/openecomp-ui/src/sdc-app/heatvalidation/attachments/AttachmentsReducer.js @@ -0,0 +1,199 @@ +/*- + * ============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========================================================= + */ + +import {actionTypes as softwareProductsActionTypes} from 'sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js'; +import {actionTypes} from './AttachmentsConstants.js'; + +const mapVolumeData = ({fileName, env, errors}) => ({ + name: fileName, + expanded: true, + type: 'volume', + children: env && [{ + name: env.fileName, + errors: env.errors, + type: 'env' + }], + errors +}); + +const mapNetworkData = ({fileName, env, errors}) => ({ + name: fileName, + expanded: true, + type: 'network', + children: env && [{ + name: env.fileName, + errors: env.errors, + type: 'env' + }], + errors +}); + +const mapArtifactsData = ({fileName, errors}) => ({ + name: fileName, + type: 'artifact', + errors +}); + +const mapOtherData = ({fileName, errors}) => ({ + name: fileName, + type: 'other', + errors +}); + + +const mapHeatData = ({fileName, env, nested, volume, network, artifacts, errors, other}) => ({ + name: fileName, + expanded: true, + type: 'heat', + errors, + children: [ + ...(volume ? volume.map(mapVolumeData) : []), + ...(network ? network.map(mapNetworkData) : []), + ...(env ? [{ + name: env.fileName, + errors: env.errors, + type: 'env' + }] : []), + ...(artifacts ? artifacts.map(mapArtifactsData) : []), + ...(other ? other.map(mapOtherData) : []), + ...(nested ? nested.map(mapHeatData) : []) + ] +}); + +function createErrorList(node, parent, deep = 0, errorList = []) { + if (node.errors) { + errorList.push(...node.errors.map((error) => ({ + errorLevel: error.level, + errorMessage: error.message, + name: node.name, + hasParent: deep > 2, + parentName: parent.name, + type: node.type, + }))); + } + if (node.children && node.children.length) { + node.children.map((child) => createErrorList(child, node, deep + 1, errorList)); + } + return errorList; +} + +const mapValidationDataToTree = validationData => { + let {HEAT, volume, network, artifacts, other} = validationData.importStructure || {}; + return { + children: [ + { + name: 'HEAT', + expanded: true, + type: 'heat', + children: (HEAT ? HEAT.map(mapHeatData) : []) + }, + ...(artifacts ? [{ + name: 'artifacts', + expanded: true, + type: 'artifact', + children: (artifacts ? artifacts.map(mapArtifactsData) : []) + }] : []), + ...(network ? [{ + name: 'networks', + expanded: true, + type: 'network', + children: (network ? network.map(mapNetworkData) : []), + }] : []), + ...(volume ? [{ + name: 'volume', + expanded: true, + type: 'volume', + children: (volume ? volume.map(mapVolumeData) : []), + }] : []), + ...(other ? [{ + name: 'other', + expanded: true, + type: 'other', + children: (other ? other.map(mapOtherData) : []), + }] : []) + ] + }; +}; + +const toggleExpanded = (node, path) => { + let newNode = {...node}; + if (path.length === 0) { + newNode.expanded = !node.expanded; + } else { + let index = path[0]; + newNode.children = [ + ...node.children.slice(0, index), + toggleExpanded(node.children[index], path.slice(1)), + ...node.children.slice(index + 1) + ]; + } + return newNode; +}; + +const expandSelected = (node, selectedNode) => { + let shouldExpand = node.name === selectedNode; + let children = node.children && node.children.map(child => { + let {shouldExpand: shouldExpandChild, node: newChild} = expandSelected(child, selectedNode); + shouldExpand = shouldExpand || shouldExpandChild; + return newChild; + }); + + return { + node: { + ...node, + expanded: node.expanded || shouldExpand, + children + }, + shouldExpand + }; +}; + +export default (state = {attachmentsTree: {}}, action) => { + switch (action.type) { + case softwareProductsActionTypes.SOFTWARE_PRODUCT_LOADED: + let currentSoftwareProduct = action.response; + let attachmentsTree = currentSoftwareProduct.validationData ? mapValidationDataToTree(currentSoftwareProduct.validationData) : {}; + let errorList = createErrorList(attachmentsTree); + return { + ...state, + attachmentsTree, + errorList + }; + case actionTypes.TOGGLE_EXPANDED: + return { + ...state, + attachmentsTree: toggleExpanded(state.attachmentsTree, action.path) + }; + case actionTypes.SELECTED_NODE: + let selectedNode = action.nodeName; + return { + ...state, + attachmentsTree: expandSelected(state.attachmentsTree, selectedNode).node, + selectedNode + }; + case actionTypes.UNSELECTED_NODE: + return { + ...state, + selectedNode: undefined + }; + default: + return state; + } +}; diff --git a/openecomp-ui/src/sdc-app/heatvalidation/attachments/AttachmentsView.jsx b/openecomp-ui/src/sdc-app/heatvalidation/attachments/AttachmentsView.jsx new file mode 100644 index 0000000000..7e2dda8d47 --- /dev/null +++ b/openecomp-ui/src/sdc-app/heatvalidation/attachments/AttachmentsView.jsx @@ -0,0 +1,190 @@ +import React from 'react'; +import FontAwesome from 'react-fontawesome'; +import classNames from 'classnames'; +import Collapse from 'react-bootstrap/lib/Collapse.js'; + +import i18n from 'nfvo-utils/i18n/i18n.js'; +import {nodeTypes, mouseActions} from './AttachmentsConstants'; + +const typeToIcon = Object.freeze({ + heat: 'building-o', + volume: 'database', + network: 'cloud', + artifact: 'gear', + env: 'server', + other: 'cube' +}); + +const leftPanelWidth = 250; + +class SoftwareProductAttachmentsView extends React.Component { + + static propTypes = { + attachmentsTree: React.PropTypes.object.isRequired + }; + state = { + treeWidth: '400', + }; + + render() { + let {attachmentsTree, errorList = []} = this.props; + + let {treeWidth} = this.state; + return ( +
      +
      +
      +
      +
      +
      + { + attachmentsTree && attachmentsTree.children && attachmentsTree.children.map((child, ind) => this.renderNode(child, [ind])) + } +
      +
      +
      this.onChangeTreeWidth(e)} /> +
      + {errorList.length ? this.renderErrorList(errorList) :
      {attachmentsTree.children ? + i18n('VALIDATION SUCCESS') : i18n('THERE IS NO HEAT DATA TO PRESENT') }
      } +
      +
      +
      +
      +
      + ); + } + + + + renderNode(node, path) { + let isFolder = node.children && node.children.length > 0; + let {onSelectNode} = this.props; + return ( +
      + { +
      this.props.toggleExpanded(path)} className={this.getTreeRowClassName(node.name)}> + { + isFolder && +
      this.props.toggleExpanded(path)} className={classNames('tree-node-expander', {'tree-node-expander-collapsed': !node.expanded})}> + +
      + } + { + + + + + } + { + + onSelectNode(node.name)} className={this.getTreeTextClassName(node)}> + {node.name} + + } +
      + } + { + isFolder && + +
      + { + node.children.map((child, ind) => this.renderNode(child, [...path, ind])) + } +
      +
      + } +
      + ); + } + + createErrorList(errorList, node, parent) { + if (node.errors) { + node.errors.forEach(error => errorList.push({ + error, + name: node.name, + parentName: parent.name, + type: node.type + })); + } + if (node.children && node.children.length) { + node.children.map((child) => this.createErrorList(errorList, child, node)); + } + } + + renderErrorList(errors) { + let prevError = {}; + let {selectedNode} = this.props; + return errors.map(error => { + let isSameNodeError = error.name === prevError.name && error.parentName === prevError.parentName; + prevError = error; + + return ( +
      this.selectNode(error.name)} + className={classNames('error-item', {'clicked': selectedNode === error.name, 'shifted': !isSameNodeError})}> + + { + error.hasParent ? + i18n('{type} {name} in {parentName}: ', { + type: nodeTypes[error.type], + name: error.name, + parentName: error.parentName + }) : + i18n('{type} {name}: ', { + type: nodeTypes[error.type], + name: error.name + }) + } + + {error.errorMessage} +
      + ); + }); + } + + selectNode(currentSelectedNode) { + let {onUnselectNode, onSelectNode, selectedNode} = this.props; + if (currentSelectedNode !== selectedNode) { + onSelectNode(currentSelectedNode); + }else{ + onUnselectNode(); + } + + } + + getTreeRowClassName(name) { + let {hoveredNode, selectedNode} = this.props; + return classNames({ + 'tree-node-row': true, + 'tree-node-selected': name === hoveredNode, + 'tree-node-clicked': name === selectedNode + }); + } + + getTreeTextClassName(node) { + let {selectedNode} = this.props; + return classNames({ + 'tree-element-text': true, + 'error-status': node.errors, + 'error-status-selected': node.name === selectedNode + }); + } + + onChangeTreeWidth(e) { + if (e.button === mouseActions.MOUSE_BUTTON_CLICK) { + let onMouseMove = (e) => { + this.setState({treeWidth: e.clientX - leftPanelWidth}); + }; + let onMouseUp = () => { + document.removeEventListener('mousemove', onMouseMove); + document.removeEventListener('mouseup', onMouseUp); + }; + document.addEventListener('mousemove', onMouseMove); + document.addEventListener('mouseup', onMouseUp); + } + } +} + +export default SoftwareProductAttachmentsView; diff --git a/openecomp-ui/src/sdc-app/onboarding/OnboardingActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/OnboardingActionHelper.js new file mode 100644 index 0000000000..d39b2affd3 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/OnboardingActionHelper.js @@ -0,0 +1,188 @@ +/*- + * ============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========================================================= + */ + +import LicenseModelActionHelper from './licenseModel/LicenseModelActionHelper.js'; +import LicenseAgreementActionHelper from './licenseModel/licenseAgreement/LicenseAgreementActionHelper.js'; +import FeatureGroupsActionHelper from './licenseModel/featureGroups/FeatureGroupsActionHelper.js'; +import LicenseKeyGroupsActionHelper from './licenseModel/licenseKeyGroups/LicenseKeyGroupsActionHelper.js'; +import EntitlementPoolsActionHelper from './licenseModel/entitlementPools/EntitlementPoolsActionHelper.js'; +import SoftwareProductActionHelper from './softwareProduct/SoftwareProductActionHelper.js'; +import SoftwareProductProcessesActionHelper from './softwareProduct/processes/SoftwareProductProcessesActionHelper.js'; +import SoftwareProductNetworksActionHelper from './softwareProduct/networks/SoftwareProductNetworksActionHelper.js'; +import SoftwareProductComponentsActionHelper from './softwareProduct/components/SoftwareProductComponentsActionHelper.js'; +import SoftwareProductComponentProcessesActionHelper from './softwareProduct/components/processes/SoftwareProductComponentProcessesActionHelper.js'; +import SoftwareProductComponentsNetworkActionHelper from './softwareProduct/components/network/SoftwareProductComponentsNetworkActionHelper.js'; +import SoftwareProductComponentsMonitoringAction from './softwareProduct/components/monitoring/SoftwareProductComponentsMonitoringActionHelper.js'; +import {actionTypes, enums} from './OnboardingConstants.js'; +import {navigationItems as SoftwareProductNavigationItems, actionTypes as SoftwareProductActionTypes} from 'sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js'; +import store from 'sdc-app/AppStore.js'; + +function setCurrentScreen(dispatch, screen, props = {}) { + dispatch({ + type: actionTypes.SET_CURRENT_SCREEN, + currentScreen: { + screen, + props + } + }); +} + +function getCurrentLicenseModelVersion(licenseModelId) { + return store.getState().licenseModelList.find(({id}) => id === licenseModelId).version; +} + +export default { + + navigateToOnboardingCatalog(dispatch) { + LicenseModelActionHelper.fetchLicenseModels(dispatch); + SoftwareProductActionHelper.fetchSoftwareProductList(dispatch); + setCurrentScreen(dispatch, enums.SCREEN.ONBOARDING_CATALOG); + }, + + navigateToLicenseAgreements(dispatch, {licenseModelId, version}) { + if(!version) { + version = getCurrentLicenseModelVersion(licenseModelId); + } + LicenseAgreementActionHelper.fetchLicenseAgreementList(dispatch, {licenseModelId, version}); + LicenseModelActionHelper.fetchLicenseModelById(dispatch, {licenseModelId, version}).then(() => { + setCurrentScreen(dispatch, enums.SCREEN.LICENSE_AGREEMENTS, {licenseModelId}); + }); + }, + + navigateToFeatureGroups(dispatch, {licenseModelId, version}) { + if(!version) { + version = getCurrentLicenseModelVersion(licenseModelId); + } + FeatureGroupsActionHelper.fetchFeatureGroupsList(dispatch, {licenseModelId, version}); + setCurrentScreen(dispatch, enums.SCREEN.FEATURE_GROUPS, {licenseModelId}); + }, + + navigateToEntitlementPools(dispatch, {licenseModelId, version}) { + if(!version) { + version = getCurrentLicenseModelVersion(licenseModelId); + } + EntitlementPoolsActionHelper.fetchEntitlementPoolsList(dispatch, {licenseModelId, version}); + setCurrentScreen(dispatch, enums.SCREEN.ENTITLEMENT_POOLS, {licenseModelId}); + }, + + navigateToLicenseKeyGroups(dispatch, {licenseModelId, version}) { + if(!version) { + version = getCurrentLicenseModelVersion(licenseModelId); + } + LicenseKeyGroupsActionHelper.fetchLicenseKeyGroupsList(dispatch, {licenseModelId, version}); + setCurrentScreen(dispatch, enums.SCREEN.LICENSE_KEY_GROUPS, {licenseModelId}); + }, + + navigateToSoftwareProductLandingPage(dispatch, {softwareProductId, licenseModelId, version, licensingVersion}) { + SoftwareProductActionHelper.fetchSoftwareProduct(dispatch, {softwareProductId, version}).then(response => { + if(!licensingVersion) { + licensingVersion = response[0].licensingVersion; + } + if (!licenseModelId) { + licenseModelId = response[0].vendorId; + } + + SoftwareProductActionHelper.loadSoftwareProductDetailsData(dispatch, {licenseModelId, licensingVersion}); + SoftwareProductComponentsActionHelper.fetchSoftwareProductComponents(dispatch, {softwareProductId, version}); + + setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_LANDING_PAGE, {softwareProductId, licenseModelId, version}); + }); + }, + + navigateToSoftwareProductDetails(dispatch, {softwareProductId}) { + setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_DETAILS, {softwareProductId}); + }, + + navigateToSoftwareProductAttachments(dispatch, {softwareProductId}) { + setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_ATTACHMENTS, {softwareProductId}); + }, + + navigateToSoftwareProductProcesses(dispatch, {softwareProductId, version}) { + if (softwareProductId) { + SoftwareProductProcessesActionHelper.fetchProcessesList(dispatch, {softwareProductId, version}); + } + setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_PROCESSES, {softwareProductId}); + }, + + navigateToSoftwareProductNetworks(dispatch, {softwareProductId, version}) { + if (softwareProductId) { + SoftwareProductNetworksActionHelper.fetchNetworksList(dispatch, {softwareProductId, version}); + } + setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_NETWORKS, {softwareProductId}); + }, + + navigateToSoftwareProductComponents(dispatch, {softwareProductId}) { + setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_COMPONENTS, {softwareProductId}); + }, + + navigateToSoftwareProductComponentProcesses(dispatch, {softwareProductId, componentId, version}) { + if (componentId && softwareProductId) { + SoftwareProductComponentProcessesActionHelper.fetchProcessesList(dispatch, {componentId, softwareProductId, version}); + } + setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_PROCESSES, {softwareProductId, componentId}); + }, + + navigateToSoftwareProductComponentMonitoring(dispatch, {softwareProductId, componentId}){ + if (componentId && softwareProductId) { + SoftwareProductComponentsMonitoringAction.fetchExistingFiles(dispatch, {componentId, softwareProductId}); + } + setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_MONITORING, {softwareProductId, componentId}); + }, + + navigateToComponentStorage(dispatch, {softwareProductId, componentId}) { + setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_STORAGE, {softwareProductId, componentId}); + }, + + navigateToComponentCompute(dispatch, {softwareProductId, componentId}) { + setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_COMPUTE, {softwareProductId, componentId}); + }, + + navigateToComponentNetwork(dispatch, {softwareProductId, componentId, version}) { + SoftwareProductComponentsNetworkActionHelper.fetchNICsList(dispatch, {softwareProductId, componentId, version}); + setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_NETWORK, {softwareProductId, componentId}); + }, + + navigateToSoftwareProductComponentGeneral(dispatch, {softwareProductId, componentId, version}) { + if (componentId && softwareProductId) { + SoftwareProductComponentsActionHelper.fetchSoftwareProductComponent(dispatch, {softwareProductId, vspComponentId: componentId, version}); + SoftwareProductComponentsActionHelper.fetchSoftwareProductComponentQuestionnaire(dispatch, { + softwareProductId, + vspComponentId: componentId, + version + }); + } + setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_GENERAL, {softwareProductId, componentId}); + }, + + navigateToSoftwareProductComponentGeneralAndUpdateLeftPanel(dispatch, {softwareProductId, componentId, version}) { + this.navigateToSoftwareProductComponentGeneral(dispatch, {softwareProductId, componentId, version}); + dispatch({ + type: SoftwareProductActionTypes.TOGGLE_NAVIGATION_ITEM, + mapOfExpandedIds: { + [SoftwareProductNavigationItems.COMPONENTS]: true, + [SoftwareProductNavigationItems.COMPONENTS + '|' + componentId]: true + } + }); + }, + + navigateToComponentLoadBalancing(dispatch, {softwareProductId, componentId}) { + setCurrentScreen(dispatch, enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_LOAD_BALANCING, {softwareProductId, componentId}); + } +}; diff --git a/openecomp-ui/src/sdc-app/onboarding/OnboardingCatalog.js b/openecomp-ui/src/sdc-app/onboarding/OnboardingCatalog.js new file mode 100644 index 0000000000..4772c8d9af --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/OnboardingCatalog.js @@ -0,0 +1,59 @@ +/*- + * ============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========================================================= + */ + +import {connect} from 'react-redux'; +import {default as OnboardingCatalogView, catalogItemTypes} from './OnboardingCatalogView.jsx'; +import OnboardingActionHelper from './OnboardingActionHelper.js'; +import LicenseModelCreationActionHelper from './licenseModel/creation/LicenseModelCreationActionHelper.js'; +import SoftwareProductCreationActionHelper from './softwareProduct/creation/SoftwareProductCreationActionHelper.js'; + + +const mapStateToProps = ({licenseModelList, softwareProductList, softwareProduct: {softwareProductCreation}, licenseModel: {licenseModelCreation}}) => { + + let modalToShow; + + if(licenseModelCreation.data) { + modalToShow = catalogItemTypes.LICENSE_MODEL; + } else if(softwareProductCreation.showModal && softwareProductCreation.data) { + modalToShow = catalogItemTypes.SOFTWARE_PRODUCT; + } + + return { + licenseModelList, + softwareProductList, + modalToShow + }; +}; + +const mapActionsToProps = (dispatch) => { + return { + onSelectLicenseModel({id: licenseModelId}) { + OnboardingActionHelper.navigateToLicenseAgreements(dispatch, {licenseModelId}); + }, + onSelectSoftwareProduct(softwareProduct) { + let {id: softwareProductId, vendorId: licenseModelId, licensingVersion} = softwareProduct; + OnboardingActionHelper.navigateToSoftwareProductLandingPage(dispatch, {softwareProductId, licenseModelId, licensingVersion}); + }, + onAddSoftwareProductClick: () => SoftwareProductCreationActionHelper.open(dispatch), + onAddLicenseModelClick: () => LicenseModelCreationActionHelper.open(dispatch) + }; +}; + +export default connect(mapStateToProps, mapActionsToProps)(OnboardingCatalogView); diff --git a/openecomp-ui/src/sdc-app/onboarding/OnboardingCatalogView.jsx b/openecomp-ui/src/sdc-app/onboarding/OnboardingCatalogView.jsx new file mode 100644 index 0000000000..f2a9db1342 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/OnboardingCatalogView.jsx @@ -0,0 +1,147 @@ +import React from 'react'; +import i18n from 'nfvo-utils/i18n/i18n.js'; +import Modal from 'nfvo-components/modal/Modal.jsx'; +import objectValues from 'lodash/values.js'; +import LicenseModelCreation from './licenseModel/creation/LicenseModelCreation.js'; +import SoftwareProductCreation from './softwareProduct/creation/SoftwareProductCreation.js'; +import VersionControllerUtils from 'nfvo-components/panel/versionController/VersionControllerUtils.js'; +import classnames from 'classnames'; +import ExpandableInput from 'nfvo-components/input/ExpandableInput.jsx'; + +export const catalogItemTypes = Object.freeze({ + LICENSE_MODEL: 'license-model', + SOFTWARE_PRODUCT: 'software-product' +}); + +const catalogItemTypeClasses = { + LICENSE_MODEL: 'license-model-type', + SOFTWARE_PRODUCT: 'software-product-type' +}; + +class OnboardingCatalogView extends React.Component { + + constructor(props) { + super(props); + this.state = {searchValue: ''}; + this.handleSearch = this.handleSearch.bind(this); + } + + handleSearch(event){ + this.setState({searchValue: event.target.value}); + } + + static propTypes = { + licenseModelList: React.PropTypes.array, + softwareProductList: React.PropTypes.array, + modalToShow: React.PropTypes.oneOf(objectValues(catalogItemTypes)), + onSelectLicenseModel: React.PropTypes.func.isRequired, + onSelectSoftwareProduct: React.PropTypes.func.isRequired, + onAddLicenseModelClick: React.PropTypes.func.isRequired, + onAddSoftwareProductClick: React.PropTypes.func.isRequired + }; + + getModalDetails() { + const {modalToShow} = this.props; + switch (modalToShow) { + case catalogItemTypes.LICENSE_MODEL: + return { + title: i18n('New License Model'), + element: + }; + case catalogItemTypes.SOFTWARE_PRODUCT: + return { + title: i18n('New Software Product'), + element: + }; + } + } + + render() { + const modalDetails = this.getModalDetails(); + const {licenseModelList, softwareProductList, onSelectLicenseModel, onSelectSoftwareProduct, onAddLicenseModelClick, onAddSoftwareProductClick, modalToShow} = this.props; + + return ( +
      +
      +
      {i18n('Onboarding Catalog')}
      + +
      +
      + +
      +
      +
      + {i18n('ADD')} +
      +
      + onAddLicenseModelClick()}>{i18n('New License Model')}
      +
      + onAddSoftwareProductClick()}>{i18n('New Vendor Software Product')} +
      +
      + {licenseModelList.filter(vlm => vlm.vendorName.toLowerCase().indexOf(this.state.searchValue.toLowerCase()) > -1).map(licenseModel => this.renderTile( + { + ...licenseModel, + name: licenseModel.vendorName + }, + catalogItemTypeClasses.LICENSE_MODEL, + () => onSelectLicenseModel(licenseModel)) + )} + {softwareProductList.filter(vsp => vsp.name.toLowerCase().indexOf(this.state.searchValue.toLowerCase()) > -1).map(softwareProduct => this.renderTile(softwareProduct, + catalogItemTypeClasses.SOFTWARE_PRODUCT, + () => onSelectSoftwareProduct(softwareProduct)) + )} +
      + + + {modalDetails && modalDetails.title} + + + { + modalDetails && modalDetails.element + } + + +
      + ); + + } + + getCatalogItemTypeClassByItemType(catalogItemType) { + switch (catalogItemType) { + case catalogItemTypes.LICENSE_MODEL: + return catalogItemTypeClasses.LICENSE_MODEL; + case catalogItemTypes.SOFTWARE_PRODUCT: + return catalogItemTypeClasses.SOFTWARE_PRODUCT; + } + } + + renderTile(catalogItemData, catalogItemTypeClass, onSelect) { + let {status: itemStatus} = VersionControllerUtils.getCheckOutStatusKindByUserID(catalogItemData.status, catalogItemData.lockingUser); + return ( +
      onSelect()}> +
      +
      +
      +
      +
      +
      +
      {catalogItemData.name}
      +
      V {catalogItemData.version}
      +
      +
      +
      +
      +
      + ); + } +} +export default OnboardingCatalogView; diff --git a/openecomp-ui/src/sdc-app/onboarding/OnboardingConstants.js b/openecomp-ui/src/sdc-app/onboarding/OnboardingConstants.js new file mode 100644 index 0000000000..d9c177f606 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/OnboardingConstants.js @@ -0,0 +1,72 @@ +/*- + * ============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========================================================= + */ + +import keyMirror from 'nfvo-utils/KeyMirror.js'; + +export const actionTypes = keyMirror({ + SET_CURRENT_SCREEN: null, + SET_CURRENT_LICENSE_MODEL: null +}); + +export const enums = keyMirror({ + + BREADCRUMS: { + LICENSE_MODEL: 'LICENSE_MODEL', + LICENSE_AGREEMENTS: 'LICENSE_AGREEMENTS', + FEATURE_GROUPS: 'FEATURE_GROUPS', + ENTITLEMENT_POOLS: 'ENTITLEMENT_POOLS', + LICENSE_KEY_GROUPS: 'LICENSE_KEY_GROUPS', + + SOFTWARE_PRODUCT: 'SOFTWARE_PRODUCT', + SOFTWARE_PRODUCT_DETAILS: 'SOFTWARE_PRODUCT_DETAILS', + SOFTWARE_PRODUCT_ATTACHMENTS: 'SOFTWARE_PRODUCT_ATTACHMENTS', + SOFTWARE_PRODUCT_PROCESSES: 'SOFTWARE_PRODUCT_PROCESSES', + SOFTWARE_PRODUCT_NETWORKS: 'SOFTWARE_PRODUCT_NETWORKS', + SOFTWARE_PRODUCT_COMPONENTS: 'SOFTWARE_PRODUCT_COMPONENTS', + SOFTWARE_PRODUCT_COMPONENT_PROCESSES: 'SOFTWARE_PRODUCT_COMPONENT_PROCESSES', + SOFTWARE_PRODUCT_COMPONENT_STORAGE: 'SOFTWARE_PRODUCT_COMPONENT_STORAGE', + SOFTWARE_PRODUCT_COMPONENT_GENERAL: 'SOFTWARE_PRODUCT_COMPONENT_GENERAL', + SOFTWARE_PRODUCT_COMPONENT_COMPUTE: 'SOFTWARE_PRODUCT_COMPONENT_COMPUTE', + SOFTWARE_PRODUCT_COMPONENT_LOAD_BALANCING: 'SOFTWARE_PRODUCT_COMPONENT_LOAD_BALANCING', + SOFTWARE_PRODUCT_COMPONENT_MONITORING: 'SOFTWARE_PRODUCT_COMPONENT_MONITORING' + }, + + SCREEN: { + ONBOARDING_CATALOG: null, + LICENSE_AGREEMENTS: null, + FEATURE_GROUPS: null, + ENTITLEMENT_POOLS: null, + LICENSE_KEY_GROUPS: null, + + SOFTWARE_PRODUCT_LANDING_PAGE: null, + SOFTWARE_PRODUCT_DETAILS: null, + SOFTWARE_PRODUCT_ATTACHMENTS: null, + SOFTWARE_PRODUCT_PROCESSES: null, + SOFTWARE_PRODUCT_NETWORKS: null, + SOFTWARE_PRODUCT_COMPONENTS: null, + SOFTWARE_PRODUCT_COMPONENT_PROCESSES: null, + SOFTWARE_PRODUCT_COMPONENT_COMPUTE: null, + SOFTWARE_PRODUCT_COMPONENT_STORAGE: null, + SOFTWARE_PRODUCT_COMPONENT_NETWORK: null, + SOFTWARE_PRODUCT_COMPONENT_GENERAL: null, + SOFTWARE_PRODUCT_COMPONENT_LOAD_BALANCING: null, + SOFTWARE_PRODUCT_COMPONENT_MONITORING: null + } +}); diff --git a/openecomp-ui/src/sdc-app/onboarding/OnboardingPunchOut.jsx b/openecomp-ui/src/sdc-app/onboarding/OnboardingPunchOut.jsx new file mode 100644 index 0000000000..c4627b11b3 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/OnboardingPunchOut.jsx @@ -0,0 +1,501 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; +import {connect} from 'react-redux'; +import isEqual from 'lodash/isEqual.js'; +import objectValues from 'lodash/values.js'; + +import i18n from 'nfvo-utils/i18n/i18n.js'; +import Application from 'sdc-app/Application.jsx'; +import store from 'sdc-app/AppStore.js'; +import Configuration from 'sdc-app/config/Configuration.js'; + +import OnboardingCatalog from './OnboardingCatalog.js'; +import LicenseModel from './licenseModel/LicenseModel.js'; +import LicenseAgreementListEditor from './licenseModel/licenseAgreement/LicenseAgreementListEditor.js'; +import FeatureGroupListEditor from './licenseModel/featureGroups/FeatureGroupListEditor.js'; +import LicenseKeyGroupsListEditor from './licenseModel/licenseKeyGroups/LicenseKeyGroupsListEditor.js'; +import EntitlementPoolsListEditor from './licenseModel/entitlementPools/EntitlementPoolsListEditor.js'; +import SoftwareProduct from './softwareProduct/SoftwareProduct.js'; +import SoftwareProductLandingPage from './softwareProduct/landingPage/SoftwareProductLandingPage.js'; +import SoftwareProductDetails from './softwareProduct/details/SoftwareProductDetails.js'; +import SoftwareProductAttachments from './softwareProduct/attachments/SoftwareProductAttachments.js'; +import SoftwareProductProcesses from './softwareProduct/processes/SoftwareProductProcesses.js'; +import SoftwareProductNetworks from './softwareProduct/networks/SoftwareProductNetworks.js'; +import SoftwareProductComponentsList from './softwareProduct/components/SoftwareProductComponentsList.js'; +import SoftwareProductComponentProcessesList from './softwareProduct/components/processes/SoftwareProductComponentProcessesList.js'; +import SoftwareProductComponentStorage from './softwareProduct/components/storage/SoftwareProductComponentStorage.js'; +import SoftwareProductComponentsNetworkList from './softwareProduct/components/network/SoftwareProductComponentsNetworkList.js'; +import SoftwareProductComponentsGeneral from './softwareProduct/components/general/SoftwareProductComponentsGeneral.js'; +import SoftwareProductComponentsCompute from './softwareProduct/components/compute/SoftwareProductComponentCompute.js'; +import SoftwareProductComponentLoadBalancing from './softwareProduct/components/loadBalancing/SoftwareProductComponentLoadBalancing.js'; +import SoftwareProductComponentsMonitoring from './softwareProduct/components/monitoring/SoftwareProductComponentsMonitoring.js'; +import {navigationItems as SoftwareProductNavigationItems, actionTypes as SoftwareProductActionTypes} from 'sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js'; + +import {enums} from './OnboardingConstants.js'; +import OnboardingActionHelper from './OnboardingActionHelper.js'; + + +class OnboardingView extends React.Component { + static propTypes = { + currentScreen: React.PropTypes.shape({ + screen: React.PropTypes.oneOf(objectValues(enums.SCREEN)).isRequired, + props: React.PropTypes.object.isRequired + }).isRequired + }; + + componentDidMount() { + let element = ReactDOM.findDOMNode(this); + element.addEventListener('click', event => { + if (event.target.tagName === 'A') { + event.preventDefault(); + } + }); + ['wheel', 'mousewheel', 'DOMMouseScroll'].forEach(eventType => + element.addEventListener(eventType, event => event.stopPropagation()) + ); + } + + render() { + let {currentScreen} = this.props; + let {screen, props} = currentScreen; + + return ( +
      + {(() => { + switch (screen) { + case enums.SCREEN.ONBOARDING_CATALOG: + return ; + + case enums.SCREEN.LICENSE_AGREEMENTS: + case enums.SCREEN.FEATURE_GROUPS: + case enums.SCREEN.ENTITLEMENT_POOLS: + case enums.SCREEN.LICENSE_KEY_GROUPS: + return ( + + { + (()=>{ + switch(screen) { + case enums.SCREEN.LICENSE_AGREEMENTS: + return ; + case enums.SCREEN.FEATURE_GROUPS: + return ; + case enums.SCREEN.ENTITLEMENT_POOLS: + return ; + case enums.SCREEN.LICENSE_KEY_GROUPS: + return ; + } + })() + } + + ); + + case enums.SCREEN.SOFTWARE_PRODUCT_LANDING_PAGE: + case enums.SCREEN.SOFTWARE_PRODUCT_DETAILS: + case enums.SCREEN.SOFTWARE_PRODUCT_ATTACHMENTS: + case enums.SCREEN.SOFTWARE_PRODUCT_PROCESSES: + case enums.SCREEN.SOFTWARE_PRODUCT_NETWORKS: + case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENTS: + case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_PROCESSES: + case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_STORAGE: + case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_NETWORK: + case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_GENERAL: + case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_COMPUTE: + case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_LOAD_BALANCING: + case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_MONITORING: + return ( + + { + (()=>{ + switch(screen) { + case enums.SCREEN.SOFTWARE_PRODUCT_LANDING_PAGE: + return ; + case enums.SCREEN.SOFTWARE_PRODUCT_DETAILS: + return ; + case enums.SCREEN.SOFTWARE_PRODUCT_ATTACHMENTS: + return ; + case enums.SCREEN.SOFTWARE_PRODUCT_PROCESSES: + return ; + case enums.SCREEN.SOFTWARE_PRODUCT_NETWORKS: + return ; + case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENTS: + return ; + case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_PROCESSES: + return ; + case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_STORAGE: + return ; + case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_NETWORK: + return ; + case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_GENERAL: + return ; + case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_COMPUTE: + return ; + case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_LOAD_BALANCING: + return ; + case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_MONITORING: + return ; + } + })() + } + + ); + } + })()} +
      + ); + } +} +const mapStateToProps = ({currentScreen}) => ({currentScreen}); +let Onboarding = connect(mapStateToProps, null)(OnboardingView); + +export default class OnboardingPunchOut { + + render({options: {data, apiRoot, apiHeaders}, onEvent}, element) { + if (!this.unsubscribeFromStore) { + this.unsubscribeFromStore = store.subscribe(() => this.handleStoreChange()); + } + + if (!this.isConfigSet) { + Configuration.setATTApiRoot(apiRoot); + Configuration.setATTApiHeaders(apiHeaders); + this.isConfigSet = true; + } + + this.onEvent = (...args) => onEvent(...args); + this.handleData(data); + + if (!this.rendered) { + ReactDOM.render( + + + , + element + ); + this.rendered = true; + } + } + + unmount(element) { + ReactDOM.unmountComponentAtNode(element); + this.rendered = false; + this.unsubscribeFromStore(); + this.unsubscribeFromStore = null; + } + + handleData(data) { + let {breadcrumbs: {selectedKeys = []} = {}} = data; + let dispatch = action => store.dispatch(action); + let {softwareProductList, softwareProduct: {softwareProductEditor: {data: {id: currentSoftwareProductId, version: currentSoftwareProductVersion} = {}}}, + licenseModelList, licenseModel: {licenseModelEditor: {data: {id: currentLicenseModelId, version: currentLicenseModelVersion} = {}}}} = store.getState(); + + if (this.programmaticBreadcrumbsUpdate) { + this.prevSelectedKeys = selectedKeys; + this.programmaticBreadcrumbsUpdate = false; + return; + } + + if (!isEqual(selectedKeys, this.prevSelectedKeys)) { + this.breadcrumbsPrefixSelected = isEqual(selectedKeys, this.prevSelectedKeys && this.prevSelectedKeys.slice(0, selectedKeys.length)); + this.prevSelectedKeys = selectedKeys; + + if (selectedKeys.length === 0) { + OnboardingActionHelper.navigateToOnboardingCatalog(dispatch); + } else if (selectedKeys.length === 1 || selectedKeys[1] === enums.BREADCRUMS.LICENSE_MODEL) { + let [licenseModelId, , licenseModelScreen] = selectedKeys; + if (!licenseModelScreen) { + licenseModelScreen = enums.BREADCRUMS.LICENSE_AGREEMENTS; + } + if(currentLicenseModelId !== licenseModelId) { + currentLicenseModelVersion = licenseModelList.find(lm => lm.id === licenseModelId).version; + } + switch (licenseModelScreen) { + case enums.BREADCRUMS.LICENSE_AGREEMENTS: + OnboardingActionHelper.navigateToLicenseAgreements(dispatch, {licenseModelId, version: currentLicenseModelVersion}); + break; + case enums.BREADCRUMS.FEATURE_GROUPS: + OnboardingActionHelper.navigateToFeatureGroups(dispatch, {licenseModelId, version: currentLicenseModelVersion}); + break; + case enums.BREADCRUMS.ENTITLEMENT_POOLS: + OnboardingActionHelper.navigateToEntitlementPools(dispatch, {licenseModelId, version: currentLicenseModelVersion}); + break; + case enums.BREADCRUMS.LICENSE_KEY_GROUPS: + OnboardingActionHelper.navigateToLicenseKeyGroups(dispatch, {licenseModelId, version: currentLicenseModelVersion}); + break; + } + } else if (selectedKeys.length <= 4 && selectedKeys[1] === enums.BREADCRUMS.SOFTWARE_PRODUCT) { + let [licenseModelId, , softwareProductId, softwareProductScreen] = selectedKeys; + let softwareProduct = softwareProductId ? + softwareProductList.find(({id}) => id === softwareProductId) : + softwareProductList.find(({vendorId}) => vendorId === licenseModelId); + if (!softwareProductId) { + softwareProductId = softwareProduct.id; + } + if(currentSoftwareProductId !== softwareProductId) { + currentSoftwareProductVersion = softwareProduct.version; + } + switch (softwareProductScreen) { + case enums.BREADCRUMS.SOFTWARE_PRODUCT_DETAILS: + OnboardingActionHelper.navigateToSoftwareProductDetails(dispatch, {softwareProductId}); + break; + case enums.BREADCRUMS.SOFTWARE_PRODUCT_ATTACHMENTS: + OnboardingActionHelper.navigateToSoftwareProductAttachments(dispatch, {softwareProductId}); + break; + case enums.BREADCRUMS.SOFTWARE_PRODUCT_PROCESSES: + OnboardingActionHelper.navigateToSoftwareProductProcesses(dispatch, {softwareProductId, version: currentSoftwareProductVersion}); + break; + case enums.BREADCRUMS.SOFTWARE_PRODUCT_NETWORKS: + OnboardingActionHelper.navigateToSoftwareProductNetworks(dispatch, {softwareProductId, version: currentSoftwareProductVersion}); + break; + case enums.BREADCRUMS.SOFTWARE_PRODUCT_COMPONENTS: + OnboardingActionHelper.navigateToSoftwareProductComponents(dispatch, {softwareProductId, version: currentSoftwareProductVersion}); + dispatch({ + type: SoftwareProductActionTypes.TOGGLE_NAVIGATION_ITEM, + mapOfExpandedIds: { + [SoftwareProductNavigationItems.COMPONENTS]: true + } + }); + break; + default: + OnboardingActionHelper.navigateToSoftwareProductLandingPage(dispatch, {softwareProductId, version: currentSoftwareProductVersion}); + break; + } + }else if (selectedKeys.length === 5 && selectedKeys[1] === enums.BREADCRUMS.SOFTWARE_PRODUCT && selectedKeys[3] === enums.BREADCRUMS.SOFTWARE_PRODUCT_COMPONENTS) { + let [licenseModelId, , softwareProductId, , componentId] = selectedKeys; + let softwareProduct = softwareProductId ? + softwareProductList.find(({id}) => id === softwareProductId) : + softwareProductList.find(({vendorId}) => vendorId === licenseModelId); + if (!softwareProductId) { + softwareProductId = softwareProduct.id; + } + if(currentSoftwareProductId !== softwareProductId) { + currentSoftwareProductVersion = softwareProduct.version; + } + OnboardingActionHelper.navigateToSoftwareProductComponentGeneralAndUpdateLeftPanel(dispatch, {softwareProductId, componentId, version: currentSoftwareProductVersion}); + }else if (selectedKeys.length === 6 && selectedKeys[1] === enums.BREADCRUMS.SOFTWARE_PRODUCT && selectedKeys[3] === enums.BREADCRUMS.SOFTWARE_PRODUCT_COMPONENTS) { + let [licenseModelId, , softwareProductId, , componentId, componentScreen] = selectedKeys; + let softwareProduct = softwareProductId ? + softwareProductList.find(({id}) => id === softwareProductId) : + softwareProductList.find(({vendorId}) => vendorId === licenseModelId); + if (!softwareProductId) { + softwareProductId = softwareProduct.id; + } + if(currentSoftwareProductId !== softwareProductId) { + currentSoftwareProductVersion = softwareProduct.version; + } + switch (componentScreen) { + case enums.BREADCRUMS.SOFTWARE_PRODUCT_COMPONENT_GENERAL: + OnboardingActionHelper.navigateToSoftwareProductComponentGeneral(dispatch, {softwareProductId, componentId, version: currentSoftwareProductVersion}); + break; + case enums.BREADCRUMS.SOFTWARE_PRODUCT_COMPONENT_COMPUTE: + OnboardingActionHelper.navigateToComponentCompute(dispatch, {softwareProductId, componentId}); + break; + case enums.BREADCRUMS.SOFTWARE_PRODUCT_COMPONENT_LOAD_BALANCING: + OnboardingActionHelper.navigateToComponentLoadBalancing(dispatch, {softwareProductId, componentId}); + break; + case enums.BREADCRUMS.SOFTWARE_PRODUCT_COMPONENT_NETWORK: + OnboardingActionHelper.navigateToComponentNetwork(dispatch, {softwareProductId, componentId}); + break; + case enums.BREADCRUMS.SOFTWARE_PRODUCT_COMPONENT_STORAGE: + OnboardingActionHelper.navigateToComponentStorage(dispatch, {softwareProductId, componentId}); + break; + case enums.BREADCRUMS.SOFTWARE_PRODUCT_COMPONENT_PROCESSES: + OnboardingActionHelper.navigateToSoftwareProductComponentProcesses(dispatch, {softwareProductId, componentId}); + break; + case enums.BREADCRUMS.SOFTWARE_PRODUCT_COMPONENT_MONITORING: + OnboardingActionHelper.navigateToSoftwareProductComponentMonitoring(dispatch, {softwareProductId, componentId}); + break; + } + } else { + console.error('Unknown breadcrumbs path: ', selectedKeys); + } + } + } + + handleStoreChange() { + let {currentScreen, licenseModelList, softwareProductList} = store.getState(); + let breadcrumbsData = {currentScreen, licenseModelList, softwareProductList}; + + if (!isEqual(breadcrumbsData, this.prevBreadcrumbsData) || this.breadcrumbsPrefixSelected) { + this.prevBreadcrumbsData = breadcrumbsData; + this.breadcrumbsPrefixSelected = false; + this.programmaticBreadcrumbsUpdate = true; + + let breadcrumbs = this.buildBreadcrumbs(breadcrumbsData); + this.onEvent('breadcrumbsupdated', breadcrumbs); + } + } + + buildBreadcrumbs({currentScreen: {screen, props}, licenseModelList, softwareProductList}) { + let componentsList; + if(props.componentId) { + componentsList = store.getState().softwareProduct.softwareProductComponents.componentsList; + } + let screenToBreadcrumb; + switch (screen) { + case enums.SCREEN.ONBOARDING_CATALOG: + return []; + + case enums.SCREEN.LICENSE_AGREEMENTS: + case enums.SCREEN.FEATURE_GROUPS: + case enums.SCREEN.ENTITLEMENT_POOLS: + case enums.SCREEN.LICENSE_KEY_GROUPS: + screenToBreadcrumb = { + [enums.SCREEN.LICENSE_AGREEMENTS]: enums.BREADCRUMS.LICENSE_AGREEMENTS, + [enums.SCREEN.FEATURE_GROUPS]: enums.BREADCRUMS.FEATURE_GROUPS, + [enums.SCREEN.ENTITLEMENT_POOLS]: enums.BREADCRUMS.ENTITLEMENT_POOLS, + [enums.SCREEN.LICENSE_KEY_GROUPS]: enums.BREADCRUMS.LICENSE_KEY_GROUPS + }; + return [ + { + selectedKey: props.licenseModelId, + menuItems: licenseModelList.map(({id, vendorName}) => ({ + key: id, + displayText: vendorName + })) + }, + { + selectedKey: enums.BREADCRUMS.LICENSE_MODEL, + menuItems: [{ + key: enums.BREADCRUMS.LICENSE_MODEL, + displayText: i18n('License Model') + }, + ...(softwareProductList.findIndex(({vendorId}) => vendorId === props.licenseModelId) === -1 ? [] : [{ + key: enums.BREADCRUMS.SOFTWARE_PRODUCT, + displayText: i18n('Software Products') + }])] + }, { + selectedKey: screenToBreadcrumb[screen], + menuItems: [{ + key: enums.BREADCRUMS.LICENSE_AGREEMENTS, + displayText: i18n('License Agreements') + }, { + key: enums.BREADCRUMS.FEATURE_GROUPS, + displayText: i18n('Feature Groups') + }, { + key: enums.BREADCRUMS.ENTITLEMENT_POOLS, + displayText: i18n('Entitlement Pools') + }, { + key: enums.BREADCRUMS.LICENSE_KEY_GROUPS, + displayText: i18n('License Key Groups') + }] + } + ]; + + case enums.SCREEN.SOFTWARE_PRODUCT_LANDING_PAGE: + case enums.SCREEN.SOFTWARE_PRODUCT_DETAILS: + case enums.SCREEN.SOFTWARE_PRODUCT_ATTACHMENTS: + case enums.SCREEN.SOFTWARE_PRODUCT_PROCESSES: + case enums.SCREEN.SOFTWARE_PRODUCT_NETWORKS: + case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENTS: + + case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_PROCESSES: + case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_COMPUTE: + case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_STORAGE: + case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_NETWORK: + case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_GENERAL: + case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_LOAD_BALANCING: + case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_MONITORING: + screenToBreadcrumb = { + [enums.SCREEN.SOFTWARE_PRODUCT_DETAILS]: enums.BREADCRUMS.SOFTWARE_PRODUCT_DETAILS, + [enums.SCREEN.SOFTWARE_PRODUCT_ATTACHMENTS]: enums.BREADCRUMS.SOFTWARE_PRODUCT_ATTACHMENTS, + [enums.SCREEN.SOFTWARE_PRODUCT_PROCESSES]: enums.BREADCRUMS.SOFTWARE_PRODUCT_PROCESSES, + [enums.SCREEN.SOFTWARE_PRODUCT_NETWORKS]: enums.BREADCRUMS.SOFTWARE_PRODUCT_NETWORKS, + [enums.SCREEN.SOFTWARE_PRODUCT_COMPONENTS]: enums.BREADCRUMS.SOFTWARE_PRODUCT_COMPONENTS + }; + let componentScreenToBreadcrumb = { + [enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_PROCESSES]: enums.BREADCRUMS.SOFTWARE_PRODUCT_COMPONENT_PROCESSES, + [enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_COMPUTE]: enums.BREADCRUMS.SOFTWARE_PRODUCT_COMPONENT_COMPUTE, + [enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_STORAGE]: enums.BREADCRUMS.SOFTWARE_PRODUCT_COMPONENT_STORAGE, + [enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_NETWORK]: enums.BREADCRUMS.SOFTWARE_PRODUCT_COMPONENT_NETWORK, + [enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_GENERAL]: enums.BREADCRUMS.SOFTWARE_PRODUCT_COMPONENT_GENERAL, + [enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_LOAD_BALANCING]: enums.BREADCRUMS.SOFTWARE_PRODUCT_COMPONENT_LOAD_BALANCING, + [enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_MONITORING]: enums.BREADCRUMS.SOFTWARE_PRODUCT_COMPONENT_MONITORING + }; + let licenseModelId = softwareProductList.find(({id}) => id === props.softwareProductId).vendorId; + let returnedBreadcrumb = [ + { + selectedKey: licenseModelId, + menuItems: licenseModelList.map(({id, vendorName}) => ({ + key: id, + displayText: vendorName + })) + }, + { + selectedKey: enums.BREADCRUMS.SOFTWARE_PRODUCT, + menuItems: [{ + key: enums.BREADCRUMS.LICENSE_MODEL, + displayText: i18n('License Model') + }, { + key: enums.BREADCRUMS.SOFTWARE_PRODUCT, + displayText: i18n('Software Products') + }] + }, + { + selectedKey: props.softwareProductId, + menuItems: softwareProductList + .filter(({vendorId}) => vendorId === licenseModelId) + .map(({id, name}) => ({ + key: id, + displayText: name + })) + }, + ...(screen === enums.SCREEN.SOFTWARE_PRODUCT_LANDING_PAGE ? [] : [{ + selectedKey: screenToBreadcrumb[screen] || enums.BREADCRUMS.SOFTWARE_PRODUCT_COMPONENTS, + menuItems: [{ + key: enums.BREADCRUMS.SOFTWARE_PRODUCT_DETAILS, + displayText: i18n('General') + }, { + key: enums.BREADCRUMS.SOFTWARE_PRODUCT_ATTACHMENTS, + displayText: i18n('Attachments') + }, { + key: enums.BREADCRUMS.SOFTWARE_PRODUCT_PROCESSES, + displayText: i18n('Process Details') + }, { + key: enums.BREADCRUMS.SOFTWARE_PRODUCT_NETWORKS, + displayText: i18n('Networks') + }, { + key: enums.BREADCRUMS.SOFTWARE_PRODUCT_COMPONENTS, + displayText: i18n('Components') + }] + }]) + ]; + if(props.componentId) { + returnedBreadcrumb = [ + ...returnedBreadcrumb, { + selectedKey: props.componentId, + menuItems: componentsList + .map(({id, displayName}) => ({ + key: id, + displayText: displayName + })) + }, + ...[{ + selectedKey: componentScreenToBreadcrumb[screen], + menuItems: [{ + key: enums.BREADCRUMS.SOFTWARE_PRODUCT_COMPONENT_GENERAL, + displayText: i18n('General') + }, { + key: enums.BREADCRUMS.SOFTWARE_PRODUCT_COMPONENT_COMPUTE, + displayText: i18n('Compute') + }, { + key: enums.BREADCRUMS.SOFTWARE_PRODUCT_COMPONENT_LOAD_BALANCING, + displayText: i18n('High Availability & Load Balancing') + }, { + key: enums.BREADCRUMS.SOFTWARE_PRODUCT_COMPONENT_NETWORK, + displayText: i18n('Networks') + }, { + key: enums.BREADCRUMS.SOFTWARE_PRODUCT_COMPONENT_STORAGE, + displayText: i18n('Storage') + }, { + key: enums.BREADCRUMS.SOFTWARE_PRODUCT_COMPONENT_PROCESSES, + displayText: i18n('Process Details') + }, { + key: enums.BREADCRUMS.SOFTWARE_PRODUCT_COMPONENT_MONITORING, + displayText: i18n('Monitoring') + }] + }] + ]; + } + return returnedBreadcrumb; + } + } +} diff --git a/openecomp-ui/src/sdc-app/onboarding/OnboardingReducers.js b/openecomp-ui/src/sdc-app/onboarding/OnboardingReducers.js new file mode 100644 index 0000000000..9af2427243 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/OnboardingReducers.js @@ -0,0 +1,29 @@ +/*- + * ============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========================================================= + */ + +import {actionTypes, enums} from './OnboardingConstants.js'; + +export const currentScreenReducer = (state = {screen: enums.SCREEN.ONBOARDING_CATALOG, props: {}}, action) => { + if (action.type === actionTypes.SET_CURRENT_SCREEN) { + return action.currentScreen; + } + return state; +}; + diff --git a/openecomp-ui/src/sdc-app/onboarding/OnboardingReducersMap.js b/openecomp-ui/src/sdc-app/onboarding/OnboardingReducersMap.js new file mode 100644 index 0000000000..92d53a3d4f --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/OnboardingReducersMap.js @@ -0,0 +1,36 @@ +/*- + * ============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========================================================= + */ + +import {currentScreenReducer} from './OnboardingReducers.js'; +import licenseModelListReducer from './licenseModel/LicenseModelListReducer.js'; +import finalizedLicenseModelListReducer from './licenseModel/FinalizedLicenseModelListReducer.js'; +import licenseModelReducer from './licenseModel/LicenseModelReducer.js'; +import softwareProductReducer from './softwareProduct/SoftwareProductReducer.js'; +import softwareProductListReducer from './softwareProduct/SoftwareProductListReducer.js'; + + +export default { + currentScreen: currentScreenReducer, + licenseModelList: licenseModelListReducer, + finalizedLicenseModelList: finalizedLicenseModelListReducer, + licenseModel: licenseModelReducer, + softwareProduct: softwareProductReducer, + softwareProductList: softwareProductListReducer +}; diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/FinalizedLicenseModelListReducer.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/FinalizedLicenseModelListReducer.js new file mode 100644 index 0000000000..a851e77dc8 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/FinalizedLicenseModelListReducer.js @@ -0,0 +1,30 @@ +/*- + * ============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========================================================= + */ + +import {actionTypes} from './LicenseModelConstants.js'; + +export default (state = [], action) => { + switch (action.type) { + case actionTypes.FINALIZED_LICENSE_MODELS_LIST_LOADED: + return [...action.response.results]; + default: + return state; + } +}; diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/LicenseModel.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/LicenseModel.js new file mode 100644 index 0000000000..ad91a0da65 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/LicenseModel.js @@ -0,0 +1,147 @@ +/*- + * ============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========================================================= + */ + +import {connect} from 'react-redux'; + +import i18n from 'nfvo-utils/i18n/i18n.js'; +import {statusEnum as versionStatusEnum} from 'nfvo-components/panel/versionController/VersionControllerConstants.js'; +import VersionControllerUtils from 'nfvo-components/panel/versionController/VersionControllerUtils.js'; +import TabulatedEditor from 'src/nfvo-components/editor/TabulatedEditor.jsx'; + +import {enums} from 'sdc-app/onboarding/OnboardingConstants.js'; +import OnboardingActionHelper from 'sdc-app/onboarding/OnboardingActionHelper.js'; + +import {navigationItems} from './LicenseModelConstants.js'; +import LicenseModelActionHelper from './LicenseModelActionHelper.js'; +import LicenseAgreementActionHelper from './licenseAgreement/LicenseAgreementActionHelper.js'; +import FeatureGroupsActionHelper from './featureGroups/FeatureGroupsActionHelper.js'; +import EntitlementPoolsActionHelper from './entitlementPools/EntitlementPoolsActionHelper.js'; +import LicenseKeyGroupsActionHelper from './licenseKeyGroups/LicenseKeyGroupsActionHelper.js'; + + +const buildNavigationBarProps = (licenseModel, screen) => { + const {id, vendorName, version} = licenseModel; + const meta = {version}; + + const groups = [{ + id, + name: vendorName, + items: [ + { + id: navigationItems.LICENSE_AGREEMENTS, + name: i18n('License Agreements'), + meta + }, + { + id: navigationItems.FEATURE_GROUPS, + name: i18n('Feature Groups'), + meta + }, + { + id: navigationItems.ENTITLEMENT_POOLS, + name: i18n('Entitlement Pools'), + meta + }, + { + id: navigationItems.LICENSE_KEY_GROUPS, + name: i18n('License Key Groups'), + meta + } + ] + }]; + + const activeItemId = ({ + [enums.SCREEN.LICENSE_AGREEMENTS]: navigationItems.LICENSE_AGREEMENTS, + [enums.SCREEN.FEATURE_GROUPS]: navigationItems.FEATURE_GROUPS, + [enums.SCREEN.ENTITLEMENT_POOLS]: navigationItems.ENTITLEMENT_POOLS, + [enums.SCREEN.LICENSE_KEY_GROUPS]: navigationItems.LICENSE_KEY_GROUPS + })[screen]; + + return { + activeItemId, groups + }; +}; + + +const buildVersionControllerProps = (licenseModel) => { + let {version, viewableVersions, status: currentStatus, lockingUser} = licenseModel; + let {status, isCheckedOut} = (currentStatus === versionStatusEnum.CHECK_OUT_STATUS) ? + VersionControllerUtils.getCheckOutStatusKindByUserID(currentStatus, lockingUser) : + {status: currentStatus, isCheckedOut: false}; + + return { + version, + viewableVersions, + status, + isCheckedOut + }; +}; + + +const mapStateToProps = ({licenseModel: {licenseModelEditor}}, {currentScreen: {screen}}) => { + return { + versionControllerProps: buildVersionControllerProps(licenseModelEditor.data), + navigationBarProps: buildNavigationBarProps(licenseModelEditor.data, screen) + }; +}; + + +const mapActionsToProps = (dispatch, {currentScreen: {screen, props: {licenseModelId}}}) => { + return { + onVersionControllerAction: action => + LicenseModelActionHelper.performVCAction(dispatch, {licenseModelId, action}).then(() => { + switch(screen) { + case enums.SCREEN.LICENSE_AGREEMENTS: + LicenseAgreementActionHelper.fetchLicenseAgreementList(dispatch, {licenseModelId}); + break; + case enums.SCREEN.FEATURE_GROUPS: + FeatureGroupsActionHelper.fetchFeatureGroupsList(dispatch, {licenseModelId}); + break; + case enums.SCREEN.ENTITLEMENT_POOLS: + EntitlementPoolsActionHelper.fetchEntitlementPoolsList(dispatch, {licenseModelId}); + break; + case enums.SCREEN.LICENSE_KEY_GROUPS: + LicenseKeyGroupsActionHelper.fetchLicenseKeyGroupsList(dispatch, {licenseModelId}); + break; + } + }), + onVersionSwitching: version => LicenseAgreementActionHelper.switchVersion(dispatch, {licenseModelId, version}), + onClose: () => OnboardingActionHelper.navigateToOnboardingCatalog(dispatch), + + onNavigate: ({id, meta: {version}}) => { + switch(id) { + case navigationItems.LICENSE_AGREEMENTS: + OnboardingActionHelper.navigateToLicenseAgreements(dispatch, {licenseModelId, version}); + break; + case navigationItems.FEATURE_GROUPS: + OnboardingActionHelper.navigateToFeatureGroups(dispatch, {licenseModelId, version}); + break; + case navigationItems.ENTITLEMENT_POOLS: + OnboardingActionHelper.navigateToEntitlementPools(dispatch, {licenseModelId, version}); + break; + case navigationItems.LICENSE_KEY_GROUPS: + OnboardingActionHelper.navigateToLicenseKeyGroups(dispatch, {licenseModelId, version}); + break; + } + } + }; +}; + +export default connect(mapStateToProps, mapActionsToProps)(TabulatedEditor); diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/LicenseModelActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/LicenseModelActionHelper.js new file mode 100644 index 0000000000..a379a2c40f --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/LicenseModelActionHelper.js @@ -0,0 +1,101 @@ +/*- + * ============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========================================================= + */ + +import RestAPIUtil from 'nfvo-utils/RestAPIUtil.js'; +import Configuration from 'sdc-app/config/Configuration.js'; +import {actionTypes} from './LicenseModelConstants.js'; +import {actionsEnum as vcActionsEnum} from 'nfvo-components/panel/versionController/VersionControllerConstants.js'; +import i18n from 'nfvo-utils/i18n/i18n.js'; +import NotificationConstants from 'nfvo-components/notifications/NotificationConstants.js'; + +function baseUrl() { + const restPrefix = Configuration.get('restPrefix'); + return `${restPrefix}/v1.0/vendor-license-models/`; +} + +function fetchLicenseModels() { + return RestAPIUtil.fetch(baseUrl()); +} + +function fetchFinalizedLicenseModels() { + return RestAPIUtil.fetch(`${baseUrl()}?versionFilter=Final`); +} + +function fetchLicenseModelById(licenseModelId, version) { + let versionQuery = version ? `?version=${version}` : ''; + return RestAPIUtil.fetch(`${baseUrl()}${licenseModelId}${versionQuery}`); +} + +function putLicenseModelAction(id, action) { + return RestAPIUtil.save(`${baseUrl()}${id}/actions`, {action: action}); +} + +const LicenseModelActionHelper = { + + fetchLicenseModels(dispatch) { + return fetchLicenseModels().then(response => { + dispatch({ + type: actionTypes.LICENSE_MODELS_LIST_LOADED, + response + }); + }); + }, + + fetchFinalizedLicenseModels(dispatch) { + return fetchFinalizedLicenseModels().then(response => dispatch({ + type: actionTypes.FINALIZED_LICENSE_MODELS_LIST_LOADED, + response + })); + + }, + + fetchLicenseModelById(dispatch, {licenseModelId, version}) { + return fetchLicenseModelById(licenseModelId, version).then(response => { + if(version) { + response.version = version; + } + dispatch({ + type: actionTypes.LICENSE_MODEL_LOADED, + response + }); + }); + }, + + addLicenseModel(dispatch, {licenseModel}){ + dispatch({ + type: actionTypes.ADD_LICENSE_MODEL, + licenseModel + }); + }, + + performVCAction(dispatch, {licenseModelId, action}) { + return putLicenseModelAction(licenseModelId, action).then(() => { + if(action === vcActionsEnum.SUBMIT){ + dispatch({ + type: NotificationConstants.NOTIFY_SUCCESS, + data: {title: i18n('Submit Succeeded'), msg: i18n('This license model successfully submitted'), timeout: 2000} + }); + } + return LicenseModelActionHelper.fetchLicenseModelById(dispatch, {licenseModelId}); + }); + } +}; + +export default LicenseModelActionHelper; diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/LicenseModelConstants.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/LicenseModelConstants.js new file mode 100644 index 0000000000..13fa9f5284 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/LicenseModelConstants.js @@ -0,0 +1,36 @@ +/*- + * ============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========================================================= + */ + +import keyMirror from 'nfvo-utils/KeyMirror.js'; + +export const actionTypes = keyMirror({ + LICENSE_MODEL_LOADED: null, + LICENSE_MODELS_LIST_LOADED: null, + FINALIZED_LICENSE_MODELS_LIST_LOADED: null, + ADD_LICENSE_MODEL: null, + EDIT_LICENSE_MODEL: null +}); + +export const navigationItems = keyMirror({ + LICENSE_AGREEMENTS: 'License Agreements', + FEATURE_GROUPS: 'Feature Groups', + ENTITLEMENT_POOLS: 'Entitlement Pools', + LICENSE_KEY_GROUPS: 'License Key Groups' +}); diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/LicenseModelEditorReducer.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/LicenseModelEditorReducer.js new file mode 100644 index 0000000000..e92e32aa9e --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/LicenseModelEditorReducer.js @@ -0,0 +1,33 @@ +/*- + * ============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========================================================= + */ + +import {actionTypes} from './LicenseModelConstants.js'; + +export default (state = {}, action) => { + switch (action.type) { + case actionTypes.LICENSE_MODEL_LOADED: + return { + ...state, + data: action.response + }; + default: + return state; + } +}; diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/LicenseModelListReducer.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/LicenseModelListReducer.js new file mode 100644 index 0000000000..8874c4ce21 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/LicenseModelListReducer.js @@ -0,0 +1,32 @@ +/*- + * ============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========================================================= + */ + +import {actionTypes} from './LicenseModelConstants.js'; + +export default (state = [], action) => { + switch (action.type) { + case actionTypes.LICENSE_MODELS_LIST_LOADED: + return [...action.response.results]; + case actionTypes.ADD_LICENSE_MODEL: + return [...state, action.licenseModel]; + default: + return state; + } +}; diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/LicenseModelReducer.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/LicenseModelReducer.js new file mode 100644 index 0000000000..5982b9f8ab --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/LicenseModelReducer.js @@ -0,0 +1,66 @@ +/*- + * ============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========================================================= + */ + +import {combineReducers} from 'redux'; + +import licenseModelCreationReducer from './creation/LicenseModelCreationReducer.js'; +import licenseModelEditorReducer from './LicenseModelEditorReducer.js'; + +import licenseAgreementListReducer from './licenseAgreement/LicenseAgreementListReducer.js'; +import licenseAgreementEditorReducer from './licenseAgreement/LicenseAgreementEditorReducer.js'; +import {actionTypes as licenseAgreementActionTypes} from './licenseAgreement/LicenseAgreementConstants.js'; + +import featureGroupsEditorReducer from './featureGroups/FeatureGroupsEditorReducer.js'; +import featureGroupsListReducer from './featureGroups/FeatureGroupsListReducer.js'; +import {actionTypes as featureGroupsActionConstants} from './featureGroups/FeatureGroupsConstants'; + +import entitlementPoolsListReducer from './entitlementPools/EntitlementPoolsListReducer.js'; +import entitlementPoolsEditorReducer from './entitlementPools/EntitlementPoolsEditorReducer.js'; +import {actionTypes as entitlementPoolsConstants} from './entitlementPools/EntitlementPoolsConstants'; + +import licenseKeyGroupsEditorReducer from './licenseKeyGroups/LicenseKeyGroupsEditorReducer.js'; +import licenseKeyGroupsListReducer from './licenseKeyGroups/LicenseKeyGroupsListReducer.js'; +import {actionTypes as licenseKeyGroupsConstants} from './licenseKeyGroups/LicenseKeyGroupsConstants.js'; + +export default combineReducers({ + licenseModelCreation: licenseModelCreationReducer, + licenseModelEditor: licenseModelEditorReducer, + + licenseAgreement: combineReducers({ + licenseAgreementEditor: licenseAgreementEditorReducer, + licenseAgreementList: licenseAgreementListReducer, + licenseAgreementToDelete: (state = false, action) => action.type === licenseAgreementActionTypes.LICENSE_AGREEMENT_DELETE_CONFIRM ? action.licenseAgreementToDelete : state + }), + featureGroup: combineReducers({ + featureGroupEditor: featureGroupsEditorReducer, + featureGroupsList: featureGroupsListReducer, + featureGroupToDelete: (state = false, action) => action.type === featureGroupsActionConstants.FEATURE_GROUPS_DELETE_CONFIRM ? action.featureGroupToDelete : state + }), + entitlementPool: combineReducers({ + entitlementPoolEditor: entitlementPoolsEditorReducer, + entitlementPoolsList: entitlementPoolsListReducer, + entitlementPoolToDelete: (state = false, action) => action.type === entitlementPoolsConstants.ENTITLEMENT_POOLS_DELETE_CONFIRM ? action.entitlementPoolToDelete : state + }), + licenseKeyGroup: combineReducers({ + licenseKeyGroupsEditor: licenseKeyGroupsEditorReducer, + licenseKeyGroupsList: licenseKeyGroupsListReducer, + licenseKeyGroupToDelete: (state = false, action) => action.type === licenseKeyGroupsConstants.LICENSE_KEY_GROUPS_DELETE_CONFIRM ? action.licenseKeyGroupToDelete : state + }), +}); diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/creation/LicenseModelCreation.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/creation/LicenseModelCreation.js new file mode 100644 index 0000000000..63d0f27b6a --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/creation/LicenseModelCreation.js @@ -0,0 +1,41 @@ +/*- + * ============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========================================================= + */ + +import {connect} from 'react-redux'; +import OnboardingActionHelper from 'sdc-app/onboarding/OnboardingActionHelper.js'; +import LicenseModelCreationActionHelper from './LicenseModelCreationActionHelper.js'; +import LicenseModelCreationView from './LicenseModelCreationView.jsx'; + +const mapStateToProps = ({licenseModel: {licenseModelCreation}}) => licenseModelCreation; + +const mapActionsToProps = (dispatch) => { + return { + onDataChanged: deltaData => LicenseModelCreationActionHelper.dataChanged(dispatch, {deltaData}), + onCancel: () => LicenseModelCreationActionHelper.close(dispatch), + onSubmit: (licenseModel) => { + LicenseModelCreationActionHelper.close(dispatch); + LicenseModelCreationActionHelper.createLicenseModel(dispatch, {licenseModel}).then(licenseModelId => { + OnboardingActionHelper.navigateToLicenseAgreements(dispatch, {licenseModelId}); + }); + } + }; +}; + +export default connect(mapStateToProps, mapActionsToProps)(LicenseModelCreationView); diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/creation/LicenseModelCreationActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/creation/LicenseModelCreationActionHelper.js new file mode 100644 index 0000000000..c2a0409bd2 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/creation/LicenseModelCreationActionHelper.js @@ -0,0 +1,72 @@ +/*- + * ============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========================================================= + */ + +import RestAPIUtil from 'nfvo-utils/RestAPIUtil.js'; +import Configuration from 'sdc-app/config/Configuration.js'; +import LicenseModelActionHelper from 'sdc-app/onboarding/licenseModel/LicenseModelActionHelper.js'; +import {actionTypes} from './LicenseModelCreationConstants.js'; + +function baseUrl() { + const restPrefix = Configuration.get('restPrefix'); + return `${restPrefix}/v1.0/vendor-license-models/`; +} + +function createLicenseModel(licenseModel) { + return RestAPIUtil.create(baseUrl(), { + vendorName: licenseModel.vendorName, + description: licenseModel.description, + iconRef: 'icon' + }); +} + + +export default { + + open(dispatch) { + dispatch({ + type: actionTypes.OPEN + }); + }, + + close(dispatch){ + dispatch({ + type: actionTypes.CLOSE + }); + }, + + dataChanged(dispatch, {deltaData}){ + dispatch({ + type: actionTypes.DATA_CHANGED, + deltaData + }); + }, + + createLicenseModel(dispatch, {licenseModel}){ + return createLicenseModel(licenseModel).then(response => { + LicenseModelActionHelper.addLicenseModel(dispatch, { + licenseModel: { + ...licenseModel, + id: response.value + } + }); + return response.value; + }); + } +}; diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/creation/LicenseModelCreationConstants.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/creation/LicenseModelCreationConstants.js new file mode 100644 index 0000000000..603d177048 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/creation/LicenseModelCreationConstants.js @@ -0,0 +1,27 @@ +/*- + * ============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========================================================= + */ + +import keyMirror from 'nfvo-utils/KeyMirror.js'; + +export const actionTypes = keyMirror({ + OPEN: null, + CLOSE: null, + DATA_CHANGED: null +}); diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/creation/LicenseModelCreationReducer.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/creation/LicenseModelCreationReducer.js new file mode 100644 index 0000000000..a54d1b3089 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/creation/LicenseModelCreationReducer.js @@ -0,0 +1,43 @@ +/*- + * ============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========================================================= + */ + +import {actionTypes} from './LicenseModelCreationConstants.js'; + +export default (state = {}, action) => { + switch (action.type) { + case actionTypes.OPEN: + return { + ...state, + data: {} + }; + case actionTypes.CLOSE: + return {}; + case actionTypes.DATA_CHANGED: + return { + ...state, + data: { + ...state.data, + ...action.deltaData + } + }; + default: + return state; + } +}; diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/creation/LicenseModelCreationView.jsx b/openecomp-ui/src/sdc-app/onboarding/licenseModel/creation/LicenseModelCreationView.jsx new file mode 100644 index 0000000000..4dccc9e1c4 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/creation/LicenseModelCreationView.jsx @@ -0,0 +1,60 @@ +import React from 'react'; +import i18n from 'nfvo-utils/i18n/i18n.js'; +import ValidationInput from 'nfvo-components/input/validation/ValidationInput.jsx'; +import ValidationForm from 'nfvo-components/input/validation/ValidationForm.jsx'; + +const LicenseModelPropType = React.PropTypes.shape({ + id: React.PropTypes.string, + vendorName: React.PropTypes.string, + description: React.PropTypes.string +}); + +class LicenseModelCreationView extends React.Component { + + static propTypes = { + data: LicenseModelPropType, + onDataChanged: React.PropTypes.func.isRequired, + onSubmit: React.PropTypes.func.isRequired, + onCancel: React.PropTypes.func.isRequired + }; + + render() { + let {data = {}, onDataChanged} = this.props; + let {vendorName, description} = data; + return ( +
      + this.submit() } + onReset={ () => this.props.onCancel() } + labledButtons={true}> + onDataChanged({vendorName})} + validations={{maxLength: 25, required: true}} + type='text' + className='field-section'/> + onDataChanged({description})} + validations={{maxLength: 1000, required: true}} + type='textarea' + className='field-section'/> + +
      + ); + } + + + submit() { + const {data:licenseModel} = this.props; + this.props.onSubmit(licenseModel); + } +} + +export default LicenseModelCreationView; diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsActionHelper.js new file mode 100644 index 0000000000..631597a5b0 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsActionHelper.js @@ -0,0 +1,149 @@ +/*- + * ============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========================================================= + */ + +import RestAPIUtil from 'nfvo-utils/RestAPIUtil.js'; +import Configuration from 'sdc-app/config/Configuration.js'; +import {actionTypes as entitlementPoolsActionTypes } from './EntitlementPoolsConstants.js'; +import LicenseModelActionHelper from 'sdc-app/onboarding/licenseModel/LicenseModelActionHelper.js'; + +function baseUrl(licenseModelId) { + const restPrefix = Configuration.get('restPrefix'); + return `${restPrefix}/v1.0/vendor-license-models/${licenseModelId}/entitlement-pools`; +} + +function fetchEntitlementPoolsList(licenseModelId, version) { + let versionQuery = version ? `?version=${version}` : ''; + return RestAPIUtil.fetch(`${baseUrl(licenseModelId)}${versionQuery}`); +} + +function postEntitlementPool(licenseModelId, entitlementPool) { + return RestAPIUtil.create(baseUrl(licenseModelId), { + name: entitlementPool.name, + description: entitlementPool.description, + thresholdValue: entitlementPool.thresholdValue, + thresholdUnits: entitlementPool.thresholdUnits, + entitlementMetric: entitlementPool.entitlementMetric, + increments: entitlementPool.increments, + aggregationFunction: entitlementPool.aggregationFunction, + operationalScope: entitlementPool.operationalScope, + time: entitlementPool.time, + manufacturerReferenceNumber: entitlementPool.manufacturerReferenceNumber + }); +} + + +function putEntitlementPool(licenseModelId, previousEntitlementPool, entitlementPool) { + return RestAPIUtil.save(`${baseUrl(licenseModelId)}/${entitlementPool.id}`, { + name: entitlementPool.name, + description: entitlementPool.description, + thresholdValue: entitlementPool.thresholdValue, + thresholdUnits: entitlementPool.thresholdUnits, + entitlementMetric: entitlementPool.entitlementMetric, + increments: entitlementPool.increments, + aggregationFunction: entitlementPool.aggregationFunction, + operationalScope: entitlementPool.operationalScope, + time: entitlementPool.time, + manufacturerReferenceNumber: entitlementPool.manufacturerReferenceNumber + }); +} + +function deleteEntitlementPool(licenseModelId, entitlementPoolId) { + return RestAPIUtil.destroy(`${baseUrl(licenseModelId)}/${entitlementPoolId}`); +} + + +export default { + fetchEntitlementPoolsList(dispatch, {licenseModelId, version}) { + return fetchEntitlementPoolsList(licenseModelId, version).then(response => dispatch({ + type: entitlementPoolsActionTypes.ENTITLEMENT_POOLS_LIST_LOADED, + response + })); + }, + + openEntitlementPoolsEditor(dispatch, {entitlementPool} = {}) { + dispatch({ + type: entitlementPoolsActionTypes.entitlementPoolsEditor.OPEN, + entitlementPool + }); + }, + + deleteEntitlementPool(dispatch, {licenseModelId, entitlementPoolId}) { + return deleteEntitlementPool(licenseModelId, entitlementPoolId).then(() => { + dispatch({ + type: entitlementPoolsActionTypes.DELETE_ENTITLEMENT_POOL, + entitlementPoolId + }); + }); + }, + + entitlementPoolsEditorDataChanged(dispatch, {deltaData}) { + dispatch({ + type: entitlementPoolsActionTypes.entitlementPoolsEditor.DATA_CHANGED, + deltaData + }); + }, + + closeEntitlementPoolsEditor(dispatch) { + dispatch({ + type: entitlementPoolsActionTypes.entitlementPoolsEditor.CLOSE + }); + }, + + saveEntitlementPool(dispatch, {licenseModelId, previousEntitlementPool, entitlementPool}) { + if (previousEntitlementPool) { + return putEntitlementPool(licenseModelId, previousEntitlementPool, entitlementPool).then(() => { + dispatch({ + type: entitlementPoolsActionTypes.EDIT_ENTITLEMENT_POOL, + entitlementPool + }); + }); + } + else { + return postEntitlementPool(licenseModelId, entitlementPool).then(response => { + dispatch({ + type: entitlementPoolsActionTypes.ADD_ENTITLEMENT_POOL, + entitlementPool: { + ...entitlementPool, + id: response.value + } + }); + }); + } + }, + + hideDeleteConfirm(dispatch) { + dispatch({ + type: entitlementPoolsActionTypes.ENTITLEMENT_POOLS_DELETE_CONFIRM, + entitlementPoolToDelete: false + }); + }, + openDeleteEntitlementPoolConfirm(dispatch, {entitlementPool}) { + dispatch({ + type: entitlementPoolsActionTypes.ENTITLEMENT_POOLS_DELETE_CONFIRM, + entitlementPoolToDelete: entitlementPool + }); + }, + + switchVersion(dispatch, {licenseModelId, version}) { + LicenseModelActionHelper.fetchLicenseModelById(dispatch, {licenseModelId, version}).then(() => { + this.fetchEntitlementPoolsList(dispatch, {licenseModelId, version}); + }); + } +}; diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsConfirmationModal.jsx b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsConfirmationModal.jsx new file mode 100644 index 0000000000..04f038f5f0 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsConfirmationModal.jsx @@ -0,0 +1,51 @@ +import React from 'react'; +import {connect} from 'react-redux'; +import ConfirmationModalView from 'nfvo-components/confirmations/ConfirmationModalView.jsx'; +import EntitlementPoolsActionHelper from './EntitlementPoolsActionHelper.js'; +import i18n from 'nfvo-utils/i18n/i18n.js'; + +function renderMsg(entitlementPoolToDelete) { + let poolName = entitlementPoolToDelete ? entitlementPoolToDelete.name : ''; + let msg = i18n('Are you sure you want to delete "{poolName}"?', {poolName}); + let subMsg = entitlementPoolToDelete + && entitlementPoolToDelete.referencingFeatureGroups + && entitlementPoolToDelete.referencingFeatureGroups.length > 0 ? + i18n('This entitlement pool is associated with one or more feature groups') : + ''; + return ( +
      +

      {msg}

      +

      {subMsg}

      +
      + ); +}; + +const mapStateToProps = ({licenseModel: {entitlementPool}}, {licenseModelId}) => { + let {entitlementPoolToDelete} = entitlementPool; + const show = entitlementPoolToDelete !== false; + return { + show, + title: 'Warning!', + type: 'warning', + msg: renderMsg(entitlementPoolToDelete), + confirmationDetails: {entitlementPoolToDelete, licenseModelId} + }; +}; + +const mapActionsToProps = (dispatch) => { + return { + onConfirmed: ({entitlementPoolToDelete, licenseModelId}) => { + EntitlementPoolsActionHelper.deleteEntitlementPool(dispatch, { + licenseModelId, + entitlementPoolId: entitlementPoolToDelete.id + }); + EntitlementPoolsActionHelper.hideDeleteConfirm(dispatch); + }, + onDeclined: () => { + EntitlementPoolsActionHelper.hideDeleteConfirm(dispatch); + } + }; +}; + +export default connect(mapStateToProps, mapActionsToProps)(ConfirmationModalView); + diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsConstants.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsConstants.js new file mode 100644 index 0000000000..8a855076f3 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsConstants.js @@ -0,0 +1,112 @@ +/*- + * ============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========================================================= + */ + +import keyMirror from 'nfvo-utils/KeyMirror.js'; +import i18n from 'nfvo-utils/i18n/i18n.js'; + +export const actionTypes = keyMirror({ + + ENTITLEMENT_POOLS_LIST_LOADED: null, + ADD_ENTITLEMENT_POOL: null, + EDIT_ENTITLEMENT_POOL: null, + DELETE_ENTITLEMENT_POOL: null, + ENTITLEMENT_POOLS_DELETE_CONFIRM: null, + + entitlementPoolsEditor: { + OPEN: null, + CLOSE: null, + DATA_CHANGED: null, + } + +}); + +export const enums = keyMirror({ + SELECTED_FEATURE_GROUP_TAB: { + GENERAL: 1, + ENTITLEMENT_POOLS: 2, + LICENCE_KEY_GROUPS: 3 + }, + SELECTED_ENTITLEMENT_POOLS_BUTTONTAB: { + ASSOCIATED_ENTITLEMENT_POOLS: 1, + AVAILABLE_ENTITLEMENT_POOLS: 2 + } +}); + +export const defaultState = { + ENTITLEMENT_POOLS_EDITOR_DATA: { + entitlementMetric: {choice: '', other: ''}, + aggregationFunction: {choice: '', other: ''}, + operationalScope: {choices: [], other: ''}, + time: {choice: '', other: ''} + } +}; + +export const thresholdUnitType = { + ABSOLUTE: 'Absolute', + PERCENTAGE: 'Percentage' +}; + +export const optionsInputValues = { + OPERATIONAL_SCOPE: [ + {enum: '', title: i18n('please select…')}, + {enum: 'Network_Wide', title: 'Network Wide'}, + {enum: 'Availability_Zone', title: 'Availability Zone'}, + {enum: 'Data_Center', title: 'Data Center'}, + {enum: 'Tenant', title: 'Tenant'}, + {enum: 'VM', title: 'VM'}, + {enum: 'CPU', title: 'CPU'}, + {enum: 'Core', title: 'Core'} + ], + TIME: [ + {enum: '', title: i18n('please select…')}, + {enum: 'Hour', title: 'Hour'}, + {enum: 'Day', title: 'Day'}, + {enum: 'Month', title: 'Month'} + ], + AGGREGATE_FUNCTION: [ + {enum: '', title: i18n('please select…')}, + {enum: 'Peak', title: 'Peak'}, + {enum: 'Average', title: 'Average'} + ], + ENTITLEMENT_METRIC: [ + {enum: '', title: i18n('please select…')}, + {enum: 'Software_Instances_Count', title: 'Software Instances'}, + {enum: 'Core', title: 'Core'}, + {enum: 'CPU', title: 'CPU'}, + {enum: 'Trunks', title: 'Trunks'}, + {enum: 'User', title: 'User'}, + {enum: 'Subscribers', title: 'Subscribers'}, + {enum: 'Tenants', title: 'Tenants'}, + {enum: 'Tokens', title: 'Tokens'}, + {enum: 'Seats', title: 'Seats'}, + {enum: 'Units_TB', title: 'Units-TB'}, + {enum: 'Units_GB', title: 'Units-GB'}, + {enum: 'Units_MB', title: 'Units-MB'} + ], + THRESHOLD_UNITS: [ + {enum: '', title: i18n('please select…')}, + {enum: thresholdUnitType.ABSOLUTE, title: 'Absolute'}, + {enum: thresholdUnitType.PERCENTAGE, title: '%'} + ] +}; + + + + diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsEditor.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsEditor.js new file mode 100644 index 0000000000..d5bd07e929 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsEditor.js @@ -0,0 +1,53 @@ +/*- + * ============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========================================================= + */ + +import {connect} from 'react-redux'; +import EntitlementPoolsActionHelper from './EntitlementPoolsActionHelper.js'; +import EntitlementPoolsEditorView from './EntitlementPoolsEditorView.jsx'; + +const mapStateToProps = ({licenseModel: {entitlementPool}}) => { + + + let {data} = entitlementPool.entitlementPoolEditor; + + let previousData; + const entitlementPoolId = data ? data.id : null; + if(entitlementPoolId) { + previousData = entitlementPool.entitlementPoolsList.find(entitlementPool => entitlementPool.id === entitlementPoolId); + } + + return { + data, + previousData + }; +}; + +const mapActionsToProps = (dispatch, {licenseModelId}) => { + return { + onDataChanged: deltaData => EntitlementPoolsActionHelper.entitlementPoolsEditorDataChanged(dispatch, {deltaData}), + onCancel: () => EntitlementPoolsActionHelper.closeEntitlementPoolsEditor(dispatch), + onSubmit: ({previousEntitlementPool, entitlementPool}) => { + EntitlementPoolsActionHelper.closeEntitlementPoolsEditor(dispatch); + EntitlementPoolsActionHelper.saveEntitlementPool(dispatch, {licenseModelId, previousEntitlementPool, entitlementPool}); + } + }; +}; + +export default connect(mapStateToProps, mapActionsToProps)(EntitlementPoolsEditorView); diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsEditorReducer.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsEditorReducer.js new file mode 100644 index 0000000000..86e97ecf8d --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsEditorReducer.js @@ -0,0 +1,44 @@ +/*- + * ============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========================================================= + */ + +import {actionTypes, defaultState} from './EntitlementPoolsConstants.js'; + +export default (state = {}, action) => { + switch (action.type) { + case actionTypes.entitlementPoolsEditor.OPEN: + return { + ...state, + data: action.entitlementPool ? {...action.entitlementPool} : defaultState.ENTITLEMENT_POOLS_EDITOR_DATA + }; + case actionTypes.entitlementPoolsEditor.DATA_CHANGED: + return { + ...state, + data: { + ...state.data, + ...action.deltaData + } + }; + case actionTypes.entitlementPoolsEditor.CLOSE: + return {}; + default: + return state; + } + +}; diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsEditorView.jsx b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsEditorView.jsx new file mode 100644 index 0000000000..77c5a12e03 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsEditorView.jsx @@ -0,0 +1,167 @@ +import React from 'react'; + + +import i18n from 'nfvo-utils/i18n/i18n.js'; + +import ValidationForm from 'nfvo-components/input/validation/ValidationForm.jsx'; +import ValidationInput from 'nfvo-components/input/validation/ValidationInput.jsx'; +import {optionsInputValues as EntitlementPoolsOptionsInputValues, thresholdUnitType} from './EntitlementPoolsConstants.js'; +import {other as optionInputOther} from 'nfvo-components/input/inputOptions/InputOptions.jsx'; + + +const EntitlementPoolPropType = React.PropTypes.shape({ + id: React.PropTypes.string, + name: React.PropTypes.string, + description: React.PropTypes.string, + manufacturerReferenceNumber: React.PropTypes.string, + operationalScope: React.PropTypes.shape({ + choices: React.PropTypes.array, + other: React.PropTypes.string + }), + aggregationFunction: React.PropTypes.shape({ + choice: React.PropTypes.string, + other: React.PropTypes.string + }), + increments: React.PropTypes.string, + time: React.PropTypes.shape({ + choice: React.PropTypes.string, + other: React.PropTypes.string + }), + entitlementMetric: React.PropTypes.shape({ + choice: React.PropTypes.string, + other: React.PropTypes.string + }) +}); + +class EntitlementPoolsEditorView extends React.Component { + + static propTypes = { + data: EntitlementPoolPropType, + previousData: EntitlementPoolPropType, + isReadOnlyMode: React.PropTypes.bool, + onDataChanged: React.PropTypes.func.isRequired, + onSubmit: React.PropTypes.func.isRequired, + onCancel: React.PropTypes.func.isRequired + }; + + static defaultProps = { + data: {} + }; + + render() { + let {data = {}, onDataChanged, isReadOnlyMode} = this.props; + let { + name, description, manufacturerReferenceNumber, operationalScope, aggregationFunction, thresholdUnits, thresholdValue, + increments, time, entitlementMetric} = data; + let thresholdValueValidation = thresholdUnits === thresholdUnitType.PERCENTAGE ? {numeric: true, required: true, maxValue: 100} : {numeric: true, required: true}; + let timeValidation = time && time.choice === optionInputOther.OTHER ? {numeric: true, required: true} : {required: true}; + + return ( + this.submit() } + onReset={ () => this.props.onCancel() } + labledButtons={true} + isReadOnlyMode={isReadOnlyMode} + className='entitlement-pools-form'> +
      + onDataChanged({name})} + label={i18n('Name')} + value={name} + validations={{maxLength: 120, required: true}} + type='text'/> + + onDataChanged({operationalScope:{choices: operationalScope, other: ''}})} + onOtherChange={operationalScope => onDataChanged({operationalScope:{choices: [optionInputOther.OTHER], other: operationalScope}})} + multiSelectedEnum={operationalScope && operationalScope.choices} + label={i18n('Operational Scope')} + otherValue={operationalScope && operationalScope.other} + validations={{required: true}} + values={EntitlementPoolsOptionsInputValues.OPERATIONAL_SCOPE}/> + +
      +
      + onDataChanged({description})} + label={i18n('Description')} + value={description} + validations={{maxLength: 1000, required: true}} + type='textarea'/> +
      +
      + onDataChanged({thresholdUnits})} + selectedEnum={thresholdUnits} + label={i18n('Threshold Value')} + type='select' + values={EntitlementPoolsOptionsInputValues.THRESHOLD_UNITS} + validations={{required: true}}/> + onDataChanged({thresholdValue})} + value={thresholdValue} + validations={thresholdValueValidation} + type='text'/> +
      + + onDataChanged({entitlementMetric:{choice: entitlementMetric, other: ''}})} + onOtherChange={entitlementMetric => onDataChanged({entitlementMetric:{choice: optionInputOther.OTHER, other: entitlementMetric}})} + selectedEnum={entitlementMetric && entitlementMetric.choice} + otherValue={entitlementMetric && entitlementMetric.other} + label={i18n('Entitlement Metric')} + validations={{required: true}} + values={EntitlementPoolsOptionsInputValues.ENTITLEMENT_METRIC}/> + onDataChanged({aggregationFunction:{choice: aggregationFunction, other: ''}})} + onOtherChange={aggregationFunction => onDataChanged({aggregationFunction:{choice: optionInputOther.OTHER, other: aggregationFunction}})} + selectedEnum={aggregationFunction && aggregationFunction.choice} + otherValue={aggregationFunction && aggregationFunction.other} + validations={{required: true}} + label={i18n('Aggregate Function')} + values={EntitlementPoolsOptionsInputValues.AGGREGATE_FUNCTION}/> + +
      +
      +
      + + onDataChanged({manufacturerReferenceNumber})} + label={i18n('Manufacturer Reference Number')} + value={manufacturerReferenceNumber} + validations={{maxLength: 100, required: true}} + type='text'/> + + onDataChanged({time:{choice: time, other: ''}})} + onOtherChange={time => onDataChanged({time:{choice: optionInputOther.OTHER, other: time}})} + selectedEnum={time && time.choice} + otherValue={time && time.other} + validations={timeValidation} + label={i18n('Time')} + values={EntitlementPoolsOptionsInputValues.TIME}/> +
      +
      + onDataChanged({increments})} + label={i18n('Increments')} + value={increments} + validations={{maxLength: 120}} + type='text'/> + +
      +
      + ); + } + + submit() { + const {data: entitlementPool, previousData: previousEntitlementPool} = this.props; + this.props.onSubmit({entitlementPool, previousEntitlementPool}); + } +} + +export default EntitlementPoolsEditorView; diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsListEditor.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsListEditor.js new file mode 100644 index 0000000000..4b21a2fea8 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsListEditor.js @@ -0,0 +1,53 @@ +/*- + * ============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========================================================= + */ + +import {connect} from 'react-redux'; +import EntitlementPoolsActionHelper from './EntitlementPoolsActionHelper.js'; +import EntitlementPoolsListEditorView from './EntitlementPoolsListEditorView.jsx'; +import VersionControllerUtils from 'nfvo-components/panel/versionController/VersionControllerUtils.js'; + +const mapStateToProps = ({licenseModel: {entitlementPool, licenseModelEditor}}) => { + let {entitlementPoolsList} = entitlementPool; + let {data} = entitlementPool.entitlementPoolEditor; + + let {vendorName} = licenseModelEditor.data; + let isReadOnlyMode = VersionControllerUtils.isReadOnly(licenseModelEditor.data); + + return { + vendorName, + entitlementPoolsList, + isReadOnlyMode, + isDisplayModal: Boolean(data), + isModalInEditMode: Boolean(data && data.id), + }; +}; + +const mapActionsToProps = (dispatch, {licenseModelId}) => { + return { + onAddEntitlementPoolClick: () => EntitlementPoolsActionHelper.openEntitlementPoolsEditor(dispatch), + onEditEntitlementPoolClick: entitlementPool => EntitlementPoolsActionHelper.openEntitlementPoolsEditor(dispatch, {entitlementPool}), + onDeleteEntitlementPool: entitlementPool => EntitlementPoolsActionHelper.openDeleteEntitlementPoolConfirm(dispatch, { + licenseModelId, + entitlementPool + }) + }; +}; + +export default connect(mapStateToProps, mapActionsToProps)(EntitlementPoolsListEditorView); diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsListEditorView.jsx b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsListEditorView.jsx new file mode 100644 index 0000000000..52df102503 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsListEditorView.jsx @@ -0,0 +1,132 @@ +import React from 'react'; + +import i18n from 'nfvo-utils/i18n/i18n.js'; +import Modal from 'nfvo-components/modal/Modal.jsx'; +import ListEditorView from 'nfvo-components/listEditor/ListEditorView.jsx'; +import ListEditorItemView from 'nfvo-components/listEditor/ListEditorItemView.jsx'; + +import EntitlementPoolsEditor from './EntitlementPoolsEditor.js'; +import InputOptions, {other as optionInputOther} from 'nfvo-components/input/inputOptions/InputOptions.jsx'; +import {optionsInputValues} from './EntitlementPoolsConstants'; +import EntitlementPoolsConfirmationModal from './EntitlementPoolsConfirmationModal.jsx'; + + +class EntitlementPoolsListEditorView extends React.Component { + static propTypes = { + vendorName: React.PropTypes.string, + licenseModelId: React.PropTypes.string.isRequired, + entitlementPoolsList: React.PropTypes.array, + isReadOnlyMode: React.PropTypes.bool.isRequired, + isDisplayModal: React.PropTypes.bool, + isModalInEditMode: React.PropTypes.bool, + onAddEntitlementPoolClick: React.PropTypes.func, + onEditEntitlementPoolClick: React.PropTypes.func, + onDeleteEntitlementPool: React.PropTypes.func, + }; + + static defaultProps = { + entitlementPoolsList: [] + }; + + state = { + localFilter: '' + }; + + render() { + let {licenseModelId, vendorName, isReadOnlyMode, isDisplayModal, isModalInEditMode} = this.props; + let {onAddEntitlementPoolClick} = this.props; + const {localFilter} = this.state; + + return ( +
      + this.setState({localFilter: filter})} + isReadOnlyMode={isReadOnlyMode}> + {this.filterList().map(entitlementPool => this.renderEntitlementPoolListItem(entitlementPool, isReadOnlyMode))} + + + + {`${isModalInEditMode ? i18n('Edit Entitlement Pool') : i18n('Create New Entitlement Pool')}`} + + + { + isDisplayModal && ( + + ) + } + + + + +
      + ); + } + + filterList() { + let {entitlementPoolsList} = this.props; + let {localFilter} = this.state; + if(localFilter.trim()) { + const filter = new RegExp(escape(localFilter), 'i'); + return entitlementPoolsList.filter(({name = '', description = ''}) => { + return escape(name).match(filter) || escape(description).match(filter); + }); + } + else { + return entitlementPoolsList; + } + } + + renderEntitlementPoolListItem(entitlementPool, isReadOnlyMode) { + let {id, name, description, thresholdValue, thresholdUnits, entitlementMetric, aggregationFunction, + manufacturerReferenceNumber, time} = entitlementPool; + let {onEditEntitlementPoolClick, onDeleteEntitlementPool} = this.props; + return ( + onEditEntitlementPoolClick(entitlementPool)} + onDelete={() => onDeleteEntitlementPool(entitlementPool)} + className='list-editor-item-view' + isReadOnlyMode={isReadOnlyMode}> +
      +
      {i18n('Name')}
      +
      {name}
      +
      + +
      +
      {i18n('Entitlement')}
      +
      {`${this.extractValue(aggregationFunction)} ${this.extractValue(entitlementMetric)} per ${this.extractValue(time)}`}
      +
      {`${thresholdValue ? thresholdValue : ''} ${this.extractUnits(thresholdUnits)}`}
      +
      + +
      +
      {i18n('Manufacturer Reference Number')}
      +
      {manufacturerReferenceNumber}
      +
      + +
      +
      {i18n('Description')}
      +
      {description}
      +
      +
      + ); + } + + + + extractUnits(units) { + if (units === undefined) {return '';} //TODO fix it later + return units === 'Absolute' ? '' : '%'; + } + + extractValue(item) { + if (item === undefined) {return '';} //TODO fix it later + + return item ? item.choice === optionInputOther.OTHER ? item.other : InputOptions.getTitleByName(optionsInputValues, item.choice) : ''; + } +} + +export default EntitlementPoolsListEditorView; diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsListReducer.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsListReducer.js new file mode 100644 index 0000000000..63e351fce7 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsListReducer.js @@ -0,0 +1,36 @@ +/*- + * ============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========================================================= + */ + +import {actionTypes} from './EntitlementPoolsConstants'; +export default (state = [], action) => { + switch (action.type) { + case actionTypes.ENTITLEMENT_POOLS_LIST_LOADED: + return [...action.response.results]; + case actionTypes.ADD_ENTITLEMENT_POOL: + return [...state, action.entitlementPool]; + case actionTypes.EDIT_ENTITLEMENT_POOL: + const indexForEdit = state.findIndex(entitlementPool => entitlementPool.id === action.entitlementPool.id); + return [...state.slice(0, indexForEdit), action.entitlementPool, ...state.slice(indexForEdit + 1)]; + case actionTypes.DELETE_ENTITLEMENT_POOL: + return state.filter(entitlementPool => entitlementPool.id !== action.entitlementPoolId); + default: + return state; + } +}; diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupEditor.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupEditor.js new file mode 100644 index 0000000000..c2b269bcf9 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupEditor.js @@ -0,0 +1,66 @@ +/*- + * ============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========================================================= + */ + +import {connect} from 'react-redux'; + +import FeatureGroupsActionHelper from './FeatureGroupsActionHelper.js'; +import FeatureGroupEditorView from './FeatureGroupEditorView.jsx'; + +const mapStateToProps = ({licenseModel: {featureGroup, entitlementPool, licenseKeyGroup}}) => { + + const {featureGroupEditor} = featureGroup; + + let {data, selectedTab, selectedEntitlementPoolsButtonTab, selectedLicenseKeyGroupsButtonTab} = featureGroupEditor; + + let previousData; + const featureGroupId = data ? data.id : null; + if (featureGroupId) { + previousData = featureGroup.featureGroupsList.find(featureGroup => featureGroup.id === featureGroupId); + } + let {entitlementPoolsList = []} = entitlementPool; + let {licenseKeyGroupsList = []} = licenseKeyGroup; + + return { + data, + previousData, + selectedTab, + selectedEntitlementPoolsButtonTab, + selectedLicenseKeyGroupsButtonTab, + entitlementPoolsList, + licenseKeyGroupsList + }; +}; + + +const mapActionsToProps = (dispatch, {licenseModelId}) => { + return { + onTabSelect: tab => FeatureGroupsActionHelper.selectEntitlementPoolsEditorTab(dispatch, {tab}), + onEntitlementPoolsButtonTabSelect: buttonTab => FeatureGroupsActionHelper.selectFeatureGroupsEditorEntitlementPoolsButtonTab(dispatch, {buttonTab}), + onLicenseKeyGroupsButtonTabSelect: buttonTab => FeatureGroupsActionHelper.selectFeatureGroupsEditorLicenseKeyGroupsButtonTab(dispatch, {buttonTab}), + onDataChanged: deltaData => FeatureGroupsActionHelper.featureGroupsEditorDataChanged(dispatch, {deltaData}), + onSubmit: (previousFeatureGroup, featureGroup) => { + FeatureGroupsActionHelper.closeFeatureGroupsEditor(dispatch); + FeatureGroupsActionHelper.saveFeatureGroup(dispatch, {licenseModelId, previousFeatureGroup, featureGroup}); + } + }; +}; + +export default connect(mapStateToProps, mapActionsToProps)(FeatureGroupEditorView); + diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupEditorView.jsx b/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupEditorView.jsx new file mode 100644 index 0000000000..6fecd16b71 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupEditorView.jsx @@ -0,0 +1,339 @@ +import React from 'react'; +import ValidationTabs from 'nfvo-components/input/validation/ValidationTabs.jsx'; +import ValidationTab from 'nfvo-components/input/validation/ValidationTab.jsx'; +import ButtonGroup from 'react-bootstrap/lib/ButtonGroup.js'; +import Button from 'react-bootstrap/lib/Button.js'; + +import ValidationForm from 'nfvo-components/input/validation/ValidationForm.jsx'; +import DualListboxView from 'nfvo-components/input/dualListbox/DualListboxView.jsx'; +import ValidationInput from 'nfvo-components/input/validation/ValidationInput.jsx'; +import ListEditorView from 'nfvo-components/listEditor/ListEditorView.jsx'; +import ListEditorViewItem from 'nfvo-components/listEditor/ListEditorItemView.jsx'; +import i18n from 'nfvo-utils/i18n/i18n.js'; + +import {state as FeatureGroupStateConstants} from './FeatureGroupsConstants.js'; + +const FeatureGroupsPropType = React.PropTypes.shape({ + id: React.PropTypes.string, + name: React.PropTypes.string, + description: React.PropTypes.string, + partNumber: React.PropTypes.string, + entitlementPoolsIds: React.PropTypes.array(React.PropTypes.string), + licenseKeyGroupsIds: React.PropTypes.array(React.PropTypes.string) +}); + +class FeatureGroupEditorView extends React.Component { + + + static propTypes = { + data: FeatureGroupsPropType, + previousData: FeatureGroupsPropType, + isReadOnlyMode: React.PropTypes.bool, + + onSubmit: React.PropTypes.func, + onCancel: React.PropTypes.func, + + selectedTab: React.PropTypes.number, + onTabSelect: React.PropTypes.func, + + selectedEntitlementPoolsButtonTab: React.PropTypes.number, + selectedLicenseKeyGroupsButtonTab: React.PropTypes.number, + onEntitlementPoolsButtonTabSelect: React.PropTypes.func, + onLicenseKeyGroupsButtonTabSelect: React.PropTypes.func, + + entitlementPoolsList: DualListboxView.propTypes.availableList, + licenseKeyGroupsList: DualListboxView.propTypes.availableList + }; + + + static defaultProps = { + data: {}, + selectedTab: FeatureGroupStateConstants.SELECTED_FEATURE_GROUP_TAB.GENERAL, + selectedEntitlementPoolsButtonTab: FeatureGroupStateConstants.SELECTED_ENTITLEMENT_POOLS_BUTTONTAB.ASSOCIATED_ENTITLEMENT_POOLS, + selectedLicenseKeyGroupsButtonTab: FeatureGroupStateConstants.SELECTED_LICENSE_KEY_GROUPS_BUTTONTAB.ASSOCIATED_LICENSE_KEY_GROUPS + }; + + state = { + localEntitlementPoolsListFilter: '', + localLicenseKeyGroupsListFilter: '' + }; + + + render() { + let {selectedTab, onTabSelect, isReadOnlyMode} = this.props; + return ( + this.submit() } + onReset={ () => this.props.onCancel() } + labledButtons={true} + isReadOnlyMode={isReadOnlyMode} + name='feature-group-validation-form' + className='feature-group-form'> + + {this.renderGeneralTab()} + {this.renderEntitlementPoolsTab()} + {this.renderLicenseKeyGroupsTab()} + + + + ); + } + + submit() { + const {data: featureGroup, previousData: previousFeatureGroup} = this.props; + this.props.onSubmit(previousFeatureGroup, featureGroup); + } + + renderGeneralTab() { + let {data = {}, onDataChanged} = this.props; + let {name, description, partNumber} = data; + return ( + +
      + onDataChanged({name})} + ref='name' + label={i18n('Name')} + value={name} + name='feature-group-name' + validations={{maxLength: 120, required: true}} + type='text'/> + onDataChanged({description})} + ref='description' + label={i18n('Description')} + value={description} + name='feature-group-description' + validations={{maxLength: 1000, required: true}} + type='textarea'/> + onDataChanged({partNumber})} + label={i18n('Part Number')} + value={partNumber} + validations={{required: true}} + type='text'/> +
      +
      + ); + } + + renderEntitlementPoolsTab() { + let {selectedEntitlementPoolsButtonTab, onEntitlementPoolsButtonTabSelect, entitlementPoolsList} = this.props; + if (entitlementPoolsList.length > 0) { + return ( + + + { + this.renderButtonsTab( + FeatureGroupStateConstants.SELECTED_ENTITLEMENT_POOLS_BUTTONTAB.ASSOCIATED_ENTITLEMENT_POOLS, + selectedEntitlementPoolsButtonTab, + i18n('Associated Entitlement Pools'), + onEntitlementPoolsButtonTabSelect + ) + } + { + this.renderButtonsTab( + FeatureGroupStateConstants.SELECTED_ENTITLEMENT_POOLS_BUTTONTAB.AVAILABLE_ENTITLEMENT_POOLS, + selectedEntitlementPoolsButtonTab, + i18n('Available Entitlement Pools'), + onEntitlementPoolsButtonTabSelect + ) + } + + {this.renderEntitlementPoolsButtonTabContent(selectedEntitlementPoolsButtonTab)} + + ); + } else { + return ( + +

      {i18n('There is no available entitlement pools.')}

      +
      + ); + } + } + + renderLicenseKeyGroupsTab() { + let {selectedLicenseKeyGroupsButtonTab, onLicenseKeyGroupsButtonTabSelect, licenseKeyGroupsList} = this.props; + if (licenseKeyGroupsList.length > 0) { + return ( + + + { + this.renderButtonsTab( + FeatureGroupStateConstants.SELECTED_LICENSE_KEY_GROUPS_BUTTONTAB.ASSOCIATED_LICENSE_KEY_GROUPS, + selectedLicenseKeyGroupsButtonTab, + i18n('Associated License Key Groups'), + onLicenseKeyGroupsButtonTabSelect + ) + } + { + this.renderButtonsTab( + FeatureGroupStateConstants.SELECTED_LICENSE_KEY_GROUPS_BUTTONTAB.AVAILABLE_LICENSE_KEY_GROUPS, + selectedLicenseKeyGroupsButtonTab, + i18n('Available License Key Groups'), + onLicenseKeyGroupsButtonTabSelect + ) + } + + {this.renderLicenseKeyGroupsTabContent(selectedLicenseKeyGroupsButtonTab)} + + ); + } else { + return ( + +

      {i18n('There is no available license key groups')}

      +
      ); + } + } + + renderButtonsTab(buttonTab, selectedButtonTab, title, onClick) { + const isSelected = buttonTab === selectedButtonTab; + return ( + + ); + } + + renderEntitlementPoolsButtonTabContent(selectedFeatureGroupsButtonTab) { + const {entitlementPoolsList = [], data: {entitlementPoolsIds = []}} = this.props; + let dualBoxTitle = { + left: i18n('Available Entitlement Pools'), + right: i18n('Selected Entitlement Pools') + }; + + if (entitlementPoolsList.length) { + const {localEntitlementPoolsListFilter} = this.state; + let selectedEntitlementPools = entitlementPoolsIds.map(entitlementPoolId => entitlementPoolsList.find(entitlementPool => entitlementPool.id === entitlementPoolId)); + + switch (selectedFeatureGroupsButtonTab) { + case FeatureGroupStateConstants.SELECTED_ENTITLEMENT_POOLS_BUTTONTAB.ASSOCIATED_ENTITLEMENT_POOLS: + if (selectedEntitlementPools.length) { + return ( + this.setState({localEntitlementPoolsListFilter})}> + {this.filterAssociatedItems(selectedEntitlementPools, localEntitlementPoolsListFilter) + .map(entitlementPool => this.renderAssociatedListItem(entitlementPool + , FeatureGroupStateConstants.SELECTED_FEATURE_GROUP_TAB.ENTITLEMENT_POOLS))} + + ); + } + else { + return ( +
      +
      {i18n('There are currently no entitlement pools associated with this feature group. Click "Available Entitlement Pools" to associate.')} +
      + ); + } + case FeatureGroupStateConstants.SELECTED_ENTITLEMENT_POOLS_BUTTONTAB.AVAILABLE_ENTITLEMENT_POOLS: + return ( + this.props.onDataChanged( { entitlementPoolsIds: selectedValuesList } )}/> + ); + } + } + } + + renderLicenseKeyGroupsTabContent(selectedFeatureGroupsButtonTab) { + const {licenseKeyGroupsList = [], data: {licenseKeyGroupsIds = []}} = this.props; + let dualBoxFilterTitle = { + left: i18n('Available License Key Groups'), + right: i18n('Selected License Key Groups') + }; + + if (licenseKeyGroupsList.length) { + const {localLicenseKeyGroupsListFilter} = this.state; + let selectedLicenseKeyGroups = licenseKeyGroupsIds.map(licenseKeyGroupId => licenseKeyGroupsList.find(licenseKeyGroup => licenseKeyGroup.id === licenseKeyGroupId)); + + switch (selectedFeatureGroupsButtonTab) { + case FeatureGroupStateConstants.SELECTED_LICENSE_KEY_GROUPS_BUTTONTAB.ASSOCIATED_LICENSE_KEY_GROUPS: + if (selectedLicenseKeyGroups.length) { + return ( + this.setState({localLicenseKeyGroupsListFilter})}> + {this.filterAssociatedItems(selectedLicenseKeyGroups, localLicenseKeyGroupsListFilter) + .map(licenseKeyGroup => this.renderAssociatedListItem(licenseKeyGroup + , FeatureGroupStateConstants.SELECTED_FEATURE_GROUP_TAB.LICENCE_KEY_GROUPS))} + + ); + } else { + return ( +
      + {i18n('There are currently no license key groups associated with this feature group. Click "Available License Key Groups" to associate.')} +
      + ); + } + case FeatureGroupStateConstants.SELECTED_LICENSE_KEY_GROUPS_BUTTONTAB.AVAILABLE_LICENSE_KEY_GROUPS: + return ( + this.props.onDataChanged( { licenseKeyGroupsIds: selectedValuesList } )}/> + ); + } + } + } + + + renderAssociatedListItem(listItem, itemType) { + let {isReadOnlyMode} = this.props; + return ( + this.deleteAssociatedItem(listItem.id, itemType)} + isReadOnlyMode={isReadOnlyMode}> +
      {listItem.name}
      +
      {listItem.description}
      +
      + ); + } + + filterAssociatedItems(list, localList) { + if (localList) { + const filter = new RegExp(escape(localList), 'i'); + return list.filter(({name = '', description = ''}) => name.match(filter) || description.match(filter)); + } + else { + return list; + } + } + + deleteAssociatedItem(id, type) { + const {data: {licenseKeyGroupsIds = [], entitlementPoolsIds = []}} = this.props; + if (type === FeatureGroupStateConstants.SELECTED_FEATURE_GROUP_TAB.LICENCE_KEY_GROUPS) { + this.props.onDataChanged({licenseKeyGroupsIds: licenseKeyGroupsIds.filter(listId => listId !== id)}); + } else { + this.props.onDataChanged({entitlementPoolsIds: entitlementPoolsIds.filter(listId => listId !== id)}); + } + + } +} + + +export default FeatureGroupEditorView; + diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupListEditor.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupListEditor.js new file mode 100644 index 0000000000..9ea5a31490 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupListEditor.js @@ -0,0 +1,56 @@ +/*- + * ============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========================================================= + */ + +import {connect} from 'react-redux'; +import FeatureGroupsActionHelper from './FeatureGroupsActionHelper.js'; +import FeatureGroupListEditorView from './FeatureGroupListEditorView.jsx'; +import VersionControllerUtils from 'nfvo-components/panel/versionController/VersionControllerUtils.js'; + +const mapStateToProps = ({licenseModel: {featureGroup, licenseModelEditor}}) => { + const {featureGroupEditor: {data}, featureGroupsList} = featureGroup; + let {vendorName} = licenseModelEditor.data; + let isReadOnlyMode = VersionControllerUtils.isReadOnly(licenseModelEditor.data); + + return { + vendorName, + featureGroupsModal: { + show: Boolean(data), + editMode: Boolean(data && data.id) + }, + featureGroupsList, + isReadOnlyMode + }; +}; + + +const mapActionsToProps = (dispatch, {licenseModelId}) => { + return { + onDeleteFeatureGroupClick: (featureGroup) => FeatureGroupsActionHelper.openDeleteFeatureGroupConfirm(dispatch, {licenseModelId, featureGroup}), + onCancelFeatureGroupsEditor: () => FeatureGroupsActionHelper.closeFeatureGroupsEditor(dispatch), + + onAddFeatureGroupClick: () => FeatureGroupsActionHelper.openFeatureGroupsEditor(dispatch, {licenseModelId}), + onEditFeatureGroupClick: featureGroup => FeatureGroupsActionHelper.openFeatureGroupsEditor(dispatch, { + featureGroup, + licenseModelId + }) + }; +}; + +export default connect(mapStateToProps, mapActionsToProps)(FeatureGroupListEditorView); diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupListEditorView.jsx b/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupListEditorView.jsx new file mode 100644 index 0000000000..d998f9216f --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupListEditorView.jsx @@ -0,0 +1,136 @@ +import React from 'react'; + +import i18n from 'nfvo-utils/i18n/i18n.js'; +import Modal from 'nfvo-components/modal/Modal.jsx'; +import ListEditorView from 'nfvo-components/listEditor/ListEditorView.jsx'; +import ListEditorItemView from 'nfvo-components/listEditor/ListEditorItemView.jsx'; + +import FeatureGroupEditor from './FeatureGroupEditor.js'; +import FeatureGroupsConfirmationModal from './FeatureGroupsConfirmationModal.jsx'; + +class FeatureGroupListEditorView extends React.Component { + static propTypes = { + vendorName: React.PropTypes.string, + licenseModelId: React.PropTypes.string.isRequired, + featureGroupsModal: React.PropTypes.shape({ + show: React.PropTypes.bool, + editMode: React.PropTypes.bool + }), + isReadOnlyMode: React.PropTypes.bool.isRequired, + onAddFeatureGroupClick: React.PropTypes.func, + onEditFeatureGroupClick: React.PropTypes.func, + onDeleteFeatureGroupClick: React.PropTypes.func, + onCancelFeatureGroupsEditor: React.PropTypes.func, + featureGroupsList: React.PropTypes.array + }; + + static defaultProps = { + featureGroupsList: [], + featureGroupsModal: { + show: false, + editMode: false + } + }; + + state = { + localFilter: '' + }; + + render() { + let {vendorName, licenseModelId, featureGroupsModal, isReadOnlyMode, onAddFeatureGroupClick} = this.props; + const {localFilter} = this.state; + + return ( +
      + this.setState({localFilter: filter})} + onAdd={() => onAddFeatureGroupClick()} + isReadOnlyMode={isReadOnlyMode}> + {this.filterList().map(listItem => this.renderFeatureGroupListItem(listItem, isReadOnlyMode))} + + + + {`${featureGroupsModal.editMode ? i18n('Edit Feature Group') : i18n('Create New Feature Group')}`} + + + this.closeFeatureGroupsEditor()} + licenseModelId={licenseModelId} + isReadOnlyMode={isReadOnlyMode}/> + + + + + +
      + ); + } + + + renderFeatureGroupListItem(listItem, isReadOnlyMode) { + let {name, description, entitlementPoolsIds = [], licenseKeyGroupsIds = []} = listItem; + return ( + this.deleteFeatureGroupItem(listItem)} + onSelect={() => this.editFeatureGroupItem(listItem)} + className='list-editor-item-view' + isReadOnlyMode={isReadOnlyMode}> +
      +
      {i18n('Name')}
      +
      {name}
      +
      + +
      +
      +
      {i18n('Entitlement')}
      +
      {i18n('Pools')}
      +
      {entitlementPoolsIds.length || 0}
      +
      +
      +
      {i18n('License key')}
      +
      {i18n('Groups')}
      +
      {licenseKeyGroupsIds.length || 0}
      +
      +
      + +
      +
      {i18n('Description')}
      +
      {description}
      +
      + +
      + ); + } + + filterList() { + let {featureGroupsList} = this.props; + let {localFilter} = this.state; + if (localFilter.trim()) { + const filter = new RegExp(escape(localFilter), 'i'); + return featureGroupsList.filter(({name = '', description = ''}) => { + return escape(name).match(filter) || escape(description).match(filter); + }); + } + else { + return featureGroupsList; + } + } + + closeFeatureGroupsEditor() { + this.props.onCancelFeatureGroupsEditor(); + } + + editFeatureGroupItem(featureGroup) { + this.props.onEditFeatureGroupClick(featureGroup); + } + + deleteFeatureGroupItem(featureGroup) { + this.props.onDeleteFeatureGroupClick(featureGroup); + } +} + +export default FeatureGroupListEditorView; diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupsActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupsActionHelper.js new file mode 100644 index 0000000000..3776c01263 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupsActionHelper.js @@ -0,0 +1,165 @@ +/*- + * ============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========================================================= + */ + +import RestAPIUtil from 'nfvo-utils/RestAPIUtil.js'; +import Configuration from 'sdc-app/config/Configuration.js'; +import {actionTypes as featureGroupsActionConstants} from './FeatureGroupsConstants.js'; +import LicenseModelActionHelper from 'sdc-app/onboarding/licenseModel/LicenseModelActionHelper.js'; +import EntitlementPoolsActionHelper from 'sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsActionHelper.js'; +import LicenseKeyGroupsActionHelper from 'sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsActionHelper.js'; + +function baseUrl(licenseModelId) { + const restPrefix = Configuration.get('restPrefix'); + return `${restPrefix}/v1.0/vendor-license-models/${licenseModelId}/feature-groups`; +} + +function fetchFeatureGroupsList(licenseModelId, version) { + let versionQuery = version ? `?version=${version}` : ''; + return RestAPIUtil.fetch(`${baseUrl(licenseModelId)}${versionQuery}`); +} + +function deleteFeatureGroup(licenseModelId, featureGroupId) { + return RestAPIUtil.destroy(`${baseUrl(licenseModelId)}/${featureGroupId}`); +} + +function addFeatureGroup(licenseModelId, featureGroup) { + return RestAPIUtil.create(baseUrl(licenseModelId), { + name: featureGroup.name, + description: featureGroup.description, + partNumber: featureGroup.partNumber, + addedLicenseKeyGroupsIds: featureGroup.licenseKeyGroupsIds, + addedEntitlementPoolsIds: featureGroup.entitlementPoolsIds + }); +} + +function updateFeatureGroup(licenseModelId, previousFeatureGroup, featureGroup) { + + const {licenseKeyGroupsIds = []} = featureGroup; + const {licenseKeyGroupsIds: prevLicenseKeyGroupsIds = []} = previousFeatureGroup; + const {entitlementPoolsIds = []} = featureGroup; + const {entitlementPoolsIds: prevEntitlementPoolsIds = []} = previousFeatureGroup; + return RestAPIUtil.save(`${baseUrl(licenseModelId)}/${featureGroup.id}`, { + name: featureGroup.name, + description: featureGroup.description, + partNumber: featureGroup.partNumber, + addedLicenseKeyGroupsIds: licenseKeyGroupsIds.filter(licenseKeyGroupId => prevLicenseKeyGroupsIds.indexOf(licenseKeyGroupId) === -1), + removedLicenseKeyGroupsIds: prevLicenseKeyGroupsIds.filter(prevLicenseKeyGroupId => licenseKeyGroupsIds.indexOf(prevLicenseKeyGroupId) === -1), + addedEntitlementPoolsIds: entitlementPoolsIds.filter(entitlementPoolId => prevEntitlementPoolsIds.indexOf(entitlementPoolId) === -1), + removedEntitlementPoolsIds: prevEntitlementPoolsIds.filter(prevEntitlementPoolId => entitlementPoolsIds.indexOf(prevEntitlementPoolId) === -1) + + }); +} + +export default { + fetchFeatureGroupsList(dispatch, {licenseModelId, version}) { + return fetchFeatureGroupsList(licenseModelId, version).then(response => dispatch({ + type: featureGroupsActionConstants.FEATURE_GROUPS_LIST_LOADED, + response + })); + }, + + deleteFeatureGroup(dispatch, {licenseModelId, featureGroupId}) { + return deleteFeatureGroup(licenseModelId, featureGroupId).then(() => dispatch({ + type: featureGroupsActionConstants.DELETE_FEATURE_GROUPS, + featureGroupId + })); + }, + + saveFeatureGroup(dispatch, {licenseModelId, previousFeatureGroup, featureGroup}) { + if (previousFeatureGroup) { + return updateFeatureGroup(licenseModelId, previousFeatureGroup, featureGroup).then(() => dispatch({ + type: featureGroupsActionConstants.EDIT_FEATURE_GROUPS, + featureGroup + })); + } + else { + return addFeatureGroup(licenseModelId, featureGroup).then(response => dispatch({ + type: featureGroupsActionConstants.ADD_FEATURE_GROUPS, + featureGroup: { + ...featureGroup, + id: response.value + } + })); + } + }, + + selectEntitlementPoolsEditorTab(dispatch, {tab}) { + dispatch({ + type: featureGroupsActionConstants.featureGroupsEditor.SELECT_TAB, + tab + }); + }, + + selectFeatureGroupsEditorEntitlementPoolsButtonTab(dispatch, {buttonTab}) { + dispatch({ + type: featureGroupsActionConstants.featureGroupsEditor.SELECTED_ENTITLEMENT_POOLS_BUTTONTAB, + buttonTab + }); + }, + + selectFeatureGroupsEditorLicenseKeyGroupsButtonTab(dispatch, {buttonTab}) { + dispatch({ + type: featureGroupsActionConstants.featureGroupsEditor.SELECTED_LICENSE_KEY_GROUPS_BUTTONTAB, + buttonTab + }); + }, + + openFeatureGroupsEditor(dispatch, {featureGroup, licenseModelId}) { + EntitlementPoolsActionHelper.fetchEntitlementPoolsList(dispatch, {licenseModelId}); + LicenseKeyGroupsActionHelper.fetchLicenseKeyGroupsList(dispatch, {licenseModelId}); + dispatch({ + type: featureGroupsActionConstants.featureGroupsEditor.OPEN, + featureGroup + }); + }, + + closeFeatureGroupsEditor(dispatch) { + dispatch({ + type: featureGroupsActionConstants.featureGroupsEditor.CLOSE + }); + }, + + featureGroupsEditorDataChanged(dispatch, {deltaData}) { + dispatch({ + type: featureGroupsActionConstants.featureGroupsEditor.DATA_CHANGED, + deltaData + }); + }, + + hideDeleteConfirm(dispatch) { + dispatch({ + type: featureGroupsActionConstants.FEATURE_GROUPS_DELETE_CONFIRM, + featureGroupToDelete: false + }); + }, + + openDeleteFeatureGroupConfirm(dispatch, {featureGroup}) { + dispatch({ + type: featureGroupsActionConstants.FEATURE_GROUPS_DELETE_CONFIRM, + featureGroupToDelete: featureGroup + }); + }, + + switchVersion(dispatch, {licenseModelId, version}) { + LicenseModelActionHelper.fetchLicenseModelById(dispatch, {licenseModelId, version}).then(() => { + this.fetchFeatureGroupsList(dispatch, {licenseModelId, version}); + }); + } +}; diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupsConfirmationModal.jsx b/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupsConfirmationModal.jsx new file mode 100644 index 0000000000..142ec3c4c8 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupsConfirmationModal.jsx @@ -0,0 +1,48 @@ +import React from 'react'; +import {connect} from 'react-redux'; +import ConfirmationModalView from 'nfvo-components/confirmations/ConfirmationModalView.jsx'; +import FeatureGroupsActionHelper from './FeatureGroupsActionHelper.js'; +import i18n from 'nfvo-utils/i18n/i18n.js'; + +function renderMsg(featureGroupToDelete) { + let name = featureGroupToDelete ? featureGroupToDelete.name : ''; + let msg = i18n('Are you sure you want to delete "{name}"?', {name}); + let subMsg = featureGroupToDelete + && featureGroupToDelete.referencingLicenseAgreements + && featureGroupToDelete.referencingLicenseAgreements.length > 0 ? + i18n('This feature group is associated with one ore more license agreements') : + ''; + return ( +
      +

      {msg}

      +

      {subMsg}

      +
      + ); +}; + +const mapStateToProps = ({licenseModel: {featureGroup}}, {licenseModelId}) => { + let {featureGroupToDelete} = featureGroup; + const show = featureGroupToDelete !== false; + return { + show, + title: 'Warning!', + type: 'warning', + msg: renderMsg(featureGroupToDelete), + confirmationDetails: {featureGroupToDelete, licenseModelId} + }; +}; + +const mapActionsToProps = (dispatch) => { + return { + onConfirmed: ({featureGroupToDelete, licenseModelId}) => { + FeatureGroupsActionHelper.deleteFeatureGroup(dispatch, {featureGroupId: featureGroupToDelete.id, licenseModelId}); + FeatureGroupsActionHelper.hideDeleteConfirm(dispatch); + }, + onDeclined: () => { + FeatureGroupsActionHelper.hideDeleteConfirm(dispatch); + } + }; +}; + +export default connect(mapStateToProps, mapActionsToProps)(ConfirmationModalView); + diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupsConstants.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupsConstants.js new file mode 100644 index 0000000000..e02c54595d --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupsConstants.js @@ -0,0 +1,60 @@ +/*- + * ============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========================================================= + */ + +import keyMirror from 'nfvo-utils/KeyMirror.js'; + +export const actionTypes = keyMirror({ + FEATURE_GROUPS_LIST_LOADED: null, + ADD_FEATURE_GROUPS: null, + EDIT_FEATURE_GROUPS: null, + DELETE_FEATURE_GROUPS: null, + FEATURE_GROUPS_DELETE_CONFIRM: null, + + + ENTITLEMENT_POOLS_LIST_LOADED: null, + + featureGroupsEditor: { + OPEN: null, + CLOSE: null, + DATA_CHANGED: null, + SELECT_TAB: null, + SELECTED_ENTITLEMENT_POOLS_BUTTONTAB: null, + SELECTED_LICENSE_KEY_GROUPS_BUTTONTAB: null + } +}); + +export const state = keyMirror({ + SELECTED_FEATURE_GROUP_TAB: { + GENERAL: 1, + ENTITLEMENT_POOLS: 2, + LICENCE_KEY_GROUPS: 3 + }, + SELECTED_ENTITLEMENT_POOLS_BUTTONTAB: { + ASSOCIATED_ENTITLEMENT_POOLS: 1, + AVAILABLE_ENTITLEMENT_POOLS: 2 + }, + SELECTED_LICENSE_KEY_GROUPS_BUTTONTAB: { + ASSOCIATED_LICENSE_KEY_GROUPS: 1, + AVAILABLE_LICENSE_KEY_GROUPS: 2 + }, +}); + + + diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupsEditorReducer.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupsEditorReducer.js new file mode 100644 index 0000000000..576a5358e6 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupsEditorReducer.js @@ -0,0 +1,62 @@ +/*- + * ============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========================================================= + */ + +import {actionTypes} from './FeatureGroupsConstants.js'; + + + +export default (state = {}, action) => { + switch (action.type) { + case actionTypes.featureGroupsEditor.OPEN: + return { + ...state, + data: action.featureGroup || {} + }; + case actionTypes.featureGroupsEditor.DATA_CHANGED: + return { + ...state, + data: { + ...state.data, + ...action.deltaData + } + }; + case actionTypes.featureGroupsEditor.CLOSE: + return {}; + case actionTypes.featureGroupsEditor.SELECT_TAB: + return { + ...state, + selectedTab: action.tab + }; + + case actionTypes.featureGroupsEditor.SELECTED_ENTITLEMENT_POOLS_BUTTONTAB: + return { + ...state, + selectedEntitlementPoolsButtonTab: action.buttonTab + }; + case actionTypes.featureGroupsEditor.SELECTED_LICENSE_KEY_GROUPS_BUTTONTAB: + return { + ...state, + selectedLicenseKeyGroupsButtonTab: action.buttonTab + }; + default: + return state; + } + +}; diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupsListReducer.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupsListReducer.js new file mode 100644 index 0000000000..5cf3248919 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupsListReducer.js @@ -0,0 +1,36 @@ +/*- + * ============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========================================================= + */ + +import {actionTypes} from './FeatureGroupsConstants.js'; +export default (state = [], action) => { + switch (action.type) { + case actionTypes.FEATURE_GROUPS_LIST_LOADED: + return [...action.response.results]; + case actionTypes.ADD_FEATURE_GROUPS: + return [...state, action.featureGroup]; + case actionTypes.EDIT_FEATURE_GROUPS: + const indexForEdit = state.findIndex(featureGroup => featureGroup.id === action.featureGroup.id); + return [...state.slice(0, indexForEdit), action.featureGroup, ...state.slice(indexForEdit + 1)]; + case actionTypes.DELETE_FEATURE_GROUPS: + return state.filter(featureGroup => featureGroup.id !== action.featureGroupId); + default: + return state; + } +}; diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementActionHelper.js new file mode 100644 index 0000000000..9616b60b76 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementActionHelper.js @@ -0,0 +1,160 @@ +/*- + * ============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========================================================= + */ + +import RestAPIUtil from 'nfvo-utils/RestAPIUtil.js'; +import Configuration from 'sdc-app/config/Configuration.js'; +import {actionTypes as licenseAgreementActionTypes} from './LicenseAgreementConstants.js'; +import FeatureGroupsActionHelper from 'sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupsActionHelper.js'; +import LicenseModelActionHelper from 'sdc-app/onboarding/licenseModel/LicenseModelActionHelper.js'; + +function baseUrl(licenseModelId) { + const restPrefix = Configuration.get('restPrefix'); + return `${restPrefix}/v1.0/vendor-license-models/${licenseModelId}/license-agreements`; +} + +function fetchLicenseAgreementList(licenseModelId, version) { + let versionQuery = version ? `?version=${version}` : ''; + return RestAPIUtil.fetch(`${baseUrl(licenseModelId)}${versionQuery}`); +} + +function postLicenseAgreement(licenseModelId, licenseAgreement) { + return RestAPIUtil.create(baseUrl(licenseModelId), { + name: licenseAgreement.name, + description: licenseAgreement.description, + licenseTerm: licenseAgreement.licenseTerm, + requirementsAndConstrains: licenseAgreement.requirementsAndConstrains, + addedFeatureGroupsIds: licenseAgreement.featureGroupsIds + }); +} + +function putLicenseAgreement(licenseModelId, previousLicenseAgreement, licenseAgreement) { + const {featureGroupsIds = []} = licenseAgreement; + const {featureGroupsIds: prevFeatureGroupsIds = []} = previousLicenseAgreement; + return RestAPIUtil.save(`${baseUrl(licenseModelId)}/${licenseAgreement.id}`, { + name: licenseAgreement.name, + description: licenseAgreement.description, + licenseTerm: licenseAgreement.licenseTerm, + requirementsAndConstrains: licenseAgreement.requirementsAndConstrains, + addedFeatureGroupsIds: featureGroupsIds.filter(featureGroupId => prevFeatureGroupsIds.indexOf(featureGroupId) === -1), + removedFeatureGroupsIds: prevFeatureGroupsIds.filter(prevFeatureGroupsId => featureGroupsIds.indexOf(prevFeatureGroupsId) === -1) + }); +} + +function deleteLicenseAgreement(licenseModelId, licenseAgreementId) { + return RestAPIUtil.destroy(`${baseUrl(licenseModelId)}/${licenseAgreementId}`); +} + +export default { + + fetchLicenseAgreementList(dispatch, {licenseModelId, version}) { + return fetchLicenseAgreementList(licenseModelId, version).then(response => dispatch({ + type: licenseAgreementActionTypes.LICENSE_AGREEMENT_LIST_LOADED, + response + })); + }, + + openLicenseAgreementEditor(dispatch, {licenseModelId, licenseAgreement}) { + FeatureGroupsActionHelper.fetchFeatureGroupsList(dispatch, {licenseModelId}); + dispatch({ + type: licenseAgreementActionTypes.licenseAgreementEditor.OPEN, + licenseAgreement + }); + }, + + licenseAgreementEditorDataChanged(dispatch, {deltaData}) { + dispatch({ + type: licenseAgreementActionTypes.licenseAgreementEditor.DATA_CHANGED, + deltaData + }); + }, + + closeLicenseAgreementEditor(dispatch) { + dispatch({ + type: licenseAgreementActionTypes.licenseAgreementEditor.CLOSE + }); + }, + + + saveLicenseAgreement(dispatch, {licenseModelId, previousLicenseAgreement, licenseAgreement}) { + if (previousLicenseAgreement) { + return putLicenseAgreement(licenseModelId, previousLicenseAgreement, licenseAgreement).then(() => { + dispatch({ + type: licenseAgreementActionTypes.EDIT_LICENSE_AGREEMENT, + licenseAgreement + }); + }); + } + else { + return postLicenseAgreement(licenseModelId, licenseAgreement).then(response => { + dispatch({ + type: licenseAgreementActionTypes.ADD_LICENSE_AGREEMENT, + licenseAgreement: { + ...licenseAgreement, + id: response.value + } + }); + }); + } + }, + + deleteLicenseAgreement(dispatch, {licenseModelId, licenseAgreementId}) { + return deleteLicenseAgreement(licenseModelId, licenseAgreementId).then(() => { + dispatch({ + type: licenseAgreementActionTypes.DELETE_LICENSE_AGREEMENT, + licenseAgreementId + }); + }); + }, + + selectLicenseAgreementEditorTab(dispatch, {tab}) { + dispatch({ + type: licenseAgreementActionTypes.licenseAgreementEditor.SELECT_TAB, + tab + }); + }, + + selectLicenseAgreementEditorFeatureGroupsButtonTab(dispatch, {buttonTab}) { + dispatch({ + type: licenseAgreementActionTypes.licenseAgreementEditor.SELECT_FEATURE_GROUPS_BUTTONTAB, + buttonTab + }); + }, + + hideDeleteConfirm(dispatch) { + dispatch({ + type: licenseAgreementActionTypes.LICENSE_AGREEMENT_DELETE_CONFIRM, + licenseAgreementToDelete: false + }); + }, + + openDeleteLicenseAgreementConfirm(dispatch, {licenseAgreement} ) { + dispatch({ + type: licenseAgreementActionTypes.LICENSE_AGREEMENT_DELETE_CONFIRM, + licenseAgreementToDelete: licenseAgreement + }); + }, + + switchVersion(dispatch, {licenseModelId, version}) { + LicenseModelActionHelper.fetchLicenseModelById(dispatch, {licenseModelId, version}).then(() => { + this.fetchLicenseAgreementList(dispatch, {licenseModelId, version}); + }); + } +}; + diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementConfirmationModal.jsx b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementConfirmationModal.jsx new file mode 100644 index 0000000000..42f2407696 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementConfirmationModal.jsx @@ -0,0 +1,43 @@ +import React from 'react'; +import {connect} from 'react-redux'; +import ConfirmationModalView from 'nfvo-components/confirmations/ConfirmationModalView.jsx'; +import LicenseAgreementActionHelper from './LicenseAgreementActionHelper.js'; +import i18n from 'nfvo-utils/i18n/i18n.js'; + +function renderMsg(licenseAgreementToDelete) { + let name = licenseAgreementToDelete ? licenseAgreementToDelete.name : ''; + let msg = i18n('Are you sure you want to delete "{name}"?', {name}); + return( +
      +

      {msg}

      +
      + ); +}; + +const mapStateToProps = ({licenseModel: {licenseAgreement}}, {licenseModelId}) => { + let {licenseAgreementToDelete} = licenseAgreement; + const show = licenseAgreementToDelete !== false; + return { + show, + title: 'Warning!', + type: 'warning', + msg: renderMsg(licenseAgreementToDelete), + confirmationDetails: {licenseAgreementToDelete, licenseModelId} + }; +}; + +const mapActionsToProps = (dispatch) => { + return { + onConfirmed: ({licenseAgreementToDelete, licenseModelId}) => { + + LicenseAgreementActionHelper.deleteLicenseAgreement(dispatch, {licenseModelId, licenseAgreementId: licenseAgreementToDelete.id}); + LicenseAgreementActionHelper.hideDeleteConfirm(dispatch); + }, + onDeclined: () => { + LicenseAgreementActionHelper.hideDeleteConfirm(dispatch); + } + }; +}; + +export default connect(mapStateToProps, mapActionsToProps)(ConfirmationModalView); + diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementConstants.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementConstants.js new file mode 100644 index 0000000000..af5c454e22 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementConstants.js @@ -0,0 +1,66 @@ +/*- + * ============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========================================================= + */ + +import keyMirror from 'nfvo-utils/KeyMirror.js'; +import i18n from 'nfvo-utils/i18n/i18n.js'; + +export const actionTypes = keyMirror({ + LICENSE_AGREEMENT_LIST_LOADED: null, + ADD_LICENSE_AGREEMENT: null, + EDIT_LICENSE_AGREEMENT: null, + DELETE_LICENSE_AGREEMENT: null, + LICENSE_AGREEMENT_DELETE_CONFIRM: null, + + licenseAgreementEditor: { + OPEN: null, + CLOSE: null, + DATA_CHANGED: null, + SELECT_TAB: null, + SELECT_FEATURE_GROUPS_BUTTONTAB: null, + } + +}); + +export const enums = keyMirror({ + SELECTED_LICENSE_AGREEMENT_TAB: { + GENERAL: 1, + FEATURE_GROUPS: 2 + }, + + SELECTED_FEATURE_GROUPS_BUTTONTAB: { + ASSOCIATED_FEATURE_GROUPS: 1, + AVAILABLE_FEATURE_GROUPS: 2 + } +}); + +export const defaultState = { + LICENSE_AGREEMENT_EDITOR_DATA: { + licenseTerm: {choice: '', other: ''} + } +}; + +export const optionsInputValues = { + LICENSE_MODEL_TYPE: [ + {enum: '', title: i18n('please select…')}, + {enum: 'Fixed_Term', title: 'Fixed Term'}, + {enum: 'Perpetual', title: 'Perpetual'}, + {enum: 'Unlimited', title: 'Unlimited'} + ] +}; diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementEditor.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementEditor.js new file mode 100644 index 0000000000..6a3e4dbc73 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementEditor.js @@ -0,0 +1,60 @@ +/*- + * ============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========================================================= + */ + +import {connect} from 'react-redux'; +import LicenseAgreementActionHelper from './LicenseAgreementActionHelper.js'; +import LicenseAgreementEditorView from './LicenseAgreementEditorView.jsx'; + +export const mapStateToProps = ({licenseModel: {licenseAgreement, featureGroup}}) => { + + + let {data, selectedTab, selectedFeatureGroupsButtonTab} = licenseAgreement.licenseAgreementEditor; + + let previousData; + const licenseAgreementId = data ? data.id : null; + if(licenseAgreementId) { + previousData = licenseAgreement.licenseAgreementList.find(licenseAgreement => licenseAgreement.id === licenseAgreementId); + } + + const {featureGroupsList = []} = featureGroup; + + return { + data, + previousData, + selectedTab, + selectedFeatureGroupsButtonTab, + featureGroupsList + }; +}; + +export const mapActionsToProps = (dispatch, {licenseModelId}) => { + return { + onDataChanged: deltaData => LicenseAgreementActionHelper.licenseAgreementEditorDataChanged(dispatch, {deltaData}), + onTabSelect: tab => LicenseAgreementActionHelper.selectLicenseAgreementEditorTab(dispatch, {tab}), + onFeatureGroupsButtonTabSelect: buttonTab => LicenseAgreementActionHelper.selectLicenseAgreementEditorFeatureGroupsButtonTab(dispatch, {buttonTab}), + onCancel: () => LicenseAgreementActionHelper.closeLicenseAgreementEditor(dispatch), + onSubmit: ({previousLicenseAgreement, licenseAgreement}) => { + LicenseAgreementActionHelper.closeLicenseAgreementEditor(dispatch); + LicenseAgreementActionHelper.saveLicenseAgreement(dispatch, {licenseModelId, previousLicenseAgreement, licenseAgreement}); + } + }; +}; + +export default connect(mapStateToProps, mapActionsToProps)(LicenseAgreementEditorView); diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementEditorReducer.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementEditorReducer.js new file mode 100644 index 0000000000..74e2f6e8c1 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementEditorReducer.js @@ -0,0 +1,54 @@ +/*- + * ============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========================================================= + */ + +import {actionTypes, defaultState} from './LicenseAgreementConstants.js'; + +export default (state = {}, action) => { + switch (action.type) { + case actionTypes.licenseAgreementEditor.OPEN: + return { + ...state, + data: action.licenseAgreement ? { ...action.licenseAgreement } : defaultState.LICENSE_AGREEMENT_EDITOR_DATA + }; + case actionTypes.licenseAgreementEditor.DATA_CHANGED: + return { + ...state, + data: { + ...state.data, + ...action.deltaData + } + }; + case actionTypes.licenseAgreementEditor.CLOSE: + return {}; + case actionTypes.licenseAgreementEditor.SELECT_TAB: + return { + ...state, + selectedTab: action.tab + }; + case actionTypes.licenseAgreementEditor.SELECT_FEATURE_GROUPS_BUTTONTAB: + return { + ...state, + selectedFeatureGroupsButtonTab: action.buttonTab + }; + default: + return state; + } + +}; diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementEditorView.jsx b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementEditorView.jsx new file mode 100644 index 0000000000..b21f943fed --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementEditorView.jsx @@ -0,0 +1,247 @@ +import React from 'react'; +import ButtonGroup from 'react-bootstrap/lib/ButtonGroup.js'; +import Button from 'react-bootstrap/lib/Button.js'; +import ValidationForm from 'nfvo-components/input/validation/ValidationForm.jsx'; +import ValidationTabs from 'nfvo-components/input/validation/ValidationTabs.jsx'; +import ValidationTab from 'nfvo-components/input/validation/ValidationTab.jsx'; +import ValidationInput from 'nfvo-components/input/validation/ValidationInput.jsx'; +import DualListboxView from 'nfvo-components/input/dualListbox/DualListboxView.jsx'; +import ListEditorView from 'nfvo-components/listEditor/ListEditorView.jsx'; +import ListEditorViewItem from 'nfvo-components/listEditor/ListEditorItemView.jsx'; +import i18n from 'nfvo-utils/i18n/i18n.js'; + +import {enums as LicenseAgreementEnums, optionsInputValues as LicenseAgreementOptionsInputValues} from './LicenseAgreementConstants.js'; + + +const LicenseAgreementPropType = React.PropTypes.shape({ + id: React.PropTypes.string, + name: React.PropTypes.string, + description: React.PropTypes.string, + requirementsAndConstrains: React.PropTypes.string, + licenseTerm: React.PropTypes.object, + featureGroupsIds: React.PropTypes.arrayOf(React.PropTypes.string) +}); + +class LicenseAgreementEditorView extends React.Component { + + static propTypes = { + data: LicenseAgreementPropType, + previousData: LicenseAgreementPropType, + isReadOnlyMode: React.PropTypes.bool, + onDataChanged: React.PropTypes.func.isRequired, + onSubmit: React.PropTypes.func.isRequired, + onCancel: React.PropTypes.func.isRequired, + + selectedTab: React.PropTypes.number, + onTabSelect: React.PropTypes.func, + + selectedFeatureGroupsButtonTab: React.PropTypes.number, + onFeatureGroupsButtonTabSelect: React.PropTypes.func, + featureGroupsList: DualListboxView.propTypes.availableList + }; + + static defaultProps = { + selectedTab: LicenseAgreementEnums.SELECTED_LICENSE_AGREEMENT_TAB.GENERAL, + selectedFeatureGroupsButtonTab: LicenseAgreementEnums.SELECTED_FEATURE_GROUPS_BUTTONTAB.AVAILABLE_FEATURE_GROUPS, + data: {} + }; + + state = { + localFeatureGroupsListFilter: '' + }; + + render() { + let {selectedTab, onTabSelect, isReadOnlyMode} = this.props; + return ( + this.submit() } + onReset={ () => this.props.onCancel() } + labledButtons={true} + isReadOnlyMode={isReadOnlyMode} + className='license-agreement-form'> + + {this.renderGeneralTab()} + {this.renderFeatureGroupsTab()} + + + ); + } + + submit() { + const {data: licenseAgreement, previousData: previousLicenseAgreement} = this.props; + this.props.onSubmit({licenseAgreement, previousLicenseAgreement}); + } + + renderGeneralTab() { + let {data = {}, onDataChanged} = this.props; + let {name, description, requirementsAndConstrains, licenseTerm} = data; + return ( + +
      +
      + onDataChanged({name})} + label={i18n('Name')} + value={name} + name='license-agreement-name' + validations={{maxLength: 25, required: true}} + type='text'/> + onDataChanged({requirementsAndConstrains})} + label={i18n('Requirements and Constraints')} + value={requirementsAndConstrains} + name='license-agreement-requirements-and-constraints' + validations={{maxLength: 1000}} + type='textarea'/> +
      + onDataChanged({description})} + label={i18n('Description')} + value={description} + name='license-agreement-description' + validations={{maxLength: 1000, required: true}} + type='textarea'/> +
      +
      + onDataChanged({licenseTerm:{choice: licenseTerm, other: ''}})} + selectedEnum={licenseTerm && licenseTerm.choice} + validations={{required: true}} + type='select' + label={i18n('License Term')} + values={LicenseAgreementOptionsInputValues.LICENSE_MODEL_TYPE}/> +
      +
      + ); + } + + renderFeatureGroupsTab() { + let {onFeatureGroupsButtonTabSelect, selectedFeatureGroupsButtonTab, featureGroupsList} = this.props; + if (featureGroupsList.length > 0) { + return ( + + + { + this.renderFeatureGroupsButtonTab( + LicenseAgreementEnums.SELECTED_FEATURE_GROUPS_BUTTONTAB.ASSOCIATED_FEATURE_GROUPS, + selectedFeatureGroupsButtonTab, + i18n('Associated Feature Groups'), + onFeatureGroupsButtonTabSelect + ) + } + { + this.renderFeatureGroupsButtonTab( + LicenseAgreementEnums.SELECTED_FEATURE_GROUPS_BUTTONTAB.AVAILABLE_FEATURE_GROUPS, + selectedFeatureGroupsButtonTab, + i18n('Available Feature Groups'), + onFeatureGroupsButtonTabSelect + ) + } + + {this.renderFeatureGroupsButtonTabContent(selectedFeatureGroupsButtonTab)} + + ); + } else { + return ( + +

      {i18n('There is no available feature groups')}

      +
      + ); + } + } + + renderFeatureGroupsButtonTabContent(selectedFeatureGroupsButtonTab) { + const {featureGroupsList = [], data: {featureGroupsIds = []}} = this.props; + const {localFeatureGroupsListFilter} = this.state; + let selectedFeatureGroups = featureGroupsIds.map(featureGroupId => featureGroupsList.find(featureGroup => featureGroup.id === featureGroupId)); + + const dualBoxFilterTitle = { + left: i18n('Available Feature Groups'), + right: i18n('Selected Feature Groups') + }; + + switch (selectedFeatureGroupsButtonTab) { + case LicenseAgreementEnums.SELECTED_FEATURE_GROUPS_BUTTONTAB.ASSOCIATED_FEATURE_GROUPS: + if (!selectedFeatureGroups.length) { + return ( +
      + {i18n('There are currently no feature groups associated with this license agreement. Click "Available Feature Groups" to associate.')} +
      + ); + } + if (featureGroupsList.length) { + return ( + this.setState({localFeatureGroupsListFilter})}> + {this.filterAssociatedFeatureGroupsList(selectedFeatureGroups).map(featureGroup => this.renderAssociatedFeatureGroupListItem(featureGroup))} + + ); + } + return; + case LicenseAgreementEnums.SELECTED_FEATURE_GROUPS_BUTTONTAB.AVAILABLE_FEATURE_GROUPS: + return ( + this.props.onDataChanged( { featureGroupsIds: selectedValuesList } )}/> + ); + } + } + + renderFeatureGroupsButtonTab(buttonTab, selectedButtonTab, title, onClick) { + const isSelected = buttonTab === selectedButtonTab; + return ( + + ); + } + + renderAssociatedFeatureGroupListItem({id, name, entitlementPoolsIds = [], licenseKeyGroupsIds = []}) { + const {onDataChanged, data: {featureGroupsIds}, isReadOnlyMode} = this.props; + return ( + onDataChanged({featureGroupsIds: featureGroupsIds.filter(featureGroupId => featureGroupId !== id)})} + isReadOnlyMode={isReadOnlyMode}> +
      {name}
      +
      { + i18n( + 'Entitlement Pools({entitlementPoolsCounter}), License Key Groups({licenseKeyGroupsCount})', + { + entitlementPoolsCounter: entitlementPoolsIds.length, + licenseKeyGroupsCount: licenseKeyGroupsIds.length + } + ) + }
      +
      + ); + } + + filterAssociatedFeatureGroupsList(featureGroupsList) { + let {localFeatureGroupsListFilter} = this.state; + if (localFeatureGroupsListFilter) { + const filter = new RegExp(escape(localFeatureGroupsListFilter), 'i'); + return featureGroupsList.filter(({name}) => name.match(filter)); + } + else { + return featureGroupsList; + } + } +} + +export default LicenseAgreementEditorView; diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementListEditor.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementListEditor.js new file mode 100644 index 0000000000..ca18bfab79 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementListEditor.js @@ -0,0 +1,59 @@ +/*- + * ============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========================================================= + */ + +import {connect} from 'react-redux'; +import LicenseModelActionHelper from 'sdc-app/onboarding/licenseModel/LicenseModelActionHelper.js'; +import LicenseAgreementActionHelper from './LicenseAgreementActionHelper.js'; +import LicenseAgreementListEditorView from './LicenseAgreementListEditorView.jsx'; +import VersionControllerUtils from 'nfvo-components/panel/versionController/VersionControllerUtils.js'; +import OnboardingActionHelper from 'sdc-app/onboarding/OnboardingActionHelper.js'; + +const mapStateToProps = ({licenseModel: {licenseAgreement, licenseModelEditor}}) => { + let {licenseAgreementList} = licenseAgreement; + let {data} = licenseAgreement.licenseAgreementEditor; + let {vendorName} = licenseModelEditor.data; + + let isReadOnlyMode = VersionControllerUtils.isReadOnly(licenseModelEditor.data); + + return { + vendorName, + licenseAgreementList, + isReadOnlyMode, + isDisplayModal: Boolean(data), + isModalInEditMode: Boolean(data && data.id) + }; +}; + +const mapActionsToProps = (dispatch, {licenseModelId}) => { + return { + onAddLicenseAgreementClick: () => LicenseAgreementActionHelper.openLicenseAgreementEditor(dispatch, {licenseModelId}), + onEditLicenseAgreementClick: licenseAgreement => LicenseAgreementActionHelper.openLicenseAgreementEditor(dispatch, {licenseModelId, licenseAgreement}), + onDeleteLicenseAgreement: licenseAgreement => LicenseAgreementActionHelper.openDeleteLicenseAgreementConfirm(dispatch, {licenseAgreement}), + onCallVCAction: action => { + LicenseModelActionHelper.performVCAction(dispatch, {licenseModelId, action}).then(() => { + LicenseAgreementActionHelper.fetchLicenseAgreementList(dispatch, {licenseModelId}); + }); + }, + switchLicenseModelVersion: version => LicenseAgreementActionHelper.switchVersion(dispatch, {licenseModelId, version}), + onClose: () => OnboardingActionHelper.navigateToOnboardingCatalog(dispatch) + }; +}; + +export default connect(mapStateToProps, mapActionsToProps)(LicenseAgreementListEditorView); diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementListEditorView.jsx b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementListEditorView.jsx new file mode 100644 index 0000000000..4d7e704ba3 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementListEditorView.jsx @@ -0,0 +1,126 @@ +import React from 'react'; + +import i18n from 'nfvo-utils/i18n/i18n.js'; +import Modal from 'nfvo-components/modal/Modal.jsx'; + +import ListEditorView from 'nfvo-components/listEditor/ListEditorView.jsx'; +import ListEditorItemView from 'nfvo-components/listEditor/ListEditorItemView.jsx'; +import LicenseAgreementEditor from './LicenseAgreementEditor.js'; +import InputOptions, {other as optionInputOther} from 'nfvo-components/input/inputOptions/InputOptions.jsx'; +import {optionsInputValues} from './LicenseAgreementConstants'; +import LicenseAgreementConfirmationModal from './LicenseAgreementConfirmationModal.jsx'; + + +class LicenseAgreementListEditorView extends React.Component { + static propTypes = { + vendorName: React.PropTypes.string, + licenseModelId: React.PropTypes.string.isRequired, + licenseAgreementList: React.PropTypes.array, + isReadOnlyMode: React.PropTypes.bool.isRequired, + isDisplayModal: React.PropTypes.bool, + isModalInEditMode: React.PropTypes.bool, + onAddLicenseAgreementClick: React.PropTypes.func, + onEditLicenseAgreementClick: React.PropTypes.func, + onDeleteLicenseAgreement: React.PropTypes.func, + onCallVCAction: React.PropTypes.func + }; + + static defaultProps = { + licenseAgreementList: [] + }; + + state = { + localFilter: '' + }; + + render() { + const {licenseModelId, vendorName, isReadOnlyMode, isDisplayModal, isModalInEditMode} = this.props; + const {onAddLicenseAgreementClick} = this.props; + const {localFilter} = this.state; + + return ( +
      + this.setState({localFilter: filter})} + isReadOnlyMode={isReadOnlyMode}> + {this.filterList().map(licenseAgreement => this.renderLicenseAgreementListItem(licenseAgreement, isReadOnlyMode))} + + + + {`${isModalInEditMode ? i18n('Edit License Agreement') : i18n('Create New License Agreement')}`} + + + { + isDisplayModal && ( + + ) + } + + + + +
      + ); + } + + filterList() { + let {licenseAgreementList} = this.props; + let {localFilter} = this.state; + if (localFilter.trim()) { + const filter = new RegExp(escape(localFilter), 'i'); + return licenseAgreementList.filter(({name = '', description = '', licenseTerm = ''}) => { + return escape(name).match(filter) || escape(description).match(filter) || escape(this.extractValue(licenseTerm)).match(filter); + }); + } + else { + return licenseAgreementList; + } + } + + renderLicenseAgreementListItem(licenseAgreement, isReadOnlyMode) { + let {id, name, description, licenseTerm, featureGroupsIds = []} = licenseAgreement; + let {onEditLicenseAgreementClick, onDeleteLicenseAgreement} = this.props; + return ( + onEditLicenseAgreementClick(licenseAgreement)} + onDelete={() => onDeleteLicenseAgreement(licenseAgreement)} + className='list-editor-item-view' + isReadOnlyMode={isReadOnlyMode}> +
      +
      {i18n('Name')}
      +
      {name}
      +
      +
      +
      +
      {i18n('Type')}
      +
      {this.extractValue(licenseTerm)}
      +
      +
      +
      {i18n('Feature')}
      +
      {i18n('Groups')}
      +
      {featureGroupsIds.length}
      +
      +
      +
      +
      {i18n('Description')}
      +
      {description}
      +
      +
      + ); + } + + extractValue(item) { + if (item === undefined) { + return ''; + } //TODO fix it later + + return item ? item.choice === optionInputOther.OTHER ? item.other : InputOptions.getTitleByName(optionsInputValues, item.choice) : ''; + } +} + +export default LicenseAgreementListEditorView; diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementListReducer.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementListReducer.js new file mode 100644 index 0000000000..5b5fa00df1 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementListReducer.js @@ -0,0 +1,37 @@ +/*- + * ============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========================================================= + */ + +import {actionTypes as licenseAgreementActionTypes} from './LicenseAgreementConstants'; + +export default (state = [], action) => { + switch (action.type) { + case licenseAgreementActionTypes.LICENSE_AGREEMENT_LIST_LOADED: + return [...action.response.results]; + case licenseAgreementActionTypes.ADD_LICENSE_AGREEMENT: + return [...state, action.licenseAgreement]; + case licenseAgreementActionTypes.EDIT_LICENSE_AGREEMENT: + const indexForEdit = state.findIndex(licenseAgreement => licenseAgreement.id === action.licenseAgreement.id); + return [...state.slice(0, indexForEdit), action.licenseAgreement, ...state.slice(indexForEdit + 1)]; + case licenseAgreementActionTypes.DELETE_LICENSE_AGREEMENT: + return state.filter(licenseAgreement => licenseAgreement.id !== action.licenseAgreementId); + default: + return state; + } +}; diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsActionHelper.js new file mode 100644 index 0000000000..50ac2c85a3 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsActionHelper.js @@ -0,0 +1,139 @@ +/*- + * ============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========================================================= + */ + +import RestAPIUtil from 'nfvo-utils/RestAPIUtil.js'; +import Configuration from 'sdc-app/config/Configuration.js'; +import {actionTypes as licenseKeyGroupsConstants} from './LicenseKeyGroupsConstants.js'; +import LicenseModelActionHelper from 'sdc-app/onboarding/licenseModel/LicenseModelActionHelper.js'; + +function baseUrl(licenseModelId) { + const restPrefix = Configuration.get('restPrefix'); + return `${restPrefix}/v1.0/vendor-license-models/${licenseModelId}/license-key-groups`; +} + +function fetchLicenseKeyGroupsList(licenseModelId, version) { + let versionQuery = version ? `?version=${version}` : ''; + return RestAPIUtil.fetch(`${baseUrl(licenseModelId)}${versionQuery}`); +} + +function deleteLicenseKeyGroup(licenseModelId, licenseKeyGroupId) { + return RestAPIUtil.destroy(`${baseUrl(licenseModelId)}/${licenseKeyGroupId}`); +} + +function postLicenseKeyGroup(licenseModelId, licenseKeyGroup) { + return RestAPIUtil.create(baseUrl(licenseModelId), { + name: licenseKeyGroup.name, + description: licenseKeyGroup.description, + operationalScope: licenseKeyGroup.operationalScope, + type: licenseKeyGroup.type + }); +} + +function putLicenseKeyGroup(licenseModelId, licenseKeyGroup) { + return RestAPIUtil.save(`${baseUrl(licenseModelId)}/${licenseKeyGroup.id}`, { + name: licenseKeyGroup.name, + description: licenseKeyGroup.description, + operationalScope: licenseKeyGroup.operationalScope, + type: licenseKeyGroup.type + }); +} + + +export default { + fetchLicenseKeyGroupsList(dispatch, {licenseModelId, version}) { + return fetchLicenseKeyGroupsList(licenseModelId, version).then(response => dispatch({ + type: licenseKeyGroupsConstants.LICENSE_KEY_GROUPS_LIST_LOADED, + response + })); + }, + + openLicenseKeyGroupsEditor(dispatch, {licenseKeyGroup} = {}) { + dispatch({ + type: licenseKeyGroupsConstants.licenseKeyGroupsEditor.OPEN, + licenseKeyGroup + }); + }, + + closeLicenseKeyGroupEditor(dispatch){ + dispatch({ + type: licenseKeyGroupsConstants.licenseKeyGroupsEditor.CLOSE + }); + }, + + saveLicenseKeyGroup(dispatch, {licenseModelId, previousLicenseKeyGroup, licenseKeyGroup}) { + if (previousLicenseKeyGroup) { + return putLicenseKeyGroup(licenseModelId, licenseKeyGroup).then(() => { + dispatch({ + type: licenseKeyGroupsConstants.EDIT_LICENSE_KEY_GROUP, + licenseKeyGroup + }); + }); + } + else { + return postLicenseKeyGroup(licenseModelId, licenseKeyGroup).then(response => { + dispatch({ + type: licenseKeyGroupsConstants.ADD_LICENSE_KEY_GROUP, + licenseKeyGroup: { + ...licenseKeyGroup, + id: response.value + } + }); + }); + } + + + }, + + deleteLicenseKeyGroup(dispatch, {licenseModelId, licenseKeyGroupId}){ + return deleteLicenseKeyGroup(licenseModelId, licenseKeyGroupId).then(()=> { + dispatch({ + type: licenseKeyGroupsConstants.DELETE_LICENSE_KEY_GROUP, + licenseKeyGroupId + }); + }); + }, + + licenseKeyGroupEditorDataChanged(dispatch, {deltaData}) { + dispatch({ + type: licenseKeyGroupsConstants.licenseKeyGroupsEditor.DATA_CHANGED, + deltaData + }); + }, + + hideDeleteConfirm(dispatch) { + dispatch({ + type: licenseKeyGroupsConstants.LICENSE_KEY_GROUPS_DELETE_CONFIRM, + licenseKeyGroupToDelete: false + }); + }, + + openDeleteLicenseAgreementConfirm(dispatch, {licenseKeyGroup}) { + dispatch({ + type: licenseKeyGroupsConstants.LICENSE_KEY_GROUPS_DELETE_CONFIRM, + licenseKeyGroupToDelete: licenseKeyGroup + }); + }, + + switchVersion(dispatch, {licenseModelId, version}) { + LicenseModelActionHelper.fetchLicenseModelById(dispatch, {licenseModelId, version}).then(() => { + this.fetchLicenseKeyGroupsList(dispatch, {licenseModelId, version}); + }); + } +}; diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsConfirmationModal.jsx b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsConfirmationModal.jsx new file mode 100644 index 0000000000..2413db51d0 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsConfirmationModal.jsx @@ -0,0 +1,49 @@ +import React from 'react'; +import {connect} from 'react-redux'; +import ConfirmationModalView from 'nfvo-components/confirmations/ConfirmationModalView.jsx'; +import LicenseKeyGroupsActionHelper from './LicenseKeyGroupsActionHelper.js'; +import i18n from 'nfvo-utils/i18n/i18n.js'; + +function renderMsg(licenseKeyGroupToDelete) { + let name = licenseKeyGroupToDelete ? licenseKeyGroupToDelete.name : ''; + let msg = i18n('Are you sure you want to delete "{name}"?', {name}); + let subMsg = licenseKeyGroupToDelete + && licenseKeyGroupToDelete.referencingFeatureGroups + && licenseKeyGroupToDelete.referencingFeatureGroups.length > 0 ? + i18n('This license key group is associated with one or more feature groups') : + ''; + return( +
      +

      {msg}

      +

      {subMsg}

      +
      + ); +}; + +const mapStateToProps = ({licenseModel: {licenseKeyGroup}}, {licenseModelId}) => { + let {licenseKeyGroupToDelete} = licenseKeyGroup; + const show = licenseKeyGroupToDelete !== false; + return { + show, + title: 'Warning!', + type: 'warning', + msg: renderMsg(licenseKeyGroupToDelete), + confirmationDetails: {licenseKeyGroupToDelete, licenseModelId} + }; +}; + +const mapActionsToProps = (dispatch) => { + return { + onConfirmed: ({licenseKeyGroupToDelete, licenseModelId}) => { + + LicenseKeyGroupsActionHelper.deleteLicenseKeyGroup(dispatch, {licenseModelId, licenseKeyGroupId:licenseKeyGroupToDelete.id}); + LicenseKeyGroupsActionHelper.hideDeleteConfirm(dispatch); + }, + onDeclined: () => { + LicenseKeyGroupsActionHelper.hideDeleteConfirm(dispatch); + } + }; +}; + +export default connect(mapStateToProps, mapActionsToProps)(ConfirmationModalView); + diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsConstants.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsConstants.js new file mode 100644 index 0000000000..d32bc52744 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsConstants.js @@ -0,0 +1,64 @@ +/*- + * ============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========================================================= + */ + +import keyMirror from 'nfvo-utils/KeyMirror.js'; +import i18n from 'nfvo-utils/i18n/i18n.js'; + +export const actionTypes = keyMirror({ + + LICENSE_KEY_GROUPS_LIST_LOADED: null, + DELETE_LICENSE_KEY_GROUP: null, + EDIT_LICENSE_KEY_GROUP: null, + ADD_LICENSE_KEY_GROUP: null, + LICENSE_KEY_GROUPS_DELETE_CONFIRM: null, + licenseKeyGroupsEditor: { + OPEN: null, + CLOSE: null, + DATA_CHANGED: null, + } +}); + +export const defaultState = { + licenseKeyGroupsEditor: { + type: '', + operationalScope: {choices: [], other: ''} + } +}; + +export const optionsInputValues = { + OPERATIONAL_SCOPE: [ + {enum: '', title: i18n('please select…')}, + {enum: 'Network_Wide', title: 'Network Wide'}, + {enum: 'Availability_Zone', title: 'Availability Zone'}, + {enum: 'Data_Center', title: 'Data Center'}, + {enum: 'Tenant', title: 'Tenant'}, + {enum: 'VM', title: 'VM'}, + {enum: 'CPU', title: 'CPU'}, + {enum: 'Core', title: 'Core'} + ], + TYPE: [ + {enum: '', title: i18n('please select…')}, + {enum: 'Universal', title: 'Universal'}, + {enum: 'Unique', title: 'Unique'}, + {enum: 'One_Time', title: 'One Time'} + ] +}; + + diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsEditor.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsEditor.js new file mode 100644 index 0000000000..3940ec594a --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsEditor.js @@ -0,0 +1,53 @@ +/*- + * ============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========================================================= + */ + +import {connect} from 'react-redux'; +import LicenseKeyGroupsActionHelper from './LicenseKeyGroupsActionHelper.js'; +import LicenseKeyGroupsEditorView from './LicenseKeyGroupsEditorView.jsx'; + +const mapStateToProps = ({licenseModel: {licenseKeyGroup}}) => { + + + let {data} = licenseKeyGroup.licenseKeyGroupsEditor; + + let previousData; + const licenseKeyGroupId = data ? data.id : null; + if(licenseKeyGroupId) { + previousData = licenseKeyGroup.licenseKeyGroupsList.find(licenseKeyGroup => licenseKeyGroup.id === licenseKeyGroupId); + } + + return { + data, + previousData + }; +}; + +const mapActionsToProps = (dispatch, {licenseModelId}) => { + return { + onDataChanged: deltaData => LicenseKeyGroupsActionHelper.licenseKeyGroupEditorDataChanged(dispatch, {deltaData}), + onCancel: () => LicenseKeyGroupsActionHelper.closeLicenseKeyGroupEditor(dispatch), + onSubmit: ({previousLicenseKeyGroup, licenseKeyGroup}) => { + LicenseKeyGroupsActionHelper.closeLicenseKeyGroupEditor(dispatch); + LicenseKeyGroupsActionHelper.saveLicenseKeyGroup(dispatch, {licenseModelId, previousLicenseKeyGroup, licenseKeyGroup}); + } + }; +}; + +export default connect(mapStateToProps, mapActionsToProps)(LicenseKeyGroupsEditorView); diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsEditorReducer.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsEditorReducer.js new file mode 100644 index 0000000000..a74498269a --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsEditorReducer.js @@ -0,0 +1,43 @@ +/*- + * ============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========================================================= + */ + +import {actionTypes, defaultState} from './LicenseKeyGroupsConstants.js'; + +export default (state = {}, action) => { + switch (action.type) { + case actionTypes.licenseKeyGroupsEditor.OPEN: + return { + ...state, + data: action.licenseKeyGroup ? {...action.licenseKeyGroup} : defaultState.licenseKeyGroupsEditor + }; + case actionTypes.licenseKeyGroupsEditor.CLOSE: + return {}; + case actionTypes.licenseKeyGroupsEditor.DATA_CHANGED: + return { + ...state, + data: { + ...state.data, + ...action.deltaData + } + }; + default: + return state; + } +}; diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsEditorView.jsx b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsEditorView.jsx new file mode 100644 index 0000000000..102e713060 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsEditorView.jsx @@ -0,0 +1,92 @@ +import React from 'react'; +import i18n from 'nfvo-utils/i18n/i18n.js'; + +import ValidationForm from 'nfvo-components/input/validation/ValidationForm.jsx'; +import ValidationInput from 'nfvo-components/input/validation/ValidationInput.jsx'; +import {optionsInputValues as licenseKeyGroupOptionsInputValues} from './LicenseKeyGroupsConstants.js'; +import {other as optionInputOther} from 'nfvo-components/input/inputOptions/InputOptions.jsx'; + +const LicenseKeyGroupPropType = React.PropTypes.shape({ + id: React.PropTypes.string, + name: React.PropTypes.string, + description: React.PropTypes.string, + operationalScope: React.PropTypes.shape({ + choices: React.PropTypes.array, + other: React.PropTypes.string + }), + type: React.PropTypes.string +}); + +class LicenseKeyGroupsEditorView extends React.Component { + static propTypes = { + data: LicenseKeyGroupPropType, + previousData: LicenseKeyGroupPropType, + isReadOnlyMode: React.PropTypes.bool, + onDataChanged: React.PropTypes.func.isRequired, + onSubmit: React.PropTypes.func.isRequired, + onCancel: React.PropTypes.func.isRequired + }; + + static defaultProps = { + data: {} + }; + + render() { + let {data = {}, onDataChanged, isReadOnlyMode} = this.props; + let {name, description, operationalScope, type} = data; + return ( + this.submit() } + onReset={ () => this.props.onCancel() } + labledButtons={true} + isReadOnlyMode={isReadOnlyMode} + className='license-key-groups-form'> +
      + onDataChanged({name})} + ref='name' + label={i18n('Name')} + value={name} + validations={{maxLength: 120, required: true}} + type='text'/> + onDataChanged({operationalScope:{choices: operationalScope, other: ''}})} + onOtherChange={operationalScope => onDataChanged({operationalScope:{choices: [optionInputOther.OTHER], other: operationalScope}})} + label={i18n('Operational Scope')} + validations={{required: true}} + multiSelectedEnum={operationalScope && operationalScope.choices} + otherValue={operationalScope && operationalScope.other} + values={licenseKeyGroupOptionsInputValues.OPERATIONAL_SCOPE}/> +
      +
      + onDataChanged({description})} + ref='description' + label={i18n('Description')} + value={description} + validations={{maxLength: 1000, required: true}} + type='textarea'/> + onDataChanged({type})} + selectedEnum={type} + label={i18n('Type')} + type='select' + validations={{required: true}} + values={licenseKeyGroupOptionsInputValues.TYPE}/> +
      +
      + ); + } + + submit() { + const {data: licenseKeyGroup, previousData: previousLicenseKeyGroup} = this.props; + this.props.onSubmit({licenseKeyGroup, previousLicenseKeyGroup}); + } +} + +export default LicenseKeyGroupsEditorView; diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsListEditor.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsListEditor.js new file mode 100644 index 0000000000..e1b610f973 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsListEditor.js @@ -0,0 +1,50 @@ +/*- + * ============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========================================================= + */ + +import {connect} from 'react-redux'; +import LicenseKeyGroupsActionHelper from './LicenseKeyGroupsActionHelper.js'; +import LicenseKeyGroupsListEditorView from './LicenseKeyGroupsListEditorView.jsx'; +import VersionControllerUtils from 'nfvo-components/panel/versionController/VersionControllerUtils.js'; + +const mapStateToProps = ({licenseModel: {licenseKeyGroup, licenseModelEditor}}) => { + let {licenseKeyGroupsList} = licenseKeyGroup; + let {data} = licenseKeyGroup.licenseKeyGroupsEditor; + let {vendorName} = licenseModelEditor.data; + let isReadOnlyMode = VersionControllerUtils.isReadOnly(licenseModelEditor.data); + + return { + vendorName, + licenseKeyGroupsList, + isReadOnlyMode, + isDisplayModal: Boolean(data), + isModalInEditMode: Boolean(data && data.id) + }; +}; + +const mapActionsToProps = (dispatch) => { + return { + onAddLicenseKeyGroupClick: () => LicenseKeyGroupsActionHelper.openLicenseKeyGroupsEditor(dispatch), + onEditLicenseKeyGroupClick: licenseKeyGroup => LicenseKeyGroupsActionHelper.openLicenseKeyGroupsEditor(dispatch, {licenseKeyGroup}), + onDeleteLicenseKeyGroupClick: licenseKeyGroup => LicenseKeyGroupsActionHelper.openDeleteLicenseAgreementConfirm(dispatch, {licenseKeyGroup}) + }; +}; + +export default connect(mapStateToProps, mapActionsToProps)(LicenseKeyGroupsListEditorView); + diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsListEditorView.jsx b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsListEditorView.jsx new file mode 100644 index 0000000000..1ed1d2093a --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsListEditorView.jsx @@ -0,0 +1,138 @@ +import React from 'react'; + +import i18n from 'nfvo-utils/i18n/i18n.js'; +import Modal from 'nfvo-components/modal/Modal.jsx'; +import ListEditorView from 'nfvo-components/listEditor/ListEditorView.jsx'; +import ListEditorItemView from 'nfvo-components/listEditor/ListEditorItemView.jsx'; + +import LicenseKeyGroupsEditor from './LicenseKeyGroupsEditor.js'; +import InputOptions, {other as optionInputOther} from 'nfvo-components/input/inputOptions/InputOptions.jsx'; +import {optionsInputValues} from './LicenseKeyGroupsConstants'; +import LicenseKeyGroupsConfirmationModal from './LicenseKeyGroupsConfirmationModal.jsx'; + + +class LicenseKeyGroupsListEditorView extends React.Component { + static propTypes = { + vendorName: React.PropTypes.string, + licenseModelId: React.PropTypes.string.isRequired, + licenseKeyGroupsList: React.PropTypes.array, + isReadOnlyMode: React.PropTypes.bool.isRequired, + isDisplayModal: React.PropTypes.bool, + isModalInEditMode: React.PropTypes.bool, + onAddLicenseKeyGroupClick: React.PropTypes.func, + onEditLicenseKeyGroupClick: React.PropTypes.func, + onDeleteLicenseKeyGroupClick: React.PropTypes.func + }; + + static defaultProps = { + licenseKeyGroupsList: [] + }; + + state = { + localFilter: '' + }; + + render() { + let {licenseModelId, vendorName, isReadOnlyMode, isDisplayModal, isModalInEditMode} = this.props; + let {onAddLicenseKeyGroupClick} = this.props; + const {localFilter} = this.state; + + return ( +
      + this.setState({localFilter: filter})} + isReadOnlyMode={isReadOnlyMode}> + {this.filterList().map(licenseKeyGroup => (this.renderLicenseKeyGroupListItem(licenseKeyGroup, isReadOnlyMode)))} + + + + {`${isModalInEditMode ? i18n('Edit License Key Group') : i18n('Create New License Key Group')}`} + + + { + isDisplayModal && ( + + ) + } + + + + +
      + ); + } + + filterList() { + let {licenseKeyGroupsList} = this.props; + let {localFilter} = this.state; + if (localFilter.trim()) { + const filter = new RegExp(escape(localFilter), 'i'); + return licenseKeyGroupsList.filter(({name = '', description = '', operationalScope = '', type = ''}) => { + return escape(name).match(filter) || escape(description).match(filter) || escape(this.extractValue(operationalScope)).match(filter) || escape(type).match(filter); + }); + } + else { + return licenseKeyGroupsList; + } + } + + renderLicenseKeyGroupListItem(licenseKeyGroup, isReadOnlyMode) { + let {id, name, description, operationalScope, type} = licenseKeyGroup; + let {onEditLicenseKeyGroupClick, onDeleteLicenseKeyGroupClick} = this.props; + return ( + onEditLicenseKeyGroupClick(licenseKeyGroup)} + onDelete={() => onDeleteLicenseKeyGroupClick(licenseKeyGroup)} + className='list-editor-item-view' + isReadOnlyMode={isReadOnlyMode}> +
      +
      {i18n('Name')}
      +
      {name}
      +
      + +
      +
      {i18n('Operational Scope')}
      +
      {operationalScope && this.getOperationalScopes(operationalScope)}
      + +
      {i18n('Type')}
      +
      {InputOptions.getTitleByName(optionsInputValues, type)}
      +
      +
      +
      {i18n('Description')}
      +
      {description}
      +
      +
      + ); + } + + getOperationalScopes(operationalScope) { + if(operationalScope.choices.toString() === i18n(optionInputOther.OTHER) && operationalScope.other !== '') { + return operationalScope.other; + } + else { + let allOpScopes = ''; + for (let opScope of operationalScope.choices) { + allOpScopes += allOpScopes === '' ? InputOptions.getTitleByName(optionsInputValues, opScope) : `, ${InputOptions.getTitleByName(optionsInputValues, opScope)}`; + } + return allOpScopes; + } + } + + extractValue(item) { + if (item === undefined) { + return ''; + } //TODO fix it later + + return item ? item.choice === optionInputOther.OTHER ? item.other : InputOptions.getTitleByName(optionsInputValues, item.choice) : ''; + } +} + +export default LicenseKeyGroupsListEditorView; + + + diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsListReducer.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsListReducer.js new file mode 100644 index 0000000000..54ce4e3955 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsListReducer.js @@ -0,0 +1,37 @@ +/*- + * ============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========================================================= + */ + +import {actionTypes} from './LicenseKeyGroupsConstants.js'; +export default (state = [], action) => { + switch (action.type) { + case actionTypes.LICENSE_KEY_GROUPS_LIST_LOADED: + return [...action.response.results]; + case actionTypes.DELETE_LICENSE_KEY_GROUP: + return state.filter(licenseKeyGroup => licenseKeyGroup.id !== action.licenseKeyGroupId); + case actionTypes.ADD_LICENSE_KEY_GROUP: + return [...state, action.licenseKeyGroup]; + case actionTypes.EDIT_LICENSE_KEY_GROUP: + const indexForEdit = state.findIndex(licenseKeyGroup => licenseKeyGroup.id === action.licenseKeyGroup.id); + return [...state.slice(0, indexForEdit), action.licenseKeyGroup, ...state.slice(indexForEdit + 1)]; + default: + return state; + } +}; + diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProduct.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProduct.js new file mode 100644 index 0000000000..2dbef6baf2 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProduct.js @@ -0,0 +1,321 @@ +/*- + * ============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========================================================= + */ + +import {connect} from 'react-redux'; + +import i18n from 'nfvo-utils/i18n/i18n.js'; +import {statusEnum as versionStatusEnum} from 'nfvo-components/panel/versionController/VersionControllerConstants.js'; +import VersionControllerUtils from 'nfvo-components/panel/versionController/VersionControllerUtils.js'; +import TabulatedEditor from 'src/nfvo-components/editor/TabulatedEditor.jsx'; + +import {enums} from 'sdc-app/onboarding/OnboardingConstants.js'; +import OnboardingActionHelper from 'sdc-app/onboarding/OnboardingActionHelper.js'; + +import {navigationItems} from './SoftwareProductConstants.js'; +import SoftwareProductActionHelper from './SoftwareProductActionHelper.js'; +import SoftwareProductComponentsActionHelper from './components/SoftwareProductComponentsActionHelper.js'; + +const buildComponentNavigationBarGroups = ({componentId, meta}) => { + const groups = ([ + { + id: navigationItems.GENERAL + '|' + componentId, + name: i18n('General'), + disabled: false, + meta + }, { + id: navigationItems.COMPUTE + '|' + componentId, + name: i18n('Compute'), + disabled: false, + meta + }, { + id: navigationItems.LOAD_BALANCING + '|' + componentId, + name: i18n('High Availability & Load Balancing'), + disabled: false, + meta + }, { + id: navigationItems.NETWORKS + '|' + componentId, + name: i18n('Networks'), + disabled: false, + meta + }, { + id: navigationItems.STORAGE + '|' + componentId, + name: i18n('Storage'), + disabled: false, + meta + }, { + id: navigationItems.PROCESS_DETAILS + '|' + componentId, + name: i18n('Process Details'), + disabled: false, + meta + }, { + id: navigationItems.MONITORING + '|' + componentId, + name: i18n('Monitoring'), + disabled: false, + meta + } + ]); + + return groups; +}; + +const buildNavigationBarProps = ({softwareProduct, meta, screen, componentId, componentsList, mapOfExpandedIds}) => { + const {softwareProductEditor: {data: currentSoftwareProduct = {}}} = softwareProduct; + const {id, name} = currentSoftwareProduct; + const groups = [{ + id: id, + name: name, + items: [ + { + id: navigationItems.VENDOR_SOFTWARE_PRODUCT, + name: i18n('Overview'), + disabled: false, + meta + }, { + id: navigationItems.GENERAL, + name: i18n('General'), + disabled: false, + meta + }, { + id: navigationItems.PROCESS_DETAILS, + name: i18n('Process Details'), + disabled: false, + meta + }, { + id: navigationItems.NETWORKS, + name: i18n('Networks'), + disabled: false, + meta + }, { + id: navigationItems.ATTACHMENTS, + name: i18n('Attachments'), + disabled: false, + meta + }, { + id: navigationItems.COMPONENTS, + name: i18n('Components'), + hidden: componentsList.length <= 0, + meta, + expanded: mapOfExpandedIds[navigationItems.COMPONENTS] === true && screen !== enums.SCREEN.SOFTWARE_PRODUCT_LANDING_PAGE, + items: [ + ...componentsList.map(({id, displayName}) => ({ + id: navigationItems.COMPONENTS + '|' + id, + name: displayName, + meta, + expanded: mapOfExpandedIds[navigationItems.COMPONENTS + '|' + id] === true && screen !== enums.SCREEN.SOFTWARE_PRODUCT_LANDING_PAGE, + items: buildComponentNavigationBarGroups({componentId: id, meta}) + })) + ] + } + ] + }]; + let activeItemId = ({ + [enums.SCREEN.SOFTWARE_PRODUCT_LANDING_PAGE]: navigationItems.VENDOR_SOFTWARE_PRODUCT, + [enums.SCREEN.SOFTWARE_PRODUCT_DETAILS]: navigationItems.GENERAL, + [enums.SCREEN.SOFTWARE_PRODUCT_ATTACHMENTS]: navigationItems.ATTACHMENTS, + [enums.SCREEN.SOFTWARE_PRODUCT_PROCESSES]: navigationItems.PROCESS_DETAILS, + [enums.SCREEN.SOFTWARE_PRODUCT_NETWORKS]: navigationItems.NETWORKS, + [enums.SCREEN.SOFTWARE_PRODUCT_COMPONENTS]: navigationItems.COMPONENTS + })[screen]; + + if(componentId) { + activeItemId = + Object.keys(mapOfExpandedIds).length === 1 && mapOfExpandedIds[navigationItems.COMPONENTS] === true ? + navigationItems.COMPONENTS : ({ + [enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_GENERAL]: navigationItems.GENERAL, + [enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_COMPUTE]: navigationItems.COMPUTE, + [enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_LOAD_BALANCING]: navigationItems.LOAD_BALANCING, + [enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_NETWORK]: navigationItems.NETWORKS, + [enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_STORAGE]: navigationItems.STORAGE, + [enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_PROCESSES]: navigationItems.PROCESS_DETAILS, + [enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_MONITORING]: navigationItems.MONITORING + })[screen] + '|' + componentId; + } + + return { + activeItemId, groups + }; +}; + +const buildVersionControllerProps = (softwareProduct) => { + const {softwareProductEditor} = softwareProduct; + const {data: currentSoftwareProduct = {}, isValidityData = true} = softwareProductEditor; + + const {version, viewableVersions, status: currentStatus, lockingUser} = currentSoftwareProduct; + const {status, isCheckedOut} = (currentStatus === versionStatusEnum.CHECK_OUT_STATUS) ? + VersionControllerUtils.getCheckOutStatusKindByUserID(currentStatus, lockingUser) : + {status: currentStatus, isCheckedOut: false}; + + return { + status, isCheckedOut, version, viewableVersions, + isFormDataValid: isValidityData + }; +}; + +const mapStateToProps = ({softwareProduct}, {currentScreen: {screen, props: {componentId}}}) => { + const {softwareProductEditor, softwareProductComponents, softwareProductQuestionnaire} = softwareProduct; + const {data: currentSoftwareProduct = {}, mapOfExpandedIds = []} = softwareProductEditor; + const {version} = currentSoftwareProduct; + const {componentsList = []} = softwareProductComponents; + const isReadOnlyMode = VersionControllerUtils.isReadOnly(currentSoftwareProduct); + const {qdata} = softwareProductQuestionnaire; + let currentComponentMeta = {}; + if(componentId) { + const {componentEditor: {data: componentData = {} , qdata: componentQdata}} = softwareProductComponents; + currentComponentMeta = {componentData, componentQdata}; + } + const meta = {softwareProduct: currentSoftwareProduct, qdata, version, isReadOnlyMode, currentComponentMeta}; + return { + versionControllerProps: buildVersionControllerProps(softwareProduct), + navigationBarProps: buildNavigationBarProps({softwareProduct, meta, screen, componentId, componentsList, mapOfExpandedIds}) + }; +}; + +const autoSaveBeforeNavigate = ({dispatch, screen, softwareProductId, componentId, meta: {isReadOnlyMode, softwareProduct, qdata, currentComponentMeta: {componentData, componentQdata}}}) => { + let promise; + if (isReadOnlyMode) { + promise = Promise.resolve(); + } else { + switch(screen) { + case enums.SCREEN.SOFTWARE_PRODUCT_DETAILS: + promise = SoftwareProductActionHelper.updateSoftwareProduct(dispatch, {softwareProduct, qdata}); + break; + case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_GENERAL: + promise = SoftwareProductComponentsActionHelper.updateSoftwareProductComponent(dispatch, {softwareProductId, vspComponentId: componentId, componentData, qdata: componentQdata}); + break; + case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_COMPUTE: + case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_STORAGE: + case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_NETWORK: + case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_LOAD_BALANCING: + promise = SoftwareProductComponentsActionHelper.updateSoftwareProductComponentQuestionnaire(dispatch, {softwareProductId, vspComponentId: componentId, qdata: componentQdata}); + break; + default: + promise = Promise.resolve(); + break; + } + } + return promise; +}; + + +const onComponentNavigate = (dispatch, {id, softwareProductId, version, currentComponentId}) => { + const [nextScreen, nextComponentId] = id.split('|'); + switch(nextScreen) { + case navigationItems.COMPONENTS: + if(nextComponentId === currentComponentId) { + OnboardingActionHelper.navigateToSoftwareProductComponents(dispatch, {softwareProductId}); + } else { + OnboardingActionHelper.navigateToSoftwareProductComponentGeneral(dispatch, {softwareProductId, componentId: nextComponentId, version}); + } + break; + case navigationItems.GENERAL: + OnboardingActionHelper.navigateToSoftwareProductComponentGeneral(dispatch, {softwareProductId, componentId: nextComponentId, version}); + break; + case navigationItems.COMPUTE: + OnboardingActionHelper.navigateToComponentCompute(dispatch, {softwareProductId, componentId: nextComponentId}); + break; + case navigationItems.LOAD_BALANCING: + OnboardingActionHelper.navigateToComponentLoadBalancing(dispatch, {softwareProductId, componentId: nextComponentId}); + break; + case navigationItems.NETWORKS: + OnboardingActionHelper.navigateToComponentNetwork(dispatch, {softwareProductId, componentId: nextComponentId, version}); + break; + case navigationItems.STORAGE: + OnboardingActionHelper.navigateToComponentStorage(dispatch, {softwareProductId, componentId: nextComponentId}); + break; + case navigationItems.PROCESS_DETAILS: + OnboardingActionHelper.navigateToSoftwareProductComponentProcesses(dispatch, {softwareProductId, componentId: nextComponentId}); + break; + case navigationItems.MONITORING: + OnboardingActionHelper.navigateToSoftwareProductComponentMonitoring(dispatch, {softwareProductId, componentId: nextComponentId}); + break; + } +}; + +const mapActionsToProps = (dispatch, {currentScreen: {screen, props: {softwareProductId, componentId: currentComponentId}}}) => { + + const props = { + onClose: ({version}) => { + if (screen === enums.SCREEN.SOFTWARE_PRODUCT_LANDING_PAGE) { + OnboardingActionHelper.navigateToOnboardingCatalog(dispatch); + } else { + OnboardingActionHelper.navigateToSoftwareProductLandingPage(dispatch, {softwareProductId, version}); + } + }, + onVersionSwitching: (version) => { + OnboardingActionHelper.navigateToSoftwareProductLandingPage(dispatch, {softwareProductId, version}); + }, + onToggle: (groups, itemIdToExpand) => groups.map(({items}) => SoftwareProductActionHelper.toggleNavigationItems(dispatch, {items, itemIdToExpand})), + onNavigate: ({id, meta}) => { + let preNavigate = autoSaveBeforeNavigate({dispatch, screen, meta, softwareProductId, componentId: currentComponentId}); + preNavigate.then(() => { + switch(id) { + case navigationItems.VENDOR_SOFTWARE_PRODUCT: + OnboardingActionHelper.navigateToSoftwareProductLandingPage(dispatch, {softwareProductId, version: meta.version}); + break; + case navigationItems.GENERAL: + OnboardingActionHelper.navigateToSoftwareProductDetails(dispatch, {softwareProductId}); + break; + case navigationItems.PROCESS_DETAILS: + OnboardingActionHelper.navigateToSoftwareProductProcesses(dispatch, {softwareProductId, version: meta.version}); + break; + case navigationItems.NETWORKS: + OnboardingActionHelper.navigateToSoftwareProductNetworks(dispatch, {softwareProductId, version: meta.version}); + break; + case navigationItems.ATTACHMENTS: + OnboardingActionHelper.navigateToSoftwareProductAttachments(dispatch, {softwareProductId}); + break; + case navigationItems.COMPONENTS: + OnboardingActionHelper.navigateToSoftwareProductComponents(dispatch, {softwareProductId}); + break; + default: + onComponentNavigate(dispatch, {id, softwareProductId, version: meta.version, screen, currentComponentId}); + break; + } + }); + } + }; + + switch (screen) { + case enums.SCREEN.SOFTWARE_PRODUCT_LANDING_PAGE: + case enums.SCREEN.SOFTWARE_PRODUCT_ATTACHMENTS: + case enums.SCREEN.SOFTWARE_PRODUCT_PROCESSES: + case enums.SCREEN.SOFTWARE_PRODUCT_NETWORKS: + case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENTS: + case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_PROCESSES: + case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_MONITORING: + props.onSave = () => { + return Promise.resolve(); + }; + break; + default: + props.onSave = ({softwareProduct, qdata}) => SoftwareProductActionHelper.updateSoftwareProduct(dispatch, {softwareProduct, qdata}); + break; + } + + + props.onVersionControllerAction = (action) => + SoftwareProductActionHelper.performVCAction(dispatch, {softwareProductId, action}).then(() => { + SoftwareProductActionHelper.fetchSoftwareProduct(dispatch, {softwareProductId}); + }); + + return props; +}; + +export default connect(mapStateToProps, mapActionsToProps)(TabulatedEditor); diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductActionHelper.js new file mode 100644 index 0000000000..d9ed8af679 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductActionHelper.js @@ -0,0 +1,333 @@ +/*- + * ============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========================================================= + */ + +import RestAPIUtil from 'nfvo-utils/RestAPIUtil.js'; +import Configuration from 'sdc-app/config/Configuration.js'; +import i18n from 'nfvo-utils/i18n/i18n.js'; +import LicenseModelActionHelper from 'sdc-app/onboarding/licenseModel/LicenseModelActionHelper.js'; +import LicenseAgreementActionHelper from 'sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementActionHelper.js'; +import FeatureGroupsActionHelper from 'sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupsActionHelper.js'; + +import {actionTypes} from './SoftwareProductConstants.js'; +import NotificationConstants from 'nfvo-components/notifications/NotificationConstants.js'; +import OnboardingActionHelper from 'sdc-app/onboarding/OnboardingActionHelper.js'; +import SoftwareProductComponentsActionHelper from './components/SoftwareProductComponentsActionHelper.js'; +import {actionsEnum as VersionControllerActionsEnum} from 'nfvo-components/panel/versionController/VersionControllerConstants.js'; + +function baseUrl() { + const restPrefix = Configuration.get('restPrefix'); + return `${restPrefix}/v1.0/vendor-software-products/`; +} +function softwareProductCategoriesUrl() { + const restATTPrefix = Configuration.get('restATTPrefix'); + return `${restATTPrefix}/v1/categories/resources/`; +} + +function uploadFile(vspId, formData) { + + return RestAPIUtil.create(`${baseUrl()}${vspId}/upload`, formData); + +} + +function putSoftwareProduct(softwareData) { + return RestAPIUtil.save(`${baseUrl()}${softwareData.id}`, { + name: softwareData.name, + description: softwareData.description, + category: softwareData.category, + subCategory: softwareData.subCategory, + vendorId: softwareData.vendorId, + vendorName: softwareData.vendorName, + licensingVersion: softwareData.licensingVersion, + icon: softwareData.icon, + licensingData: softwareData.licensingData + }); +} + +function putSoftwareProductQuestionnaire(vspId, qdata) { + return RestAPIUtil.save(`${baseUrl()}${vspId}/questionnaire`, qdata); +} + +function putSoftwareProductAction(id, action) { + return RestAPIUtil.save(`${baseUrl()}${id}/actions`, {action: action}); +} + +function fetchSoftwareProductList() { + return RestAPIUtil.fetch(baseUrl()); +} + +function fetchSoftwareProduct(vspId, version) { + let versionQuery = version ? `?version=${version}` : ''; + return RestAPIUtil.fetch(`${baseUrl()}${vspId}${versionQuery}`); +} + +function fetchSoftwareProductQuestionnaire(vspId, version) { + let versionQuery = version ? `?version=${version}` : ''; + return RestAPIUtil.fetch(`${baseUrl()}${vspId}/questionnaire${versionQuery}`); +} + +function objToString(obj) { + let str = ''; + if (obj instanceof Array) { + obj.forEach((item) => { + str += objToString(item) + '\n'; + }); + } else { + for (let p in obj) { + if (obj.hasOwnProperty(p)) { + str += obj[p] + '\n'; + } + } + } + return str; +} + +function parseUploadErrorMsg(error) { + let message = ''; + for (let key in error) { + if (error.hasOwnProperty(key)) { + message += objToString(error[key]) + '\n'; + } + } + return message; +} + +function fetchSoftwareProductCategories(dispatch) { + let handleResponse = response => dispatch({ + type: actionTypes.SOFTWARE_PRODUCT_CATEGORIES_LOADED, + softwareProductCategories: response + }); + return RestAPIUtil.fetch(softwareProductCategoriesUrl()) + .then(handleResponse) + .fail(() => handleResponse(null)); +} + +function loadLicensingData(dispatch, {licenseModelId, licensingVersion}) { + LicenseAgreementActionHelper.fetchLicenseAgreementList(dispatch, {licenseModelId, version: licensingVersion}); + FeatureGroupsActionHelper.fetchFeatureGroupsList(dispatch, {licenseModelId, version: licensingVersion}); +} + +function getExpandedItemsId(items, itemIdToToggle) { + for(let i = 0; i < items.length; i++) { + if(items[i].id === itemIdToToggle) { + if (items[i].expanded) { + return {}; + } else { + return {[itemIdToToggle]: true}; + } + } + else if(items[i].items && items[i].items.length > 0) { + let mapOfExpandedIds = getExpandedItemsId(items[i].items, itemIdToToggle); + if (mapOfExpandedIds !== false) { + mapOfExpandedIds[items[i].id] = true; + return mapOfExpandedIds; + } + } + } + return false; +} + +const SoftwareProductActionHelper = { + + loadSoftwareProductAssociatedData(dispatch) { + fetchSoftwareProductCategories(dispatch); + LicenseModelActionHelper.fetchFinalizedLicenseModels(dispatch); + }, + + loadSoftwareProductDetailsData(dispatch, {licenseModelId, licensingVersion}) { + SoftwareProductActionHelper.loadSoftwareProductAssociatedData(dispatch); + loadLicensingData(dispatch, {licenseModelId, licensingVersion}); + }, + + fetchSoftwareProductList(dispatch) { + return fetchSoftwareProductList().then(response => dispatch({ + type: actionTypes.SOFTWARE_PRODUCT_LIST_LOADED, + response + })); + }, + + uploadFile(dispatch, {softwareProductId, formData, failedNotificationTitle}) { + Promise.resolve() + .then(() => uploadFile(softwareProductId, formData)) + .then(response => { + if (response.status !== 'Success') { + throw new Error(parseUploadErrorMsg(response.errors)); + } + }) + .then(() => { + SoftwareProductComponentsActionHelper.fetchSoftwareProductComponents(dispatch, {softwareProductId}); + OnboardingActionHelper.navigateToSoftwareProductAttachments(dispatch, {softwareProductId}); + SoftwareProductActionHelper.fetchSoftwareProduct(dispatch, {softwareProductId}); + }) + .catch(error => { + dispatch({ + type: NotificationConstants.NOTIFY_ERROR, + data: {title: failedNotificationTitle, msg: error.message} + }); + }); + }, + + uploadConfirmation(dispatch, {softwareProductId, formData, failedNotificationTitle}) { + dispatch({ + type: actionTypes.softwareProductEditor.UPLOAD_CONFIRMATION, + uploadData: { + softwareProductId, + formData, + failedNotificationTitle + } + }); + }, + hideUploadConfirm (dispatch) { + dispatch({ + type: actionTypes.softwareProductEditor.UPLOAD_CONFIRMATION + }); + }, + updateSoftwareProduct(dispatch, {softwareProduct, qdata}) { + return Promise.all([ + SoftwareProductActionHelper.updateSoftwareProductData(dispatch, {softwareProduct}).then( + () => dispatch({ + type: actionTypes.SOFTWARE_PRODUCT_LIST_EDIT, + payload: {softwareProduct} + }) + ), + SoftwareProductActionHelper.updateSoftwareProductQuestionnaire(dispatch, { + softwareProductId: softwareProduct.id, + qdata + }) + ]); + }, + + updateSoftwareProductData(dispatch, {softwareProduct}) { + return putSoftwareProduct(softwareProduct); + }, + + updateSoftwareProductQuestionnaire(dispatch, {softwareProductId, qdata}) { + return putSoftwareProductQuestionnaire(softwareProductId, qdata); + }, + + softwareProductEditorDataChanged(dispatch, {deltaData}) { + dispatch({ + type: actionTypes.softwareProductEditor.DATA_CHANGED, + deltaData + }); + }, + + softwareProductQuestionnaireUpdate(dispatch, {data}) { + dispatch({ + type: actionTypes.SOFTWARE_PRODUCT_QUESTIONNAIRE_UPDATE, + payload: {qdata: data} + }); + }, + + softwareProductEditorVendorChanged(dispatch, {deltaData}) { + LicenseAgreementActionHelper.fetchLicenseAgreementList(dispatch, {licenseModelId: deltaData.vendorId, version: deltaData.licensingVersion}); + FeatureGroupsActionHelper.fetchFeatureGroupsList(dispatch, {licenseModelId: deltaData.vendorId, version: deltaData.licensingVersion}); + SoftwareProductActionHelper.softwareProductEditorDataChanged(dispatch, {deltaData}); + }, + + setIsValidityData(dispatch, {isValidityData}) { + dispatch({ + type: actionTypes.softwareProductEditor.IS_VALIDITY_DATA_CHANGED, + isValidityData + }); + }, + + addSoftwareProduct(dispatch, {softwareProduct}) { + dispatch({ + type: actionTypes.ADD_SOFTWARE_PRODUCT, + softwareProduct + }); + }, + + fetchSoftwareProduct(dispatch, {softwareProductId, version}) { + return Promise.all([ + fetchSoftwareProduct(softwareProductId, version).then(response => { + dispatch({ + type: actionTypes.SOFTWARE_PRODUCT_LOADED, + response + }); + return response; + }), + fetchSoftwareProductQuestionnaire(softwareProductId, version).then(response => { + dispatch({ + type: actionTypes.SOFTWARE_PRODUCT_QUESTIONNAIRE_UPDATE, + payload: { + qdata: response.data ? JSON.parse(response.data) : {}, + qschema: JSON.parse(response.schema) + } + }); + }) + ]); + }, + + performVCAction(dispatch, {softwareProductId, action}) { + if (action === VersionControllerActionsEnum.SUBMIT) { + return putSoftwareProductAction(softwareProductId, action).then(() => { + return putSoftwareProductAction(softwareProductId, VersionControllerActionsEnum.CREATE_PACKAGE).then(() => { + dispatch({ + type: NotificationConstants.NOTIFY_SUCCESS, + data: { + title: i18n('Submit Succeeded'), + msg: i18n('This software product successfully submitted'), + timeout: 2000 + } + }); + fetchSoftwareProduct(softwareProductId).then(response => { + dispatch({ + type: actionTypes.SOFTWARE_PRODUCT_LOADED, + response + }); + }); + }); + }, error => dispatch({ + type: NotificationConstants.NOTIFY_ERROR, + data: {title: i18n('Submit Failed'), validationResponse: error.responseJSON} + })); + } + else { + return putSoftwareProductAction(softwareProductId, action).then(() => { + fetchSoftwareProduct(softwareProductId).then(response => { + dispatch({ + type: actionTypes.SOFTWARE_PRODUCT_LOADED, + response + }); + }); + }); + } + }, + + switchVersion(dispatch, {softwareProductId, licenseModelId, version}) { + OnboardingActionHelper.navigateToSoftwareProductLandingPage(dispatch, {softwareProductId, licenseModelId, version}); + }, + + toggleNavigationItems(dispatch, {items, itemIdToExpand}) { + let mapOfExpandedIds = getExpandedItemsId(items, itemIdToExpand); + dispatch({ + type: actionTypes.TOGGLE_NAVIGATION_ITEM, + mapOfExpandedIds + }); + }, + + /** for the next verision */ + addComponent(dispatch) { + return dispatch; + } +}; + +export default SoftwareProductActionHelper; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductCategoriesHelper.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductCategoriesHelper.js new file mode 100644 index 0000000000..812afe5409 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductCategoriesHelper.js @@ -0,0 +1,35 @@ +/*- + * ============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========================================================= + */ + +export default { + + getCurrentCategoryOfSubCategory(selectedSubCategory, softwareProductCategories) { + let category, subCategory; + for (var i = 0; i < softwareProductCategories.length; i++) { + let {subcategories = []} = softwareProductCategories[i]; + subCategory = subcategories.find(sub => sub.uniqueId === selectedSubCategory); + if (subCategory) { + category = softwareProductCategories[i].uniqueId; + break; + } + } + return category; + } +}; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js new file mode 100644 index 0000000000..5f10c27084 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js @@ -0,0 +1,53 @@ +/*- + * ============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========================================================= + */ + +import keyMirror from 'nfvo-utils/KeyMirror.js'; + +export const actionTypes = keyMirror({ + SOFTWARE_PRODUCT_LOADED: null, + SOFTWARE_PRODUCT_LIST_LOADED: null, + SOFTWARE_PRODUCT_LIST_EDIT: null, + SOFTWARE_PRODUCT_CATEGORIES_LOADED: null, + SOFTWARE_PRODUCT_QUESTIONNAIRE_UPDATE: null, + ADD_SOFTWARE_PRODUCT: null, + TOGGLE_NAVIGATION_ITEM: null, + + softwareProductEditor: { + OPEN: null, + CLOSE: null, + DATA_CHANGED: null, + IS_VALIDITY_DATA_CHANGED: null, + UPLOAD_CONFIRMATION: null + } +}); + +export const navigationItems = keyMirror({ + VENDOR_SOFTWARE_PRODUCT: 'Vendor Software Product', + GENERAL: 'General', + PROCESS_DETAILS: 'Process Details', + NETWORKS: 'Networks', + ATTACHMENTS: 'Attachments', + COMPONENTS: 'Components', + + COMPUTE: 'Compute', + LOAD_BALANCING: 'Load Balancing', + STORAGE: 'Storage', + MONITORING: 'Monitoring' +}); diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductListReducer.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductListReducer.js new file mode 100644 index 0000000000..6d1db1626f --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductListReducer.js @@ -0,0 +1,35 @@ +/*- + * ============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========================================================= + */ + +import {actionTypes} from './SoftwareProductConstants.js'; + +export default (state = [], action) => { + switch (action.type) { + case actionTypes.SOFTWARE_PRODUCT_LIST_LOADED: + return [...action.response.results]; + case actionTypes.SOFTWARE_PRODUCT_LIST_EDIT: + const indexForEdit = state.findIndex(vsp => vsp.id === action.payload.softwareProduct.id); + return [...state.slice(0, indexForEdit), action.payload.softwareProduct, ...state.slice(indexForEdit + 1)]; + case actionTypes.ADD_SOFTWARE_PRODUCT: + return [...state, action.softwareProduct]; + default: + return state; + } +}; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductReducer.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductReducer.js new file mode 100644 index 0000000000..784ac9db84 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductReducer.js @@ -0,0 +1,80 @@ +/*- + * ============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========================================================= + */ + +import {combineReducers} from 'redux'; +import {actionTypes} from './SoftwareProductConstants.js'; +import SoftwareProductAttachmentsReducer from './attachments/SoftwareProductAttachmentsReducer.js'; +import SoftwareProductCreationReducer from './creation/SoftwareProductCreationReducer.js'; +import SoftwareProductDetailsReducer from './details/SoftwareProductDetailsReducer.js'; +import SoftwareProductProcessesListReducer from './processes/SoftwareProductProcessesListReducer.js'; +import SoftwareProductProcessesEditorReducer from './processes/SoftwareProductProcessesEditorReducer.js'; +import SoftwareProductNetworksListReducer from './networks/SoftwareProductNetworksListReducer.js'; +import SoftwareProductComponentsListReducer from './components/SoftwareProductComponentsListReducer.js'; +import SoftwareProductComponentEditorReducer from './components/SoftwareProductComponentEditorReducer.js'; +import {actionTypes as processesActionTypes} from './processes/SoftwareProductProcessesConstants.js'; +import SoftwareProductComponentProcessesListReducer from './components/processes/SoftwareProductComponentProcessesListReducer.js'; +import SoftwareProductComponentProcessesEditorReducer from './components/processes/SoftwareProductComponentProcessesEditorReducer.js'; +import {actionTypes as componentProcessesActionTypes} from './components/processes/SoftwareProductComponentProcessesConstants.js'; +import SoftwareProductComponentsNICListReducer from './components/network/SoftwareProductComponentsNICListReducer.js'; +import SoftwareProductComponentsNICEditorReducer from './components/network/SoftwareProductComponentsNICEditorReducer.js'; +import SoftwareProductComponentsMonitoringReducer from './components/monitoring/SoftwareProductComponentsMonitoringReducer.js'; + +export default combineReducers({ + softwareProductAttachments: SoftwareProductAttachmentsReducer, + softwareProductCreation: SoftwareProductCreationReducer, + softwareProductEditor: SoftwareProductDetailsReducer, + softwareProductProcesses: combineReducers({ + processesList: SoftwareProductProcessesListReducer, + processesEditor: SoftwareProductProcessesEditorReducer, + processToDelete: (state = false, action) => action.type === processesActionTypes.SOFTWARE_PRODUCT_PROCESS_DELETE_CONFIRM ? action.processToDelete : state + }), + softwareProductNetworks: combineReducers({ + networksList: SoftwareProductNetworksListReducer + }), + softwareProductComponents: combineReducers({ + componentsList: SoftwareProductComponentsListReducer, + componentEditor: SoftwareProductComponentEditorReducer, + componentProcesses: combineReducers({ + processesList: SoftwareProductComponentProcessesListReducer, + processesEditor: SoftwareProductComponentProcessesEditorReducer, + processToDelete: (state = false, action) => action.type === componentProcessesActionTypes.SOFTWARE_PRODUCT_PROCESS_DELETE_COMPONENTS_CONFIRM ? action.processToDelete : state, + }), + network: combineReducers({ + nicList: SoftwareProductComponentsNICListReducer, + nicEditor: SoftwareProductComponentsNICEditorReducer + }), + monitoring: SoftwareProductComponentsMonitoringReducer + }), + softwareProductCategories: (state = [], action) => { + if (action.type === actionTypes.SOFTWARE_PRODUCT_CATEGORIES_LOADED) { + return action.softwareProductCategories; + } + return state; + }, + softwareProductQuestionnaire: (state = {}, action) => { + if (action.type === actionTypes.SOFTWARE_PRODUCT_QUESTIONNAIRE_UPDATE) { + return { + ...state, + ...action.payload + }; + } + return state; + } +}); diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachments.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachments.js new file mode 100644 index 0000000000..a4b95a4b7e --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachments.js @@ -0,0 +1,43 @@ +/*- + * ============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========================================================= + */ + +import {connect} from 'react-redux'; +import SoftwareProductAttachmentsView from './SoftwareProductAttachmentsView.jsx'; +import SoftwareProductAttachmentsActionHelper from './SoftwareProductAttachmentsActionHelper.js'; + +export const mapStateToProps = ({softwareProduct: {softwareProductAttachments}}) => { + let {attachmentsTree, hoveredNode, selectedNode, errorList} = softwareProductAttachments; + return { + attachmentsTree, + hoveredNode, + selectedNode, + errorList + }; +}; + +const mapActionsToProps = (dispatch) => { + return { + toggleExpanded: (path) => SoftwareProductAttachmentsActionHelper.toggleExpanded(dispatch, {path}), + onSelectNode: (nodeName) => SoftwareProductAttachmentsActionHelper.onSelectNode(dispatch, {nodeName}), + onUnselectNode: () => SoftwareProductAttachmentsActionHelper.onUnselectNode(dispatch) + }; +}; + +export default connect(mapStateToProps, mapActionsToProps, null, {withRef: true})(SoftwareProductAttachmentsView); diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsActionHelper.js new file mode 100644 index 0000000000..a7f7a5173b --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsActionHelper.js @@ -0,0 +1,44 @@ +/*- + * ============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========================================================= + */ + +import {actionTypes} from './SoftwareProductAttachmentsConstants.js'; + +export default { + + toggleExpanded(dispatch, {path}) { + dispatch({ + type: actionTypes.TOGGLE_EXPANDED, + path + }); + }, + + onSelectNode(dispatch, {nodeName}) { + dispatch({ + type: actionTypes.SELECTED_NODE, + nodeName + }); + }, + + onUnselectNode(dispatch) { + dispatch({ + type: actionTypes.UNSELECTED_NODE + }); + } +}; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsConstants.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsConstants.js new file mode 100644 index 0000000000..33af476d9c --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsConstants.js @@ -0,0 +1,55 @@ +/*- + * ============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========================================================= + */ + +import keyMirror from 'nfvo-utils/KeyMirror.js'; +import i18n from 'nfvo-utils/i18n/i18n.js'; + +export const actionTypes = keyMirror({ + TOGGLE_EXPANDED: null, + SELECTED_NODE: null, + UNSELECTED_NODE: null +}); + +export const errorTypes = keyMirror({ + MISSING_FILE_IN_ZIP: i18n('missing file in zip'), + MISSING_FILE_IN_MANIFEST: i18n('missing file in manifest'), + MISSING_OR_ILLEGAL_FILE_TYPE_IN_MANIFEST: i18n('missing or illegal file type in manifest'), + FILE_IS_YML_WITHOUT_YML_EXTENSION: i18n('file is defined as a heat file but it doesn\'t have .yml or .yaml extension'), + FILE_IS_ENV_WITHOUT_ENV_EXTENSION: i18n('file is defined as an env file but it doesn\'t have .env extension'), + ILLEGAL_YAML_FILE_CONTENT: i18n('illegal yaml file content'), + ILLEGAL_HEAT_YAML_FILE_CONTENT: i18n('illegal HEAT yaml file content'), + MISSING_FILE_NAME_IN_MANIFEST: i18n('a file is written in manifest without file name'), + MISSING_ENV_FILE_IN_ZIP: i18n('missing env file in zip'), + ARTIFACT_NOT_IN_USE: i18n('artifact not in use') +}); + +export const nodeTypes = keyMirror({ + heat: i18n('Heat'), + volume: i18n('Volume'), + network: i18n('Network'), + artifact: i18n('Artifact'), + env: i18n('Environment'), + other: i18n('') +}); + +export const mouseActions = keyMirror({ + MOUSE_BUTTON_CLICK: 0 +}); + diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsReducer.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsReducer.js new file mode 100644 index 0000000000..5c5567b032 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsReducer.js @@ -0,0 +1,199 @@ +/*- + * ============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========================================================= + */ + +import {actionTypes as softwareProductsActionTypes} from 'sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js'; +import {actionTypes} from './SoftwareProductAttachmentsConstants.js'; + +const mapVolumeData = ({fileName, env, errors}) => ({ + name: fileName, + expanded: true, + type: 'volume', + children: env && [{ + name: env.fileName, + errors: env.errors, + type: 'env' + }], + errors +}); + +const mapNetworkData = ({fileName, env, errors}) => ({ + name: fileName, + expanded: true, + type: 'network', + children: env && [{ + name: env.fileName, + errors: env.errors, + type: 'env' + }], + errors +}); + +const mapArtifactsData = ({fileName, errors}) => ({ + name: fileName, + type: 'artifact', + errors +}); + +const mapOtherData = ({fileName, errors}) => ({ + name: fileName, + type: 'other', + errors +}); + + +const mapHeatData = ({fileName, env, nested, volume, network, artifacts, errors, other}) => ({ + name: fileName, + expanded: true, + type: 'heat', + errors, + children: [ + ...(volume ? volume.map(mapVolumeData) : []), + ...(network ? network.map(mapNetworkData) : []), + ...(env ? [{ + name: env.fileName, + errors: env.errors, + type: 'env' + }] : []), + ...(artifacts ? artifacts.map(mapArtifactsData) : []), + ...(other ? other.map(mapOtherData) : []), + ...(nested ? nested.map(mapHeatData) : []) + ] +}); + +function createErrorList(node, parent, deep = 0, errorList = []) { + if (node.errors) { + errorList.push(...node.errors.map((error) => ({ + errorLevel: error.level, + errorMessage: error.message, + name: node.name, + hasParent: deep > 2, + parentName: parent.name, + type: node.type, + }))); + } + if (node.children && node.children.length) { + node.children.map((child) => createErrorList(child, node, deep + 1, errorList)); + } + return errorList; +} + +const mapValidationDataToTree = validationData => { + let {HEAT, volume, network, artifacts, other} = validationData.importStructure || {}; + return { + children: [ + { + name: 'HEAT', + expanded: true, + type: 'heat', + children: (HEAT ? HEAT.map(mapHeatData) : []) + }, + ...(artifacts ? [{ + name: 'artifacts', + expanded: true, + type: 'artifact', + children: (artifacts ? artifacts.map(mapArtifactsData) : []) + }] : []), + ...(network ? [{ + name: 'networks', + expanded: true, + type: 'network', + children: (network ? network.map(mapNetworkData) : []), + }] : []), + ...(volume ? [{ + name: 'volume', + expanded: true, + type: 'volume', + children: (volume ? volume.map(mapVolumeData) : []), + }] : []), + ...(other ? [{ + name: 'other', + expanded: true, + type: 'other', + children: (other ? other.map(mapOtherData) : []), + }] : []) + ] + }; +}; + +const toggleExpanded = (node, path) => { + let newNode = {...node}; + if (path.length === 0) { + newNode.expanded = !node.expanded; + } else { + let index = path[0]; + newNode.children = [ + ...node.children.slice(0, index), + toggleExpanded(node.children[index], path.slice(1)), + ...node.children.slice(index + 1) + ]; + } + return newNode; +}; + +const expandSelected = (node, selectedNode) => { + let shouldExpand = node.name === selectedNode; + let children = node.children && node.children.map(child => { + let {shouldExpand: shouldExpandChild, node: newChild} = expandSelected(child, selectedNode); + shouldExpand = shouldExpand || shouldExpandChild; + return newChild; + }); + + return { + node: { + ...node, + expanded: node.expanded || shouldExpand, + children + }, + shouldExpand + }; +}; + +export default (state = {attachmentsTree: {}}, action) => { + switch (action.type) { + case softwareProductsActionTypes.SOFTWARE_PRODUCT_LOADED: + let currentSoftwareProduct = action.response; + let attachmentsTree = currentSoftwareProduct.validationData ? mapValidationDataToTree(currentSoftwareProduct.validationData) : {}; + let errorList = createErrorList(attachmentsTree); + return { + ...state, + attachmentsTree, + errorList + }; + case actionTypes.TOGGLE_EXPANDED: + return { + ...state, + attachmentsTree: toggleExpanded(state.attachmentsTree, action.path) + }; + case actionTypes.SELECTED_NODE: + let selectedNode = action.nodeName; + return { + ...state, + attachmentsTree: expandSelected(state.attachmentsTree, selectedNode).node, + selectedNode + }; + case actionTypes.UNSELECTED_NODE: + return { + ...state, + selectedNode: undefined + }; + default: + return state; + } +}; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsView.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsView.jsx new file mode 100644 index 0000000000..c52999ca46 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsView.jsx @@ -0,0 +1,182 @@ +import React from 'react'; +import FontAwesome from 'react-fontawesome'; +import classNames from 'classnames'; +import Collapse from 'react-bootstrap/lib/Collapse.js'; + +import i18n from 'nfvo-utils/i18n/i18n.js'; +import {nodeTypes, mouseActions} from './SoftwareProductAttachmentsConstants'; + +const typeToIcon = Object.freeze({ + heat: 'building-o', + volume: 'database', + network: 'cloud', + artifact: 'gear', + env: 'server', + other: 'cube' +}); + +const leftPanelWidth = 250; + +class SoftwareProductAttachmentsView extends React.Component { + + static propTypes = { + attachmentsTree: React.PropTypes.object.isRequired + }; + state = { + treeWidth: '400' + }; + + render() { + let {attachmentsTree, errorList} = this.props; + let {treeWidth} = this.state; + return ( +
      +
      +
      + { + attachmentsTree && attachmentsTree.children && attachmentsTree.children.map((child, ind) => this.renderNode(child, [ind])) + } +
      +
      +
      this.onChangeTreeWidth(e)} className='software-product-attachments-separator'/> + +
      + {errorList.length ? this.renderErrorList(errorList) :
      {attachmentsTree.children ? + i18n('VALIDATION SUCCESS') : i18n('THERE IS NO HEAT DATA TO PRESENT') }
      } +
      +
      + ); + } + + renderNode(node, path) { + let isFolder = node.children && node.children.length > 0; + let {onSelectNode} = this.props; + return ( +
      + { +
      this.props.toggleExpanded(path)} className={this.getTreeRowClassName(node.name)}> + { + isFolder && +
      this.props.toggleExpanded(path)} className={classNames('tree-node-expander', {'tree-node-expander-collapsed': !node.expanded})}> + +
      + } + { + + + + + } + { + + onSelectNode(node.name)} className={this.getTreeTextClassName(node)}> + {node.name} + + } +
      + } + { + isFolder && + +
      + { + node.children.map((child, ind) => this.renderNode(child, [...path, ind])) + } +
      +
      + } +
      + ); + } + + createErrorList(errorList, node, parent) { + if (node.errors) { + node.errors.forEach(error => errorList.push({ + error, + name: node.name, + parentName: parent.name, + type: node.type + })); + } + if (node.children && node.children.length) { + node.children.map((child) => this.createErrorList(errorList, child, node)); + } + } + + renderErrorList(errors) { + let prevError = {}; + let {selectedNode} = this.props; + return errors.map(error => { + let isSameNodeError = error.name === prevError.name && error.parentName === prevError.parentName; + prevError = error; + + return ( +
      this.selectNode(error.name)} + className={classNames('error-item', {'clicked': selectedNode === error.name, 'shifted': !isSameNodeError})}> + + { + error.hasParent ? + i18n('{type} {name} in {parentName}: ', { + type: nodeTypes[error.type], + name: error.name, + parentName: error.parentName + }) : + i18n('{type} {name}: ', { + type: nodeTypes[error.type], + name: error.name + }) + } + + {error.errorMessage} +
      + ); + }); + } + + selectNode(currentSelectedNode) { + let {onUnselectNode, onSelectNode, selectedNode} = this.props; + if (currentSelectedNode !== selectedNode) { + onSelectNode(currentSelectedNode); + }else{ + onUnselectNode(); + } + + } + + getTreeRowClassName(name) { + let {hoveredNode, selectedNode} = this.props; + return classNames({ + 'tree-node-row': true, + 'tree-node-selected': name === hoveredNode, + 'tree-node-clicked': name === selectedNode + }); + } + + getTreeTextClassName(node) { + let {selectedNode} = this.props; + return classNames({ + 'tree-element-text': true, + 'error-status': node.errors, + 'error-status-selected': node.name === selectedNode + }); + } + + onChangeTreeWidth(e) { + if (e.button === mouseActions.MOUSE_BUTTON_CLICK) { + let onMouseMove = (e) => { + this.setState({treeWidth: e.clientX - leftPanelWidth}); + }; + let onMouseUp = () => { + document.removeEventListener('mousemove', onMouseMove); + document.removeEventListener('mouseup', onMouseUp); + }; + document.addEventListener('mousemove', onMouseMove); + document.addEventListener('mouseup', onMouseUp); + } + } +} + +export default SoftwareProductAttachmentsView; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/SoftwareProductComponentEditorReducer.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/SoftwareProductComponentEditorReducer.js new file mode 100644 index 0000000000..3b8bc4f171 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/SoftwareProductComponentEditorReducer.js @@ -0,0 +1,47 @@ +/*- + * ============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========================================================= + */ + +import {actionTypes} from './SoftwareProductComponentsConstants.js'; + +export default (state = {}, action) => { + switch (action.type) { + case actionTypes.COMPONENT_UPDATE: + return { + ...state, + data: action.component + }; + case actionTypes.COMPONENT_QUESTIONNAIRE_UPDATE: + return { + ...state, + qdata: action.payload.qdata || state.qdata, + qschema: action.payload.qschema || state.qschema + }; + case actionTypes.COMPONENT_DATA_CHANGED: + return { + ...state, + data: { + ...state.data, + ...action.deltaData + } + }; + default: + return state; + } +}; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/SoftwareProductComponentsActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/SoftwareProductComponentsActionHelper.js new file mode 100644 index 0000000000..e53b2ecafe --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/SoftwareProductComponentsActionHelper.js @@ -0,0 +1,129 @@ +/*- + * ============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========================================================= + */ + +import RestAPIUtil from 'nfvo-utils/RestAPIUtil.js'; +import Configuration from 'sdc-app/config/Configuration.js'; + +import {actionTypes} from './SoftwareProductComponentsConstants.js'; + +function baseUrl(softwareProductId) { + const restPrefix = Configuration.get('restPrefix'); + return `${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/components`; +} + +function fetchSoftwareProductComponents(softwareProductId, version) { + let versionQuery = version ? `?version=${version}` : ''; + return RestAPIUtil.fetch(`${baseUrl(softwareProductId)}${versionQuery}`); +} + +function putSoftwareProductComponentQuestionnaire(softwareProductId, vspComponentId, vspComponent) { + return RestAPIUtil.save(`${baseUrl(softwareProductId)}/${vspComponentId}/questionnaire`, vspComponent); +} + +function fetchSoftwareProductComponentQuestionnaire(softwareProductId, vspComponentId, version){ + let versionQuery = version ? `?version=${version}` : ''; + return RestAPIUtil.fetch(`${baseUrl(softwareProductId)}/${vspComponentId}/questionnaire${versionQuery}`); +} + +function fetchSoftwareProductComponent(softwareProductId, vspComponentId, version){ + let versionQuery = version ? `?version=${version}` : ''; + return RestAPIUtil.fetch(`${baseUrl(softwareProductId)}/${vspComponentId}${versionQuery}`); +} + +function putSoftwareProductComponent(softwareProductId, vspComponentId, vspComponent) { + return RestAPIUtil.save(`${baseUrl(softwareProductId)}/${vspComponentId}`, { + name: vspComponent.name, + displayName: vspComponent.displayName, + description: vspComponent.description + }); +} + +const SoftwareProductComponentsActionHelper = { + fetchSoftwareProductComponents(dispatch, {softwareProductId, version}) { + return fetchSoftwareProductComponents(softwareProductId, version).then(response => { + dispatch({ + type: actionTypes.COMPONENTS_LIST_UPDATE, + componentsList: response.results + }); + }); + }, + + componentDataChanged(dispatch, {deltaData}) { + dispatch({ + type: actionTypes.COMPONENT_DATA_CHANGED, + deltaData + }); + }, + + + updateSoftwareProductComponent(dispatch, {softwareProductId, vspComponentId, componentData, qdata}) { + return Promise.all([ + SoftwareProductComponentsActionHelper.updateSoftwareProductComponentQuestionnaire(dispatch, {softwareProductId, vspComponentId, qdata}), + SoftwareProductComponentsActionHelper.updateSoftwareProductComponentData(dispatch, {softwareProductId, vspComponentId, componentData}) + ]); + }, + + updateSoftwareProductComponentQuestionnaire(dispatch, {softwareProductId, vspComponentId, qdata}) { + return putSoftwareProductComponentQuestionnaire(softwareProductId, vspComponentId, qdata); + }, + + updateSoftwareProductComponentData(dispatch, {softwareProductId, vspComponentId, componentData}) { + return putSoftwareProductComponent(softwareProductId, vspComponentId, componentData).then(() => dispatch({ + type: actionTypes.COMPONENTS_LIST_EDIT, + component: { + id: vspComponentId, + ...componentData + } + })); + }, + + + fetchSoftwareProductComponentQuestionnaire(dispatch, {softwareProductId, vspComponentId, version}) { + return fetchSoftwareProductComponentQuestionnaire(softwareProductId, vspComponentId, version).then(response => { + dispatch({ + type: actionTypes.COMPONENT_QUESTIONNAIRE_UPDATE, + payload: { + qdata: response.data ? JSON.parse(response.data) : {}, + qschema: JSON.parse(response.schema) + } + }); + }); + }, + + fetchSoftwareProductComponent(dispatch, {softwareProductId, vspComponentId, version}) { + return fetchSoftwareProductComponent(softwareProductId, vspComponentId, version).then(response => { + dispatch({ + type: actionTypes.COMPONENT_UPDATE, + component: response.data + }); + }); + }, + + componentQuestionnaireUpdated(dispatch, {data}) { + dispatch({ + type: actionTypes.COMPONENT_QUESTIONNAIRE_UPDATE, + payload: { + qdata: data + } + }); + }, +}; + +export default SoftwareProductComponentsActionHelper; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/SoftwareProductComponentsConstants.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/SoftwareProductComponentsConstants.js new file mode 100644 index 0000000000..dee517e5d1 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/SoftwareProductComponentsConstants.js @@ -0,0 +1,46 @@ +/*- + * ============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========================================================= + */ + +import keyMirror from 'nfvo-utils/KeyMirror.js'; + +export const actionTypes = keyMirror({ + COMPONENTS_LIST_UPDATE: null, + COMPONENTS_LIST_EDIT: null, + COMPONENT_UPDATE: null, + COMPONENT_DATA_CHANGED: null, + COMPONENT_QUESTIONNAIRE_UPDATE: null +}); + +export const storageConstants = keyMirror({ + backupType: { + ON_SITE: 'OnSite', + OFF_SITE: 'OffSite' + } +}); + +export const navigationItems = keyMirror({ + STORAGE: 'Storage', + PROCESS_DETAILS: 'Process Details', + MONITORING: 'Monitoring', + NETWORK: 'Network', + COMPUTE: 'Compute', + NETWORK: 'Network', + LOAD_BALANCING: 'High Availability & Load Balancing' +}); diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/SoftwareProductComponentsList.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/SoftwareProductComponentsList.js new file mode 100644 index 0000000000..f1c1ed1fcc --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/SoftwareProductComponentsList.js @@ -0,0 +1,48 @@ +/*- + * ============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========================================================= + */ + +import {connect} from 'react-redux'; +import SoftwareProductComponentsListView from './SoftwareProductComponentsListView.jsx'; +import OnboardingActionHelper from 'sdc-app/onboarding/OnboardingActionHelper.js'; +import VersionControllerUtils from 'nfvo-components/panel/versionController/VersionControllerUtils.js'; + + +const mapStateToProps = ({softwareProduct}) => { + let {softwareProductEditor: {data: currentSoftwareProduct}, softwareProductComponents} = softwareProduct; + let {componentsList} = softwareProductComponents; + let isReadOnlyMode = VersionControllerUtils.isReadOnly(currentSoftwareProduct); + + return { + currentSoftwareProduct, + isReadOnlyMode, + componentsList + }; +}; + + +const mapActionToProps = (dispatch, {version}) => { + return { + onComponentSelect: ({id: softwareProductId, componentId}) => { + OnboardingActionHelper.navigateToSoftwareProductComponentGeneralAndUpdateLeftPanel(dispatch, {softwareProductId, componentId, version }); + } + }; +}; + +export default connect(mapStateToProps, mapActionToProps, null, {withRef: true})(SoftwareProductComponentsListView); diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/SoftwareProductComponentsListReducer.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/SoftwareProductComponentsListReducer.js new file mode 100644 index 0000000000..b91362a0cf --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/SoftwareProductComponentsListReducer.js @@ -0,0 +1,33 @@ +/*- + * ============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========================================================= + */ + +import {actionTypes} from './SoftwareProductComponentsConstants.js'; + +export default (state = [], action) => { + switch (action.type) { + case actionTypes.COMPONENTS_LIST_UPDATE: + return [...action.componentsList]; + case actionTypes.COMPONENTS_LIST_EDIT: + const indexForEdit = state.findIndex(component => component.id === action.component.id); + return [...state.slice(0, indexForEdit), action.component, ...state.slice(indexForEdit + 1)]; + default: + return state; + } +}; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/SoftwareProductComponentsListView.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/SoftwareProductComponentsListView.jsx new file mode 100644 index 0000000000..0c0ba0f646 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/SoftwareProductComponentsListView.jsx @@ -0,0 +1,89 @@ +import React from 'react'; + +import i18n from 'nfvo-utils/i18n/i18n.js'; +import ListEditorView from 'nfvo-components/listEditor/ListEditorView.jsx'; +import ListEditorItemView from 'nfvo-components/listEditor/ListEditorItemView.jsx'; + +const ComponentPropType = React.PropTypes.shape({ + id: React.PropTypes.string, + name: React.PropTypes.string, + displayName: React.PropTypes.string, + description: React.PropTypes.string +}); + +class SoftwareProductComponentsListView extends React.Component { + + state = { + localFilter: '' + }; + + static propTypes = { + isReadOnlyMode: React.PropTypes.bool, + componentsList: React.PropTypes.arrayOf(ComponentPropType), + onComponentSelect: React.PropTypes.func + }; + + render() { + let {componentsList = []} = this.props; + return ( +
      + { + componentsList.length > 0 && this.renderComponents() + } +
      + ); + } + + renderComponents() { + const {localFilter} = this.state; + let {isReadOnlyMode} = this.props; + + return ( + this.setState({localFilter: filter})} + isReadOnlyMode={isReadOnlyMode}> + {this.filterList().map(component => this.renderComponentsListItem(component))} + + ); + } + + renderComponentsListItem(component) { + let {id: componentId, name, displayName, description = ''} = component; + let {currentSoftwareProduct: {id}, onComponentSelect} = this.props; + return ( + onComponentSelect({id, componentId})}> +
      +
      {i18n('Component')}
      +
      {displayName}
      +
      +
      +
      {i18n('Description')}
      +
      {description}
      +
      +
      + ); + } + + filterList() { + let {componentsList = []} = this.props; + + let {localFilter} = this.state; + if (localFilter.trim()) { + const filter = new RegExp(escape(localFilter), 'i'); + return componentsList.filter(({displayName = '', description = ''}) => { + return escape(displayName).match(filter) || escape(description).match(filter); + }); + } + else { + return componentsList; + } + } +} + +export default SoftwareProductComponentsListView; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/compute/SoftwareProductComponentCompute.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/compute/SoftwareProductComponentCompute.js new file mode 100644 index 0000000000..7ac1c707ab --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/compute/SoftwareProductComponentCompute.js @@ -0,0 +1,52 @@ +/*- + * ============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========================================================= + */ + +import {connect} from 'react-redux'; +import SoftwareProductComponentComputeView from './SoftwareProductComponentComputeView.jsx'; +import SoftwareProductComponentsActionHelper from 'sdc-app/onboarding/softwareProduct/components/SoftwareProductComponentsActionHelper.js'; +import VersionControllerUtils from 'nfvo-components/panel/versionController/VersionControllerUtils.js'; + + +const mapStateToProps = ({softwareProduct}) => { + let {softwareProductEditor: {data: currentVSP}, softwareProductComponents} = softwareProduct; + let {componentEditor: {qdata, qschema}} = softwareProductComponents; + let isReadOnlyMode = VersionControllerUtils.isReadOnly(currentVSP); + + let minNumberOfVMsSelectedByUser = 0; + if(qdata && qdata.compute && qdata.compute.numOfVMs){ + minNumberOfVMsSelectedByUser = qdata.compute.numOfVMs.minimum || 0; + } + + return { + qdata, + qschema, + isReadOnlyMode, + minNumberOfVMsSelectedByUser + }; +}; + +const mapActionToProps = (dispatch, {softwareProductId, componentId}) => { + return { + onQDataChanged: ({data}) => SoftwareProductComponentsActionHelper.componentQuestionnaireUpdated(dispatch, {data}), + onSubmit: ({qdata}) =>{ return SoftwareProductComponentsActionHelper.updateSoftwareProductComponentQuestionnaire(dispatch, {softwareProductId, vspComponentId: componentId, qdata});} + }; +}; + +export default connect(mapStateToProps, mapActionToProps, null, {withRef: true}) (SoftwareProductComponentComputeView); diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/compute/SoftwareProductComponentComputeView.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/compute/SoftwareProductComponentComputeView.jsx new file mode 100644 index 0000000000..3bad147117 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/compute/SoftwareProductComponentComputeView.jsx @@ -0,0 +1,129 @@ +import React from 'react'; +import i18n from 'nfvo-utils/i18n/i18n.js'; +import ValidationForm from 'nfvo-components/input/validation/ValidationForm.jsx'; +import ValidationInput from'nfvo-components/input/validation/ValidationInput.jsx'; + + +class SoftwareProductComponentComputeView extends React.Component { + + static propTypes = { + qdata: React.PropTypes.object, + qschema: React.PropTypes.object, + isReadOnlyMode: React.PropTypes.bool, + minNumberOfVMsSelectedByUser: React.PropTypes.number, + onQDataChanged: React.PropTypes.func.isRequired, + onSubmit: React.PropTypes.func.isRequired + }; + + render() { + let {qdata, qschema, isReadOnlyMode, minNumberOfVMsSelectedByUser, onQDataChanged, onSubmit} = this.props; + + return ( +
      + onSubmit({qdata})} + className='component-questionnaire-validation-form' + isReadOnlyMode={isReadOnlyMode} + onDataChanged={onQDataChanged} + data={qdata} + schema={qschema}> + +
      {i18n('VM Sizing')}
      +
      +
      +
      + +
      +
      + +
      +
      + +
      + +
      +
      +
      {i18n('Number of VMs')}
      +
      +
      +
      + +
      +
      + +
      +
      + +
      + +
      +
      + +
      {i18n('Guest OS')}
      +
      +
      +
      + +
      +
      +
      +
      + +
      + +
      +
      +
      +
      + +
      +
      +
      +
      + +
      + ); + } + + save(){ + return this.refs.computeValidationForm.handleFormSubmit(new Event('dummy')); + } +} + +export default SoftwareProductComponentComputeView; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/general/SoftwareProductComponentsGeneral.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/general/SoftwareProductComponentsGeneral.js new file mode 100644 index 0000000000..e4c330bec8 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/general/SoftwareProductComponentsGeneral.js @@ -0,0 +1,52 @@ +/*- + * ============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========================================================= + */ + +import {connect} from 'react-redux'; +import SoftwareProductComponentsGeneralView from './SoftwareProductComponentsGeneralView.jsx'; +import SoftwareProductComponentsActionHelper from '../SoftwareProductComponentsActionHelper.js'; +import VersionControllerUtils from 'nfvo-components/panel/versionController/VersionControllerUtils.js'; + +export const mapStateToProps = ({softwareProduct}) => { + let {softwareProductEditor: {data: currentVSP}, softwareProductComponents} = softwareProduct; + let {componentEditor: {data: componentData = {} , qdata, qschema}} = softwareProductComponents; + + let isReadOnlyMode = VersionControllerUtils.isReadOnly(currentVSP); + + return { + componentData, + qdata, + qschema, + isReadOnlyMode + }; +}; + + +const mapActionsToProps = (dispatch, {softwareProductId, componentId}) => { + return { + onDataChanged: deltaData => SoftwareProductComponentsActionHelper.componentDataChanged(dispatch, {deltaData}), + onQDataChanged: ({data}) => SoftwareProductComponentsActionHelper.componentQuestionnaireUpdated(dispatch, {data}), + onSubmit: ({componentData, qdata}) => { return SoftwareProductComponentsActionHelper.updateSoftwareProductComponent(dispatch, + {softwareProductId, vspComponentId: componentId, componentData, qdata}); + } + }; + +}; + +export default connect(mapStateToProps, mapActionsToProps, null, {withRef: true})(SoftwareProductComponentsGeneralView); diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/general/SoftwareProductComponentsGeneralView.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/general/SoftwareProductComponentsGeneralView.jsx new file mode 100644 index 0000000000..5d11e42cd3 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/general/SoftwareProductComponentsGeneralView.jsx @@ -0,0 +1,186 @@ +import React from 'react'; +import i18n from 'nfvo-utils/i18n/i18n.js'; + +import ValidationForm from 'nfvo-components/input/validation/ValidationForm.jsx'; +import ValidationInput from'nfvo-components/input/validation/ValidationInput.jsx'; + + +class SoftwareProductComponentsGeneralView extends React.Component { + + render() { + let {qdata, qschema, onQDataChanged, onDataChanged, componentData: {displayName, description}, isReadOnlyMode} = this.props; + return( +
      +
      + +
      +

      {i18n('General')}

      +
      +
      + {/** disabled until backend will be ready to implement it +
      +
      + +
      {name}
      +
      +
      + + */} +
      + +
      +
      + onDataChanged({description})} + disabled={isReadOnlyMode} + value={description} + type='textarea'/> +
      +
      +
      +
      +
      + + { + qschema && + +

      {i18n('Hypervisor')}

      +
      +
      +
      + +
      +
      + +
      +
      +
      +
      +
      + +
      +
      +
      +
      +

      {i18n('Image')}

      +
      +
      +
      + +
      +
      + +
      +
      + +
      + +
      +
      +

      {i18n('Recovery')}

      +
      +
      +
      + +
      + +
      +
      + + +
      +
      + +
      +
      + { + /** disabled until backend will be ready to implement it +
      +
      + +
      +
      + */ + } +
      +
      +

      {i18n('DNS Configuration')}

      +
      +
      +
      + +
      +
      +
      +
      +

      {i18n('Clone')}

      +
      +
      +
      + +
      +
      +
      +
      + + } +
      +
      + ); + } + + save() { + let {onSubmit, componentData, qdata} = this.props; + return onSubmit({componentData, qdata}); + } +} + +export default SoftwareProductComponentsGeneralView; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/loadBalancing/SoftwareProductComponentLoadBalancing.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/loadBalancing/SoftwareProductComponentLoadBalancing.js new file mode 100644 index 0000000000..4d4034de5b --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/loadBalancing/SoftwareProductComponentLoadBalancing.js @@ -0,0 +1,47 @@ +/*- + * ============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========================================================= + */ + +import {connect} from 'react-redux'; +import SoftwareProductComponentLoadBalancingView from './SoftwareProductComponentLoadBalancingRefView.jsx'; +import SoftwareProductComponentsActionHelper from '../SoftwareProductComponentsActionHelper.js'; +import VersionControllerUtils from 'nfvo-components/panel/versionController/VersionControllerUtils.js'; + +export const mapStateToProps = ({softwareProduct}) => { + let {softwareProductEditor: {data: currentVSP}, softwareProductComponents} = softwareProduct; + let {componentEditor: {qdata, qschema}} = softwareProductComponents; + let isReadOnlyMode = VersionControllerUtils.isReadOnly(currentVSP); + + return { + qdata, + qschema, + isReadOnlyMode + }; +}; + + +const mapActionsToProps = (dispatch, {softwareProductId, componentId}) => { + return { + onQDataChanged: ({data}) => SoftwareProductComponentsActionHelper.componentQuestionnaireUpdated(dispatch, {data}), + onSubmit: ({qdata}) =>{ return SoftwareProductComponentsActionHelper.updateSoftwareProductComponentQuestionnaire(dispatch, {softwareProductId, vspComponentId: componentId, qdata});} + }; + +}; + +export default connect(mapStateToProps, mapActionsToProps, null, {withRef: true})(SoftwareProductComponentLoadBalancingView); diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/loadBalancing/SoftwareProductComponentLoadBalancingRefView.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/loadBalancing/SoftwareProductComponentLoadBalancingRefView.jsx new file mode 100644 index 0000000000..1aa2babc12 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/loadBalancing/SoftwareProductComponentLoadBalancingRefView.jsx @@ -0,0 +1,103 @@ +import React from 'react'; +import FontAwesome from 'react-fontawesome'; +import i18n from 'nfvo-utils/i18n/i18n.js'; + +import ValidationForm from 'nfvo-components/input/validation/ValidationForm.jsx'; +import ValidationInput from'nfvo-components/input/validation/ValidationInput.jsx'; + +const prefix = '/highAvailabilityAndLoadBalancing/'; + +const pointers = [ + { + key: 'failureLoadDistribution', + description: 'How is load distributed across live vms in the event of a vm/host failure? please describe' + }, + { + key: 'nkModelImplementation', + description: 'Does each VM implement the N+K model for redundancy and failure protection? Please describe.' + }, + { + key: 'architectureChoice', + description: 'What architecture is being implemented: ACTIVE-ACTIVE and/or ACTIVE-PASSIVE. ', + added: 'Will the arrangement be 1-1 or N-M? Please describe.' + }, + {key: 'slaRequirements', description: 'Specify application SLA requirements on Cloud platform.'}, + { + key: 'horizontalScaling', + description: 'Is horizontal scaling the preferred solution for HA and resiliency? Please describe.' + }, + { + key: 'loadDistributionMechanism', + description: 'Can load be distributed across VMs? If so, are special mechanisms needed to re-balance data across VMs?', + added: 'Please describe.' + } +]; + +class SoftwareProductComponentLoadBalancingView extends React.Component { + static propTypes = { + componentId: React.PropTypes.string.isRequired, + softwareProductId: React.PropTypes.string.isRequired, + qdata: React.PropTypes.object, + qschema: React.PropTypes.object, + currentSoftwareProduct: React.PropTypes.object + }; + + state = { + expanded: {} + }; + + renderTextAreaItem(item) { + return ( +
      +
      this.toggle(item.key)}> + + {i18n(item.description)} + {item.added &&
      {i18n(item.added)}
      } +
      +
      +
      +
      + +
      +
      +
      +
      + ); + } + + render() { + let {qdata, qschema, onQDataChanged, isReadOnlyMode} = this.props; + return ( +
      +
      +
      {i18n('High Availability & Load Balancing')}
      + + {pointers.map(pointer => this.renderTextAreaItem(pointer))} + +
      +
      + ); + } + + toggle(name) { + let st = this.state.expanded[name] ? true : false; + let newState = {...this.state}; + newState.expanded[name] = !st; + this.setState(newState); + } + + save() { + let {onSubmit, qdata} = this.props; + return onSubmit({qdata}); + } +} + +export default SoftwareProductComponentLoadBalancingView; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoring.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoring.js new file mode 100644 index 0000000000..ed7c5a116a --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoring.js @@ -0,0 +1,59 @@ +/*- + * ============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========================================================= + */ + +import {connect} from 'react-redux'; +import VersionControllerUtils from 'nfvo-components/panel/versionController/VersionControllerUtils.js'; +import SoftwareProductComponentsMonitoringView from './SoftwareProductComponentsMonitoringView.jsx'; +import SoftwareProductComponentsMonitoringAction from './SoftwareProductComponentsMonitoringActionHelper.js'; + + +export const mapStateToProps = ({softwareProduct}) => { + + let {softwareProductEditor: {data:currentVSP = {}}, softwareProductComponents: {monitoring}} = softwareProduct; + let {trapFilename, pollFilename} = monitoring; + let isReadOnlyMode = VersionControllerUtils.isReadOnly(currentVSP); + + return { + isReadOnlyMode, + trapFilename, + pollFilename + }; +}; + +const mapActionsToProps = (dispatch, {softwareProductId, componentId}) => { + return { + onDropMibFileToUpload: (formData, type) => + SoftwareProductComponentsMonitoringAction.uploadSnmpFile(dispatch, { + softwareProductId, + componentId, + formData, + type + }), + + onDeleteSnmpFile: type => SoftwareProductComponentsMonitoringAction.deleteSnmpFile(dispatch, { + softwareProductId, + componentId, + type + }) + + }; +}; + +export default connect(mapStateToProps, mapActionsToProps, null, {withRef: true})(SoftwareProductComponentsMonitoringView); diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoringActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoringActionHelper.js new file mode 100644 index 0000000000..3faf571c09 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoringActionHelper.js @@ -0,0 +1,110 @@ +/*- + * ============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========================================================= + */ + +import i18n from 'nfvo-utils/i18n/i18n.js'; +import RestAPIUtil from 'nfvo-utils/RestAPIUtil.js'; +import NotificationConstants from 'nfvo-components/notifications/NotificationConstants.js'; +import Configuration from 'sdc-app/config/Configuration.js'; +import SoftwareProductComponentsMonitoringConstants, {actionTypes} from './SoftwareProductComponentsMonitoringConstants.js'; + +const UPLOAD = true; + +function baseUrl(vspId, componentId) { + const restPrefix = Configuration.get('restPrefix'); + return `${restPrefix}/v1.0/vendor-software-products/${vspId}/components/${componentId}/monitors`; +} + +function snmpTrapUrl(vspId, componentId, isUpload) { + return `${baseUrl(vspId, componentId)}/snmp-trap${isUpload ? '/upload' : ''}`; +} + +function snmpPollUrl(vspId, componentId, isUpload) { + return `${baseUrl(vspId, componentId)}/snmp${isUpload ? '/upload' : ''}`; +} + +let onInvalidFileSizeUpload = (dispatch) => dispatch({ + type: NotificationConstants.NOTIFY_ERROR, + data: { + title: i18n('Upload Failed'), + msg: i18n('no zip file was uploaded or zip file doesn\'t exist') + } +}); + +let uploadSnmpTrapFile = (dispatch, {softwareProductId, componentId, formData}) => { + RestAPIUtil.create(snmpTrapUrl(softwareProductId, componentId, UPLOAD), formData).then(()=> dispatch({ + type: actionTypes.SNMP_TRAP_UPLOADED, data: {filename: formData.get('upload').name} + })); +}; + +let uploadSnmpPollFile = (dispatch, {softwareProductId, componentId, formData}) => { + RestAPIUtil.create(snmpPollUrl(softwareProductId, componentId, UPLOAD), formData).then(()=> dispatch({ + type: actionTypes.SNMP_POLL_UPLOADED, data: {filename: formData.get('upload').name} + })); +}; + +let deleteSnmpTrapFile = (dispatch, {softwareProductId, componentId}) => { + RestAPIUtil.destroy(snmpTrapUrl(softwareProductId, componentId, !UPLOAD)).then(()=> dispatch({ + type: actionTypes.SNMP_TRAP_DELETED + })); +}; + +let deleteSnmpPollFile = (dispatch, {softwareProductId, componentId}) => { + RestAPIUtil.destroy(snmpPollUrl(softwareProductId, componentId, !UPLOAD)).then(()=> dispatch({ + type: actionTypes.SNMP_POLL_DELETED + })); +}; + +const SoftwareProductComponentsMonitoringAction = { + + fetchExistingFiles(dispatch, {softwareProductId, componentId}){ + RestAPIUtil.fetch(`${baseUrl(softwareProductId, componentId)}/snmp`).then(response => + dispatch({ + type: actionTypes.SNMP_FILES_DATA_CHANGE, + data: {trapFilename: response.snmpTrap, pollFilename: response.snmpPoll} + }) + ); + }, + + uploadSnmpFile(dispatch, {softwareProductId, componentId, formData, type}){ + if (formData.get('upload').size) { + if (type === SoftwareProductComponentsMonitoringConstants.SNMP_TRAP) { + uploadSnmpTrapFile(dispatch, {softwareProductId, componentId, formData}); + } + else { + uploadSnmpPollFile(dispatch, {softwareProductId, componentId, formData}); + } + } + else { + onInvalidFileSizeUpload(dispatch); + } + }, + + deleteSnmpFile(dispatch, {softwareProductId, componentId, type}){ + if (type === SoftwareProductComponentsMonitoringConstants.SNMP_TRAP) { + deleteSnmpTrapFile(dispatch, {softwareProductId, componentId}); + } + else { + deleteSnmpPollFile(dispatch, {softwareProductId, componentId}); + } + } + +}; + +export default SoftwareProductComponentsMonitoringAction; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoringConstants.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoringConstants.js new file mode 100644 index 0000000000..eeececb050 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoringConstants.js @@ -0,0 +1,38 @@ +/*- + * ============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========================================================= + */ + +import keyMirror from 'nfvo-utils/KeyMirror.js'; + +export const actionTypes = keyMirror({ + + SNMP_FILES_DATA_CHANGE: null, + + SNMP_TRAP_UPLOADED: null, + SNMP_POLL_UPLOADED: null, + + SNMP_TRAP_DELETED: null, + SNMP_POLL_DELETED: null +}); + +export default keyMirror({ + SNMP_TRAP: null, + SNMP_POLL: null +}); + diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoringReducer.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoringReducer.js new file mode 100644 index 0000000000..72e0a85b10 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoringReducer.js @@ -0,0 +1,54 @@ +/*- + * ============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========================================================= + */ + +import {actionTypes} from './SoftwareProductComponentsMonitoringConstants.js'; + +export default (state = {}, action) => { + switch (action.type) { + case actionTypes.SNMP_FILES_DATA_CHANGE: + return { + ...state, + trapFilename: action.data.trapFilename, + pollFilename: action.data.pollFilename + }; + case actionTypes.SNMP_TRAP_UPLOADED: + return { + ...state, + trapFilename: action.data.filename + }; + case actionTypes.SNMP_POLL_UPLOADED: + return { + ...state, + pollFilename: action.data.filename + }; + case actionTypes.SNMP_TRAP_DELETED: + return { + ...state, + trapFilename: undefined + }; + case actionTypes.SNMP_POLL_DELETED: + return { + ...state, + pollFilename: undefined + }; + default: + return state; + } +}; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoringView.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoringView.jsx new file mode 100644 index 0000000000..ca090c5f2f --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoringView.jsx @@ -0,0 +1,117 @@ +import React, {Component, PropTypes} from 'react'; +import Dropzone from 'react-dropzone'; +import ButtonGroup from 'react-bootstrap/lib/ButtonGroup.js'; +import ButtonToolbar from 'react-bootstrap/lib/ButtonToolbar.js'; +import Button from 'react-bootstrap/lib/Button.js'; +import i18n from 'nfvo-utils/i18n/i18n.js'; +import SoftwareProductComponentsMonitoringConstants from './SoftwareProductComponentsMonitoringConstants.js'; + +class SoftwareProductComponentsMonitoringView extends Component { + + static propTypes = { + isReadOnlyMode: PropTypes.bool, + trapFilename: PropTypes.string, + pollFilename: PropTypes.string, + softwareProductId: PropTypes.string, + + onDropMibFileToUpload: PropTypes.func, + onDeleteSnmpFile: PropTypes.func + }; + + state = { + dragging: false + }; + + + render() { + return ( +
      + {this.renderDropzoneWithType(SoftwareProductComponentsMonitoringConstants.SNMP_TRAP)} + {this.renderDropzoneWithType(SoftwareProductComponentsMonitoringConstants.SNMP_POLL)} +
      + ); + } + + renderDropzoneWithType(type) { + let {isReadOnlyMode, trapFilename, pollFilename} = this.props; + let fileName; + if (type === SoftwareProductComponentsMonitoringConstants.SNMP_TRAP) { + fileName = trapFilename; + } + else { + fileName = pollFilename; + } + let refAndName = `fileInput${type.toString()}`; + let typeDisplayName = this.getFileTypeDisplayName(type); + return ( + this.handleImport(files, {isReadOnlyMode, type, refAndName})} + onDragEnter={() => this.handleOnDragEnter(isReadOnlyMode)} + onDragLeave={() => this.setState({dragging:false})} + multiple={false} + disableClick={true} + ref={refAndName} + name={refAndName} + accept='.zip' + disabled> +
      +
      {typeDisplayName}
      + {fileName ? this.renderUploadedFileName(fileName, type) : this.renderUploadButton(refAndName)} +
      +
      + ); + } + + renderUploadButton(refAndName) { + let {isReadOnlyMode} = this.props; + return ( +
      +
      {i18n('Drag & drop for upload')}
      +
      {i18n('or')}
      +
      this.refs[refAndName].open()}> + {i18n('Select file')} +
      +
      + ); + } + + renderUploadedFileName(filename, type) { + return ( + + + + + + + ); + } + + + handleOnDragEnter(isReadOnlyMode) { + if (!isReadOnlyMode) { + this.setState({dragging: true}); + } + } + + handleImport(files, {isReadOnlyMode, type, refAndName}) { + if (isReadOnlyMode) { + return; + } + + this.setState({dragging: false}); + let file = files[0]; + let formData = new FormData(); + formData.append('upload', file); + this.refs[refAndName].value = ''; + this.props.onDropMibFileToUpload(formData, type); + } + + getFileTypeDisplayName(type) { + return type === SoftwareProductComponentsMonitoringConstants.SNMP_TRAP ? 'SNMP Trap' : 'SNMP Poll'; + } + +} + +export default SoftwareProductComponentsMonitoringView; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNICEditor.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNICEditor.js new file mode 100644 index 0000000000..a412456e13 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNICEditor.js @@ -0,0 +1,54 @@ +/*- + * ============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========================================================= + */ + +import {connect} from 'react-redux'; +import SoftwareProductComponentsNetworkActionHelper from './SoftwareProductComponentsNetworkActionHelper.js'; +import SoftwareProductComponentsNICEditorView from './SoftwareProductComponentsNICEditorView.jsx'; +import VersionControllerUtils from 'nfvo-components/panel/versionController/VersionControllerUtils.js'; + +export const mapStateToProps = ({softwareProduct}) => { + + let {softwareProductEditor: {data:currentSoftwareProduct = {}, isValidityData = true}, softwareProductComponents} = softwareProduct; + + let {network: {nicEditor = {}}} = softwareProductComponents; + let {data, qdata, qschema} = nicEditor; + let isReadOnlyMode = VersionControllerUtils.isReadOnly(currentSoftwareProduct); + + return { + currentSoftwareProduct, + isValidityData, + data, + qdata, + qschema, + isReadOnlyMode + }; + +}; + +const mapActionsToProps = (dispatch, {softwareProductId, componentId}) => { + return { + onDataChanged: deltaData => SoftwareProductComponentsNetworkActionHelper.updateNICData(dispatch, {deltaData}), + onSubmit: ({data, qdata}) => SoftwareProductComponentsNetworkActionHelper.saveNICDataAndQuestionnaire(dispatch, {softwareProductId, componentId, data, qdata}), + onCancel: () => SoftwareProductComponentsNetworkActionHelper.closeNICEditor(dispatch), + onQDataChanged: ({data}) => SoftwareProductComponentsNetworkActionHelper.updateNICQuestionnaire(dispatch, {data}) + }; +}; + +export default connect(mapStateToProps, mapActionsToProps)(SoftwareProductComponentsNICEditorView); diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNICEditorReducer.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNICEditorReducer.js new file mode 100644 index 0000000000..d49f9ccb1e --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNICEditorReducer.js @@ -0,0 +1,49 @@ +/*- + * ============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========================================================= + */ + +import {actionTypes} from './SoftwareProductComponentsNetworkConstants.js'; + +export default (state = {}, action) => { + switch (action.type) { + case actionTypes.NICEditor.OPEN: + return { + ...state, + data: action.nic + }; + case actionTypes.NICEditor.CLOSE: + return {}; + case actionTypes.NICEditor.NIC_QUESTIONNAIRE_UPDATE: + return { + ...state, + qdata: action.payload.qdata || state.qdata, + qschema: action.payload.qschema || state.qschema + }; + case actionTypes.NICEditor.DATA_CHANGED: + return { + ...state, + data: { + ...state.data, + ...action.deltaData + } + }; + default: + return state; + } +}; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNICEditorView.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNICEditorView.jsx new file mode 100644 index 0000000000..7393a835dc --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNICEditorView.jsx @@ -0,0 +1,322 @@ +import React from 'react'; + +import i18n from 'nfvo-utils/i18n/i18n.js'; + +import ValidationForm from 'nfvo-components/input/validation/ValidationForm.jsx'; +import ValidationInput from 'nfvo-components/input/validation/ValidationInput.jsx'; + +class SoftwareProductComponentsNetworkEditorView extends React.Component { + + render() { + let {onCancel, isReadOnlyMode} = this.props; + return ( + this.submit() } + onReset={ () => onCancel() } + labledButtons={true} + isReadOnlyMode={isReadOnlyMode} + className='vsp-components-network-editor'> + {this.renderEditorFields()} + + ); + } + + renderEditorFields() { + let {data = {}, qdata = {}, qschema = {}, onQDataChanged, onDataChanged, isReadOnlyMode} = this.props; + let {name, description, networkName} = data; + let netWorkValues = [{ + enum: networkName, + title: networkName + }]; + return( +
      +
      +
      + +
      +
      + onDataChanged({description})} + disabled={isReadOnlyMode} + type='textarea'/> +
      +
      + +
      +
      {i18n('Protocols')}
      +
      + +
      +
      + +
      +
      +
      +
      {i18n('IP Configuration')}
      +
      + +
      +
      + +
      +
      +
      +
      +
      {i18n('Network')}
      +
      + +
      +
      + +
      +
      + +
      +
      + +
      +
      {i18n('Sizing')}
      +
      + +
      +
      + +
      +
      {i18n('Inflow Traffic per second')}
      +
      + +
      +
      +
      +
      {i18n('Packets')}
      +
      +
      +
      + +
      +
      + +
      +
      +
      +
      +
      +
      {i18n('Bytes')}
      +
      +
      +
      + + +
      +
      + +
      +
      +
      +
      + +
      +
      {i18n('Outflow Traffic per second')}
      +
      + +
      +
      +
      +
      {i18n('Packets')}
      +
      +
      +
      + +
      +
      + + +
      +
      +
      +
      +
      +
      {i18n('Bytes')}
      +
      +
      +
      + + +
      +
      + + +
      +
      +
      +
      + +
      +
      {i18n('Flow Length')}
      +
      + +
      +
      +
      +
      {i18n('Packets')}
      +
      +
      +
      + +
      +
      + +
      +
      +
      +
      +
      +
      {i18n('Bytes')}
      +
      +
      +
      + + +
      +
      + +
      +
      +
      +
      + +
      +
      +
      +
      {i18n('Acceptable Jitter')}
      +
      +
      +
      + +
      +
      + +
      +
      + +
      +
      +
      +
      +
      +
      {i18n('Acceptable Packet Loss %')}
      +
      +
      +
      + +
      +
      +
      +
      +
      +
      + + ); + } + submit() { + let {data, qdata, onSubmit} = this.props; + onSubmit({data, qdata}); + } +} + +export default SoftwareProductComponentsNetworkEditorView; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNICListReducer.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNICListReducer.js new file mode 100644 index 0000000000..bc53e1a7af --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNICListReducer.js @@ -0,0 +1,33 @@ +/*- + * ============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========================================================= + */ + +import {actionTypes} from './SoftwareProductComponentsNetworkConstants.js'; + +export default (state = [], action) => { + switch (action.type) { + case actionTypes.NIC_LIST_UPDATE: + return [...action.response]; + case actionTypes.NIC_LIST_EDIT: + const indexForEdit = state.findIndex(nic => nic.id === action.nic.id); + return [...state.slice(0, indexForEdit), action.nic, ...state.slice(indexForEdit + 1)]; + default: + return state; + } +}; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNetworkActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNetworkActionHelper.js new file mode 100644 index 0000000000..8ff6b50189 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNetworkActionHelper.js @@ -0,0 +1,129 @@ +/*- + * ============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========================================================= + */ + +import RestAPIUtil from 'nfvo-utils/RestAPIUtil.js'; +import Configuration from 'sdc-app/config/Configuration.js'; + +import {actionTypes} from './SoftwareProductComponentsNetworkConstants.js'; + +function baseUrl(softwareProductId, componentId) { + const restPrefix = Configuration.get('restPrefix'); + return `${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/components/${componentId}/nics`; +} + + +function fetchNICQuestionnaire({softwareProductId, componentId, nicId, version}) { + let versionQuery = version ? `?version=${version}` : ''; + return RestAPIUtil.fetch(`${baseUrl(softwareProductId, componentId)}/${nicId}/questionnaire${versionQuery}`); +} + +function fetchNIC({softwareProductId, componentId, nicId, version}) { + let versionQuery = version ? `?version=${version}` : ''; + return RestAPIUtil.fetch(`${baseUrl(softwareProductId, componentId)}/${nicId}${versionQuery}`); +} + +function fetchNICsList({softwareProductId, componentId, version}) { + let versionQuery = version ? `?version=${version}` : ''; + return RestAPIUtil.fetch(`${baseUrl(softwareProductId, componentId)}${versionQuery}`); +} + +function saveNIC({softwareProductId, componentId, nic: {id, name, description, networkId}}) { + return RestAPIUtil.save(`${baseUrl(softwareProductId, componentId)}/${id}`,{ + name, + description, + networkId + }); +} + +function saveNICQuestionnaire({softwareProductId, componentId, nicId, qdata}) { + return RestAPIUtil.save(`${baseUrl(softwareProductId, componentId)}/${nicId}/questionnaire`, qdata); +} + +const SoftwareProductComponentNetworkActionHelper = { + + fetchNICsList(dispatch, {softwareProductId, componentId, version}) { + return fetchNICsList({softwareProductId, componentId, version}).then((response) => { + dispatch({ + type: actionTypes.NIC_LIST_UPDATE, + response: response.results + }); + }); + }, + + openNICEditor(dispatch, {nic = {}, data = {}}) { + dispatch({ + type: actionTypes.NICEditor.OPEN, + nic: {...data, id: nic.id} + }); + }, + + closeNICEditor(dispatch) { + dispatch({ + type: actionTypes.NICEditor.CLOSE + }); + }, + + loadNICData({softwareProductId, componentId, nicId, version}) { + return fetchNIC({softwareProductId, componentId, nicId, version}); + }, + + loadNICQuestionnaire(dispatch, {softwareProductId, componentId, nicId, version}) { + return fetchNICQuestionnaire({softwareProductId, componentId, nicId, version}).then((response) => { + dispatch({ + type: actionTypes.NICEditor.NIC_QUESTIONNAIRE_UPDATE, + payload: { + qdata: response.data ? JSON.parse(response.data) : {}, + qschema: JSON.parse(response.schema) + } + }); + }); + }, + + updateNICData(dispatch, {deltaData}) { + dispatch({ + type: actionTypes.NICEditor.DATA_CHANGED, + deltaData + }); + }, + + updateNICQuestionnaire(dispatch, {data}) { + dispatch({ + type: actionTypes.NICEditor.NIC_QUESTIONNAIRE_UPDATE, + payload: { + qdata: data + } + }); + }, + + saveNICDataAndQuestionnaire(dispatch, {softwareProductId, componentId, data, qdata}) { + SoftwareProductComponentNetworkActionHelper.closeNICEditor(dispatch); + return Promise.all([ + saveNICQuestionnaire({softwareProductId, componentId, nicId: data.id, qdata}), + saveNIC({softwareProductId, componentId, nic: data}).then(() => { + dispatch({ + type: actionTypes.NIC_LIST_EDIT, + nic: data + }); + }) + ]); + } +}; + +export default SoftwareProductComponentNetworkActionHelper; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNetworkConstants.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNetworkConstants.js new file mode 100644 index 0000000000..193f4b20b5 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNetworkConstants.js @@ -0,0 +1,33 @@ +/*- + * ============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========================================================= + */ + +import keyMirror from 'nfvo-utils/KeyMirror.js'; + +export const actionTypes = keyMirror({ + NIC_LIST_EDIT: null, + NIC_LIST_UPDATE: null, + + NICEditor: { + OPEN: null, + CLOSE: null, + NIC_QUESTIONNAIRE_UPDATE: null, + DATA_CHANGED: null + } +}); diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNetworkList.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNetworkList.js new file mode 100644 index 0000000000..9172dc691a --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNetworkList.js @@ -0,0 +1,86 @@ +/*- + * ============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========================================================= + */ + +import {connect} from 'react-redux'; +import VersionControllerUtils from 'nfvo-components/panel/versionController/VersionControllerUtils.js'; + +import SoftwareProductComponentsActionHelper from 'sdc-app/onboarding/softwareProduct/components/SoftwareProductComponentsActionHelper.js'; +import SoftwareProductComponentsNetworkListView from './SoftwareProductComponentsNetworkListView.jsx'; +import SoftwareProductComponentsNetworkActionHelper from './SoftwareProductComponentsNetworkActionHelper.js'; + + +export const mapStateToProps = ({softwareProduct}) => { + + let {softwareProductEditor: {data: currentSoftwareProduct = {}, isValidityData = true}, softwareProductComponents} = softwareProduct; + let {network: {nicEditor = {}, nicList = []}, componentEditor: {data: componentData, qdata, qschema}} = softwareProductComponents; + let {data} = nicEditor; + let isReadOnlyMode = VersionControllerUtils.isReadOnly(currentSoftwareProduct); + let {version} = currentSoftwareProduct; + let manualMode = nicList.length <= 0; + let isModalInEditMode = true; + + return { + version, + componentData, + qdata, + qschema, + isValidityData, + nicList, + isDisplayModal: Boolean(data), + isModalInEditMode, + manualMode, + isReadOnlyMode + }; + +}; + +const mapActionsToProps = (dispatch, {softwareProductId, componentId}) => { + return { + onQDataChanged: ({data}) => SoftwareProductComponentsActionHelper.componentQuestionnaireUpdated(dispatch, {data}), + onAddNIC: () => SoftwareProductComponentsNetworkActionHelper.openNICEditor(dispatch), + onEditNicClick: (nic, version) => { + Promise.all([ + SoftwareProductComponentsNetworkActionHelper.loadNICData({ + softwareProductId, + componentId, + nicId: nic.id, + version + }), + SoftwareProductComponentsNetworkActionHelper.loadNICQuestionnaire(dispatch, { + softwareProductId, + componentId, + nicId: nic.id, + version + }) + ]).then( + ([{data}]) => SoftwareProductComponentsNetworkActionHelper.openNICEditor(dispatch, {nic, data}) + ); + }, + onSubmit: ({qdata}) => { return SoftwareProductComponentsActionHelper.updateSoftwareProductComponentQuestionnaire(dispatch, + {softwareProductId, + vspComponentId: componentId, + qdata}); + } + + + }; +}; + +export default connect(mapStateToProps, mapActionsToProps, null, {withRef: true})(SoftwareProductComponentsNetworkListView); diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNetworkListView.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNetworkListView.jsx new file mode 100644 index 0000000000..b3e17ff94b --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNetworkListView.jsx @@ -0,0 +1,136 @@ +import React from 'react'; +import i18n from 'nfvo-utils/i18n/i18n.js'; +import ValidationForm from 'nfvo-components/input/validation/ValidationForm.jsx'; + +import ListEditorView from 'nfvo-components/listEditor/ListEditorView.jsx'; +import ListEditorItemView from 'nfvo-components/listEditor/ListEditorItemView.jsx'; +import ValidationInput from'nfvo-components/input/validation/ValidationInput.jsx'; +import Modal from 'nfvo-components/modal/Modal.jsx'; + +import SoftwareProductComponentsNICEditor from './SoftwareProductComponentsNICEditor.js'; + +class SoftwareProductComponentsNetworkView extends React.Component { + + state = { + localFilter: '' + }; + + render() { + let {qdata, qschema, onQDataChanged, isModalInEditMode, isDisplayModal, softwareProductId, componentId, isReadOnlyMode} = this.props; + + return( +
      +
      +
      + +

      {i18n('Network Capacity')}

      +
      +
      +
      + +
      +
      + +
      +
      +
      +
      + + +
      + {this.renderNicList()} +
      + + + {isModalInEditMode ? i18n('Edit NIC') : i18n('Create New NIC')} + + + { + + } + + +
      + ); + } + + renderNicList() { + const {localFilter} = this.state; + let {onAddNIC, manualMode, isReadOnlyMode} = this.props; + let onAdd = manualMode ? onAddNIC : false; + return ( + this.setState({localFilter: filter})}> + {!manualMode && this.filterList().map(nic => this.renderNicListItem(nic, isReadOnlyMode))} + + ); + } + + renderNicListItem(nic, isReadOnlyMode) { + let {id, name, description, networkName = ''} = nic; + let {onEditNicClick, version} = this.props; + return ( + onEditNicClick(nic, version)}> + +
      +
      {i18n('Name')}
      +
      {name}
      +
      +
      +
      {i18n('Purpose of NIC')}
      +
      {description}
      +
      +
      +
      {i18n('Network')}
      +
      {networkName}
      +
      + +
      + ); + } + + filterList() { + let {nicList} = this.props; + let {localFilter} = this.state; + if (localFilter.trim()) { + const filter = new RegExp(escape(localFilter), 'i'); + return nicList.filter(({name = '', description = ''}) => { + return escape(name).match(filter) || escape(description).match(filter); + }); + } + else { + return nicList; + } + } + + save() { + let {onSubmit, qdata} = this.props; + return onSubmit({qdata}); + } +} + +export default SoftwareProductComponentsNetworkView; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesActionHelper.js new file mode 100644 index 0000000000..d535a34a82 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesActionHelper.js @@ -0,0 +1,145 @@ +/*- + * ============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========================================================= + */ + +import RestAPIUtil from 'nfvo-utils/RestAPIUtil.js'; +import Configuration from 'sdc-app/config/Configuration.js'; +import {actionTypes} from './SoftwareProductComponentProcessesConstants.js'; + +function baseUrl(softwareProductId, componentId) { + const restPrefix = Configuration.get('restPrefix'); + return `${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/components/${componentId}/processes`; +} + +function fetchProcessesList({softwareProductId, componentId, version}) { + let versionQuery = version ? `?version=${version}` : ''; + return RestAPIUtil.fetch(`${baseUrl(softwareProductId, componentId)}${versionQuery}`); +} + +function deleteProcess({softwareProductId, componentId, processId}) { + return RestAPIUtil.destroy(`${baseUrl(softwareProductId, componentId)}/${processId}`); +} + +function putProcess({softwareProductId, componentId, process}) { + return RestAPIUtil.save(`${baseUrl(softwareProductId, componentId)}/${process.id}`, { + name: process.name, + description: process.description + }); +} + +function postProcess({softwareProductId,componentId, process}) { + return RestAPIUtil.create(`${baseUrl(softwareProductId, componentId)}`, { + name: process.name, + description: process.description + }); +} + +function uploadFileToProcess({softwareProductId, processId, componentId, formData}) { + return RestAPIUtil.create(`${baseUrl(softwareProductId, componentId)}/${processId}/upload`, formData); +} + + + +const SoftwareProductComponentProcessesActionHelper = { + fetchProcessesList(dispatch, {softwareProductId, componentId, version}) { + dispatch({ + type: actionTypes.FETCH_SOFTWARE_PRODUCT_COMPONENTS_PROCESSES, + processesList: [] + }); + + return fetchProcessesList({softwareProductId, componentId, version}).then(response => { + dispatch({ + type: actionTypes.FETCH_SOFTWARE_PRODUCT_COMPONENTS_PROCESSES, + processesList: response.results + }); + }); + }, + + deleteProcess(dispatch, {process, softwareProductId, componentId}) { + return deleteProcess({softwareProductId, processId:process.id, componentId}).then(() => { + dispatch({ + type: actionTypes.DELETE_SOFTWARE_PRODUCT_COMPONENTS_PROCESS, + processId: process.id + }); + }); + + }, + + saveProcess(dispatch, {softwareProductId, componentId, previousProcess, process}) { + if (previousProcess) { + return putProcess({softwareProductId,componentId, process}).then(() => { + if (process.formData && process.formData.name !== previousProcess.artifactName){ + uploadFileToProcess({softwareProductId, processId: process.id, formData: process.formData, componentId}); + } + dispatch({ + type: actionTypes.EDIT_SOFTWARE_PRODUCT_COMPONENTS_PROCESS, + process + }); + }); + } + else { + return postProcess({softwareProductId, componentId, process}).then(response => { + if (process.formData) { + uploadFileToProcess({softwareProductId, processId: response.value, formData: process.formData, componentId}); + } + dispatch({ + type: actionTypes.ADD_SOFTWARE_PRODUCT_COMPONENTS_PROCESS, + process: { + ...process, + id: response.value + } + }); + }); + } + }, + + hideDeleteConfirm(dispatch) { + dispatch({ + type: actionTypes.SOFTWARE_PRODUCT_PROCESS_DELETE_COMPONENTS_CONFIRM, + processToDelete: false + }); + }, + + openDeleteProcessesConfirm(dispatch, {process} ) { + dispatch({ + type: actionTypes.SOFTWARE_PRODUCT_PROCESS_DELETE_COMPONENTS_CONFIRM, + processToDelete: process + }); + }, + + openEditor(dispatch, process = {}) { + dispatch({ + type: actionTypes.SOFTWARE_PRODUCT_PROCESS_COMPONENTS_EDITOR_OPEN, + process + }); + }, + closeEditor(dispatch) { + dispatch({ + type:actionTypes.SOFTWARE_PRODUCT_PROCESS_COMPONENTS_EDITOR_CLOSE + }); + }, + processEditorDataChanged(dispatch, {deltaData}) { + dispatch({ + type: actionTypes.processEditor.DATA_CHANGED, + deltaData + }); + } +}; + +export default SoftwareProductComponentProcessesActionHelper; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesConstants.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesConstants.js new file mode 100644 index 0000000000..78a111a426 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesConstants.js @@ -0,0 +1,34 @@ +/*- + * ============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========================================================= + */ + +import keyMirror from 'nfvo-utils/KeyMirror.js'; + +export const actionTypes = keyMirror({ + ADD_SOFTWARE_PRODUCT_COMPONENTS_PROCESS: null, + EDIT_SOFTWARE_PRODUCT_COMPONENTS_PROCESS: null, + DELETE_SOFTWARE_PRODUCT_COMPONENTS_PROCESS: null, + SOFTWARE_PRODUCT_PROCESS_COMPONENTS_EDITOR_OPEN: null, + SOFTWARE_PRODUCT_PROCESS_COMPONENTS_EDITOR_CLOSE: null, + FETCH_SOFTWARE_PRODUCT_COMPONENTS_PROCESSES: null, + SOFTWARE_PRODUCT_PROCESS_DELETE_COMPONENTS_CONFIRM: null, + processEditor: { + DATA_CHANGED: null + } +}); diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesEditor.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesEditor.js new file mode 100644 index 0000000000..0138023c30 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesEditor.js @@ -0,0 +1,54 @@ +/*- + * ============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========================================================= + */ + +import {connect} from 'react-redux'; +import SoftwareProductComponentProcessesActionHelper from './SoftwareProductComponentProcessesActionHelper'; +import SoftwareProductComponentProcessesEditorView from './SoftwareProductComponentProcessesEditorView.jsx'; + +const mapStateToProps = ({softwareProduct}) => { + let {softwareProductComponents: {componentProcesses = {}}} = softwareProduct; + let {processesList = [], processesEditor = {}} = componentProcesses; + let {data} = processesEditor; + + let previousData; + const processId = data ? data.id : null; + if(processId) { + previousData = processesList.find(process => process.id === processId); + } + + return { + data, + previousData + }; +}; + +const mapActionsToProps = (dispatch, {softwareProductId, componentId}) => { + + return { + onDataChanged: deltaData => SoftwareProductComponentProcessesActionHelper.processEditorDataChanged(dispatch, {deltaData}), + onCancel: () => SoftwareProductComponentProcessesActionHelper.closeEditor(dispatch), + onSubmit: ({previousProcess, process}) => { + SoftwareProductComponentProcessesActionHelper.closeEditor(dispatch); + SoftwareProductComponentProcessesActionHelper.saveProcess(dispatch, {softwareProductId, previousProcess, componentId, process}); + } + }; +}; + +export default connect(mapStateToProps, mapActionsToProps)(SoftwareProductComponentProcessesEditorView); diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesEditorReducer.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesEditorReducer.js new file mode 100644 index 0000000000..f859f690e8 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesEditorReducer.js @@ -0,0 +1,44 @@ +/*- + * ============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========================================================= + */ + +import {actionTypes} from './SoftwareProductComponentProcessesConstants.js'; + +export default (state = {}, action) => { + switch (action.type) { + case actionTypes.SOFTWARE_PRODUCT_PROCESS_COMPONENTS_EDITOR_OPEN: + return { + ...state, + data: action.process + }; + case actionTypes.SOFTWARE_PRODUCT_PROCESS_COMPONENTS_EDITOR_CLOSE: + return {}; + + case actionTypes.processEditor.DATA_CHANGED: + return { + ...state, + data: { + ...state.data, + ...action.deltaData + } + }; + default: + return state; + } +}; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesEditorView.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesEditorView.jsx new file mode 100644 index 0000000000..ca6d843af7 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesEditorView.jsx @@ -0,0 +1,124 @@ +import React from 'react'; +import i18n from 'nfvo-utils/i18n/i18n.js'; +import Dropzone from 'react-dropzone'; + + +import ValidationForm from 'nfvo-components/input/validation/ValidationForm.jsx'; +import ValidationInput from 'nfvo-components/input/validation/ValidationInput.jsx'; + +const SoftwareProductProcessEditorPropType = React.PropTypes.shape({ + id: React.PropTypes.string, + name: React.PropTypes.string, + description: React.PropTypes.string, + artifactName: React.PropTypes.string +}); + +class SoftwareProductProcessesEditorView extends React.Component { + + state = { + dragging: false, + files: [] + }; + + static propTypes = { + data: SoftwareProductProcessEditorPropType, + previousData: SoftwareProductProcessEditorPropType, + isReadOnlyMode: React.PropTypes.bool, + onDataChanged: React.PropTypes.func, + onSubmit: React.PropTypes.func, + onCancel: React.PropTypes.func + }; + + render() { + let {isReadOnlyMode, onCancel, onDataChanged, data = {}} = this.props; + let {name, description, artifactName} = data; + + return ( +
      + this.submit() } + onReset={ () => onCancel() } + className='vsp-processes-editor'> +
      + this.handleImportSubmit(files)} + onDragEnter={() => this.setState({dragging:true})} + onDragLeave={() => this.setState({dragging:false})} + multiple={false} + disableClick={true} + ref='processEditorFileInput' + name='processEditorFileInput' + accept='*.*'> +
      +
      + onDataChanged({name})} + label={i18n('Name')} + value={name} + validations={{validateName: true, maxLength: 120, required: true}} + type='text'/> + +
      +
      +
      +
      {i18n('Drag & drop for upload')}
      +
      {i18n('or')}
      +
      this.refs.processEditorFileInput.open()}> + {i18n('Select file')} +
      +
      +
      +
      + onDataChanged({description})} + label={i18n('Notes')} + value={description} + name='vsp-process-description' + className='vsp-process-description' + validations={{maxLength: 1000}} + type='textarea'/> +
      +
      +
      +
      + ); + } + + submit() { + const {data: process, previousData: previousProcess} = this.props; + let {files} = this.state; + let formData = new FormData(); + if (files.length) { + let file = files[0]; + formData.append('upload', file); + } + + let updatedProcess = { + ...process, + formData: files.length ? formData : false + }; + this.props.onSubmit({process: updatedProcess, previousProcess}); + } + + + handleImportSubmit(files) { + let {onDataChanged} = this.props; + this.setState({ + dragging: false, + complete: '0', + files + }); + onDataChanged({artifactName: files[0].name}); + } +} + +export default SoftwareProductProcessesEditorView; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesList.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesList.js new file mode 100644 index 0000000000..5f6932897e --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesList.js @@ -0,0 +1,54 @@ +/*- + * ============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========================================================= + */ + +import {connect} from 'react-redux'; +import VersionControllerUtils from 'nfvo-components/panel/versionController/VersionControllerUtils.js'; +import SoftwareProductComponentProcessesActionHelper from './SoftwareProductComponentProcessesActionHelper.js'; + +import SoftwareProductComponentsProcessesListView from './SoftwareProductComponentsProcessesListView.jsx'; + +const mapStateToProps = ({softwareProduct}) => { + + let {softwareProductEditor: {data:currentSoftwareProduct = {}, isValidityData = true}, softwareProductComponents: {componentProcesses = {}}} = softwareProduct; + let{processesList = [], processesEditor = {}} = componentProcesses; + let {data} = processesEditor; + let isReadOnlyMode = VersionControllerUtils.isReadOnly(currentSoftwareProduct); + + return { + currentSoftwareProduct, + isValidityData, + processesList, + isDisplayModal: Boolean(data), + isModalInEditMode: Boolean(data && data.id), + isReadOnlyMode + }; + +}; + +const mapActionsToProps = (dispatch, {softwareProductId}) => { + + return { + onAddProcess: () => SoftwareProductComponentProcessesActionHelper.openEditor(dispatch), + onEditProcessClick: (process) => SoftwareProductComponentProcessesActionHelper.openEditor(dispatch, process), + onDeleteProcessClick: (process) => SoftwareProductComponentProcessesActionHelper.openDeleteProcessesConfirm(dispatch, {process, softwareProductId}) + }; +}; + +export default connect(mapStateToProps, mapActionsToProps, null, {withRef: true})(SoftwareProductComponentsProcessesListView); diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesListReducer.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesListReducer.js new file mode 100644 index 0000000000..4bb124d52f --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesListReducer.js @@ -0,0 +1,37 @@ +/*- + * ============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========================================================= + */ + +import {actionTypes} from './SoftwareProductComponentProcessesConstants.js'; + +export default (state = [], action) => { + switch (action.type) { + case actionTypes.FETCH_SOFTWARE_PRODUCT_COMPONENTS_PROCESSES: + return [...action.processesList]; + case actionTypes.EDIT_SOFTWARE_PRODUCT_COMPONENTS_PROCESS: + const indexForEdit = state.findIndex(process => process.id === action.process.id); + return [...state.slice(0, indexForEdit), action.process, ...state.slice(indexForEdit + 1)]; + case actionTypes.ADD_SOFTWARE_PRODUCT_COMPONENTS_PROCESS: + return [...state, action.process]; + case actionTypes.DELETE_SOFTWARE_PRODUCT_COMPONENTS_PROCESS: + return state.filter(process => process.id !== action.processId); + default: + return state; + } +}; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentsProcessesConfirmationModal.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentsProcessesConfirmationModal.jsx new file mode 100644 index 0000000000..48fa862364 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentsProcessesConfirmationModal.jsx @@ -0,0 +1,45 @@ +import React from 'react'; +import {connect} from 'react-redux'; +import ConfirmationModalView from 'nfvo-components/confirmations/ConfirmationModalView.jsx'; +import SoftwareProductComponentProcessesActionHelper from './SoftwareProductComponentProcessesActionHelper.js'; +import i18n from 'nfvo-utils/i18n/i18n.js'; + +function renderMsg(processToDelete) { + let name = processToDelete ? processToDelete.name : ''; + let msg = i18n('Are you sure you want to delete "{name}"?', {name}); + return ( +
      +

      {msg}

      +
      + ); +}; + +const mapStateToProps = ({softwareProduct}) => { + let {softwareProductEditor, softwareProductComponents} = softwareProduct; + let {componentProcesses} = softwareProductComponents; + let {processToDelete} = componentProcesses; + let softwareProductId = softwareProductEditor.data.id; + const show = processToDelete !== false; + return { + show, + title: 'Warning!', + type: 'warning', + msg: renderMsg(processToDelete), + confirmationDetails: {processToDelete, softwareProductId} + }; +}; + +const mapActionsToProps = (dispatch,{componentId, softwareProductId}) => { + return { + onConfirmed: ({processToDelete}) => { + SoftwareProductComponentProcessesActionHelper.deleteProcess(dispatch, {process: processToDelete, softwareProductId, componentId}); + SoftwareProductComponentProcessesActionHelper.hideDeleteConfirm(dispatch); + }, + onDeclined: () => { + SoftwareProductComponentProcessesActionHelper.hideDeleteConfirm(dispatch); + } + }; +}; + +export default connect(mapStateToProps, mapActionsToProps)(ConfirmationModalView); + diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentsProcessesListView.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentsProcessesListView.jsx new file mode 100644 index 0000000000..a8b07e9194 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentsProcessesListView.jsx @@ -0,0 +1,125 @@ +import React from 'react'; +import i18n from 'nfvo-utils/i18n/i18n.js'; +import Modal from 'nfvo-components/modal/Modal.jsx'; + +import ListEditorView from 'nfvo-components/listEditor/ListEditorView.jsx'; +import ListEditorItemView from 'nfvo-components/listEditor/ListEditorItemView.jsx'; + +import SoftwareProductProcessesEditor from './SoftwareProductComponentProcessesEditor.js'; +import SoftwareProductComponentsProcessesConfirmationModal from './SoftwareProductComponentsProcessesConfirmationModal.jsx'; + +class SoftwareProductProcessesView extends React.Component { + + state = { + localFilter: '' + }; + + static propTypes = { + onAddProcess: React.PropTypes.func, + onEditProcessClick: React.PropTypes.func, + onDeleteProcessClick: React.PropTypes.func, + isDisplayModal: React.PropTypes.bool, + isModalInEditMode: React.PropTypes.bool, + onStorageSelect: React.PropTypes.func, + componentId: React.PropTypes.string, + softwareProductId: React.PropTypes.string + }; + + render() { + let { softwareProductId, componentId} = this.props; + + return ( +
      +
      +
      + {this.renderEditor()} + {this.renderProcessList()} +
      + +
      +
      + ); + } + + renderEditor() { + let {softwareProductId, componentId, isReadOnlyMode, isDisplayModal, isModalInEditMode} = this.props; + return ( + + + {isModalInEditMode ? i18n('Edit Process Details') : i18n('Create New Process Details')} + + + + + + + ); + } + + renderProcessList() { + const {localFilter} = this.state; + let {onAddProcess, isReadOnlyMode} = this.props; + return ( +
      + this.setState({localFilter: filter})}> + {this.filterList().map(processes => this.renderProcessListItem(processes, isReadOnlyMode))} + +
      + ); + } + + renderProcessListItem(process, isReadOnlyMode) { + let {id, name, description, artifactName = ''} = process; + let {onEditProcessClick, onDeleteProcessClick} = this.props; + return ( + onEditProcessClick(process)} + onDelete={() => onDeleteProcessClick(process)}> + +
      +
      {i18n('Name')}
      +
      {name}
      +
      +
      +
      {i18n('Artifact name')}
      +
      {artifactName}
      +
      +
      +
      {i18n('Notes')}
      +
      {description}
      +
      +
      + ); + } + + + filterList() { + let {processesList} = this.props; + let {localFilter} = this.state; + if (localFilter.trim()) { + const filter = new RegExp(escape(localFilter), 'i'); + return processesList.filter(({name = '', description = ''}) => { + return escape(name).match(filter) || escape(description).match(filter); + }); + } + else { + return processesList; + } + } +} + +export default SoftwareProductProcessesView; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/storage/SoftwareProductComponentStorage.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/storage/SoftwareProductComponentStorage.js new file mode 100644 index 0000000000..fbd3f81ec2 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/storage/SoftwareProductComponentStorage.js @@ -0,0 +1,48 @@ +/*- + * ============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========================================================= + */ + +import {connect} from 'react-redux'; + +import VersionControllerUtils from 'nfvo-components/panel/versionController/VersionControllerUtils.js'; + +import SoftwareProductComponentsActionHelper from 'sdc-app/onboarding/softwareProduct/components/SoftwareProductComponentsActionHelper.js'; +import SoftwareProductComponentStorageView from './SoftwareProductComponentStorageView.jsx'; + +const mapStateToProps = ({softwareProduct}) => { + let {softwareProductEditor: {data: currentVSP}, softwareProductComponents} = softwareProduct; + let {componentEditor: {data: componentData , qdata, qschema}} = softwareProductComponents; + let isReadOnlyMode = VersionControllerUtils.isReadOnly(currentVSP); + + return { + componentData, + qdata, + qschema, + isReadOnlyMode + }; +}; + +const mapActionToProps = (dispatch, {softwareProductId, componentId}) => { + return { + onQDataChanged: ({data}) => SoftwareProductComponentsActionHelper.componentQuestionnaireUpdated(dispatch, {data}), + onSubmit: ({qdata}) => { return SoftwareProductComponentsActionHelper.updateSoftwareProductComponentQuestionnaire(dispatch, {softwareProductId, vspComponentId: componentId, qdata});} + }; +}; + +export default connect(mapStateToProps, mapActionToProps, null, {withRef: true}) (SoftwareProductComponentStorageView); diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/storage/SoftwareProductComponentStorageView.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/storage/SoftwareProductComponentStorageView.jsx new file mode 100644 index 0000000000..9c9600c376 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/components/storage/SoftwareProductComponentStorageView.jsx @@ -0,0 +1,124 @@ +import React from 'react'; +import i18n from 'nfvo-utils/i18n/i18n.js'; +import ValidationForm from 'nfvo-components/input/validation/ValidationForm.jsx'; +import ValidationInput from'nfvo-components/input/validation/ValidationInput.jsx'; + + +class SoftwareProductComponentStorageView extends React.Component { + + static propTypes = { + componentId: React.PropTypes.string, + onQDataChanged: React.PropTypes.func, + onSubmit: React.PropTypes.func, + isReadOnlyMode: React.PropTypes.bool + }; + + render() { + let {qdata, qschema, onQDataChanged, onSubmit, isReadOnlyMode} = this.props; + + return( +
      + onSubmit({qdata})} + className='component-questionnaire-validation-form' + isReadOnlyMode={isReadOnlyMode} + onDataChanged={onQDataChanged} + data={qdata} + schema={qschema}> + +
      {i18n('Backup')}
      +
      +
      +
      +
      + +
      + +
      +
      +
      +
      + +
      +
      + +
      + +
      +
      + +
      {i18n('Snapshot Backup')}
      +
      +
      +
      + +
      +
      +
      +
      +
      + +
      {i18n('Log Backup')}
      +
      +
      +
      + +
      +
      + +
      +
      + +
      + +
      +
      + +
      + ); + } + + save(){ + return this.refs.storageValidationForm.handleFormSubmit(new Event('dummy')); + } +} + +export default SoftwareProductComponentStorageView; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreation.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreation.js new file mode 100644 index 0000000000..46308f0045 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreation.js @@ -0,0 +1,49 @@ +/*- + * ============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========================================================= + */ + +import {connect} from 'react-redux'; + +import OnboardingActionHelper from 'sdc-app/onboarding/OnboardingActionHelper.js'; +import SoftwareProductCreationActionHelper from './SoftwareProductCreationActionHelper.js'; +import SoftwareProductCreationView from './SoftwareProductCreationView.jsx'; + +const mapStateToProps = ({finalizedLicenseModelList, softwareProduct: {softwareProductCreation, softwareProductCategories} }) => { + return { + data: softwareProductCreation.data, + softwareProductCategories, + finalizedLicenseModelList + }; +}; + +const mapActionsToProps = (dispatch) => { + return { + onDataChanged: deltaData => SoftwareProductCreationActionHelper.changeData(dispatch, {deltaData}), + onCancel: () => SoftwareProductCreationActionHelper.resetData(dispatch), + onSubmit: (softwareProduct) => { + SoftwareProductCreationActionHelper.resetData(dispatch); + SoftwareProductCreationActionHelper.createSoftwareProduct(dispatch, {softwareProduct}).then(softwareProductId => { + let {vendorId: licenseModelId, licensingVersion} = softwareProduct; + OnboardingActionHelper.navigateToSoftwareProductLandingPage(dispatch, {softwareProductId, licenseModelId, licensingVersion}); + }); + } + }; +}; + +export default connect(mapStateToProps, mapActionsToProps, null, {withRef: true})(SoftwareProductCreationView); diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreationActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreationActionHelper.js new file mode 100644 index 0000000000..f4e51f198e --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreationActionHelper.js @@ -0,0 +1,77 @@ +/*- + * ============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========================================================= + */ + +import RestAPIUtil from 'nfvo-utils/RestAPIUtil.js'; +import Configuration from 'sdc-app/config/Configuration.js'; + +import SoftwareProductActionHelper from 'sdc-app/onboarding/softwareProduct/SoftwareProductActionHelper.js'; +import {actionTypes} from './SoftwareProductCreationConstants.js'; + + +function baseUrl() { + const restPrefix = Configuration.get('restPrefix'); + return `${restPrefix}/v1.0/vendor-software-products/`; +} + +function createSoftwareProduct(softwareProduct) { + return RestAPIUtil.create(baseUrl(), { + ...softwareProduct, + icon: 'icon', + licensingData: {} + }); +} + +const SoftwareProductCreationActionHelper = { + + open(dispatch) { + SoftwareProductActionHelper.loadSoftwareProductAssociatedData(dispatch); + dispatch({ + type: actionTypes.OPEN + }); + }, + + resetData(dispatch) { + dispatch({ + type: actionTypes.RESET_DATA + }); + }, + + changeData(dispatch, {deltaData}) { + dispatch({ + type: actionTypes.DATA_CHANGED, + deltaData + }); + }, + + createSoftwareProduct(dispatch, {softwareProduct}) { + return createSoftwareProduct(softwareProduct).then(response => { + SoftwareProductActionHelper.addSoftwareProduct(dispatch, { + softwareProduct: { + ...softwareProduct, + id: response.vspId + } + }); + return response.vspId; + }); + } + +}; + +export default SoftwareProductCreationActionHelper; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreationConstants.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreationConstants.js new file mode 100644 index 0000000000..0a9cdb911c --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreationConstants.js @@ -0,0 +1,27 @@ +/*- + * ============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========================================================= + */ + +import keyMirror from 'nfvo-utils/KeyMirror.js'; + +export const actionTypes = keyMirror({ + OPEN: null, + RESET_DATA: null, + DATA_CHANGED: null +}); diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreationReducer.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreationReducer.js new file mode 100644 index 0000000000..5e3db09e56 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreationReducer.js @@ -0,0 +1,44 @@ +/*- + * ============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========================================================= + */ + +import {actionTypes} from './SoftwareProductCreationConstants.js'; + +export default (state = {}, action) => { + switch (action.type) { + case actionTypes.OPEN: + return { + ...state, + data: {}, + showModal: true + }; + case actionTypes.DATA_CHANGED: + return { + ...state, + data: { + ...state.data, + ...action.deltaData + } + }; + case actionTypes.RESET_DATA: + return {}; + default: + return state; + } +}; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreationView.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreationView.jsx new file mode 100644 index 0000000000..2c8f243457 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreationView.jsx @@ -0,0 +1,123 @@ +import React from 'react'; +import i18n from 'nfvo-utils/i18n/i18n.js'; +import ValidationInput from 'nfvo-components/input/validation/ValidationInput.jsx'; +import ValidationForm from 'nfvo-components/input/validation/ValidationForm.jsx'; + +import SoftwareProductCategoriesHelper from 'sdc-app/onboarding/softwareProduct/SoftwareProductCategoriesHelper.js'; + + +const SoftwareProductPropType = React.PropTypes.shape({ + id: React.PropTypes.string, + name: React.PropTypes.string, + description: React.PropTypes.string, + category: React.PropTypes.string, + subCategory: React.PropTypes.string, + vendorId: React.PropTypes.string +}); + +class SoftwareProductCreationView extends React.Component { + + static propTypes = { + data: SoftwareProductPropType, + finalizedLicenseModelList: React.PropTypes.array, + softwareProductCategories: React.PropTypes.array, + onDataChanged: React.PropTypes.func.isRequired, + onSubmit: React.PropTypes.func.isRequired, + onCancel: React.PropTypes.func.isRequired + }; + + render() { + let {softwareProductCategories, data = {}, onDataChanged, onCancel} = this.props; + let {name, description, vendorId, subCategory} = data; + + const vendorList = this.getVendorList(); + + return ( +
      + this.submit() } + onReset={() => onCancel() } + labledButtons={true}> +
      +
      + onDataChanged({name})} + validations={{validateName: true, maxLength: 25, required: true}} + type='text' + className='field-section'/> + onDataChanged({vendorId})} + value={vendorId} + label={i18n('Vendor')} + values={vendorList} + validations={{required: true}} + type='select' + className='field-section'/> + this.onSelectSubCategory(subCategory)} + validations={{required: true}} + className='options-input-category'> + + {softwareProductCategories.map(category => + category.subcategories && + {category.subcategories.map(sub => + )} + ) + } + +
      +
      + onDataChanged({description})} + validations={{freeEnglishText: true, maxLength: 1000, required: true}} + type='textarea' + className='field-section'/> +
      +
      +
      +
      + ); + } + + getVendorList() { + let {finalizedLicenseModelList} = this.props; + + return [{enum: '', title: i18n('please select...')}].concat(finalizedLicenseModelList.map(vendor => { + return { + enum: vendor.id, + title: vendor.vendorName + }; + })); + } + + onSelectSubCategory(subCategory) { + let {softwareProductCategories, onDataChanged} = this.props; + let category = SoftwareProductCategoriesHelper.getCurrentCategoryOfSubCategory(subCategory, softwareProductCategories); + onDataChanged({category, subCategory}); + } + + create(){ + this.refs.validationForm.handleFormSubmit(new Event('dummy')); + } + + submit() { + const {data:softwareProduct, finalizedLicenseModelList} = this.props; + softwareProduct.vendorName = finalizedLicenseModelList.find(vendor => vendor.id === softwareProduct.vendorId).vendorName; + this.props.onSubmit(softwareProduct); + } +} + +export default SoftwareProductCreationView; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/details/SoftwareProductDetails.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/details/SoftwareProductDetails.js new file mode 100644 index 0000000000..16a100c664 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/details/SoftwareProductDetails.js @@ -0,0 +1,66 @@ +/*- + * ============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========================================================= + */ + +import {connect} from 'react-redux'; + +import VersionControllerUtils from 'nfvo-components/panel/versionController/VersionControllerUtils.js'; +import SoftwareProductActionHelper from 'sdc-app/onboarding/softwareProduct/SoftwareProductActionHelper.js'; +import SoftwareProductDetailsView from './SoftwareProductDetailsView.jsx'; + +export const mapStateToProps = ({finalizedLicenseModelList, softwareProduct, licenseModel: {licenseAgreement, featureGroup}}) => { + let {softwareProductEditor: {data: currentSoftwareProduct}, softwareProductCategories, softwareProductQuestionnaire} = softwareProduct; + let {licensingData = {}, licensingVersion} = currentSoftwareProduct; + let licenseAgreementList = [], filteredFeatureGroupsList = []; + if(licensingVersion && licensingVersion !== '') { + licenseAgreementList = licenseAgreement.licenseAgreementList; + let selectedLicenseAgreement = licenseAgreementList.find(la => la.id === licensingData.licenseAgreement); + if (selectedLicenseAgreement) { + let featureGroupsList = featureGroup.featureGroupsList.filter(({referencingLicenseAgreements}) => referencingLicenseAgreements.includes(selectedLicenseAgreement.id)); + if (featureGroupsList.length) { + filteredFeatureGroupsList = featureGroupsList.map(featureGroup => ({enum: featureGroup.id, title: featureGroup.name})); + } + } + } + let {qdata, qschema} = softwareProductQuestionnaire; + let isReadOnlyMode = VersionControllerUtils.isReadOnly(currentSoftwareProduct); + + return { + currentSoftwareProduct, + softwareProductCategories, + licenseAgreementList, + featureGroupsList: filteredFeatureGroupsList, + finalizedLicenseModelList, + qdata, + qschema, + isReadOnlyMode + }; +}; + +export const mapActionsToProps = (dispatch) => { + return { + onDataChanged: deltaData => SoftwareProductActionHelper.softwareProductEditorDataChanged(dispatch, {deltaData}), + onVendorParamChanged: deltaData => SoftwareProductActionHelper.softwareProductEditorVendorChanged(dispatch, {deltaData}), + onQDataChanged: ({data}) => SoftwareProductActionHelper.softwareProductQuestionnaireUpdate(dispatch, {data}), + onValidityChanged: isValidityData => SoftwareProductActionHelper.setIsValidityData(dispatch, {isValidityData}), + onSubmit: (softwareProduct, qdata) =>{ return SoftwareProductActionHelper.updateSoftwareProduct(dispatch, {softwareProduct, qdata});} + }; +}; + +export default connect(mapStateToProps, mapActionsToProps, null, {withRef: true})(SoftwareProductDetailsView); diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/details/SoftwareProductDetailsReducer.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/details/SoftwareProductDetailsReducer.js new file mode 100644 index 0000000000..e060706b37 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/details/SoftwareProductDetailsReducer.js @@ -0,0 +1,63 @@ +/*- + * ============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========================================================= + */ + +import {actionTypes} from 'sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js'; + +export default (state = {}, action) => { + switch (action.type) { + case actionTypes.softwareProductEditor.OPEN: + return { + ...state, + data: {} + }; + case actionTypes.softwareProductEditor.DATA_CHANGED: + return { + ...state, + data: { + ...state.data, + ...action.deltaData + } + }; + case actionTypes.softwareProductEditor.UPLOAD_CONFIRMATION: + return { + ...state, + uploadData:action.uploadData + }; + case actionTypes.softwareProductEditor.IS_VALIDITY_DATA_CHANGED: + return { + ...state, + isValidityData: action.isValidityData + }; + case actionTypes.softwareProductEditor.CLOSE: + return {}; + case actionTypes.SOFTWARE_PRODUCT_LOADED: + return { + ...state, + data: action.response + }; + case actionTypes.TOGGLE_NAVIGATION_ITEM: + return { + ...state, + mapOfExpandedIds: action.mapOfExpandedIds + }; + default: + return state; + } +}; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/details/SoftwareProductDetailsView.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/details/SoftwareProductDetailsView.jsx new file mode 100644 index 0000000000..75a5797dec --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/details/SoftwareProductDetailsView.jsx @@ -0,0 +1,264 @@ +import React, {Component, PropTypes} from 'react'; + +import i18n from 'nfvo-utils/i18n/i18n.js'; +import Form from 'nfvo-components/input/validation/ValidationForm.jsx'; +import ValidationInput from 'nfvo-components/input/validation/ValidationInput.jsx'; +import SoftwareProductCategoriesHelper from 'sdc-app/onboarding/softwareProduct/SoftwareProductCategoriesHelper.js'; + +class SoftwareProductDetails extends Component { + + static propTypes = { + vendorName: PropTypes.string, + currentSoftwareProduct: PropTypes.shape({ + id: PropTypes.string, + name: PropTypes.string, + description: PropTypes.string, + category: PropTypes.string, + subCategory: PropTypes.string, + vendorId: PropTypes.string, + vendorName: PropTypes.string, + licensingVersion: PropTypes.string, + licensingData: PropTypes.shape({ + licenceAgreement: PropTypes.string, + featureGroups: PropTypes.array + }) + }), + softwareProductCategories: PropTypes.array, + finalizedLicenseModelList: PropTypes.array, + licenseAgreementList: PropTypes.array, + featureGroupsList: PropTypes.array, + onSubmit: PropTypes.func.isRequired, + onDataChanged: PropTypes.func.isRequired, + onValidityChanged: PropTypes.func.isRequired, + qdata: PropTypes.object.isRequired, + qschema: PropTypes.object.isRequired, + onQDataChanged: PropTypes.func.isRequired, + onVendorParamChanged: PropTypes.func.isRequired + }; + + state = { + licensingVersionsList: [] + }; + + render() { + let {softwareProductCategories, finalizedLicenseModelList, onDataChanged, featureGroupsList, licenseAgreementList, currentSoftwareProduct} = this.props; + let {name, description, vendorId, licensingVersion, subCategory, licensingData = {}} = currentSoftwareProduct; + let licensingVersionsList = this.state.licensingVersionsList.length > 0 ? this.state.licensingVersionsList : this.refreshVendorVersionsList(vendorId); + let {qdata, qschema, onQDataChanged} = this.props; + let {isReadOnlyMode} = this.props; + + return ( +
      +
      this.props.onSubmit(currentSoftwareProduct, qdata)} + onValidityChanged={(isValidityData) => this.props.onValidityChanged(isValidityData)} + isReadOnlyMode={isReadOnlyMode}> +
      {i18n('General')}
      +
      +
      + onDataChanged({name})} + validations={{validateName: true, maxLength: 120, required: true}} + className='field-section'/> + this.onVendorParamChanged({vendorId})} + className='field-section'> + {finalizedLicenseModelList.map(lm => )} + +
      + this.onSelectSubCategory(subCategory)} + className='field-section'> + { + softwareProductCategories.map(category => + category.subcategories && + {category.subcategories.map(sub => + )} + + ) + } + +
      +
      +
      + onDataChanged({description})} + className='field-section' + validations={{required: true}}/> +
      +
      +
      +
      {i18n('Licenses')}
      +
      + this.onVendorParamChanged({vendorId, licensingVersion})} + selectedEnum={licensingVersion} + label={i18n('Licensing Version')} + values={licensingVersionsList} + type='select' + className='field-section'/> + this.onLicensingDataChanged({licenseAgreement, featureGroups: []})}> + + {licenseAgreementList.map(la => )} + +
      +
      + {licensingData.licenseAgreement && ( + this.onFeatureGroupsChanged({featureGroups})} + multiSelectedEnum={licensingData.featureGroups} + name='feature-groups' + label={i18n('Feature Groups')} + clearable={false} + values={featureGroupsList}/>) + } +
      +
      +
      +
      +
      +
      {i18n('Availability')}
      +
      +
      + +
      +
      +
      {i18n('Regions')}
      +
      +
      + +
      +
      +
      {i18n('Storage Data Replication')}
      +
      +
      + + +
      +
      + + +
      +
      +
      +
      +
      + ); + } + + onVendorParamChanged({vendorId, licensingVersion}) { + let {finalizedLicenseModelList, onVendorParamChanged} = this.props; + if(!licensingVersion) { + const licensingVersionsList = this.refreshVendorVersionsList(vendorId); + licensingVersion = licensingVersionsList.length > 0 ? licensingVersionsList[0].enum : ''; + } + let vendorName = finalizedLicenseModelList.find(licenseModelItem => licenseModelItem.id === vendorId).vendorName || ''; + let deltaData = { + vendorId, + vendorName, + licensingVersion, + licensingData: {} + }; + onVendorParamChanged(deltaData); + } + + refreshVendorVersionsList(vendorId) { + if(!vendorId) { + return []; + } + + let {finalVersions} = this.props.finalizedLicenseModelList.find(vendor => vendor.id === vendorId); + + let licensingVersionsList = [{ + enum: '', + title: i18n('Select...') + }]; + if(finalVersions) { + finalVersions.forEach(version => licensingVersionsList.push({ + enum: version, + title: version + })); + } + + return licensingVersionsList; + } + + onSelectSubCategory(subCategory) { + let {softwareProductCategories, onDataChanged} = this.props; + let category = SoftwareProductCategoriesHelper.getCurrentCategoryOfSubCategory(subCategory, softwareProductCategories); + onDataChanged({category, subCategory}); + } + + onFeatureGroupsChanged({featureGroups}) { + this.onLicensingDataChanged({featureGroups}); + } + + onLicensingDataChanged(deltaData) { + this.props.onDataChanged({ + licensingData: { + ...this.props.currentSoftwareProduct.licensingData, + ...deltaData + } + }); + } + + save(){ + return this.refs.validationForm.handleFormSubmit(new Event('dummy')); + } +} + +export default SoftwareProductDetails; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/landingPage/SoftwareProductLandingPage.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/landingPage/SoftwareProductLandingPage.js new file mode 100644 index 0000000000..7604f5841d --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/landingPage/SoftwareProductLandingPage.js @@ -0,0 +1,97 @@ +/*- + * ============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========================================================= + */ + +import {connect} from 'react-redux'; + +import i18n from 'nfvo-utils/i18n/i18n.js'; +import VersionControllerUtils from 'nfvo-components/panel/versionController/VersionControllerUtils.js'; +import NotificationConstants from 'nfvo-components/notifications/NotificationConstants.js'; +import OnboardingActionHelper from 'sdc-app/onboarding/OnboardingActionHelper.js'; +import SoftwareProductActionHelper from 'sdc-app/onboarding/softwareProduct/SoftwareProductActionHelper.js'; +import LandingPageView from './SoftwareProductLandingPageView.jsx'; + +const mapStateToProps = ({softwareProduct, licenseModel: {licenseAgreement}}) => { + let {softwareProductEditor: {data:currentSoftwareProduct = {}}, softwareProductComponents, softwareProductCategories = []} = softwareProduct; + let {licensingData = {}} = currentSoftwareProduct; + let {licenseAgreementList} = licenseAgreement; + let {componentsList} = softwareProductComponents; + let licenseAgreementName = licenseAgreementList.find(la => la.id === licensingData.licenseAgreement); + if (licenseAgreementName) { + licenseAgreementName = licenseAgreementName.name; + } + + let categoryName = '', subCategoryName = '', fullCategoryDisplayName = ''; + const category = softwareProductCategories.find(ca => ca.uniqueId === currentSoftwareProduct.category); + if (category) { + categoryName = category.name; + const subcategories = category.subcategories || []; + const subcat = subcategories.find(sc => sc.uniqueId === currentSoftwareProduct.subCategory); + subCategoryName = subcat && subcat.name ? subcat.name : ''; + } + fullCategoryDisplayName = `${subCategoryName} (${categoryName})`; + + const isReadOnlyMode = VersionControllerUtils.isReadOnly(currentSoftwareProduct); + + return { + currentSoftwareProduct: { + ...currentSoftwareProduct, + licenseAgreementName, + fullCategoryDisplayName + }, + isReadOnlyMode, + componentsList + }; +}; + +const mapActionsToProps = (dispatch, {version}) => { + return { + onDetailsSelect: ({id: softwareProductId, vendorId: licenseModelId}) => OnboardingActionHelper.navigateToSoftwareProductDetails(dispatch, { + softwareProductId, + licenseModelId + }), + onAttachmentsSelect: ({id: softwareProductId}) => OnboardingActionHelper.navigateToSoftwareProductAttachments(dispatch, {softwareProductId}), + onUpload: (softwareProductId, formData) => + SoftwareProductActionHelper.uploadFile(dispatch, { + softwareProductId, + formData, + failedNotificationTitle: i18n('Upload validation failed') + }), + onUploadConfirmation: (softwareProductId, formData) => + SoftwareProductActionHelper.uploadConfirmation(dispatch, { + softwareProductId, + formData, + failedNotificationTitle: i18n('Upload validation failed')}), + + onInvalidFileSizeUpload: () => dispatch({ + type: NotificationConstants.NOTIFY_ERROR, + data: { + title: i18n('Upload Failed'), + msg: i18n('no zip file was uploaded or zip file doesn\'t exist') + } + }), + onComponentSelect: ({id: softwareProductId, componentId}) => { + OnboardingActionHelper.navigateToSoftwareProductComponentGeneralAndUpdateLeftPanel(dispatch, {softwareProductId, componentId, version }); + }, + /** for the next version */ + onAddComponent: () => SoftwareProductActionHelper.addComponent(dispatch) + }; +}; + +export default connect(mapStateToProps, mapActionsToProps, null, {withRef: true})(LandingPageView); diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/landingPage/SoftwareProductLandingPageUploadConfirmationModal.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/landingPage/SoftwareProductLandingPageUploadConfirmationModal.jsx new file mode 100644 index 0000000000..4a848834b2 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/landingPage/SoftwareProductLandingPageUploadConfirmationModal.jsx @@ -0,0 +1,38 @@ +import {connect} from 'react-redux'; +import ConfirmationModalView from 'nfvo-components/confirmations/ConfirmationModalView.jsx'; +import SoftwareProductActionHelper from 'sdc-app/onboarding/softwareProduct/SoftwareProductActionHelper.js'; + +import i18n from 'nfvo-utils/i18n/i18n.js'; + +const mapStateToProps = ({softwareProduct}) => { + let {softwareProductEditor} = softwareProduct; + let {uploadData} = softwareProductEditor; + const show = uploadData ? true : false; + return { + show, + title: 'Warning!', + type: 'warning', + msg: i18n('Upload will erase existing data. Do you want to continue?'), + confirmationDetails: {uploadData} + }; +}; + +const mapActionsToProps = (dispatch) => { + return { + onConfirmed: ({uploadData}) => { + let {softwareProductId, formData, failedNotificationTitle} = uploadData; + SoftwareProductActionHelper.uploadFile(dispatch, { + softwareProductId, + formData, + failedNotificationTitle + }); + SoftwareProductActionHelper.hideUploadConfirm(dispatch); + }, + onDeclined: () => { + SoftwareProductActionHelper.hideUploadConfirm(dispatch); + } + }; +}; + +export default connect(mapStateToProps, mapActionsToProps)(ConfirmationModalView); + diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/landingPage/SoftwareProductLandingPageView.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/landingPage/SoftwareProductLandingPageView.jsx new file mode 100644 index 0000000000..cf7c7a31a5 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/landingPage/SoftwareProductLandingPageView.jsx @@ -0,0 +1,272 @@ +import React from 'react'; +import classnames from 'classnames'; +import Dropzone from 'react-dropzone'; + + +import i18n from 'nfvo-utils/i18n/i18n.js'; +import ListEditorView from 'nfvo-components/listEditor/ListEditorView.jsx'; +import ListEditorItemView from 'nfvo-components/listEditor/ListEditorItemView.jsx'; + +import FontAwesome from 'react-fontawesome'; +import SoftwareProductLandingPageUploadConfirmationModal from './SoftwareProductLandingPageUploadConfirmationModal.jsx'; + + +const SoftwareProductPropType = React.PropTypes.shape({ + name: React.PropTypes.string, + description: React.PropTypes.string, + version: React.PropTypes.string, + id: React.PropTypes.string, + categoryId: React.PropTypes.string, + vendorId: React.PropTypes.string, + status: React.PropTypes.string, + licensingData: React.PropTypes.object, + validationData: React.PropTypes.object +}); + +const ComponentPropType = React.PropTypes.shape({ + id: React.PropTypes.string, + name: React.PropTypes.string, + displayName: React.PropTypes.string, + description: React.PropTypes.string +}); + +class SoftwareProductLandingPageView extends React.Component { + + state = { + localFilter: '', + fileName: '', + dragging: false, + files: [] + }; + + static propTypes = { + currentSoftwareProduct: SoftwareProductPropType, + isReadOnlyMode: React.PropTypes.bool, + componentsList: React.PropTypes.arrayOf(ComponentPropType), + onDetailsSelect: React.PropTypes.func, + onAttachmentsSelect: React.PropTypes.func, + onUpload: React.PropTypes.func, + onUploadConfirmation: React.PropTypes.func, + onInvalidFileSizeUpload: React.PropTypes.func, + onComponentSelect: React.PropTypes.func, + onAddComponent: React.PropTypes.func + }; + + render() { + let {currentSoftwareProduct, isReadOnlyMode, componentsList = []} = this.props; + return ( +
      + this.handleImportSubmit(files, isReadOnlyMode)} + onDragEnter={() => this.handleOnDragEnter(isReadOnlyMode)} + onDragLeave={() => this.setState({dragging:false})} + multiple={false} + disableClick={true} + ref='fileInput' + name='fileInput' + accept='.zip' + disabled> +
      +
      +
      + {this.renderProductSummary(currentSoftwareProduct)} + {this.renderProductDetails(currentSoftwareProduct, isReadOnlyMode)} +
      +
      +
      +
      + { + componentsList.length > 0 && this.renderComponents() + } + +
      + ); + } + + handleOnDragEnter(isReadOnlyMode) { + if (!isReadOnlyMode) { + this.setState({dragging: true}); + } + } + + renderProductSummary(currentSoftwareProduct) { + let {name = '', description = '', vendorName = '', fullCategoryDisplayName = '', licenseAgreementName = ''} = currentSoftwareProduct; + let {onDetailsSelect} = this.props; + return ( +
      +
      {i18n('Software Product Details')}
      +
      onDetailsSelect(currentSoftwareProduct)}> +
      +
      +
      +
      {name}
      +
      +
      +
      +
      +
      {i18n('Vendor')}
      +
      {vendorName}
      +
      +
      +
      {i18n('Category')}
      +
      {fullCategoryDisplayName}
      +
      +
      +
      {i18n('License Agreement')}
      +
      + {this.renderLicenseAgreement(licenseAgreementName)} +
      +
      +
      +
      +
      {i18n('Description')}
      +
      {description}
      +
      +
      +
      +
      + ); + } + + renderProductDetails(currentSoftwareProduct, isReadOnlyMode) { + let {validationData} = currentSoftwareProduct; + let {onAttachmentsSelect} = this.props; + let details = { + heatTemplates: validationData ? '1' : '0', + images: '0', + otherArtifacts: '0' + }; + + return ( +
      +
      {i18n('Software Product Attachments')}
      +
      +
      onAttachmentsSelect(currentSoftwareProduct)}> +
      +
      {i18n('HEAT Templates')} ({details.heatTemplates}) +
      +
      {i18n('Images')} ({details.images}) +
      +
      {i18n('Other Artifacts')} ({details.otherArtifacts}) +
      +
      +
      +
      +
      {i18n('Drag & drop for upload')}
      +
      {i18n('or')}
      +
      this.refs.fileInput.open()}> + {i18n('Select file')} +
      +
      +
      +
      + ); + } + + renderComponents() { + const {localFilter} = this.state; + + return ( + this.setState({localFilter: filter})}> + {this.filterList().map(component => this.renderComponentsListItem(component))} + + ); + } + + renderComponentsListItem(component) { + let {id: componentId, name, displayName, description = ''} = component; + let {currentSoftwareProduct: {id}, onComponentSelect} = this.props; + return ( + onComponentSelect({id, componentId})}> +
      +
      {i18n('Component')}
      +
      {displayName}
      +
      +
      +
      {i18n('Description')}
      +
      {description}
      +
      +
      + ); + } + + renderLicenseAgreement(licenseAgreementName) { + if (!licenseAgreementName) { + return (); + } + return (licenseAgreementName); + } + + + filterList() { + let {componentsList = []} = this.props; + + let {localFilter} = this.state; + if (localFilter.trim()) { + const filter = new RegExp(escape(localFilter), 'i'); + return componentsList.filter(({displayName = '', description = ''}) => { + return escape(displayName).match(filter) || escape(description).match(filter); + }); + } + else { + return componentsList; + } + } + + handleImportSubmit(files, isReadOnlyMode) { + if (isReadOnlyMode) { + return; + } + if (files[0] && files[0].size) { + this.setState({ + fileName: files[0].name, + dragging: false, + complete: '0', + }); + this.startUploading(files); + } + else { + this.props.onInvalidFileSizeUpload(); + } + + } + + startUploading(files) { + let {onUpload, currentSoftwareProduct, onUploadConfirmation} = this.props; + + let {validationData} = currentSoftwareProduct; + + if (!(files && files.length)) { + return; + } + let file = files[0]; + let formData = new FormData(); + formData.append('upload', file); + this.refs.fileInput.value = ''; + + if (validationData) { + onUploadConfirmation(currentSoftwareProduct.id, formData); + }else { + onUpload(currentSoftwareProduct.id, formData); + } + + } +} + +export default SoftwareProductLandingPageView; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/networks/SoftwareProductNetworks.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/networks/SoftwareProductNetworks.js new file mode 100644 index 0000000000..dadc7777e1 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/networks/SoftwareProductNetworks.js @@ -0,0 +1,30 @@ +/*- + * ============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========================================================= + */ + +import {connect} from 'react-redux'; +import SoftwareProductNetworksView from './SoftwareProductNetworksView.jsx'; + +export const mapStateToProps = ({softwareProduct}) => { + let {softwareProductNetworks: {networksList = []}} = softwareProduct; + return {networksList}; +}; + +export default connect(mapStateToProps, null, null, {withRef: true})(SoftwareProductNetworksView); + diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/networks/SoftwareProductNetworksActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/networks/SoftwareProductNetworksActionHelper.js new file mode 100644 index 0000000000..d0e29bcfe5 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/networks/SoftwareProductNetworksActionHelper.js @@ -0,0 +1,47 @@ +/*- + * ============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========================================================= + */ + +import {actionTypes} from './SoftwareProductNetworksConstants.js'; +import RestAPIUtil from 'nfvo-utils/RestAPIUtil.js'; +import Configuration from 'sdc-app/config/Configuration.js'; + +function baseUrl(svpId) { + const restPrefix = Configuration.get('restPrefix'); + return `${restPrefix}/v1.0/vendor-software-products/${svpId}/networks`; +} + + +function fetchNetworksList(softwareProductId, version) { + let versionQuery = version ? `?version=${version}` : ''; + return RestAPIUtil.fetch(`${baseUrl(softwareProductId)}${versionQuery}`); +} + +const SoftwareProductNetworksActionHelper = { + fetchNetworksList(dispatch, {softwareProductId, version}) { + return fetchNetworksList(softwareProductId, version).then(response => { + dispatch({ + type: actionTypes.FETCH_SOFTWARE_PRODUCT_NETWORKS, + networksList: response.results + }); + }); + } +}; + +export default SoftwareProductNetworksActionHelper; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/networks/SoftwareProductNetworksConstants.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/networks/SoftwareProductNetworksConstants.js new file mode 100644 index 0000000000..d428d21a26 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/networks/SoftwareProductNetworksConstants.js @@ -0,0 +1,25 @@ +/*- + * ============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========================================================= + */ + +import keyMirror from 'nfvo-utils/KeyMirror.js'; + +export const actionTypes = keyMirror({ + FETCH_SOFTWARE_PRODUCT_NETWORKS: null, +}); diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/networks/SoftwareProductNetworksListReducer.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/networks/SoftwareProductNetworksListReducer.js new file mode 100644 index 0000000000..0c9c62372a --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/networks/SoftwareProductNetworksListReducer.js @@ -0,0 +1,30 @@ +/*- + * ============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========================================================= + */ + +import {actionTypes} from './SoftwareProductNetworksConstants.js'; + +export default (state = [], action) => { + switch (action.type) { + case actionTypes.FETCH_SOFTWARE_PRODUCT_NETWORKS: + return [...action.networksList]; + default: + return state; + } +}; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/networks/SoftwareProductNetworksView.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/networks/SoftwareProductNetworksView.jsx new file mode 100644 index 0000000000..bd47467fe1 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/networks/SoftwareProductNetworksView.jsx @@ -0,0 +1,73 @@ +import React from 'react'; +import i18n from 'nfvo-utils/i18n/i18n.js'; + +import ListEditorView from 'nfvo-components/listEditor/ListEditorView.jsx'; +import ListEditorItemView from 'nfvo-components/listEditor/ListEditorItemView.jsx'; + +class SoftwareProductNetworksView extends React.Component { + + static propTypes = { + networksList: React.PropTypes.arrayOf(React.PropTypes.shape({ + id: React.PropTypes.string.isRequired, + name: React.PropTypes.string.isRequired, + dhcp: React.PropTypes.bool.isRequired + })).isRequired + }; + + state = { + localFilter: '' + }; + + render() { + const {localFilter} = this.state; + + return ( +
      + this.setState({localFilter: filter})}> + {this.filterList().map(network => this.renderNetworksListItem(network))} + +
      + ); + } + + renderNetworksListItem(network) { + let {id, name, dhcp} = network; + return ( + + +
      +
      {i18n('Name')}
      +
      {name}
      +
      +
      +
      {i18n('DHCP')}
      +
      {dhcp ? i18n('YES') : i18n('NO')}
      +
      +
      + ); + } + + filterList() { + let {networksList} = this.props; + + let {localFilter} = this.state; + if (localFilter.trim()) { + const filter = new RegExp(escape(localFilter), 'i'); + return networksList.filter(({name = ''}) => { + return escape(name).match(filter); + }); + } + else { + return networksList; + } + } +} + +export default SoftwareProductNetworksView; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcesses.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcesses.js new file mode 100644 index 0000000000..5c3a8dae01 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcesses.js @@ -0,0 +1,49 @@ +/*- + * ============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========================================================= + */ + +import {connect} from 'react-redux'; +import VersionControllerUtils from 'nfvo-components/panel/versionController/VersionControllerUtils.js'; + +import SoftwareProductProcessesActionHelper from './SoftwareProductProcessesActionHelper.js'; +import SoftwareProductProcessesView from './SoftwareProductProcessesView.jsx'; + +const mapStateToProps = ({softwareProduct}) => { + let {softwareProductEditor: {data: currentSoftwareProduct = {}}, softwareProductProcesses: {processesList, processesEditor}} = softwareProduct; + let isReadOnlyMode = VersionControllerUtils.isReadOnly(currentSoftwareProduct); + let {data} = processesEditor; + + return { + currentSoftwareProduct, + processesList, + isDisplayEditor: Boolean(data), + isModalInEditMode: Boolean(data && data.id), + isReadOnlyMode + }; +}; + +const mapActionsToProps = (dispatch, {softwareProductId}) => { + return { + onAddProcess: () => SoftwareProductProcessesActionHelper.openEditor(dispatch), + onEditProcess: (process) => SoftwareProductProcessesActionHelper.openEditor(dispatch, process), + onDeleteProcess: (process) => SoftwareProductProcessesActionHelper.openDeleteProcessesConfirm(dispatch, {process, softwareProductId}) + }; +}; + +export default connect(mapStateToProps, mapActionsToProps, null, {withRef: true})(SoftwareProductProcessesView); diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesActionHelper.js new file mode 100644 index 0000000000..df5d08ffe5 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesActionHelper.js @@ -0,0 +1,151 @@ +/*- + * ============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========================================================= + */ + +import {actionTypes} from './SoftwareProductProcessesConstants.js'; +import RestAPIUtil from 'nfvo-utils/RestAPIUtil.js'; +import Configuration from 'sdc-app/config/Configuration.js'; + +function baseUrl(svpId) { + const restPrefix = Configuration.get('restPrefix'); + return `${restPrefix}/v1.0/vendor-software-products/${svpId}/processes`; +} + +function putProcess(softwareProductId, process) { + return RestAPIUtil.save(`${baseUrl(softwareProductId)}/${process.id}`, { + name: process.name, + description: process.description + }); +} + +function postProcess(softwareProductId, process) { + return RestAPIUtil.create(`${baseUrl(softwareProductId)}`, { + name: process.name, + description: process.description + }); +} + +function deleteProcess(softwareProductId, processId) { + return RestAPIUtil.destroy(`${baseUrl(softwareProductId)}/${processId}`); +} + +function uploadFileToProcess(softwareProductId, processId, formData) +{ + return RestAPIUtil.create(`${baseUrl(softwareProductId)}/${processId}/upload`, formData); +} + +function fetchProcesses(softwareProductId, version) { + let versionQuery = version ? `?version=${version}` : ''; + return RestAPIUtil.fetch(`${baseUrl(softwareProductId)}${versionQuery}`); +} + + + +const SoftwareProductActionHelper = { + + fetchProcessesList(dispatch, {softwareProductId, version}) { + + dispatch({ + type: actionTypes.FETCH_SOFTWARE_PRODUCT_PROCESSES, + processesList: [] + }); + + return fetchProcesses(softwareProductId, version).then(response => { + dispatch({ + type: actionTypes.FETCH_SOFTWARE_PRODUCT_PROCESSES, + processesList: response.results + }); + }); + }, + openEditor(dispatch, process = {}) { + dispatch({ + type: actionTypes.SOFTWARE_PRODUCT_PROCESS_EDITOR_OPEN, + process + }); + }, + + deleteProcess(dispatch, {process, softwareProductId}) { + return deleteProcess(softwareProductId, process.id).then(() => { + dispatch({ + type: actionTypes.DELETE_SOFTWARE_PRODUCT_PROCESS, + processId: process.id + }); + }); + + }, + + closeEditor(dispatch) { + dispatch({ + type:actionTypes.SOFTWARE_PRODUCT_PROCESS_EDITOR_CLOSE + }); + }, + + processEditorDataChanged(dispatch, {deltaData}) { + dispatch({ + type: actionTypes.processEditor.DATA_CHANGED, + deltaData + }); + }, + + saveProcess(dispatch, {softwareProductId, previousProcess, process}) { + if (previousProcess) { + return putProcess(softwareProductId, process).then(() => { + if (process.formData){ + uploadFileToProcess(softwareProductId, process.id, process.formData); + } + dispatch({ + type: actionTypes.EDIT_SOFTWARE_PRODUCT_PROCESS, + process + }); + }); + } + else { + return postProcess(softwareProductId, process).then(response => { + if (process.formData) { + uploadFileToProcess(softwareProductId, response.value, process.formData); + } + dispatch({ + type: actionTypes.ADD_SOFTWARE_PRODUCT_PROCESS, + process: { + ...process, + id: response.value + } + }); + }); + } + }, + + hideDeleteConfirm(dispatch) { + dispatch({ + type: actionTypes.SOFTWARE_PRODUCT_PROCESS_DELETE_CONFIRM, + processToDelete: false + }); + }, + + openDeleteProcessesConfirm(dispatch, {process} ) { + dispatch({ + type: actionTypes.SOFTWARE_PRODUCT_PROCESS_DELETE_CONFIRM, + processToDelete: process + }); + } + +}; + +export default SoftwareProductActionHelper; + diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesConfirmationModal.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesConfirmationModal.jsx new file mode 100644 index 0000000000..0159352dae --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesConfirmationModal.jsx @@ -0,0 +1,45 @@ +import React from 'react'; +import {connect} from 'react-redux'; +import i18n from 'nfvo-utils/i18n/i18n.js'; +import ConfirmationModalView from 'nfvo-components/confirmations/ConfirmationModalView.jsx'; +import SoftwareProductProcessesActionHelper from './SoftwareProductProcessesActionHelper.js'; + +function renderMsg(processToDelete) { + let name = processToDelete ? processToDelete.name : ''; + let msg = i18n('Are you sure you want to delete "{name}"?', {name}); + return ( +
      +

      {msg}

      +
      + ); +}; + +const mapStateToProps = ({softwareProduct}) => { + let {softwareProductEditor, softwareProductProcesses} = softwareProduct; + let {processToDelete} = softwareProductProcesses; + let softwareProductId = softwareProductEditor.data.id; + + const show = processToDelete !== false; + return { + show, + title: i18n('Warning!'), + type: 'warning', + msg: renderMsg(processToDelete), + confirmationDetails: {processToDelete, softwareProductId} + }; +}; + +const mapActionsToProps = (dispatch) => { + return { + onConfirmed: ({processToDelete, softwareProductId}) => { + SoftwareProductProcessesActionHelper.deleteProcess(dispatch, {process: processToDelete, softwareProductId}); + SoftwareProductProcessesActionHelper.hideDeleteConfirm(dispatch); + }, + onDeclined: () => { + SoftwareProductProcessesActionHelper.hideDeleteConfirm(dispatch); + } + }; +}; + +export default connect(mapStateToProps, mapActionsToProps)(ConfirmationModalView); + diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesConstants.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesConstants.js new file mode 100644 index 0000000000..63f3067a89 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesConstants.js @@ -0,0 +1,34 @@ +/*- + * ============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========================================================= + */ + +import keyMirror from 'nfvo-utils/KeyMirror.js'; + +export const actionTypes = keyMirror({ + ADD_SOFTWARE_PRODUCT_PROCESS: null, + EDIT_SOFTWARE_PRODUCT_PROCESS: null, + DELETE_SOFTWARE_PRODUCT_PROCESS: null, + SOFTWARE_PRODUCT_PROCESS_EDITOR_OPEN: null, + SOFTWARE_PRODUCT_PROCESS_EDITOR_CLOSE: null, + FETCH_SOFTWARE_PRODUCT_PROCESSES: null, + SOFTWARE_PRODUCT_PROCESS_DELETE_CONFIRM: null, + processEditor: { + DATA_CHANGED: null + } +}); diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesEditor.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesEditor.js new file mode 100644 index 0000000000..8dc48c50b1 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesEditor.js @@ -0,0 +1,52 @@ +/*- + * ============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========================================================= + */ + +import {connect} from 'react-redux'; +import SoftwareProductProcessesActionHelper from './SoftwareProductProcessesActionHelper'; +import SoftwareProductProcessesEditorView from './SoftwareProductProcessesEditorView.jsx'; + +const mapStateToProps = ({softwareProduct}) => { + let {softwareProductProcesses: {processesList, processesEditor}} = softwareProduct; + let {data} = processesEditor; + + let previousData; + const processId = data ? data.id : null; + if(processId) { + previousData = processesList.find(process => process.id === processId); + } + + return { + data, + previousData + }; +}; + +const mapActionsToProps = (dispatch, {softwareProductId}) => { + return { + onDataChanged: deltaData => SoftwareProductProcessesActionHelper.processEditorDataChanged(dispatch, {deltaData}), + onSubmit: ({previousProcess, process}) => { + SoftwareProductProcessesActionHelper.closeEditor(dispatch); + SoftwareProductProcessesActionHelper.saveProcess(dispatch, {softwareProductId, previousProcess, process}); + }, + onClose: () => SoftwareProductProcessesActionHelper.closeEditor(dispatch) + }; +}; + +export default connect(mapStateToProps, mapActionsToProps)(SoftwareProductProcessesEditorView); diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesEditorReducer.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesEditorReducer.js new file mode 100644 index 0000000000..cae25e2c89 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesEditorReducer.js @@ -0,0 +1,44 @@ +/*- + * ============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========================================================= + */ + +import {actionTypes} from './SoftwareProductProcessesConstants.js'; + +export default (state = {}, action) => { + switch (action.type) { + case actionTypes.SOFTWARE_PRODUCT_PROCESS_EDITOR_OPEN: + return { + ...state, + data: action.process + }; + case actionTypes.SOFTWARE_PRODUCT_PROCESS_EDITOR_CLOSE: + return {}; + + case actionTypes.processEditor.DATA_CHANGED: + return { + ...state, + data: { + ...state.data, + ...action.deltaData + } + }; + default: + return state; + } +}; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesEditorView.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesEditorView.jsx new file mode 100644 index 0000000000..c2c4aff382 --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesEditorView.jsx @@ -0,0 +1,122 @@ +import React from 'react'; +import Dropzone from 'react-dropzone'; +import classnames from 'classnames'; + +import i18n from 'nfvo-utils/i18n/i18n.js'; +import ValidationForm from 'nfvo-components/input/validation/ValidationForm.jsx'; +import ValidationInput from 'nfvo-components/input/validation/ValidationInput.jsx'; + +const SoftwareProductProcessEditorPropType = React.PropTypes.shape({ + id: React.PropTypes.string, + name: React.PropTypes.string, + description: React.PropTypes.string, + artifactName: React.PropTypes.string +}); + +class SoftwareProductProcessesEditorView extends React.Component { + + state = { + dragging: false, + files: [] + }; + + static propTypes = { + data: SoftwareProductProcessEditorPropType, + previousData: SoftwareProductProcessEditorPropType, + isReadOnlyMode: React.PropTypes.bool, + onDataChanged: React.PropTypes.func, + onSubmit: React.PropTypes.func, + onClose: React.PropTypes.func + }; + + render() { + let {data = {}, isReadOnlyMode, onDataChanged, onClose} = this.props; + let {name, description, artifactName} = data; + return ( + this.submit() } + onReset={ () => onClose() } + className='vsp-processes-editor'> +
      + this.handleImportSubmit(files)} + onDragEnter={() => this.setState({dragging: true})} + onDragLeave={() => this.setState({dragging: false})} + multiple={false} + disableClick={true} + ref='processEditorFileInput' + name='processEditorFileInput' + accept='*.*'> +
      +
      + onDataChanged({name})} + label={i18n('Name')} + value={name} + validations={{validateName: true, maxLength: 120, required: true}} + type='text'/> + +
      +
      +
      +
      {i18n('Drag & drop for upload')}
      +
      {i18n('or')}
      +
      this.refs.processEditorFileInput.open()}> + {i18n('Select file')} +
      +
      +
      +
      + onDataChanged({description})} + label={i18n('Notes')} + value={description} + name='vsp-process-description' + className='vsp-process-description' + validations={{maxLength: 1000}} + type='textarea'/> +
      +
      +
      + ); + } + + submit() { + const {data: process, previousData: previousProcess} = this.props; + let {files} = this.state; + let formData = false; + if (files.length) { + let file = files[0]; + formData = new FormData(); + formData.append('upload', file); + } + + let updatedProcess = { + ...process, + formData + }; + this.props.onSubmit({process: updatedProcess, previousProcess}); + } + + + handleImportSubmit(files) { + let {onDataChanged} = this.props; + this.setState({ + dragging: false, + complete: '0', + files + }); + onDataChanged({artifactName: files[0].name}); + } +} + +export default SoftwareProductProcessesEditorView; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesListReducer.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesListReducer.js new file mode 100644 index 0000000000..619a2dba0f --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesListReducer.js @@ -0,0 +1,37 @@ +/*- + * ============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========================================================= + */ + +import {actionTypes} from './SoftwareProductProcessesConstants.js'; + +export default (state = [], action) => { + switch (action.type) { + case actionTypes.FETCH_SOFTWARE_PRODUCT_PROCESSES: + return [...action.processesList]; + case actionTypes.EDIT_SOFTWARE_PRODUCT_PROCESS: + const indexForEdit = state.findIndex(process => process.id === action.process.id); + return [...state.slice(0, indexForEdit), action.process, ...state.slice(indexForEdit + 1)]; + case actionTypes.ADD_SOFTWARE_PRODUCT_PROCESS: + return [...state, action.process]; + case actionTypes.DELETE_SOFTWARE_PRODUCT_PROCESS: + return state.filter(process => process.id !== action.processId); + default: + return state; + } +}; diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesView.jsx b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesView.jsx new file mode 100644 index 0000000000..a2aa3d414e --- /dev/null +++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesView.jsx @@ -0,0 +1,112 @@ +import React from 'react'; +import i18n from 'nfvo-utils/i18n/i18n.js'; +import Modal from 'nfvo-components/modal/Modal.jsx'; + +import ListEditorView from 'nfvo-components/listEditor/ListEditorView.jsx'; +import ListEditorItemView from 'nfvo-components/listEditor/ListEditorItemView.jsx'; + +import SoftwareProductProcessesEditor from './SoftwareProductProcessesEditor.js'; +import SoftwareProductProcessesConfirmationModal from './SoftwareProductProcessesConfirmationModal.jsx'; + + +class SoftwareProductProcessesView extends React.Component { + + state = { + localFilter: '' + }; + + static propTypes = { + onAddProcess: React.PropTypes.func.isRequired, + onEditProcess: React.PropTypes.func.isRequired, + onDeleteProcess: React.PropTypes.func.isRequired, + isDisplayEditor: React.PropTypes.bool.isRequired, + isReadOnlyMode: React.PropTypes.bool.isRequired + }; + + render() { + let { currentSoftwareProduct} = this.props; + return ( +
      + {this.renderEditor()} + {this.renderProcessList()} + +
      + ); + } + + renderEditor() { + let {currentSoftwareProduct: {id}, isModalInEditMode, isReadOnlyMode, isDisplayEditor} = this.props; + return ( + + + + {isModalInEditMode ? i18n('Edit Process Details') : i18n('Create New Process Details')} + + + + + + ); + } + + renderProcessList() { + const {localFilter} = this.state; + let {onAddProcess, isReadOnlyMode} = this.props; + + return ( + this.setState({localFilter: filter})}> + {this.filterList().map(processes => this.renderProcessListItem(processes, isReadOnlyMode))} + + ); + } + + renderProcessListItem(process, isReadOnlyMode) { + let {id, name, description, artifactName = ''} = process; + let {onEditProcess, onDeleteProcess} = this.props; + return ( + onEditProcess(process)} + onDelete={() => onDeleteProcess(process)}> + +
      +
      {i18n('Name')}
      +
      {name}
      +
      +
      +
      {i18n('Artifact name')}
      +
      {artifactName}
      +
      +
      +
      {i18n('Notes')}
      +
      {description}
      +
      +
      + ); + } + + filterList() { + let {processesList} = this.props; + let {localFilter} = this.state; + + if (localFilter.trim()) { + const filter = new RegExp(escape(localFilter), 'i'); + return processesList.filter(({name = '', description = ''}) => { + return escape(name).match(filter) || escape(description).match(filter); + }); + } + else { + return processesList; + } + } +} + +export default SoftwareProductProcessesView; diff --git a/openecomp-ui/src/sdc-app/punch-outs.js b/openecomp-ui/src/sdc-app/punch-outs.js new file mode 100644 index 0000000000..46e84a60a4 --- /dev/null +++ b/openecomp-ui/src/sdc-app/punch-outs.js @@ -0,0 +1,29 @@ +/*- + * ============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========================================================= + */ + +import '../../resources/scss/onboarding.scss'; +import 'dox-sequence-diagram-ui/src/main/webapp/res/sdc-sequencer.scss'; + +import 'core-js/fn/array/includes.js'; +import OnboardingPunchOut from './onboarding/OnboardingPunchOut.jsx'; +import FlowsPunchOut from './flows/FlowsPunchOut.jsx'; + +PunchOutRegistry.register('onboarding/vendor', () => new OnboardingPunchOut()); +PunchOutRegistry.register('sequence-diagram', () => new FlowsPunchOut()); diff --git a/openecomp-ui/src/sdc-app/sdc.app.jsx b/openecomp-ui/src/sdc-app/sdc.app.jsx new file mode 100644 index 0000000000..0929fa0bb9 --- /dev/null +++ b/openecomp-ui/src/sdc-app/sdc.app.jsx @@ -0,0 +1,18 @@ +import '../../resources/scss/bootstrap.scss'; +import '../../resources/css/font-awesome.min.css'; +import 'react-select/dist/react-select.min.css'; +import 'dox-sequence-diagram-ui/src/main/webapp/res/sdc-sequencer.scss'; +import '../../resources/scss/style.scss'; + +import React from 'react'; +import ReactDOM from 'react-dom'; + +import Application from './Application.jsx'; +import Modules from './ModulesOptions.jsx'; + +//chrome 48 remove svg method which is used in jointjs core -> https://github.com/cpettitt/dagre-d3/issues/202 --> http://jointjs.com/blog/get-transform-to-element-polyfill.html +SVGElement.prototype.getTransformToElement = SVGElement.prototype.getTransformToElement || function(toElement) { + return toElement.getScreenCTM().inverse().multiply(this.getScreenCTM()); +}; + +ReactDOM.render(, document.getElementById('sdc-app')); diff --git a/openecomp-ui/test-utils/MockRest.js b/openecomp-ui/test-utils/MockRest.js new file mode 100644 index 0000000000..927da6030a --- /dev/null +++ b/openecomp-ui/test-utils/MockRest.js @@ -0,0 +1,85 @@ +/*- + * ============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========================================================= + */ + +const queue = { + fetch: [], + save: [], + create: [], + destroy: [] +}; + +const initQueue = () => { + queue['fetch'] = []; + queue['save'] = []; + queue['create'] = []; + queue['destroy'] = []; +}; + +const handleOperation = (handler, options) => { + if(typeof handler === 'function') { + return Promise.resolve(handler(options)); + } + else { + return Promise.resolve(handler); + } +}; + +export default { + + fetch(baseUrl, options) { + const {fetch} = queue; + if(!fetch.length) { + throw new Error(`Fetch operation was called without proper handler. baseUrl: '${baseUrl}' options: '${options}'`); + } + return handleOperation(fetch.shift(), {options, baseUrl}); + }, + + save(baseUrl, data, options) { + const {save} = queue; + if(!save.length) { + throw new Error(`Save operation was called without proper handler. baseUrl: '${baseUrl}' options: '${options}'`); + } + return handleOperation(save.shift(), {data, options, baseUrl}); + }, + + create(baseUrl, data, options) { + const {create} = queue; + if(!create.length) { + throw new Error(`Create operation was called without proper handler. baseUrl: '${baseUrl}' options: '${options}'`); + } + return handleOperation(create.shift(), {data, options, baseUrl}); + }, + + destroy(baseUrl, options) { + const {destroy} = queue; + if(!destroy.length) { + throw new Error(`Destroy operation was called without proper handler. baseUrl: '${baseUrl}' options: '${options}'`); + } + return handleOperation(destroy.shift(), {options, baseUrl}); + }, + + addHandler(operation, handler) { + queue[operation].push(handler); + }, + + resetQueue() { + initQueue(); + } +}; diff --git a/openecomp-ui/test-utils/Util.js b/openecomp-ui/test-utils/Util.js new file mode 100644 index 0000000000..7146267afe --- /dev/null +++ b/openecomp-ui/test-utils/Util.js @@ -0,0 +1,55 @@ +/*- + * ============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========================================================= + */ + +import deepFreeze from 'deep-freeze'; +import ReactTestUtils from 'react-addons-test-utils'; + +//returned object should be treated as immutable. +export const cloneAndSet = (obj, path, value) => { + let retVal = {...obj}; + let inner = retVal; + + if (typeof path === 'string') { + path = path.split('.'); + } + + for (let i = 0; i < path.length - 1; i++) { + inner[path[i]] = { + ...inner[path[i]] + }; + inner = inner[path[i]]; + } + inner[path[path.length - 1]] = value; + return deepFreeze(retVal); +}; + +/** + * array findAllRenderedDOMComponentsWithTestId( + ReactComponent tree, + function test + ) + * @param tree - ReactComponent + * @param testId - string + * @returns {Array.} + */ +export const findAllRenderedComponentsWithTestId = (tree, testId) => { + return ReactTestUtils.findAllInRenderedTree(tree, component => component.props.testId === testId); +}; + diff --git a/openecomp-ui/test/flows/FlowsListEditor.test.js b/openecomp-ui/test/flows/FlowsListEditor.test.js new file mode 100644 index 0000000000..534253567e --- /dev/null +++ b/openecomp-ui/test/flows/FlowsListEditor.test.js @@ -0,0 +1,279 @@ +/*- + * ============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========================================================= + */ + +import expect from 'expect'; +import React from 'react'; +import TestUtils from 'react-addons-test-utils'; +import {mapStateToProps} from 'sdc-app/flows/FlowsListEditor.js'; +import FlowsListEditorView from 'sdc-app/flows/FlowsListEditorView.jsx'; + +describe('Flows List Editor Mapper and View Classes: ', function () { + + it('mapStateToProps mapper exists', () => { + expect(mapStateToProps).toExist(); + }); + + it('mapStateToProps mapper - without flowList', () => { + let flows = { + isDisplayModal: true, + isModalInEditMode: false, + shouldShowWorkflowsEditor: undefined + }; + let results = mapStateToProps({flows}); + expect(results.flowList).toExist(); + expect(results.flowList.length).toEqual(0); + expect(results.shouldShowWorkflowsEditor).toBe(true); + }); + + it('mapStateToProps mapper - populated flowList', () => { + let artifactName = 'test1', description = 'desc'; + let flows = { + flowList: [{artifactName, description}], + isDisplayModal: true, + isModalInEditMode: false, + shouldShowWorkflowsEditor: false + }; + let results = mapStateToProps({flows}); + expect(results.flowList).toExist(); + expect(results.flowList.length).toEqual(1); + expect(results.shouldShowWorkflowsEditor).toBe(false); + }); + + it('mapStateToProps mapper - populated flowList and currentFlow is in readonly', () => { + let artifactName = 'test1', description = 'desc'; + let currentFlow = {artifactName, description, readonly: true}; + let flows = { + flowList: [currentFlow], + currentFlow, + isDisplayModal: true, + isModalInEditMode: false, + shouldShowWorkflowsEditor: false + }; + let results = mapStateToProps({flows}); + expect(results.currentFlow).toExist(); + expect(results.isCheckedOut).toEqual(false); + }); + + it('mapStateToProps mapper - populated flowList and currentFlow is in not readonly', () => { + let artifactName = 'test1', description = 'desc'; + let currentFlow = {artifactName, description, readonly: false}; + let flows = { + flowList: [currentFlow], + currentFlow, + isDisplayModal: true, + isModalInEditMode: false, + shouldShowWorkflowsEditor: false + }; + let results = mapStateToProps({flows}); + expect(results.currentFlow).toExist(); + expect(results.isCheckedOut).toEqual(true); + }); + + it('basic view component run with empty flowList and should show the list', () => { + let renderer = TestUtils.createRenderer(); + let artifactName = 'test1', description = 'desc'; + let currentFlow = {artifactName, description, readonly: false}; + renderer.render(); + let renderedOutput = renderer.getRenderOutput(); + expect(renderedOutput).toExist(); + }); + + it('basic view component run with empty flowList and should show the diagram', () => { + const flow = { + 'artifactType': 'WORKFLOW', + 'participants': [ + { + 'id': '1', + 'name': 'Customer' + }, + { + 'id': '2', + 'name': 'CCD' + }, + { + 'id': '3', + 'name': 'Infrastructure' + }, + { + 'id': '4', + 'name': 'MSO' + }, + { + 'id': '5', + 'name': 'SDN-C' + }, + { + 'id': '6', + 'name': 'A&AI' + }, + { + 'id': '7', + 'name': 'APP-C' + }, + { + 'id': '8', + 'name': 'Cloud' + }, + { + 'id': '9', + 'name': 'DCAE' + }, + { + 'id': '10', + 'name': 'ALTS' + }, + { + 'id': '11', + 'name': 'VF' + } + ], + 'serviceID': '338d75f0-aec8-4eb4-89c9-8733fcd9bf3b', + 'artifactDisplayName': 'zizizi', + 'artifactGroupType': 'INFORMATIONAL', + 'uniqueId': '338d75f0-aec8-4eb4-89c9-8733fcd9bf3b.zizizi', + 'artifactName': 'zizizi', + 'artifactLabel': 'zizizi', + 'artifactUUID': '0295a7cc-8c02-4105-9d7e-c30ce67ecd07', + 'artifactVersion': '1', + 'creationDate': 1470144601623, + 'lastUpdateDate': 1470144601623, + 'description': 'aslkjdfl asfdasdf', + 'mandatory': false, + 'timeout': 0, + 'esId': '338d75f0-aec8-4eb4-89c9-8733fcd9bf3b.zizizi', + 'artifactChecksum': 'NjBmYjc4NGM5MWIwNmNkMDhmMThhMDAwYmQxYjBiZTU=', + 'heatParameters': [], + 'sequenceDiagramModel': { + 'diagram': { + 'metadata': { + 'id': '338d75f0-aec8-4eb4-89c9-8733fcd9bf3b.zizizi', + 'name': 'zizizi', + 'ref': 'BLANK' + }, + 'lifelines': [ + { + 'id': '1', + 'name': 'Customer', + 'index': 1, + 'x': 175 + }, + { + 'id': '2', + 'name': 'CCD', + 'index': 2, + 'x': 575 + }, + { + 'id': '3', + 'name': 'Infrastructure', + 'index': 3, + 'x': 975 + }, + { + 'id': '4', + 'name': 'MSO', + 'index': 4, + 'x': 1375 + }, + { + 'id': '5', + 'name': 'SDN-C', + 'index': 5, + 'x': 1775 + }, + { + 'id': '6', + 'name': 'A&AI', + 'index': 6, + 'x': 2175 + }, + { + 'id': '7', + 'name': 'APP-C', + 'index': 7, + 'x': 2575 + }, + { + 'id': '8', + 'name': 'Cloud', + 'index': 8, + 'x': 2975 + }, + { + 'id': '9', + 'name': 'DCAE', + 'index': 9, + 'x': 3375 + }, + { + 'id': '10', + 'name': 'ALTS', + 'index': 10, + 'x': 3775 + }, + { + 'id': '11', + 'name': 'VF', + 'index': 11, + 'x': 4175 + } + ], + 'steps': [ + { + 'message': { + 'id': '9377-5036-c011-cb95-3a8b-82c6-bbb5-bc84', + 'name': '[Unnamed Message]', + 'type': 'request', + 'from': '1', + 'to': '2', + 'index': 1 + } + }, + { + 'message': { + 'id': '64c4-4fd1-b1da-4355-a060-6e48-ee47-c85c', + 'name': '[Unnamed Message]', + 'type': 'request', + 'from': '1', + 'to': '2', + 'index': 2 + } + } + ] + } + } + }; + let renderer = TestUtils.createRenderer(); + renderer.render(); + let renderedOutput = renderer.getRenderOutput(); + expect(renderedOutput).toExist(); + }); + + it('basic view component run with empty flowList and should show popup modal', () => { + let renderer = TestUtils.createRenderer(); + let artifactName = 'test1', description = 'desc'; + let currentFlow = {artifactName, description, readonly: false}; + renderer.render(); + let renderedOutput = renderer.getRenderOutput(); + expect(renderedOutput).toExist(); + }); + + +}); diff --git a/openecomp-ui/test/flows/flowsEditorModal.test.js b/openecomp-ui/test/flows/flowsEditorModal.test.js new file mode 100644 index 0000000000..d8da97af4e --- /dev/null +++ b/openecomp-ui/test/flows/flowsEditorModal.test.js @@ -0,0 +1,89 @@ +/*- + * ============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========================================================= + */ + +import expect from 'expect'; +import React from 'react'; +import TestUtils from 'react-addons-test-utils'; +import {mapStateToProps} from 'sdc-app/flows/FlowsEditorModal.js'; +import FlowsEditorModalView from 'sdc-app/flows/FlowsEditorModalView.jsx'; + +describe('Flows Editor Modal Mapper and View Classes: ', function () { + + it('mapStateToProps mapper exists', () => { + expect(mapStateToProps).toExist(); + }); + + it('mapStateToProps mapper - without currentFlow', () => { + var flows = { + serviceID: '123', + diagramType: 'SOME_TYPE' + }; + var results = mapStateToProps({flows}); + expect(results.currentFlow).toExist(); + expect(results.currentFlow.artifactName).toBe(''); + expect(results.currentFlow.description).toBe(''); + }); + + it('mapStateToProps mapper - populated currentFlow', () => { + let artifactName = 'test1', description = 'desc'; + var flows = { + currentFlow: {artifactName, description}, + serviceID: '123', + diagramType: 'SOME_TYPE' + }; + var results = mapStateToProps({flows}); + expect(results.currentFlow).toExist(); + expect(results.currentFlow.artifactName).toBe(artifactName); + expect(results.currentFlow.description).toBe(description); + expect(results.currentFlow.serviceID).toBe(flows.serviceID); + expect(results.currentFlow.artifactType).toBe(flows.diagramType); + }); + + it('basic modal view component run with empty artifact', () => { + let renderer = TestUtils.createRenderer(); + renderer.render( + {}} + onDataChanged={()=>{}} + currentFlow={{artifactName: '', description: ''}}/>); + let renderedOutput = renderer.getRenderOutput(); + expect(renderedOutput).toExist(); + }); + + it('modal view component run with data changed handler', done => { + let handler = () => done(); + let document = TestUtils.renderIntoDocument( + {}} + onDataChanged={handler} + currentFlow={{artifactName: '', description: ''}}/>); + let result = TestUtils.scryRenderedDOMComponentsWithTag(document, 'input'); + expect(result).toExist(); + expect(result.length).toExist(); + TestUtils.Simulate.change(result[0]); + }); + + it('modal view component - on save click', done => { + let handler = () => done(); + var flowsEditorModalView = new FlowsEditorModalView({currentFlow: {}, onSubmit: handler}); + flowsEditorModalView.onSaveClicked(); + }); + +}); diff --git a/openecomp-ui/test/flows/test.js b/openecomp-ui/test/flows/test.js new file mode 100644 index 0000000000..4c5ab78640 --- /dev/null +++ b/openecomp-ui/test/flows/test.js @@ -0,0 +1,497 @@ +/*- + * ============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========================================================= + */ + +import expect from 'expect'; +import deepFreeze from 'deep-freeze'; +import mockRest from 'test-utils/MockRest.js'; +import store from 'sdc-app/AppStore.js'; +import FlowsActions from 'sdc-app/flows/FlowsActions.js'; +import {enums} from 'sdc-app/flows/FlowsConstants.js'; + +const NEW_FLOW = true; + +let assertFlowDataAfterCreateFetchAndUpdate = (data) => { + let {flowList, serviceID, diagramType} = store.getState().flows; + expect(serviceID).toBe(data.serviceID); + expect(diagramType).toBe(data.artifactType); + let uniqueId = data.uniqueId || `${data.serviceID}.${data.artifactName}`; + let index = flowList.findIndex(flow => flow.uniqueId === uniqueId); + expect(index).toNotBe(-1); +}; + +describe('Workflows and Management Flows Module Tests:', function () { + + + it('empty artifact should open flow creation modal', done => { + + const artifacts = {}; + + deepFreeze(store.getState()); + deepFreeze(artifacts); + FlowsActions.fetchFlowArtifacts(store.dispatch, { + artifacts, + diagramType: enums.WORKFLOW, + participants: [], + serviceID: '1234' + }); + setTimeout(() => { + let state = store.getState(); + expect(state.flows.isDisplayModal).toBe(true); + expect(state.flows.isModalInEditMode).toBe(false); + done(); + }, 50); + }); + + it('Close flow details editor modal', done => { + deepFreeze(store.getState()); + FlowsActions.closeFlowDetailsEditor(store.dispatch); + setTimeout(() => { + let state = store.getState(); + expect(state.flows.isDisplayModal).toBe(false); + expect(state.flows.isModalInEditMode).toBe(false); + done(); + }, 50); + }); + + it('Get Flows List from loaded artifact', done => { + + deepFreeze(store.getState()); + + const artifacts = { + 'test1': { + 'uniqueId': '338d75f0-aec8-4eb4-89c9-8733fcd9bf3b.test1', + 'artifactType': 'NETWORK_CALL_FLOW', + 'artifactName': 'test1', + 'artifactChecksum': 'MzYxZGIyNjlkNjRmMTM4ZWMxM2FjNDUyNDQwMTI3NzM=', + 'attUidLastUpdater': 'cs0008', + 'updaterFullName': 'Carlos Santana', + 'creationDate': 1468164899724, + 'lastUpdateDate': 1468164899724, + 'esId': '338d75f0-aec8-4eb4-89c9-8733fcd9bf3b.test1', + 'artifactLabel': 'test1', + 'artifactCreator': 'cs0008', + 'description': 'www', + 'mandatory': false, + 'artifactDisplayName': 'test1', + 'serviceApi': false, + 'artifactGroupType': 'INFORMATIONAL', + 'timeout': 0, + 'artifactVersion': '1', + 'artifactUUID': '28d4cb95-bb46-4666-b858-e333671e6444', + 'payloadUpdateDate': 1468164900232 + }, + 'kukuriku': { + 'uniqueId': '0280b577-2c7b-426e-b7a2-f0dc16508c37.kukuriku', + 'artifactType': 'PUPPET', + 'artifactName': 'fuel.JPG', + 'artifactChecksum': 'OWEyYTVjMWFiNWQ4ZDIwZDUxYTE3Y2EzZmI3YTYyMjA=', + 'attUidLastUpdater': 'cs0008', + 'updaterFullName': 'Carlos Santana', + 'creationDate': 1467877631512, + 'lastUpdateDate': 1467877631512, + 'esId': '0280b577-2c7b-426e-b7a2-f0dc16508c37.kukuriku', + 'artifactLabel': 'kukuriku', + 'artifactCreator': 'cs0008', + 'description': 'asdfasdf', + 'mandatory': false, + 'artifactDisplayName': 'kukuriku', + 'serviceApi': false, + 'artifactGroupType': 'INFORMATIONAL', + 'timeout': 0, + 'artifactVersion': '1', + 'artifactUUID': 'c1e98336-03f4-4b2a-b6a5-08eca44fe3c4', + 'payloadUpdateDate': 1467877632722 + }, + 'test3': { + 'uniqueId': '338d75f0-aec8-4eb4-89c9-8733fcd9bf3b.test3', + 'artifactType': 'NETWORK_CALL_FLOW', + 'artifactName': 'test3', + 'artifactChecksum': 'ZmJkZGU1M2M2ZWUxZTdmNGU5NTNiNTdiYTAzMmM1YzU=', + 'attUidLastUpdater': 'cs0008', + 'updaterFullName': 'Carlos Santana', + 'creationDate': 1468165068570, + 'lastUpdateDate': 1468165128827, + 'esId': '338d75f0-aec8-4eb4-89c9-8733fcd9bf3b.test3', + 'artifactLabel': 'test3', + 'artifactCreator': 'cs0008', + 'description': '333', + 'mandatory': false, + 'artifactDisplayName': 'test3', + 'serviceApi': false, + 'artifactGroupType': 'INFORMATIONAL', + 'timeout': 0, + 'artifactVersion': '2', + 'artifactUUID': '0988027c-d19c-43db-8315-2c68fc773775', + 'payloadUpdateDate': 1468165129335 + } + }; + + const artifactsArray = Object.keys(artifacts).map(artifact => artifact); + + deepFreeze(artifacts); + + deepFreeze(store.getState()); + + let actionData = { + artifacts, + diagramType: enums.WORKFLOW, + participants: [], + serviceID: '1234' + }; + FlowsActions.fetchFlowArtifacts(store.dispatch, actionData); + + setTimeout(() => { + let state = store.getState(); + expect(state.flows.isDisplayModal).toBe(false); + expect(state.flows.isModalInEditMode).toBe(false); + expect(state.flows.flowList.length).toEqual(artifactsArray.length); + expect(state.flows.flowParticipants).toEqual(actionData.participants); + expect(state.flows.serviceID).toBe(actionData.serviceID); + expect(state.flows.diagramType).toBe(actionData.diagramType); + done(); + }, 50); + + }); + + + it('Add New Flow', done => { + + deepFreeze(store.getState()); + + const flowCreateData = deepFreeze({ + artifactName: 'zizizi', + artifactType: 'WORKFLOW', + description: 'aslkjdfl asfdasdf', + serviceID: '338d75f0-aec8-4eb4-89c9-8733fcd9bf3b', + }); + + + let expectedDataToBeSentInTheRequest = { + artifactGroupType: 'INFORMATIONAL', + artifactLabel: 'zizizi', + artifactName: 'zizizi', + artifactType: 'WORKFLOW', + description: 'aslkjdfl asfdasdf', + payloadData: 'eyJWRVJTSU9OIjp7Im1ham9yIjoxLCJtaW5vciI6MH0sImRlc2NyaXB0aW9uIjoiYXNsa2pkZmwgYXNmZGFzZGYifQ==' + }; + mockRest.addHandler('create', ({data, baseUrl, options}) => { + expect(baseUrl).toBe(`/sdc1/feProxy/rest/v1/catalog/services/${flowCreateData.serviceID}/artifacts/`); + expect(data.artifactLabel).toBe(expectedDataToBeSentInTheRequest.artifactLabel); + expect(data.artifactName).toBe(expectedDataToBeSentInTheRequest.artifactName); + expect(data.artifactType).toBe(expectedDataToBeSentInTheRequest.artifactType); + expect(data.description).toBe(expectedDataToBeSentInTheRequest.description); + expect(data.payloadData).toBe(expectedDataToBeSentInTheRequest.payloadData); + expect(options.md5).toBe(true); + return { + artifactChecksum: 'NjBmYjc4NGM5MWIwNmNkMDhmMThhMDAwYmQxYjBiZTU=', + artifactCreator: 'cs0008', + artifactDisplayName: 'zizizi', + artifactGroupType: 'INFORMATIONAL', + artifactLabel: 'zizizi', + artifactName: 'zizizi', + artifactType: 'WORKFLOW', + artifactUUID: '0295a7cc-8c02-4105-9d7e-c30ce67ecd07', + artifactVersion: '1', + attUidLastUpdater: 'cs0008', + creationDate: 1470144601623, + description: 'aslkjdfl asfdasdf', + esId: '338d75f0-aec8-4eb4-89c9-8733fcd9bf3b.zizizi', + lastUpdateDate: 1470144601623, + mandatory: false, + payloadUpdateDate: 1470144602131, + serviceApi: false, + timeout: 0, + uniqueId: '338d75f0-aec8-4eb4-89c9-8733fcd9bf3b.zizizi', + updaterFullName: 'Carlos Santana', + }; + }); + + FlowsActions.createOrUpdateFlow(store.dispatch, {flow: flowCreateData}, NEW_FLOW); + + setTimeout(() => { + assertFlowDataAfterCreateFetchAndUpdate(flowCreateData); + done(); + }, 50); + }); + + it('Fetch Flow', done => { + + deepFreeze(store.getState()); + + const flowFetchData = { + artifactName: 'zizizi', + artifactType: 'WORKFLOW', + description: 'aslkjdfl asfdasdf', + serviceID: '338d75f0-aec8-4eb4-89c9-8733fcd9bf3b', + uniqueId: '338d75f0-aec8-4eb4-89c9-8733fcd9bf3b.zizizi', + participants: [] + }; + + mockRest.addHandler('fetch', ({baseUrl}) => { + //sdc1/feProxy/rest/v1/catalog/services/338d75f0-aec8-4eb4-89c9-8733fcd9bf3b/artifacts/338d75f0-aec8-4eb4-89c9-8733fcd9bf3b.zizizi + expect(baseUrl).toBe(`/sdc1/feProxy/rest/v1/catalog/services/${flowFetchData.serviceID}/artifacts/${flowFetchData.uniqueId}`); + return { + artifactName: 'zizizi', + base64Contents: 'eyJWRVJTSU9OIjp7Im1ham9yIjoxLCJtaW5vciI6MH0sImRlc2NyaXB0aW9uIjoiYXNsa2pkZmwgYXNmZGFzZGYifQ==' + }; + }); + + FlowsActions.fetchArtifact(store.dispatch, {flow: flowFetchData}); + + setTimeout(() => { + assertFlowDataAfterCreateFetchAndUpdate(flowFetchData); + done(); + }, 50); + }); + + it('Update Existing Flow', done => { + + deepFreeze(store.getState()); + + const flowUpdateData = { + 'artifactType': 'WORKFLOW', + 'participants': [ + { + 'id': '1', + 'name': 'Customer' + }, + { + 'id': '2', + 'name': 'CCD' + }, + { + 'id': '3', + 'name': 'Infrastructure' + }, + { + 'id': '4', + 'name': 'MSO' + }, + { + 'id': '5', + 'name': 'SDN-C' + }, + { + 'id': '6', + 'name': 'A&AI' + }, + { + 'id': '7', + 'name': 'APP-C' + }, + { + 'id': '8', + 'name': 'Cloud' + }, + { + 'id': '9', + 'name': 'DCAE' + }, + { + 'id': '10', + 'name': 'ALTS' + }, + { + 'id': '11', + 'name': 'VF' + } + ], + 'serviceID': '338d75f0-aec8-4eb4-89c9-8733fcd9bf3b', + 'artifactDisplayName': 'zizizi', + 'artifactGroupType': 'INFORMATIONAL', + 'uniqueId': '338d75f0-aec8-4eb4-89c9-8733fcd9bf3b.zizizi', + 'artifactName': 'zizizi', + 'artifactLabel': 'zizizi', + 'artifactUUID': '0295a7cc-8c02-4105-9d7e-c30ce67ecd07', + 'artifactVersion': '1', + 'creationDate': 1470144601623, + 'lastUpdateDate': 1470144601623, + 'description': 'aslkjdfl asfdasdf', + 'mandatory': false, + 'timeout': 0, + 'esId': '338d75f0-aec8-4eb4-89c9-8733fcd9bf3b.zizizi', + 'artifactChecksum': 'NjBmYjc4NGM5MWIwNmNkMDhmMThhMDAwYmQxYjBiZTU=', + 'heatParameters': [], + 'sequenceDiagramModel': { + 'diagram': { + 'metadata': { + 'id': '338d75f0-aec8-4eb4-89c9-8733fcd9bf3b.zizizi', + 'name': 'zizizi', + 'ref': 'BLANK' + }, + 'lifelines': [ + { + 'id': '1', + 'name': 'Customer', + 'index': 1, + 'x': 175 + }, + { + 'id': '2', + 'name': 'CCD', + 'index': 2, + 'x': 575 + }, + { + 'id': '3', + 'name': 'Infrastructure', + 'index': 3, + 'x': 975 + }, + { + 'id': '4', + 'name': 'MSO', + 'index': 4, + 'x': 1375 + }, + { + 'id': '5', + 'name': 'SDN-C', + 'index': 5, + 'x': 1775 + }, + { + 'id': '6', + 'name': 'A&AI', + 'index': 6, + 'x': 2175 + }, + { + 'id': '7', + 'name': 'APP-C', + 'index': 7, + 'x': 2575 + }, + { + 'id': '8', + 'name': 'Cloud', + 'index': 8, + 'x': 2975 + }, + { + 'id': '9', + 'name': 'DCAE', + 'index': 9, + 'x': 3375 + }, + { + 'id': '10', + 'name': 'ALTS', + 'index': 10, + 'x': 3775 + }, + { + 'id': '11', + 'name': 'VF', + 'index': 11, + 'x': 4175 + } + ], + 'steps': [ + { + 'message': { + 'id': '9377-5036-c011-cb95-3a8b-82c6-bbb5-bc84', + 'name': '[Unnamed Message]', + 'type': 'request', + 'from': '1', + 'to': '2', + 'index': 1 + } + }, + { + 'message': { + 'id': '64c4-4fd1-b1da-4355-a060-6e48-ee47-c85c', + 'name': '[Unnamed Message]', + 'type': 'request', + 'from': '1', + 'to': '2', + 'index': 2 + } + } + ] + } + } + }; + + mockRest.addHandler('create', ({baseUrl}) => { + expect(baseUrl).toBe(`/sdc1/feProxy/rest/v1/catalog/services/${flowUpdateData.serviceID}/artifacts/${flowUpdateData.uniqueId}`); + + return { + artifactChecksum: 'MmE5MWJmN2ZlN2FhM2JhMzA0NGQ1ODMyOWFhNWI0NDA=', + artifactCreator: 'cs0008', + artifactDisplayName: 'zizizi', + artifactGroupType: 'INFORMATIONAL', + artifactLabel: 'zizizi', + artifactName: 'zizizi', + artifactType: 'WORKFLOW', + artifactUUID: '3319335b-969e-4d72-b5a2-409645de6d64', + artifactVersion: '3', + attUidLastUpdater: 'cs0008', + creationDate: 1470144601623, + description: 'aslkjdfl asfdasdf', + esId: '338d75f0-aec8-4eb4-89c9-8733fcd9bf3b.zizizi', + lastUpdateDate: 1470208425904, + mandatory: false, + payloadUpdateDate: 1470208426424, + serviceApi: false, + timeout: 0, + uniqueId: '338d75f0-aec8-4eb4-89c9-8733fcd9bf3b.zizizi', + updaterFullName: 'Carlos Santana' + }; + }); + + FlowsActions.createOrUpdateFlow(store.dispatch, {flow: flowUpdateData}, !NEW_FLOW); + + setTimeout(() => { + assertFlowDataAfterCreateFetchAndUpdate(flowUpdateData); + done(); + }, 50); + }); + + it('Delete Flow', done => { + + deepFreeze(store.getState()); + + const flowDeleteData = deepFreeze({ + artifactName: 'zizizi', + artifactType: 'WORKFLOW', + description: 'aslkjdfl asfdasdf', + serviceID: '338d75f0-aec8-4eb4-89c9-8733fcd9bf3b', + uniqueId: '338d75f0-aec8-4eb4-89c9-8733fcd9bf3b.zizizi', + participants: [] + }); + + mockRest.addHandler('destroy', ({baseUrl}) => { + expect(baseUrl).toBe(`/sdc1/feProxy/rest/v1/catalog/services/${flowDeleteData.serviceID}/artifacts/${flowDeleteData.uniqueId}`); + return {}; + }); + + FlowsActions.deleteFlow(store.dispatch, {flow: flowDeleteData}); + + setTimeout(() => { + let {flowList} = store.getState().flows; + let index = flowList.findIndex(flow => flow.uniqueId === flowDeleteData.uniqueId); + expect(index).toBe(-1); + done(); + }, 50); + }); + +}); + diff --git a/openecomp-ui/test/licenseModel/entitlementPools/test.js b/openecomp-ui/test/licenseModel/entitlementPools/test.js new file mode 100644 index 0000000000..32705385b4 --- /dev/null +++ b/openecomp-ui/test/licenseModel/entitlementPools/test.js @@ -0,0 +1,244 @@ +/*- + * ============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========================================================= + */ + +import deepFreeze from 'deep-freeze'; +import {expect} from 'chai'; +import mockRest from 'test-utils/MockRest.js'; +import {cloneAndSet} from 'test-utils/Util.js'; +import {storeCreator} from 'sdc-app/AppStore.js'; +import EntitlementPoolsActionHelper from 'sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsActionHelper.js'; + +describe('Entitlement Pools Module Tests', function () { + + const LICENSE_MODEL_ID = '555'; + + it('Load Entitlement Pools List', () => { + const entitlementPoolsList = [ + { + name: 'ep1', + description: 'string', + thresholdValue: 75, + thresholdUnits: '%', + entitlementMetric: {'choice': 'User', 'other': ''}, + increments: 'string', + aggregationFunction: {'choice': 'Average', 'other': ''}, + operationalScope: {'choices': ['Other'], 'other': 'blabla'}, + time: {'choice': 'Hour', 'other': ''}, + sku: 'DEF2-385A-4521-AAAA', + id: '1', + referencingFeatureGroups: [], + partNumber: '51529' + } + ]; + deepFreeze(entitlementPoolsList); + const store = storeCreator(); + deepFreeze(store.getState()); + + const expectedStore = cloneAndSet(store.getState(), 'licenseModel.entitlementPool.entitlementPoolsList', entitlementPoolsList); + + mockRest.addHandler('fetch', ({data, options, baseUrl}) => { + expect(baseUrl).to.equal(`/onboarding-api/v1.0/vendor-license-models/${LICENSE_MODEL_ID}/entitlement-pools`); + expect(data).to.equal(undefined); + expect(options).to.equal(undefined); + return {results: entitlementPoolsList}; + }); + + return EntitlementPoolsActionHelper.fetchEntitlementPoolsList(store.dispatch, {licenseModelId: LICENSE_MODEL_ID}).then(() => { + expect(store.getState()).to.deep.equal(expectedStore); + }); + }); + + it('Delete Entitlement Pool', () => { + const entitlementPoolsList = [ + { + name: 'ep1', + description: 'string', + thresholdValue: 75, + thresholdUnits: '%', + entitlementMetric: {'choice': 'User', 'other': ''}, + increments: 'string', + aggregationFunction: {'choice': 'Average', 'other': ''}, + operationalScope: {'choices': ['Other'], 'other': 'blabla'}, + time: {'choice': 'Hour', 'other': ''}, + sku: 'DEF2-385A-4521-AAAA', + id: '1', + referencingFeatureGroups: [], + partNumber: '51529' + } + ]; + + deepFreeze(entitlementPoolsList); + const store = storeCreator({ + licenseModel: { + entitlementPool: { + entitlementPoolsList + } + } + }); + deepFreeze(store.getState()); + + const expectedStore = cloneAndSet(store.getState(), 'licenseModel.entitlementPool.entitlementPoolsList', []); + + mockRest.addHandler('destroy', ({data, options, baseUrl}) => { + expect(baseUrl).to.equal(`/onboarding-api/v1.0/vendor-license-models/${LICENSE_MODEL_ID}/entitlement-pools/${entitlementPoolsList[0].id}`); + expect(data).to.equal(undefined); + expect(options).to.equal(undefined); + return { + results: { + returnCode: 'OK' + } + }; + }); + + return EntitlementPoolsActionHelper.deleteEntitlementPool(store.dispatch, { + licenseModelId: LICENSE_MODEL_ID, + entitlementPoolId: entitlementPoolsList[0].id + }).then(() => { + expect(store.getState()).to.deep.equal(expectedStore); + }); + }); + + it('Add Entitlement Pool', () => { + + const store = storeCreator(); + deepFreeze(store.getState()); + + const entitlementPoolPostRequest = { + name: 'ep1', + description: 'string', + thresholdValue: 75, + thresholdUnits: '%', + entitlementMetric: {'choice': 'User', 'other': ''}, + increments: 'string', + aggregationFunction: {'choice': 'Average', 'other': ''}, + operationalScope: {'choices': ['Other'], 'other': 'blabla'}, + time: {'choice': 'Hour', 'other': ''}, + manufacturerReferenceNumber: 'DEF2-385A-4521-AAAA', + }; + const entitlementPoolToAdd = { + name: 'ep1', + description: 'string', + thresholdValue: 75, + thresholdUnits: '%', + entitlementMetric: {'choice': 'User', 'other': ''}, + increments: 'string', + aggregationFunction: {'choice': 'Average', 'other': ''}, + operationalScope: {'choices': ['Other'], 'other': 'blabla'}, + time: {'choice': 'Hour', 'other': ''}, + manufacturerReferenceNumber: 'DEF2-385A-4521-AAAA', + referencingFeatureGroups: [] + }; + const entitlementPoolIdFromResponse = 'ADDED_ID'; + const entitlementPoolAfterAdd = { + ...entitlementPoolToAdd, + id: entitlementPoolIdFromResponse + }; + + const expectedStore = cloneAndSet(store.getState(), 'licenseModel.entitlementPool.entitlementPoolsList', [entitlementPoolAfterAdd]); + + mockRest.addHandler('create', ({data, options, baseUrl}) => { + expect(baseUrl).to.equal(`/onboarding-api/v1.0/vendor-license-models/${LICENSE_MODEL_ID}/entitlement-pools`); + expect(data).to.deep.equal(entitlementPoolPostRequest); + expect(options).to.equal(undefined); + return { + returnCode: 'OK', + value: entitlementPoolIdFromResponse + }; + }); + + return EntitlementPoolsActionHelper.saveEntitlementPool(store.dispatch, + { + licenseModelId: LICENSE_MODEL_ID, + previousEntitlementPool: null, + entitlementPool: entitlementPoolToAdd + } + ).then(() => { + expect(store.getState()).to.deep.equal(expectedStore); + }); + }); + + it('Update Entitlement Pool', () => { + const entitlementPoolsList = [{ + name: 'ep1', + id: '0', + description: 'string', + thresholdValue: 75, + thresholdUnits: '%', + entitlementMetric: {'choice': 'User', 'other': ''}, + increments: 'string', + aggregationFunction: {'choice': 'Average', 'other': ''}, + operationalScope: {'choices': ['Other'], 'other': 'blabla'}, + time: {'choice': 'Hour', 'other': ''}, + manufacturerReferenceNumber: 'DEF2-385A-4521-AAAA' + }]; + deepFreeze(entitlementPoolsList); + + const store = storeCreator({ + licenseModel: { + entitlementPool: { + entitlementPoolsList + } + } + }); + deepFreeze(store.getState()); + + const toBeUpdatedEntitlementPoolId = entitlementPoolsList[0].id; + const previousEntitlementPoolData = entitlementPoolsList[0]; + const entitlementPoolUpdateData = { + ...entitlementPoolsList[0], + name: 'ep1_UPDATED', + description: 'string_UPDATED' + }; + deepFreeze(entitlementPoolUpdateData); + + const entitlementPoolPutRequest = { + name: 'ep1_UPDATED', + description: 'string_UPDATED', + thresholdValue: 75, + thresholdUnits: '%', + entitlementMetric: {'choice': 'User', 'other': ''}, + increments: 'string', + aggregationFunction: {'choice': 'Average', 'other': ''}, + operationalScope: {'choices': ['Other'], 'other': 'blabla'}, + time: {'choice': 'Hour', 'other': ''}, + manufacturerReferenceNumber: 'DEF2-385A-4521-AAAA' + }; + deepFreeze(entitlementPoolPutRequest); + + const expectedStore = cloneAndSet(store.getState(), 'licenseModel.entitlementPool.entitlementPoolsList', [entitlementPoolUpdateData]); + + + mockRest.addHandler('save', ({data, options, baseUrl}) => { + expect(baseUrl).to.equal(`/onboarding-api/v1.0/vendor-license-models/${LICENSE_MODEL_ID}/entitlement-pools/${toBeUpdatedEntitlementPoolId}`); + expect(data).to.deep.equal(entitlementPoolPutRequest); + expect(options).to.equal(undefined); + return {returnCode: 'OK'}; + }); + + return EntitlementPoolsActionHelper.saveEntitlementPool(store.dispatch, { + licenseModelId: LICENSE_MODEL_ID, + previousEntitlementPool: previousEntitlementPoolData, + entitlementPool: entitlementPoolUpdateData + }).then(() => { + expect(store.getState()).to.deep.equal(expectedStore); + }); + }); + +}); diff --git a/openecomp-ui/test/licenseModel/featureGroups/test.js b/openecomp-ui/test/licenseModel/featureGroups/test.js new file mode 100644 index 0000000000..d334ab758e --- /dev/null +++ b/openecomp-ui/test/licenseModel/featureGroups/test.js @@ -0,0 +1,212 @@ +/*- + * ============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========================================================= + */ + +import {expect} from 'chai'; +import deepFreeze from 'deep-freeze'; +import mockRest from 'test-utils/MockRest.js'; +import {cloneAndSet} from 'test-utils/Util.js'; +import {storeCreator} from 'sdc-app/AppStore.js'; +import FeatureGroupsActionHelper from 'sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupsActionHelper.js'; + + +describe('Feature Groups Module Tests', function () { + + const LICENSE_MODEL_ID = '555'; + + it('Load Feature Groups List', () => { + const featureGroupsList = [ + { + name: 'fs1', + id: 0, + description: 'fs1-d', + licenseKeyGroupsIds: [1], + entitlementPoolsIds: [1], + refCount: 0 + } + ]; + deepFreeze(featureGroupsList); + const store = storeCreator(); + deepFreeze(store.getState()); + + const expectedStore = cloneAndSet(store.getState(), 'licenseModel.featureGroup.featureGroupsList', featureGroupsList); + + mockRest.addHandler('fetch', ({data, options, baseUrl}) => { + expect(baseUrl).to.equal(`/onboarding-api/v1.0/vendor-license-models/${LICENSE_MODEL_ID}/feature-groups`); + expect(data).to.equal(undefined); + expect(options).to.equal(undefined); + return {results: featureGroupsList}; + }); + + return FeatureGroupsActionHelper.fetchFeatureGroupsList(store.dispatch, {licenseModelId: LICENSE_MODEL_ID}).then(() => { + expect(store.getState()).to.deep.equal(expectedStore); + }); + }); + + it('Delete Feature Group', () => { + const featureGroupsList = [ + { + name: 'fs1', + id: 0, + description: 'fs1-d', + licenseKeyGroupsIds: [1], + entitlementPoolsIds: [1], + refCount: 0 + } + ]; + deepFreeze(featureGroupsList); + const store = storeCreator({ + licenseModel: { + featureGroup: { + featureGroupsList + } + } + }); + deepFreeze(store.getState()); + + const expectedStore = cloneAndSet(store.getState(), 'licenseModel.featureGroup.featureGroupsList', []); + + mockRest.addHandler('destroy', ({data, options, baseUrl}) => { + expect(baseUrl).to.equal(`/onboarding-api/v1.0/vendor-license-models/${LICENSE_MODEL_ID}/feature-groups/${featureGroupsList[0].id}`); + expect(data).to.equal(undefined); + expect(options).to.equal(undefined); + return { + results: { + returnCode: 'OK' + } + }; + }); + + return FeatureGroupsActionHelper.deleteFeatureGroup(store.dispatch, { + licenseModelId: LICENSE_MODEL_ID, + featureGroupId: featureGroupsList[0].id + }).then(() => { + expect(store.getState()).to.deep.equal(expectedStore); + }); + }); + + it('Add Feature Group', () => { + + const store = storeCreator(); + deepFreeze(store.getState()); + + const featureGroupPostRequest = { + name: 'fs1', + description: 'fs1-d', + partNumber: '123', + addedLicenseKeyGroupsIds: [1], + addedEntitlementPoolsIds: [1] + }; + const featureGroupToAdd = { + name: 'fs1', + description: 'fs1-d', + partNumber: '123', + licenseKeyGroupsIds: [1], + entitlementPoolsIds: [1] + }; + const featureGroupIdFromResponse = 'ADDED_ID'; + const featureGroupAfterAdd = { + ...featureGroupToAdd, + id: featureGroupIdFromResponse + }; + + const expectedStore = cloneAndSet(store.getState(), 'licenseModel.featureGroup.featureGroupsList', [featureGroupAfterAdd]); + + mockRest.addHandler('create', ({data, options, baseUrl}) => { + expect(baseUrl).to.equal(`/onboarding-api/v1.0/vendor-license-models/${LICENSE_MODEL_ID}/feature-groups`); + expect(data).to.deep.equal(featureGroupPostRequest); + expect(options).to.equal(undefined); + return { + returnCode: 'OK', + value: featureGroupIdFromResponse + }; + }); + + return FeatureGroupsActionHelper.saveFeatureGroup(store.dispatch, { + licenseModelId: LICENSE_MODEL_ID, + featureGroup: featureGroupToAdd + }).then(() => { + expect(store.getState()).to.deep.equal(expectedStore); + }); + }); + + it('Update Feature Group', () => { + const featureGroupsList = [{ + name: 'fs1', + id: 0, + description: 'fs1-d', + partNumber: '123', + licenseKeyGroupsIds: [1], + entitlementPoolsIds: [1], + refCount: 0 + }]; + deepFreeze(featureGroupsList); + + const store = storeCreator({ + licenseModel: { + featureGroup: { + featureGroupsList + } + } + }); + deepFreeze(store.getState()); + + const toBeUpdatedFeatureGroupId = featureGroupsList[0].id; + const previousFeatureGroupData = featureGroupsList[0]; + const featureGroupUpdateData = { + ...featureGroupsList[0], + name: 'fs_UPDATED', + description: 'description_UPDATED', + partNumber: '123_UPDATED', + licenseKeyGroupsIds: [7], + entitlementPoolsIds: [7] + }; + deepFreeze(featureGroupUpdateData); + + const featureGroupPutRequest = { + name: 'fs_UPDATED', + description: 'description_UPDATED', + partNumber: '123_UPDATED', + addedLicenseKeyGroupsIds: [7], + addedEntitlementPoolsIds: [7], + removedLicenseKeyGroupsIds: [1], + removedEntitlementPoolsIds: [1] + }; + deepFreeze(featureGroupPutRequest); + + const expectedStore = cloneAndSet(store.getState(), 'licenseModel.featureGroup.featureGroupsList', [featureGroupUpdateData]); + + + mockRest.addHandler('save', ({data, options, baseUrl}) => { + expect(baseUrl).to.equal(`/onboarding-api/v1.0/vendor-license-models/${LICENSE_MODEL_ID}/feature-groups/${toBeUpdatedFeatureGroupId}`); + expect(data).to.deep.equal(featureGroupPutRequest); + expect(options).to.equal(undefined); + return {returnCode: 'OK'}; + }); + + return FeatureGroupsActionHelper.saveFeatureGroup(store.dispatch, { + licenseModelId: LICENSE_MODEL_ID, + previousFeatureGroup: previousFeatureGroupData, + featureGroup: featureGroupUpdateData + }).then(() => { + expect(store.getState()).to.deep.equal(expectedStore); + }); + }); + +}); diff --git a/openecomp-ui/test/licenseModel/licenseAgreement/test.js b/openecomp-ui/test/licenseModel/licenseAgreement/test.js new file mode 100644 index 0000000000..a6e8a3d363 --- /dev/null +++ b/openecomp-ui/test/licenseModel/licenseAgreement/test.js @@ -0,0 +1,205 @@ +/*- + * ============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========================================================= + */ + +import {expect} from 'chai'; +import deepFreeze from 'deep-freeze'; +import mockRest from 'test-utils/MockRest.js'; +import {cloneAndSet} from 'test-utils/Util.js'; +import {storeCreator} from 'sdc-app/AppStore.js'; +import LicenseAgreementActionHelper from 'sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementActionHelper.js'; + + +describe('License Agreement Module Tests', () => { + + const LICENSE_MODEL_ID = '777'; + + it('Load License Agreement List', () => { + const licenseAgreementList = [ + { + id: '0', + name: 'name0', + description: 'description0', + licenseTerm: 'licenseTerm0', + requirementsAndConstrains: 'req_and_constraints0', + featureGroupsIds: ['77'] + } + ]; + deepFreeze(licenseAgreementList); + const store = storeCreator(); + deepFreeze(store.getState()); + + const expectedStore = cloneAndSet(store.getState(), 'licenseModel.licenseAgreement.licenseAgreementList', licenseAgreementList); + + mockRest.addHandler('fetch', ({options, data, baseUrl}) => { + expect(baseUrl).to.equal(`/onboarding-api/v1.0/vendor-license-models/${LICENSE_MODEL_ID}/license-agreements`); + expect(data).to.equal(undefined); + expect(options).to.equal(undefined); + return {results: licenseAgreementList}; + }); + return LicenseAgreementActionHelper.fetchLicenseAgreementList(store.dispatch, {licenseModelId: LICENSE_MODEL_ID}).then(() => { + expect(store.getState()).to.deep.equal(expectedStore); + }); + }); + + it('Delete License Agreement', () => { + const licenseAgreementList = [ + { + id: '0', + name: 'name0', + description: 'description0', + licenseTerm: 'licenseTerm0', + requirementsAndConstrains: 'req_and_constraints0', + featureGroupsIds: ['77'] + } + ]; + deepFreeze(licenseAgreementList); + const store = storeCreator({ + licenseModel: { + licenseAgreement: { + licenseAgreementList + } + } + }); + deepFreeze(store.getState()); + const toBeDeletedLicenseAgreementId = '0'; + const expectedStore = cloneAndSet(store.getState(), 'licenseModel.licenseAgreement.licenseAgreementList', []); + + mockRest.addHandler('destroy', ({data, options, baseUrl}) => { + expect(baseUrl).to.equal(`/onboarding-api/v1.0/vendor-license-models/${LICENSE_MODEL_ID}/license-agreements/${toBeDeletedLicenseAgreementId}`); + expect(data).to.equal(undefined); + expect(options).to.equal(undefined); + }); + + return LicenseAgreementActionHelper.deleteLicenseAgreement(store.dispatch, { + licenseAgreementId: toBeDeletedLicenseAgreementId, + licenseModelId: LICENSE_MODEL_ID + }).then(() => { + expect(store.getState()).to.deep.equal(expectedStore); + }); + }); + + it('Add License Agreement', () => { + const store = storeCreator(); + deepFreeze(store.getState()); + const licenseAgreementPostRequest = { + name: 'name_ADDED_LA', + description: 'description_ADDED_LA', + licenseTerm: 'licenseTerm_ADDED_LA', + requirementsAndConstrains: 'req_and_constraints_ADDED_LA', + addedFeatureGroupsIds: [] + }; + deepFreeze(licenseAgreementPostRequest); + + const licenseAgreementToAdd = { + name: 'name_ADDED_LA', + description: 'description_ADDED_LA', + licenseTerm: 'licenseTerm_ADDED_LA', + requirementsAndConstrains: 'req_and_constraints_ADDED_LA', + featureGroupsIds: [] + }; + deepFreeze(licenseAgreementToAdd); + + const licenseAgreementIdFromResponse = 'ADDED_ID'; + const licenseAgreementAfterAdd = { + ...licenseAgreementToAdd, + id: licenseAgreementIdFromResponse + }; + deepFreeze(licenseAgreementAfterAdd); + + const expectedStore = cloneAndSet(store.getState(), 'licenseModel.licenseAgreement.licenseAgreementList', [licenseAgreementAfterAdd]); + + mockRest.addHandler('create', ({options, data, baseUrl}) => { + expect(baseUrl).to.equal(`/onboarding-api/v1.0/vendor-license-models/${LICENSE_MODEL_ID}/license-agreements`); + expect(data).to.deep.equal(licenseAgreementPostRequest); + expect(options).to.equal(undefined); + return { + value: licenseAgreementIdFromResponse + }; + }); + + return LicenseAgreementActionHelper.saveLicenseAgreement(store.dispatch, { + licenseAgreement: licenseAgreementToAdd, + licenseModelId: LICENSE_MODEL_ID + }).then(() => { + expect(store.getState()).to.deep.equal(expectedStore); + }); + }); + + it('Update License Agreement', () => { + const licenseAgreementList = [ + { + id: '0', + name: 'name0', + description: 'description0', + licenseTerm: 'licenseTerm0', + requirementsAndConstrains: 'req_and_constraints0', + featureGroupsIds: ['77'] + } + ]; + const store = storeCreator({ + licenseModel: { + licenseAgreement: { + licenseAgreementList + } + } + }); + deepFreeze(store.getState()); + + const toBeUpdatedLicenseAgreementId = licenseAgreementList[0].id; + const previousLicenseAgreementData = licenseAgreementList[0]; + + const licenseAgreementUpdateData = { + ...licenseAgreementList[0], + name: 'name_UPDATED', + description: 'description_UPDATED', + licenseTerm: 'licenseTerm_UPDATED_LA', + requirementsAndConstrains: 'req_and_constraints_UPDATED_LA', + featureGroupsIds: ['update_id_1', 'update_id_2'] + }; + deepFreeze(licenseAgreementUpdateData); + + const licenseAgreementPutRequest = { + name: 'name_UPDATED', + description: 'description_UPDATED', + licenseTerm: 'licenseTerm_UPDATED_LA', + requirementsAndConstrains: 'req_and_constraints_UPDATED_LA', + addedFeatureGroupsIds: ['update_id_1', 'update_id_2'], + removedFeatureGroupsIds: ['77'] + }; + deepFreeze(licenseAgreementPutRequest); + + const expectedStore = cloneAndSet(store.getState(), 'licenseModel.licenseAgreement.licenseAgreementList', [licenseAgreementUpdateData]); + + mockRest.addHandler('save', ({data, options, baseUrl}) => { + expect(baseUrl).to.equal(`/onboarding-api/v1.0/vendor-license-models/${LICENSE_MODEL_ID}/license-agreements/${toBeUpdatedLicenseAgreementId}`); + expect(data).to.deep.equal(licenseAgreementPutRequest); + expect(options).to.equal(undefined); + }); + + return LicenseAgreementActionHelper.saveLicenseAgreement(store.dispatch, { + licenseModelId: LICENSE_MODEL_ID, + previousLicenseAgreement: previousLicenseAgreementData, + licenseAgreement: licenseAgreementUpdateData + }).then(() => { + expect(store.getState()).to.deep.equal(expectedStore); + }); + }); + +}); diff --git a/openecomp-ui/test/licenseModel/licenseKeyGroups/test.js b/openecomp-ui/test/licenseModel/licenseKeyGroups/test.js new file mode 100644 index 0000000000..944bd44e49 --- /dev/null +++ b/openecomp-ui/test/licenseModel/licenseKeyGroups/test.js @@ -0,0 +1,197 @@ +/*- + * ============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========================================================= + */ + +import {expect} from 'chai'; +import deepFreeze from 'deep-freeze'; +import mockRest from 'test-utils/MockRest.js'; +import {cloneAndSet} from 'test-utils/Util.js'; +import {storeCreator} from 'sdc-app/AppStore.js'; + +import LicenseKeyGroupsActionHelper from 'sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsActionHelper.js'; + +describe('License Key Groups Module Tests', function () { + + const LICENSE_MODEL_ID = '555'; + it('Load License Key Group', () => { + const licenseKeyGroupsList = [ + { + name: 'lsk1', + description: 'string', + type: 'Unique', + operationalScope: {'choices': ['Data_Center'], 'other': ''}, + id: '0' + } + ]; + deepFreeze(licenseKeyGroupsList); + const store = storeCreator(); + deepFreeze(store.getState()); + + const expectedStore = cloneAndSet(store.getState(), 'licenseModel.licenseKeyGroup.licenseKeyGroupsList', licenseKeyGroupsList); + + mockRest.addHandler('fetch', ({data, options, baseUrl}) => { + expect(baseUrl).to.equal(`/onboarding-api/v1.0/vendor-license-models/${LICENSE_MODEL_ID}/license-key-groups`); + expect(data).to.equal(undefined); + expect(options).to.equal(undefined); + return {results: licenseKeyGroupsList}; + }); + + return LicenseKeyGroupsActionHelper.fetchLicenseKeyGroupsList(store.dispatch, {licenseModelId: LICENSE_MODEL_ID}).then(() => { + expect(store.getState()).to.deep.equal(expectedStore); + }); + }); + + it('Delete License Key Group', () => { + const licenseKeyGroupsList = [ + { + name: 'lsk1', + description: 'string', + type: 'Unique', + operationalScope: {'choices': ['Data_Center'], 'other': ''}, + id: '0' + } + ]; + deepFreeze(licenseKeyGroupsList); + const store = storeCreator({ + licenseModel: { + licenseKeyGroup: { + licenseKeyGroupsList + } + } + }); + deepFreeze(store.getState()); + const toBeDeletedLicenseKeyGroupId = '0'; + const expectedStore = cloneAndSet(store.getState(), 'licenseModel.licenseKeyGroup.licenseKeyGroupsList', []); + + mockRest.addHandler('destroy', ({data, options, baseUrl}) => { + expect(baseUrl).to.equal(`/onboarding-api/v1.0/vendor-license-models/${LICENSE_MODEL_ID}/license-key-groups/${toBeDeletedLicenseKeyGroupId}`); + expect(data).to.equal(undefined); + expect(options).to.equal(undefined); + }); + + return LicenseKeyGroupsActionHelper.deleteLicenseKeyGroup(store.dispatch, { + licenseKeyGroupId: toBeDeletedLicenseKeyGroupId, + licenseModelId: LICENSE_MODEL_ID + }).then(() => { + expect(store.getState()).to.deep.equal(expectedStore); + }); + }); + + it('Add License Key Group', () => { + + const store = storeCreator(); + deepFreeze(store.getState()); + + const licenseKeyGroupPostRequest = { + name: 'lsk1_ADDED', + description: 'string_ADDED', + type: 'Unique_ADDED', + operationalScope: {'choices': ['Data_Center'], 'other': ''} + }; + deepFreeze(licenseKeyGroupPostRequest); + + const licenseKeyGroupToAdd = { + ...licenseKeyGroupPostRequest + }; + + deepFreeze(licenseKeyGroupToAdd); + + const licenseKeyGroupIdFromResponse = 'ADDED_ID'; + const licenseKeyGroupAfterAdd = { + ...licenseKeyGroupToAdd, + id: licenseKeyGroupIdFromResponse + }; + deepFreeze(licenseKeyGroupAfterAdd); + + const expectedStore = cloneAndSet(store.getState(), 'licenseModel.licenseKeyGroup.licenseKeyGroupsList', [licenseKeyGroupAfterAdd]); + + mockRest.addHandler('create', ({options, data, baseUrl}) => { + expect(baseUrl).to.equal(`/onboarding-api/v1.0/vendor-license-models/${LICENSE_MODEL_ID}/license-key-groups`); + expect(data).to.deep.equal(licenseKeyGroupPostRequest); + expect(options).to.equal(undefined); + return { + value: licenseKeyGroupIdFromResponse + }; + }); + + return LicenseKeyGroupsActionHelper.saveLicenseKeyGroup(store.dispatch, { + licenseKeyGroup: licenseKeyGroupToAdd, + licenseModelId: LICENSE_MODEL_ID + }).then(() => { + expect(store.getState()).to.deep.equal(expectedStore); + }); + }); + + it('Update License Key Group', () => { + const licenseKeyGroupsList = [ + { + name: 'lsk1', + description: 'string', + type: 'Unique', + operationalScope: {'choices': ['Data_Center'], 'other': ''}, + id: '0' + } + ]; + deepFreeze(licenseKeyGroupsList); + const store = storeCreator({ + licenseModel: { + licenseKeyGroup: { + licenseKeyGroupsList + } + } + }); + + const toBeUpdatedLicenseKeyGroupId = licenseKeyGroupsList[0].id; + const previousLicenseKeyGroupData = licenseKeyGroupsList[0]; + + const licenseKeyGroupUpdateData = { + ...licenseKeyGroupsList[0], + name: 'lsk1_UPDATE', + description: 'string_UPDATE', + type: 'Unique', + operationalScope: {'choices': ['Data_Center'], 'other': ''} + }; + deepFreeze(licenseKeyGroupUpdateData); + + const licenseKeyGroupPutRequest = { + name: 'lsk1_UPDATE', + description: 'string_UPDATE', + type: 'Unique', + operationalScope: {'choices': ['Data_Center'], 'other': ''} + }; + deepFreeze(licenseKeyGroupPutRequest); + + const expectedStore = cloneAndSet(store.getState(), 'licenseModel.licenseKeyGroup.licenseKeyGroupsList', [licenseKeyGroupUpdateData]); + + mockRest.addHandler('save', ({data, options, baseUrl}) => { + expect(baseUrl).to.equal(`/onboarding-api/v1.0/vendor-license-models/${LICENSE_MODEL_ID}/license-key-groups/${toBeUpdatedLicenseKeyGroupId}`); + expect(data).to.deep.equal(licenseKeyGroupPutRequest); + expect(options).to.equal(undefined); + }); + + return LicenseKeyGroupsActionHelper.saveLicenseKeyGroup(store.dispatch, { + previousLicenseKeyGroup: previousLicenseKeyGroupData, + licenseKeyGroup: licenseKeyGroupUpdateData, + licenseModelId: LICENSE_MODEL_ID + }).then(() => { + expect(store.getState()).to.deep.equal(expectedStore); + }); + }); + +}); diff --git a/openecomp-ui/test/licenseModel/test.js b/openecomp-ui/test/licenseModel/test.js new file mode 100644 index 0000000000..c21d18f146 --- /dev/null +++ b/openecomp-ui/test/licenseModel/test.js @@ -0,0 +1,66 @@ +/*- + * ============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========================================================= + */ + +import {expect} from 'chai'; +import deepFreeze from 'deep-freeze'; +import mockRest from 'test-utils/MockRest.js'; +import {cloneAndSet} from 'test-utils/Util.js'; +import {storeCreator} from 'sdc-app/AppStore.js'; +import LicenseModelCreationActionHelper from 'sdc-app/onboarding/licenseModel/creation/LicenseModelCreationActionHelper.js'; + +describe('License Model Module Tests', function () { + it('Add License Model', () => { + const store = storeCreator(); + deepFreeze(store.getState()); + + const licenseModelPostRequest = deepFreeze({ + vendorName: 'vlm1', + description: 'string', + iconRef: 'icon' + }); + + const licenseModelToAdd = deepFreeze({ + ...licenseModelPostRequest + }); + + const licenseModelIdFromResponse = 'ADDED_ID'; + const licenseModelAfterAdd = deepFreeze({ + ...licenseModelToAdd, + id: licenseModelIdFromResponse + }); + + const expectedStore = cloneAndSet(store.getState(), 'licenseModelList', [licenseModelAfterAdd]); + + mockRest.addHandler('create', ({options, data, baseUrl}) => { + expect(baseUrl).to.equal('/onboarding-api/v1.0/vendor-license-models/'); + expect(data).to.deep.equal(licenseModelPostRequest); + expect(options).to.equal(undefined); + return { + value: licenseModelIdFromResponse + }; + }); + + return LicenseModelCreationActionHelper.createLicenseModel(store.dispatch, { + licenseModel: licenseModelToAdd + }).then(() => { + expect(store.getState()).to.deep.equal(expectedStore); + }); + }); +}); diff --git a/openecomp-ui/test/nfvo-components/input/dualListBox/dualListbox.test.js b/openecomp-ui/test/nfvo-components/input/dualListBox/dualListbox.test.js new file mode 100644 index 0000000000..eaa06eedf4 --- /dev/null +++ b/openecomp-ui/test/nfvo-components/input/dualListBox/dualListbox.test.js @@ -0,0 +1,94 @@ +/*- + * ============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========================================================= + */ + +import expect from 'expect'; +import React from 'react'; +import TestUtils from 'react-addons-test-utils'; +import DualListboxView from 'nfvo-components/input/dualListbox/DualListboxView.jsx'; + +const ITEMS = [{id: '1', name: 'aaa'}, {id: '2', name: 'bbb'}, {id: '3', name: 'ccc'}]; + +describe('dualListBox Module Tests', function () { + + + it('should render basically', () => { + var renderer = TestUtils.createRenderer(); + renderer.render({}}/>); + var renderedOutput = renderer.getRenderOutput(); + expect(renderedOutput).toExist(); + }); + + it('should render with available list and 4 control buttons', () => { + var view = TestUtils.renderIntoDocument({}}/>); + expect(view).toExist(); + var results = TestUtils.scryRenderedDOMComponentsWithClass(view, 'dual-list-option'); + expect(results.length).toBe(4); + }); + + it('should add item to selected list', done => { + const newItemValue = 'new item'; + let onChange = (value)=> { + expect(value).toEqual(newItemValue); + done(); + }; + var view = new DualListboxView({availableList:ITEMS, onChange, selectedValuesList:[]}); + expect(view).toExist(); + view.refs = { + availableValues: {getValue(){return newItemValue;}} + }; + view.addToSelectedList(); + }); + + it('should remove item from selected list', done => { + const selectedValuesList = ['a','b']; + let onChange = (value)=> { + expect(value).toEqual(selectedValuesList[1]); + done(); + }; + var view = new DualListboxView({availableList:ITEMS, onChange, selectedValuesList}); + expect(view).toExist(); + view.refs = { + selectedValues: {getValue(){return ['a'];}} + }; + view.removeFromSelectedList(); + }); + + it('should add all items to selected list', done => { + let onChange = (value)=> { + expect(value).toEqual(ITEMS.map(item => item.id)); + done(); + }; + var view = new DualListboxView({availableList:ITEMS, onChange, selectedValuesList:[]}); + expect(view).toExist(); + view.addAllToSelectedList(); + }); + + it('should remove all items from selected list', done => { + let onChange = (value)=> { + expect(value.length).toBe(0); + done(); + }; + var view = new DualListboxView({availableList:ITEMS, onChange, selectedValuesList:[]}); + expect(view).toExist(); + view.removeAllFromSelectedList(); + }); + + +}); diff --git a/openecomp-ui/test/nfvo-components/listEditor/listEditor.test.js b/openecomp-ui/test/nfvo-components/listEditor/listEditor.test.js new file mode 100644 index 0000000000..a3b098f611 --- /dev/null +++ b/openecomp-ui/test/nfvo-components/listEditor/listEditor.test.js @@ -0,0 +1,96 @@ +/*- + * ============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========================================================= + */ + +import expect from 'expect'; +import React from 'react'; +import TestUtils from 'react-addons-test-utils'; +import ListEditorView from 'src/nfvo-components/listEditor/ListEditorView.jsx'; +import ListEditorItemView from 'src/nfvo-components/listEditor/ListEditorItemView.jsx'; + +describe('listEditor Module Tests', function () { + + + it('list editor view should exist', () => { + expect(ListEditorView).toExist(); + }); + + it('list editor item view should exist', () => { + expect(ListEditorItemView).toExist(); + }); + + it('should render list and list item and call onEdit', done => { + let itemView = TestUtils.renderIntoDocument( + + +
      +
      +
      + ); + expect(itemView).toExist(); + let sliderIcon = TestUtils.findRenderedDOMComponentWithClass(itemView, 'fa-sliders'); + TestUtils.Simulate.click(sliderIcon); + }); + + it('should render list and list item and call onFilter', done => { + let itemView = TestUtils.renderIntoDocument( + {done();}}> + +
      +
      +
      + ); + expect(itemView).toExist(); + let filterInput = TestUtils.findRenderedDOMComponentWithTag(itemView, 'input'); + TestUtils.Simulate.change(filterInput); + }); + + it('should render READONLY list item and not call onEdit', done => { + let itemView = TestUtils.renderIntoDocument( + +
      +
      + ); + expect(itemView).toExist(); + let sliderIcon = TestUtils.findRenderedDOMComponentWithClass(itemView, 'fa-sliders'); + TestUtils.Simulate.click(sliderIcon); + }); + + it('should render list item and call onDelete', done => { + let itemView = TestUtils.renderIntoDocument( + +
      +
      + ); + expect(itemView).toExist(); + let sliderIcon = TestUtils.findRenderedDOMComponentWithClass(itemView, 'fa-trash-o'); + TestUtils.Simulate.click(sliderIcon); + }); + + it('should render READONLY list item and not call onDelete', () => { + let itemView = TestUtils.renderIntoDocument( + {}} isReadOnlyMode={true}> +
      +
      + ); + expect(itemView).toExist(); + let sliderIcon = TestUtils.scryRenderedDOMComponentsWithClass(itemView, 'fa-trash-o'); + expect(sliderIcon).toEqual(0); + }); +}); diff --git a/openecomp-ui/test/nfvo-components/notifications/notificationsModal.test.js b/openecomp-ui/test/nfvo-components/notifications/notificationsModal.test.js new file mode 100644 index 0000000000..f84d38246d --- /dev/null +++ b/openecomp-ui/test/nfvo-components/notifications/notificationsModal.test.js @@ -0,0 +1,144 @@ +/*- + * ============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========================================================= + */ + +import expect from 'expect'; +import React from 'react'; +import TestUtils from 'react-addons-test-utils'; +import store from 'sdc-app/AppStore.js'; +import ConnectedNotificationModal, {NotificationModal} from 'nfvo-components/notifications/NotificationModal.jsx'; +import NotificationConstants from 'nfvo-components/notifications/NotificationConstants.js'; + +const title = 'test title'; +const msg = 'test msg'; + +describe('Notification Modal Mapper and View Class: ', function () { + + it('notification should show with type error', done => { + store.dispatch({type: NotificationConstants.NOTIFY_ERROR, data: {title, msg}}); + setTimeout(()=> { + expect(store.getState().notification).toExist(); + expect(store.getState().notification.type).toBe('error'); + done(); + }, 0); + }); + + it('notification should show with type default', done => { + store.dispatch({type: NotificationConstants.NOTIFY_INFO, data: {title, msg}}); + setTimeout(()=> { + expect(store.getState().notification).toExist(); + expect(store.getState().notification.type).toBe('default'); + done(); + }, 0); + }); + + it('notification should show with type warning', done => { + store.dispatch({type: NotificationConstants.NOTIFY_WARNING, data: {title, msg}}); + setTimeout(()=> { + expect(store.getState().notification).toExist(); + expect(store.getState().notification.type).toBe('warning'); + done(); + }, 0); + }); + + it('notification should show with type success', done => { + store.dispatch({type: NotificationConstants.NOTIFY_SUCCESS, data: {title, msg}}); + setTimeout(()=> { + expect(store.getState().notification).toExist(); + expect(store.getState().notification.type).toBe('success'); + done(); + }, 0); + }); + + it('notification should show with type success with connected component', done => { + store.dispatch({type: NotificationConstants.NOTIFY_SUCCESS, data: {title, msg}}); + setTimeout(()=> { + expect(store.getState().notification).toExist(); + expect(store.getState().notification.type).toBe('success'); + let renderer = TestUtils.createRenderer(); + renderer.render(); + let renderedOutput = renderer.getRenderOutput(); + expect(renderedOutput).toExist(); + done(); + }, 0); + }); + + it('notification should hide with connected component', done => { + setTimeout(()=> { + expect(store.getState().notification).toNotExist(); + let renderer = TestUtils.createRenderer(); + renderer.render(); + let renderedOutput = renderer.getRenderOutput(); + expect(renderedOutput).toExist(); + done(); + }, 0); + store.dispatch({type: NotificationConstants.NOTIFY_CLOSE}); + }); + + it('notification should hide', done => { + store.dispatch({type: NotificationConstants.NOTIFY_CLOSE}); + setTimeout(()=> { + expect(store.getState().notification).toNotExist(); + done(); + }, 0); + }); + + it('NotificationModal should not render', ()=> { + let renderer = TestUtils.createRenderer(); + renderer.render(); + let renderedOutput = renderer.getRenderOutput(); + expect(renderedOutput).toExist(); + }); + + it('NotificationModal basic default render', ()=> { + expect(window.document).toExist(); + let document = TestUtils.renderIntoDocument( + {}}/> + ); + var result = TestUtils.findAllInRenderedTree(document, element => element.props.className === 'notification-modal primary'); + expect(result.length).toBeGreaterThan(0); + }); + + it('NotificationModal basic error render', ()=> { + expect(window.document).toExist(); + let document = TestUtils.renderIntoDocument( + {}}/> + ); + var result = TestUtils.findAllInRenderedTree(document, element => element.props.className === 'notification-modal danger'); + expect(result.length).toBeGreaterThan(0); + }); + + it('NotificationModal basic warning render', ()=> { + expect(window.document).toExist(); + let document = TestUtils.renderIntoDocument( + {}}/> + ); + var result = TestUtils.findAllInRenderedTree(document, element => element.props.className === 'notification-modal warning'); + expect(result.length).toBeGreaterThan(0); + }); + + it('NotificationModal basic success render', ()=> { + expect(window.document).toExist(); + let document = TestUtils.renderIntoDocument( + {}}/> + ); + var result = TestUtils.findAllInRenderedTree(document, element => element.props.className === 'notification-modal success'); + expect(result.length).toBeGreaterThan(0); + }); +}); diff --git a/openecomp-ui/test/nfvo-components/panel/VersionController/versionController.test.js b/openecomp-ui/test/nfvo-components/panel/VersionController/versionController.test.js new file mode 100644 index 0000000000..9ab18137cf --- /dev/null +++ b/openecomp-ui/test/nfvo-components/panel/VersionController/versionController.test.js @@ -0,0 +1,44 @@ +/*- + * ============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========================================================= + */ + +import expect from 'expect'; +import React from 'react'; +import TestUtils from 'react-addons-test-utils'; +import VersionController from 'nfvo-components/panel/versionController/VersionController.jsx'; +import {actionsEnum} from 'nfvo-components/panel/versionController/VersionControllerConstants.js'; + +describe('versionController UI Component', () => { + + it('function does exist', () => { + var renderer = TestUtils.createRenderer(); + renderer.render(); + var renderedOutput = renderer.getRenderOutput(); + expect(renderedOutput).toExist(); + }); + + it('validating checkin function', () => { + + let versionController = TestUtils.renderIntoDocument({return Promise.resolve();}}/>); + let cb = action => expect(action).toBe(actionsEnum.CHECK_IN); + versionController.checkin(cb); + + }); + +}); diff --git a/openecomp-ui/test/nfvo-components/panel/VersionController/versionControllerUtils.test.js b/openecomp-ui/test/nfvo-components/panel/VersionController/versionControllerUtils.test.js new file mode 100644 index 0000000000..0e4a92118e --- /dev/null +++ b/openecomp-ui/test/nfvo-components/panel/VersionController/versionControllerUtils.test.js @@ -0,0 +1,172 @@ +/*- + * ============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========================================================= + */ + +import expect from 'expect'; +import deepFreeze from 'deep-freeze'; +import Configuration from 'sdc-app/config/Configuration.js'; +import VersionControllerUtils from 'nfvo-components/panel/versionController/VersionControllerUtils.js'; +import {statusEnum} from 'nfvo-components/panel/versionController/VersionControllerConstants.js'; + +const status = 'testStatus'; + +describe('versionController UI Component', () => { + + it('function does exist', () => { + expect(VersionControllerUtils).toExist(); + }); + + it('validating getCheckOutStatusKindByUserID - without "UserID"', () => { + var result = VersionControllerUtils.getCheckOutStatusKindByUserID(status); + expect(result.status).toBe(status); + expect(result.isCheckedOut).toBe(true); + }); + + it('validating getCheckOutStatusKindByUserID - without "UserID" with locking user', () => { + var result = VersionControllerUtils.getCheckOutStatusKindByUserID(status, 'locking user'); + expect(result.status).toBe(statusEnum.LOCK_STATUS); + expect(result.isCheckedOut).toBe(false); + }); + + it('validating getCheckOutStatusKindByUserID - with "UserID" with configuration set', () => { + const userId = 'att'; + + Configuration.set('ATTUserID', userId); + var result = VersionControllerUtils.getCheckOutStatusKindByUserID(status, userId); + Configuration.set('ATTUserID', undefined); + + expect(result.status).toBe(status); + expect(result.isCheckedOut).toBe(true); + }); + + + + it('validating isCheckedOutByCurrentUser - when resource is not checked out', () => { + const currentUser = 'current'; + const resource = deepFreeze({ + version: '0.6', + viewableVersions: ['0.1', '0.2', '0.3', '0.4', '0.5', '0.6'], + status: 'Final' + }); + + Configuration.set('ATTUserID', currentUser); + const result = VersionControllerUtils.isCheckedOutByCurrentUser(resource); + Configuration.set('ATTUserID', undefined); + + expect(result).toBe(false); + }); + + it('validating isCheckedOutByCurrentUser - when resource is checked out', () => { + const currentUser = 'current'; + const resource = deepFreeze({ + version: '0.6', + viewableVersions: ['0.1', '0.2', '0.3', '0.4', '0.5', '0.6'], + status: 'Locked', + lockingUser: 'current' + }); + + Configuration.set('ATTUserID', currentUser); + const result = VersionControllerUtils.isCheckedOutByCurrentUser(resource); + Configuration.set('ATTUserID', undefined); + + expect(result).toBe(true); + }); + + it('validating isCheckedOutByCurrentUser - when resource is checked out by another user', () => { + const currentUser = 'current'; + const resource = deepFreeze({ + version: '0.6', + viewableVersions: ['0.1', '0.2', '0.3', '0.4', '0.5', '0.6'], + status: 'Locked', + lockingUser: 'another' + }); + + Configuration.set('ATTUserID', currentUser); + const result = VersionControllerUtils.isCheckedOutByCurrentUser(resource); + Configuration.set('ATTUserID', undefined); + + expect(result).toBe(false); + }); + + + + it('validating isReadOnly - when resource is not checked out', () => { + const currentUser = 'current'; + const resource = deepFreeze({ + version: '0.6', + viewableVersions: ['0.1', '0.2', '0.3', '0.4', '0.5', '0.6'], + status: 'Final' + }); + + Configuration.set('ATTUserID', currentUser); + const result = VersionControllerUtils.isReadOnly(resource); + Configuration.set('ATTUserID', undefined); + + expect(result).toBe(true); + }); + + it('validating isReadOnly - when resource is checked out', () => { + const currentUser = 'current'; + const resource = deepFreeze({ + version: '0.6', + viewableVersions: ['0.1', '0.2', '0.3', '0.4', '0.5', '0.6'], + status: 'Locked', + lockingUser: 'current' + }); + + Configuration.set('ATTUserID', currentUser); + const result = VersionControllerUtils.isReadOnly(resource); + Configuration.set('ATTUserID', undefined); + + expect(result).toBe(false); + }); + + it('validating isReadOnly - when version of resource is not latest', () => { + const currentUser = 'current'; + const resource = deepFreeze({ + version: '0.2', + viewableVersions: ['0.1', '0.2', '0.3', '0.4', '0.5', '0.6'], + status: 'Locked', + lockingUser: 'current' + }); + + Configuration.set('ATTUserID', currentUser); + const result = VersionControllerUtils.isReadOnly(resource); + Configuration.set('ATTUserID', undefined); + + expect(result).toBe(true); + }); + + it('validating isReadOnly - when resource is checked out by another user', () => { + const currentUser = 'current'; + const resource = deepFreeze({ + version: '0.6', + viewableVersions: ['0.1', '0.2', '0.3', '0.4', '0.5', '0.6'], + status: 'Locked', + lockingUser: 'another' + }); + + Configuration.set('ATTUserID', currentUser); + const result = VersionControllerUtils.isReadOnly(resource); + Configuration.set('ATTUserID', undefined); + + expect(result).toBe(true); + }); +}); + diff --git a/openecomp-ui/test/setup.test.js b/openecomp-ui/test/setup.test.js new file mode 100644 index 0000000000..72f8b954b8 --- /dev/null +++ b/openecomp-ui/test/setup.test.js @@ -0,0 +1,25 @@ +/*- + * ============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========================================================= + */ + +import mockRest from 'test-utils/MockRest.js'; + +beforeEach(function() { + mockRest.resetQueue(); +}); diff --git a/openecomp-ui/test/softwareProduct/attachments/SoftwareProductAttachmentsView.test.js b/openecomp-ui/test/softwareProduct/attachments/SoftwareProductAttachmentsView.test.js new file mode 100644 index 0000000000..839176c970 --- /dev/null +++ b/openecomp-ui/test/softwareProduct/attachments/SoftwareProductAttachmentsView.test.js @@ -0,0 +1,198 @@ +/*- + * ============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========================================================= + */ + +import expect from 'expect'; +import React from 'react'; +import TestUtils from 'react-addons-test-utils'; +import {mapStateToProps} from 'sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachments.js'; + +import SoftwareProductAttachmentsView from 'sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsView.jsx'; +import {statusEnum as versionStatusEnum} from 'nfvo-components/panel/versionController/VersionControllerConstants.js'; + + +describe('SoftwareProductAttachments Modal Mapper and View Classes', () => { + + it ('mapStateToProps mapper exists', () => { + expect(mapStateToProps).toExist(); + }); + + + it ('mapStateToProps check data', () => { + + const currentSoftwareProduct = { + name: 'VSp', + description: 'dfdf', + vendorName: 'V1', + vendorId: '97B3E2525E0640ACACF87CE6B3753E80', + category: 'resourceNewCategory.application l4+', + subCategory: 'resourceNewCategory.application l4+.database', + id: 'D4774719D085414E9D5642D1ACD59D20', + version: '0.10', + viewableVersions: ['0.1', '0.2'], + status: versionStatusEnum.CHECK_OUT_STATUS, + lockingUser: 'cs0008' + }; + const atTree = { + 'children': [ + { + 'name': 'HEAT', + 'expanded': true, + 'type': 'heat', + 'children': [ + { + 'name': 'heat_zxeyCtMHhf2.yaml', + 'expanded': true, + 'type': 'heat', + 'errors': [ + { + 'level': 'WARNING', + 'message': 'Resource is not defined as output and thus cannot be Shared. resource id - network_4' + } + ], + 'children': [ + { + 'name': 'heat_env_zxeyCtMHhf2.env', + 'type': 'env' + } + ] + } + ] + } + ] + }; + const errorList = [ + { + 'errorLevel': 'WARNING', + 'errorMessage': 'Resource is not defined as output and thus cannot be Shared. resource id - network_4', + 'name': 'heat_zxeyCtMHhf2.yaml', + 'hasParent': false, + 'parentName': 'HEAT', + 'type': 'heat' + }, + { + 'errorLevel': 'WARNING', + 'errorMessage': 'Resource is not defined as output and thus cannot be Shared. resource id - network_3', + 'name': 'heat_zxeyCtMHhf2.yaml', + 'hasParent': false, + 'parentName': 'HEAT', + 'type': 'heat' + } + ]; + + var obj = { + softwareProduct: { + softwareProductEditor: { + data:currentSoftwareProduct + }, softwareProductAttachments: + { + attachmentsTree: atTree, + errorList: errorList + } + } + }; + + var results = mapStateToProps(obj); + expect(results.attachmentsTree).toExist(); + expect(results.errorList).toExist(); + expect(results.hoveredNode).toBe(undefined); + expect(results.selectedNode).toBe(undefined); + }); + + + it('function does exist', () => { + + const currentSoftwareProduct = { + name: 'VSp', + description: 'dfdf', + vendorName: 'V1', + vendorId: '97B3E2525E0640ACACF87CE6B3753E80', + category: 'resourceNewCategory.application l4+', + subCategory: 'resourceNewCategory.application l4+.database', + id: 'D4774719D085414E9D5642D1ACD59D20', + version: '0.10', + viewableVersions: ['0.1', '0.2'], + status: versionStatusEnum.CHECK_OUT_STATUS, + lockingUser: 'cs0008' + }; + const versionControllerData = { + version: currentSoftwareProduct.version, + viewableVersions:currentSoftwareProduct.viewableVersions, + status: currentSoftwareProduct.status, + isCheckedOut: true + }; + const atTree = { + 'children': [ + { + 'name': 'HEAT', + 'expanded': true, + 'type': 'heat', + 'children': [ + { + 'name': 'heat_zxeyCtMHhf2.yaml', + 'expanded': true, + 'type': 'heat', + 'errors': [ + { + 'level': 'WARNING', + 'message': 'Resource is not defined as output and thus cannot be Shared. resource id - network_4' + } + ], + 'children': [ + { + 'name': 'heat_env_zxeyCtMHhf2.env', + 'type': 'env' + } + ] + } + ] + } + ] + }; + const errorList = [ + { + 'errorLevel': 'WARNING', + 'errorMessage': 'Resource is not defined as output and thus cannot be Shared. resource id - network_4', + 'name': 'heat_zxeyCtMHhf2.yaml', + 'hasParent': false, + 'parentName': 'HEAT', + 'type': 'heat' + }, + { + 'errorLevel': 'WARNING', + 'errorMessage': 'Resource is not defined as output and thus cannot be Shared. resource id - network_3', + 'name': 'heat_zxeyCtMHhf2.yaml', + 'hasParent': false, + 'parentName': 'HEAT', + 'type': 'heat' + } + ]; + + + var renderer = TestUtils.createRenderer(); + renderer.render(); + var renderedOutput = renderer.getRenderOutput(); + expect(renderedOutput).toExist(); + }); + +}); diff --git a/openecomp-ui/test/softwareProduct/attachments/SoftwareproductAttachmentsHelper.test.js b/openecomp-ui/test/softwareProduct/attachments/SoftwareproductAttachmentsHelper.test.js new file mode 100644 index 0000000000..851560caa8 --- /dev/null +++ b/openecomp-ui/test/softwareProduct/attachments/SoftwareproductAttachmentsHelper.test.js @@ -0,0 +1,153 @@ +/*- + * ============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========================================================= + */ + +import expect from 'expect'; +import SoftwareProductAttachmentsActionHelper from 'sdc-app/onboarding/softwareProduct/attachments/SoftwareProductAttachmentsActionHelper.js'; +import {storeCreator} from 'sdc-app/AppStore.js'; +import deepFreeze from 'deep-freeze'; +import {actionTypes} from 'sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js'; + + + + + + +describe('SoftwareProductAttachments ActionHelper', () => { + + it('function does exist', () => { + expect(SoftwareProductAttachmentsActionHelper).toExist(); + }); + + it('toggleExpanded function check', () => { + + + const validationData = { + importStructure: { + HEAT: [ + { + fileName: 'hot-mog-0108-bs1271.yml', + env: { + fileName: 'hot-mog-0108-bs1271.env' + }, + errors: [ + { + 'level': 'WARNING', + 'message': 'Port not bind to any NOVA Server, Resource Id [sm02_port_2]' + }, + { + 'level': 'WARNING', + 'message': 'Port not bind to any NOVA Server, Resource Id [sm01_port_2]' + } + ] + } + ] + } + }; + + const currentSoftwareProduct = { + name: 'VSp', + description: 'dfdf', + vendorName: 'V1', + vendorId: '97B3E2525E0640ACACF87CE6B3753E80', + category: 'resourceNewCategory.application l4+', + subCategory: 'resourceNewCategory.application l4+.database', + id: 'D4774719D085414E9D5642D1ACD59D20', + version: '0.10', + viewableVersions: ['0.1', '0.2'], + status: 'Locked', + lockingUser: 'cs0008', + validationData + }; + + + const store = storeCreator(); + deepFreeze(store.getState()); + deepFreeze(currentSoftwareProduct); + + store.dispatch({ + type:actionTypes.SOFTWARE_PRODUCT_LOADED, + response: currentSoftwareProduct + }); + + expect(store.getState().softwareProduct.softwareProductAttachments.attachmentsTree.children[0].expanded).toBe(true); + SoftwareProductAttachmentsActionHelper.toggleExpanded(store.dispatch, {path:[0]}); + expect(store.getState().softwareProduct.softwareProductAttachments.attachmentsTree.children[0].expanded).toBe(false); + }); + + it('onSelectNode & onUnselectNode function check', () => { + + + const validationData = { + importStructure: { + HEAT: [ + { + fileName: 'hot-mog-0108-bs1271.yml', + env: { + fileName: 'hot-mog-0108-bs1271.env' + }, + errors: [ + { + 'level': 'WARNING', + 'message': 'Port not bind to any NOVA Server, Resource Id [sm02_port_2]' + }, + { + 'level': 'WARNING', + 'message': 'Port not bind to any NOVA Server, Resource Id [sm01_port_2]' + } + ] + } + ] + } + }; + + const currentSoftwareProduct = { + name: 'VSp', + description: 'dfdf', + vendorName: 'V1', + vendorId: '97B3E2525E0640ACACF87CE6B3753E80', + category: 'resourceNewCategory.application l4+', + subCategory: 'resourceNewCategory.application l4+.database', + id: 'D4774719D085414E9D5642D1ACD59D20', + version: '0.10', + viewableVersions: ['0.1', '0.2'], + status: 'Locked', + lockingUser: 'cs0008', + validationData + }; + + deepFreeze(currentSoftwareProduct); + + const store = storeCreator(); + deepFreeze(store.getState()); + + store.dispatch({ + type:actionTypes.SOFTWARE_PRODUCT_LOADED, + response: currentSoftwareProduct + }); + let expectedNodeName = 'name'; + expect(store.getState().softwareProduct.softwareProductAttachments.selectedNode).toBe(undefined); + SoftwareProductAttachmentsActionHelper.onSelectNode(store.dispatch, {nodeName:expectedNodeName}); + expect(store.getState().softwareProduct.softwareProductAttachments.selectedNode).toBe(expectedNodeName); + SoftwareProductAttachmentsActionHelper.onUnselectNode(store.dispatch); + expect(store.getState().softwareProduct.softwareProductAttachments.selectedNode).toBe(undefined); + }); + + +}); diff --git a/openecomp-ui/test/softwareProduct/components/compute/test.js b/openecomp-ui/test/softwareProduct/components/compute/test.js new file mode 100644 index 0000000000..925de302b8 --- /dev/null +++ b/openecomp-ui/test/softwareProduct/components/compute/test.js @@ -0,0 +1,132 @@ +/*- + * ============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========================================================= + */ + +import expect from 'expect'; +import deepFreeze from 'deep-freeze'; +import mockRest from 'test-utils/MockRest.js'; +import {cloneAndSet} from 'test-utils/Util.js'; +import {storeCreator} from 'sdc-app/AppStore.js'; +import Configuration from 'sdc-app/config/Configuration.js'; +import SoftwareProductComponentsActionHelper from 'sdc-app/onboarding/softwareProduct/components/SoftwareProductComponentsActionHelper.js'; + +const softwareProductId = '123'; +const vspComponentId = '111'; + +describe('Software Product Components Compute Module Tests', function () { + + let restPrefix = ''; + + before(function() { + restPrefix = Configuration.get('restPrefix'); + deepFreeze(restPrefix); + }); + + it('Get Software Products Components Compute', () => { + const store = storeCreator(); + deepFreeze(store.getState()); + + const softwareProductComponentCompute = { + data: JSON.stringify({'vmSizing':{'numOfCPUs':'3','fileSystemSizeGB':'888'},'numOfVMs':{'minimum':'2'}}), + schema: JSON.stringify({'vmSizing':{'numOfCPUs':'3','fileSystemSizeGB':'888'},'numOfVMs':{'minimum':'2'}}) + }; + deepFreeze(softwareProductComponentCompute); + + const softwareProductComponentComputeData = { + qdata: JSON.parse(softwareProductComponentCompute.data), + qschema: JSON.parse(softwareProductComponentCompute.schema) + }; + deepFreeze(softwareProductComponentComputeData); + + const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductComponents.componentEditor', softwareProductComponentComputeData); + + mockRest.addHandler('fetch', ({options, data, baseUrl}) => { + expect(baseUrl).toEqual(`${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/components/${vspComponentId}/questionnaire`); + expect(data).toEqual(undefined); + expect(options).toEqual(undefined); + return softwareProductComponentCompute; + }); + + return SoftwareProductComponentsActionHelper.fetchSoftwareProductComponentQuestionnaire(store.dispatch, {softwareProductId, vspComponentId}).then(() => { + expect(store.getState()).toEqual(expectedStore); + }); + }); + + it('Get Empty Software Products Components Compute', () => { + const store = storeCreator(); + deepFreeze(store.getState()); + + const softwareProductComponentQuestionnaire = { + data: null, + schema: JSON.stringify({'vmSizing':{'numOfCPUs':'3','fileSystemSizeGB':'888'},'numOfVMs':{'minimum':'2'}}) + }; + deepFreeze(softwareProductComponentQuestionnaire); + + const softwareProductComponentQuestionnaireData = { + qdata: {}, + qschema: JSON.parse(softwareProductComponentQuestionnaire.schema) + }; + deepFreeze(softwareProductComponentQuestionnaireData); + + const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductComponents.componentEditor', softwareProductComponentQuestionnaireData); + + mockRest.addHandler('fetch', ({options, data, baseUrl}) => { + expect(baseUrl).toEqual(`${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/components/${vspComponentId}/questionnaire`); + expect(data).toEqual(undefined); + expect(options).toEqual(undefined); + return softwareProductComponentQuestionnaire; + }); + + return SoftwareProductComponentsActionHelper.fetchSoftwareProductComponentQuestionnaire(store.dispatch, {softwareProductId, vspComponentId}).then(() => { + expect(store.getState()).toEqual(expectedStore); + }); + }); + + it('Update Software Products Components Compute', () => { + const store = storeCreator({ + softwareProduct: { + softwareProductComponents: { + componentEditor: { + qdata: { + numOfCPUs: 3, + fileSystemSizeGB: 999 + }, + qschema: { + type: 'object', + properties: { + numOfCPUs: {type: 'number'}, + fileSystemSizeGB: {type: 'number'} + } + } + } + } + } + }); + deepFreeze(store); + + const data = {numOfCPUs: 5, fileSystemSizeGB: 300}; + deepFreeze(data); + + const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductComponents.componentEditor.qdata', data); + + SoftwareProductComponentsActionHelper.componentQuestionnaireUpdated(store.dispatch, {data}); + + expect(store.getState()).toEqual(expectedStore); + }); +}); diff --git a/openecomp-ui/test/softwareProduct/components/general/SoftwareProductComponentsGeneral.test.js b/openecomp-ui/test/softwareProduct/components/general/SoftwareProductComponentsGeneral.test.js new file mode 100644 index 0000000000..ce2152b29b --- /dev/null +++ b/openecomp-ui/test/softwareProduct/components/general/SoftwareProductComponentsGeneral.test.js @@ -0,0 +1,129 @@ +/*- + * ============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========================================================= + */ + +import expect from 'expect'; +import React from 'react'; +import TestUtils from 'react-addons-test-utils'; +import {mapStateToProps} from 'sdc-app/onboarding/softwareProduct/components/general/SoftwareProductComponentsGeneral.js'; +import SoftwareProductComponentsGeneralView from 'sdc-app/onboarding/softwareProduct/components/general/SoftwareProductComponentsGeneralView.jsx'; +import {statusEnum as versionStatusEnum} from 'nfvo-components/panel/versionController/VersionControllerConstants.js'; + + +describe('SoftwareProductComponentsGeneral Mapper and View Classes', () => { + it('mapStateToProps mapper exists', () => { + expect(mapStateToProps).toExist(); + }); + + it('mapStateToProps data test', () => { + + const currentSoftwareProduct = { + name: 'VSp', + description: 'dfdf', + vendorName: 'V1', + vendorId: '97B3E2525E0640ACACF87CE6B3753E80', + category: 'resourceNewCategory.application l4+', + subCategory: 'resourceNewCategory.application l4+.database', + id: 'D4774719D085414E9D5642D1ACD59D20', + version: '0.10', + viewableVersions: ['0.1', '0.2'], + status: versionStatusEnum.CHECK_OUT_STATUS, + lockingUser: 'cs0008' + }; + + var obj = { + softwareProduct: { + softwareProductEditor: { + data: currentSoftwareProduct + }, + softwareProductComponents: { + componentEditor: { + data: {}, + qdata: {}, + qschema: {} + } + } + } + }; + + var results = mapStateToProps(obj); + expect(results.componentData).toExist(); + expect(results.qdata).toExist(); + expect(results.qschema).toExist(); + }); + + + it('VSP Components general view test', () => { + + const currentSoftwareProduct = { + name: 'VSp', + description: 'dfdf', + vendorName: 'V1', + vendorId: '97B3E2525E0640ACACF87CE6B3753E80', + category: 'resourceNewCategory.application l4+', + subCategory: 'resourceNewCategory.application l4+.database', + id: 'D4774719D085414E9D5642D1ACD59D20', + version: '0.10', + viewableVersions: ['0.1', '0.2'], + status: versionStatusEnum.CHECK_OUT_STATUS, + lockingUser: 'cs0008' + }; + + const softwareProductComponents = { + componentEditor: { + data: {}, + qdata: {}, + qschema: { + $schema: 'http://json-schema.org/draft-04/schema#', + type: 'object', + properties: { + general: { + type: 'object', + properties: {} + } + } + } + } + }; + + const versionControllerData = { + version: '1', + viewableVersions: [], + status: 'locked', + isCheckedOut: true + }; + + const componentData = { + name: '', + description: '' + }; + + var renderer = TestUtils.createRenderer(); + renderer.render( + ); + var renderedOutput = renderer.getRenderOutput(); + expect(renderedOutput).toExist(); + + }); + +}); diff --git a/openecomp-ui/test/softwareProduct/components/loadBalancing/softwareProductComponentLoadbalancing.test.js b/openecomp-ui/test/softwareProduct/components/loadBalancing/softwareProductComponentLoadbalancing.test.js new file mode 100644 index 0000000000..69a93b69e1 --- /dev/null +++ b/openecomp-ui/test/softwareProduct/components/loadBalancing/softwareProductComponentLoadbalancing.test.js @@ -0,0 +1,122 @@ +/*- + * ============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========================================================= + */ + +import expect from 'expect'; +import React from 'react'; +import TestUtils from 'react-addons-test-utils'; +import {mapStateToProps} from 'sdc-app/onboarding/softwareProduct/components/loadBalancing/SoftwareProductComponentLoadBalancing.js'; +import SoftwareProductComponentLoadBalancingView from 'sdc-app/onboarding/softwareProduct/components/loadBalancing/SoftwareProductComponentLoadBalancingRefView.jsx'; +import {statusEnum as versionStatusEnum} from 'nfvo-components/panel/versionController/VersionControllerConstants.js'; + + +describe('SoftwareProductComponentLoadBalancing Mapper and View Classes', () => { + it('mapStateToProps mapper exists', () => { + expect(mapStateToProps).toExist(); + }); + + it('mapStateToProps data test', () => { + + const currentSoftwareProduct = { + name: 'VSp', + description: 'dfdf', + vendorName: 'V1', + vendorId: '97B3E2525E0640ACACF87CE6B3753E80', + category: 'resourceNewCategory.application l4+', + subCategory: 'resourceNewCategory.application l4+.database', + id: 'D4774719D085414E9D5642D1ACD59D20', + version: '0.10', + viewableVersions: ['0.1', '0.2'], + status: versionStatusEnum.CHECK_OUT_STATUS, + lockingUser: 'cs0008' + }; + + var obj = { + softwareProduct: { + softwareProductEditor: { + data: currentSoftwareProduct + }, + softwareProductComponents: { + componentEditor: { + qdata: {}, + qschema: {} + } + } + } + }; + + var results = mapStateToProps(obj); + expect(results.qdata).toExist(); + expect(results.qschema).toExist(); + }); + + + it('VSP Components LoadBalancing view test', () => { + + const currentSoftwareProduct = { + name: 'VSp', + description: 'dfdf', + vendorName: 'V1', + vendorId: '97B3E2525E0640ACACF87CE6B3753E80', + category: 'resourceNewCategory.application l4+', + subCategory: 'resourceNewCategory.application l4+.database', + id: 'D4774719D085414E9D5642D1ACD59D20', + version: '0.10', + viewableVersions: ['0.1', '0.2'], + status: versionStatusEnum.CHECK_OUT_STATUS, + lockingUser: 'cs0008' + }; + + const softwareProductComponents = { + componentEditor: { + qdata: {}, + qschema: { + $schema: 'http://json-schema.org/draft-04/schema#', + type: 'object', + properties: { + general: { + type: 'object', + properties: {} + } + } + } + } + }; + + const versionControllerData = { + version: '1', + viewableVersions: [], + status: 'locked', + isCheckedOut: true + }; + + var renderer = TestUtils.createRenderer(); + renderer.render( + ); + var renderedOutput = renderer.getRenderOutput(); + expect(renderedOutput).toExist(); + + }); + +}); diff --git a/openecomp-ui/test/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoring.test.js b/openecomp-ui/test/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoring.test.js new file mode 100644 index 0000000000..2f1ea12c01 --- /dev/null +++ b/openecomp-ui/test/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoring.test.js @@ -0,0 +1,101 @@ +/*- + * ============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========================================================= + */ + +import expect from 'expect'; +import React from 'react'; +import TestUtils from 'react-addons-test-utils'; +import {mapStateToProps} from 'sdc-app/onboarding/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoring.js'; +import SoftwareProductComponentsMonitoringView from 'sdc-app/onboarding/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoringView.jsx'; + +describe('SoftwareProductComponentsMonitoring Module Tests', function () { + + it('should mapper exist', () => { + expect(mapStateToProps).toExist(); + }); + + it('should return empty file names', () => { + let softwareProduct = {softwareProductEditor: {data: {}}, softwareProductComponents: {monitoring: {}}}; + var results = mapStateToProps({softwareProduct}); + expect(results.trapFilename).toEqual(undefined); + expect(results.pollFilename).toEqual(undefined); + }); + + it('should return trap file name', () => { + const monitoring = { + trapFilename: '123' + }; + let softwareProduct = {softwareProductEditor: {data: {}}, softwareProductComponents: {monitoring}}; + var results = mapStateToProps({softwareProduct}); + expect(results.trapFilename).toEqual(monitoring.trapFilename); + expect(results.pollFilename).toEqual(undefined); + }); + + it('should return poll file names', () => { + const monitoring = { + pollFilename: '123' + }; + let softwareProduct = {softwareProductEditor: {data: {}}, softwareProductComponents: {monitoring}}; + var results = mapStateToProps({softwareProduct}); + expect(results.trapFilename).toEqual(undefined); + expect(results.pollFilename).toEqual(monitoring.pollFilename); + + let renderer = TestUtils.createRenderer(); + renderer.render(); + let renderedOutput = renderer.getRenderOutput(); + expect(renderedOutput).toExist(); + }); + + it('should return both file names', () => { + const monitoring = { + trapFilename: '1234', + trapFilename: '123' + }; + let softwareProduct = {softwareProductEditor: {data: {}}, softwareProductComponents: {monitoring}}; + var results = mapStateToProps({softwareProduct}); + expect(results.trapFilename).toEqual(monitoring.trapFilename); + expect(results.pollFilename).toEqual(monitoring.pollFilename); + + let renderer = TestUtils.createRenderer(); + renderer.render(); + let renderedOutput = renderer.getRenderOutput(); + expect(renderedOutput).toExist(); + }); + + it('should change state to dragging', done => { + var view = TestUtils.renderIntoDocument(); + expect(view.state.dragging).toBe(false); + view.handleOnDragEnter(false); + setTimeout(()=> { + expect(view.state.dragging).toBe(true); + done(); + }, 100); + }); + + it('should not change state to dragging', done => { + var view = TestUtils.renderIntoDocument(); + expect(view.state.dragging).toBe(false); + view.handleOnDragEnter(true); + setTimeout(()=> { + expect(view.state.dragging).toBe(false); + done(); + }, 0); + }); + +}); diff --git a/openecomp-ui/test/softwareProduct/components/monitoring/test.js b/openecomp-ui/test/softwareProduct/components/monitoring/test.js new file mode 100644 index 0000000000..172db653e9 --- /dev/null +++ b/openecomp-ui/test/softwareProduct/components/monitoring/test.js @@ -0,0 +1,215 @@ +/*- + * ============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========================================================= + */ + +import expect from 'expect'; +import mockRest from 'test-utils/MockRest.js'; +import {storeCreator} from 'sdc-app/AppStore.js'; +import SoftwareProductComponentsMonitoringConstants from 'sdc-app/onboarding/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoringConstants.js'; +import SoftwareProductComponentsMonitoringActionHelper from 'sdc-app/onboarding/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoringActionHelper.js'; + +const softwareProductId = '123'; +const componentId = '123'; + +describe('Software Product Components Monitoring Module Tests', function () { + + let store; + + beforeEach(()=> { + store = storeCreator(); + }); + + + it('Fetch for existing files - no files', done => { + + let emptyResult = Object.freeze({ + snmpTrap: undefined, + snmpPoll: undefined + }); + + mockRest.addHandler('fetch', ({ baseUrl}) => { + expect(baseUrl).toEqual(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/components/${componentId}/monitors/snmp`); + return emptyResult; + }); + + SoftwareProductComponentsMonitoringActionHelper.fetchExistingFiles(store.dispatch, { + softwareProductId, + componentId + }); + setTimeout(()=> { + var {softwareProduct: {softwareProductComponents: {monitoring}}} = store.getState(); + expect(monitoring.pollFilename).toEqual(emptyResult.snmpPoll); + expect(monitoring.trapFilename).toEqual(emptyResult.snmpTrap); + done(); + }, 0); + + }); + + it('Fetch for existing files - only snmp trap file exists', done => { + let response = Object.freeze({ + snmpTrap: 'asdfasdf', + snmpPoll: undefined + }); + + mockRest.addHandler('fetch', ({ baseUrl}) => { + expect(baseUrl).toEqual(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/components/${componentId}/monitors/snmp`); + return response; + }); + + SoftwareProductComponentsMonitoringActionHelper.fetchExistingFiles(store.dispatch, { + softwareProductId, + componentId + }); + setTimeout(()=> { + var {softwareProduct: {softwareProductComponents: {monitoring}}} = store.getState(); + expect(monitoring.pollFilename).toEqual(response.snmpPoll); + expect(monitoring.trapFilename).toEqual(response.snmpTrap); + done(); + }, 0); + }); + + it('Fetch for existing files - only snmp poll file exists', done => { + let response = Object.freeze({ + snmpPoll: 'asdfasdf', + snmpTrap: undefined + }); + + mockRest.addHandler('fetch', ({baseUrl}) => { + expect(baseUrl).toEqual(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/components/${componentId}/monitors/snmp`); + return response; + }); + + SoftwareProductComponentsMonitoringActionHelper.fetchExistingFiles(store.dispatch, { + softwareProductId, + componentId + }); + setTimeout(()=> { + var {softwareProduct: {softwareProductComponents: {monitoring}}} = store.getState(); + expect(monitoring.pollFilename).toEqual(response.snmpPoll); + expect(monitoring.trapFilename).toEqual(response.snmpTrap); + done(); + }, 0); + }); + + it('Fetch for existing files - both files exist', done => { + let response = Object.freeze({ + snmpPoll: 'asdfasdf', + snmpTrap: 'asdfgg' + }); + + mockRest.addHandler('fetch', ({baseUrl}) => { + expect(baseUrl).toEqual(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/components/${componentId}/monitors/snmp`); + return response; + }); + + SoftwareProductComponentsMonitoringActionHelper.fetchExistingFiles(store.dispatch, { + softwareProductId, + componentId + }); + setTimeout(()=> { + var {softwareProduct: {softwareProductComponents: {monitoring}}} = store.getState(); + expect(monitoring.pollFilename).toEqual(response.snmpPoll); + expect(monitoring.trapFilename).toEqual(response.snmpTrap); + done(); + }, 0); + }); + + it('Upload snmp trap file', done => { + + mockRest.addHandler('create', ({baseUrl}) => { + expect(baseUrl).toEqual(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/components/${componentId}/monitors/snmp-trap/upload`); + return {}; + }); + var debug = {hello: 'world'}; + let file = new Blob([JSON.stringify(debug, null, 2)], {type: 'application/json'});; + let formData = new FormData(); + formData.append('upload', file); + SoftwareProductComponentsMonitoringActionHelper.uploadSnmpFile(store.dispatch, { + softwareProductId, + componentId, + formData, + fileSize: file.size, + type: SoftwareProductComponentsMonitoringConstants.SNMP_TRAP + }); + setTimeout(()=> { + var {softwareProduct: {softwareProductComponents: {monitoring}}} = store.getState(); + expect(monitoring.pollFilename).toEqual(undefined); + expect(monitoring.trapFilename).toEqual('blob'); + done(); + }, 0); + }); + + it('Upload snmp poll file', done => { + mockRest.addHandler('create', ({baseUrl}) => { + expect(baseUrl).toEqual(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/components/${componentId}/monitors/snmp/upload`); + return {}; + }); + var debug = {hello: 'world'}; + let file = new Blob([JSON.stringify(debug, null, 2)], {type: 'application/json'});; + let formData = new FormData(); + formData.append('upload', file); + SoftwareProductComponentsMonitoringActionHelper.uploadSnmpFile(store.dispatch, { + softwareProductId, + componentId, + formData, + fileSize: file.size, + type: SoftwareProductComponentsMonitoringConstants.SNMP_POLL + }); + setTimeout(()=> { + var {softwareProduct: {softwareProductComponents: {monitoring}}} = store.getState(); + expect(monitoring.pollFilename).toEqual('blob'); + expect(monitoring.trapFilename).toEqual(undefined); + done(); + }, 0); + }); + + it('Delete snmp trap file', done => { + mockRest.addHandler('destroy', ({baseUrl}) => { + expect(baseUrl).toEqual(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/components/${componentId}/monitors/snmp-trap`); + return {}; + }); + SoftwareProductComponentsMonitoringActionHelper.deleteSnmpFile(store.dispatch, { + softwareProductId, + componentId, + type: SoftwareProductComponentsMonitoringConstants.SNMP_TRAP + }); + setTimeout(()=> { + var {softwareProduct: {softwareProductComponents: {monitoring}}} = store.getState(); + expect(monitoring.trapFilename).toEqual(undefined); + done(); + }, 0); + }); + + it('Delete snmp poll file', done => { + mockRest.addHandler('destroy', ({baseUrl}) => { + expect(baseUrl).toEqual(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/components/${componentId}/monitors/snmp`); + return {}; + }); + SoftwareProductComponentsMonitoringActionHelper.deleteSnmpFile(store.dispatch, { + softwareProductId, + componentId, + type: SoftwareProductComponentsMonitoringConstants.SNMP_POLL + }); + setTimeout(()=> { + var {softwareProduct: {softwareProductComponents: {monitoring}}} = store.getState(); + expect(monitoring.pollFilename).toEqual(undefined); + done(); + }, 0); + }); +}); diff --git a/openecomp-ui/test/softwareProduct/components/network/SoftwareProductComponentsNICEditor.test.js b/openecomp-ui/test/softwareProduct/components/network/SoftwareProductComponentsNICEditor.test.js new file mode 100644 index 0000000000..c9760f7799 --- /dev/null +++ b/openecomp-ui/test/softwareProduct/components/network/SoftwareProductComponentsNICEditor.test.js @@ -0,0 +1,97 @@ +/*- + * ============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========================================================= + */ + +import expect from 'expect'; +import React from 'react'; +import TestUtils from 'react-addons-test-utils'; +import {mapStateToProps} from 'sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNICEditor.js'; +import SoftwareProductComponentsNICEditorView from 'sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNICEditorView.jsx'; + + + +describe('Software Product Component Network NIC Editor and View Classes', () => { + it('mapStateToProps mapper exists', () => { + expect(mapStateToProps).toExist(); + }); + + + it('mapStateToProps data test', () => { + + const currentSoftwareProduct = { + name: 'VSp', + description: 'dfdf', + vendorName: 'V1', + vendorId: '97B3E2525E0640ACACF87CE6B3753E80', + category: 'resourceNewCategory.application l4+', + subCategory: 'resourceNewCategory.application l4+.database', + id: 'D4774719D085414E9D5642D1ACD59D20', + version: '0.10', + viewableVersions: ['0.1', '0.2'], + lockingUser: 'cs0008' + }; + + + var obj = { + softwareProduct: { + softwareProductEditor: { + data: currentSoftwareProduct + }, + softwareProductComponents: { + network: { + nicEditor: { + data: {}, + qdata: {}, + qschema: {} + } + } + } + } + }; + + var results = mapStateToProps(obj); + expect(results.currentSoftwareProduct).toExist(); + expect(results.qdata).toExist(); + expect(results.qschema).toExist(); + expect(results.data).toExist(); + }); + + + it('Software Product Component Network NIC Editor View Test', () => { + + const data = { + name: '', + description: '', + networkName: '' + }; + + const qdata = {}; + const qschema = {}; + + var renderer = TestUtils.createRenderer(); + renderer.render( + ); + var renderedOutput = renderer.getRenderOutput(); + expect(renderedOutput).toExist(); + + }); +}); diff --git a/openecomp-ui/test/softwareProduct/components/network/SoftwareProductComponentsNetwork.test.js b/openecomp-ui/test/softwareProduct/components/network/SoftwareProductComponentsNetwork.test.js new file mode 100644 index 0000000000..520fde7403 --- /dev/null +++ b/openecomp-ui/test/softwareProduct/components/network/SoftwareProductComponentsNetwork.test.js @@ -0,0 +1,125 @@ +/*- + * ============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========================================================= + */ + +import expect from 'expect'; +import React from 'react'; +import TestUtils from 'react-addons-test-utils'; +import {mapStateToProps} from 'sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNetworkList.js'; +import SoftwareProductComponentsNetworkListView from 'sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNetworkListView.jsx'; +import {statusEnum as versionStatusEnum} from 'nfvo-components/panel/versionController/VersionControllerConstants.js'; + + +describe('Software Product Component Network Mapper and View Classes', () => { + + it('mapStateToProps mapper exists', () => { + expect(mapStateToProps).toExist(); + }); + + it('mapStateToProps data test', () => { + + const currentSoftwareProduct = { + name: 'VSp', + description: 'dfdf', + vendorName: 'V1', + vendorId: '97B3E2525E0640ACACF87CE6B3753E80', + category: 'resourceNewCategory.application l4+', + subCategory: 'resourceNewCategory.application l4+.database', + id: 'D4774719D085414E9D5642D1ACD59D20', + version: '0.10', + viewableVersions: ['0.1', '0.2'], + status: versionStatusEnum.CHECK_OUT_STATUS, + lockingUser: 'cs0008' + }; + + + var obj = { + softwareProduct: { + softwareProductEditor: { + data: currentSoftwareProduct + }, + softwareProductComponents: { + componentEditor: { + qdata: {}, + qschema: {}, + data: {} + }, + network: { + nicEditor: {}, + nicList: [] + } + } + } + }; + + var results = mapStateToProps(obj); + expect(results.qdata).toExist(); + expect(results.qschema).toExist(); + expect(results.componentData).toExist(); + }); + + it('Software Product Component Network List View Test', () => { + + const currentSoftwareProduct = { + name: 'VSp', + description: 'dfdf', + vendorName: 'V1', + vendorId: '97B3E2525E0640ACACF87CE6B3753E80', + category: 'resourceNewCategory.application l4+', + subCategory: 'resourceNewCategory.application l4+.database', + id: 'D4774719D085414E9D5642D1ACD59D20', + version: '0.10', + viewableVersions: ['0.1', '0.2'], + status: versionStatusEnum.CHECK_IN_STATUS, + lockingUser: 'cs0008' + }; + + const versionControllerData = { + version: '1', + viewableVersions: [], + status: 'locked', + isCheckedOut: true + }; + + const nicList = [ + { + name: 'name', + networkId: 'network', + id: '122', + networkName: 'nname' + } + ]; + + var renderer = TestUtils.createRenderer(); + renderer.render( + ); + var renderedOutput = renderer.getRenderOutput(); + expect(renderedOutput).toExist(); + + + + + }); + +}); diff --git a/openecomp-ui/test/softwareProduct/components/network/SoftwareProductComponentsNetworkActionHelper.test.js b/openecomp-ui/test/softwareProduct/components/network/SoftwareProductComponentsNetworkActionHelper.test.js new file mode 100644 index 0000000000..8c23267c89 --- /dev/null +++ b/openecomp-ui/test/softwareProduct/components/network/SoftwareProductComponentsNetworkActionHelper.test.js @@ -0,0 +1,305 @@ +/*- + * ============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========================================================= + */ + +import {expect} from 'chai'; +import deepFreeze from 'deep-freeze'; +import mockRest from 'test-utils/MockRest.js'; +import {cloneAndSet} from 'test-utils/Util.js'; +import {storeCreator} from 'sdc-app/AppStore.js'; +import SoftwareProductComponentsNetworkActionHelper from 'sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNetworkActionHelper.js'; + +const softwareProductId = '123'; +const componentId = '321'; +const nicId = '111'; + +describe('Software Product Components Network Action Helper Tests', function () { + + it('Fetch NICs List', () => { + const store = storeCreator(); + deepFreeze(store.getState()); + + const NICList = [ + { + name:'oam01_port_0', + description:'bbbbbbb', + networkId:'A0E578751B284D518ED764D5378EA97C', + id:'96D3648338F94DAA9889E9FBB8E59895', + networkName:'csb_net' + }, + { + name:'oam01_port_1', + description:'bbbbbbb', + networkId:'378EA97CA0E578751B284D518ED764D5', + id:'8E5989596D3648338F94DAA9889E9FBB', + networkName:'csb_net_2' + } + + ]; + + deepFreeze(NICList); + + deepFreeze(store.getState()); + + const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductComponents.network.nicList', NICList); + + mockRest.addHandler('fetch', ({options, data, baseUrl}) => { + expect(baseUrl).to.equal(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/components/${componentId}/nics`); + expect(data).to.deep.equal(undefined); + expect(options).to.equal(undefined); + return {results: NICList}; + }); + + return SoftwareProductComponentsNetworkActionHelper.fetchNICsList(store.dispatch, {softwareProductId, componentId}).then(() => { + expect(store.getState()).to.deep.equal(expectedStore); + }); + + }); + + it('open NICE editor', () => { + + const store = storeCreator(); + deepFreeze(store.getState()); + const data = { + name: 'oam01_port_0', + description: 'bbbbbbb', + networkId: 'A0E578751B284D518ED764D5378EA97C', + networkName: 'csb_net' + }; + + const nic = {id: '444'}; + deepFreeze(data); + deepFreeze(nic); + + const expectedData = {...data, id: nic.id}; + + deepFreeze(expectedData); + + const network = { + nicEditor: { + data: expectedData + }, + nicList: [] + }; + + const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductComponents.network', network); + + SoftwareProductComponentsNetworkActionHelper.openNICEditor(store.dispatch, {nic, data}); + + return setTimeout(() => { + expect(store.getState()).to.deep.equal(expectedStore); + }, 100); + }); + + it('close NICE editor', () => { + + const store = storeCreator(); + deepFreeze(store.getState()); + + const network = { + nicEditor: {}, + nicList: [] + }; + deepFreeze(network); + + const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductComponents.network', network); + + SoftwareProductComponentsNetworkActionHelper.closeNICEditor(store.dispatch); + + return setTimeout(() => { + expect(store.getState()).to.deep.equal(expectedStore); + }, 100); + }); + + it('Load NIC data', () => { + + const expectedData = { + description: 'bbbbbbb', + name: 'oam01_port_0', + networkId: 'A0E578751B284D518ED764D5378EA97C', + networkName: 'csb_net' + }; + + deepFreeze(expectedData); + + mockRest.addHandler('fetch', ({options, data, baseUrl}) => { + expect(baseUrl).to.equal(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/components/${componentId}/nics/${nicId}`); + expect(data).to.deep.equal(undefined); + expect(options).to.equal(undefined); + return (expectedData); + }); + + return SoftwareProductComponentsNetworkActionHelper.loadNICData({softwareProductId, componentId, nicId}).then((data) => { + expect(data).to.deep.equal(expectedData); + }); + }); + + + it('load NIC Questionnaire', () => { + + const store = storeCreator(); + deepFreeze(store.getState()); + + const qdata = { + protocols: { + protocolWithHighestTrafficProfile: 'UDP', + protocols: ['UDP'] + }, + ipConfiguration: { + ipv4Required: true + } + }; + + const qschema = { + $schema: 'http://json-schema.org/draft-04/schema#', + type: 'object', + properties: { + 'protocols': { + type: 'object', + properties: {} + } + } + }; + + deepFreeze(qdata); + deepFreeze(qschema); + + + const network = { + nicEditor: { + qdata, + qschema + }, + nicList: [] + }; + deepFreeze(network); + + const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductComponents.network', network); + + mockRest.addHandler('fetch', ({options, data, baseUrl}) => { + expect(baseUrl).to.equal(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/components/${componentId}/nics/${nicId}/questionnaire`); + expect(data).to.deep.equal(undefined); + expect(options).to.equal(undefined); + return ({data: JSON.stringify(qdata), schema: JSON.stringify(qschema)}); + }); + + return SoftwareProductComponentsNetworkActionHelper.loadNICQuestionnaire(store.dispatch, {softwareProductId, componentId, nicId}).then(() => { + expect(store.getState()).to.deep.equal(expectedStore); + }); + }); + + it('update NIC Data', () => { + const store = storeCreator(); + deepFreeze(store.getState()); + + const data = {test: '123'}; + deepFreeze(data); + + const network = { + nicEditor: { + data + }, + nicList: [] + }; + + deepFreeze(network); + + const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductComponents.network', network); + + SoftwareProductComponentsNetworkActionHelper.updateNICData(store.dispatch, {deltaData:data}); + + return setTimeout(() => { + expect(store.getState()).to.deep.equal(expectedStore); + }, 100); + + }); + + it('update NIC Questionnaire', () => { + const store = storeCreator(); + deepFreeze(store.getState()); + + const qdata = { + test: '123' + }; + const network = { + nicEditor: { + qdata, + qschema: undefined + }, + nicList: [] + }; + deepFreeze(network); + + const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductComponents.network', network); + + SoftwareProductComponentsNetworkActionHelper.updateNICQuestionnaire(store.dispatch, {data:qdata}); + + return setTimeout(() => { + expect(store.getState()).to.deep.equal(expectedStore); + }, 100); + + }); + + it('save NIC Data And Questionnaire', () => { + + const store = storeCreator(); + deepFreeze(store.getState()); + + const qdata = { + qtest: '111' + }; + const data = { + name: '2222', + description: 'blabla', + networkId: '123445' + }; + + const expectedData = {...data, id: nicId}; + + const network = { + nicEditor: {}, + nicList: [ + expectedData + ] + }; + + const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductComponents.network', network); + deepFreeze(expectedStore); + + mockRest.addHandler('save', ({options, data, baseUrl}) => { + expect(baseUrl).to.equal(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/components/${componentId}/nics/${nicId}/questionnaire`); + expect(data).to.deep.equal(qdata); + expect(options).to.equal(undefined); + return {returnCode: 'OK'}; + }); + + mockRest.addHandler('save', ({options, data, baseUrl}) => { + expect(baseUrl).to.equal(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/components/${componentId}/nics/${nicId}`); + expect(data).to.deep.equal(data); + expect(options).to.equal(undefined); + return {returnCode: 'OK'}; + }); + + return SoftwareProductComponentsNetworkActionHelper.saveNICDataAndQuestionnaire(store.dispatch, {softwareProductId, componentId, qdata, data: expectedData}).then(() => { + expect(store.getState()).to.deep.equal(expectedStore); + }); + }); + + +}); diff --git a/openecomp-ui/test/softwareProduct/components/processes/test.js b/openecomp-ui/test/softwareProduct/components/processes/test.js new file mode 100644 index 0000000000..67427d3c05 --- /dev/null +++ b/openecomp-ui/test/softwareProduct/components/processes/test.js @@ -0,0 +1,214 @@ +/*- + * ============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========================================================= + */ + +import {expect} from 'chai'; +import deepFreeze from 'deep-freeze'; +import mockRest from 'test-utils/MockRest.js'; +import {cloneAndSet} from 'test-utils/Util.js'; +import {storeCreator} from 'sdc-app/AppStore.js'; +import SoftwareProductComponentProcessesActionHelper from 'sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesActionHelper.js'; + +const softwareProductId = '123'; +const componentId = '222'; +describe('Software Product Component Processes Module Tests', function () { + it('Get Software Products Processes List', () => { + const store = storeCreator(); + deepFreeze(store.getState()); + + const softwareProductProcessesList = [ + { + name: 'Pr1', + description: 'hjhj', + id: 'EBADF561B7FA4A788075E1840D0B5971', + artifactName: 'artifact' + }, + { + name: 'Pr1', + description: 'hjhj', + id: '2F47447D22DB4C53B020CA1E66201EF2', + artifactName: 'artifact' + } + ]; + + deepFreeze(softwareProductProcessesList); + + deepFreeze(store.getState()); + + const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductComponents.componentProcesses.processesList', softwareProductProcessesList); + + mockRest.addHandler('fetch', ({options, data, baseUrl}) => { + expect(baseUrl).to.equal(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/components/${componentId}/processes`); + expect(data).to.deep.equal(undefined); + expect(options).to.equal(undefined); + return {results: softwareProductProcessesList}; + }); + + return SoftwareProductComponentProcessesActionHelper.fetchProcessesList(store.dispatch, {softwareProductId, componentId}).then(() => { + expect(store.getState()).to.deep.equal(expectedStore); + }); + }); + it('Delete Software Products Processes', () => { + const softwareProductProcessesList = [ + { + name: 'Pr1', + description: 'hjhj', + id: 'EBADF561B7FA4A788075E1840D0B5971', + artifactName: 'artifact' + } + ]; + + deepFreeze(softwareProductProcessesList); + const store = storeCreator({ + softwareProduct: { + softwareProductProcesses: { + processesList: softwareProductProcessesList + } + } + }); + + const processId = 'EBADF561B7FA4A788075E1840D0B5971'; + deepFreeze(store.getState()); + + const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductComponents.componentProcesses.processesList', []); + + mockRest.addHandler('destroy', ({data, options, baseUrl}) => { + expect(baseUrl).to.equal(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/components/${componentId}/processes/${processId}`); + expect(data).to.equal(undefined); + expect(options).to.equal(undefined); + return { + results: { + returnCode: 'OK' + } + }; + }); + + return SoftwareProductComponentProcessesActionHelper.deleteProcess(store.dispatch, { + process: softwareProductProcessesList[0], + softwareProductId, componentId + }).then(() => { + expect(store.getState()).to.deep.equal(expectedStore); + }); + }); + + it('Add Software Products Processes', () => { + + const store = storeCreator(); + deepFreeze(store.getState()); + + const softwareProductPostRequest = { + name: 'Pr1', + description: 'string' + }; + const softwareProductProcessToAdd = { + name: 'Pr1', + description: 'string' + }; + const softwareProductProcessFromResponse = 'ADDED_ID'; + const softwareProductProcessAfterAdd = { + ...softwareProductProcessToAdd, + id: softwareProductProcessFromResponse + }; + + const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductComponents.componentProcesses.processesList', [softwareProductProcessAfterAdd]); + + mockRest.addHandler('create', ({data, options, baseUrl}) => { + + expect(baseUrl).to.equal(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/components/${componentId}/processes`); + expect(data).to.deep.equal(softwareProductPostRequest); + expect(options).to.equal(undefined); + return { + returnCode: 'OK', + value: softwareProductProcessFromResponse + }; + }); + + return SoftwareProductComponentProcessesActionHelper.saveProcess(store.dispatch, + { + softwareProductId, + previousProcess: null, + process: softwareProductProcessToAdd, + componentId + } + ).then(() => { + expect(store.getState()).to.deep.equal(expectedStore); + }); + }); + + it('Update Software Products Processes', () => { + const softwareProductProcessesList = [ + { + name: 'Pr1', + description: 'string', + id: 'EBADF561B7FA4A788075E1840D0B5971', + artifactName: 'artifact' + } + ]; + deepFreeze(softwareProductProcessesList); + + const store = storeCreator({ + softwareProduct: { + softwareProductComponents: { + componentProcesses: { + processesList: softwareProductProcessesList + } + } + } + }); + deepFreeze(store.getState()); + + const toBeUpdatedProcessId = softwareProductProcessesList[0].id; + const previousProcessData = softwareProductProcessesList[0]; + const processUpdateData = { + ...softwareProductProcessesList[0], + name: 'Pr1_UPDATED', + description: 'string_UPDATED' + }; + deepFreeze(processUpdateData); + + const processPutRequest = { + name: 'Pr1_UPDATED', + description: 'string_UPDATED' + }; + deepFreeze(processPutRequest); + + const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductComponents.componentProcesses.processesList', [processUpdateData]); + + + mockRest.addHandler('save', ({data, options, baseUrl}) => { + expect(baseUrl).to.equal(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/components/${componentId}/processes/${toBeUpdatedProcessId}`); + expect(data).to.deep.equal(processPutRequest); + expect(options).to.equal(undefined); + return {returnCode: 'OK'}; + }); + + return SoftwareProductComponentProcessesActionHelper.saveProcess(store.dispatch, + { + softwareProductId: softwareProductId, + componentId, + previousProcess: previousProcessData, + process: processUpdateData + } + ).then(() => { + expect(store.getState()).to.deep.equal(expectedStore); + }); + }); + +}); + diff --git a/openecomp-ui/test/softwareProduct/components/storage/test.js b/openecomp-ui/test/softwareProduct/components/storage/test.js new file mode 100644 index 0000000000..87cad368be --- /dev/null +++ b/openecomp-ui/test/softwareProduct/components/storage/test.js @@ -0,0 +1,132 @@ +/*- + * ============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========================================================= + */ + +import expect from 'expect'; +import deepFreeze from 'deep-freeze'; +import mockRest from 'test-utils/MockRest.js'; +import {cloneAndSet} from 'test-utils/Util.js'; +import {storeCreator} from 'sdc-app/AppStore.js'; +import Configuration from 'sdc-app/config/Configuration.js'; +import SoftwareProductComponentsActionHelper from 'sdc-app/onboarding/softwareProduct/components/SoftwareProductComponentsActionHelper.js'; + +const softwareProductId = '123'; +const vspComponentId = '111'; + +describe('Software Product Components Storage Module Tests', function () { + + let restPrefix = ''; + + before(function() { + restPrefix = Configuration.get('restPrefix'); + deepFreeze(restPrefix); + }); + + it('Get Software Products Components Storage', () => { + const store = storeCreator(); + deepFreeze(store.getState()); + + const softwareProductComponentStorage = { + data: JSON.stringify({'backup':{'backupType':'OnSite','backupSolution':'76333'},'snapshotBackup':{'snapshotFrequency':'2'}}), + schema: JSON.stringify({'backup':{'backupType':'OnSite','backupSolution':'76333'},'snapshotBackup':{'snapshotFrequency':'2'}}) + }; + deepFreeze(softwareProductComponentStorage); + + const softwareProductComponentStorageData = { + qdata: JSON.parse(softwareProductComponentStorage.data), + qschema: JSON.parse(softwareProductComponentStorage.schema) + }; + deepFreeze(softwareProductComponentStorageData); + + const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductComponents.componentEditor', softwareProductComponentStorageData); + + mockRest.addHandler('fetch', ({options, data, baseUrl}) => { + expect(baseUrl).toEqual(`${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/components/${vspComponentId}/questionnaire`); + expect(data).toEqual(undefined); + expect(options).toEqual(undefined); + return softwareProductComponentStorage; + }); + + return SoftwareProductComponentsActionHelper.fetchSoftwareProductComponentQuestionnaire(store.dispatch, {softwareProductId, vspComponentId}).then(() => { + expect(store.getState()).toEqual(expectedStore); + }); + }); + + it('Get Empty Software Products Components Storage', () => { + const store = storeCreator(); + deepFreeze(store.getState()); + + const softwareProductComponentQuestionnaire = { + data: null, + schema: JSON.stringify({'backup':{'backupType':'OnSite','backupSolution':'76333'},'snapshotBackup':{'snapshotFrequency':'2'}}) + }; + deepFreeze(softwareProductComponentQuestionnaire); + + const softwareProductComponentQuestionnaireData = { + qdata: {}, + qschema: JSON.parse(softwareProductComponentQuestionnaire.schema) + }; + deepFreeze(softwareProductComponentQuestionnaireData); + + const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductComponents.componentEditor', softwareProductComponentQuestionnaireData); + + mockRest.addHandler('fetch', ({options, data, baseUrl}) => { + expect(baseUrl).toEqual(`${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/components/${vspComponentId}/questionnaire`); + expect(data).toEqual(undefined); + expect(options).toEqual(undefined); + return softwareProductComponentQuestionnaire; + }); + + return SoftwareProductComponentsActionHelper.fetchSoftwareProductComponentQuestionnaire(store.dispatch, {softwareProductId, vspComponentId}).then(() => { + expect(store.getState()).toEqual(expectedStore); + }); + }); + + it('Update Software Products Components Storage', () => { + const store = storeCreator({ + softwareProduct: { + softwareProductComponents: { + componentEditor: { + qdata: { + backupType: 'OnSite', + backupStorageSize: 30 + }, + qschema: { + type: 'object', + properties: { + backupType: {type: 'string'}, + backupStorageSize: {type: 'number'} + } + } + } + } + } + }); + deepFreeze(store); + + const data = {backupType: 'OffSite', backupStorageSize: 30}; + deepFreeze(data); + + const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductComponents.componentEditor.qdata', data); + + SoftwareProductComponentsActionHelper.componentQuestionnaireUpdated(store.dispatch, {data}); + + expect(store.getState()).toEqual(expectedStore); + }); +}); diff --git a/openecomp-ui/test/softwareProduct/components/test.js b/openecomp-ui/test/softwareProduct/components/test.js new file mode 100644 index 0000000000..839e1b7cf7 --- /dev/null +++ b/openecomp-ui/test/softwareProduct/components/test.js @@ -0,0 +1,101 @@ +/*- + * ============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========================================================= + */ + +import {expect} from 'chai'; +import deepFreeze from 'deep-freeze'; +import mockRest from 'test-utils/MockRest.js'; +import {cloneAndSet} from 'test-utils/Util.js'; +import {storeCreator} from 'sdc-app/AppStore.js'; +import SoftwareProductComponentsActionHelper from 'sdc-app/onboarding/softwareProduct/components/SoftwareProductComponentsActionHelper.js'; + +const softwareProductId = '123'; +const vspComponentId = '321'; + +describe('Software Product Components Module Tests', function () { + it('Get Software Products Components List', () => { + const store = storeCreator(); + deepFreeze(store.getState()); + + const softwareProductComponentsList = [ + { + name: 'com.d2.resource.vfc.nodes.heat.sm_server', + displayName: 'sm_server', + description: 'hjhj', + id: 'EBADF561B7FA4A788075E1840D0B5971' + }, + { + name: 'com.d2.resource.vfc.nodes.heat.pd_server', + displayName: 'pd_server', + description: 'hjhj', + id: '2F47447D22DB4C53B020CA1E66201EF2' + } + ]; + + deepFreeze(softwareProductComponentsList); + + deepFreeze(store.getState()); + + const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductComponents.componentsList', softwareProductComponentsList); + + mockRest.addHandler('fetch', ({options, data, baseUrl}) => { + expect(baseUrl).to.equal(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/components`); + expect(data).to.deep.equal(undefined); + expect(options).to.equal(undefined); + return {results: softwareProductComponentsList}; + }); + + return SoftwareProductComponentsActionHelper.fetchSoftwareProductComponents(store.dispatch, {softwareProductId}).then(() => { + expect(store.getState()).to.deep.equal(expectedStore); + }); + }); + + it('Update SoftwareProduct Component Questionnaire', () => { + const store = storeCreator(); + + const qdataUpdated = { + general: { + hypervisor: { + containerFeatureDescription: 'aaaUpdated', + drivers: 'bbbUpdated', + hypervisor: 'cccUpdated' + } + } + }; + + const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductComponents.componentEditor.qdata', qdataUpdated); + deepFreeze(expectedStore); + + + mockRest.addHandler('save', ({options, data, baseUrl}) => { + expect(baseUrl).to.equal(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/components/${vspComponentId}/questionnaire`); + expect(data).to.deep.equal(qdataUpdated); + expect(options).to.equal(undefined); + return {returnCode: 'OK'}; + }); + + return SoftwareProductComponentsActionHelper.updateSoftwareProductComponentQuestionnaire(store.dispatch, {softwareProductId, vspComponentId, qdata: qdataUpdated}).then(() => { + //TODO think should we add here something or not + }); + + + }); + +}); + diff --git a/openecomp-ui/test/softwareProduct/details/detailsView.test.js b/openecomp-ui/test/softwareProduct/details/detailsView.test.js new file mode 100644 index 0000000000..b6a8ca5d4e --- /dev/null +++ b/openecomp-ui/test/softwareProduct/details/detailsView.test.js @@ -0,0 +1,438 @@ +/*- + * ============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========================================================= + */ + +import expect from 'expect'; +import React from 'react'; +import TestUtils from 'react-addons-test-utils'; +import {mapStateToProps} from 'sdc-app/onboarding/softwareProduct/details/SoftwareProductDetails.js'; +import SoftwareProductDetailsView from 'sdc-app/onboarding/softwareProduct/details/SoftwareProductDetailsView.jsx'; +import {vspQschema as vspQuestionnaireSchema} from './vspQschema.js'; + +describe('Software Product Details: ', function () { + + let currentSoftwareProduct = {}, categories = [], finalizedLicenseModelList, licenseAgreementList, featureGroupsList, vspQschema; + let dummyFunc = () => {}; + + before(function() { + currentSoftwareProduct = { + id: 'D4774719D085414E9D5642D1ACD59D20', + name: 'VSP', + description: 'dfdf', + category: 'category1', + subCategory: 'category1.subCategory', + vendorId: 'VLM_ID1', + vendorName: 'VLM1', + licensingVersion: '1.0', + licensingData: {} + }; + categories = [{ + uniqueId: 'category1', + subcategories: [{ + uniqueId: 'subCategory' + }] + }, { + uniqueId: 'category2', + subcategories: [{ + uniqueId: 'subCategory2' + }] + }]; + finalizedLicenseModelList = [{ + id: 'VLM_ID1', + name: 'VLM1' + }]; + licenseAgreementList = [{id: 'LA_ID1'}, {id: 'LA_ID2'}]; + featureGroupsList = [ + {id: 'FG_ID1', name: 'FG1', referencingLicenseAgreements: ['LA_ID1']}, + {id: 'FG_ID2', name: 'FG2', referencingLicenseAgreements: ['LA_ID1']} + ]; + vspQschema = vspQuestionnaireSchema; + }); + + it('should mapper exist', () => { + expect(mapStateToProps).toExist(); + }); + + it('should mapper return vsp basic data', () => { + var obj = { + softwareProduct: { + softwareProductEditor: { + data: currentSoftwareProduct + }, + softwareProductCategories: categories, + softwareProductQuestionnaire: { + qdata: {}, + qschema: vspQschema + } + }, + finalizedLicenseModelList: finalizedLicenseModelList, + licenseModel: { + licenseAgreement: { + licenseAgreementList: [] + }, + featureGroup: { + featureGroupsList: [] + } + } + }; + + var result = mapStateToProps(obj); + expect(result.currentSoftwareProduct).toEqual(currentSoftwareProduct); + expect(result.finalizedLicenseModelList).toEqual(finalizedLicenseModelList); + expect(result.finalizedLicenseModelList.length).toBeGreaterThan(0); + expect(finalizedLicenseModelList).toInclude({ + id: result.currentSoftwareProduct.vendorId, + name: result.currentSoftwareProduct.vendorName + }); + expect(result.softwareProductCategories).toEqual(categories); + expect(result.licenseAgreementList).toEqual([]); + expect(result.featureGroupsList).toEqual([]); + expect(result.qdata).toEqual({}); + expect(result.qschema).toEqual(vspQschema); + expect(result.isReadOnlyMode).toEqual(true); + }); + + it('should mapper return vsp data with selected licenseAgreement and featureGroup', () => { + let vspWithLicensingData = { + ...currentSoftwareProduct, + licensingData: { + licenseAgreement: 'LA_ID1', + featureGroups: [{enum: 'FG_ID1', title: 'FG1'}] + } + }; + var obj = { + softwareProduct: { + softwareProductEditor: { + data: vspWithLicensingData + }, + softwareProductCategories: categories, + softwareProductQuestionnaire: { + qdata: {}, + qschema: vspQschema + } + }, + finalizedLicenseModelList: finalizedLicenseModelList, + licenseModel: { + licenseAgreement: { + licenseAgreementList: licenseAgreementList + }, + featureGroup: { + featureGroupsList: featureGroupsList + } + } + }; + + var result = mapStateToProps(obj); + expect(result.currentSoftwareProduct).toEqual(vspWithLicensingData); + expect(result.finalizedLicenseModelList).toEqual(finalizedLicenseModelList); + expect(result.finalizedLicenseModelList.length).toBeGreaterThan(0); + expect(result.finalizedLicenseModelList).toInclude({ + id: result.currentSoftwareProduct.vendorId, + name: result.currentSoftwareProduct.vendorName + }); + expect(result.softwareProductCategories).toEqual(categories); + expect(result.licenseAgreementList).toEqual(licenseAgreementList); + expect(result.licenseAgreementList).toInclude({id: result.currentSoftwareProduct.licensingData.licenseAgreement}); + result.currentSoftwareProduct.licensingData.featureGroups.forEach(fg => { + expect(featureGroupsList).toInclude({ + id: fg.enum, + name: fg.title, + referencingLicenseAgreements: [result.currentSoftwareProduct.licensingData.licenseAgreement] + }); + expect(result.featureGroupsList).toInclude(fg); + }); + expect(result.qdata).toEqual({}); + expect(result.qschema).toEqual(vspQschema); + expect(result.isReadOnlyMode).toEqual(true); + }); + + it('VSP Details view test', () => { + let params = { + currentSoftwareProduct: currentSoftwareProduct, + softwareProductCategories: categories, + qdata: {}, + qschema: vspQschema, + finalizedLicenseModelList: [{ + id: 'VLM_ID1', + vendorName: 'VLM1', + version: '2.0', + viewableVersions: ['1.0', '2.0'] + }, { + id: 'VLM_ID2', + vendorName: 'VLM2', + version: '3.0', + viewableVersions: ['1.0', '2.0', '3.0'] + }], + licenseAgreementList: [{id: 'LA_ID1'}, {id: 'LA_ID2'}], + featureGroupsList: [ + {id: 'FG_ID1', name: 'FG1', referencingLicenseAgreements: ['LA_ID1']}, + {id: 'FG_ID2', name: 'FG2', referencingLicenseAgreements: ['LA_ID1']} + ] + }; + var renderer = TestUtils.createRenderer(); + renderer.render( + + ); + let renderedOutput = renderer.getRenderOutput(); + expect(renderedOutput).toExist(); + }); + + it('in view: should change vendorId and update vsp licensing-version', done => { + let vspWithLicensingData = { + ...currentSoftwareProduct, + licensingData: { + licenseAgreement: 'LA_ID1', + featureGroups: [{enum: 'FG_ID1', title: 'FG1'}] + } + }; + let params = { + currentSoftwareProduct: vspWithLicensingData, + softwareProductCategories: categories, + qdata: {}, + qschema: vspQschema, + finalizedLicenseModelList: [{ + id: 'VLM_ID1', + vendorName: 'VLM1', + version: '2.0', + viewableVersions: ['1.0', '2.0'] + }, { + id: 'VLM_ID2', + vendorName: 'VLM2', + version: '3.0', + viewableVersions: ['1.0', '2.0', '3.0'] + }], + licenseAgreementList: [{id: 'LA_ID1'}, {id: 'LA_ID2'}], + featureGroupsList: [ + {id: 'FG_ID1', name: 'FG1', referencingLicenseAgreements: ['LA_ID1']}, + {id: 'FG_ID2', name: 'FG2', referencingLicenseAgreements: ['LA_ID1']} + ] + }; + const onVendorChangedListener = (deltaData) => { + expect(deltaData.vendorId).toEqual('VLM_ID2'); + expect(deltaData.vendorName).toEqual('VLM2'); + expect(deltaData.licensingVersion).toEqual(''); + expect(deltaData.licensingData).toEqual({}); + done(); + }; + + var vspDetailsView = TestUtils.renderIntoDocument( onVendorChangedListener(deltaData)}/>); + expect(vspDetailsView).toExist(); + vspDetailsView.onVendorParamChanged({vendorId: 'VLM_ID2'}); + }); + + it('in view: should change licensing-version and update licensing data', done => { + let params = { + currentSoftwareProduct: currentSoftwareProduct, + softwareProductCategories: categories, + qdata: {}, + qschema: vspQschema, + finalizedLicenseModelList: [{ + id: 'VLM_ID1', + vendorName: 'VLM1', + version: '2.0', + viewableVersions: ['1.0', '2.0'] + }, { + id: 'VLM_ID2', + vendorName: 'VLM2', + version: '3.0', + viewableVersions: ['1.0', '2.0', '3.0'] + }], + licenseAgreementList: [{id: 'LA_ID1'}, {id: 'LA_ID2'}], + featureGroupsList: [ + {id: 'FG_ID1', name: 'FG1', referencingLicenseAgreements: ['LA_ID1']}, + {id: 'FG_ID2', name: 'FG2', referencingLicenseAgreements: ['LA_ID1']} + ] + }; + const onVendorChangedListener = (deltaData) => { + expect(deltaData.vendorId).toEqual('VLM_ID2'); + expect(deltaData.vendorName).toEqual('VLM2'); + expect(deltaData.licensingVersion).toEqual('2.0'); + expect(deltaData.licensingData).toEqual({}); + done(); + }; + + let vspDetailsView = TestUtils.renderIntoDocument( onVendorChangedListener(deltaData)}/>); + expect(vspDetailsView).toExist(); + vspDetailsView.onVendorParamChanged({vendorId: 'VLM_ID2', licensingVersion: '2.0'}); + }); + + it('in view: should change subcategory', done => { + let params = { + currentSoftwareProduct: currentSoftwareProduct, + softwareProductCategories: categories, + qdata: {}, + qschema: vspQschema, + finalizedLicenseModelList: [{ + id: 'VLM_ID1', + vendorName: 'VLM1', + version: '2.0', + viewableVersions: ['1.0', '2.0'] + }, { + id: 'VLM_ID2', + vendorName: 'VLM2', + version: '3.0', + viewableVersions: ['1.0', '2.0', '3.0'] + }], + licenseAgreementList: [{id: 'LA_ID1'}, {id: 'LA_ID2'}], + featureGroupsList: [ + {id: 'FG_ID1', name: 'FG1', referencingLicenseAgreements: ['LA_ID1']}, + {id: 'FG_ID2', name: 'FG2', referencingLicenseAgreements: ['LA_ID1']} + ] + }; + const onDataChangedListener = ({category, subCategory}) => { + expect(category).toEqual('category2'); + expect(subCategory).toEqual('subCategory2'); + done(); + }; + + let vspDetailsView = TestUtils.renderIntoDocument( onDataChangedListener({category, subCategory})} + onValidityChanged = {dummyFunc} + onQDataChanged = {dummyFunc} + onVendorParamChanged = {dummyFunc}/>); + expect(vspDetailsView).toExist(); + vspDetailsView.onSelectSubCategory('subCategory2'); + }); + + it('in view: should change feature groups', done => { + let vspWithLicensingData = { + ...currentSoftwareProduct, + licensingData: { + licenseAgreement: 'LA_ID1', + featureGroups: [{enum: 'FG_ID1', title: 'FG1'}] + } + }; + let params = { + currentSoftwareProduct: vspWithLicensingData, + softwareProductCategories: categories, + qdata: {}, + qschema: vspQschema, + finalizedLicenseModelList: [{ + id: 'VLM_ID1', + vendorName: 'VLM1', + version: '2.0', + viewableVersions: ['1.0', '2.0'] + }, { + id: 'VLM_ID2', + vendorName: 'VLM2', + version: '3.0', + viewableVersions: ['1.0', '2.0', '3.0'] + }], + licenseAgreementList: [{id: 'LA_ID1'}, {id: 'LA_ID2'}], + featureGroupsList: [ + {id: 'FG_ID1', name: 'FG1', referencingLicenseAgreements: ['LA_ID1']}, + {id: 'FG_ID2', name: 'FG2', referencingLicenseAgreements: ['LA_ID1']} + ] + }; + const onDataChangedListener = ({licensingData}) => { + expect(licensingData.licenseAgreement).toEqual('LA_ID1'); + expect(licensingData.featureGroups).toEqual([ + {enum: 'FG_ID1', title: 'FG1'}, + {enum: 'FG_ID2', title: 'FG2'} + ]); + done(); + }; + + let vspDetailsView = TestUtils.renderIntoDocument( onDataChangedListener({licensingData})} + onValidityChanged = {dummyFunc} + onQDataChanged = {dummyFunc} + onVendorParamChanged = {dummyFunc}/>); + expect(vspDetailsView).toExist(); + vspDetailsView.onFeatureGroupsChanged({featureGroups: [ + {enum: 'FG_ID1', title: 'FG1'}, + {enum: 'FG_ID2', title: 'FG2'} + ]}); + }); + + it('in view: should change license agreement', done => { + let vspWithLicensingData = { + ...currentSoftwareProduct, + licensingData: { + licenseAgreement: 'LA_ID1', + featureGroups: [{enum: 'FG_ID1', title: 'FG1'}] + } + }; + let params = { + currentSoftwareProduct: vspWithLicensingData, + softwareProductCategories: categories, + qdata: {}, + qschema: vspQschema, + finalizedLicenseModelList: [{ + id: 'VLM_ID1', + vendorName: 'VLM1', + version: '2.0', + viewableVersions: ['1.0', '2.0'] + }, { + id: 'VLM_ID2', + vendorName: 'VLM2', + version: '3.0', + viewableVersions: ['1.0', '2.0', '3.0'] + }], + licenseAgreementList: [{id: 'LA_ID1'}, {id: 'LA_ID2'}], + featureGroupsList: [ + {id: 'FG_ID1', name: 'FG1', referencingLicenseAgreements: ['LA_ID1']}, + {id: 'FG_ID2', name: 'FG2', referencingLicenseAgreements: ['LA_ID1']} + ] + }; + const onDataChangedListener = ({licensingData}) => { + expect(licensingData.licenseAgreement).toEqual('LA_ID2'); + expect(licensingData.featureGroups).toEqual([]); + done(); + }; + + let vspDetailsView = TestUtils.renderIntoDocument( onDataChangedListener({licensingData})} + onValidityChanged = {dummyFunc} + onQDataChanged = {dummyFunc} + onVendorParamChanged = {dummyFunc}/>); + expect(vspDetailsView).toExist(); + vspDetailsView.onLicensingDataChanged({licenseAgreement: 'LA_ID2', featureGroups: []}); + }); +}); diff --git a/openecomp-ui/test/softwareProduct/details/test.js b/openecomp-ui/test/softwareProduct/details/test.js new file mode 100644 index 0000000000..9803b1611d --- /dev/null +++ b/openecomp-ui/test/softwareProduct/details/test.js @@ -0,0 +1,383 @@ +/*- + * ============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========================================================= + */ + +import {expect} from 'chai'; +import deepFreeze from 'deep-freeze'; +import mockRest from 'test-utils/MockRest.js'; +import {cloneAndSet} from 'test-utils/Util.js'; +import {storeCreator} from 'sdc-app/AppStore.js'; + +import SoftwareProductCreationActionHelper from 'sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreationActionHelper.js'; +import SoftwareProductActionHelper from 'sdc-app/onboarding/softwareProduct/SoftwareProductActionHelper.js'; +import SoftwareProductCategoriesHelper from 'sdc-app/onboarding/softwareProduct/SoftwareProductCategoriesHelper.js'; + +describe('Software Product Module Tests', function () { + it('Get Software Products List', () => { + const store = storeCreator(); + deepFreeze(store.getState()); + + const softwareProductList = [ + { + name: 'VSP1', + description: 'hjhj', + version: '0.1', + id: 'EBADF561B7FA4A788075E1840D0B5971', + subCategory: 'resourceNewCategory.network connectivity.virtual links', + category: 'resourceNewCategory.network connectivity', + vendorId: '5259EDE4CC814DC9897BA6F69E2C971B', + vendorName: 'Vendor', + checkinStatus: 'CHECK_OUT', + licensingData: { + 'featureGroups': [] + } + }, + { + name: 'VSP2', + description: 'dfdfdfd', + version: '0.1', + id: '2F47447D22DB4C53B020CA1E66201EF2', + subCategory: 'resourceNewCategory.network connectivity.virtual links', + category: 'resourceNewCategory.network connectivity', + vendorId: '5259EDE4CC814DC9897BA6F69E2C971B', + vendorName: 'Vendor', + checkinStatus: 'CHECK_OUT', + licensingData: { + featureGroups: [] + } + } + ]; + + deepFreeze(softwareProductList); + + deepFreeze(store.getState()); + + const expectedStore = cloneAndSet(store.getState(), 'softwareProductList', softwareProductList); + + mockRest.addHandler('fetch', ({options, data, baseUrl}) => { + expect(baseUrl).to.equal('/onboarding-api/v1.0/vendor-software-products/'); + expect(data).to.deep.equal(undefined); + expect(options).to.equal(undefined); + return {results: softwareProductList}; + }); + + return SoftwareProductActionHelper.fetchSoftwareProductList(store.dispatch).then(() => { + expect(store.getState()).to.deep.equal(expectedStore); + }); + }); + + it('Add Software Product', () => { + const store = storeCreator(); + deepFreeze(store.getState()); + + const softwareProductPostRequest = deepFreeze({ + name: 'vsp1', + description: 'string', + vendorId: '1', + vendorName: 'Vendor', + icon: 'icon', + subCategory: 'resourceNewCategory.network connectivity.virtual links', + category: 'resourceNewCategory.network connectivity', + licensingData: {} + }); + + const softwareProductToAdd = deepFreeze({ + ...softwareProductPostRequest + }); + + const softwareProductIdFromResponse = 'ADDED_ID'; + const softwareProductAfterAdd = deepFreeze({ + ...softwareProductToAdd, + id: softwareProductIdFromResponse + }); + + const expectedStore = cloneAndSet(store.getState(), 'softwareProductList', [softwareProductAfterAdd]); + + mockRest.addHandler('create', ({options, data, baseUrl}) => { + expect(baseUrl).to.equal('/onboarding-api/v1.0/vendor-software-products/'); + expect(data).to.deep.equal(softwareProductPostRequest); + expect(options).to.equal(undefined); + return { + vspId: softwareProductIdFromResponse + }; + }); + + return SoftwareProductCreationActionHelper.createSoftwareProduct(store.dispatch, { + softwareProduct: softwareProductToAdd + }).then(() => { + expect(store.getState()).to.deep.equal(expectedStore); + }); + }); + it('Save Software product', () => { + const softwareProduct = { + name: 'VSP5', + id: '4730033D16C64E3CA556AB0AC4478218', + description: 'A software model for Fortigate.', + subCategory: 'resourceNewCategory.network connectivity.virtual links', + category: 'resourceNewCategory.network connectivity', + vendorId: '1', + vendorName: 'Vendor', + licensingVersion: '1.0', + icon: 'icon', + licensingData: { + licenceAgreement: '123', + featureGroups: [ + '123', '234' + ] + } + }; + deepFreeze(softwareProduct); + + const store = storeCreator({ + softwareProduct: { + softwareProductEditor: {data: softwareProduct}, + softwareProductQuestionnaire: {qdata: 'test', qschema: {type: 'string'}} + } + }); + deepFreeze(store.getState()); + + const toBeUpdatedSoftwareProductId = softwareProduct.id; + const softwareProductUpdateData = { + ...softwareProduct, + name: 'VSP5_UPDATED', + description: 'A software model for Fortigate._UPDATED' + }; + deepFreeze(softwareProductUpdateData); + + const expectedStore = cloneAndSet(store.getState(), 'softwareProductList', [softwareProductUpdateData]); + const questionnaireData = { + general: { + affinityData: { + affinityGrouping: true, + antiAffinityGrouping: false + } + } + }; + deepFreeze(questionnaireData); + + mockRest.addHandler('save', ({data, options, baseUrl}) => { + const expectedData = { + name: 'VSP5_UPDATED', + description: 'A software model for Fortigate._UPDATED', + subCategory: 'resourceNewCategory.network connectivity.virtual links', + category: 'resourceNewCategory.network connectivity', + vendorId: '1', + vendorName: 'Vendor', + licensingVersion: '1.0', + icon: 'icon', + licensingData: { + licenceAgreement: '123', + featureGroups: [ + '123', '234' + ] + } + }; + expect(baseUrl).to.equal(`/onboarding-api/v1.0/vendor-software-products/${toBeUpdatedSoftwareProductId}`); + expect(data).to.deep.equal(expectedData); + expect(options).to.equal(undefined); + return {returnCode: 'OK'}; + }); + mockRest.addHandler('save', ({data, options, baseUrl}) => { + expect(baseUrl).to.equal(`/onboarding-api/v1.0/vendor-software-products/${toBeUpdatedSoftwareProductId}/questionnaire`); + expect(data).to.deep.equal(questionnaireData); + expect(options).to.equal(undefined); + return {returnCode: 'OK'}; + }); + + return SoftwareProductActionHelper.updateSoftwareProduct(store.dispatch, { + softwareProduct: softwareProductUpdateData, + qdata: questionnaireData + }).then(() => { + expect(store.getState()).to.deep.equal(expectedStore); + }); + }); + it('Save Software product data only', () => { + const softwareProduct = { + name: 'VSP5', + id: '4730033D16C64E3CA556AB0AC4478218', + description: 'A software model for Fortigate.', + subCategory: 'resourceNewCategory.network connectivity.virtual links', + category: 'resourceNewCategory.network connectivity', + vendorId: '1', + vendorName: 'Vendor', + licensingVersion: '1.0', + icon: 'icon', + licensingData: { + licenceAgreement: '123', + featureGroups: [ + '123', '234' + ] + } + }; + deepFreeze(softwareProduct); + + const store = storeCreator({ + softwareProduct: { + softwareProductEditor: {data: softwareProduct}, + softwareProductQuestionnaire: {qdata: 'test', qschema: {type: 'string'}} + } + }); + deepFreeze(store.getState()); + const expectedStore = store.getState(); + + const toBeUpdatedSoftwareProductId = softwareProduct.id; + const softwareProductUpdateData = { + ...softwareProduct, + name: 'VSP5_UPDATED', + description: 'A software model for Fortigate._UPDATED' + }; + deepFreeze(softwareProductUpdateData); + + mockRest.addHandler('save', ({data, options, baseUrl}) => { + const expectedData = { + name: 'VSP5_UPDATED', + description: 'A software model for Fortigate._UPDATED', + subCategory: 'resourceNewCategory.network connectivity.virtual links', + category: 'resourceNewCategory.network connectivity', + vendorId: '1', + vendorName: 'Vendor', + licensingVersion: '1.0', + icon: 'icon', + licensingData: { + licenceAgreement: '123', + featureGroups: [ + '123', '234' + ] + } + }; + expect(baseUrl).to.equal(`/onboarding-api/v1.0/vendor-software-products/${toBeUpdatedSoftwareProductId}`); + expect(data).to.deep.equal(expectedData); + expect(options).to.equal(undefined); + return {returnCode: 'OK'}; + }); + + return SoftwareProductActionHelper.updateSoftwareProductData(store.dispatch, { + softwareProduct: softwareProductUpdateData + }).then(() => { + expect(store.getState()).to.deep.equal(expectedStore); + }); + }); + + it('Save Software product questionnaire only', () => { + const softwareProduct = { + name: 'VSP5', + id: '4730033D16C64E3CA556AB0AC4478218', + description: 'A software model for Fortigate.', + subCategory: 'resourceNewCategory.network connectivity.virtual links', + category: 'resourceNewCategory.network connectivity', + vendorId: '1', + vendorName: 'Vendor', + icon: 'icon', + licensingData: { + licenceAgreement: '123', + featureGroups: [ + '123', '234' + ] + } + }; + deepFreeze(softwareProduct); + + const store = storeCreator({ + softwareProduct: { + softwareProductEditor: {data: softwareProduct}, + softwareProductQuestionnaire: {qdata: 'test', qschema: {type: 'string'}} + } + }); + deepFreeze(store.getState()); + const expectedStore = store.getState(); + + const toBeUpdatedSoftwareProductId = softwareProduct.id; + const questionnaireData = { + general: { + affinityData: { + affinityGrouping: true, + antiAffinityGrouping: false + } + } + }; + deepFreeze(questionnaireData); + + mockRest.addHandler('save', ({data, options, baseUrl}) => { + expect(baseUrl).to.equal(`/onboarding-api/v1.0/vendor-software-products/${toBeUpdatedSoftwareProductId}/questionnaire`); + expect(data).to.deep.equal(questionnaireData); + expect(options).to.equal(undefined); + return {returnCode: 'OK'}; + }); + + return SoftwareProductActionHelper.updateSoftwareProductQuestionnaire(store.dispatch, { + softwareProductId: softwareProduct.id, + qdata: questionnaireData + }).then(() => { + expect(store.getState()).to.deep.equal(expectedStore); + }); + }); + + it('Handle category without subcategories', () => { + const categories = deepFreeze([ + { + name: 'Resource Category 1', + normalizedName: 'resource category 1', + uniqueId: 'resourceNewCategory.resource category 1', + subcategories: [ + { + name: 'Sub Category for RC 1', + normalizedName: 'sub category for rc 1', + uniqueId: 'resourceNewCategory.resource category 1.sub category for rc 1' + }, + { + name: 'SC4RC2', + normalizedName: 'sc4rc2', + uniqueId: 'resourceNewCategory.resource category 1.sc4rc2' + }, + { + name: 'SC4RC1', + normalizedName: 'sc4rc1', + uniqueId: 'resourceNewCategory.resource category 1.sc4rc1' + } + ] + }, + { + name: 'Eeeeee', + normalizedName: 'eeeeee', + uniqueId: 'resourceNewCategory.eeeeee' + }, + { + name: 'Some Recource', + normalizedName: 'some recource', + uniqueId: 'resourceNewCategory.some recource', + subcategories: [ + { + name: 'Second Sub Category for S', + normalizedName: 'second sub category for s', + uniqueId: 'resourceNewCategory.some recource.second sub category for s' + }, + { + name: 'Sub Category for Some Rec', + normalizedName: 'sub category for some rec', + uniqueId: 'resourceNewCategory.some recource.sub category for some rec' + } + ] + } + ]); + const category = SoftwareProductCategoriesHelper.getCurrentCategoryOfSubCategory('resourceNewCategory.some recource.sub category for some rec', categories); + expect(category).to.equal('resourceNewCategory.some recource'); + }); + +}); + diff --git a/openecomp-ui/test/softwareProduct/details/vspQschema.js b/openecomp-ui/test/softwareProduct/details/vspQschema.js new file mode 100644 index 0000000000..5612b19991 --- /dev/null +++ b/openecomp-ui/test/softwareProduct/details/vspQschema.js @@ -0,0 +1,61 @@ +/*- + * ============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========================================================= + */ + +export const vspQschema = { + '$schema': 'http://json-schema.org/draft-04/schema#', + 'type': 'object', + 'properties': { + 'general': { + 'type': 'object', + 'properties': { + 'affinityData': { + 'type': 'object', + 'properties': { + 'affinityGrouping': {}, + 'antiAffinityGrouping': {} + } + }, + 'availability': { + 'type': 'object', + 'properties': { + 'useAvailabilityZonesForHighAvailability': {} + } + }, + 'regionsData': { + 'type': 'object', + 'properties': { + 'multiRegion': {}, + 'regions': {} + } + }, + 'storageDataReplication': { + 'type': 'object', + 'properties': { + 'storageReplicationAcrossRegion': {}, + 'storageReplicationSize': {}, + 'storageReplicationFrequency': {}, + 'storageReplicationSource': {}, + 'storageReplicationDestination': {} + } + } + } + } + } +}; diff --git a/openecomp-ui/test/softwareProduct/networks/SoftwareProductNetworksView.test.js b/openecomp-ui/test/softwareProduct/networks/SoftwareProductNetworksView.test.js new file mode 100644 index 0000000000..a7f7b2b0c2 --- /dev/null +++ b/openecomp-ui/test/softwareProduct/networks/SoftwareProductNetworksView.test.js @@ -0,0 +1,122 @@ +/*- + * ============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========================================================= + */ + +import expect from 'expect'; +import React from 'react'; +import TestUtils from 'react-addons-test-utils'; +import {mapStateToProps} from 'sdc-app/onboarding/softwareProduct/networks/SoftwareProductNetworks.js'; +import SoftwareProductNetworksView from 'sdc-app/onboarding/softwareProduct/networks/SoftwareProductNetworksView.jsx'; +import {statusEnum as versionStatusEnum} from 'nfvo-components/panel/versionController/VersionControllerConstants.js'; + +describe('SoftwareProductNetworks Mapper and View Classes', () => { + it ('mapStateToProps mapper exists', () => { + expect(mapStateToProps).toExist(); + }); + + it ('mapStateToProps data test', () => { + + const currentSoftwareProduct = { + name: 'VSp', + description: 'dfdf', + vendorName: 'V1', + vendorId: '97B3E2525E0640ACACF87CE6B3753E80', + category: 'resourceNewCategory.application l4+', + subCategory: 'resourceNewCategory.application l4+.database', + id: 'D4774719D085414E9D5642D1ACD59D20', + version: '0.10', + viewableVersions: ['0.1', '0.2'], + status: versionStatusEnum.CHECK_OUT_STATUS, + lockingUser: 'cs0008' + }; + + const networksList = [ + { + name:'dummy_net_1', + dhcp:true, + 'id':'7F60CD390458421DA588AF4AD217B93F' + }, + { + name:'dummy_net_2', + dhcp:true, + 'id':'AD217B93F7F60CD390458421DA588AF4' + } + ]; + + var obj = { + softwareProduct: { + softwareProductEditor: { + data:currentSoftwareProduct + }, + softwareProductNetworks: + { + networksList + } + } + }; + var results = mapStateToProps(obj); + expect(results.networksList,).toExist(); + }); + + it ('view simple test', () => { + + const currentSoftwareProduct = { + name: 'VSp', + description: 'dfdf', + vendorName: 'V1', + vendorId: '97B3E2525E0640ACACF87CE6B3753E80', + category: 'resourceNewCategory.application l4+', + subCategory: 'resourceNewCategory.application l4+.database', + id: 'D4774719D085414E9D5642D1ACD59D20', + version: '0.10', + viewableVersions: ['0.1', '0.2'], + status: versionStatusEnum.CHECK_OUT_STATUS, + lockingUser: 'cs0008' + }; + + const networksList = [ + { + name:'dummy_net_1', + dhcp:true, + 'id':'7F60CD390458421DA588AF4AD217B93F' + }, + { + name:'dummy_net_2', + dhcp:true, + 'id':'AD217B93F7F60CD390458421DA588AF4' + } + ]; + + const versionControllerData = { + version: '1', + viewableVersions: [], + status: 'locked', + isCheckedOut: true + }; + + var renderer = TestUtils.createRenderer(); + renderer.render(); + var renderedOutput = renderer.getRenderOutput(); + expect(renderedOutput).toExist(); + + }); + + + +}); diff --git a/openecomp-ui/test/softwareProduct/networks/softwareProductNetworksActionHelper.test.js b/openecomp-ui/test/softwareProduct/networks/softwareProductNetworksActionHelper.test.js new file mode 100644 index 0000000000..2920803c64 --- /dev/null +++ b/openecomp-ui/test/softwareProduct/networks/softwareProductNetworksActionHelper.test.js @@ -0,0 +1,63 @@ +/*- + * ============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========================================================= + */ + +import {expect} from 'chai'; +import deepFreeze from 'deep-freeze'; +import mockRest from 'test-utils/MockRest.js'; +import {cloneAndSet} from 'test-utils/Util.js'; +import {storeCreator} from 'sdc-app/AppStore.js'; +import SoftwareProductNetworksActionHelper from 'sdc-app/onboarding/softwareProduct/networks/SoftwareProductNetworksActionHelper.js'; + +const softwareProductId = '123'; + +describe('Software Product Networks ActionHelper Tests', function () { + it('Get Software Products Networks List', () => { + const store = storeCreator(); + deepFreeze(store.getState()); + + const networksList = [ + { + name:'dummy_net_1', + dhcp:true, + 'id':'7F60CD390458421DA588AF4AD217B93F' + }, + { + name:'dummy_net_2', + dhcp:true, + 'id':'AD217B93F7F60CD390458421DA588AF4' + } + ]; + + deepFreeze(networksList); + const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductNetworks.networksList', networksList); + + mockRest.addHandler('fetch', ({options, data, baseUrl}) => { + expect(baseUrl).to.equal(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/networks`); + expect(data).to.deep.equal(undefined); + expect(options).to.equal(undefined); + return {results: networksList}; + }); + + return SoftwareProductNetworksActionHelper.fetchNetworksList(store.dispatch, {softwareProductId}).then(() => { + expect(store.getState()).to.deep.equal(expectedStore); + }); + + }); +}); diff --git a/openecomp-ui/test/softwareProduct/processes/test.js b/openecomp-ui/test/softwareProduct/processes/test.js new file mode 100644 index 0000000000..73f22a7898 --- /dev/null +++ b/openecomp-ui/test/softwareProduct/processes/test.js @@ -0,0 +1,459 @@ +/*- + * ============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========================================================= + */ + +import {expect} from 'chai'; +import deepFreeze from 'deep-freeze'; +import mockRest from 'test-utils/MockRest.js'; +import {cloneAndSet} from 'test-utils/Util.js'; +import {storeCreator} from 'sdc-app/AppStore.js'; +import Configuration from 'sdc-app/config/Configuration.js'; +import SoftwareProductProcessesActionHelper from 'sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesActionHelper.js'; + +const softwareProductId = '123'; + +describe('Software Product Processes Module Tests', function () { + + let restPrefix = ''; + + before(function() { + restPrefix = Configuration.get('restPrefix'); + deepFreeze(restPrefix); + }); + + //** + //** ADD + //** + it('Add Software Products Processes', () => { + + const store = storeCreator(); + deepFreeze(store.getState()); + + const softwareProductPostRequest = { + name: 'Pr1', + description: 'string' + }; + const softwareProductProcessToAdd = { + name: 'Pr1', + description: 'string' + }; + const softwareProductProcessFromResponse = 'ADDED_ID'; + const softwareProductProcessAfterAdd = { + ...softwareProductProcessToAdd, + id: softwareProductProcessFromResponse + }; + + const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processesList', [softwareProductProcessAfterAdd]); + + mockRest.addHandler('create', ({data, options, baseUrl}) => { + + expect(baseUrl).to.equal(`${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/processes`); + expect(data).to.deep.equal(softwareProductPostRequest); + expect(options).to.equal(undefined); + return { + returnCode: 'OK', + value: softwareProductProcessFromResponse + }; + }); + + return SoftwareProductProcessesActionHelper.saveProcess(store.dispatch, + { + softwareProductId: softwareProductId, + previousProcess: null, + process: softwareProductProcessToAdd + } + ).then(() => { + expect(store.getState()).to.deep.equal(expectedStore); + }); + }); + + it('Add Software Products Processes with uploaded file', () => { + + const store = storeCreator(); + deepFreeze(store.getState()); + + const softwareProductPostRequest = { + name: 'Pr1', + description: 'string' + }; + const softwareProductProcessToAdd = { + name: 'Pr1', + description: 'string', + formData: { + name: 'new artifact name' + } + }; + const softwareProductProcessFromResponse = 'ADDED_ID'; + const softwareProductProcessAfterAdd = { + ...softwareProductProcessToAdd, + id: softwareProductProcessFromResponse + }; + + const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processesList', [softwareProductProcessAfterAdd]); + + mockRest.addHandler('create', ({data, options, baseUrl}) => { + expect(baseUrl).to.equal(`${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/processes`); + expect(data).to.deep.equal(softwareProductPostRequest); + expect(options).to.equal(undefined); + return { + returnCode: 'OK', + value: softwareProductProcessFromResponse + }; + }); + + mockRest.addHandler('create', ({data, options, baseUrl}) => { + expect(baseUrl).to.equal(`${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/processes/${softwareProductProcessAfterAdd.id}/upload`); + expect(data).to.deep.equal(softwareProductProcessToAdd.formData); + expect(options).to.equal(undefined); + return {returnCode: 'OK'}; + }); + + return SoftwareProductProcessesActionHelper.saveProcess(store.dispatch, + { + softwareProductId: softwareProductId, + previousProcess: null, + process: softwareProductProcessToAdd + } + ).then(() => { + expect(store.getState()).to.deep.equal(expectedStore); + }); + }); + + //** + //** UPDATE + //** + it('Update Software Products Processes', () => { + const softwareProductProcessesList = [ + { + name: 'Pr1', + description: 'string', + id: 'EBADF561B7FA4A788075E1840D0B5971', + artifactName: 'artifact' + } + ]; + deepFreeze(softwareProductProcessesList); + + const store = storeCreator({ + softwareProduct: { + softwareProductProcesses: { + processesList: softwareProductProcessesList + } + } + }); + deepFreeze(store.getState()); + + const toBeUpdatedProcessId = softwareProductProcessesList[0].id; + const previousProcessData = softwareProductProcessesList[0]; + const processUpdateData = { + ...softwareProductProcessesList[0], + name: 'Pr1_UPDATED', + description: 'string_UPDATED' + }; + deepFreeze(processUpdateData); + + const processPutRequest = { + name: 'Pr1_UPDATED', + description: 'string_UPDATED' + }; + deepFreeze(processPutRequest); + + const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processesList', [processUpdateData]); + + + mockRest.addHandler('save', ({data, options, baseUrl}) => { + expect(baseUrl).to.equal(`${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/processes/${toBeUpdatedProcessId}`); + expect(data).to.deep.equal(processPutRequest); + expect(options).to.equal(undefined); + return {returnCode: 'OK'}; + }); + + return SoftwareProductProcessesActionHelper.saveProcess(store.dispatch, + { + softwareProductId: softwareProductId, + previousProcess: previousProcessData, + process: processUpdateData + } + ).then(() => { + expect(store.getState()).to.deep.equal(expectedStore); + }); + }); + + it('Update Software Products Processes and uploaded file', () => { + const previousProcessData = { + id: 'EBADF561B7FA4A788075E1840D0B5971', + name: 'p1', + description: 'string', + artifactName: 'artifact' + }; + deepFreeze(previousProcessData); + + const store = storeCreator({ + softwareProduct: { + softwareProductProcesses: { + processesList: [previousProcessData] + } + } + }); + deepFreeze(store.getState()); + + const newProcessToUpdate = { + ...previousProcessData, + name: 'new name', + formData: { + name: 'new artifact name' + } + }; + deepFreeze(newProcessToUpdate); + + const newProcessToPutRequest = { + name: newProcessToUpdate.name, + description: previousProcessData.description + }; + deepFreeze(newProcessToPutRequest); + + const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processesList', [newProcessToUpdate]); + + mockRest.addHandler('save', ({data, options, baseUrl}) => { + expect(baseUrl).to.equal(`${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/processes/${previousProcessData.id}`); + expect(data).to.deep.equal(newProcessToPutRequest); + expect(options).to.equal(undefined); + return {returnCode: 'OK'}; + }); + + mockRest.addHandler('create', ({data, options, baseUrl}) => { + expect(baseUrl).to.equal(`${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/processes/${previousProcessData.id}/upload`); + expect(data).to.deep.equal(newProcessToUpdate.formData); + expect(options).to.equal(undefined); + return {returnCode: 'OK'}; + }); + + return SoftwareProductProcessesActionHelper.saveProcess(store.dispatch, + { + softwareProductId: softwareProductId, + previousProcess: previousProcessData, + process: newProcessToUpdate + } + ).then(() => { + expect(store.getState()).to.deep.equal(expectedStore); + }); + }); + + //** + //** GET + //** + it('Get Software Products Processes List', () => { + const store = storeCreator(); + deepFreeze(store.getState()); + + const softwareProductProcessesList = [ + { + name: 'Pr1', + description: 'hjhj', + id: 'EBADF561B7FA4A788075E1840D0B5971', + artifactName: 'artifact' + }, + { + name: 'Pr1', + description: 'hjhj', + id: '2F47447D22DB4C53B020CA1E66201EF2', + artifactName: 'artifact' + } + ]; + + deepFreeze(softwareProductProcessesList); + + deepFreeze(store.getState()); + + const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processesList', softwareProductProcessesList); + + mockRest.addHandler('fetch', ({options, data, baseUrl}) => { + expect(baseUrl).to.equal(`${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/processes`); + expect(data).to.deep.equal(undefined); + expect(options).to.equal(undefined); + return {results: softwareProductProcessesList}; + }); + + return SoftwareProductProcessesActionHelper.fetchProcessesList(store.dispatch, {softwareProductId}).then(() => { + expect(store.getState()).to.deep.equal(expectedStore); + }); + }); + + //** + //** DELETE + //** + it('Delete Software Products Processes', () => { + const softwareProductProcessesList = [ + { + name: 'Pr1', + description: 'hjhj', + id: 'EBADF561B7FA4A788075E1840D0B5971', + artifactName: 'artifact' + } + ]; + + deepFreeze(softwareProductProcessesList); + const store = storeCreator({ + softwareProduct: { + softwareProductProcesses: { + processesList: softwareProductProcessesList + } + } + }); + + const processId = 'EBADF561B7FA4A788075E1840D0B5971'; + deepFreeze(store.getState()); + + const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processesList', []); + + mockRest.addHandler('destroy', ({data, options, baseUrl}) => { + expect(baseUrl).to.equal(`${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/processes/${processId}`); + expect(data).to.equal(undefined); + expect(options).to.equal(undefined); + return { + results: { + returnCode: 'OK' + } + }; + }); + + return SoftwareProductProcessesActionHelper.deleteProcess(store.dispatch, { + process: softwareProductProcessesList[0], + softwareProductId + }).then(() => { + expect(store.getState()).to.deep.equal(expectedStore); + }); + }); + + it('Validating Software Products Processes Delete confirmation', done => { + const store = storeCreator(); + deepFreeze(store.getState()); + + let process = { + id: 'p_id', + name: 'p_name' + }; + deepFreeze(process); + + const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processToDelete', process); + + SoftwareProductProcessesActionHelper.openDeleteProcessesConfirm(store.dispatch, {process}); + + setTimeout(function(){ + expect(store.getState()).to.deep.equal(expectedStore); + done(); + }, 100); + }); + + it('Validating Software Products Processes Cancel Delete', done => { + const store = storeCreator(); + deepFreeze(store.getState()); + + const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processToDelete', false); + + SoftwareProductProcessesActionHelper.hideDeleteConfirm(store.dispatch); + + setTimeout(function(){ + expect(store.getState()).to.deep.equal(expectedStore); + done(); + }, 100); + }); + + //** + //** CREATE/EDIT + //** + it('Validating open Software Products Processes for create', done => { + const store = storeCreator(); + deepFreeze(store.getState()); + + let process = {}; + deepFreeze(process); + + const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processesEditor.data', process); + + SoftwareProductProcessesActionHelper.openEditor(store.dispatch); + + setTimeout(function(){ + expect(store.getState()).to.deep.equal(expectedStore); + done(); + }, 100); + }); + + it('Validating close Software Products Processes from editing mode', done => { + const store = storeCreator(); + deepFreeze(store.getState()); + + const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processesEditor', {}); + + SoftwareProductProcessesActionHelper.closeEditor(store.dispatch); + + setTimeout(function(){ + expect(store.getState()).to.deep.equal(expectedStore); + done(); + }, 100); + }); + + it('Validating open Software Products Processes for editing', done => { + const store = storeCreator(); + deepFreeze(store.getState()); + + let process = {name: 'aa', description: 'xx'}; + deepFreeze(process); + + const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processesEditor.data', process); + + SoftwareProductProcessesActionHelper.openEditor(store.dispatch, process); + + setTimeout(function(){ + expect(store.getState()).to.deep.equal(expectedStore); + done(); + }, 100); + }); + + it('Validating Software Products Processes dataChanged event', done => { + let process = {name: 'aa', description: 'xx'}; + deepFreeze(process); + + const store = storeCreator({ + softwareProduct: { + softwareProductProcesses: { + processesEditor: { + data: process + } + } + } + }); + deepFreeze(store.getState()); + + let deltaData = {name: 'bb'}; + deepFreeze(deltaData); + + let expectedProcess = {name: 'bb', description: 'xx'}; + deepFreeze(expectedProcess); + + const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processesEditor.data', expectedProcess); + + SoftwareProductProcessesActionHelper.processEditorDataChanged(store.dispatch, {deltaData}); + + setTimeout(function(){ + expect(store.getState()).to.deep.equal(expectedStore); + done(); + }, 100); + }); +}); + diff --git a/openecomp-ui/test/utils/errorResponseHandler.test.js b/openecomp-ui/test/utils/errorResponseHandler.test.js new file mode 100644 index 0000000000..fd9dec6a8d --- /dev/null +++ b/openecomp-ui/test/utils/errorResponseHandler.test.js @@ -0,0 +1,135 @@ +/*- + * ============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========================================================= + */ + +import deepFreeze from 'deep-freeze'; +import expect from 'expect'; +import {cloneAndSet} from '../../test-utils/Util.js'; +import store from 'sdc-app/AppStore.js'; +import errorResponseHandler from 'nfvo-utils/ErrorResponseHandler.js'; + +describe('Error Response Handler Util', () => { + + beforeEach(function () { + deepFreeze(store.getState()); + }); + + it('validating error in policyException', done => { + let textStatus = '', errorThrown = ''; + let xhr = { + responseJSON: { + requestError: { + policyException: { + messageId: 'SVC4122', + text: 'Error: Invalid data.' + } + } + } + }; + deepFreeze(xhr); + + const errorNotification = { + type: 'error', title: 'Error: SVC4122', msg: 'Error: Invalid data.', timeout: undefined, + validationResponse: undefined + }; + const expectedStore = cloneAndSet(store.getState(), 'notification', errorNotification); + + errorResponseHandler(xhr, textStatus, errorThrown); + + setTimeout(function () { + expect(store.getState()).toEqual(expectedStore); + done(); + }, 100); + }); + + it('validating error in serviceException with variables', done => { + let textStatus = '', errorThrown = ''; + let xhr = { + responseJSON: { + requestError: { + serviceException: { + messageId: 'SVC4122', + text: "Error: Invalid artifact type '%1'.", + variables: ['newType'] + } + } + } + }; + deepFreeze(xhr); + + const errorNotification = { + type: 'error', title: 'Error: SVC4122', msg: 'Error: Invalid artifact type newType.', timeout: undefined, + validationResponse: undefined + }; + const expectedStore = cloneAndSet(store.getState(), 'notification', errorNotification); + + errorResponseHandler(xhr, textStatus, errorThrown); + + setTimeout(function () { + expect(store.getState()).toEqual(expectedStore); + done(); + }, 100); + }); + + it('validating error in response', done => { + let textStatus = '', errorThrown = ''; + let xhr = { + responseJSON: { + status: 'AA', + message: 'Error: Invalid data.' + } + }; + deepFreeze(xhr); + + const errorNotification = { + type: 'error', title: 'AA', msg: 'Error: Invalid data.', timeout: undefined, + validationResponse: undefined + }; + const expectedStore = cloneAndSet(store.getState(), 'notification', errorNotification); + + errorResponseHandler(xhr, textStatus, errorThrown); + + setTimeout(function () { + expect(store.getState()).toEqual(expectedStore); + done(); + }, 100); + }); + + it('validating error in request', done => { + let textStatus = '', errorThrown = ''; + let xhr = { + statusText: '500', + responseText: 'Internal server error.' + }; + deepFreeze(xhr); + + const errorNotification = { + type: 'error', title: '500', msg: 'Internal server error.', timeout: undefined, + validationResponse: undefined + }; + const expectedStore = cloneAndSet(store.getState(), 'notification', errorNotification); + + errorResponseHandler(xhr, textStatus, errorThrown); + + setTimeout(function () { + expect(store.getState()).toEqual(expectedStore); + done(); + }, 100); + }); +}); diff --git a/openecomp-ui/test/utils/restApiUtil.test.js b/openecomp-ui/test/utils/restApiUtil.test.js new file mode 100644 index 0000000000..2a5e69b02e --- /dev/null +++ b/openecomp-ui/test/utils/restApiUtil.test.js @@ -0,0 +1,149 @@ +/*- + * ============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========================================================= + */ + +import expect from 'expect'; +import $ from 'jquery'; +import RestAPIUtil, {makeQueryParams} from 'src/nfvo-utils/RestAPIUtil'; + +const URL = 'http://bla.ble.blu/'; + +describe('RestAPIUtil Util class', () => { + + beforeEach(()=> { + $.ajax = (options) => options; + }); + + it('RestAPIUtil does exist', () => { + expect(RestAPIUtil).toExist(); + }); + + it('RestAPIUtil makeQueryParams does exist', () => { + expect(makeQueryParams).toExist(); + }); + + it('RestAPIUtil makeQueryParams params', () => { + const pageStart = 1, pageSize = 25; + const response = makeQueryParams({pagination: {pageStart, pageSize}}); + expect(response.pageStart).toBe(pageStart); + expect(response.pageSize).toBe(pageSize); + }); + + it('normal basic fetch', () => { + const response = RestAPIUtil.fetch(URL); + expect(response).toExist(); + }); + + it('no url', function () { + expect(function () { + RestAPIUtil.fetch(); + }).toThrow(/url/); + }); + + it('fetch with pagination', () => { + const pageStart = 1, pageSize = 25; + const response = RestAPIUtil.fetch(URL, {pagination: {pageStart, pageSize}}); + expect(response.pagination).toExist(); + expect(response.url).toInclude(`?pageStart=${pageStart}&pageSize=${pageSize}`); + }); + + it('fetch with sorting', () => { + const sortField = 'name', sortDir = 'ASCENDING'; + const response = RestAPIUtil.fetch(URL, {sorting: {sortField, sortDir}}); + expect(response.sorting).toExist(); + expect(response.url).toInclude(`?sortField=${sortField}&sortDir=${sortDir}`); + }); + + it('fetch with filtering', () => { + const baseFilter = [ + { + criterionValue: 'service', + fieldName: 'Brand', + operator: 'EQUALS', + type: 'STRING' + }, + { + criterionValue: 'resource', + fieldName: 'Brand', + operator: 'EQUALS', + type: 'STRING' + } + ]; + const response = RestAPIUtil.fetch(URL, {filtering: {filterCriteria: baseFilter, logicalRelation: 'OR'}}); + expect(response.filtering).toExist(); + expect(response.url).toInclude('?filter='); + }); + + it('fetch with qParams', () => { + const response = RestAPIUtil.fetch(URL, {qParams: {pageStart: 1, pageSize: 10}}); + expect(response.qParams).toExist(); + }); + + it('fetch with url on options', () => { + const response = RestAPIUtil.fetch(URL, {url:'12345', qParams: {pageStart: 1, pageSize: 10}}); + expect(response.qParams).toExist(); + }); + + it('fetch with url path param', () => { + let someData = 'data'; + const response = RestAPIUtil.fetch(`${URL}{someData}/`, {params: {someData}}); + expect(response.url).toInclude(`/${someData}/`); + }); + + it('fetch with url undefined path param', () => { + const response = RestAPIUtil.fetch(`${URL}{someData}/`, {params: {someData: undefined}}); + expect(response.url).toInclude('/undefined/'); + }); + + it('normal basic create', () => { + const response = RestAPIUtil.create(URL); + expect(response).toExist(); + }); + + it('create with FormData', () => { + let formData = new FormData(); + formData.append('username', 'Chris'); + const response = RestAPIUtil.create(URL, formData); + expect(response).toExist(); + }); + + it('create with FormData with md5', () => { + let formData = new FormData(); + formData.append('username', 'Chris'); + const response = RestAPIUtil.create(URL, formData, {md5: true}); + expect(response).toExist(); + }); + + it('create with file', () => { + let progressCallback = () => {}; + const response = RestAPIUtil.create(URL, {}, {progressCallback, fileSize: 123}); + expect(response).toExist(); + }); + + it('normal basic save', () => { + const response = RestAPIUtil.save(URL); + expect(response).toExist(); + }); + + it('normal basic delete', () => { + const response = RestAPIUtil.destroy(URL); + expect(response).toExist(); + }); + +}); diff --git a/openecomp-ui/test/utils/uuid.test.js b/openecomp-ui/test/utils/uuid.test.js new file mode 100644 index 0000000000..cd55baadea --- /dev/null +++ b/openecomp-ui/test/utils/uuid.test.js @@ -0,0 +1,52 @@ +/*- + * ============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========================================================= + */ + +import uuid from 'src/nfvo-utils/UUID.js'; +import expect from 'expect'; + +describe('UUID', () => { + + it('function does exist', () => { + expect(uuid).toExist(); + }); + + it('generate UUID synchronously', () => { + let result = uuid(undefined, true); + expect(result).toExist(); + }); + + it('generate UUID synchronously with number', () => { + let result = uuid(5, true); + expect(result).toExist(); + }); + + it('generate UUID synchronously with number', () => { + let result = uuid(1, true); + expect(result).toExist(); + }); + + it('generate UUID asynchronously', done => { + uuid().then(result => { + expect(result).toExist(); + done(); + }); + }); + +}); diff --git a/openecomp-ui/tests.webpack.js b/openecomp-ui/tests.webpack.js new file mode 100644 index 0000000000..10b54fed83 --- /dev/null +++ b/openecomp-ui/tests.webpack.js @@ -0,0 +1,35 @@ +/*- + * ============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========================================================= + */ + +var testContext = require.context('./test', true, /.test\.js$/); +testContext.keys().forEach(testContext); + +var utilsContext = require.context('./src/nfvo-utils', true, /\.js$/); +utilsContext.keys().forEach(utilsContext); + +var componentsContext = require.context('./src/nfvo-components', true, /\.(js|jsx)$/); +componentsContext.keys().forEach(componentsContext); + +var flowsCodeContext = require.context('./src/sdc-app/flows', true, /\.(js|jsx)$/); +flowsCodeContext.keys().forEach(flowsCodeContext); + +var onBoardingCodeContext = require.context('./src/sdc-app/onboarding', true, /\.(js|jsx)$/); +onBoardingCodeContext.keys().forEach(onBoardingCodeContext); + diff --git a/openecomp-ui/tools/gulp/deployment/gulpfile.js b/openecomp-ui/tools/gulp/deployment/gulpfile.js new file mode 100644 index 0000000000..99389108bb --- /dev/null +++ b/openecomp-ui/tools/gulp/deployment/gulpfile.js @@ -0,0 +1,33 @@ +/*- + * ============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========================================================= + */ + +var gulp = require('gulp'); +var i18nUpdateTask = require('./tools/gulp/tasks/i18nUpdate'); + +gulp.task('i18nUpdate', function() { + + return i18nUpdateTask({ + warDir: process.cwd(), + lang: 'en' + }); +}); + +gulp.task('default', ['i18nUpdate']); + diff --git a/openecomp-ui/tools/gulp/deployment/package.json b/openecomp-ui/tools/gulp/deployment/package.json new file mode 100644 index 0000000000..3bad0374bf --- /dev/null +++ b/openecomp-ui/tools/gulp/deployment/package.json @@ -0,0 +1,23 @@ +{ + "name": "sdc-client-tools", + "version": "9.3.0", + "description": "Service Designer & Catalog Client Tools", + "dependencies": {}, + "devDependencies": { + "bluebird": "^2.10.1", + "gulp": "^3.9.0", + "gulp-rename": "^1.2.2", + "gulp-replace": "^0.5.4", + "prompt": "^0.2.14" + }, + "author": "ECOMP", + "license": "LicenseRef-LICENSE", + "scripts": { + "start": "gulp run", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "engines": { + "node": ">=0.12.7", + "npm": ">=2.11.3" + } +} diff --git a/openecomp-ui/tools/gulp/deployment/tools/gulp/tasks/i18nUpdate.js b/openecomp-ui/tools/gulp/deployment/tools/gulp/tasks/i18nUpdate.js new file mode 100644 index 0000000000..a3cae5b018 --- /dev/null +++ b/openecomp-ui/tools/gulp/deployment/tools/gulp/tasks/i18nUpdate.js @@ -0,0 +1,171 @@ +/*- + * ============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========================================================= + */ + +var gulp, replace, rename, fs, prompt, Promise; + +function mergePromptOptions(options) { + + return new Promise(function(resolve, reject) { + var lang = options.lang; + var warDir = options.warDir; + prompt.start(); + prompt.get([ + { + description: 'Enter war directory', + default: warDir, + name: 'warDir' + }, + { + description: 'Enter locale.json parent directory name', + default: lang, + name: 'lang' + } + ], function (err, result) { + + if(err) { + reject(new Error('mergePromptOptions::>\n ' + err)); + return; + } + + var warDir = result.warDir; + var lang = result.lang; + + console.log('\nlocale.json parent directory name> "' + lang + '"'); + console.log('war director>"' + warDir + '"'); + + resolve({ + warDir: warDir, + lang: lang + }); + }); + }); +} + +function isBundleExists(path) { + return new Promise(function(resolve) { + fs.stat(path, function(err) { + resolve(null == err); + /*if null == err then file exists.*/ + }); + }); +} + +function copyEnglishBundle(enBundlePath, lang) { + return new Promise(function(resolve, reject) { + gulp.src(enBundlePath, {base: './'}) + .pipe(rename({basename: 'bundle_' + lang})) + .pipe(gulp.dest('./')) + .on('end', function() { + resolve(); + }) + .on('error', function(err) { + reject(new Error('copyEnglishBundle::>\n ' + err)); + }); + }); +} + +function getLocaleContent(localePath) { + + return new Promise(function(resolve, reject) { + fs.readFile(localePath, {encoding: 'utf-8'}, function(err,data){ + if(err) { + reject('getLocaleContent()::>\n ' + err); + return; + } + resolve(data); + }); + }); + +} + +function extractLocaleJsonContent(localeDataStr) { + + var localeJsonStrI18nStartIdx = localeDataStr.indexOf('I18N_IDENTIFIER_START'); + var localeJsonStrI18nEndIdx = localeDataStr.indexOf('I18N_IDENTIFIER_END'); + + if(-1 === localeJsonStrI18nStartIdx || -1 === localeJsonStrI18nEndIdx) { + return Promise.reject(new Error('extractLocaleJsonContent::> localeDataStr must contain %I18N_IDENTIFIER_START% and %I18N_IDENTIFIER_END%')); + } + + var localeJsonStr = localeDataStr.substring( + localeDataStr.indexOf('{', localeJsonStrI18nStartIdx), + localeDataStr.lastIndexOf('}', localeJsonStrI18nEndIdx) + 1 + ); + + try { + JSON.parse(localeJsonStr); + } catch(e) { + return Promise.reject(new Error('extractLocaleJsonContent::> localeDataStr must contain a valid json between %I18N_IDENTIFIER_START% and %I18N_IDENTIFIER_END%=>' + e)); + } + + return Promise.resolve(localeJsonStr); +} + +function setBundleLocaleContent(bundlePath, localeJsonStr) { + return new Promise(function(resolve, reject) { + gulp.src(bundlePath, {base: './'}) + .pipe(replace(/I18N_IDENTIFIER_START(.|[\r\n])*?I18N_IDENTIFIER_END/i, function(expr) { + return expr.substring(0, expr.indexOf('{')) + localeJsonStr + expr.substring(expr.lastIndexOf('}') + 1); + })) + .pipe(gulp.dest('./')) + .on('end', function() { + resolve(); + }) + .on('error', function(err) { + reject(new Error('setBundleLocaleContent::>\n ' + err)); + }); + }); +} + + +function update(options) { + + gulp = require('gulp'); + replace = require('gulp-replace'); + rename = require('gulp-rename'); + fs = require('fs'); + prompt = require('prompt'); + Promise = require('bluebird'); + + return mergePromptOptions(options).then(function(mergedOptions) { + var lang = mergedOptions.lang; + var warDir = mergedOptions.warDir; + + var bundlePath = warDir + '/js/bundle_' + lang + '.js'; + var localePath = warDir + '/i18n/' + lang + '/locale.json'; + + return isBundleExists(bundlePath) + .then(function(isBundleExist) { + var englishBundlePath; + if(!isBundleExist) { + englishBundlePath = warDir + '/js/bundle_en.js'; + return copyEnglishBundle(englishBundlePath, lang); + } + }) + .then(getLocaleContent.bind(null, localePath)) + .then(extractLocaleJsonContent) + .then(setBundleLocaleContent.bind(null, bundlePath)); + }); + +} + + + +module.exports = update; diff --git a/openecomp-ui/tools/gulp/tasks/i18n.js b/openecomp-ui/tools/gulp/tasks/i18n.js new file mode 100644 index 0000000000..38b2a02dcc --- /dev/null +++ b/openecomp-ui/tools/gulp/tasks/i18n.js @@ -0,0 +1,115 @@ +/*- + * ============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========================================================= + */ + +var gulp = require('gulp'); +var fs = require('fs'); +var replace = require('gulp-replace'); +var clean = require('gulp-clean'); +var mkdirp = require('mkdirp'); + +/** + * + * @param options.outputPath + * @param options.localesPath + * @param options.lang = options.lang + * + * @returns {string} + */ +function composeLocalesDirPath(options) { + return options.outputPath + options.localesPath + options.lang; +} + +/** + * + * @param options.outputPath + * @param options.localesPath + * @param options.lang + * + * @returns {string} + */ +function composeLocaleFilePath(options) { + return composeLocalesDirPath(options) + '/locale.json'; +} + + +/** + * @param options + * @param options.outputPath + * @param options.localesPath + * @param options.lang = options.lang + * + */ +function ensureLocalesDir(options) { + + return new Promise(function (resolve, reject) { + mkdirp(composeLocalesDirPath(options), function (err) { + if (err) { + reject(err); + } + else { + resolve(); + } + }); + }); + +} + +/** + * + * @param options + * @param options.outputPath + * @param options.localesPath + * @param options.lang = options.lang + * + */ +function i18nTask(options) { + + var i18nJson = {}; + + function addWord(expr) { + var word = expr.substring('i18n(\''.length, expr.length - 1); + i18nJson[word] = word; + return expr; + } + + return ensureLocalesDir(options).then(function () { + return new Promise(function(resolve, reject) { + gulp.src(options.outputPath + '**/*.js', {base: './'}) + .pipe(replace(/i18n\('.*?'/g, addWord)) + .pipe(clean()) + .pipe(gulp.dest('./')) + .on('end', function () { + + var i18nJsonWrapper = { dataWrapperArr: ["I18N_IDENTIFIER_START", i18nJson, "I18N_IDENTIFIER_END"] , i18nDataIdx: 1}; + + fs.writeFile(composeLocaleFilePath(options), JSON.stringify(i18nJsonWrapper), function (err) { + if (err) { + reject(err); + } + else resolve(); + }); + }).on('error', function (err) { + reject(err); + }); + }); + }); +} + +module.exports = i18nTask; diff --git a/openecomp-ui/tools/gulp/tasks/prod.js b/openecomp-ui/tools/gulp/tasks/prod.js new file mode 100644 index 0000000000..d66b841d2a --- /dev/null +++ b/openecomp-ui/tools/gulp/tasks/prod.js @@ -0,0 +1,100 @@ +/*- + * ============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========================================================= + */ + +var gulp, replace, Promise, webpack, webpackProductionConfig; + +var supportedLanguages = ['en']; + +function start(options) { + + var promises = [buildIndex(options)]; + supportedLanguages.forEach(function (lang) { + promises.push(bundleJS(options, lang)); + }); + return Promise.all(promises); +} + +function bundleJS(options, lang) { + return new Promise(function (resolve, reject) { + var prodConfig = webpackProductionConfig; + prodConfig.resolve.alias.i18nJson = options.outDir + '/i18n/' + lang + '/locale.json'; + prodConfig.output.filename = jsFileByLang(options.outFileName, lang); + webpack(prodConfig, function (err, stats) { + console.log('[webpack:build]', stats.toString()); + if (err || stats.hasErrors()) { + console.log('bundleJS : Failure!!', '\n -language: ', lang); + reject(err || stats.toJson().errors); + } + else { + console.log('bundleJS : Done', '\n -language: ', lang); + resolve(); + } + }); + }); +} + +function buildIndex(options) { + + return new Promise(function (resolve, reject) { + + var stream = gulp.src(options.outDir + '/index.html'); + + stream.pipe(replace(/\/\/(.|[\r\n])*?/g, ''))//in script occurrences. + .pipe(replace(/(.|[\r\n])*?/g, ''))//out of script occurrences. + .pipe(replace(/)?/g, '')) + .pipe(replace(/\/\/(.|[\r\n])*?/g, supportedLanguages.map(function (val) { + return "'" + val + "'"; + }).toString())) + .pipe(gulp.dest(options.outDir)) + .on('end', function () { + console.log('buildIndex : Done'); + resolve(); + }) + .on('error', function (e) { + console.log('buildIndex : Failure!!'); + reject(e); + }); + }); + +} + +function jsFileByLang(fileName, lang) { + return fileName.replace(/.js$/, '_' + lang + '.js'); +} + +/** + * @param options + * @param options.outFileName optional + */ +function prodTask(options) { + + gulp = require('gulp'); + replace = require('gulp-replace'); + Promise = require('bluebird'); + webpack = require('webpack'); + webpackProductionConfig = options.webpackProductionConfig; + + return start({ + outFileName: options.outFileName || '[name].js', + outDir: options.outDir + }); +} + +module.exports = prodTask; diff --git a/openecomp-ui/tools/webpack/config-json-loader/index.js b/openecomp-ui/tools/webpack/config-json-loader/index.js new file mode 100644 index 0000000000..bf34533f67 --- /dev/null +++ b/openecomp-ui/tools/webpack/config-json-loader/index.js @@ -0,0 +1,26 @@ +/*- + * ============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========================================================= + */ + +module.exports = function(content) { + var config = JSON.parse(content); + var build = process.env.BUILD_NUMBER || '0'; + config.build = build; + return JSON.stringify(config); +}; diff --git a/openecomp-ui/webapp-heat-validation/META-INF/context.xml b/openecomp-ui/webapp-heat-validation/META-INF/context.xml new file mode 100644 index 0000000000..2ada7fc48f --- /dev/null +++ b/openecomp-ui/webapp-heat-validation/META-INF/context.xml @@ -0,0 +1,4 @@ + + + + diff --git a/openecomp-ui/webapp-heat-validation/WEB-INF/jetty-web.xml b/openecomp-ui/webapp-heat-validation/WEB-INF/jetty-web.xml new file mode 100644 index 0000000000..bc3bfa62f0 --- /dev/null +++ b/openecomp-ui/webapp-heat-validation/WEB-INF/jetty-web.xml @@ -0,0 +1,8 @@ + + + + + /heat-validation + diff --git a/openecomp-ui/webapp-heat-validation/WEB-INF/rewrite.config b/openecomp-ui/webapp-heat-validation/WEB-INF/rewrite.config new file mode 100644 index 0000000000..b5e1a31493 --- /dev/null +++ b/openecomp-ui/webapp-heat-validation/WEB-INF/rewrite.config @@ -0,0 +1,2 @@ +RewriteRule ^.*\..*$ - [L] +RewriteRule ^.*$ /heat.html [L] diff --git a/openecomp-ui/webapp-heat-validation/WEB-INF/web.xml b/openecomp-ui/webapp-heat-validation/WEB-INF/web.xml new file mode 100644 index 0000000000..f84519eee3 --- /dev/null +++ b/openecomp-ui/webapp-heat-validation/WEB-INF/web.xml @@ -0,0 +1,51 @@ + + + + Heat-Validation + + + heat.html + + + + js + org.eclipse.jetty.servlet.DefaultServlet + + + cacheControl + public, no-cache + + + etags + true + + + + + js + *.js + + + + resources + org.eclipse.jetty.servlet.DefaultServlet + + + cacheControl + public, max-age=31536000 + + + etags + true + + + + + resources + / + + + diff --git a/openecomp-ui/webapp-heat-validation/heat-validation.xml b/openecomp-ui/webapp-heat-validation/heat-validation.xml new file mode 100644 index 0000000000..404dcf23f3 --- /dev/null +++ b/openecomp-ui/webapp-heat-validation/heat-validation.xml @@ -0,0 +1,45 @@ + + + + + + + /heat-validation + /heat-validation.war + + + + org.eclipse.jetty.websocket.jsr356 + true + + + + + 2048 + + + + + + + + Test Realm + /etc/realm.properties + + + + + + + + true + + + true + + + + diff --git a/openecomp-ui/webapp-onboarding/META-INF/context.xml b/openecomp-ui/webapp-onboarding/META-INF/context.xml new file mode 100644 index 0000000000..2ada7fc48f --- /dev/null +++ b/openecomp-ui/webapp-onboarding/META-INF/context.xml @@ -0,0 +1,4 @@ + + + + diff --git a/openecomp-ui/webapp-onboarding/WEB-INF/jetty-web.xml b/openecomp-ui/webapp-onboarding/WEB-INF/jetty-web.xml new file mode 100644 index 0000000000..0a9d33a940 --- /dev/null +++ b/openecomp-ui/webapp-onboarding/WEB-INF/jetty-web.xml @@ -0,0 +1,8 @@ + + + + + /onboarding + diff --git a/openecomp-ui/webapp-onboarding/WEB-INF/rewrite.config b/openecomp-ui/webapp-onboarding/WEB-INF/rewrite.config new file mode 100644 index 0000000000..90893bb545 --- /dev/null +++ b/openecomp-ui/webapp-onboarding/WEB-INF/rewrite.config @@ -0,0 +1,2 @@ +RewriteRule ^.*\..*$ - [L] +RewriteRule ^.*$ /index.html [L] diff --git a/openecomp-ui/webapp-onboarding/WEB-INF/web.xml b/openecomp-ui/webapp-onboarding/WEB-INF/web.xml new file mode 100644 index 0000000000..6dd619fbbc --- /dev/null +++ b/openecomp-ui/webapp-onboarding/WEB-INF/web.xml @@ -0,0 +1,51 @@ + + + + ASDC + + + index.html + + + + js + org.eclipse.jetty.servlet.DefaultServlet + + + cacheControl + public, no-cache + + + etags + true + + + + + js + *.js + + + + resources + org.eclipse.jetty.servlet.DefaultServlet + + + cacheControl + public, max-age=31536000 + + + etags + true + + + + + resources + / + + + diff --git a/openecomp-ui/webapp-onboarding/onboarding.xml b/openecomp-ui/webapp-onboarding/onboarding.xml new file mode 100644 index 0000000000..50df896a4b --- /dev/null +++ b/openecomp-ui/webapp-onboarding/onboarding.xml @@ -0,0 +1,45 @@ + + + + + + + /onboarding + /onboarding-fe.war + + + + org.eclipse.jetty.websocket.jsr356 + true + + + + + 2048 + + + + + + + + Test Realm + /etc/realm.properties + + + + + + + + true + + + true + + + + diff --git a/openecomp-ui/webpack.config.js b/openecomp-ui/webpack.config.js new file mode 100644 index 0000000000..2cccba8f0f --- /dev/null +++ b/openecomp-ui/webpack.config.js @@ -0,0 +1,122 @@ +/*- + * ============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'; + +var path = require('path'); +var webpack = require('webpack'); + +var localDevConfig = {}; +try { + localDevConfig = require('./devConfig'); +} catch(e) {} +var devConfig = Object.assign({}, require('./devConfig.defaults'), localDevConfig); +var devPort = process.env.PORT || devConfig.port; +var latestProgress = 0; + +module.exports = { + devtool: 'eval-source-map', + entry: { + bundle: [ + 'sdc-app/sdc.app.jsx', + `webpack-dev-server/client?http://localhost:${devPort}`, + 'webpack/hot/only-dev-server' + ], + 'punch-outs': [ + 'sdc-app/punch-outs.js', + `webpack-dev-server/client?http://localhost:${devPort}`, + 'webpack/hot/only-dev-server' + ], + 'heat-validation': [ + 'sdc-app/heatValidation.app.jsx', + `webpack-dev-server/client?http://localhost:${devPort}`, + 'webpack/hot/only-dev-server' + ] + }, + resolve: { + root: [path.resolve('.')], + alias: { + i18nJson: 'nfvo-utils/i18n/locale.json', + 'nfvo-utils': 'src/nfvo-utils', + 'nfvo-components': 'src/nfvo-components', + 'sdc-app': 'src/sdc-app' + } + }, + output: { + path: path.join(__dirname, 'dist/dev'), + publicPath: `http://localhost:${devPort}/onboarding/`, + filename: '[name].js' + }, + devServer: { + port: devPort, + historyApiFallback: true, + publicPath: `http://localhost:${devPort}/onboarding/`, + contentBase: path.join(__dirname, 'dist/dev'), + hot: true, + progress: true, + inline: true, + debug: true, + stats: { + colors: true + } + }, + module: { + preLoaders: [ + {test: /\.(js|jsx)$/, loader: 'source-map-loader', exclude: /node_modules/} + ], + loaders: [ + {test: /\.(js|jsx)$/, loaders: ['react-hot', 'babel-loader', 'eslint-loader'], exclude: /node_modules/}, + {test: /\.(css|scss)$/, loaders: ['style', 'css?sourceMap', 'sass?sourceMap']}, + + // required for font icons + {test: /\.(woff|woff2)(\?.*)?$/, loader: 'url-loader?limit=16384&mimetype=application/font-woff' }, + {test: /\.(ttf|eot|otf)(\?.*)?$/, loader: 'file-loader' }, + {test: /\.(png|jpg|svg)(\?.*)?$/, loader: 'url-loader?limit=16384'}, + + {test: /\.json$/, loaders: ['json']}, + {test: /\.html$/, loaders: ['html']} + ] + }, + eslint: { + configFile: './.eslintrc', + emitError: true, + emitWarning: true + }, + plugins: [ + new webpack.DefinePlugin({ + DEV: true, + DEBUG: true + }), + new webpack.HotModuleReplacementPlugin(), + new webpack.ProgressPlugin(function (percentage, msg) { + if (percentage == 0) { + latestProgress = 0; + console.log(); //new line + } + var progressVal = (percentage * 100).toFixed(0); + if (progressVal > latestProgress) { + latestProgress = progressVal + //process.stdout.clearLine(); + process.stdout.write(msg + ' ' + progressVal + '%\r'); + } + }) + ] + +}; diff --git a/pom.xml b/pom.xml index 27b32b3e09..2a847cdb73 100644 --- a/pom.xml +++ b/pom.xml @@ -24,7 +24,7 @@ sdc-os-chef openecomp-be - + openecomp-ui diff --git a/sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-normatives/files/default/normatives.tar.gz b/sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-normatives/files/default/normatives.tar.gz index 4a5217f2cc1c51c64800af1332bd717084763002..096297598271f8d73a11cb0c5cde93a86c95f573 100644 GIT binary patch delta 47242 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 uc|wKcKtySxhHLB)>EQ@}++RbubqiI5 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 u;+f=hy(zd{VV1G -- 2.16.6

o5!uSSCr9uYLa8?jS=ii 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 literal 0 HcmV?d00001 diff --git a/openecomp-ui/resources/images/icons/favicon.ico b/openecomp-ui/resources/images/icons/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..c59a7aa0a363500746c94ab4c24bcb6187baf84f GIT binary patch literal 566 zcmV-60?GY}P){iiDgg_8wjsM40aC87B{vRg(%T?gn0d{~5C?#+eh!x0v>jzXIG@w`k&RpJ_ z$+{dd#_+S7Okj6r-@cih8BoJ8cyo>uZ|30$I0BAqfmU@!%_Iz0g z8=oF2>{eL*WIK|KY+C~}=5{<29|wivU>*xGPbJ|I+&xJ` zcD*vc1!T-@D@+5D90xR5M3cOfNeT=ZVHo_e+dy8!e z5agP!1u-BfCfWPrO*{CBJvp|=pEF(*3b*}JxaU`!o-H0?;28C?{16`6lGAR0m z4Kx=^qj{iiDgg_8wjsM40aC87B{vRg(%T?gn0d{~5C?#+eh!x0v>jzXIG@w`k&RpJ_ z$+{dd#_+S7Okj6r-@cih8BoJ8cyo>uZ|30$I0BAqfmU@!%_Iz0g z8=oF2>{eL*WIK|KY+C~}=5{<29|wivU>*xGPbJ|I+&xJ` zcD*vc1!T-@D@+5D90xR5M3cOfNeT=ZVHo_e+dy8!e z5agP!1u-BfCfWPrO*{CBJvp|=pEF(*3b*}JxaU`!o-H0?;28C?{16`6lGAR0m z4Kx=^qjvendoe license model icon \ No newline at end of file diff --git a/openecomp-ui/resources/images/onboarding/vendor-software-product.svg b/openecomp-ui/resources/images/onboarding/vendor-software-product.svg new file mode 100644 index 0000000000..a547c4abdf --- /dev/null +++ b/openecomp-ui/resources/images/onboarding/vendor-software-product.svg @@ -0,0 +1 @@ +vendor software product \ No newline at end of file diff --git a/openecomp-ui/resources/images/plus-circle-icon.svg b/openecomp-ui/resources/images/plus-circle-icon.svg new file mode 100644 index 0000000000..352dcad5e8 --- /dev/null +++ b/openecomp-ui/resources/images/plus-circle-icon.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + diff --git a/openecomp-ui/resources/scss/_common.scss b/openecomp-ui/resources/scss/_common.scss new file mode 100644 index 0000000000..6ade0abfe5 --- /dev/null +++ b/openecomp-ui/resources/scss/_common.scss @@ -0,0 +1,6 @@ +@import "common/variables"; +@import "common/typography"; +@import "common/base"; +@import "common/layout"; +@import "common/utils"; + diff --git a/openecomp-ui/resources/scss/_components.scss b/openecomp-ui/resources/scss/_components.scss new file mode 100644 index 0000000000..884308885a --- /dev/null +++ b/openecomp-ui/resources/scss/_components.scss @@ -0,0 +1,73 @@ +@import "components/punchOut"; +@import "components/buttons"; +@import "components/forms"; +@import "components/validationForm"; +@import "components/slidePanel"; +@import "components/dualListBox"; +@import "components/listEditorView"; +@import "components/toggleInput"; +@import "components/notifications"; +@import "components/inputOptions"; +@import "components/progressBar"; +@import "components/versionController"; +@import "components/sequenceDiagram"; +@import "components/navigationSideBar"; +@import "components/loader"; +@import "components/dropzone"; +@import "components/submitErrorResponse"; +@import "components/expandableInput"; + +%noselect { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.clickable { + cursor: pointer; +} + +.no-padding { + padding: 0; +} + +.next-to-icon-label { + $margin: 10px; + margin-left: $margin; + &.right { + margin-left: 0; + margin-right: $margin; + } +} + +.search-wrapper { + display: flex; + .search-input-control { + flex: 1 1; + margin: 0; + .form-control { + font-style: italic; + } + } + .search-icon { + position: relative; + left: -20px; + align-self: center; + width: 0; + color: $dark-gray; + } + .filter-icon { + position: relative; + left: -20px; + align-self: center; + width: 0; + background-color: $white; + } +} + +.warning-icon { + margin-left: 50%; + color: $yellow; +} diff --git a/openecomp-ui/resources/scss/_modules.scss b/openecomp-ui/resources/scss/_modules.scss new file mode 100644 index 0000000000..fd35bf2e0b --- /dev/null +++ b/openecomp-ui/resources/scss/_modules.scss @@ -0,0 +1,22 @@ +@import "modules/licenseAgreement"; +@import "modules/featureGroup"; +@import "modules/entitlementPools"; +@import "modules/licenseKeyGroup"; +@import "modules/softwareProductLandingPage"; +@import "modules/softwareProductCreatePage"; +@import "modules/_softwareProductAttachmentPage"; +@import "modules/_softwareProductProcessesPage"; +@import "modules/_vspComponentQuestionnaire"; +@import "modules/_softwareProductNetworksPage"; +@import "modules/_softwareProductComponentNetwork"; +@import "modules/_softwareProductComponentGeneral"; +@import "modules/_softwareproductComponentLoadBalancing"; +@import "modules/vspComponentMonitoring"; +@import "modules/licenseModel"; +@import "modules/onboardingCatalog"; +@import "modules/workflows"; +@import "modules/uploadScreen"; + + + + diff --git a/openecomp-ui/resources/scss/bootstrap-cust/_buttons.scss b/openecomp-ui/resources/scss/bootstrap-cust/_buttons.scss new file mode 100644 index 0000000000..bf58006d89 --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap-cust/_buttons.scss @@ -0,0 +1,13 @@ + +.btn { + height: 30px; + min-width: 95px; +} + +.btn-default .fa { + color: $brand-primary; +} + +.btn-info { + @include button-variant($text-black, $tlv-gray, $light-gray); +} diff --git a/openecomp-ui/resources/scss/bootstrap-cust/_close.scss b/openecomp-ui/resources/scss/bootstrap-cust/_close.scss new file mode 100644 index 0000000000..38d7138d86 --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap-cust/_close.scss @@ -0,0 +1,7 @@ +// +// Close icons +// -------------------------------------------------- + +.close { + font-size: $heading-font-1; +} diff --git a/openecomp-ui/resources/scss/bootstrap-cust/_dropdowns.scss b/openecomp-ui/resources/scss/bootstrap-cust/_dropdowns.scss new file mode 100644 index 0000000000..d6f895261c --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap-cust/_dropdowns.scss @@ -0,0 +1,16 @@ + +.caret { + right: 8px; + top: 12px; + position: absolute; +} + +.dropdown-menu { + padding: 0; + li a { + height: 30px; + } + .divider { + margin: 0; + } +} diff --git a/openecomp-ui/resources/scss/bootstrap-cust/_forms.scss b/openecomp-ui/resources/scss/bootstrap-cust/_forms.scss new file mode 100644 index 0000000000..545b23ee7f --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap-cust/_forms.scss @@ -0,0 +1,110 @@ +.form-group { + .control-label { + @extend .body-2-medium; + } + &.required { + label:before { + content: "*"; + color: $red; + margin: 0 4px 0 0; + } + } +} +.form-control { + @extend .body-1; + border-radius: 2px; + height: 30px; + @include box-shadow(none); + &:focus { + @include box-shadow(none); + } + &:hover { + border-color: $gray; + } +} + +label { + @extend .body-3; + margin-bottom: 8px; +} + +select.form-control { + display: block; + width: 215px; +} + +select[multiple] { + background: none; +} + +input[type="radio"], input[type="checkbox"] { + margin: 0; + + &:before { + content: ""; + display: inline-block; + width: 11px; + height: 11px; + margin-right: 10px; + position: absolute; + background-color: $white; + border: 1px solid $blue; + box-sizing: content-box; + } +} + +.radio label { + font-weight: normal; + display: inline-block; + cursor: pointer; + margin-right: $body-font-1; + font-size: $body-font-1; +} + +.checkbox label { + font-weight: normal; + display: inline-block; + cursor: pointer; + margin-right: $body-font-1; + font-size: $body-font-1; +} + +.radio input:before { + border-radius: 8px; +} + +.checkbox input:before { + border-radius: 2px; +} + +input[type=radio]:checked:before { + content: "\2022"; + color: $blue; + font-size: 30px; + text-align: center; + line-height: 11px; + font-family: $radio-font-family; +} + +input[type=checkbox]:checked:before { + font-family: $icon-font-family; + content: "\f00c"; + font-size: $icon-font-size; + color: $blue; + text-align: center; +} + +.radio, +.checkbox { + margin-top: 0px; + margin-bottom: 0px; +} + +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + position: absolute; + margin-left: -20px; + top: 2px; +} diff --git a/openecomp-ui/resources/scss/bootstrap-cust/_list-group.scss b/openecomp-ui/resources/scss/bootstrap-cust/_list-group.scss new file mode 100644 index 0000000000..b94f91bac9 --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap-cust/_list-group.scss @@ -0,0 +1,5 @@ + +.list-group-item { + border: none; + border-top: 3px solid $list-group-border; +} diff --git a/openecomp-ui/resources/scss/bootstrap-cust/_mixins.scss b/openecomp-ui/resources/scss/bootstrap-cust/_mixins.scss new file mode 100644 index 0000000000..774e662014 --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap-cust/_mixins.scss @@ -0,0 +1,3 @@ + + +@import "mixins/buttons"; \ No newline at end of file diff --git a/openecomp-ui/resources/scss/bootstrap-cust/_modals.scss b/openecomp-ui/resources/scss/bootstrap-cust/_modals.scss new file mode 100644 index 0000000000..6bc6e46b2f --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap-cust/_modals.scss @@ -0,0 +1,18 @@ +.modal-content { + .modal-header { + border-top: 3px solid $blue; + .modal-title { + @extend .heading-2; + } + } + + .modal-body{ + padding: 15px; + } + + .modal-footer { + padding: 15px; + border-top: 0; + background-color: $tlv-gray; + } +} diff --git a/openecomp-ui/resources/scss/bootstrap-cust/_navbar.scss b/openecomp-ui/resources/scss/bootstrap-cust/_navbar.scss new file mode 100644 index 0000000000..acf2024b56 --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap-cust/_navbar.scss @@ -0,0 +1,3 @@ +.navbar { + border: none; +} diff --git a/openecomp-ui/resources/scss/bootstrap-cust/_navs.scss b/openecomp-ui/resources/scss/bootstrap-cust/_navs.scss new file mode 100644 index 0000000000..7b9cff963d --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap-cust/_navs.scss @@ -0,0 +1,30 @@ +.nav { + > li { + > a { + padding: 10px 10px 3px; + } + } +} + +.nav-tabs { + @include box-shadow(0px 2px 1px -1px $gray); + padding: 0 28px; + + > li { + @extend .body-1; + + > a { + color: $dark-gray; + text-transform: uppercase; + } + + &.active > a { + &, + &:hover, + &:focus { + @extend .body-1-medium; + border-bottom: 3px solid $blue; + } + } + } +} diff --git a/openecomp-ui/resources/scss/bootstrap-cust/_panels.scss b/openecomp-ui/resources/scss/bootstrap-cust/_panels.scss new file mode 100644 index 0000000000..9ee5622292 --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap-cust/_panels.scss @@ -0,0 +1,3 @@ +.panel { + border: none; +} \ No newline at end of file diff --git a/openecomp-ui/resources/scss/bootstrap-cust/_tables.scss b/openecomp-ui/resources/scss/bootstrap-cust/_tables.scss new file mode 100644 index 0000000000..6902914f35 --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap-cust/_tables.scss @@ -0,0 +1,42 @@ +.table { + // Cells + > thead, + > tbody, + > tfoot { + > tr { + > th, + > td { + border-top: none; + } + } + } + // Bottom align for column headings + > thead > tr > th { + border-bottom: none; + } + // Account for multiple tbody instances + > tbody + tbody { + border-top: none; + } + + +} + +.table-striped { + > tbody > tr:nth-of-type( odd ) { + background-color: $background-gray; + } +} + +.table-striped { + > tbody > tr:nth-of-type( even ) { + background-color: $gray; + } +} + +.table-hover { + > tbody > tr:hover { + background-color: $tlv-hover; + cursor: pointer; + } +} diff --git a/openecomp-ui/resources/scss/bootstrap-cust/_variables.scss b/openecomp-ui/resources/scss/bootstrap-cust/_variables.scss new file mode 100644 index 0000000000..59f0e3db7c --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap-cust/_variables.scss @@ -0,0 +1,127 @@ + +//== Colors +// +//## Gray and brand colors for use across Bootstrap. + +$gray-darker: $dark-gray; +$gray-dark: $dark-gray; +$gray: $gray; +$gray-light: $light-gray; +$gray-lighter: $light-gray; + +$brand-primary: $blue; +$brand-success: $green; +$brand-info: $light-gray; +$brand-warning: $yellow; +$brand-danger: $red; + + +//== Scaffolding +// +//## Settings for some of the most global styles. + +$body-bg: $white; +$text-color: $text-black; +$link-color: $link-blue; +$link-hover-color: $blue; + +//== Typography +// +//## Font, line-height, and color for body text, headings, and more. +$font-family-sans-serif: omnes-regular, "Omnes-Regular", "Helvetica Neue", Helvetica, Arial, sans-serif; +//$font-family-base: $font-family-sans-serif !default; +$font-size-base: $body-font-2; +$font-size-large: $body-font-1; +$font-size-small: $body-font-3; +$font-size-h1: $heading-font-1; +$font-size-h2: $heading-font-2; +$font-size-h3: $heading-font-4; +$font-size-h4: $heading-font-5; + + + +//== Components +// +//## Define common padding and border radius sizes and more. +$border-radius-base: 0; +$border-radius-large: 0; +$border-radius-small: 0; + + +//== Buttons +// +//## For each of Bootstrap's buttons, define text, background and border color. + +// $btn-font-weight: normal !default; +$btn-default-color: $text-color; +$btn-default-bg: $white; +$btn-default-border: $light-gray; + +$btn-success-color: $white; + +// Allows for customizing button radius independently from global border radius +$btn-border-radius-base: 2px; +$btn-border-radius-large: 2px; +$btn-border-radius-small: 2px; + +//== Dropdowns +// +$dropdown-bg: $white; +$dropdown-border: $link-blue; +$dropdown-link-color: $text-black; +$dropdown-divider-bg: $gray; +//** Hover color for dropdown links. +$dropdown-link-hover-color: $black; +//** Hover background for dropdown links. +$dropdown-link-hover-bg: $tlv-hover; + +//** Active dropdown menu item text color. +$dropdown-link-active-color: $black; +//** Active dropdown menu item background color. +$dropdown-link-active-bg: $tlv-hover; + +//== Forms +// +//## +$form-group-margin-bottom: 24px; + + +$input-bg: $white; +$input-bg-disabled: $tlv-light-gray; +$input-color: $dark-gray; +$input-border: $light-gray; +$input-border-focus: $dark-blue; + +//== Modals +// +//## +$modal-content-bg: $white; +$modal-inner-padding: 0 15px; +$modal-title-padding: 30px 25px 10px 25px; + + +//== Close +// +//## +$close-color: $tlv-light-gray; + +//== Navs +// +//## +//=== Shared nav styles +$nav-link-hover-bg: transparent; + +$navbar-inverse-bg: $gray; + +//== Tabs +$nav-tabs-border-color: transparent; +$nav-tabs-link-hover-border-color: transparent; +$nav-tabs-active-link-hover-bg: transparent; +$nav-tabs-active-link-hover-color: $text-black; +$nav-tabs-active-link-hover-border-color: transparent; + + +//== Popovers +// +//## +$popover-bg: $background-gray; diff --git a/openecomp-ui/resources/scss/bootstrap.scss b/openecomp-ui/resources/scss/bootstrap.scss new file mode 100644 index 0000000000..a8c470216d --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap.scss @@ -0,0 +1,61 @@ +// DOX CORE +@import "common/variables"; +@import "common/typography"; + +// Core variables and mixins +@import "bootstrap-cust/variables"; +@import "bootstrap/variables"; +@import "bootstrap/mixins"; +// Reset and dependencies +@import "bootstrap/normalize"; +//@import "bootstrap/print"; +//@import "bootstrap/glyphicons"; + +// Core CSS +@import "bootstrap/scaffolding"; +@import "bootstrap/type"; +@import "bootstrap/code"; +@import "bootstrap/grid"; +@import "bootstrap/tables"; +@import "bootstrap-cust/tables"; +@import "bootstrap/forms"; +@import "bootstrap-cust/forms"; +@import "bootstrap/buttons"; +@import "bootstrap-cust/buttons"; +// Components +@import "bootstrap/component-animations"; +@import "bootstrap/dropdowns"; +@import "bootstrap-cust/dropdowns"; +@import "bootstrap/button-groups"; +@import "bootstrap/input-groups"; +@import "bootstrap/navs"; +@import "bootstrap-cust/navs"; +@import "bootstrap/navbar"; +@import "bootstrap-cust/navbar"; +@import "bootstrap/breadcrumbs"; +@import "bootstrap/pagination"; +@import "bootstrap/pager"; +@import "bootstrap/labels"; +@import "bootstrap/badges"; +@import "bootstrap/jumbotron"; +// @import "bootstrap/thumbnails"; +@import "bootstrap/alerts"; +@import "bootstrap/progress-bars"; +@import "bootstrap/media"; +@import "bootstrap/list-group"; +@import "bootstrap-cust/list-group"; +@import "bootstrap/panels"; +@import "bootstrap-cust/panels"; +// @import "bootstrap/responsive-embed"; +//@import "bootstrap/wells"; +@import "bootstrap/close"; +@import "bootstrap-cust/close"; +// Components w/ JavaScript +@import "bootstrap/modals"; +@import "bootstrap-cust/modals"; +@import "bootstrap/tooltip"; +@import "bootstrap/popovers"; +// @import "bootstrap/carousel"; +// Utility classes +@import "bootstrap/utilities"; +@import "bootstrap/responsive-utilities"; diff --git a/openecomp-ui/resources/scss/bootstrap/_alerts.scss b/openecomp-ui/resources/scss/bootstrap/_alerts.scss new file mode 100644 index 0000000000..206ec3226a --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap/_alerts.scss @@ -0,0 +1,72 @@ +// +// Alerts +// -------------------------------------------------- + +// Base styles +// ------------------------- + +.alert { + padding: $alert-padding; + margin-bottom: $line-height-computed; + border: 1px solid transparent; + border-radius: $alert-border-radius; + + // Headings for larger alerts + h4 { + margin-top: 0; + // Specified for the h4 to prevent conflicts of changing $headings-color + color: inherit; + } + + // Provide class for links that match alerts + .alert-link { + font-weight: $alert-link-font-weight; + } + + // Improve alignment and spacing of inner content + > p, + > ul { + margin-bottom: 0; + } + + > p + p { + margin-top: 5px; + } +} + +// Dismissible alerts +// +// Expand the right padding and account for the close button's positioning. + +.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0. +.alert-dismissible { + padding-right: ($alert-padding + 20); + + // Adjust close link position + .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; + } +} + +// Alternate styles +// +// Generate contextual modifier classes for colorizing the alert. + +.alert-success { + @include alert-variant($alert-success-bg, $alert-success-border, $alert-success-text); +} + +.alert-info { + @include alert-variant($alert-info-bg, $alert-info-border, $alert-info-text); +} + +.alert-warning { + @include alert-variant($alert-warning-bg, $alert-warning-border, $alert-warning-text); +} + +.alert-danger { + @include alert-variant($alert-danger-bg, $alert-danger-border, $alert-danger-text); +} diff --git a/openecomp-ui/resources/scss/bootstrap/_badges.scss b/openecomp-ui/resources/scss/bootstrap/_badges.scss new file mode 100644 index 0000000000..ad595a9557 --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap/_badges.scss @@ -0,0 +1,67 @@ +// +// Badges +// -------------------------------------------------- + +// Base class +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: $font-size-small; + font-weight: $badge-font-weight; + color: $badge-color; + line-height: $badge-line-height; + vertical-align: middle; + white-space: nowrap; + text-align: center; + background-color: $badge-bg; + border-radius: $badge-border-radius; + + // Empty badges collapse automatically (not available in IE8) + &:empty { + display: none; + } + + // Quick fix for badges in buttons + .btn & { + position: relative; + top: -1px; + } + + .btn-xs &, + .btn-group-xs > .btn & { + top: 0; + padding: 1px 5px; + } + + // [converter] extracted a& to a.badge + + // Account for badges in navs + .list-group-item.active > &, + .nav-pills > .active > a > & { + color: $badge-active-color; + background-color: $badge-active-bg; + } + + .list-group-item > & { + float: right; + } + + .list-group-item > & + & { + margin-right: 5px; + } + + .nav-pills > li > a > & { + margin-left: 3px; + } +} + +// Hover state, but only for links +a.badge { + &:hover, + &:focus { + color: $badge-link-hover-color; + text-decoration: none; + cursor: pointer; + } +} diff --git a/openecomp-ui/resources/scss/bootstrap/_breadcrumbs.scss b/openecomp-ui/resources/scss/bootstrap/_breadcrumbs.scss new file mode 100644 index 0000000000..2041f0dc84 --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap/_breadcrumbs.scss @@ -0,0 +1,25 @@ +// +// Breadcrumbs +// -------------------------------------------------- + +.breadcrumb { + padding: $breadcrumb-padding-vertical $breadcrumb-padding-horizontal; + margin-bottom: $line-height-computed; + list-style: none; + background-color: $breadcrumb-bg; + border-radius: $border-radius-base; + + > li { + display: inline-block; + + + li:before { + content: "#{$breadcrumb-separator}\00a0"; // Unicode space added since inline-block means non-collapsing white-space + padding: 0 5px; + color: $breadcrumb-color; + } + } + + > .active { + color: $breadcrumb-active-color; + } +} diff --git a/openecomp-ui/resources/scss/bootstrap/_button-groups.scss b/openecomp-ui/resources/scss/bootstrap/_button-groups.scss new file mode 100644 index 0000000000..dc2906e44f --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap/_button-groups.scss @@ -0,0 +1,256 @@ +// +// Button groups +// -------------------------------------------------- + +// Make the div behave like a button +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; // match .btn alignment given font-size hack above + > .btn { + position: relative; + float: left; + // Bring the "active" button to the front + &:hover, + &:focus, + &:active, + &.active { + z-index: 2; + } + } +} + +// Prevent double borders when buttons are next to each other +.btn-group { + .btn + .btn, + .btn + .btn-group, + .btn-group + .btn, + .btn-group + .btn-group { + margin-left: -1px; + } +} + +// Optional: Group multiple button groups together for a toolbar +.btn-toolbar { + margin-left: -5px; // Offset the first child's margin + @include clearfix; + + .btn, + .btn-group, + .input-group { + float: left; + } + > .btn, + > .btn-group, + > .input-group { + margin-left: 5px; + } +} + +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} + +// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match +.btn-group > .btn:first-child { + margin-left: 0; + &:not(:last-child):not(.dropdown-toggle) { + @include border-right-radius(0); + } +} + +// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + @include border-left-radius(0); +} + +// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group) +.btn-group > .btn-group { + float: left; +} + +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} + +.btn-group > .btn-group:first-child:not(:last-child) { + > .btn:last-child, + > .dropdown-toggle { + @include border-right-radius(0); + } +} + +.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { + @include border-left-radius(0); +} + +// On active and open, don't show outline +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + +// Sizing +// +// Remix the default button sizing classes into new ones for easier manipulation. + +.btn-group-xs > .btn { + @extend .btn-xs; +} + +.btn-group-sm > .btn { + @extend .btn-sm; +} + +.btn-group-lg > .btn { + @extend .btn-lg; +} + +// Split button dropdowns +// ---------------------- + +// Give the line between buttons some depth +.btn-group > .btn + .dropdown-toggle { + padding-left: 8px; + padding-right: 8px; +} + +.btn-group > .btn-lg + .dropdown-toggle { + padding-left: 12px; + padding-right: 12px; +} + +// The clickable button for toggling the menu +// Remove the gradient and set the same inset shadow as the :active state +.btn-group.open .dropdown-toggle { + @include box-shadow(inset 0 3px 5px rgba(0, 0, 0, .125)); + + // Show no shadow for `.btn-link` since it has no other button styles. + &.btn-link { + @include box-shadow(none); + } +} + +// Reposition the caret +.btn .caret { + margin-left: 0; +} + +// Carets in other button sizes +.btn-lg .caret { + border-width: $caret-width-large $caret-width-large 0; + border-bottom-width: 0; +} + +// Upside down carets for .dropup +.dropup .btn-lg .caret { + border-width: 0 $caret-width-large $caret-width-large; +} + +// Vertical button groups +// ---------------------- + +.btn-group-vertical { + > .btn, + > .btn-group, + > .btn-group > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; + } + + // Clear floats so dropdown menus can be properly placed + > .btn-group { + @include clearfix; + > .btn { + float: none; + } + } + + > .btn + .btn, + > .btn + .btn-group, + > .btn-group + .btn, + > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; + } +} + +.btn-group-vertical > .btn { + &:not(:first-child):not(:last-child) { + border-radius: 0; + } + &:first-child:not(:last-child) { + border-top-right-radius: $btn-border-radius-base; + @include border-bottom-radius(0); + } + &:last-child:not(:first-child) { + border-bottom-left-radius: $btn-border-radius-base; + @include border-top-radius(0); + } +} + +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} + +.btn-group-vertical > .btn-group:first-child:not(:last-child) { + > .btn:last-child, + > .dropdown-toggle { + @include border-bottom-radius(0); + } +} + +.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { + @include border-top-radius(0); +} + +// Justified button groups +// ---------------------- + +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; + > .btn, + > .btn-group { + float: none; + display: table-cell; + width: 1%; + } + > .btn-group .btn { + width: 100%; + } + + > .btn-group .dropdown-menu { + left: auto; + } +} + +// Checkbox and radio options +// +// In order to support the browser's form validation feedback, powered by the +// `required` attribute, we have to "hide" the inputs via `clip`. We cannot use +// `display: none;` or `visibility: hidden;` as that also hides the popover. +// Simply visually hiding the inputs via `opacity` would leave them clickable in +// certain cases which is prevented by using `clip` and `pointer-events`. +// This way, we ensure a DOM element is visible to position the popover from. +// +// See https://github.com/twbs/bootstrap/pull/12794 and +// https://github.com/twbs/bootstrap/pull/14559 for more information. + +[data-toggle="buttons"] { + > .btn, + > .btn-group > .btn { + input[type="radio"], + input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; + } + } +} diff --git a/openecomp-ui/resources/scss/bootstrap/_buttons.scss b/openecomp-ui/resources/scss/bootstrap/_buttons.scss new file mode 100644 index 0000000000..a9c3f340d7 --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap/_buttons.scss @@ -0,0 +1,170 @@ +// +// Buttons +// -------------------------------------------------- + +// Base styles +// -------------------------------------------------- + +.btn { + display: inline-block; + margin-bottom: 0; // For input.btn + font-weight: $btn-font-weight; + text-align: center; + vertical-align: middle; + touch-action: manipulation; + cursor: pointer; + background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 + border: 1px solid transparent; + white-space: nowrap; + @include button-size($padding-base-vertical, $padding-base-horizontal, $font-size-base, $line-height-base, $btn-border-radius-base); + @include user-select(none); + + &, + &:active, + &.active { + &:focus, + &.focus { + @include tab-focus; + } + } + + &:hover, + &:focus, + &.focus { + color: $btn-default-color; + text-decoration: none; + } + + &:active, + &.active { + outline: 0; + background-image: none; + @include box-shadow(inset 0 3px 5px rgba(0, 0, 0, .125)); + } + + &.disabled, + &[disabled], + fieldset[disabled] & { + cursor: $cursor-disabled; + @include opacity(.65); + @include box-shadow(none); + } + + // [converter] extracted a& to a.btn +} + +a.btn { + &.disabled, + fieldset[disabled] & { + pointer-events: none; // Future-proof disabling of clicks on `` elements + } +} + +// Alternate buttons +// -------------------------------------------------- + +.btn-default { + @include button-variant($btn-default-color, $btn-default-bg, $btn-default-border); +} + +.btn-primary { + @include button-variant($btn-primary-color, $btn-primary-bg, $btn-primary-border); +} + +// Success appears as green +.btn-success { + @include button-variant($btn-success-color, $btn-success-bg, $btn-success-border); +} + +// Info appears as blue-green +.btn-info { + @include button-variant($btn-info-color, $btn-info-bg, $btn-info-border); +} + +// Warning appears as orange +.btn-warning { + @include button-variant($btn-warning-color, $btn-warning-bg, $btn-warning-border); +} + +// Danger and error appear as red +.btn-danger { + @include button-variant($btn-danger-color, $btn-danger-bg, $btn-danger-border); +} + +// Link buttons +// ------------------------- + +// Make a button look and behave like a link +.btn-link { + color: $link-color; + font-weight: normal; + border-radius: 0; + + &, + &:active, + &.active, + &[disabled], + fieldset[disabled] & { + background-color: transparent; + @include box-shadow(none); + } + &, + &:hover, + &:focus, + &:active { + border-color: transparent; + } + &:hover, + &:focus { + color: $link-hover-color; + text-decoration: $link-hover-decoration; + background-color: transparent; + } + &[disabled], + fieldset[disabled] & { + &:hover, + &:focus { + color: $btn-link-disabled-color; + text-decoration: none; + } + } +} + +// Button Sizes +// -------------------------------------------------- + +.btn-lg { + // line-height: ensure even-numbered height of button next to large input + @include button-size($padding-large-vertical, $padding-large-horizontal, $font-size-large, $line-height-large, $btn-border-radius-large); +} + +.btn-sm { + // line-height: ensure proper height of button next to small input + @include button-size($padding-small-vertical, $padding-small-horizontal, $font-size-small, $line-height-small, $btn-border-radius-small); +} + +.btn-xs { + @include button-size($padding-xs-vertical, $padding-xs-horizontal, $font-size-small, $line-height-small, $btn-border-radius-small); +} + +// Block button +// -------------------------------------------------- + +.btn-block { + display: block; + width: 100%; +} + +// Vertically space out multiple block buttons +.btn-block + .btn-block { + margin-top: 5px; +} + +// Specificity overrides +input[type="submit"], +input[type="reset"], +input[type="button"] { + &.btn-block { + width: 100%; + } +} diff --git a/openecomp-ui/resources/scss/bootstrap/_carousel.scss b/openecomp-ui/resources/scss/bootstrap/_carousel.scss new file mode 100644 index 0000000000..5542ceb905 --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap/_carousel.scss @@ -0,0 +1,266 @@ +// +// Carousel +// -------------------------------------------------- + +// Wrapper for the slide container and indicators +.carousel { + position: relative; +} + +.carousel-inner { + position: relative; + overflow: hidden; + width: 100%; + + > .item { + display: none; + position: relative; + @include transition(.6s ease-in-out left); + + // Account for jankitude on images + > img, + > a > img { + @include img-responsive; + line-height: 1; + } + + // WebKit CSS3 transforms for supported devices + @media all and (transform-3d), (-webkit-transform-3d) { + @include transition-transform(0.6s ease-in-out); + @include backface-visibility(hidden); + @include perspective(1000px); + + &.next, + &.active.right { + @include translate3d(100%, 0, 0); + left: 0; + } + &.prev, + &.active.left { + @include translate3d(-100%, 0, 0); + left: 0; + } + &.next.left, + &.prev.right, + &.active { + @include translate3d(0, 0, 0); + left: 0; + } + } + } + + > .active, + > .next, + > .prev { + display: block; + } + + > .active { + left: 0; + } + + > .next, + > .prev { + position: absolute; + top: 0; + width: 100%; + } + + > .next { + left: 100%; + } + > .prev { + left: -100%; + } + > .next.left, + > .prev.right { + left: 0; + } + + > .active.left { + left: -100%; + } + > .active.right { + left: 100%; + } + +} + +// Left/right controls for nav +// --------------------------- + +.carousel-control { + position: absolute; + top: 0; + left: 0; + bottom: 0; + width: $carousel-control-width; + @include opacity($carousel-control-opacity); + font-size: $carousel-control-font-size; + color: $carousel-control-color; + text-align: center; + text-shadow: $carousel-text-shadow; + // We can't have this transition here because WebKit cancels the carousel + // animation if you trip this while in the middle of another animation. + + // Set gradients for backgrounds + &.left { + @include gradient-horizontal($start-color: rgba(0, 0, 0, .5), $end-color: rgba(0, 0, 0, .0001)); + } + &.right { + left: auto; + right: 0; + @include gradient-horizontal($start-color: rgba(0, 0, 0, .0001), $end-color: rgba(0, 0, 0, .5)); + } + + // Hover/focus state + &:hover, + &:focus { + outline: 0; + color: $carousel-control-color; + text-decoration: none; + @include opacity(.9); + } + + // Toggles + .icon-prev, + .icon-next, + .glyphicon-chevron-left, + .glyphicon-chevron-right { + position: absolute; + top: 50%; + margin-top: -10px; + z-index: 5; + display: inline-block; + } + .icon-prev, + .glyphicon-chevron-left { + left: 50%; + margin-left: -10px; + } + .icon-next, + .glyphicon-chevron-right { + right: 50%; + margin-right: -10px; + } + .icon-prev, + .icon-next { + width: 20px; + height: 20px; + line-height: 1; + font-family: serif; + } + + .icon-prev { + &:before { + content: '\2039'; // SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039) + } + } + .icon-next { + &:before { + content: '\203a'; // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A) + } + } +} + +// Optional indicator pips +// +// Add an unordered list with the following class and add a list item for each +// slide your carousel holds. + +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + margin-left: -30%; + padding-left: 0; + list-style: none; + text-align: center; + + li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + border: 1px solid $carousel-indicator-border-color; + border-radius: 10px; + cursor: pointer; + + // IE8-9 hack for event handling + // + // Internet Explorer 8-9 does not support clicks on elements without a set + // `background-color`. We cannot use `filter` since that's not viewed as a + // background color by the browser. Thus, a hack is needed. + // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Internet_Explorer + // + // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we + // set alpha transparency for the best results possible. + background-color: #000 \9; // IE8 + background-color: rgba(0, 0, 0, 0); // IE9 + } + .active { + margin: 0; + width: 12px; + height: 12px; + background-color: $carousel-indicator-active-bg; + } +} + +// Optional captions +// ----------------------------- +// Hidden by default for smaller viewports +.carousel-caption { + position: absolute; + left: 15%; + right: 15%; + bottom: 20px; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: $carousel-caption-color; + text-align: center; + text-shadow: $carousel-text-shadow; + & .btn { + text-shadow: none; // No shadow for button elements in carousel-caption + } +} + +// Scale up controls for tablets and up +@media screen and (min-width: $screen-sm-min) { + + // Scale up the controls a smidge + .carousel-control { + .glyphicon-chevron-left, + .glyphicon-chevron-right, + .icon-prev, + .icon-next { + width: 30px; + height: 30px; + margin-top: -15px; + font-size: 30px; + } + .glyphicon-chevron-left, + .icon-prev { + margin-left: -15px; + } + .glyphicon-chevron-right, + .icon-next { + margin-right: -15px; + } + } + + // Show and left align the captions + .carousel-caption { + left: 20%; + right: 20%; + padding-bottom: 30px; + } + + // Move up the indicators + .carousel-indicators { + bottom: 20px; + } +} diff --git a/openecomp-ui/resources/scss/bootstrap/_close.scss b/openecomp-ui/resources/scss/bootstrap/_close.scss new file mode 100644 index 0000000000..d3ea6ab0ba --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap/_close.scss @@ -0,0 +1,35 @@ +// +// Close icons +// -------------------------------------------------- + +.close { + float: right; + font-size: ($font-size-base * 1.5); + font-weight: $close-font-weight; + line-height: 1; + color: $close-color; + text-shadow: $close-text-shadow; + @include opacity(.2); + + &:hover, + &:focus { + color: $close-color; + text-decoration: none; + cursor: pointer; + @include opacity(.5); + } + + // [converter] extracted button& to button.close +} + +// Additional properties for button version +// iOS requires the button element instead of an anchor tag. +// If you want the anchor version, it requires `href="#"`. +// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} diff --git a/openecomp-ui/resources/scss/bootstrap/_code.scss b/openecomp-ui/resources/scss/bootstrap/_code.scss new file mode 100644 index 0000000000..ab74c19e74 --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap/_code.scss @@ -0,0 +1,68 @@ +// +// Code (inline and block) +// -------------------------------------------------- + +// Inline and block code styles +code, +kbd, +pre, +samp { + font-family: $font-family-monospace; +} + +// Inline code +code { + padding: 2px 4px; + font-size: 90%; + color: $code-color; + background-color: $code-bg; + border-radius: $border-radius-base; +} + +// User input typically entered via keyboard +kbd { + padding: 2px 4px; + font-size: 90%; + color: $kbd-color; + background-color: $kbd-bg; + border-radius: $border-radius-small; + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); + + kbd { + padding: 0; + font-size: 100%; + font-weight: bold; + box-shadow: none; + } +} + +// Blocks of code +pre { + display: block; + padding: (($line-height-computed - 1) / 2); + margin: 0 0 ($line-height-computed / 2); + font-size: ($font-size-base - 1); // 14px to 13px + line-height: $line-height-base; + word-break: break-all; + word-wrap: break-word; + color: $pre-color; + background-color: $pre-bg; + border: 1px solid $pre-border-color; + border-radius: $border-radius-base; + + // Account for some code outputs that place code tags in pre tags + code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0; + } +} + +// Enable scrollable blocks of code +.pre-scrollable { + max-height: $pre-scrollable-max-height; + overflow-y: scroll; +} diff --git a/openecomp-ui/resources/scss/bootstrap/_component-animations.scss b/openecomp-ui/resources/scss/bootstrap/_component-animations.scss new file mode 100644 index 0000000000..58befaa2ef --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap/_component-animations.scss @@ -0,0 +1,43 @@ +// +// Component animations +// -------------------------------------------------- + +// Heads up! +// +// We don't use the `.opacity()` mixin here since it causes a bug with text +// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552. + +.fade { + opacity: 0; + @include transition(opacity .15s linear); + &.in { + opacity: 1; + } +} + +.collapse { + display: none; + + &.in { + display: block; + } + // [converter] extracted tr&.in to tr.collapse.in + // [converter] extracted tbody&.in to tbody.collapse.in +} + +tr.collapse.in { + display: table-row; +} + +tbody.collapse.in { + display: table-row-group; +} + +.collapsing { + position: relative; + height: 0; + overflow: hidden; + @include transition-property(height, visibility); + @include transition-duration(.35s); + @include transition-timing-function(ease); +} diff --git a/openecomp-ui/resources/scss/bootstrap/_dropdowns.scss b/openecomp-ui/resources/scss/bootstrap/_dropdowns.scss new file mode 100644 index 0000000000..6fcfb9f48e --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap/_dropdowns.scss @@ -0,0 +1,217 @@ +// +// Dropdown menus +// -------------------------------------------------- + +// Dropdown arrow/caret +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: $caret-width-base dashed; + border-top: $caret-width-base solid \9; // IE8 + border-right: $caret-width-base solid transparent; + border-left: $caret-width-base solid transparent; +} + +// The dropdown wrapper (div) +.dropup, +.dropdown { + position: relative; +} + +// Prevent the focus on the dropdown toggle when closing dropdowns +.dropdown-toggle:focus { + outline: 0; +} + +// The dropdown menu (ul) +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: $zindex-dropdown; + display: none; // none by default, but block on "open" of the menu + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; // override default ul + list-style: none; + font-size: $font-size-base; + text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer) + background-color: $dropdown-bg; + border: 1px solid $dropdown-fallback-border; // IE8 fallback + border: 1px solid $dropdown-border; + border-radius: $border-radius-base; + @include box-shadow(0 6px 12px rgba(0, 0, 0, .175)); + background-clip: padding-box; + + // Aligns the dropdown menu to right + // + // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]` + &.pull-right { + right: 0; + left: auto; + } + + // Dividers (basically an hr) within the dropdown + .divider { + @include nav-divider($dropdown-divider-bg); + } + + // Links within the dropdown menu + > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: $line-height-base; + color: $dropdown-link-color; + white-space: nowrap; // prevent links from randomly breaking onto new lines + } +} + +// Hover/Focus state +.dropdown-menu > li > a { + &:hover, + &:focus { + text-decoration: none; + color: $dropdown-link-hover-color; + background-color: $dropdown-link-hover-bg; + } +} + +// Active state +.dropdown-menu > .active > a { + &, + &:hover, + &:focus { + color: $dropdown-link-active-color; + text-decoration: none; + outline: 0; + background-color: $dropdown-link-active-bg; + } +} + +// Disabled state +// +// Gray out text and ensure the hover/focus state remains gray + +.dropdown-menu > .disabled > a { + &, + &:hover, + &:focus { + color: $dropdown-link-disabled-color; + } + + // Nuke hover/focus effects + &:hover, + &:focus { + text-decoration: none; + background-color: transparent; + background-image: none; // Remove CSS gradient + @include reset-filter; + cursor: $cursor-disabled; + } +} + +// Open state for the dropdown +.open { + // Show the menu + > .dropdown-menu { + display: block; + } + + // Remove the outline when :focus is triggered + > a { + outline: 0; + } +} + +// Menu positioning +// +// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown +// menu with the parent. +.dropdown-menu-right { + left: auto; // Reset the default from `.dropdown-menu` + right: 0; +} + +// With v3, we enabled auto-flipping if you have a dropdown within a right +// aligned nav component. To enable the undoing of that, we provide an override +// to restore the default dropdown menu alignment. +// +// This is only for left-aligning a dropdown menu within a `.navbar-right` or +// `.pull-right` nav component. +.dropdown-menu-left { + left: 0; + right: auto; +} + +// Dropdown section headers +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: $font-size-small; + line-height: $line-height-base; + color: $dropdown-header-color; + white-space: nowrap; // as with > li > a +} + +// Backdrop to catch body clicks on mobile, etc. +.dropdown-backdrop { + position: fixed; + left: 0; + right: 0; + bottom: 0; + top: 0; + z-index: ($zindex-dropdown - 10); +} + +// Right aligned dropdowns +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} + +// Allow for dropdowns to go bottom up (aka, dropup-menu) +// +// Just add .dropup after the standard .dropdown class and you're set, bro. +// TODO: abstract this so that the navbar fixed styles are not placed here? + +.dropup, +.navbar-fixed-bottom .dropdown { + // Reverse the caret + .caret { + border-top: 0; + border-bottom: $caret-width-base dashed; + border-bottom: $caret-width-base solid \9; // IE8 + content: ""; + } + // Different positioning for bottom up menu + .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 2px; + } +} + +// Component alignment +// +// Reiterate per navbar.less and the modified component alignment there. + +@media (min-width: $grid-float-breakpoint) { + .navbar-right { + .dropdown-menu { + right: 0; + left: auto; + } + // Necessary for overrides of the default right aligned menu. + // Will remove come v4 in all likelihood. + .dropdown-menu-left { + left: 0; + right: auto; + } + } +} diff --git a/openecomp-ui/resources/scss/bootstrap/_forms.scss b/openecomp-ui/resources/scss/bootstrap/_forms.scss new file mode 100644 index 0000000000..042d4ec9bd --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap/_forms.scss @@ -0,0 +1,607 @@ +// +// Forms +// -------------------------------------------------- + +// Normalize non-controls +// +// Restyle and baseline non-control form elements. + +fieldset { + padding: 0; + margin: 0; + border: 0; + // Chrome and Firefox set a `min-width: min-content;` on fieldsets, + // so we reset that to ensure it behaves more like a standard block element. + // See https://github.com/twbs/bootstrap/issues/12359. + min-width: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: $line-height-computed; + font-size: ($font-size-base * 1.5); + line-height: inherit; + color: $legend-color; + border: 0; + border-bottom: 1px solid $legend-border-color; +} + +label { + display: inline-block; + max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141) + margin-bottom: 5px; + font-weight: bold; +} + +// Normalize form controls +// +// While most of our form styles require extra classes, some basic normalization +// is required to ensure optimum display with or without those classes to better +// address browser inconsistencies. + +// Override content-box in Normalize (* isn't specific enough) +input[type="search"] { + @include box-sizing(border-box); +} + +// Position radios and checkboxes better +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; // IE8-9 + line-height: normal; +} + +input[type="file"] { + display: block; +} + +// Make range inputs behave like textual form controls +input[type="range"] { + display: block; + width: 100%; +} + +// Make multiple select elements height not fixed +select[multiple], +select[size] { + height: auto; +} + +// Focus for file, radio, and checkbox +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + @include tab-focus; +} + +// Adjust output element +output { + display: block; + padding-top: ($padding-base-vertical + 1); + font-size: $font-size-base; + line-height: $line-height-base; + color: $input-color; +} + +// Common form controls +// +// Shared size and type resets for form controls. Apply `.form-control` to any +// of the following form controls: +// +// select +// textarea +// input[type="text"] +// input[type="password"] +// input[type="datetime"] +// input[type="datetime-local"] +// input[type="date"] +// input[type="month"] +// input[type="time"] +// input[type="week"] +// input[type="number"] +// input[type="email"] +// input[type="url"] +// input[type="search"] +// input[type="tel"] +// input[type="color"] + +.form-control { + display: block; + width: 100%; + height: $input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border) + padding: $padding-base-vertical $padding-base-horizontal; + font-size: $font-size-base; + line-height: $line-height-base; + color: $input-color; + background-color: $input-bg; + background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 + border: 1px solid $input-border; + border-radius: $input-border-radius; // Note: This has no effect on s in CSS. + @include box-shadow(inset 0 1px 1px rgba(0, 0, 0, .075)); + @include transition(border-color ease-in-out .15s, box-shadow ease-in-out .15s); + + // Customize the `:focus` state to imitate native WebKit styles. + @include form-control-focus; + + // Placeholder + @include placeholder; + + // Disabled and read-only inputs + // + // HTML5 says that controls under a fieldset > legend:first-child won't be + // disabled if the fieldset is disabled. Due to implementation difficulty, we + // don't honor that edge case; we style them as disabled anyway. + &[disabled], + &[readonly], + fieldset[disabled] & { + background-color: $input-bg-disabled; + opacity: 1; // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655 + } + + &[disabled], + fieldset[disabled] & { + cursor: $cursor-disabled; + } + + // [converter] extracted textarea& to textarea.form-control +} + +// Reset height for `textarea`s +textarea.form-control { + height: auto; +} + +// Search inputs in iOS +// +// This overrides the extra rounded corners on search inputs in iOS so that our +// `.form-control` class can properly style them. Note that this cannot simply +// be added to `.form-control` as it's not specific enough. For details, see +// https://github.com/twbs/bootstrap/issues/11586. + +input[type="search"] { + -webkit-appearance: none; +} + +// Special styles for iOS temporal inputs +// +// In Mobile Safari, setting `display: block` on temporal inputs causes the +// text within the input to become vertically misaligned. As a workaround, we +// set a pixel line-height that matches the given height of the input, but only +// for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848 +// +// Note that as of 8.3, iOS doesn't support `datetime` or `week`. + +@media screen and (-webkit-min-device-pixel-ratio: 0) { + input[type="date"], + input[type="time"], + input[type="datetime-local"], + input[type="month"] { + &.form-control { + line-height: $input-height-base; + } + + &.input-sm, + .input-group-sm & { + line-height: $input-height-small; + } + + &.input-lg, + .input-group-lg & { + line-height: $input-height-large; + } + } +} + +// Form groups +// +// Designed to help with the organization and spacing of vertical forms. For +// horizontal forms, use the predefined grid classes. + +.form-group { + margin-bottom: $form-group-margin-bottom; +} + +// Checkboxes and radios +// +// Indent the labels to position radios/checkboxes as hanging controls. + +.radio, +.checkbox { + position: relative; + display: block; + margin-top: 10px; + margin-bottom: 10px; + + label { + min-height: $line-height-computed; // Ensure the input doesn't jump when there is no text + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; + } +} + +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + position: absolute; + margin-left: -20px; + margin-top: 4px \9; +} + +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing +} + +// Radios and checkboxes on same line +.radio-inline, +.checkbox-inline { + position: relative; + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + vertical-align: middle; + font-weight: normal; + cursor: pointer; +} + +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; // space out consecutive inline controls +} + +// Apply same disabled cursor tweak as for inputs +// Some special care is needed because Star + +@at-root { + // Import the fonts + @font-face { + font-family: 'Glyphicons Halflings'; + src: url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.eot'), '#{$icon-font-path}#{$icon-font-name}.eot')); + src: url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.eot?#iefix'), '#{$icon-font-path}#{$icon-font-name}.eot?#iefix')) format('embedded-opentype'), + url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.woff2'), '#{$icon-font-path}#{$icon-font-name}.woff2')) format('woff2'), + url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.woff'), '#{$icon-font-path}#{$icon-font-name}.woff')) format('woff'), + url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.ttf'), '#{$icon-font-path}#{$icon-font-name}.ttf')) format('truetype'), + url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.svg##{$icon-font-svg-id}'), '#{$icon-font-path}#{$icon-font-name}.svg##{$icon-font-svg-id}')) format('svg'); + } +} + +// Catchall baseclass +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: normal; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +// Individual icons +.glyphicon-asterisk { + &:before { + content: "\2a"; + } +} + +.glyphicon-plus { + &:before { + content: "\2b"; + } +} + +.glyphicon-euro, +.glyphicon-eur { + &:before { + content: "\20ac"; + } +} + +.glyphicon-minus { + &:before { + content: "\2212"; + } +} + +.glyphicon-cloud { + &:before { + content: "\2601"; + } +} + +.glyphicon-envelope { + &:before { + content: "\2709"; + } +} + +.glyphicon-pencil { + &:before { + content: "\270f"; + } +} + +.glyphicon-glass { + &:before { + content: "\e001"; + } +} + +.glyphicon-music { + &:before { + content: "\e002"; + } +} + +.glyphicon-search { + &:before { + content: "\e003"; + } +} + +.glyphicon-heart { + &:before { + content: "\e005"; + } +} + +.glyphicon-star { + &:before { + content: "\e006"; + } +} + +.glyphicon-star-empty { + &:before { + content: "\e007"; + } +} + +.glyphicon-user { + &:before { + content: "\e008"; + } +} + +.glyphicon-film { + &:before { + content: "\e009"; + } +} + +.glyphicon-th-large { + &:before { + content: "\e010"; + } +} + +.glyphicon-th { + &:before { + content: "\e011"; + } +} + +.glyphicon-th-list { + &:before { + content: "\e012"; + } +} + +.glyphicon-ok { + &:before { + content: "\e013"; + } +} + +.glyphicon-remove { + &:before { + content: "\e014"; + } +} + +.glyphicon-zoom-in { + &:before { + content: "\e015"; + } +} + +.glyphicon-zoom-out { + &:before { + content: "\e016"; + } +} + +.glyphicon-off { + &:before { + content: "\e017"; + } +} + +.glyphicon-signal { + &:before { + content: "\e018"; + } +} + +.glyphicon-cog { + &:before { + content: "\e019"; + } +} + +.glyphicon-trash { + &:before { + content: "\e020"; + } +} + +.glyphicon-home { + &:before { + content: "\e021"; + } +} + +.glyphicon-file { + &:before { + content: "\e022"; + } +} + +.glyphicon-time { + &:before { + content: "\e023"; + } +} + +.glyphicon-road { + &:before { + content: "\e024"; + } +} + +.glyphicon-download-alt { + &:before { + content: "\e025"; + } +} + +.glyphicon-download { + &:before { + content: "\e026"; + } +} + +.glyphicon-upload { + &:before { + content: "\e027"; + } +} + +.glyphicon-inbox { + &:before { + content: "\e028"; + } +} + +.glyphicon-play-circle { + &:before { + content: "\e029"; + } +} + +.glyphicon-repeat { + &:before { + content: "\e030"; + } +} + +.glyphicon-refresh { + &:before { + content: "\e031"; + } +} + +.glyphicon-list-alt { + &:before { + content: "\e032"; + } +} + +.glyphicon-lock { + &:before { + content: "\e033"; + } +} + +.glyphicon-flag { + &:before { + content: "\e034"; + } +} + +.glyphicon-headphones { + &:before { + content: "\e035"; + } +} + +.glyphicon-volume-off { + &:before { + content: "\e036"; + } +} + +.glyphicon-volume-down { + &:before { + content: "\e037"; + } +} + +.glyphicon-volume-up { + &:before { + content: "\e038"; + } +} + +.glyphicon-qrcode { + &:before { + content: "\e039"; + } +} + +.glyphicon-barcode { + &:before { + content: "\e040"; + } +} + +.glyphicon-tag { + &:before { + content: "\e041"; + } +} + +.glyphicon-tags { + &:before { + content: "\e042"; + } +} + +.glyphicon-book { + &:before { + content: "\e043"; + } +} + +.glyphicon-bookmark { + &:before { + content: "\e044"; + } +} + +.glyphicon-print { + &:before { + content: "\e045"; + } +} + +.glyphicon-camera { + &:before { + content: "\e046"; + } +} + +.glyphicon-font { + &:before { + content: "\e047"; + } +} + +.glyphicon-bold { + &:before { + content: "\e048"; + } +} + +.glyphicon-italic { + &:before { + content: "\e049"; + } +} + +.glyphicon-text-height { + &:before { + content: "\e050"; + } +} + +.glyphicon-text-width { + &:before { + content: "\e051"; + } +} + +.glyphicon-align-left { + &:before { + content: "\e052"; + } +} + +.glyphicon-align-center { + &:before { + content: "\e053"; + } +} + +.glyphicon-align-right { + &:before { + content: "\e054"; + } +} + +.glyphicon-align-justify { + &:before { + content: "\e055"; + } +} + +.glyphicon-list { + &:before { + content: "\e056"; + } +} + +.glyphicon-indent-left { + &:before { + content: "\e057"; + } +} + +.glyphicon-indent-right { + &:before { + content: "\e058"; + } +} + +.glyphicon-facetime-video { + &:before { + content: "\e059"; + } +} + +.glyphicon-picture { + &:before { + content: "\e060"; + } +} + +.glyphicon-map-marker { + &:before { + content: "\e062"; + } +} + +.glyphicon-adjust { + &:before { + content: "\e063"; + } +} + +.glyphicon-tint { + &:before { + content: "\e064"; + } +} + +.glyphicon-edit { + &:before { + content: "\e065"; + } +} + +.glyphicon-share { + &:before { + content: "\e066"; + } +} + +.glyphicon-check { + &:before { + content: "\e067"; + } +} + +.glyphicon-move { + &:before { + content: "\e068"; + } +} + +.glyphicon-step-backward { + &:before { + content: "\e069"; + } +} + +.glyphicon-fast-backward { + &:before { + content: "\e070"; + } +} + +.glyphicon-backward { + &:before { + content: "\e071"; + } +} + +.glyphicon-play { + &:before { + content: "\e072"; + } +} + +.glyphicon-pause { + &:before { + content: "\e073"; + } +} + +.glyphicon-stop { + &:before { + content: "\e074"; + } +} + +.glyphicon-forward { + &:before { + content: "\e075"; + } +} + +.glyphicon-fast-forward { + &:before { + content: "\e076"; + } +} + +.glyphicon-step-forward { + &:before { + content: "\e077"; + } +} + +.glyphicon-eject { + &:before { + content: "\e078"; + } +} + +.glyphicon-chevron-left { + &:before { + content: "\e079"; + } +} + +.glyphicon-chevron-right { + &:before { + content: "\e080"; + } +} + +.glyphicon-plus-sign { + &:before { + content: "\e081"; + } +} + +.glyphicon-minus-sign { + &:before { + content: "\e082"; + } +} + +.glyphicon-remove-sign { + &:before { + content: "\e083"; + } +} + +.glyphicon-ok-sign { + &:before { + content: "\e084"; + } +} + +.glyphicon-question-sign { + &:before { + content: "\e085"; + } +} + +.glyphicon-info-sign { + &:before { + content: "\e086"; + } +} + +.glyphicon-screenshot { + &:before { + content: "\e087"; + } +} + +.glyphicon-remove-circle { + &:before { + content: "\e088"; + } +} + +.glyphicon-ok-circle { + &:before { + content: "\e089"; + } +} + +.glyphicon-ban-circle { + &:before { + content: "\e090"; + } +} + +.glyphicon-arrow-left { + &:before { + content: "\e091"; + } +} + +.glyphicon-arrow-right { + &:before { + content: "\e092"; + } +} + +.glyphicon-arrow-up { + &:before { + content: "\e093"; + } +} + +.glyphicon-arrow-down { + &:before { + content: "\e094"; + } +} + +.glyphicon-share-alt { + &:before { + content: "\e095"; + } +} + +.glyphicon-resize-full { + &:before { + content: "\e096"; + } +} + +.glyphicon-resize-small { + &:before { + content: "\e097"; + } +} + +.glyphicon-exclamation-sign { + &:before { + content: "\e101"; + } +} + +.glyphicon-gift { + &:before { + content: "\e102"; + } +} + +.glyphicon-leaf { + &:before { + content: "\e103"; + } +} + +.glyphicon-fire { + &:before { + content: "\e104"; + } +} + +.glyphicon-eye-open { + &:before { + content: "\e105"; + } +} + +.glyphicon-eye-close { + &:before { + content: "\e106"; + } +} + +.glyphicon-warning-sign { + &:before { + content: "\e107"; + } +} + +.glyphicon-plane { + &:before { + content: "\e108"; + } +} + +.glyphicon-calendar { + &:before { + content: "\e109"; + } +} + +.glyphicon-random { + &:before { + content: "\e110"; + } +} + +.glyphicon-comment { + &:before { + content: "\e111"; + } +} + +.glyphicon-magnet { + &:before { + content: "\e112"; + } +} + +.glyphicon-chevron-up { + &:before { + content: "\e113"; + } +} + +.glyphicon-chevron-down { + &:before { + content: "\e114"; + } +} + +.glyphicon-retweet { + &:before { + content: "\e115"; + } +} + +.glyphicon-shopping-cart { + &:before { + content: "\e116"; + } +} + +.glyphicon-folder-close { + &:before { + content: "\e117"; + } +} + +.glyphicon-folder-open { + &:before { + content: "\e118"; + } +} + +.glyphicon-resize-vertical { + &:before { + content: "\e119"; + } +} + +.glyphicon-resize-horizontal { + &:before { + content: "\e120"; + } +} + +.glyphicon-hdd { + &:before { + content: "\e121"; + } +} + +.glyphicon-bullhorn { + &:before { + content: "\e122"; + } +} + +.glyphicon-bell { + &:before { + content: "\e123"; + } +} + +.glyphicon-certificate { + &:before { + content: "\e124"; + } +} + +.glyphicon-thumbs-up { + &:before { + content: "\e125"; + } +} + +.glyphicon-thumbs-down { + &:before { + content: "\e126"; + } +} + +.glyphicon-hand-right { + &:before { + content: "\e127"; + } +} + +.glyphicon-hand-left { + &:before { + content: "\e128"; + } +} + +.glyphicon-hand-up { + &:before { + content: "\e129"; + } +} + +.glyphicon-hand-down { + &:before { + content: "\e130"; + } +} + +.glyphicon-circle-arrow-right { + &:before { + content: "\e131"; + } +} + +.glyphicon-circle-arrow-left { + &:before { + content: "\e132"; + } +} + +.glyphicon-circle-arrow-up { + &:before { + content: "\e133"; + } +} + +.glyphicon-circle-arrow-down { + &:before { + content: "\e134"; + } +} + +.glyphicon-globe { + &:before { + content: "\e135"; + } +} + +.glyphicon-wrench { + &:before { + content: "\e136"; + } +} + +.glyphicon-tasks { + &:before { + content: "\e137"; + } +} + +.glyphicon-filter { + &:before { + content: "\e138"; + } +} + +.glyphicon-briefcase { + &:before { + content: "\e139"; + } +} + +.glyphicon-fullscreen { + &:before { + content: "\e140"; + } +} + +.glyphicon-dashboard { + &:before { + content: "\e141"; + } +} + +.glyphicon-paperclip { + &:before { + content: "\e142"; + } +} + +.glyphicon-heart-empty { + &:before { + content: "\e143"; + } +} + +.glyphicon-link { + &:before { + content: "\e144"; + } +} + +.glyphicon-phone { + &:before { + content: "\e145"; + } +} + +.glyphicon-pushpin { + &:before { + content: "\e146"; + } +} + +.glyphicon-usd { + &:before { + content: "\e148"; + } +} + +.glyphicon-gbp { + &:before { + content: "\e149"; + } +} + +.glyphicon-sort { + &:before { + content: "\e150"; + } +} + +.glyphicon-sort-by-alphabet { + &:before { + content: "\e151"; + } +} + +.glyphicon-sort-by-alphabet-alt { + &:before { + content: "\e152"; + } +} + +.glyphicon-sort-by-order { + &:before { + content: "\e153"; + } +} + +.glyphicon-sort-by-order-alt { + &:before { + content: "\e154"; + } +} + +.glyphicon-sort-by-attributes { + &:before { + content: "\e155"; + } +} + +.glyphicon-sort-by-attributes-alt { + &:before { + content: "\e156"; + } +} + +.glyphicon-unchecked { + &:before { + content: "\e157"; + } +} + +.glyphicon-expand { + &:before { + content: "\e158"; + } +} + +.glyphicon-collapse-down { + &:before { + content: "\e159"; + } +} + +.glyphicon-collapse-up { + &:before { + content: "\e160"; + } +} + +.glyphicon-log-in { + &:before { + content: "\e161"; + } +} + +.glyphicon-flash { + &:before { + content: "\e162"; + } +} + +.glyphicon-log-out { + &:before { + content: "\e163"; + } +} + +.glyphicon-new-window { + &:before { + content: "\e164"; + } +} + +.glyphicon-record { + &:before { + content: "\e165"; + } +} + +.glyphicon-save { + &:before { + content: "\e166"; + } +} + +.glyphicon-open { + &:before { + content: "\e167"; + } +} + +.glyphicon-saved { + &:before { + content: "\e168"; + } +} + +.glyphicon-import { + &:before { + content: "\e169"; + } +} + +.glyphicon-export { + &:before { + content: "\e170"; + } +} + +.glyphicon-send { + &:before { + content: "\e171"; + } +} + +.glyphicon-floppy-disk { + &:before { + content: "\e172"; + } +} + +.glyphicon-floppy-saved { + &:before { + content: "\e173"; + } +} + +.glyphicon-floppy-remove { + &:before { + content: "\e174"; + } +} + +.glyphicon-floppy-save { + &:before { + content: "\e175"; + } +} + +.glyphicon-floppy-open { + &:before { + content: "\e176"; + } +} + +.glyphicon-credit-card { + &:before { + content: "\e177"; + } +} + +.glyphicon-transfer { + &:before { + content: "\e178"; + } +} + +.glyphicon-cutlery { + &:before { + content: "\e179"; + } +} + +.glyphicon-header { + &:before { + content: "\e180"; + } +} + +.glyphicon-compressed { + &:before { + content: "\e181"; + } +} + +.glyphicon-earphone { + &:before { + content: "\e182"; + } +} + +.glyphicon-phone-alt { + &:before { + content: "\e183"; + } +} + +.glyphicon-tower { + &:before { + content: "\e184"; + } +} + +.glyphicon-stats { + &:before { + content: "\e185"; + } +} + +.glyphicon-sd-video { + &:before { + content: "\e186"; + } +} + +.glyphicon-hd-video { + &:before { + content: "\e187"; + } +} + +.glyphicon-subtitles { + &:before { + content: "\e188"; + } +} + +.glyphicon-sound-stereo { + &:before { + content: "\e189"; + } +} + +.glyphicon-sound-dolby { + &:before { + content: "\e190"; + } +} + +.glyphicon-sound-5-1 { + &:before { + content: "\e191"; + } +} + +.glyphicon-sound-6-1 { + &:before { + content: "\e192"; + } +} + +.glyphicon-sound-7-1 { + &:before { + content: "\e193"; + } +} + +.glyphicon-copyright-mark { + &:before { + content: "\e194"; + } +} + +.glyphicon-registration-mark { + &:before { + content: "\e195"; + } +} + +.glyphicon-cloud-download { + &:before { + content: "\e197"; + } +} + +.glyphicon-cloud-upload { + &:before { + content: "\e198"; + } +} + +.glyphicon-tree-conifer { + &:before { + content: "\e199"; + } +} + +.glyphicon-tree-deciduous { + &:before { + content: "\e200"; + } +} + +.glyphicon-cd { + &:before { + content: "\e201"; + } +} + +.glyphicon-save-file { + &:before { + content: "\e202"; + } +} + +.glyphicon-open-file { + &:before { + content: "\e203"; + } +} + +.glyphicon-level-up { + &:before { + content: "\e204"; + } +} + +.glyphicon-copy { + &:before { + content: "\e205"; + } +} + +.glyphicon-paste { + &:before { + content: "\e206"; + } +} + +// The following 2 Glyphicons are omitted for the time being because +// they currently use Unicode codepoints that are outside the +// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle +// non-BMP codepoints in CSS string escapes, and thus can't display these two icons. +// Notably, the bug affects some older versions of the Android Browser. +// More info: https://github.com/twbs/bootstrap/issues/10106 +// .glyphicon-door { &:before { content: "\1f6aa"; } } +// .glyphicon-key { &:before { content: "\1f511"; } } +.glyphicon-alert { + &:before { + content: "\e209"; + } +} + +.glyphicon-equalizer { + &:before { + content: "\e210"; + } +} + +.glyphicon-king { + &:before { + content: "\e211"; + } +} + +.glyphicon-queen { + &:before { + content: "\e212"; + } +} + +.glyphicon-pawn { + &:before { + content: "\e213"; + } +} + +.glyphicon-bishop { + &:before { + content: "\e214"; + } +} + +.glyphicon-knight { + &:before { + content: "\e215"; + } +} + +.glyphicon-baby-formula { + &:before { + content: "\e216"; + } +} + +.glyphicon-tent { + &:before { + content: "\26fa"; + } +} + +.glyphicon-blackboard { + &:before { + content: "\e218"; + } +} + +.glyphicon-bed { + &:before { + content: "\e219"; + } +} + +.glyphicon-apple { + &:before { + content: "\f8ff"; + } +} + +.glyphicon-erase { + &:before { + content: "\e221"; + } +} + +.glyphicon-hourglass { + &:before { + content: "\231b"; + } +} + +.glyphicon-lamp { + &:before { + content: "\e223"; + } +} + +.glyphicon-duplicate { + &:before { + content: "\e224"; + } +} + +.glyphicon-piggy-bank { + &:before { + content: "\e225"; + } +} + +.glyphicon-scissors { + &:before { + content: "\e226"; + } +} + +.glyphicon-bitcoin { + &:before { + content: "\e227"; + } +} + +.glyphicon-btc { + &:before { + content: "\e227"; + } +} + +.glyphicon-xbt { + &:before { + content: "\e227"; + } +} + +.glyphicon-yen { + &:before { + content: "\00a5"; + } +} + +.glyphicon-jpy { + &:before { + content: "\00a5"; + } +} + +.glyphicon-ruble { + &:before { + content: "\20bd"; + } +} + +.glyphicon-rub { + &:before { + content: "\20bd"; + } +} + +.glyphicon-scale { + &:before { + content: "\e230"; + } +} + +.glyphicon-ice-lolly { + &:before { + content: "\e231"; + } +} + +.glyphicon-ice-lolly-tasted { + &:before { + content: "\e232"; + } +} + +.glyphicon-education { + &:before { + content: "\e233"; + } +} + +.glyphicon-option-horizontal { + &:before { + content: "\e234"; + } +} + +.glyphicon-option-vertical { + &:before { + content: "\e235"; + } +} + +.glyphicon-menu-hamburger { + &:before { + content: "\e236"; + } +} + +.glyphicon-modal-window { + &:before { + content: "\e237"; + } +} + +.glyphicon-oil { + &:before { + content: "\e238"; + } +} + +.glyphicon-grain { + &:before { + content: "\e239"; + } +} + +.glyphicon-sunglasses { + &:before { + content: "\e240"; + } +} + +.glyphicon-text-size { + &:before { + content: "\e241"; + } +} + +.glyphicon-text-color { + &:before { + content: "\e242"; + } +} + +.glyphicon-text-background { + &:before { + content: "\e243"; + } +} + +.glyphicon-object-align-top { + &:before { + content: "\e244"; + } +} + +.glyphicon-object-align-bottom { + &:before { + content: "\e245"; + } +} + +.glyphicon-object-align-horizontal { + &:before { + content: "\e246"; + } +} + +.glyphicon-object-align-left { + &:before { + content: "\e247"; + } +} + +.glyphicon-object-align-vertical { + &:before { + content: "\e248"; + } +} + +.glyphicon-object-align-right { + &:before { + content: "\e249"; + } +} + +.glyphicon-triangle-right { + &:before { + content: "\e250"; + } +} + +.glyphicon-triangle-left { + &:before { + content: "\e251"; + } +} + +.glyphicon-triangle-bottom { + &:before { + content: "\e252"; + } +} + +.glyphicon-triangle-top { + &:before { + content: "\e253"; + } +} + +.glyphicon-console { + &:before { + content: "\e254"; + } +} + +.glyphicon-superscript { + &:before { + content: "\e255"; + } +} + +.glyphicon-subscript { + &:before { + content: "\e256"; + } +} + +.glyphicon-menu-left { + &:before { + content: "\e257"; + } +} + +.glyphicon-menu-right { + &:before { + content: "\e258"; + } +} + +.glyphicon-menu-down { + &:before { + content: "\e259"; + } +} + +.glyphicon-menu-up { + &:before { + content: "\e260"; + } +} diff --git a/openecomp-ui/resources/scss/bootstrap/_grid.scss b/openecomp-ui/resources/scss/bootstrap/_grid.scss new file mode 100644 index 0000000000..75f3822540 --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap/_grid.scss @@ -0,0 +1,76 @@ +// +// Grid system +// -------------------------------------------------- + +// Container widths +// +// Set the container width, and override it for fixed navbars in media queries. + +.container { + @include container-fixed; + + @media (min-width: $screen-sm-min) { + width: $container-sm; + } + @media (min-width: $screen-md-min) { + width: $container-md; + } + @media (min-width: $screen-lg-min) { + width: $container-lg; + } +} + +// Fluid container +// +// Utilizes the mixin meant for fixed width containers, but without any defined +// width for fluid, full width layouts. + +.container-fluid { + @include container-fixed; +} + +// Row +// +// Rows contain and clear the floats of your columns. + +.row { + @include make-row; +} + +// Columns +// +// Common styles for small and large grid columns + +@include make-grid-columns; + +// Extra small grid +// +// Columns, offsets, pushes, and pulls for extra small devices like +// smartphones. + +@include make-grid(xs); + +// Small grid +// +// Columns, offsets, pushes, and pulls for the small device range, from phones +// to tablets. + +@media (min-width: $screen-sm-min) { + @include make-grid(sm); +} + +// Medium grid +// +// Columns, offsets, pushes, and pulls for the desktop device range. + +@media (min-width: $screen-md-min) { + @include make-grid(md); +} + +// Large grid +// +// Columns, offsets, pushes, and pulls for the large desktop device range. + +@media (min-width: $screen-lg-min) { + @include make-grid(lg); +} diff --git a/openecomp-ui/resources/scss/bootstrap/_input-groups.scss b/openecomp-ui/resources/scss/bootstrap/_input-groups.scss new file mode 100644 index 0000000000..4a160e0787 --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap/_input-groups.scss @@ -0,0 +1,171 @@ +// +// Input groups +// -------------------------------------------------- + +// Base styles +// ------------------------- +.input-group { + position: relative; // For dropdowns + display: table; + border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table + + // Undo padding and float of grid classes + &[class*="col-"] { + float: none; + padding-left: 0; + padding-right: 0; + } + + .form-control { + // Ensure that the input is always above the *appended* addon button for + // proper border colors. + position: relative; + z-index: 2; + + // IE9 fubars the placeholder attribute in text inputs and the arrows on + // select elements in input groups. To fix it, we float the input. Details: + // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855 + float: left; + + width: 100%; + margin-bottom: 0; + } +} + +// Sizing options +// +// Remix the default form control sizing classes into new ones for easier +// manipulation. + +.input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { + @extend .input-lg; +} + +.input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { + @extend .input-sm; +} + +// Display as table-cell +// ------------------------- +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; + + &:not(:first-child):not(:last-child) { + border-radius: 0; + } +} + +// Addon and addon wrapper for buttons +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; // Match the inputs +} + +// Text input groups +// ------------------------- +.input-group-addon { + padding: $padding-base-vertical $padding-base-horizontal; + font-size: $font-size-base; + font-weight: normal; + line-height: 1; + color: $input-color; + text-align: center; + background-color: $input-group-addon-bg; + border: 1px solid $input-group-addon-border-color; + border-radius: $border-radius-base; + + // Sizing + &.input-sm { + padding: $padding-small-vertical $padding-small-horizontal; + font-size: $font-size-small; + border-radius: $border-radius-small; + } + &.input-lg { + padding: $padding-large-vertical $padding-large-horizontal; + font-size: $font-size-large; + border-radius: $border-radius-large; + } + + // Nuke default margins from checkboxes and radios to vertically center within. + input[type="radio"], + input[type="checkbox"] { + margin-top: 0; + } +} + +// Reset rounded corners +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + @include border-right-radius(0); +} + +.input-group-addon:first-child { + border-right: 0; +} + +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + @include border-left-radius(0); +} + +.input-group-addon:last-child { + border-left: 0; +} + +// Button input groups +// ------------------------- +.input-group-btn { + position: relative; + // Jankily prevent input button groups from wrapping with `white-space` and + // `font-size` in combination with `inline-block` on buttons. + font-size: 0; + white-space: nowrap; + + // Negative margin for spacing, position for bringing hovered/focused/actived + // element above the siblings. + > .btn { + position: relative; + + .btn { + margin-left: -1px; + } + // Bring the "active" button to the front + &:hover, + &:focus, + &:active { + z-index: 2; + } + } + + // Negative margin to only have a 1px border between the two + &:first-child { + > .btn, + > .btn-group { + margin-right: -1px; + } + } + &:last-child { + > .btn, + > .btn-group { + z-index: 2; + margin-left: -1px; + } + } +} diff --git a/openecomp-ui/resources/scss/bootstrap/_jumbotron.scss b/openecomp-ui/resources/scss/bootstrap/_jumbotron.scss new file mode 100644 index 0000000000..e31137137d --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap/_jumbotron.scss @@ -0,0 +1,51 @@ +// +// Jumbotron +// -------------------------------------------------- + +.jumbotron { + padding-top: $jumbotron-padding; + padding-bottom: $jumbotron-padding; + margin-bottom: $jumbotron-padding; + color: $jumbotron-color; + background-color: $jumbotron-bg; + + h1, + .h1 { + color: $jumbotron-heading-color; + } + + p { + margin-bottom: ($jumbotron-padding / 2); + font-size: $jumbotron-font-size; + font-weight: 200; + } + + > hr { + border-top-color: darken($jumbotron-bg, 10%); + } + + .container &, + .container-fluid & { + border-radius: $border-radius-large; // Only round corners at higher resolutions if contained in a container + } + + .container { + max-width: 100%; + } + + @media screen and (min-width: $screen-sm-min) { + padding-top: ($jumbotron-padding * 1.6); + padding-bottom: ($jumbotron-padding * 1.6); + + .container &, + .container-fluid & { + padding-left: ($jumbotron-padding * 2); + padding-right: ($jumbotron-padding * 2); + } + + h1, + .h1 { + font-size: $jumbotron-heading-font-size; + } + } +} diff --git a/openecomp-ui/resources/scss/bootstrap/_labels.scss b/openecomp-ui/resources/scss/bootstrap/_labels.scss new file mode 100644 index 0000000000..4fea19d99a --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap/_labels.scss @@ -0,0 +1,66 @@ +// +// Labels +// -------------------------------------------------- + +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: $label-color; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; + + // [converter] extracted a& to a.label + + // Empty labels collapse automatically (not available in IE8) + &:empty { + display: none; + } + + // Quick fix for labels in buttons + .btn & { + position: relative; + top: -1px; + } +} + +// Add hover effects, but only for links +a.label { + &:hover, + &:focus { + color: $label-link-hover-color; + text-decoration: none; + cursor: pointer; + } +} + +// Colors +// Contextual variations (linked labels get darker on :hover) + +.label-default { + @include label-variant($label-default-bg); +} + +.label-primary { + @include label-variant($label-primary-bg); +} + +.label-success { + @include label-variant($label-success-bg); +} + +.label-info { + @include label-variant($label-info-bg); +} + +.label-warning { + @include label-variant($label-warning-bg); +} + +.label-danger { + @include label-variant($label-danger-bg); +} diff --git a/openecomp-ui/resources/scss/bootstrap/_list-group.scss b/openecomp-ui/resources/scss/bootstrap/_list-group.scss new file mode 100644 index 0000000000..d04b72ee45 --- /dev/null +++ b/openecomp-ui/resources/scss/bootstrap/_list-group.scss @@ -0,0 +1,126 @@ +// +// List groups +// -------------------------------------------------- + +// Base class +// +// Easily usable on

K8oxPqq}-h-_6s97EU>_$e zy9MnTDW)Dp5sT*S1rqixSiG{ForV;Sg3jpmD0m2JKkSd@G=4&LfmF=kjxgW$#h}gDPBD@$M9p#5prR+`a2N0D&TYJ$$Y3RXOVfvii?=Fp zkbkPfw0Wb3ho}PZ(-b&TS95iP4;5pv-D;g~+9n3Nk!59eMa|Tk#6ZD=m`Jp11Uu(_ zrS!BSvMni+9>aT6byl~mN0HD-W0{hzZ`p|rZ!!!Sj$pGLMfCum&DT%eKIV*=;K(db zRlZs;h8FdS#D}ms10ZeGbgIp&ko_ok;sl$Xp*!&~%RhmbTC<)S(t~ys1aUB^rVm&rs#&!V1y5BD@N{h+ArAGt0JNsf%~$tX`~hVt!D_PfI`-DyLy<>I8a)v6 zi=_1k5h90;So&G7G><6RCb)U@h17;r22494t7f>(ChiJ9k59AXwzFft$r?8bKUM~P z`cmc>eJ`IDBXfi2@sM6fP5`+;I)4j*(A4^Q(H0YQ#O`y|NkqSa&S{7wd^I0aq&^U4 zblr)XBSV$iGyh48()vuZPm-Ns%q|7Lm<3xyY$xFL%(kb|t1JTAcx2}^VzCgG+Q~iy zb-Wz~$}DevFp;s+*l_$c)Q~Vmpk}q=43@=~^7H9kO@)Jhm6E5|R(nxbME%0D7~yIL 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%0DD$Oi^(r0)iHBXpL`*}?7y@{~ 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

jH0ya1ok3Pd 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 literal 0 HcmV?d00001 diff --git a/openecomp-ui/resources/fonts/omnes-att-bold.otf b/openecomp-ui/resources/fonts/omnes-att-bold.otf new file mode 100644 index 0000000000000000000000000000000000000000..136afca84c074c9c973e4b55710c5a02a42c4578 GIT binary patch literal 153056 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 AwEzGB literal 0 HcmV?d00001 diff --git a/openecomp-ui/resources/fonts/omnes-att-italic.otf b/openecomp-ui/resources/fonts/omnes-att-italic.otf new file mode 100644 index 0000000000000000000000000000000000000000..5dc1da79d46857af7f239aec763f85d08a1fb5f9 GIT binary patch literal 138748 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