Autocompletion
This commit is contained in:
@@ -113,45 +113,17 @@ class WSF_INPUT_CONTROL extends WSF_CONTROL
|
|||||||
window.states[@control_name]['text'] = state.text
|
window.states[@control_name]['text'] = state.text
|
||||||
@$el.val(state.text)
|
@$el.val(state.text)
|
||||||
|
|
||||||
class WSF_TEXTAREA_CONTROL extends WSF_CONTROL
|
class WSF_TEXTAREA_CONTROL extends WSF_INPUT_CONTROL
|
||||||
|
|
||||||
|
class WSF_AUTOCOMPLETE_CONTROL extends WSF_INPUT_CONTROL
|
||||||
attach_events: () ->
|
attach_events: () ->
|
||||||
self = @
|
super
|
||||||
@$el.change () ->
|
@$el.typeahead({
|
||||||
self.change()
|
name: @control_name
|
||||||
|
local: ["one",
|
||||||
change: () ->
|
"two",
|
||||||
window.states[@control_name]['text'] = @$el.val()
|
"three"]
|
||||||
if window.states[@control_name]['callback_change']
|
})
|
||||||
trigger_callback(@control_name, 'change')
|
|
||||||
@trigger('change')
|
|
||||||
|
|
||||||
value:()->
|
|
||||||
return @$el.val()
|
|
||||||
|
|
||||||
update: (state) ->
|
|
||||||
if state.text?
|
|
||||||
window.states[@control_name]['text'] = state.text
|
|
||||||
@$el.val(state.text)
|
|
||||||
|
|
||||||
class WSF_TEXTAREA_CONTROL extends WSF_CONTROL
|
|
||||||
attach_events: () ->
|
|
||||||
self = @
|
|
||||||
@$el.change () ->
|
|
||||||
self.change()
|
|
||||||
|
|
||||||
change: () ->
|
|
||||||
window.states[@control_name]['text'] = @$el.val()
|
|
||||||
if window.states[@control_name]['callback_change']
|
|
||||||
trigger_callback(@control_name, 'change')
|
|
||||||
@trigger('change')
|
|
||||||
|
|
||||||
value:()->
|
|
||||||
return @$el.val()
|
|
||||||
|
|
||||||
update: (state) ->
|
|
||||||
if state.text?
|
|
||||||
window.states[@control_name]['text'] = state.text
|
|
||||||
@$el.val(state.text)
|
|
||||||
|
|
||||||
class WSF_CHECKBOX_CONTROL extends WSF_CONTROL
|
class WSF_CHECKBOX_CONTROL extends WSF_CONTROL
|
||||||
attach_events: ()->
|
attach_events: ()->
|
||||||
@@ -257,6 +229,7 @@ typemap =
|
|||||||
"WSF_BUTTON_CONTROL":WSF_BUTTON_CONTROL
|
"WSF_BUTTON_CONTROL":WSF_BUTTON_CONTROL
|
||||||
"WSF_INPUT_CONTROL":WSF_INPUT_CONTROL
|
"WSF_INPUT_CONTROL":WSF_INPUT_CONTROL
|
||||||
"WSF_TEXTAREA_CONTROL":WSF_TEXTAREA_CONTROL
|
"WSF_TEXTAREA_CONTROL":WSF_TEXTAREA_CONTROL
|
||||||
|
"WSF_AUTOCOMPLETE_CONTROL":WSF_AUTOCOMPLETE_CONTROL
|
||||||
"WSF_CHECKBOX_CONTROL":WSF_CHECKBOX_CONTROL
|
"WSF_CHECKBOX_CONTROL":WSF_CHECKBOX_CONTROL
|
||||||
"WSF_FORM_ELEMENT_CONTROL": WSF_FORM_ELEMENT_CONTROL
|
"WSF_FORM_ELEMENT_CONTROL": WSF_FORM_ELEMENT_CONTROL
|
||||||
"WSF_HTML_CONTROL": WSF_HTML_CONTROL
|
"WSF_HTML_CONTROL": WSF_HTML_CONTROL
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
note
|
||||||
|
description: "Summary description for {WSF_AUTOCOMPLETION}."
|
||||||
|
author: ""
|
||||||
|
date: "$Date$"
|
||||||
|
revision: "$Revision$"
|
||||||
|
|
||||||
|
deferred class
|
||||||
|
WSF_AUTOCOMPLETION
|
||||||
|
|
||||||
|
feature
|
||||||
|
|
||||||
|
autocompletion (input: STRING): JSON_ARRAY
|
||||||
|
deferred
|
||||||
|
end
|
||||||
|
|
||||||
|
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: LIST [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: LIST [STRING]
|
||||||
|
|
||||||
|
end
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
note
|
||||||
|
description: "Summary description for {WSF_AUTOCOMPLETE_CONTROL}."
|
||||||
|
author: ""
|
||||||
|
date: "$Date$"
|
||||||
|
revision: "$Revision$"
|
||||||
|
|
||||||
|
class
|
||||||
|
WSF_AUTOCOMPLETE_CONTROL
|
||||||
|
|
||||||
|
inherit
|
||||||
|
|
||||||
|
WSF_INPUT_CONTROL
|
||||||
|
redefine
|
||||||
|
handle_callback
|
||||||
|
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)
|
||||||
|
end
|
||||||
|
|
||||||
|
make_autocomplete_with_agent (n: STRING; c: FUNCTION [ANY, TUPLE [STRING], JSON_ARRAY])
|
||||||
|
do
|
||||||
|
make_input (n, "")
|
||||||
|
create_json_list := c
|
||||||
|
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]
|
||||||
|
|
||||||
|
end
|
||||||
@@ -5,10 +5,11 @@ note
|
|||||||
revision: "$Revision$"
|
revision: "$Revision$"
|
||||||
|
|
||||||
class
|
class
|
||||||
WSF_max_VALIDATOR[G]
|
WSF_max_VALIDATOR [G]
|
||||||
|
|
||||||
inherit
|
inherit
|
||||||
WSF_VALIDATOR [LIST[G]]
|
|
||||||
|
WSF_VALIDATOR [LIST [G]]
|
||||||
redefine
|
redefine
|
||||||
state
|
state
|
||||||
end
|
end
|
||||||
@@ -18,7 +19,7 @@ create
|
|||||||
|
|
||||||
feature {NONE}
|
feature {NONE}
|
||||||
|
|
||||||
make_max_validator (m:INTEGER; e: STRING)
|
make_max_validator (m: INTEGER; e: STRING)
|
||||||
do
|
do
|
||||||
make (e)
|
make (e)
|
||||||
max := m
|
max := m
|
||||||
@@ -26,10 +27,9 @@ feature {NONE}
|
|||||||
|
|
||||||
feature -- Implementation
|
feature -- Implementation
|
||||||
|
|
||||||
is_valid (input:LIST[G]): BOOLEAN
|
is_valid (input: LIST [G]): BOOLEAN
|
||||||
do
|
do
|
||||||
Result:= input.count < max or input.count = max
|
Result := input.count < max or input.count = max
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
feature
|
feature
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ feature {WSF_PAGE_CONTROL, WSF_CONTROL} -- STATE MANAGEMENT
|
|||||||
feature --EVENT HANDLING
|
feature --EVENT HANDLING
|
||||||
|
|
||||||
handle_callback (cname: STRING; event: STRING)
|
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
|
deferred
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -84,6 +84,7 @@ feature
|
|||||||
data.append (states.representation)
|
data.append (states.representation)
|
||||||
data.append (";</script>")
|
data.append (";</script>")
|
||||||
data.append ("<script src=%"//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js%"></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 ("<script src=%"/widget.js%"></script>")
|
||||||
data.append ("</body></html>")
|
data.append ("</body></html>")
|
||||||
create page.make
|
create page.make
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
<cluster name="webcontrol" location=".\webcontrol\">
|
<cluster name="webcontrol" location=".\webcontrol\">
|
||||||
<cluster name="validators" location=".\webcontrol\validators\"/>
|
<cluster name="validators" location=".\webcontrol\validators\"/>
|
||||||
<cluster name="input" location=".\webcontrol\input\"/>
|
<cluster name="input" location=".\webcontrol\input\"/>
|
||||||
|
<cluster name="autocompletions" location="\home\severin\Documents\EWF\EWF\library\server\wsf_html\webcontrol\autocompletions\"/>
|
||||||
</cluster>
|
</cluster>
|
||||||
<cluster name="widget" location=".\widget\" recursive="true"/>
|
<cluster name="widget" location=".\widget\" recursive="true"/>
|
||||||
</target>
|
</target>
|
||||||
|
|||||||
Reference in New Issue
Block a user