Hi Ora,

To add an event at runtime, just do the following:

 var eventSource1 = new Timeline.DefaultEventSource();

Use eventSource1  as an argument to create band. It will supply event 
information to the band.

 var evt = new Timeline.DefaultEventSource.Event({event details...});
eventSource1 ._events.add(evt);

After adding all of your events at a given time, call
eventSource1._fire("onAddMany", []);
and
tl.layout();

Re removing an event
Events are stored in a SimileAjax.EventIndex data structure.
It is defined in file ajax/api/scripts/data-structure

Currently it does NOT include a remove function, only a removeAll function.

Thus your options are:
1) Write a remove function for the SimileAjax.EventIndex data structure. If you 
also write a test and an example that uses the new feature, then I'd be happy 
to add the new software to the Timeline source.
2) Instead of removing the event, mark the event as "deleted" -- remember that 
you can add your own private attributes to an event object as long as long as 
the attribute names don't clash with any others. Then write a filter function 
for Timeline's filtering mechanism that will never show the "deleted" events.

Regards,

Larry
ps. Don't use "event" as a local variable name. It is a reserved word in 
Javascript and breaks IE. Use evnt or something instead.







________________________________
From: ora <[email protected]>
To: SIMILE Widgets <[email protected]>
Sent: Tuesday, March 17, 2009 3:43:03 AM
Subject: add and remove events in runtime


Hi everyone,

I am totaly new with Simile and I am trying to find the best way to
add/remove events from the time line on runtime.
In the API I didnt find remove&add methods but looking at the source
code, I can try and do something similar to what is done in the
LoadXml/loadJson methods.
"add" will look something like this:
function addDummyEvent(){
var event ={'start': 'May 28 2006 09:00:00 GMT',
        'end': 'Jun 15 2006 09:00:00 GMT',
        'title': 'added event',
        'description': 'added event',
        'image': 'http://imagecache2.allposters.com/images/BRGPOD/
102770_b.jpg',
        'link': 'http://www.allposters.com/-sp/Portrait-of-Horace-
Brodsky-Posters_i1584413_.htm'
        }
   var url = '.';
   var dateTimeFormat = null;
  var base = eventSource._getBaseURL(url);
  var parseDateTimeFunction = eventSource._events.getUnit().getParser
(dateTimeFormat);
var evt = new Timeline.DefaultEventSource.Event({
                          id: ("id" in event) ? event.id : undefined,
                       start: parseDateTimeFunction(event.start),
                         end: parseDateTimeFunction(event.end),
                 latestStart: parseDateTimeFunction
(event.latestStart),
                 earliestEnd: parseDateTimeFunction
(event.earliestEnd),
                     instant: event.isDuration || false,
                        text: event.title,
                 description: event.description,
                       image: eventSource._resolveRelativeURL
(event.image, base),
                        link: eventSource._resolveRelativeURL
(event.link, base),
                        icon: eventSource._resolveRelativeURL
(event.icon, base),
                       color: event.color,
                   textColor: event.textColor,
                   hoverText: event.hoverText,
                  classname: event.classname,
                           tapeImage: event.tapeImage,
                          tapeRepeat: event.tapeRepeat,
                             caption: event.caption,
                     eventID: event.eventID
            });


Timeline.DefaultEventSource.prototype.add.call(eventSource,evt);
tl.layout();
debugger;
}

and I guess I can do something like this for removal (assuming I add
eventId):
function removeEvent(id){

    eventSource._events.remove(id);
};
Note: the eventSource source used in the methods above is a global
variavle in which I store my eventsource.

Do you think these methods are ok?, any other suggestions?

Thanks
Ora

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"SIMILE Widgets" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/simile-widgets?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to