Commit 4ba8324e authored by Rafael Monnerat's avatar Rafael Monnerat

Render an text input if the value isn't Integer/Float

See merge request nexedi/slapos.core!533
parents c3922f77 8f339e65
/*jslint nomen: true, maxlen: 200, indent: 2, unparam: true*/
/*global window, rJS, domsugar, Boolean, btoa, atob */
/*global window, rJS, domsugar, Boolean, btoa, atob, Number */
(function (window, rJS, domsugar, Boolean, btoa, atob) {
(function (window, rJS, domsugar, Boolean, btoa, atob, Number) {
"use strict";
function render_selection(json_field, default_value, is_required, editable) {
......@@ -128,6 +128,34 @@
return input;
}
function testInteger(value) {
var parsed_value;
if (value === undefined || value === "") {
// Value is empty so it is ok to render the field
return true;
}
parsed_value = parseFloat(value);
if (!isNaN(parsed_value) && (Number.isInteger(parsed_value))) {
return true;
}
return false;
}
function testNumber(value) {
var parsed_value;
if (value === undefined || value === "") {
// Value is empty so it is ok to render the field
return true;
}
parsed_value = parseFloat(value);
if (!isNaN(parsed_value)) {
return true;
}
return false;
}
function render_field(json_field, default_value, is_required, editable) {
var input,
data_format,
......@@ -169,9 +197,9 @@
domsugar_input_dict.value = default_value;
}
if (json_field.type === "integer") {
if (json_field.type === "integer" && testInteger(default_value)) {
domsugar_input_dict.type = "number";
} else if (json_field.type === "number") {
} else if (json_field.type === "number" && testNumber(default_value)) {
domsugar_input_dict.type = "number";
domsugar_input_dict.step = "any";
} else if (json_field.type === "hidden") {
......@@ -641,4 +669,4 @@
});
}, {mutex: 'statechange'});
}(window, rJS, domsugar, Boolean, btoa, atob));
}(window, rJS, domsugar, Boolean, btoa, atob, Number));
......@@ -282,7 +282,7 @@
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>1008.808.61596.8721</string> </value>
<value> <string>1008.44146.47863.60757</string> </value>
</item>
<item>
<key> <string>state</string> </key>
......@@ -302,7 +302,7 @@
</tuple>
<state>
<tuple>
<float>1682619529.51</float>
<float>1685377921.85</float>
<string>UTC</string>
</tuple>
</state>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="_reconstructor" module="copy_reg"/>
</klass>
<tuple>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
<global name="object" module="__builtin__"/>
<none/>
</tuple>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>testSlapOSJSTestParameterEditorInvalidIntegerParameter</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>utf-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<html xmlns:tal="http://xml.zope.org/namespaces/tal" xmlns:metal="http://xml.zope.org/namespaces/metal">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Test Parameter editor Change Serialisation </title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr>
<td rowspan="1" colspan="3">Test Parameter editor (Change Serialisation)</td>
</tr>
</thead>
<tbody>
<tal:block metal:use-macro="here/Zuite_SlapOSParameterCommonTemplate/macros/init" />
<tr>
<td colspan="3"><b> Set URL for the software release </b></td>
</tr>
<tr>
<td>type</td>
<td>//input[@name='url_string']</td>
<td>${base_url}/web_site_module/hostingjs/hateoas/sample-software-schema/simpledemo/software.cfg</td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSCommonTemplate/macros/click_proceed" />
<tal:block metal:use-macro="here/Zuite_SlapOSParameterCommonTemplate/macros/wait_software_type_selection_default" />
<tr>
<td>waitForElementPresent</td>
<td>//input[@name="//simple-numeric-integer" and @type="number"]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//input[@name="//simple-numeric-integer" and @type="number"]</td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSParameterCommonTemplate/macros/show_raw_parameter" />
<tr>
<td>waitForElementPresent</td>
<td>//textarea[@name="text_content" and contains(text(), '&lt;instance/&gt;')]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//textarea[@name="text_content" and contains(text(), '&lt;instance/&gt;')]</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>//textarea[@name="text_content"]</td>
<td>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt;&lt;instance&gt;&lt;parameter id=&quot;simple-numeric-integer&quot;&gt;b&lt;/parameter&gt;&lt;parameter id=&quot;simple-numeric-float&quot;&gt;z&lt;/parameter&gt;&lt;/instance&gt;</td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSParameterCommonTemplate/macros/show_form_parameter" />
<tr>
<td>waitForElementPresent</td>
<td>//input[@name="//simple-numeric-integer" and @type="text"]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//input[@name="//simple-numeric-integer" and @type="text"]</td>
<td></td>
</tr>
<tr>
<td>assertValue</td>
<td>//input[@name="//simple-numeric-integer" and @type="text"]</td>
<td>b</td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@name="//simple-numeric-float" and @type="text"]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//input[@name="//simple-numeric-float" and @type="text"]</td>
<td></td>
</tr>
<tr>
<td>assertValue</td>
<td>//input[@name="//simple-numeric-float" and @type="text"]</td>
<td>z</td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSParameterCommonTemplate/macros/click_proceed_and_wait_for_hash" />
<tr>
<td>waitForTextPresent</td>
<td>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPGluc3RhbmNlPgogICAgPHBhcmFtZXRlciBpZ</td>
<td></td>
</tr>
<tr>
<td>assertTextPresent</td>
<td>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPGluc3RhbmNlPgogICAgPHBhcmFtZXRlciBpZD0ic2ltcGxlLW51bWVyaWMtaW50ZWdlciI+YjwvcGFyYW1ldGVyPgogICAgPHBhcmFtZXRlciBpZD0ic2ltcGxlLW51bWVyaWMtZmxvYXQiPno8L3BhcmFtZXRlcj4KPC9pbnN0YW5jZT4=</td>
<td></td>
</tr>
</tbody>
</table>
</body>
</html>
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="_reconstructor" module="copy_reg"/>
</klass>
<tuple>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
<global name="object" module="__builtin__"/>
<none/>
</tuple>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>testSlapOSJSTestParameterEditorInvalidJsonInXMLIntegerParameter</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>utf-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<html xmlns:tal="http://xml.zope.org/namespaces/tal" xmlns:metal="http://xml.zope.org/namespaces/metal">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Test Parameter editor Change Serialisation </title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr>
<td rowspan="1" colspan="3">Test Parameter editor (Change Serialisation)</td>
</tr>
</thead>
<tbody>
<tal:block metal:use-macro="here/Zuite_SlapOSParameterCommonTemplate/macros/init" />
<tr>
<td colspan="3"><b> Set URL for the software release </b></td>
</tr>
<tr>
<td>type</td>
<td>//input[@name='url_string']</td>
<td>${base_url}/web_site_module/hostingjs/hateoas/sample-software-schema/simpledemo/software.cfg</td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSCommonTemplate/macros/click_proceed" />
<tal:block metal:use-macro="here/Zuite_SlapOSParameterCommonTemplate/macros/wait_software_type_selection" />
<tal:block metal:use-macro="here/Zuite_SlapOSParameterCommonTemplate/macros/select_software_type_json_in_xml" />
<tr>
<td>waitForElementPresent</td>
<td>//input[@name="//simple-numeric-integer" and @type="number"]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//input[@name="//simple-numeric-integer" and @type="number"]</td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSParameterCommonTemplate/macros/show_raw_parameter" />
<tr>
<td>waitForElementPresent</td>
<td>//textarea[@name="text_content" and contains(text(), '{}')]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//textarea[@name="text_content" and contains(text(), '{}')]</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>//textarea[@name="text_content"]</td>
<td>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&lt;instance&gt;&lt;parameter id=&quot;_&quot;&gt;{&quot;simple-numeric-integer&quot;: &quot;b&quot;, &quot;simple-numeric-float&quot;: &quot;z&quot;}&lt;/parameter&gt;&lt;/instance&gt;</td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSParameterCommonTemplate/macros/show_form_parameter" />
<tr>
<td>waitForElementPresent</td>
<td>//input[@name="//simple-numeric-integer" and @type="text"]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//input[@name="//simple-numeric-integer" and @type="text"]</td>
<td></td>
</tr>
<tr>
<td>assertValue</td>
<td>//input[@name="//simple-numeric-integer" and @type="text"]</td>
<td>b</td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@name="//simple-numeric-float" and @type="text"]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//input[@name="//simple-numeric-float" and @type="text"]</td>
<td></td>
</tr>
<tr>
<td>assertValue</td>
<td>//input[@name="//simple-numeric-float" and @type="text"]</td>
<td>z</td>
</tr>
<tal:block metal:use-macro="here/Zuite_SlapOSParameterCommonTemplate/macros/click_proceed_and_wait_for_hash" />
<tr>
<td>waitForTextPresent</td>
<td>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPGluc3RhbmNlPgogICAgPHBhcmFtZXRlciBpZ</td>
<td></td>
</tr>
<tr>
<td>assertTextPresent</td>
<td>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPGluc3RhbmNlPgogICAgPHBhcmFtZXRlciBpZD0iXyI+ewogICAgInNpbXBsZS1udW1lcmljLWludGVnZXIiOiAiYiIsCiAgICAic2ltcGxlLW51bWVyaWMtZmxvYXQiOiAieiIKfTwvcGFyYW1ldGVyPgo8L2luc3RhbmNlPg==</td>
<td></td>
</tr>
</tbody>
</table>
</body>
</html>
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment