From e48199a223798fba76496a8abb4371126c7312ac Mon Sep 17 00:00:00 2001 From: Rafael Ostertag <rafael.ostertag@math.uzh.ch> Date: Tue, 3 May 2016 08:24:45 +0200 Subject: [PATCH] Helper.stringToBool(): converts a string to a boolean value. Support for `data-hidden` and `data-disabled` attributes, which are used to initially configure form elements. --- javascript/src/Helper/NameSpaceFunctions.js | 28 ++++++++++++++ javascript/src/QfqForm.js | 43 +++++++++++++++++++++ mockup/elementconfiguration.html | 4 +- 3 files changed, 73 insertions(+), 2 deletions(-) diff --git a/javascript/src/Helper/NameSpaceFunctions.js b/javascript/src/Helper/NameSpaceFunctions.js index e4fb0da62..c4906e51c 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 50231abda..0c95e9f28 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 fad1efb7f..6569d7db8 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> -- GitLab