@@ -98,25 +98,39 @@ export class MetadataFieldFormComponent implements OnInit, OnDestroy {
9898 * Initialize the component, setting up the necessary Models for the dynamic form
9999 */
100100 ngOnInit ( ) {
101- combineLatest (
101+ combineLatest ( [
102102 this . translateService . get ( `${ this . messagePrefix } .element` ) ,
103103 this . translateService . get ( `${ this . messagePrefix } .qualifier` ) ,
104104 this . translateService . get ( `${ this . messagePrefix } .scopenote` )
105- ) . subscribe ( ( [ element , qualifier , scopenote ] ) => {
105+ ] ) . subscribe ( ( [ element , qualifier , scopenote ] ) => {
106106 this . element = new DynamicInputModel ( {
107107 id : 'element' ,
108108 label : element ,
109109 name : 'element' ,
110110 validators : {
111111 required : null ,
112+ pattern : '^[^. ,]*$' ,
113+ maxLength : 64 ,
112114 } ,
113115 required : true ,
116+ errorMessages : {
117+ pattern : 'error.validation.metadata.element.invalid-pattern' ,
118+ maxLength : 'error.validation.metadata.element.max-length' ,
119+ } ,
114120 } ) ;
115121 this . qualifier = new DynamicInputModel ( {
116122 id : 'qualifier' ,
117123 label : qualifier ,
118124 name : 'qualifier' ,
125+ validators : {
126+ pattern : '^[^. ,]*$' ,
127+ maxLength : 64 ,
128+ } ,
119129 required : false ,
130+ errorMessages : {
131+ pattern : 'error.validation.metadata.qualifier.invalid-pattern' ,
132+ maxLength : 'error.validation.metadata.qualifier.max-length' ,
133+ } ,
120134 } ) ;
121135 this . scopeNote = new DynamicInputModel ( {
122136 id : 'scopeNote' ,
@@ -132,14 +146,20 @@ export class MetadataFieldFormComponent implements OnInit, OnDestroy {
132146 } )
133147 ] ;
134148 this . formGroup = this . formBuilderService . createFormGroup ( this . formModel ) ;
135- this . registryService . getActiveMetadataField ( ) . subscribe ( ( field ) => {
136- this . formGroup . patchValue ( {
137- metadatadatafieldgroup : {
138- element : field != null ? field . element : '' ,
139- qualifier : field != null ? field . qualifier : '' ,
140- scopeNote : field != null ? field . scopeNote : ''
141- }
142- } ) ;
149+ this . registryService . getActiveMetadataField ( ) . subscribe ( ( field : MetadataField ) : void => {
150+ if ( field == null ) {
151+ this . clearFields ( ) ;
152+ } else {
153+ this . formGroup . patchValue ( {
154+ metadatadatafieldgroup : {
155+ element : field . element ,
156+ qualifier : field . qualifier ,
157+ scopeNote : field . scopeNote ,
158+ } ,
159+ } ) ;
160+ this . element . disabled = true ;
161+ this . qualifier . disabled = true ;
162+ }
143163 } ) ;
144164 } ) ;
145165 }
@@ -157,25 +177,24 @@ export class MetadataFieldFormComponent implements OnInit, OnDestroy {
157177 * When the field has no id attached -> Create new field
158178 * Emit the updated/created field using the EventEmitter submitForm
159179 */
160- onSubmit ( ) {
180+ onSubmit ( ) : void {
161181 this . registryService . getActiveMetadataField ( ) . pipe ( take ( 1 ) ) . subscribe (
162- ( field ) => {
163- const values = {
164- element : this . element . value ,
165- qualifier : this . qualifier . value ,
166- scopeNote : this . scopeNote . value
167- } ;
182+ ( field : MetadataField ) => {
168183 if ( field == null ) {
169- this . registryService . createMetadataField ( Object . assign ( new MetadataField ( ) , values ) , this . metadataSchema ) . subscribe ( ( newField ) => {
184+ this . registryService . createMetadataField ( Object . assign ( new MetadataField ( ) , {
185+ element : this . element . value ,
186+ qualifier : this . qualifier . value ,
187+ scopeNote : this . scopeNote . value ,
188+ } ) , this . metadataSchema ) . subscribe ( ( newField : MetadataField ) => {
170189 this . submitForm . emit ( newField ) ;
171190 } ) ;
172191 } else {
173192 this . registryService . updateMetadataField ( Object . assign ( new MetadataField ( ) , field , {
174193 id : field . id ,
175- element : ( values . element ? values . element : field . element ) ,
176- qualifier : ( values . qualifier ? values . qualifier : field . qualifier ) ,
177- scopeNote : ( values . scopeNote ? values . scopeNote : field . scopeNote )
178- } ) ) . subscribe ( ( updatedField ) => {
194+ element : field . element ,
195+ qualifier : field . qualifier ,
196+ scopeNote : this . scopeNote . value ,
197+ } ) ) . subscribe ( ( updatedField : MetadataField ) => {
179198 this . submitForm . emit ( updatedField ) ;
180199 } ) ;
181200 }
@@ -188,14 +207,10 @@ export class MetadataFieldFormComponent implements OnInit, OnDestroy {
188207 /**
189208 * Reset all input-fields to be empty
190209 */
191- clearFields ( ) {
192- this . formGroup . patchValue ( {
193- metadatadatafieldgroup : {
194- element : '' ,
195- qualifier : '' ,
196- scopeNote : ''
197- }
198- } ) ;
210+ clearFields ( ) : void {
211+ this . formGroup . reset ( 'metadatadatafieldgroup' ) ;
212+ this . element . disabled = false ;
213+ this . qualifier . disabled = false ;
199214 }
200215
201216 /**
0 commit comments