diff --git a/openbis_ng_ui/src/js/components/common/form/TextField.jsx b/openbis_ng_ui/src/js/components/common/form/TextField.jsx index 76a695dead272c294f1d1a4485a266a2f6c89554..b8f95708ca3e292447891ad8e62242526d97c3cf 100644 --- a/openbis_ng_ui/src/js/components/common/form/TextField.jsx +++ b/openbis_ng_ui/src/js/components/common/form/TextField.jsx @@ -29,6 +29,7 @@ class TextFormField extends React.PureComponent { mandatory, disabled, error, + multiline, metadata, startAdornment, endAdornment, @@ -80,6 +81,7 @@ class TextFormField extends React.PureComponent { value={value || ''} error={!!error} disabled={disabled} + multiline={multiline} onChange={onChange} onFocus={onFocus} onBlur={onBlur} diff --git a/openbis_ng_ui/src/js/components/types/objectType/ObjectTypeHandlerLoad.js b/openbis_ng_ui/src/js/components/types/objectType/ObjectTypeHandlerLoad.js index c7eb5885ce75ff25011b14aba746f11751b05736..425888f922721df40b86653ef077697c914226ed 100644 --- a/openbis_ng_ui/src/js/components/types/objectType/ObjectTypeHandlerLoad.js +++ b/openbis_ng_ui/src/js/components/types/objectType/ObjectTypeHandlerLoad.js @@ -64,6 +64,8 @@ export default class ObjectTypeHandlerLoad { materialType: assignment.propertyType.materialType ? assignment.propertyType.materialType.code : null, + schema: assignment.propertyType.schema, + transformation: assignment.propertyType.transformation, mandatory: assignment.mandatory, showInEditView: assignment.showInEditView, showRawValueInForms: assignment.showRawValueInForms, diff --git a/openbis_ng_ui/src/js/components/types/objectType/ObjectTypeHandlerSave.js b/openbis_ng_ui/src/js/components/types/objectType/ObjectTypeHandlerSave.js index b46286bfb097fce80130ca2d8204f99d83451058..b302d6e375526833db221940fb3d445101821451 100644 --- a/openbis_ng_ui/src/js/components/types/objectType/ObjectTypeHandlerSave.js +++ b/openbis_ng_ui/src/js/components/types/objectType/ObjectTypeHandlerSave.js @@ -151,6 +151,8 @@ export default class ObjectTypeHandlerSave { creation.setLabel(property.label) creation.setDescription(property.description) creation.setDataType(property.dataType) + creation.setSchema(property.schema) + creation.setTransformation(property.transformation) if ( property.dataType === dto.DataType.CONTROLLEDVOCABULARY && @@ -179,6 +181,8 @@ export default class ObjectTypeHandlerSave { } update.setLabel(property.label) update.setDescription(property.description) + update.setSchema(property.schema) + update.setTransformation(property.transformation) operations.push(new dto.UpdatePropertyTypesOperation([update])) }) diff --git a/openbis_ng_ui/src/js/components/types/objectType/ObjectTypeParametersProperty.jsx b/openbis_ng_ui/src/js/components/types/objectType/ObjectTypeParametersProperty.jsx index e4574667a4e5a9ef045aafddcb497f501d710602..489308c7f0899bda440bbdc4d8170129554ff9eb 100644 --- a/openbis_ng_ui/src/js/components/types/objectType/ObjectTypeParametersProperty.jsx +++ b/openbis_ng_ui/src/js/components/types/objectType/ObjectTypeParametersProperty.jsx @@ -40,6 +40,8 @@ class ObjectTypeParametersProperty extends React.PureComponent { dataType: React.createRef(), vocabulary: React.createRef(), materialType: React.createRef(), + schema: React.createRef(), + transformation: React.createRef(), initialValueForExistingEntities: React.createRef(), mandatory: React.createRef(), showInEditView: React.createRef() @@ -165,6 +167,8 @@ class ObjectTypeParametersProperty extends React.PureComponent { {this.renderDataType(property)} {this.renderVocabulary(property)} {this.renderMaterialType(property)} + {this.renderSchema(property)} + {this.renderTransformation(property)} {this.renderLabel(property)} {this.renderDescription(property)} {this.renderVisible(property)} @@ -351,6 +355,48 @@ class ObjectTypeParametersProperty extends React.PureComponent { ) } + renderSchema(property) { + const { classes } = this.props + return ( + <Collapse in={property.dataType === dto.DataType.XML}> + <div className={classes.field}> + <TextField + reference={this.references.schema} + label='XML Schema' + name='schema' + error={property.errors.schema} + value={property.schema} + multiline={true} + onChange={this.handleChange} + onFocus={this.handleFocus} + onBlur={this.handleBlur} + /> + </div> + </Collapse> + ) + } + + renderTransformation(property) { + const { classes } = this.props + return ( + <Collapse in={property.dataType === dto.DataType.XML}> + <div className={classes.field}> + <TextField + reference={this.references.transformation} + label='XSLT Script' + name='transformation' + error={property.errors.transformation} + value={property.transformation} + multiline={true} + onChange={this.handleChange} + onFocus={this.handleFocus} + onBlur={this.handleBlur} + /> + </div> + </Collapse> + ) + } + renderMandatory(property) { const { classes } = this.props return ( diff --git a/openbis_ng_ui/src/js/components/types/objectType/ObjectTypeParametersType.jsx b/openbis_ng_ui/src/js/components/types/objectType/ObjectTypeParametersType.jsx index b3d75f39f3eca64466d562689f5336357e4bc1b2..2f417d56dd84d17023dd2d08692a382ab41d1dbe 100644 --- a/openbis_ng_ui/src/js/components/types/objectType/ObjectTypeParametersType.jsx +++ b/openbis_ng_ui/src/js/components/types/objectType/ObjectTypeParametersType.jsx @@ -304,7 +304,7 @@ class ObjectTypeParametersType extends React.PureComponent { <div className={classes.field}> <CheckboxField reference={this.references.autoGeneratedCode} - label='Generate codes automatically' + label='Generate codes' name='autoGeneratedCode' error={type.errors.autoGeneratedCode} value={type.autoGeneratedCode} diff --git a/openbis_ng_ui/src/js/components/types/objectType/ObjectTypePreviewProperty.jsx b/openbis_ng_ui/src/js/components/types/objectType/ObjectTypePreviewProperty.jsx index a7f0844509a38aa26bdbcc91531c576f4d4d6ee0..90a58e47b4b993f6edc4663dacfbb7b5fc00734c 100644 --- a/openbis_ng_ui/src/js/components/types/objectType/ObjectTypePreviewProperty.jsx +++ b/openbis_ng_ui/src/js/components/types/objectType/ObjectTypePreviewProperty.jsx @@ -203,15 +203,24 @@ class ObjectTypePreviewProperty extends React.PureComponent { renderProperty() { const { dataType } = this.props.property - if (dataType === 'VARCHAR' || dataType === 'MULTILINE_VARCHAR') { + if ( + dataType === dto.DataType.VARCHAR || + dataType === dto.DataType.MULTILINE_VARCHAR || + dataType === dto.DataType.HYPERLINK || + dataType === dto.DataType.TIMESTAMP || + dataType === dto.DataType.XML + ) { return this.renderVarcharProperty() - } else if (dataType === 'REAL' || dataType === 'INTEGER') { + } else if ( + dataType === dto.DataType.REAL || + dataType === dto.DataType.INTEGER + ) { return this.renderNumberProperty() - } else if (dataType === 'BOOLEAN') { + } else if (dataType === dto.DataType.BOOLEAN) { return this.renderBooleanProperty() - } else if (dataType === 'CONTROLLEDVOCABULARY') { + } else if (dataType === dto.DataType.CONTROLLEDVOCABULARY) { return this.renderVocabularyProperty() - } else if (dataType === 'MATERIAL') { + } else if (dataType === dto.DataType.MATERIAL) { return this.renderMaterialProperty() } else { return <span>Data type not supported yet</span> @@ -228,6 +237,7 @@ class ObjectTypePreviewProperty extends React.PureComponent { description={this.getDescription()} value={values[property.id]} mandatory={this.getMandatory()} + multiline={this.getMultiline()} metadata={this.getMetadata()} error={this.getError()} styles={this.getStyles()} @@ -359,6 +369,13 @@ class ObjectTypePreviewProperty extends React.PureComponent { return this.props.property.mandatory } + getMultiline() { + return ( + this.props.property.dataType === dto.DataType.MULTILINE_VARCHAR || + this.props.property.dataType === dto.DataType.XML + ) + } + getMetadata() { const styles = this.getStyles()