Resetting original value of fields of a form

606 Views Asked by At

I have this resetFormOnNewButtonClick method that resets the form on button click.. but unfortunately this method is only resetting the form and not reseting the original value of fields because of which my form is always dirty.. can someone help me with resetting the original value of fields?

 resetFormOnNewButtonClick: function (form, me) {
    if (!form) return;
    var durationControls = form.query('durationfield');
    var newDurationControls = [];
    var tmZone = Webvision.utils.CommonUtils.getEntryTimeZone(form.xtype);
    if (durationControls) {
        for (var i = 0; i < durationControls.length; i++) {
            newDurationControls.push(Ext.clone(durationControls[i].getDefaultValue() != null ? durationControls[i].getDefaultValue() : durationControls[i].getValue()));
        }
    }
    var fieldItems = form.getForm().getFields().items;
    form.isBtnPressed = true;
    var filterFields = [];
    for (var i = 0; i < fieldItems.length; i++) {
        if (fieldItems[i].up('panel').up('#itemsPresenterBar') == undefined) {
            filterFields.push(fieldItems[i]);
        }
        fieldItems[i].resetOriginalValue();
        if (fieldItems[i].xtype == "oatitimezone") {
            fieldItems[i].originalValue = tmZone;
        }
    }
    form.getForm().getFields().items = filterFields;
    errorView = form.down('#errorList');
    form.customParams = null;
    form.getForm().reset();

    if (Wv.CommonUtils.getIfAvailable(form, ".updateSubsriberEntityKey")) {
        form.updateSubsriberEntityKey(null);
    }

    if (newDurationControls) {
        for (var i = 0; i < newDurationControls.length; i++) {
            if (durationControls[i]) {
                durationControls[i].setCustomTimeZone(tmZone);
                durationControls[i].setValue(newDurationControls[i]);
            }
        }
    }

    if (form.getController().onNewButtonClick instanceof Function) {
        form.getController().onNewButtonClick();
    }

    form.IsEnableReasonForChange=false;
    form.lookupReference('copyBtn').hide();
    form.lookupReference('deleteBtn').hide();
    form.setConfig('isEditableMode', false);
    form.getForm().clearInvalid();
    delete form.getController().hasSavePressed;
    errorView.setErrors([]);
    me.fireEvent('onNewClick', form);

    var applicationConfig = Wv.GlobalVar.getApplicationConfig();
    var extensionDisplay = applicationConfig.ExtensionDisplays;
    for (var k in extensionDisplay) {
        var value = form.query('[xtype=' + extensionDisplay[k] + ']');
        if (value && value.length > 0) {
            var extension = value[0];
            if (extension && extension.events.onnewbuttonclick) {
                extension.fireEvent("onNewButtonClick", form);
            }
        }
    }
}
1

There are 1 best solutions below

0
jmmr On

Depending on how you are loading / binding to the form the trackResetOnLoad config may be what you're looking for.

trackResetOnLoad