diff --git a/javascript/src/Helper/NameSpaceFunctions.js b/javascript/src/Helper/NameSpaceFunctions.js index e4fb0da622d2044a5d3394eea4fa93b4a9d8bb66..c4906e51c6c065d8e45a45b5835944d34d79a598 100644 --- a/javascript/src/Helper/NameSpaceFunctions.js +++ b/javascript/src/Helper/NameSpaceFunctions.js @@ -15,4 +15,32 @@ QfqNS.Helper = QfqNS.Helper || {}; errorThrown, "error"); alert.show(); }; + + n.stringToBool = function (string) { + if (typeof string !== "string") { + return string; + } + var lowerCase = string.toLowerCase().trim(); + + switch (lowerCase) { + case "1": + case "yes": + case "y": + case "t": + case "true": + case "enabled": + case "enable": + return true; + case "0": + case "no": + case "n": + case "f": + case "false": + case "disabled": + case "enable": + return false; + default: + return false; + } + }; })(QfqNS.Helper); \ No newline at end of file diff --git a/javascript/src/QfqForm.js b/javascript/src/QfqForm.js index 50231abda1d267ff9b8982ba93e8a23ce25f6f53..0c95e9f2872a8dda27c2f9e0c394873327ae3fd6 100644 --- a/javascript/src/QfqForm.js +++ b/javascript/src/QfqForm.js @@ -69,10 +69,53 @@ var QfqNS = QfqNS || {}; function (obj) { n.Helper.showAjaxError(null, obj.textStatus, obj.errorThrown); }); + + var configurationData = this.readElementConfigurationData(); + + this.applyElementConfiguration(configurationData); }; n.QfqForm.prototype.on = n.EventEmitter.onMixin; + /** + * + * @private + */ + n.QfqForm.prototype.readElementConfigurationData = function () { + var $configuredElements = $("#" + this.formId + " [data-hidden],#" + this.formId + " [data-disabled]"); + + var configurationArray = []; + $configuredElements.each(function (index, element) { + try { + var $element = $(element); + if (!element.hasAttribute("name")) { + n.Log.warning("Element has configuration data, but no name. Skipping"); + return; + } + + var configuration = {}; + configuration['form-element'] = $element.attr('name'); + + var hiddenVal = $element.data('hidden'); + if (hiddenVal !== undefined) { + configuration.hidden = n.Helper.stringToBool(hiddenVal); + } + + var disabledVal = $element.data('disabled'); + if (disabledVal !== undefined) { + configuration.disabled = n.Helper.stringToBool(disabledVal); + } + + configurationArray.push(configuration); + } catch (e) { + n.Log.error(e.message); + } + }); + + return configurationArray; + + }; + /** * @public * @param bsTabs diff --git a/mockup/elementconfiguration.html b/mockup/elementconfiguration.html index fad1efb7fda9ea4b5869bd23f32e8a1902802591..6569d7db84788423ef69b30badd08bfa4934b1d6 100644 --- a/mockup/elementconfiguration.html +++ b/mockup/elementconfiguration.html @@ -89,7 +89,7 @@ </div> <div class="col-md-6"> - <input id="text" type="text" class="form-control" name="text"> + <input id="text" type="text" class="form-control" name="text" data-disabled="true"> </div> </div> @@ -141,7 +141,7 @@ <div class="col-md-6"> <div class="checkbox"> <label> - <input type="checkbox" id="checkbox" name="checkbox"> + <input type="checkbox" id="checkbox" name="checkbox" data-hidden="no"> </label> <p class="help-block"></p>