diff --git a/draft/library/wsf_js_widget/kernel/validator/wsf_agent_validator.e b/draft/library/wsf_js_widget/kernel/validator/wsf_agent_validator.e index 8aa58fda..779b4fd4 100644 --- a/draft/library/wsf_js_widget/kernel/validator/wsf_agent_validator.e +++ b/draft/library/wsf_js_widget/kernel/validator/wsf_agent_validator.e @@ -6,16 +6,22 @@ note class WSF_AGENT_VALIDATOR [G] + inherit + WSF_VALIDATOR [G] + rename + make as make_validator + end + create - make_with_agent + make feature {NONE} -- Initialization - make_with_agent (h:like handler; e: STRING) + make (h: like handler; e: STRING) do - make (e) + make_validator (e) handler := h end @@ -23,10 +29,9 @@ feature is_valid (input: G): BOOLEAN do - - Result := handler.item ( [input]) + Result := handler.item ([input]) end + handler: FUNCTION [ANY, TUPLE [G], BOOLEAN] - handler: FUNCTION[ANY,TUPLE[G],BOOLEAN] end diff --git a/draft/library/wsf_js_widget/kernel/validator/wsf_decimal_validator.e b/draft/library/wsf_js_widget/kernel/validator/wsf_decimal_validator.e index 5c7f2939..bfb3fcd7 100644 --- a/draft/library/wsf_js_widget/kernel/validator/wsf_decimal_validator.e +++ b/draft/library/wsf_js_widget/kernel/validator/wsf_decimal_validator.e @@ -10,13 +10,16 @@ class inherit WSF_REGEXP_VALIDATOR + rename + make as make_regexp_validator + end create - make_decimal_validator + make feature {NONE} -- Initialization - make_decimal_validator (e: STRING) + make (e: STRING) -- Initialize with specified error message which will be displayed on validation failure do make_regexp_validator ("^[0-9]+(\.[0-9]*)?$|^\.[0-9]+$", e) diff --git a/draft/library/wsf_js_widget/kernel/validator/wsf_email_validator.e b/draft/library/wsf_js_widget/kernel/validator/wsf_email_validator.e index 64dfee02..e5b64f41 100644 --- a/draft/library/wsf_js_widget/kernel/validator/wsf_email_validator.e +++ b/draft/library/wsf_js_widget/kernel/validator/wsf_email_validator.e @@ -10,13 +10,16 @@ class inherit WSF_REGEXP_VALIDATOR + rename + make as make_regexp_validator + end create - make_email_validator + make feature {NONE} -- Initialization - make_email_validator (e: STRING) + make (e: STRING) -- Initialize with specified error message which will be displayed on validation failure do make_regexp_validator ("^[a-zA-Z0-9._%%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$", e) diff --git a/draft/library/wsf_js_widget/kernel/validator/wsf_max_validator.e b/draft/library/wsf_js_widget/kernel/validator/wsf_max_validator.e index 2357f93f..ad472e1b 100644 --- a/draft/library/wsf_js_widget/kernel/validator/wsf_max_validator.e +++ b/draft/library/wsf_js_widget/kernel/validator/wsf_max_validator.e @@ -5,24 +5,26 @@ note revision: "$Revision$" class - WSF_MAX_VALIDATOR [G->FINITE[ANY]] + WSF_MAX_VALIDATOR [G -> FINITE [ANY]] inherit WSF_VALIDATOR [G] + rename + make as make_validator redefine state end create - make_max_validator + make feature {NONE} -- Initialization - make_max_validator (m: INTEGER; e: STRING) + make (m: INTEGER; e: STRING) -- Initialize with specified maximum and error message which will be displayed on validation failure do - make (e) + make_validator (e) max := m end diff --git a/draft/library/wsf_js_widget/kernel/validator/wsf_min_validator.e b/draft/library/wsf_js_widget/kernel/validator/wsf_min_validator.e index a496f500..1175c147 100644 --- a/draft/library/wsf_js_widget/kernel/validator/wsf_min_validator.e +++ b/draft/library/wsf_js_widget/kernel/validator/wsf_min_validator.e @@ -5,24 +5,26 @@ note revision: "$Revision$" class - WSF_MIN_VALIDATOR [G->FINITE[ANY]] + WSF_MIN_VALIDATOR [G -> FINITE [ANY]] inherit WSF_VALIDATOR [G] + rename + make as make_validator redefine state end create - make_min_validator + make feature {NONE} -- Initialization - make_min_validator (m: INTEGER; e: STRING) + make (m: INTEGER; e: STRING) -- Initialize with specified minimum and error message which will be displayed on validation failure do - make (e) + make_validator (e) min := m end diff --git a/draft/library/wsf_js_widget/kernel/validator/wsf_phone_number_validator.e b/draft/library/wsf_js_widget/kernel/validator/wsf_phone_number_validator.e index e5ca0cc4..3f377d12 100644 --- a/draft/library/wsf_js_widget/kernel/validator/wsf_phone_number_validator.e +++ b/draft/library/wsf_js_widget/kernel/validator/wsf_phone_number_validator.e @@ -10,6 +10,9 @@ class inherit WSF_REGEXP_VALIDATOR + rename + make as make_regexp_validator + end create make_with_message diff --git a/draft/library/wsf_js_widget/kernel/validator/wsf_regexp_validator.e b/draft/library/wsf_js_widget/kernel/validator/wsf_regexp_validator.e index ccb74c3e..0914acd3 100644 --- a/draft/library/wsf_js_widget/kernel/validator/wsf_regexp_validator.e +++ b/draft/library/wsf_js_widget/kernel/validator/wsf_regexp_validator.e @@ -10,19 +10,21 @@ class inherit WSF_VALIDATOR [STRING] + rename + make as make_validator redefine state end create - make_regexp_validator + make feature {NONE} -- Initialization - make_regexp_validator (r, e: STRING) + make (r, e: STRING) -- Initialize with specified regular expression and error message which will be displayed on validation failure do - make (e) + make_validator (e) regexp_string := r create regexp end diff --git a/draft/library/wsf_js_widget/kernel/webcontrol/wsf_form_control.e b/draft/library/wsf_js_widget/kernel/webcontrol/wsf_form_control.e index e30ea200..81fc8796 100644 --- a/draft/library/wsf_js_widget/kernel/webcontrol/wsf_form_control.e +++ b/draft/library/wsf_js_widget/kernel/webcontrol/wsf_form_control.e @@ -9,23 +9,41 @@ class inherit - WSF_STATELESS_MULTI_CONTROL [WSF_CONTROL] + WSF_STATELESS_MULTI_CONTROL [WSF_STATELESS_CONTROL] rename make as make_multi_control + redefine + add_control end WSF_VALIDATABLE create - make + make, make_with_label_width feature {NONE} -- Initialization make -- Initialize + do + make_with_label_width (2) + end + + make_with_label_width (w: INTEGER) do make_multi_control tag_name := "form" + label_width := w + end + +feature + + add_control (c: WSF_STATELESS_CONTROL) + do + Precursor (c) + if attached {WSF_FORM_ELEMENT_CONTROL[ANY]} c as fec then + fec.set_label_width (label_width) + end end feature -- Validation @@ -49,4 +67,8 @@ feature -- Validation is_valid: BOOLEAN -- Tells whether the last validation was valid +feature + + label_width: INTEGER + end diff --git a/draft/library/wsf_js_widget/kernel/webcontrol/wsf_form_element_control.e b/draft/library/wsf_js_widget/kernel/webcontrol/wsf_form_element_control.e index ee76d77a..e4b860b6 100644 --- a/draft/library/wsf_js_widget/kernel/webcontrol/wsf_form_element_control.e +++ b/draft/library/wsf_js_widget/kernel/webcontrol/wsf_form_element_control.e @@ -48,6 +48,13 @@ feature {NONE} -- Initialization error := "" end +feature + + set_label_width (w: INTEGER) + do + label_width := w + end + feature {WSF_PAGE_CONTROL, WSF_CONTROL} -- State management load_state (new_states: JSON_OBJECT) @@ -138,9 +145,9 @@ feature -- Implementation do body := "" if not label.is_empty then - body.append ("") + body.append ("") end - body.append ("
") + body.append ("
") body.append (value_control.render) body.append ("
") Result := render_tag (body, "") @@ -200,4 +207,6 @@ feature -- Properties error: STRING -- The error message that is displayed when client side validation fails + label_width: INTEGER + end diff --git a/examples/widgetapp/assets/widget.coffee b/examples/widgetapp/assets/widget.coffee index 0c0195dc..289bab4d 100644 --- a/examples/widgetapp/assets/widget.coffee +++ b/examples/widgetapp/assets/widget.coffee @@ -359,7 +359,7 @@ class WSF_INPUT_CONTROL extends WSF_CONTROL if state.text? @state['text'] = state.text @$el.val(state.text) - + class WSF_PASSWORD_CONTROL extends WSF_INPUT_CONTROL class WSF_NAVLIST_ITEM_CONTROL extends WSF_BUTTON_CONTROL @@ -489,7 +489,7 @@ class WSF_FORM_ELEMENT_CONTROL extends WSF_CONTROL if message.length>0 @$el.addClass("has-error") errordiv = $("
").addClass('help-block').addClass('validation').text(message) - @$el.find(".col-lg-10").append(errordiv) + @$el.children("div").append(errordiv) update: (state) -> if state.error? diff --git a/examples/widgetapp/assets/widget.js b/examples/widgetapp/assets/widget.js index 2a1ab483..abfe580e 100644 --- a/examples/widgetapp/assets/widget.js +++ b/examples/widgetapp/assets/widget.js @@ -817,7 +817,7 @@ WSF_FORM_ELEMENT_CONTROL = (function(_super) { if (message.length > 0) { this.$el.addClass("has-error"); errordiv = $("
").addClass('help-block').addClass('validation').text(message); - return this.$el.find(".col-lg-10").append(errordiv); + return this.$el.children("div").append(errordiv); } }; diff --git a/examples/widgetapp/sample_page.e b/examples/widgetapp/sample_page.e index 5b6d74e6..c7b70f15 100644 --- a/examples/widgetapp/sample_page.e +++ b/examples/widgetapp/sample_page.e @@ -35,13 +35,13 @@ feature --Number 1 create textbox1.make ("1") create n1_container.make ("Number1", textbox1) - n1_container.add_validator (create {WSF_DECIMAL_VALIDATOR}.make_decimal_validator ("Invalid Number")) + n1_container.add_validator (create {WSF_DECIMAL_VALIDATOR}.make ("Invalid Number")) n1_container.add_validator (create {OWN_VALIDATOR}.make_own) form.add_control (n1_container) --Number 2 create textbox2.make ("2") create n2_container.make ("Number2", textbox2) - n2_container.add_validator (create {WSF_DECIMAL_VALIDATOR}.make_decimal_validator ("Invalid Number")) + n2_container.add_validator (create {WSF_DECIMAL_VALIDATOR}.make ("Invalid Number")) form.add_control (n2_container) --Flag autocomplete create autocompletion1.make (create {FLAG_AUTOCOMPLETION}.make) @@ -61,8 +61,8 @@ feature cklist.add_control (create {WSF_CHECKBOX_CONTROL}.make ("Operating Systems", "os")) cklist.add_control (create {WSF_CHECKBOX_CONTROL}.make ("Formal Methods and Functional Programming", "fmfp")) create cats_container.make ("Categories", cklist) - cats_container.add_validator (create {WSF_MIN_VALIDATOR [LIST[STRING]]}.make_min_validator (1, "Choose at least one category")) - cats_container.add_validator (create {WSF_MAX_VALIDATOR [LIST[STRING]]}.make_max_validator (2, "Choose at most two category")) + cats_container.add_validator (create {WSF_MIN_VALIDATOR [LIST[STRING]]}.make (1, "Choose at least one category")) + cats_container.add_validator (create {WSF_MAX_VALIDATOR [LIST[STRING]]}.make (2, "Choose at most two category")) form.add_control (cats_container) --Button 1 create button1.make ("Update")