diff options
author | Kulanthaivel Palanichamy <kulanthaivel@codeaurora.org> | 2014-09-16 16:41:20 -0700 |
---|---|---|
committer | WebTech Code Review <code-review@localhost> | 2014-10-01 09:43:14 -0700 |
commit | 1cb7c13d941fec5adf6c907b7ab6e697bf9b5f4e (patch) | |
tree | 9c8bd61ba063526e332bc09b2c36b41195a90c93 /assets | |
parent | 025fed39721c4b5a19104807c7d2e46b11be2afe (diff) | |
download | android_packages_apps_Gello-1cb7c13d941fec5adf6c907b7ab6e697bf9b5f4e.tar.gz android_packages_apps_Gello-1cb7c13d941fec5adf6c907b7ab6e697bf9b5f4e.tar.bz2 android_packages_apps_Gello-1cb7c13d941fec5adf6c907b7ab6e697bf9b5f4e.zip |
Add support for WML <input> format attribute
Change-Id: I0a03a7144850f583a610129cb63ab7fe22d58c4c
Diffstat (limited to 'assets')
-rwxr-xr-x | assets/wml/swe_wml.js | 75 | ||||
-rwxr-xr-x | assets/wml/swe_wml.xsl | 4 |
2 files changed, 79 insertions, 0 deletions
diff --git a/assets/wml/swe_wml.js b/assets/wml/swe_wml.js index 5e98452a..9b350232 100755 --- a/assets/wml/swe_wml.js +++ b/assets/wml/swe_wml.js @@ -107,6 +107,7 @@ window.onload = function() replaceVariablesInTextContentBySpan(); fixTextContentInAnchorTasks(); initializeSelectElements(); + parseFormatAttributeInInputtElements(); scheduleTimerTaskIfNeeded(currentActiveCard); handleOnNavigationIntrinsicEvent(); }; @@ -408,6 +409,80 @@ function refreshVariablesInControlElements() } } +var validateInputValue = function(event) { + var input = event.target; + var pattern = new RegExp(input.dataset.wml_pattern, "g"); + var value = input.value; + if (!pattern.test(value)) { + input.value = input.dataset.old_value; + } else { + input.dataset.old_value = input.value; + } +} + +function parseFormatAttributeInInputtElements() { + + var regex = /(^(([\*]{1})|([0-9]*))([NnXxAa]{1})$)/g; + var symbols = "\!\"\#\$\%\&\'\(\)\*\+\,\\.\/\:\;\<\=\>\?\@\\\^\_\`\{\|\}\~\\-\\\\[\\]"; + + var inputElements = document.getElementsByClassName('wml_input'); + for(var i=0, l=inputElements.length; i<l; i++) { + var input = inputElements[i]; + var format = input.dataset.wml_format; + var res = regex.test(format); + regex.lastIndex = 0; + + if (res) { + var pattern = ""; + var fl = format.length; + var count = format.slice(0, fl-1); + switch(format.charAt(fl-1)) { + case 'A': + // WML-1.3: Entry of any uppercase letter, symbol, or punctuation character. Numeric characters are excluded. + // RegEx: Everthing else except lowercase letters and nummeric characters. + pattern = "[^a-z^0-9]"; + break; + case 'a': + // WML-1.3: Entry of any lowercase letter, symbol, or punctuation character. Numeric characters are excluded. + // RegEx: Everthing else except uppercase letters and nummeric characters. + pattern = "[^A-Z^0-9]"; + break; + case 'N': + // WML-1.3: entry of any numeric character. + pattern = "[0-9]"; + input.inputmode = "numeric"; + break; + case 'n': + // WML-1.3: entry of any numeric, symbol, or punctuation character. + pattern = "[0-9" + symbols + "]"; + break; + case 'X': + // WML-1.3: entry of any uppercase letter, numeric character, symbol, or punctuation character. + pattern = "[^a-z]"; + input.inputmode = "verbatim"; + break; + case 'x': + // WML-1.3: entry of any lowercase letter, numeric character, symbol, or punctuation character. + pattern = "[^A-Z]"; + input.inputmode = "verbatim"; + break; + } + + if (count == "*") { + pattern = "^(" + pattern + "*)$"; + } else { + input.maxLength = count; + input.pattern = ".{" + count + "}"; + pattern = "^(" + pattern + "{0," + count + "})$"; + } + input.dataset.wml_pattern = pattern; + input.setAttribute("required", ""); + input.addEventListener("input", validateInputValue); + console.log("WML input format = " + format + ", equivalent pattern = " + pattern); + } + } +} + function updateVariableInPostfields(form) { var postfields = currentActiveCard.getElementsByClassName('wml_postfield'); diff --git a/assets/wml/swe_wml.xsl b/assets/wml/swe_wml.xsl index f5918247..744c20ec 100755 --- a/assets/wml/swe_wml.xsl +++ b/assets/wml/swe_wml.xsl @@ -323,6 +323,10 @@ </xsl:choose> <xsl:choose><xsl:when test="@name"><xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute></xsl:when></xsl:choose> <xsl:choose><xsl:when test="@value"><xsl:attribute name="value"><xsl:value-of select="@value"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@maxlength"><xsl:attribute name="maxLength"><xsl:value-of select="@maxlength"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@format"><xsl:attribute name="data-wml_format"><xsl:value-of select="@format"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@emptyok = 'false'"><xsl:attribute name="required"></xsl:attribute></xsl:when></xsl:choose> + <xsl:attribute name="data-old_value"></xsl:attribute> </input> </xsl:template> |