Merge branch 'widget' of github.com:souvarin/EWF into widget
Conflicts: library/server/wsf_html/wsf_html-safe.ecf
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
note
|
||||
description: "Summary description for {WSF_AUTOCOMPLETION}."
|
||||
author: ""
|
||||
date: "$Date$"
|
||||
revision: "$Revision$"
|
||||
|
||||
deferred class
|
||||
WSF_AUTOCOMPLETION
|
||||
|
||||
feature
|
||||
|
||||
autocompletion (input: STRING): JSON_ARRAY
|
||||
deferred
|
||||
end
|
||||
|
||||
template: detachable STRING
|
||||
|
||||
end
|
||||
@@ -0,0 +1,46 @@
|
||||
note
|
||||
description: "Summary description for {WSF_SIMPLE_AUTOCOMPLETION}."
|
||||
author: ""
|
||||
date: "$Date$"
|
||||
revision: "$Revision$"
|
||||
|
||||
class
|
||||
WSF_SIMPLE_AUTOCOMPLETION
|
||||
|
||||
inherit
|
||||
|
||||
WSF_AUTOCOMPLETION
|
||||
|
||||
create
|
||||
make
|
||||
|
||||
feature {NONE}
|
||||
|
||||
make (l: ITERABLE [STRING])
|
||||
do
|
||||
list := l
|
||||
end
|
||||
|
||||
feature -- Implementation
|
||||
|
||||
autocompletion (input: STRING): JSON_ARRAY
|
||||
local
|
||||
o: JSON_OBJECT
|
||||
do
|
||||
create Result.make_array
|
||||
across
|
||||
list as c
|
||||
loop
|
||||
if c.item.as_lower.has_substring (input.as_lower) then
|
||||
create o.make
|
||||
o.put (create {JSON_STRING}.make_json (c.item), "value")
|
||||
Result.add (o)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
feature
|
||||
|
||||
list: ITERABLE [STRING]
|
||||
|
||||
end
|
||||
@@ -0,0 +1,62 @@
|
||||
note
|
||||
description: "Summary description for {WSF_AUTOCOMPLETE_CONTROL}."
|
||||
author: ""
|
||||
date: "$Date$"
|
||||
revision: "$Revision$"
|
||||
|
||||
class
|
||||
WSF_AUTOCOMPLETE_CONTROL
|
||||
|
||||
inherit
|
||||
|
||||
WSF_INPUT_CONTROL
|
||||
redefine
|
||||
handle_callback,
|
||||
state
|
||||
end
|
||||
|
||||
create
|
||||
make_autocomplete, make_autocomplete_with_agent
|
||||
|
||||
feature {NONE} -- Creation
|
||||
|
||||
make_autocomplete (n: STRING; c: WSF_AUTOCOMPLETION)
|
||||
do
|
||||
make_autocomplete_with_agent (n, agent c.autocompletion)
|
||||
if attached c.template as t then
|
||||
template := t
|
||||
end
|
||||
end
|
||||
|
||||
make_autocomplete_with_agent (n: STRING; c: FUNCTION [ANY, TUPLE [STRING], JSON_ARRAY])
|
||||
do
|
||||
make_input (n, "")
|
||||
create_json_list := c
|
||||
template := "{{=value}}"
|
||||
end
|
||||
|
||||
feature -- State
|
||||
|
||||
state: JSON_OBJECT
|
||||
do
|
||||
Result := Precursor {WSF_INPUT_CONTROL}
|
||||
Result.put (create {JSON_STRING}.make_json (template), create {JSON_STRING}.make_json ("template"))
|
||||
end
|
||||
|
||||
feature -- Callback
|
||||
|
||||
handle_callback (cname: STRING; event: STRING)
|
||||
do
|
||||
Precursor {WSF_INPUT_CONTROL} (cname, event)
|
||||
if cname.is_equal (control_name) and event.is_equal ("autocomplete") then
|
||||
state_changes.put (create_json_list.item ([text]), create {JSON_STRING}.make_json ("suggestions"))
|
||||
end
|
||||
end
|
||||
|
||||
feature -- Autocomplete
|
||||
|
||||
create_json_list: FUNCTION [ANY, TUPLE [STRING], JSON_ARRAY]
|
||||
|
||||
template: STRING
|
||||
|
||||
end
|
||||
@@ -5,10 +5,11 @@ note
|
||||
revision: "$Revision$"
|
||||
|
||||
class
|
||||
WSF_max_VALIDATOR[G]
|
||||
WSF_max_VALIDATOR [G]
|
||||
|
||||
inherit
|
||||
WSF_VALIDATOR [LIST[G]]
|
||||
|
||||
WSF_VALIDATOR [LIST [G]]
|
||||
redefine
|
||||
state
|
||||
end
|
||||
@@ -18,7 +19,7 @@ create
|
||||
|
||||
feature {NONE}
|
||||
|
||||
make_max_validator (m:INTEGER; e: STRING)
|
||||
make_max_validator (m: INTEGER; e: STRING)
|
||||
do
|
||||
make (e)
|
||||
max := m
|
||||
@@ -26,10 +27,9 @@ feature {NONE}
|
||||
|
||||
feature -- Implementation
|
||||
|
||||
is_valid (input:LIST[G]): BOOLEAN
|
||||
is_valid (input: LIST [G]): BOOLEAN
|
||||
do
|
||||
Result:= input.count < max or input.count = max
|
||||
|
||||
Result := input.count < max or input.count = max
|
||||
end
|
||||
|
||||
feature
|
||||
|
||||
@@ -67,7 +67,7 @@ feature {WSF_PAGE_CONTROL, WSF_CONTROL} -- STATE MANAGEMENT
|
||||
feature --EVENT HANDLING
|
||||
|
||||
handle_callback (cname: STRING; event: STRING)
|
||||
-- Method called if any callback recived. In this method you can route the callback to the event handler
|
||||
-- Method called if any callback received. In this method you can route the callback to the event handler
|
||||
deferred
|
||||
end
|
||||
|
||||
|
||||
@@ -77,13 +77,15 @@ feature
|
||||
create states.make
|
||||
control.read_state (states)
|
||||
data := "<html><head>"
|
||||
data.append ("<link href=%"//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css%" rel=%"stylesheet%">")
|
||||
data.append ("<link href=%"/bootstrap.min.css%" rel=%"stylesheet%">")
|
||||
data.append ("<link href=%"/widget.css%" rel=%"stylesheet%">")
|
||||
data.append ("</head><body>")
|
||||
data.append (control.render)
|
||||
data.append ("<script type=%"text/javascript%">window.states=")
|
||||
data.append (states.representation)
|
||||
data.append (";</script>")
|
||||
data.append ("<script src=%"//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js%"></script>")
|
||||
data.append ("<script src=%"//cdnjs.cloudflare.com/ajax/libs/typeahead.js/0.9.3/typeahead.min.js%"></script>")
|
||||
data.append ("<script src=%"/widget.js%"></script>")
|
||||
data.append ("</body></html>")
|
||||
create page.make
|
||||
|
||||
Reference in New Issue
Block a user