changed examples, added listener methods
This commit is contained in:
@@ -30,7 +30,7 @@ class JsonYatta
|
||||
#
|
||||
# @result JsonType
|
||||
#
|
||||
getRootElement: ()->
|
||||
getSharedObject: ()->
|
||||
@root_element
|
||||
|
||||
#
|
||||
@@ -77,6 +77,9 @@ class JsonYatta
|
||||
val : (name, content, mutable)->
|
||||
@root_element.val(name, content, mutable)
|
||||
|
||||
on: ()->
|
||||
@root_element.on arguments...
|
||||
|
||||
#
|
||||
# @see JsonType.value
|
||||
#
|
||||
|
||||
@@ -39,7 +39,7 @@ class TextYatta
|
||||
#
|
||||
# @result Word
|
||||
#
|
||||
getRootElement: ()->
|
||||
getSharedObject: ()->
|
||||
@root_element.val()
|
||||
|
||||
#
|
||||
@@ -72,31 +72,34 @@ class TextYatta
|
||||
# @see JsonType.val
|
||||
#
|
||||
val: ()->
|
||||
@getRootElement().val()
|
||||
@getSharedObject().val()
|
||||
|
||||
#
|
||||
# @see Word.insertText
|
||||
#
|
||||
insertText: (pos, content)->
|
||||
@getRootElement().insertText pos, content
|
||||
@getSharedObject().insertText pos, content
|
||||
|
||||
#
|
||||
# @see Word.deleteText
|
||||
#
|
||||
deleteText: (pos, length)->
|
||||
@getRootElement().deleteText pos, length
|
||||
@getSharedObject().deleteText pos, length
|
||||
|
||||
#
|
||||
# @see Word.bind
|
||||
#
|
||||
bind: (textarea)->
|
||||
@getRootElement().bind textarea
|
||||
@getSharedObject().bind textarea
|
||||
|
||||
#
|
||||
# @see Word.replaceText
|
||||
#
|
||||
replaceText: (text)->
|
||||
@getRootElement().replaceText text
|
||||
@getSharedObject().replaceText text
|
||||
|
||||
on: ()->
|
||||
@root_element.on arguments...
|
||||
|
||||
|
||||
module.exports = TextYatta
|
||||
|
||||
@@ -32,25 +32,35 @@ module.exports = (HB)->
|
||||
# @param {String} event Name of the event.
|
||||
# @param {Function} f f is executed in case the event fires.
|
||||
#
|
||||
on: (event, f)->
|
||||
on: (events, f)->
|
||||
@event_listeners ?= {}
|
||||
@event_listeners[event] ?= []
|
||||
@event_listeners[event].push f
|
||||
if events.constructor isnt [].constructor
|
||||
events = [events]
|
||||
for e in events
|
||||
@event_listeners[e] ?= []
|
||||
@event_listeners[e].push f
|
||||
|
||||
deleteListener: (events, f)->
|
||||
if events.constructor isnt [].constructor
|
||||
events = [events]
|
||||
for e in events
|
||||
if @event_listeners?[e]?
|
||||
@event_listeners[e] = @event_listeners[e].filter (g)->
|
||||
f isnt g
|
||||
|
||||
#
|
||||
# Fire an event.
|
||||
# TODO: Do something with timeouts. You don't want this to fire for every operation (e.g. insert).
|
||||
#
|
||||
callEvent: (event, args)->
|
||||
callEvent: (event, args...)->
|
||||
if @event_listeners?[event]?
|
||||
for f in @event_listeners[event]
|
||||
f.call @, event, args
|
||||
f.call @, event, args...
|
||||
|
||||
#
|
||||
# Set the parent of this operation.
|
||||
#
|
||||
setParent: (o)->
|
||||
@parent = o
|
||||
setParent: (@parent)->
|
||||
|
||||
#
|
||||
# Get the parent of this operation.
|
||||
|
||||
@@ -77,7 +77,10 @@ module.exports = (HB)->
|
||||
uid_end.op_number = "_#{uid_end.op_number}_RM_#{@name}_end"
|
||||
beg = HB.addOperation(new types.Delimiter uid_beg, undefined, uid_end).execute()
|
||||
end = HB.addOperation(new types.Delimiter uid_end, beg, undefined).execute()
|
||||
@map_manager.map[@name] = HB.addOperation(new ReplaceManager undefined, uid_r, beg, end).execute()
|
||||
@map_manager.map[@name] = HB.addOperation(new ReplaceManager undefined, uid_r, beg, end)
|
||||
@map_manager.map[@name].setParent @map_manager, @name
|
||||
@map_manager.map[@name].execute()
|
||||
@map_manager.callEvent 'addProperty', @name
|
||||
super
|
||||
|
||||
#
|
||||
@@ -165,8 +168,6 @@ module.exports = (HB)->
|
||||
o = o.next_cl
|
||||
if not o.isDeleted()
|
||||
position -= 1
|
||||
|
||||
|
||||
o
|
||||
|
||||
#
|
||||
@@ -199,6 +200,16 @@ module.exports = (HB)->
|
||||
HB.addOperation(op).execute()
|
||||
|
||||
#
|
||||
# Add change listeners for parent.
|
||||
#
|
||||
setParent: (parent, property_name)->
|
||||
@on 'insert', (event, op)=>
|
||||
if op.next_cl instanceof types.Delimiter
|
||||
@parent.callEvent 'change', property_name
|
||||
@on 'change', (event)=>
|
||||
@parent.callEvent 'change', property_name
|
||||
super parent
|
||||
#
|
||||
# Get the value of this Word
|
||||
# @return {String}
|
||||
#
|
||||
|
||||
@@ -140,7 +140,9 @@ module.exports = (HB)->
|
||||
#
|
||||
setReplaceManager: (op)->
|
||||
@saveOperation 'replace_manager', op
|
||||
@validateSavedOperations
|
||||
@validateSavedOperations()
|
||||
@on ['insert', 'delete'], ()=>
|
||||
@replace_manager?.callEvent 'change'
|
||||
|
||||
#
|
||||
# Bind this Word to a textfield.
|
||||
|
||||
Reference in New Issue
Block a user