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

module 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) {
                var result = form.onsubmit();
                if ((typeof result == 'undefined') || 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;

            var i:number = 0;

            for (var k in params) {
                if (params.hasOwnProperty(k)) {
                    var 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) {
            var bfHiddenInputFields = form.bfHiddenInputFields;
            if (bfHiddenInputFields !== null) {
                for (var 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