diff options
Diffstat (limited to 'src/main/resources/app/lib')
| -rw-r--r-- | src/main/resources/app/lib/umr/FormUtils.js | 201 |
1 files changed, 201 insertions, 0 deletions
diff --git a/src/main/resources/app/lib/umr/FormUtils.js b/src/main/resources/app/lib/umr/FormUtils.js new file mode 100644 index 0000000..7a8cbdd --- /dev/null +++ b/src/main/resources/app/lib/umr/FormUtils.js @@ -0,0 +1,201 @@ +class FormUtils { + + constructor(context) { + this.context = context; + + if (!this.context.genericEditForm) { + console.error('Context does not contain "genericEditForm". Please use "new FormUtils(this)" or methods will return undefined values!'); + } + } + + /** + * Returns field with given name from main form if it exists + * @param fieldName + * @returns {undefined|*} + */ + getMainformField(fieldName) { + if (this.context.genericEditForm) { + const query = '[originalName=' + fieldName + ']'; + const fields = this.context.genericEditForm + .query(query) + .filter(e => e.ownerCt.xtype === 'form' || e.ownerCt.xtype === 'panel' && e.ownerCt.title.length !== 0); + + if (fields.length > 0) { + return this.context.genericEditForm.down('#' + fields[0].id); + } + console.error('Field with name "' + fieldName + '" not found in main form!'); + } + return undefined; + } + + /** + * Returns field with given field name found at given index within whole form. + * @param fieldName + * @param index + * @returns {undefined|*} + */ + getFieldAtIndex(fieldName, index) { + if (this.context.genericEditForm) { + const query = '[originalName=' + fieldName + ']'; + const fields = this.context.genericEditForm.query(query); + if (fields.length > index) { + return this.context.genericEditForm.down('#' + fields[index].id); + } + console.error('Field with name "' + fieldName + '" and index "' + index + '" not found!'); + } + return undefined; + } + + /** + * Returns field with given field name found in section with given name. + * @param fieldName + * @param sectionName + * @returns {undefined|*} + */ + getFieldInSection(fieldName, sectionName) { + if (this.genericEditForm) { + const query = '[originalName=' + fieldName + ']'; + const fields = this.context.genericEditForm + .query(query) + .filter(e => e.ownerCt.xtype === 'panel' && e.ownerCt.ownerCt.originalName === sectionName); + if (fields.length > 0) { + return this.context.genericEditForm.down('#' + fields[0].id); + } + console.error('Field with name "' + fieldName + '" not found in section with name "' + sectionName + '"!'); + } + return undefined; + } + + /** + * Returns value of field with given name from main form if it exists. + * @param fieldName + * @returns {undefined|*} + */ + getMainformFieldValue(fieldName) { + let mainformField = this.getMainformField(fieldName); + if (mainformField) { + return mainformField.getValue(); + } + return undefined; + } + + /** + * Updates field with given name to given new value. + * The field must reside in main form. + * @param fieldName + * @param newValue + * @returns {undefined|*} + */ + setMainformFieldValue(fieldName, newValue) { + let mainformField = this.getMainformField(fieldName); + if (mainformField) { + return mainformField.setValue(newValue); + } + } + + /** + * Returns value of field with given name in section with given name if it exists. + * @param fieldName + * @param sectionName + * @returns {undefined|*} + */ + getFieldValueInSection(fieldName, sectionName) { + let sectionField = this.getFieldInSection(fieldName, sectionName); + if (sectionField) { + return sectionField.getValue(); + } + return undefined; + } + + /** + * Updates field with given name in section with given name new value. + * The field must reside in main form. + * @param fieldName + * @param sectionName + * @param newValue + * @returns {undefined|*} + */ + setFieldValueInSection(fieldName, sectionName, newValue) { + let sectionField = this.getFieldInSection(fieldName, sectionName); + if (sectionField) { + return sectionField.setValue(newValue); + } + } + + /** + * Returns value of field with given field name found at given index within whole form. + * @param fieldName + * @param index + * @returns {undefined|*} + */ + getFieldValueAtIndex(fieldName, index) { + let field = this.getFieldAtIndex(fieldName, index); + if (field) { + return field.getValue(); + } + return undefined; + } + + /** + * Updates value of field with given field name found at given index within whole form. + * @param fieldName + * @param index + * @param newValue + * @returns {undefined|*} + */ + setFieldValueAtIndex(fieldName, index, newValue) { + let field = this.getFieldAtIndex(fieldName, index); + if (field) { + field.setValue(newValue); + } + } + + /** + * Returns all values for all fields with given name. + * @param fieldName + * @returns {*|*[]} + */ + getFieldValues(fieldName) { + if (this.context.genericEditForm) { + const query = '[originalName=' + fieldName + ']'; + const fields = this.context.genericEditForm.query(query); + return fields.map(f => this.context.genericEditForm.down('#' + f.id).getValue()); + } + return undefined; + } + + /** + * Counts blocks within given subform field name. + * @param subformFieldName + * @returns {undefined|*|number} + */ + subformBlockCount(subformFieldName) { + if (this.context.genericEditForm) { + const query = '[originalName=' + subformFieldName + ']'; + const elements = this.context.genericEditForm.query(query); + + if (elements.length === 0) return 0; + + return elements + .map(e => e.numberOfBlocks) + .reduce((sum, num) => sum + num); + } + return undefined; + } + + /** + * Returns subform field names for given subform name. + * @param subformName + * @returns {undefined|*} + */ + getSubformFieldNames(subformName) { + if (this.context.genericEditForm) { + const query = '[formName=' + subformName + ']'; + + return Ext.ComponentQuery + .query(query) + .map(e => e.originalName); + } + return undefined; + } +}
\ No newline at end of file |
