diff --git a/examples/widgetapp/sample_page.e b/examples/widgetapp/sample_page.e index dc8ea289..513cbe84 100644 --- a/examples/widgetapp/sample_page.e +++ b/examples/widgetapp/sample_page.e @@ -27,13 +27,13 @@ feature create textbox1.make_text ("txtBox1", "1") create textbox2.make_text ("txtBox2", "2") create button1.make_button ("sample_button1", "SUM") - create textbox_result.make_text ("txtBox3", "") + create textbox_result.make_textarea ("txtBox3", "") button1.set_click_event (agent handle_click) create form.make_form_control ("panel") form.add_control (create {WSF_FORM_ELEMENT_CONTROL[STRING]}.make_form_element("Number1",textbox1)) - form.add_control (textbox2) + form.add_control (create {WSF_FORM_ELEMENT_CONTROL[STRING]}.make_form_element("Number2",textbox2)) form.add_control (button1) - form.add_control (textbox_result) + form.add_control (create {WSF_FORM_ELEMENT_CONTROL[STRING]}.make_form_element("Result",textbox_result)) control := form end @@ -52,6 +52,6 @@ feature textbox2: WSF_TEXT_CONTROL - textbox_result: WSF_TEXT_CONTROL + textbox_result: WSF_TEXTAREA_CONTROL end diff --git a/examples/widgetapp/widget.coffee b/examples/widgetapp/widget.coffee index fc334f39..cfa7045a 100644 --- a/examples/widgetapp/widget.coffee +++ b/examples/widgetapp/widget.coffee @@ -27,7 +27,8 @@ controls = {} class WSF_BUTTON_CONTROL extends WSF_CONTROL attach_events: ()-> self = @ - @$el.click ()-> + @$el.click (e)-> + e.preventDefault() self.click() click: ()-> if window.states[@control_name]['callback_click'] diff --git a/examples/widgetapp/widget.js b/examples/widgetapp/widget.js index b27e13ef..ffea70e7 100644 --- a/examples/widgetapp/widget.js +++ b/examples/widgetapp/widget.js @@ -53,7 +53,8 @@ WSF_BUTTON_CONTROL.prototype.attach_events = function() { var self; self = this; - return this.$el.click(function() { + return this.$el.click(function(e) { + e.preventDefault(); return self.click(); }); }; diff --git a/library/server/wsf_html/webcontrol/wsf_control.e b/library/server/wsf_html/webcontrol/wsf_control.e index d9afa4cb..d6fd106f 100644 --- a/library/server/wsf_html/webcontrol/wsf_control.e +++ b/library/server/wsf_html/webcontrol/wsf_control.e @@ -92,7 +92,7 @@ feature css_classes_string := " class=%"" + css_classes_string + "%"" end Result := "<" + tag_name + " data-name=%"" + control_name + "%" data-type=%"" + generator + "%" " + attributes + css_classes_string - if body.is_empty then + if body.is_empty and not tag_name.is_equal("textarea") then Result := Result + " />" else Result := Result + " >" + body + "" diff --git a/library/server/wsf_html/webcontrol/wsf_form_element_control.e b/library/server/wsf_html/webcontrol/wsf_form_element_control.e index f18f4678..edf35709 100644 --- a/library/server/wsf_html/webcontrol/wsf_form_element_control.e +++ b/library/server/wsf_html/webcontrol/wsf_form_element_control.e @@ -12,22 +12,21 @@ inherit WSF_CONTROL create - make_form_element, - make_form_element_with_validators + make_form_element, make_form_element_with_validators feature {NONE} - make_form_element (a_label:STRING; c: WSF_VALUE_CONTROL [G]) + make_form_element (a_label: STRING; c: WSF_VALUE_CONTROL [G]) local a_validators: LINKED_LIST [WSF_VALIDATOR [G]] do create a_validators.make - make_form_element_with_validators(a_label,c,a_validators) + make_form_element_with_validators (a_label, c, a_validators) end make_form_element_with_validators (a_label: STRING; c: WSF_VALUE_CONTROL [G]; v: LINKED_LIST [WSF_VALIDATOR [G]]) do - make (c.control_name+"_container", "div") + make (c.control_name + "_container", "div") add_class ("form-group") c.add_class ("form-control") value_control := c @@ -64,6 +63,15 @@ feature --Implementation value_control.handle_callback (cname, event) end + read_state_changes (states: JSON_OBJECT) + -- Add a new entry in the `states_changes` JSON object with the `control_name` as key and the `state` as value + do + if state_changes.count > 0 then + states.put (state_changes, create {JSON_STRING}.make_json (control_name)) + end + value_control.read_state_changes (states) + end + render: STRING local body: STRING diff --git a/library/server/wsf_html/webcontrol/wsf_page_control.e b/library/server/wsf_html/webcontrol/wsf_page_control.e index 1c21c4f3..615118b9 100644 --- a/library/server/wsf_html/webcontrol/wsf_page_control.e +++ b/library/server/wsf_html/webcontrol/wsf_page_control.e @@ -77,6 +77,8 @@ feature create states.make control.read_state (states) data := "" + data.append ("") + data.append ("") data.append (control.render) data.append ("") data.append ("") data.append ("") - data.append ("") data.append ("") create page.make page.put_header ({HTTP_STATUS_CODE}.ok, <<["Content-Type", "text/html"]>>)