mirror of
				https://github.com/inventree/InvenTree.git
				synced 2025-11-04 07:05:41 +00:00 
			
		
		
		
	Refactor form field definition copying
This commit is contained in:
		@@ -366,6 +366,14 @@ function constructFormBody(fields, options) {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Initialize an "empty" field for each specified field
 | 
			
		||||
    for (field in displayed_fields) {
 | 
			
		||||
        if (!(field in fields)) {
 | 
			
		||||
            console.log("adding blank field for ", field);
 | 
			
		||||
            fields[field] = {};
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Provide each field object with its own name
 | 
			
		||||
    for(field in fields) {
 | 
			
		||||
        fields[field].name = field;
 | 
			
		||||
@@ -383,57 +391,18 @@ function constructFormBody(fields, options) {
 | 
			
		||||
            // Override existing query filters (if provided!)
 | 
			
		||||
            fields[field].filters = Object.assign(fields[field].filters || {}, field_options.filters);
 | 
			
		||||
 | 
			
		||||
            // TODO: Refactor the following code with Object.assign (see above)
 | 
			
		||||
            for (var opt in field_options) {
 | 
			
		||||
 | 
			
		||||
            // "before" and "after" renders
 | 
			
		||||
            fields[field].before = field_options.before;
 | 
			
		||||
            fields[field].after = field_options.after;
 | 
			
		||||
                var val = field_options[opt];
 | 
			
		||||
 | 
			
		||||
            // Secondary modal options
 | 
			
		||||
            fields[field].secondary = field_options.secondary;
 | 
			
		||||
 | 
			
		||||
            // Edit callback
 | 
			
		||||
            fields[field].onEdit = field_options.onEdit;
 | 
			
		||||
 | 
			
		||||
            fields[field].multiline = field_options.multiline;
 | 
			
		||||
 | 
			
		||||
            // Custom help_text
 | 
			
		||||
            if (field_options.help_text) {
 | 
			
		||||
                fields[field].help_text = field_options.help_text;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Custom label
 | 
			
		||||
            if (field_options.label) {
 | 
			
		||||
                fields[field].label = field_options.label;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Custom placeholder
 | 
			
		||||
            if (field_options.placeholder) {
 | 
			
		||||
                fields[field].placeholder = field_options.placeholder;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Choices
 | 
			
		||||
            if (field_options.choices) {
 | 
			
		||||
                fields[field].choices = field_options.choices;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Group
 | 
			
		||||
            if (field_options.group) {
 | 
			
		||||
                fields[field].group = field_options.group;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Field prefix
 | 
			
		||||
            if (field_options.prefix) {
 | 
			
		||||
                fields[field].prefix = field_options.prefix;
 | 
			
		||||
            } else if (field_options.icon) {
 | 
			
		||||
                // Specify icon like 'fa-user'
 | 
			
		||||
                fields[field].prefix = `<span class='fas ${field_options.icon}'></span>`;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            fields[field].hidden = field_options.hidden;
 | 
			
		||||
 | 
			
		||||
            if (field_options.read_only != null) {
 | 
			
		||||
                fields[field].read_only = field_options.read_only;
 | 
			
		||||
                if (opt == 'filters') {
 | 
			
		||||
                    // ignore filters (see above)
 | 
			
		||||
                } else if (opt == 'icon') {
 | 
			
		||||
                    // Specify custom icon
 | 
			
		||||
                    fields[field].prefix = `<span class='fas ${val}'></span>`;
 | 
			
		||||
                } else {
 | 
			
		||||
                    fields[field][opt] = field_options[opt];
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@@ -477,8 +446,6 @@ function constructFormBody(fields, options) {
 | 
			
		||||
    if (options.current_group) {
 | 
			
		||||
        // Close out the current group
 | 
			
		||||
        html += `</div></div>`;
 | 
			
		||||
 | 
			
		||||
        console.log(`finally, ending group '${console.current_group}'`);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Create a new modal if one does not exists
 | 
			
		||||
@@ -878,6 +845,7 @@ function handleFormErrors(errors, fields, options) {
 | 
			
		||||
    non_field_errors.append(
 | 
			
		||||
        `<div class='alert alert-block alert-danger'>
 | 
			
		||||
            <b>{% trans "Form errors exist" %}</b>
 | 
			
		||||
            <span id='form-errors-info' class='float-right fas fa-info-circle icon-red'></span>
 | 
			
		||||
        </div>`
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
@@ -947,7 +915,10 @@ function addFieldCallbacks(fields, options) {
 | 
			
		||||
function addFieldCallback(name, field, options) {
 | 
			
		||||
 | 
			
		||||
    $(options.modal).find(`#id_${name}`).change(function() {
 | 
			
		||||
        field.onEdit(name, field, options);
 | 
			
		||||
 | 
			
		||||
        var value = getFormFieldValue(name, field, options);
 | 
			
		||||
 | 
			
		||||
        field.onEdit(value, name, field, options);
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -1429,8 +1400,6 @@ function constructField(name, parameters, options) {
 | 
			
		||||
    if (options.current_group && parameters.group != options.current_group) {
 | 
			
		||||
        html += `</div></div>`;
 | 
			
		||||
 | 
			
		||||
        console.log(`ending group '${options.current_group}'`);
 | 
			
		||||
 | 
			
		||||
        // Null out the current "group" so we can start a new one
 | 
			
		||||
        options.current_group = null;
 | 
			
		||||
    }
 | 
			
		||||
@@ -1446,8 +1415,6 @@ function constructField(name, parameters, options) {
 | 
			
		||||
        // Add HTML for the start of a separate panel
 | 
			
		||||
        if (parameters.group != options.current_group) {
 | 
			
		||||
 | 
			
		||||
            console.log(`starting group '${group}'`);
 | 
			
		||||
 | 
			
		||||
            html += `
 | 
			
		||||
            <div class='panel form-panel' id='form-panel-${group}' group='${group}'>
 | 
			
		||||
                <div class='panel-heading form-panel-heading' id='form-panel-heading-${group}'>`;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user