From 30879fffbecf6d78cde249fecf68f6335555711a Mon Sep 17 00:00:00 2001 From: KIRAN KASHALKAR Date: Mon, 26 Dec 2016 21:16:09 -0500 Subject: [PATCH] RIFT-14803: UI Composer: References should be dropdowns https://osm.etsi.org/gerrit/#/c/606/ Signed-off-by: KIRAN KASHALKAR --- .../EditDescriptorModelProperties.js | 24 ++ .../model/DescriptorModelMetaProperty.js | 29 +++ .../composer/src/src/libraries/utils.js | 207 +++++++++++++++++- .../src/src/stores/CatalogDataStore.js | 24 ++ 4 files changed, 283 insertions(+), 1 deletion(-) diff --git a/skyquake/plugins/composer/src/src/components/EditDescriptorModelProperties.js b/skyquake/plugins/composer/src/src/components/EditDescriptorModelProperties.js index 4dc4b28f5..7965e25a7 100644 --- a/skyquake/plugins/composer/src/src/components/EditDescriptorModelProperties.js +++ b/skyquake/plugins/composer/src/src/components/EditDescriptorModelProperties.js @@ -39,6 +39,7 @@ import SelectionManager from '../libraries/SelectionManager' import DeletionManager from '../libraries/DeletionManager' import DescriptorModelIconFactory from '../libraries/model/IconFactory' import getEventPath from '../libraries/getEventPath' +import CatalogDataStore from '../stores/CatalogDataStore' import imgAdd from '../../../node_modules/open-iconic/svg/plus.svg' import imgRemove from '../../../node_modules/open-iconic/svg/trash.svg' @@ -173,12 +174,15 @@ export default function EditDescriptorModelProperties(props) { } function buildField(container, property, path, value, fieldKey) { + let cds = CatalogDataStore; + let catalogs = cds.getTransientCatalogs(); const name = path.join('.'); const isEditable = true; const isGuid = Property.isGuid(property); const onChange = onFormFieldValueChanged.bind(container); const isEnumeration = Property.isEnumeration(property); + const isLeafRef = Property.isLeafRef(property); const onFocus = onFocusPropertyFormInputElement.bind(container, property, path, value); const placeholder = changeCase.title(property.name); const className = ClassNames(property.name + '-input', {'-is-guid': isGuid}); @@ -200,6 +204,26 @@ export default function EditDescriptorModelProperties(props) { return ; } + if (isLeafRef) { + let fullFieldKey = fieldKey; + let containerRef = container; + while (containerRef.parent) { + fullFieldKey = containerRef.parent.key + ':' + fullFieldKey; + containerRef = containerRef.parent; + } + const leafRefPathValues = Property.getLeafRef(property, path, value, fullFieldKey, catalogs, container); + + const options = leafRefPathValues && leafRefPathValues.map((d, i) => { + return ; + }); + const isValueSet = leafRefPathValues.filter(d => d.isSelected).length > 0; + if (!isValueSet || property.cardinality === '0..1') { + const noValueDisplayText = changeCase.title(property.name); + options.unshift(); + } + return ; + } + if (property['preserve-line-breaks']) { return