Redesign states and implement generated control_name
This commit is contained in:
@@ -44,7 +44,7 @@ feature -- Change
|
||||
local
|
||||
li: WSF_MULTI_CONTROL [WSF_STATELESS_CONTROL]
|
||||
do
|
||||
create li.make_with_tag_name (control_name + "_item" + dropdown_menu.controls.count.out, "li")
|
||||
create li.make_with_tag_name ("li")
|
||||
li.add_control (c)
|
||||
dropdown_menu.add_control (li)
|
||||
end
|
||||
|
||||
@@ -21,9 +21,9 @@ create
|
||||
|
||||
feature {NONE} -- Initialization
|
||||
|
||||
make (n: STRING; a_columns: ITERABLE [WSF_GRID_COLUMN]; a_datasource: WSF_DATASOURCE [G])
|
||||
make (a_columns: ITERABLE [WSF_GRID_COLUMN]; a_datasource: WSF_DATASOURCE [G])
|
||||
do
|
||||
make_repeater (n, a_datasource)
|
||||
make_repeater (a_datasource)
|
||||
columns := a_columns
|
||||
end
|
||||
|
||||
|
||||
@@ -19,9 +19,9 @@ create
|
||||
|
||||
feature {NONE}
|
||||
|
||||
make (n: STRING; ds: WSF_PAGABLE_DATASOURCE [G])
|
||||
make (ds: WSF_PAGABLE_DATASOURCE [G])
|
||||
do
|
||||
make_control (n, "ul")
|
||||
make_control ( "ul")
|
||||
add_class ("pagination")
|
||||
datasource := ds
|
||||
datasource.set_on_update_page_agent (agent update)
|
||||
@@ -48,10 +48,10 @@ feature {WSF_PAGE_CONTROL, WSF_CONTROL} -- State management
|
||||
|
||||
feature --Event handling
|
||||
|
||||
handle_callback (cname: STRING; event: STRING; event_parameter: detachable STRING)
|
||||
handle_callback (cname: LIST[STRING]; event: STRING; event_parameter: detachable STRING)
|
||||
-- Handle goto/next/prev events
|
||||
do
|
||||
if Current.control_name.same_string (cname) then
|
||||
if Current.control_name.same_string (cname[1]) then
|
||||
if event.same_string ("next") then
|
||||
datasource.set_page (datasource.page + 1)
|
||||
elseif event.same_string ("prev") then
|
||||
|
||||
@@ -20,15 +20,15 @@ inherit
|
||||
|
||||
feature {NONE} -- Initialization
|
||||
|
||||
make (n: STRING; a_datasource: WSF_DATASOURCE [G])
|
||||
make ( a_datasource: WSF_DATASOURCE [G])
|
||||
local
|
||||
p: WSF_PAGINATION_CONTROL [G]
|
||||
do
|
||||
make_multi_control (n)
|
||||
make_multi_control
|
||||
datasource := a_datasource
|
||||
datasource.set_on_update_agent (agent update)
|
||||
if attached {WSF_PAGABLE_DATASOURCE [G]} a_datasource as ds then
|
||||
create p.make (n + "_paging", ds)
|
||||
create p.make ( ds)
|
||||
add_control (p)
|
||||
pagination_control := p
|
||||
end
|
||||
|
||||
@@ -22,19 +22,19 @@ create
|
||||
|
||||
feature {NONE} -- Initialization
|
||||
|
||||
make (n: STRING; c: WSF_AUTOCOMPLETION)
|
||||
make (c: WSF_AUTOCOMPLETION)
|
||||
-- Initialize with specified name and autocompletion
|
||||
do
|
||||
make_with_agent (n, agent c.autocompletion)
|
||||
make_with_agent ( agent c.autocompletion)
|
||||
if attached c.template as t then
|
||||
template := t
|
||||
end
|
||||
end
|
||||
|
||||
make_with_agent (n: STRING; c: FUNCTION [ANY, TUPLE [STRING], JSON_ARRAY])
|
||||
make_with_agent (c: FUNCTION [ANY, TUPLE [STRING], JSON_ARRAY])
|
||||
-- Initialize with specified name and autocompletion function
|
||||
do
|
||||
make_input (n, "")
|
||||
make_input ( "")
|
||||
create_json_list := c
|
||||
template := "{{=value}}"
|
||||
end
|
||||
@@ -49,10 +49,10 @@ feature -- State
|
||||
|
||||
feature -- Callback
|
||||
|
||||
handle_callback (cname: STRING; event: STRING; event_parameter: detachable STRING)
|
||||
handle_callback (cname: LIST[STRING]; event: STRING; event_parameter: detachable STRING)
|
||||
do
|
||||
Precursor {WSF_INPUT_CONTROL} (cname, event, event_parameter)
|
||||
if cname.same_string (control_name) and event.same_string ("autocomplete") then
|
||||
if cname[1].same_string (control_name) and event.same_string ("autocomplete") then
|
||||
state_changes.put (create_json_list.item ([text]), "suggestions")
|
||||
end
|
||||
end
|
||||
|
||||
@@ -19,10 +19,10 @@ create
|
||||
|
||||
feature {NONE} -- Initialization
|
||||
|
||||
make (n, l, c: STRING)
|
||||
make (l, c: STRING)
|
||||
-- Initialize with specified control name,
|
||||
do
|
||||
make_value_control (n, "input")
|
||||
make_value_control ( "input")
|
||||
label := l
|
||||
checked_value := c
|
||||
end
|
||||
@@ -54,9 +54,9 @@ feature --Event handling
|
||||
change_event := e
|
||||
end
|
||||
|
||||
handle_callback (cname: STRING; event: STRING; event_parameter: detachable STRING)
|
||||
handle_callback (cname: LIST[STRING]; event: STRING; event_parameter: detachable STRING)
|
||||
do
|
||||
if Current.control_name.same_string (cname) and attached change_event as cevent then
|
||||
if Current.control_name.same_string (cname[1]) and attached change_event as cevent then
|
||||
if event.same_string ("change") then
|
||||
cevent.call (Void)
|
||||
end
|
||||
|
||||
@@ -28,10 +28,10 @@ create
|
||||
|
||||
feature {NONE} -- Initializaton
|
||||
|
||||
make (n: STRING)
|
||||
make
|
||||
-- Initialize with specified control name
|
||||
do
|
||||
make_multi_control (n)
|
||||
make_multi_control
|
||||
end
|
||||
|
||||
feature -- Implementation
|
||||
|
||||
@@ -19,10 +19,10 @@ create
|
||||
|
||||
feature {NONE} -- Initialization
|
||||
|
||||
make (n, v: STRING)
|
||||
make (v: STRING)
|
||||
-- Initialize with specified name and value
|
||||
do
|
||||
make_value_control (n, "input")
|
||||
make_value_control ( "input")
|
||||
type := "text"
|
||||
text := v
|
||||
end
|
||||
@@ -53,9 +53,9 @@ feature --Event handling
|
||||
change_event := e
|
||||
end
|
||||
|
||||
handle_callback (cname: STRING; event: STRING; event_parameter: detachable STRING)
|
||||
do
|
||||
if Current.control_name.same_string (cname) and attached change_event as cevent then
|
||||
handle_callback (cname: LIST[STRING]; event: STRING; event_parameter: detachable STRING)
|
||||
do
|
||||
if Current.control_name.same_string (cname[1]) and attached change_event as cevent then
|
||||
if event.same_string ("change") then
|
||||
cevent.call (Void)
|
||||
end
|
||||
|
||||
@@ -19,10 +19,10 @@ create
|
||||
|
||||
feature {NONE} -- Initialization
|
||||
|
||||
make (n, v: STRING)
|
||||
make (v: STRING)
|
||||
-- Initialize with specified control name and text
|
||||
do
|
||||
make_input (n, v)
|
||||
make_input (v)
|
||||
type := "password"
|
||||
end
|
||||
|
||||
|
||||
@@ -21,10 +21,10 @@ create
|
||||
|
||||
feature {NONE} -- Initialization
|
||||
|
||||
make (n, t: STRING)
|
||||
make (t: STRING)
|
||||
-- Initialize with specified control name and text to be displayed in this textarea
|
||||
do
|
||||
make_input (n, t)
|
||||
make_input ( t)
|
||||
tag_name := "textarea"
|
||||
end
|
||||
|
||||
|
||||
@@ -21,10 +21,10 @@ create
|
||||
|
||||
feature {NONE} -- Initialization
|
||||
|
||||
make (n: STRING)
|
||||
make
|
||||
--Initialize
|
||||
do
|
||||
make_multi_control (n)
|
||||
make_multi_control
|
||||
active_set := false
|
||||
add_class ("navbar navbar-inverse navbar-fixed-top")
|
||||
create nav.make_with_tag_name ("ul")
|
||||
@@ -35,10 +35,10 @@ feature {NONE} -- Initialization
|
||||
nav_right.add_class ("nav navbar-nav navbar-right")
|
||||
end
|
||||
|
||||
make_with_brand (n, b: STRING)
|
||||
make_with_brand ( b: STRING)
|
||||
-- Initialize with specified brand string
|
||||
do
|
||||
make (n)
|
||||
make
|
||||
brand := b
|
||||
end
|
||||
|
||||
@@ -85,7 +85,7 @@ feature -- Change
|
||||
local
|
||||
li: WSF_MULTI_CONTROL [WSF_STATELESS_CONTROL]
|
||||
do
|
||||
create li.make_with_tag_name (control_name + "_link" + nav.controls.count.out, "li")
|
||||
create li.make_with_tag_name ("li")
|
||||
li.add_class ("dropdown")
|
||||
li.add_control (l)
|
||||
li.add_control (d)
|
||||
@@ -97,7 +97,7 @@ feature -- Change
|
||||
local
|
||||
li: WSF_MULTI_CONTROL [WSF_STATELESS_CONTROL]
|
||||
do
|
||||
create li.make_with_tag_name (control_name + "_link" + nav.controls.count.out, "li")
|
||||
create li.make_with_tag_name ("li")
|
||||
li.add_class ("dropdown")
|
||||
li.add_control (l)
|
||||
li.add_control (d)
|
||||
@@ -107,12 +107,9 @@ feature -- Change
|
||||
add_list_element_right (l: WSF_STATELESS_CONTROL)
|
||||
-- Add element in li tag to right aligned part of navbar
|
||||
local
|
||||
name: STRING
|
||||
li: WSF_MULTI_CONTROL [WSF_STATELESS_CONTROL]
|
||||
do
|
||||
name := control_name + "_rightlink";
|
||||
name := name + nav_right.controls.count.out
|
||||
create li.make_with_tag_name (name, "li")
|
||||
create li.make_with_tag_name ("li")
|
||||
li.add_control (l)
|
||||
add_element_right (li)
|
||||
end
|
||||
@@ -122,7 +119,7 @@ feature -- Change
|
||||
local
|
||||
li: WSF_MULTI_CONTROL [WSF_STATELESS_CONTROL]
|
||||
do
|
||||
create li.make_with_tag_name (control_name + "_link" + nav.controls.count.out, "li")
|
||||
create li.make_with_tag_name ("li")
|
||||
li.add_control (l)
|
||||
add_element (li)
|
||||
end
|
||||
|
||||
@@ -9,7 +9,7 @@ class
|
||||
|
||||
inherit
|
||||
|
||||
WSF_MULTI_CONTROL [WSF_STATELESS_CONTROL]
|
||||
WSF_MULTI_CONTROL [WSF_NAVLIST_ITEM_CONTROL]
|
||||
rename
|
||||
make as make_multi_control
|
||||
end
|
||||
@@ -19,9 +19,9 @@ create
|
||||
|
||||
feature {NONE} -- Initialization
|
||||
|
||||
make (n: STRING)
|
||||
make
|
||||
do
|
||||
make_multi_control (n)
|
||||
make_multi_control
|
||||
add_class ("list-group")
|
||||
end
|
||||
|
||||
@@ -31,7 +31,16 @@ feature -- Change
|
||||
local
|
||||
c: WSF_NAVLIST_ITEM_CONTROL
|
||||
do
|
||||
create c.make (control_name + "_item_" + controls.count.out, link, text)
|
||||
create c.make (link, text)
|
||||
add_control(c)
|
||||
end
|
||||
|
||||
add_button (event:attached like {WSF_BUTTON_CONTROL}.click_event; text: STRING)
|
||||
local
|
||||
c: WSF_NAVLIST_ITEM_CONTROL
|
||||
do
|
||||
create c.make ("", text)
|
||||
c.set_click_event(event)
|
||||
add_control(c)
|
||||
end
|
||||
|
||||
|
||||
@@ -12,6 +12,9 @@ inherit
|
||||
WSF_BUTTON_CONTROL
|
||||
rename
|
||||
make as make_button
|
||||
redefine
|
||||
set_state,
|
||||
state
|
||||
end
|
||||
|
||||
create
|
||||
@@ -19,12 +22,41 @@ create
|
||||
|
||||
feature {NONE} -- Initialization
|
||||
|
||||
make (n, link, t: STRING)
|
||||
make ( link, t: STRING)
|
||||
do
|
||||
make_control (n, "a")
|
||||
make_control ("a")
|
||||
text := t
|
||||
attributes := "href=%"" + link + "%"";
|
||||
add_class ("list-group-item")
|
||||
end
|
||||
feature {WSF_PAGE_CONTROL, WSF_CONTROL} -- State management
|
||||
|
||||
set_state (new_state: JSON_OBJECT)
|
||||
-- Restore text from json
|
||||
do
|
||||
Precursor {WSF_BUTTON_CONTROL}(new_state)
|
||||
if attached {JSON_BOOLEAN} new_state.item ("active") as new_active then
|
||||
active := new_active.item
|
||||
end
|
||||
end
|
||||
|
||||
state: WSF_JSON_OBJECT
|
||||
-- Return state which contains the current text and if there is an event handle attached
|
||||
do
|
||||
Result := Precursor {WSF_BUTTON_CONTROL}
|
||||
Result.put_boolean (true, "active")
|
||||
end
|
||||
|
||||
feature -- Change
|
||||
|
||||
set_active (a: BOOLEAN)
|
||||
-- Set text of that button
|
||||
do
|
||||
active := a
|
||||
state_changes.replace (create {JSON_BOOLEAN}.make_boolean (a), "active")
|
||||
end
|
||||
feature -- Properties
|
||||
|
||||
active: BOOLEAN
|
||||
|
||||
end
|
||||
|
||||
@@ -19,18 +19,18 @@ create
|
||||
|
||||
feature {NONE} -- Initialization
|
||||
|
||||
make (n: STRING)
|
||||
make
|
||||
-- Initialize with specified control name
|
||||
do
|
||||
make_control (n, "div")
|
||||
make_control ("div")
|
||||
add_class ("progress")
|
||||
progress := 0
|
||||
end
|
||||
|
||||
make_with_source (n: STRING; p: WSF_PROGRESSSOURCE)
|
||||
make_with_source ( p: WSF_PROGRESSSOURCE)
|
||||
-- Initialize with specified control name and progresssource
|
||||
do
|
||||
make (n)
|
||||
make
|
||||
progress_source := p
|
||||
end
|
||||
|
||||
@@ -51,9 +51,9 @@ feature -- State handling
|
||||
|
||||
feature -- Event handling
|
||||
|
||||
handle_callback (cname: STRING; event: STRING; event_parameter: detachable STRING)
|
||||
handle_callback (cname: LIST[STRING]; event: STRING; event_parameter: detachable STRING)
|
||||
do
|
||||
if cname.same_string (control_name) and event.same_string ("progress_fetch") then
|
||||
if cname[1].same_string (control_name) and event.same_string ("progress_fetch") then
|
||||
state_changes.put_integer (progress_value, "progress")
|
||||
end
|
||||
end
|
||||
|
||||
@@ -19,10 +19,10 @@ create
|
||||
|
||||
feature {NONE} -- Initialization
|
||||
|
||||
make (n: STRING)
|
||||
make
|
||||
-- Initialize with specified name
|
||||
do
|
||||
make_control (n, "div")
|
||||
make_control ( "div")
|
||||
add_class ("carousel slide")
|
||||
create list.make_with_tag_name ( "ol")
|
||||
list.add_class ("carousel-indicators")
|
||||
@@ -43,7 +43,7 @@ feature -- State handling
|
||||
|
||||
feature -- Callback
|
||||
|
||||
handle_callback (cname, event: STRING; event_parameter: detachable STRING)
|
||||
handle_callback (cname: LIST[STRING]; event: STRING; event_parameter: detachable STRING)
|
||||
do
|
||||
-- Do nothing here
|
||||
end
|
||||
@@ -91,7 +91,7 @@ feature -- Change
|
||||
cl: STRING
|
||||
item: WSF_MULTI_CONTROL [WSF_STATELESS_CONTROL]
|
||||
do
|
||||
create item.make (control_name + "_item" + slide_wrapper.controls.count.out)
|
||||
create item.make ()
|
||||
item.add_class ("item")
|
||||
item.add_control (c)
|
||||
if attached caption as capt then
|
||||
|
||||
@@ -19,13 +19,13 @@ create
|
||||
|
||||
feature {NONE} -- Initialization
|
||||
|
||||
make (n: STRING; t: STRING)
|
||||
make (a_text: STRING)
|
||||
-- Initialize with specified control name and text
|
||||
do
|
||||
make_control (n, "button")
|
||||
make_control ("button")
|
||||
add_class ("btn")
|
||||
add_class ("btn-default")
|
||||
text := t
|
||||
text := a_text
|
||||
end
|
||||
|
||||
feature {WSF_PAGE_CONTROL, WSF_CONTROL} -- State management
|
||||
@@ -54,9 +54,9 @@ feature --Event handling
|
||||
click_event := e
|
||||
end
|
||||
|
||||
handle_callback (cname: STRING; event: STRING; event_parameter: detachable STRING)
|
||||
handle_callback (cname: LIST[STRING]; event: STRING; event_parameter: detachable STRING)
|
||||
do
|
||||
if Current.control_name.same_string (cname) and attached click_event as cevent then
|
||||
if Current.control_name.same_string (cname[1]) and attached click_event as cevent then
|
||||
cevent.call (Void)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -18,14 +18,13 @@ inherit
|
||||
|
||||
feature {NONE} -- Initialization
|
||||
|
||||
make (n, a_tag_name: STRING)
|
||||
make (a_tag_name: STRING)
|
||||
-- Initialize with specified control name and tag
|
||||
require
|
||||
not n.is_empty
|
||||
not a_tag_name.is_empty
|
||||
do
|
||||
make_stateless_control (a_tag_name)
|
||||
control_name := n
|
||||
create control_name_prefix.make_empty
|
||||
create state_changes.make
|
||||
create actions.make_array
|
||||
ensure
|
||||
@@ -140,7 +139,7 @@ feature -- Rendering
|
||||
loop
|
||||
css_classes_string := css_classes_string + " " + c.item
|
||||
end
|
||||
l_attributes := "id=%"" + control_name + "%" data-name=%"" + control_name + "%" data-type=%"" + a_generator + "%" "
|
||||
l_attributes := " data-name=%"" + control_name + "%" data-type=%"" + a_generator + "%" "
|
||||
if attached attrs as a then
|
||||
l_attributes := l_attributes + a
|
||||
end
|
||||
@@ -152,7 +151,7 @@ feature -- Rendering
|
||||
|
||||
feature -- Event handling
|
||||
|
||||
handle_callback (cname: STRING; event: STRING; event_parameter: detachable STRING)
|
||||
handle_callback (cname: LIST [STRING]; event: STRING; event_parameter: detachable STRING)
|
||||
-- Method called if any callback received. In this method you can route the callback to the event handler
|
||||
deferred
|
||||
end
|
||||
@@ -170,6 +169,24 @@ feature -- Properties
|
||||
|
||||
actions: JSON_ARRAY
|
||||
|
||||
control_id: INTEGER assign set_control_id
|
||||
|
||||
set_control_id (d: INTEGER)
|
||||
do
|
||||
control_id := d
|
||||
end
|
||||
|
||||
control_name: STRING
|
||||
do
|
||||
Result := control_name_prefix + control_id.out
|
||||
end
|
||||
|
||||
control_name_prefix: STRING assign set_control_name_prefix
|
||||
|
||||
|
||||
set_control_name_prefix (p: STRING)
|
||||
do
|
||||
control_name_prefix := p
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -21,10 +21,10 @@ create
|
||||
|
||||
feature {NONE} -- Initialization
|
||||
|
||||
make (n: STRING)
|
||||
make
|
||||
-- Initialize
|
||||
do
|
||||
make_multi_control (n)
|
||||
make_multi_control
|
||||
tag_name := "form"
|
||||
end
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ feature {NONE} -- Initialization
|
||||
make_with_validators (a_label: STRING; c: WSF_VALUE_CONTROL [G]; v: LIST [WSF_VALIDATOR [G]])
|
||||
-- Initialize form element control with a specific label, value control and list of validators
|
||||
do
|
||||
make_control (c.control_name + "_container", "div")
|
||||
make_control ("div")
|
||||
add_class ("form-group")
|
||||
if attached {WSF_INPUT_CONTROL} c or attached {WSF_TEXTAREA_CONTROL} c then
|
||||
c.add_class ("form-control")
|
||||
@@ -100,14 +100,15 @@ feature {WSF_PAGE_CONTROL, WSF_CONTROL} -- State management
|
||||
|
||||
feature -- Event handling
|
||||
|
||||
handle_callback (cname: STRING; event: STRING; event_parameter: detachable STRING)
|
||||
handle_callback (cname: LIST[STRING]; event: STRING; event_parameter: detachable STRING)
|
||||
-- Pass callback to subcontrols
|
||||
do
|
||||
if cname.same_string (control_name) then
|
||||
if cname[1].same_string (control_name) then
|
||||
cname.go_i_th (1)
|
||||
cname.remove
|
||||
if event.same_string ("validate") then
|
||||
validate
|
||||
end
|
||||
else
|
||||
value_control.handle_callback (cname, event, event_parameter)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -17,10 +17,10 @@ create
|
||||
|
||||
feature {NONE} -- Initialization
|
||||
|
||||
make (n, t, v: STRING)
|
||||
make (t, v: STRING)
|
||||
-- Initialize
|
||||
do
|
||||
make_value_control (n, t)
|
||||
make_value_control ( t)
|
||||
html := v
|
||||
end
|
||||
|
||||
@@ -43,7 +43,7 @@ feature {WSF_PAGE_CONTROL, WSF_CONTROL} -- State management
|
||||
|
||||
feature --Event handling
|
||||
|
||||
handle_callback (cname: STRING; event: STRING; event_parameter: detachable STRING)
|
||||
handle_callback (cname: LIST[STRING]; event: STRING; event_parameter: detachable STRING)
|
||||
do
|
||||
end
|
||||
|
||||
|
||||
@@ -30,9 +30,9 @@ feature -- Add control
|
||||
|
||||
add_control_with_offset (c: WSF_STATELESS_CONTROL; span, offset: INTEGER)
|
||||
local
|
||||
div: WSF_MULTI_CONTROL [WSF_STATELESS_CONTROL]
|
||||
div: WSF_STATELESS_MULTI_CONTROL [WSF_STATELESS_CONTROL]
|
||||
do
|
||||
create div.make (control_name + "_item_" + controls.count.out)
|
||||
create div.make_with_tag_name ("div")
|
||||
div.add_class ("col-md-" + span.out + " col-md-offset-" + offset.out)
|
||||
div.add_control (c)
|
||||
add_control_raw (div)
|
||||
@@ -40,9 +40,9 @@ feature -- Add control
|
||||
|
||||
add_control (c: WSF_STATELESS_CONTROL; span: INTEGER)
|
||||
local
|
||||
div: WSF_MULTI_CONTROL [WSF_STATELESS_CONTROL]
|
||||
div: WSF_STATELESS_MULTI_CONTROL [WSF_STATELESS_CONTROL]
|
||||
do
|
||||
create div.make (control_name + "_item_" + controls.count.out)
|
||||
create div.make_with_tag_name ("div")
|
||||
div.add_class ("col-md-" + span.out)
|
||||
div.add_control (c)
|
||||
add_control_raw (div)
|
||||
|
||||
@@ -23,16 +23,16 @@ create
|
||||
|
||||
feature {NONE} -- Initialization
|
||||
|
||||
make (n: STRING)
|
||||
make
|
||||
-- Initialize with specified control name and default tag "div"
|
||||
do
|
||||
make_with_tag_name (n, "div")
|
||||
make_with_tag_name ("div")
|
||||
end
|
||||
|
||||
make_with_tag_name (n, t: STRING)
|
||||
make_with_tag_name (t: STRING)
|
||||
-- Initialize with specified control name and tag
|
||||
do
|
||||
make_control (n, t)
|
||||
make_control (t)
|
||||
controls := create {ARRAYED_LIST [G]}.make (5);
|
||||
end
|
||||
|
||||
@@ -52,7 +52,7 @@ feature {WSF_PAGE_CONTROL, WSF_CONTROL} -- State management
|
||||
across
|
||||
controls as c
|
||||
loop
|
||||
if attached {WSF_STATELESS_MULTI_CONTROL[WSF_STATELESS_CONTROL]} c.item as cont then
|
||||
if attached {WSF_STATELESS_MULTI_CONTROL [WSF_STATELESS_CONTROL]} c.item as cont then
|
||||
cont.load_subcontrol_state (newstate)
|
||||
elseif attached {WSF_CONTROL} c.item as cont then
|
||||
if attached {JSON_OBJECT} newstate.item (cont.control_name) as value_state then
|
||||
@@ -83,7 +83,7 @@ feature {WSF_PAGE_CONTROL, WSF_CONTROL} -- State management
|
||||
across
|
||||
controls as c
|
||||
loop
|
||||
if attached {WSF_STATELESS_MULTI_CONTROL[WSF_STATELESS_CONTROL]} c.item as mcont then
|
||||
if attached {WSF_STATELESS_MULTI_CONTROL [WSF_STATELESS_CONTROL]} c.item as mcont then
|
||||
mcont.read_subcontrol_state (controls_state)
|
||||
elseif attached {WSF_CONTROL} c.item as cont then
|
||||
controls_state.put (cont.full_state, cont.control_name)
|
||||
@@ -93,12 +93,32 @@ feature {WSF_PAGE_CONTROL, WSF_CONTROL} -- State management
|
||||
|
||||
read_state_changes (states: WSF_JSON_OBJECT)
|
||||
-- Read states_changes in subcontrols
|
||||
local
|
||||
sub_states: WSF_JSON_OBJECT
|
||||
control_state: WSF_JSON_OBJECT
|
||||
do
|
||||
Precursor (states)
|
||||
create sub_states.make
|
||||
read_subcontrol_state_changes (sub_states)
|
||||
if sub_states.count>0 then
|
||||
if attached {JSON_OBJECT}states.item (control_name) as changes then
|
||||
changes.put (sub_states, "controls")
|
||||
else
|
||||
create control_state.make
|
||||
control_state.put (sub_states, "controls")
|
||||
states.put (control_state, control_name)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
read_subcontrol_state_changes (states: WSF_JSON_OBJECT)
|
||||
do
|
||||
across
|
||||
controls as c
|
||||
loop
|
||||
if attached {WSF_CONTROL} c.item as cont then
|
||||
if attached {WSF_STATELESS_MULTI_CONTROL [WSF_STATELESS_CONTROL]} c.item as cont then
|
||||
cont.read_subcontrol_state_changes (states)
|
||||
elseif attached {WSF_CONTROL} c.item as cont then
|
||||
cont.read_state_changes (states)
|
||||
end
|
||||
end
|
||||
@@ -112,11 +132,12 @@ feature {WSF_PAGE_CONTROL, WSF_CONTROL} -- State management
|
||||
|
||||
feature -- Event handling
|
||||
|
||||
handle_callback (cname: STRING; event: STRING; event_parameter: detachable STRING)
|
||||
handle_callback (cname: LIST [STRING]; event: STRING; event_parameter: detachable STRING)
|
||||
-- Pass callback to subcontrols
|
||||
do
|
||||
if equal (cname, control_name) then
|
||||
else
|
||||
if equal (cname [1], control_name) then
|
||||
cname.go_i_th (1)
|
||||
cname.remove
|
||||
across
|
||||
controls as c
|
||||
loop
|
||||
@@ -143,12 +164,15 @@ feature -- Rendering
|
||||
end
|
||||
end
|
||||
|
||||
feature -- Change
|
||||
feature
|
||||
|
||||
add_control (c: G)
|
||||
-- Add a control to this multi control
|
||||
do
|
||||
controls.extend (c)
|
||||
if attached {WSF_CONTROL} c as d then
|
||||
d.control_id := controls.count
|
||||
end
|
||||
end
|
||||
|
||||
feature -- Properties
|
||||
|
||||
@@ -13,6 +13,7 @@ inherit
|
||||
rename
|
||||
make as make_control
|
||||
redefine
|
||||
control_name,
|
||||
full_state,
|
||||
read_state_changes
|
||||
end
|
||||
@@ -22,7 +23,8 @@ feature {NONE} -- Initialization
|
||||
make (req: WSF_REQUEST; res: WSF_RESPONSE)
|
||||
-- Initialize
|
||||
do
|
||||
make_control (req.request_time_stamp.out, "body")
|
||||
control_name:=req.request_time_stamp.out
|
||||
make_control ( "body")
|
||||
request := req
|
||||
response := res
|
||||
initialize_controls
|
||||
@@ -73,7 +75,7 @@ feature -- Implementation
|
||||
if attached {JSON_OBJECT} json_parser.parse_json as sp then
|
||||
set_state (sp)
|
||||
end
|
||||
handle_callback (event_control_name, event, event_parameter)
|
||||
handle_callback (event_control_name.split ('-'), event, event_parameter)
|
||||
create states_changes.make
|
||||
read_state_changes (states_changes)
|
||||
response.put_header ({HTTP_STATUS_CODE}.ok, <<["Content-Type", "application/json; charset=ISO-8859-1"]>>)
|
||||
@@ -145,7 +147,7 @@ feature -- Implementation
|
||||
|
||||
feature -- Event handling
|
||||
|
||||
handle_callback (cname: STRING; event: STRING; event_parameter: detachable STRING)
|
||||
handle_callback (cname: LIST[STRING]; event: STRING; event_parameter: detachable STRING)
|
||||
-- Forward callback to control
|
||||
do
|
||||
control.handle_callback (cname, event, event_parameter)
|
||||
@@ -178,6 +180,8 @@ feature {WSF_PAGE_CONTROL, WSF_CONTROL} -- State management
|
||||
Result.put (controls_state, "controls")
|
||||
Result.put (state, "state")
|
||||
end
|
||||
feature
|
||||
control_name:STRING
|
||||
|
||||
feature {NONE} -- Root control
|
||||
|
||||
|
||||
@@ -37,6 +37,12 @@ feature -- Change
|
||||
css_classes.force (c)
|
||||
end
|
||||
|
||||
remove_class (cla: STRING)
|
||||
-- Add a css class to this control
|
||||
do
|
||||
css_classes.prune (cla)
|
||||
end
|
||||
|
||||
feature -- Rendering
|
||||
|
||||
render_tag (body: STRING; attrs: detachable STRING): STRING
|
||||
|
||||
@@ -6,10 +6,17 @@ note
|
||||
|
||||
class
|
||||
WSF_STATELESS_MULTI_CONTROL [G -> WSF_STATELESS_CONTROL]
|
||||
|
||||
inherit
|
||||
|
||||
WSF_MULTI_CONTROL [G]
|
||||
rename
|
||||
make_with_tag_name as make_with_tag_name_and_name
|
||||
redefine
|
||||
add_control,
|
||||
set_control_name_prefix,
|
||||
handle_callback,
|
||||
set_control_id
|
||||
end
|
||||
|
||||
create
|
||||
@@ -17,15 +24,67 @@ create
|
||||
|
||||
feature {NONE} -- Initialization
|
||||
|
||||
make_with_tag_name(t:STRING)
|
||||
do
|
||||
make_with_tag_name_and_name("",t)
|
||||
end
|
||||
make_with_tag_name (t: STRING)
|
||||
do
|
||||
make_with_tag_name_and_name (t)
|
||||
end
|
||||
|
||||
make_tag_less
|
||||
do
|
||||
make_with_tag_name_and_name ("", "")
|
||||
make_with_tag_name_and_name ("")
|
||||
stateless := True
|
||||
end
|
||||
|
||||
feature
|
||||
|
||||
|
||||
|
||||
set_control_id (d: INTEGER)
|
||||
do
|
||||
control_id := d
|
||||
set_subcontrol_prefixes
|
||||
end
|
||||
|
||||
set_control_name_prefix (p: STRING)
|
||||
do
|
||||
control_name_prefix := p
|
||||
set_subcontrol_prefixes
|
||||
end
|
||||
|
||||
set_subcontrol_prefixes
|
||||
do
|
||||
across
|
||||
controls as e
|
||||
loop
|
||||
if attached {WSF_CONTROL} e.item as el then
|
||||
el.control_name_prefix := control_name_prefix + control_id.out + "_"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
feature
|
||||
|
||||
add_control (c: G)
|
||||
-- Add a control to this multi control
|
||||
do
|
||||
controls.extend (c)
|
||||
if attached {WSF_CONTROL} c as d then
|
||||
d.control_id := controls.count
|
||||
d.control_name_prefix := control_name_prefix + control_id.out + "_"
|
||||
end
|
||||
end
|
||||
feature -- Event handling
|
||||
|
||||
handle_callback (cname: LIST [STRING]; event: STRING; event_parameter: detachable STRING)
|
||||
-- Pass callback to subcontrols
|
||||
do
|
||||
across
|
||||
controls as c
|
||||
loop
|
||||
if attached {WSF_CONTROL} c.item as cont then
|
||||
cont.handle_callback (cname, event, event_parameter)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user