summaryrefslogtreecommitdiffstats
path: root/sources/ext/dhtmlxscheduler_mvc.js
diff options
context:
space:
mode:
authorStanislau Wolski <stanislau.wolski@gmail.com>2013-10-18 14:02:16 +0300
committerStanislau Wolski <stanislau.wolski@gmail.com>2013-10-18 14:02:16 +0300
commitc2e1fd58b0c848118cf8554de50f788199d609e2 (patch)
treebd30b3b7de59b34120705465e8628a740cdb513d /sources/ext/dhtmlxscheduler_mvc.js
downloadscheduler-c2e1fd58b0c848118cf8554de50f788199d609e2.zip
scheduler-c2e1fd58b0c848118cf8554de50f788199d609e2.tar.gz
scheduler-c2e1fd58b0c848118cf8554de50f788199d609e2.tar.bz2
[add] version 4.0v4.0.0
Diffstat (limited to 'sources/ext/dhtmlxscheduler_mvc.js')
-rw-r--r--sources/ext/dhtmlxscheduler_mvc.js82
1 files changed, 82 insertions, 0 deletions
diff --git a/sources/ext/dhtmlxscheduler_mvc.js b/sources/ext/dhtmlxscheduler_mvc.js
new file mode 100644
index 0000000..91eb269
--- /dev/null
+++ b/sources/ext/dhtmlxscheduler_mvc.js
@@ -0,0 +1,82 @@
+/*
+This software is allowed to use under GPL or you need to obtain Commercial or Enterise License
+to use it in non-GPL project. Please contact sales@dhtmlx.com for details
+*/
+(function(){
+
+ //remove private properties
+ function sanitize(ev){
+ var obj = {};
+ for (var key in ev)
+ if (key.indexOf("_") !== 0)
+ obj[key] = ev[key];
+
+ return obj;
+ }
+
+ var update_timer;
+ function update_view(){
+ clearTimeout(update_timer);
+ update_timer = setTimeout(function(){
+ scheduler.updateView();
+ },1);
+ };
+
+
+scheduler.backbone = function(collection){
+ events.bind("reset", function(){
+ scheduler.clearAll();
+ scheduler.parse(events.toJSON(), "json");
+ });
+ events.bind("change", function(model, info){
+ //special handling for id change
+ if (info.changes && info.changes.id){
+ var old_id = model.previous("id");
+ scheduler.changeEventId(old_id, model.id);
+ }
+
+ var id = model.id;
+ scheduler._init_event( scheduler._events[id] = model.toJSON() );
+ update_view();
+ });
+ events.bind("remove", function(model, changes){
+ if (scheduler._events[model.id])
+ scheduler.deleteEvent(model.id);
+ });
+ events.bind("add", function(model, changes){
+ if (!scheduler._events[model.id]){
+ var ev = model.toJSON();
+ scheduler._init_event(ev);
+ scheduler.addEvent(ev);
+ }
+ });
+
+
+ scheduler.attachEvent("onEventCreated", function(id){
+ var ev = new events.model(scheduler.getEvent(id));
+ scheduler._events[id] = ev.toJSON();
+
+ return true;
+ });
+
+ scheduler.attachEvent("onEventAdded", function(id){
+ if (!events.get(id))
+ events.add( new events.model(sanitize(scheduler.getEvent(id))) );
+
+ return true;
+ });
+ scheduler.attachEvent("onEventChanged", function(id){
+ var ev = events.get(id);
+ var upd = sanitize(scheduler.getEvent(id));
+ ev.set(upd);
+
+ return true;
+ });
+ scheduler.attachEvent("onEventDeleted", function(id){
+ if (events.get(id))
+ events.remove(id);
+ return true;
+ });
+}
+
+})(); \ No newline at end of file