All Downloads are FREE. Search and download functionalities are using the official Maven repository.

META-INF.resources.butterfaces-ts.butterfaces-link.ts Maven / Gradle / Ivy

The newest version!
///

namespace ButterFaces {
    export class CommandLink {

        /**
         * Submit given form.
         * @param formId the target form id to submit
         * @param params a list of params to be added to form as hidden input fields
         * @param target the target of the form submission
         */
        static submitForm(formId: string, params: any, target: string) {
            let form: any = document.getElementById(formId);

            ButterFaces.CommandLink.addParametersAsHiddenFieldsToForm(form, params);
            let oldFormTarget = ButterFaces.CommandLink.setFormTarget(form, target);

            if (form.onsubmit) {
                let result = form.onsubmit();
                if (ButterFaces.Object.isNullOrUndefined(result) || result) {
                    form.submit();
                }
            } else {
                form.submit();
            }

            form.target = oldFormTarget;
            ButterFaces.CommandLink.removeHiddenFieldsFromForm(form);
        }

        private static addParametersAsHiddenFieldsToForm(form: any, params: any) {
            let bfHiddenInputFields = new Array();
            form.bfHiddenInputFields = bfHiddenInputFields;

            let i: number = 0;

            for (let k in params) {
                if (params.hasOwnProperty(k)) {
                    let p = document.createElement("input");
                    p.type = "hidden";
                    p.name = k;
                    p.value = params[k];
                    form.appendChild(p);
                    bfHiddenInputFields[i++] = p;
                }
            }
        }

        private static removeHiddenFieldsFromForm(form: any) {
            let bfHiddenInputFields = form.bfHiddenInputFields;
            if (bfHiddenInputFields !== null) {
                for (let i = 0; i < bfHiddenInputFields.length; i++) {
                    form.removeChild(bfHiddenInputFields[i]);
                }
            }
        }

        /**
         * Updates form target (if exists) and returns previous form target
         * @param form the torm to add the new target to
         * @param target the target to add (if not null)
         * @return the previous form target
         */
        private static setFormTarget(form: any, target: string): string {
            let previousTarget: string = form.target;

            if (target) {
                form.target = target;
            }

            return previousTarget;
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy