X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FUI.git;a=blobdiff_plain;f=skyquake%2Fplugins%2Fcomposer%2Fsrc%2Fsrc%2Fcomponents%2FEditDescriptorModelProperties.js;h=abb94474da8ef54936f5ebafc337bae16688203a;hp=41e87b3bced4ef2d63c3a3e7390550fc954a25ae;hb=3581a59b106203a259ee1ce8c21e2e8a0cc9f348;hpb=ead103145b1eb604365810eb5e10f3a01790138a diff --git a/skyquake/plugins/composer/src/src/components/EditDescriptorModelProperties.js b/skyquake/plugins/composer/src/src/components/EditDescriptorModelProperties.js index 41e87b3bc..abb94474d 100644 --- a/skyquake/plugins/composer/src/src/components/EditDescriptorModelProperties.js +++ b/skyquake/plugins/composer/src/src/components/EditDescriptorModelProperties.js @@ -48,6 +48,8 @@ import imgRemove from '../../../node_modules/open-iconic/svg/trash.svg' import '../styles/EditDescriptorModelProperties.scss' +const EMPTY_LEAF_PRESENT = '--empty-leaf-set--'; + function getDescriptorMetaBasicForType(type) { const basicPropertiesFilter = d => _includes(DESCRIPTOR_MODEL_FIELDS[type], d.name); return DescriptorModelMetaFactory.getModelMetaForType(type, basicPropertiesFilter) || {properties: []}; @@ -76,6 +78,8 @@ function getTitle(model = {}) { export default function EditDescriptorModelProperties(props) { const container = props.container; + const readonly = props.readonly; + const isEditable = !readonly; //true if (!(DescriptorModelFactory.isContainer(container))) { return @@ -146,6 +150,9 @@ export default function EditDescriptorModelProperties(props) { } CatalogItemsActions.catalogItemDescriptorChanged(this.getRoot()); } + if(readonly) { + return null; + } return ( ); @@ -163,6 +170,9 @@ export default function EditDescriptorModelProperties(props) { } CatalogItemsActions.catalogItemDescriptorChanged(this.getRoot()); } + if(readonly) { + return null; + } return ( ); @@ -204,7 +214,7 @@ export default function EditDescriptorModelProperties(props) { processFieldValueChange.bind(container, pathToProperty), 2000, {maxWait: 5000})); // max wait for short-name // create an onChange event handler for a select field for the specified field path const onSelectChange = changeHandler.bind(null, processFieldValueChange.bind(container, pathToProperty)); - + if (isEnumeration) { const enumeration = Property.getEnumeration(property, value); const options = enumeration.map((d, i) => { @@ -220,18 +230,18 @@ export default function EditDescriptorModelProperties(props) { options.unshift({noValueDisplayText}); } return ( - + className={ClassNames({'-value-not-set': !isValueSet})} + defaultValue={value} + title={pathToProperty} + onChange={onSelectChange} + onFocus={onFocus} + onBlur={endEditing} + onMouseDown={startEditing} + onMouseOver={startEditing} + disabled={!isEditable}> {options} ); @@ -255,18 +265,18 @@ export default function EditDescriptorModelProperties(props) { options.unshift({noValueDisplayText}); } return ( - + {options} ); @@ -288,17 +298,47 @@ export default function EditDescriptorModelProperties(props) { } const isValueSet = (val != '' && val) return ( - + + {options} + + ); + } + + if (Property.isLeafEmpty(property)) { + // A null value indicates the leaf exists (as opposed to undefined). + // We stick in a string when the user actually sets it to simplify things + // but the correct thing happens when we serialize to user data + let isEmptyLeafPresent = (value === EMPTY_LEAF_PRESENT || value === null); + let present = isEmptyLeafPresent ? EMPTY_LEAF_PRESENT : ""; + const options = [ + Enabled, + Not Enabled + ] + + return ( + {options} ); @@ -306,25 +346,25 @@ export default function EditDescriptorModelProperties(props) { if (property['preserve-line-breaks']) { return ( - + ); } return ( - ); @@ -396,7 +436,7 @@ export default function EditDescriptorModelProperties(props) { // write the current choice value into the state let choiceObject = utils.resolvePath(this.model, [name, selected].join('.')); let isTopCase = false; - if (!choiceObject) { + if (choiceObject) { isTopCase = true; choiceObject = utils.resolvePath(this.model, [selected].join('.')); } @@ -510,17 +550,18 @@ export default function EditDescriptorModelProperties(props) { return ( - {options} @@ -617,7 +658,7 @@ export default function EditDescriptorModelProperties(props) { let field; const valuePath = path.slice(); // create a unique field Id for use as react component keys and html element ids - // notes: + // notes: // keys only need to be unique on components in the same array // html element ids should be unique with the document (or form) let fieldId = uniqueId; @@ -786,4 +827,3 @@ export default function EditDescriptorModelProperties(props) { ); }; -