Redesign states and implement generated control_name

This commit is contained in:
YNH Webdev
2013-11-08 00:03:02 +01:00
parent c9102af0aa
commit 86339d8163
33 changed files with 433 additions and 153 deletions

View File

@@ -69,6 +69,15 @@ Mini =
{
render:template(t)
}
parseSuggestions = (data)->
for a of data
if a == 'suggestions'
return data[a]
else
d = parseSuggestions(data[a])
if d?
return d
return null
loaded = {}
lazy_load = (requirements,fn,that)->
if requirements.length == 0
@@ -97,7 +106,7 @@ lazy_load = (requirements,fn,that)->
done()
build_control = (control_name, state, control)->
$el = control.$el.find('[data-name='+control_name+']')
$el = control.$el.find('[data-name='+control_name+']').first()
#get control type
type = $el.data('type')
#create class
@@ -176,16 +185,31 @@ class WSF_CONTROL
console.log "Failed preforming action #{action.type}"
process_update: (new_states)->
if new_states[@control_name]?
@update(new_states[@control_name])
for control in @controls
if control?
control.process_update(new_states)
try
if new_states[@control_name]?
@update(new_states[@control_name])
for control in @controls
if control?
control.process_update(new_states[this.control_name]['controls'])
catch e
return
return
get_context_state : ()->
if @parent_control? and not @isolation
return @parent_control.get_context_state()
return @wrap(@control_name,@fullstate)
get_full_control_name: ()->
if @parent_control?
val = @parent_control.get_full_control_name()
if val != ""
val = val + "-"
return val+@control_name
return @control_name
wrap : (cname,state)->
ctrs = {}
ctrs[cname] = state
@@ -201,10 +225,18 @@ class WSF_CONTROL
@url + '?' + $.param(params)
trigger_callback: (control_name,event,event_parameter)->
@run_trigger_callback(@get_full_control_name(),event,event_parameter)
get_page:()->
if @parent_control?
return @parent_control.get_page()
return @
run_trigger_callback: (control_name,event,event_parameter)->
if @parent_control? and not @isolation
return @parent_control.trigger_callback(control_name,event,event_parameter)
return @parent_control.run_trigger_callback(control_name,event,event_parameter)
self = @
$.ajax
return $.ajax
type: 'POST',
url: @callback_url
control_name: control_name
@@ -219,7 +251,7 @@ class WSF_CONTROL
#Update all classes
if new_states.actions?
self.process_actions(new_states.actions)
self.process_update(new_states)
self.get_page().process_update(new_states)
#Simple event listener
@@ -257,6 +289,17 @@ class WSF_PAGE_CONTROL extends WSF_CONTROL
@initialize = lazy_load @requirements, @attach_events, @
@load_subcontrols()
process_update: (new_states)->
for control in @controls
if control?
control.process_update(new_states)
return
get_full_control_name: ()->
""
wrap : (cname,state)->
state
@@ -310,6 +353,16 @@ class WSF_INPUT_CONTROL extends WSF_CONTROL
if state.text?
@state['text'] = state.text
@$el.val(state.text)
class WSF_NAVLIST_ITEM_CONTROL extends WSF_BUTTON_CONTROL
update: (state) ->
super
if state.active?
if state.active
@$el.addClass("active")
else
@$el.removeClass("active")
class WSF_TEXTAREA_CONTROL extends WSF_INPUT_CONTROL
@@ -341,6 +394,7 @@ class WSF_AUTOCOMPLETE_CONTROL extends WSF_INPUT_CONTROL
attach_events: () ->
super
self = @
console.log @$el
@$el.typeahead({
name: @control_name
template: @state['template']
@@ -354,7 +408,7 @@ class WSF_AUTOCOMPLETE_CONTROL extends WSF_INPUT_CONTROL
event: 'autocomplete'
states: JSON.stringify(self.get_context_state())
filter: (parsedResponse) ->
parsedResponse[self.control_name]['suggestions']
return parseSuggestions(parsedResponse)
fn: ()->
self.trigger_callback(self.control_name, 'autocomplete')
})