summaryrefslogtreecommitdiff
path: root/addons/web_calendar/static/lib/dhtmlxScheduler/sources/load.js
diff options
context:
space:
mode:
authorVidhin Mehta (OpenERP) <vme@tinyerp.com>2011-09-14 11:07:46 +0530
committerVidhin Mehta (OpenERP) <vme@tinyerp.com>2011-09-14 11:07:46 +0530
commitb6076c3cc3ca5141349b99821268b8fd5e148b77 (patch)
treebb875d3ef5127cf5b8c35de6475de14e5477dbbd /addons/web_calendar/static/lib/dhtmlxScheduler/sources/load.js
parent243e1bdb0079ea9f214696ead8228d464ecb2cfc (diff)
parentc7c2b5846d3775780bbaa9a84a93ad755bdb8756 (diff)
[Merge] upto revno 1024.
bzr revid: vme@tinyerp.com-20110914053746-ri6d5s341mm6tc7n
Diffstat (limited to 'addons/web_calendar/static/lib/dhtmlxScheduler/sources/load.js')
-rw-r--r--addons/web_calendar/static/lib/dhtmlxScheduler/sources/load.js202
1 files changed, 202 insertions, 0 deletions
diff --git a/addons/web_calendar/static/lib/dhtmlxScheduler/sources/load.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/load.js
new file mode 100644
index 00000000000..6d1579862ff
--- /dev/null
+++ b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/load.js
@@ -0,0 +1,202 @@
+/*
+This software is allowed to use under GPL or you need to obtain Commercial or Enterise License
+to use it in not GPL project. Please contact sales@dhtmlx.com for details
+*/
+scheduler._loaded={};
+scheduler._load=function(url,from){
+ url=url||this._load_url;
+ url+=(url.indexOf("?")==-1?"?":"&")+"timeshift="+(new Date()).getTimezoneOffset();
+ if (this.config.prevent_cache) url+="&uid="+this.uid();
+ var to;
+ from=from||this._date;
+
+ if (this._load_mode){
+ var lf = this.templates.load_format;
+
+ from = this.date[this._load_mode+"_start"](new Date(from.valueOf()));
+ while (from>this._min_date) from=this.date.add(from,-1,this._load_mode);
+ to = from;
+
+ var cache_line = true;
+ while (to<this._max_date){
+ to=this.date.add(to,1,this._load_mode);
+ if (this._loaded[lf(from)] && cache_line)
+ from=this.date.add(from,1,this._load_mode);
+ else cache_line = false;
+ }
+
+ var temp_to=to;
+ do {
+ to = temp_to;
+ temp_to=this.date.add(to,-1,this._load_mode);
+ } while (temp_to>from && this._loaded[lf(temp_to)]);
+
+ if (to<=from)
+ return false; //already loaded
+ dhtmlxAjax.get(url+"&from="+lf(from)+"&to="+lf(to),function(l){scheduler.on_load(l);});
+ while(from<to){
+ this._loaded[lf(from)]=true;
+ from=this.date.add(from,1,this._load_mode);
+ }
+ } else
+ dhtmlxAjax.get(url,function(l){scheduler.on_load(l);});
+ this.callEvent("onXLS",[]);
+ return true;
+};
+scheduler.on_load=function(loader){
+ this._loading=true;
+ var evs;
+ if (this._process)
+ evs=this[this._process].parse(loader.xmlDoc.responseText);
+ else
+ evs=this._magic_parser(loader);
+
+ this._not_render=true;
+ for (var i=0; i<evs.length; i++){
+ if (!this.callEvent("onEventLoading",[evs[i]])) continue;
+ this.addEvent(evs[i]);
+ }
+ this._not_render=false;
+ if (this._render_wait) this.render_view_data();
+
+ this._loading=false;
+ if (this._after_call) this._after_call();
+ this._after_call=null;
+
+ this.callEvent("onXLE",[]);
+};
+scheduler.json={};
+scheduler.json.parse = function(data){
+ if (typeof data == "string"){
+ eval("scheduler._temp = "+data+";");
+ data = scheduler._temp;
+ }
+ var evs = [];
+ for (var i=0; i < data.length; i++){
+ data[i].start_date = scheduler.templates.xml_date(data[i].start_date);
+ data[i].end_date = scheduler.templates.xml_date(data[i].end_date);
+ evs.push(data[i]);
+ }
+ return evs;
+};
+scheduler.parse=function(data,type){
+ this._process=type;
+ this.on_load({xmlDoc:{responseText:data}});
+};
+scheduler.load=function(url,call){
+ if (typeof call == "string"){
+ this._process=call;
+ call = arguments[2];
+ }
+
+ this._load_url=url;
+ this._after_call=call;
+ this._load(url,this._date);
+};
+//possible values - day,week,month,year,all
+scheduler.setLoadMode=function(mode){
+ if (mode=="all") mode="";
+ this._load_mode=mode;
+};
+
+//current view by default, or all data if "true" as parameter provided
+scheduler.refresh=function(refresh_all){
+ alert("not implemented");
+ /*
+ this._loaded={};
+ this._load();
+ */
+};
+scheduler.serverList=function(name, array){
+ if(array) {
+ return this.serverList[name] = array.slice(0);
+ }
+ return this.serverList[name] = (this.serverList[name]||[]);
+};
+scheduler._userdata={};
+scheduler._magic_parser=function(loader){
+ var xml;
+ if (!loader.getXMLTopNode){ //from a string
+ var xml_string = loader.xmlDoc.responseText;
+ loader = new dtmlXMLLoaderObject(function(){});
+ loader.loadXMLString(xml_string);
+ }
+
+ xml=loader.getXMLTopNode("data");
+ if (xml.tagName!="data") return [];//not an xml
+
+ var opts = loader.doXPath("//coll_options");
+ for (var i=0; i < opts.length; i++) {
+ var bind = opts[i].getAttribute("for");
+ var arr = this.serverList[bind];
+ if (!arr) continue;
+ arr.splice(0,arr.length); //clear old options
+ var itms = loader.doXPath(".//item",opts[i]);
+ for (var j=0; j < itms.length; j++) {
+ var itm = itms[j];
+ var attrs = itm.attributes;
+ var obj = { key:itms[j].getAttribute("value"), label:itms[j].getAttribute("label")};
+ for (var k = 0; k < attrs.length; k++) {
+ var attr = attrs[k];
+ if(attr.nodeName == "value" || attr.nodeName == "label")
+ continue;
+ obj[attr.nodeName] = attr.nodeValue;
+ }
+ arr.push(obj);
+ }
+ }
+ if (opts.length)
+ scheduler.callEvent("onOptionsLoad",[]);
+
+ var ud=loader.doXPath("//userdata");
+ for (var i=0; i < ud.length; i++) {
+ var udx = this.xmlNodeToJSON(ud[i]);
+ this._userdata[udx.name]=udx.text;
+ }
+
+ var evs=[];
+ xml=loader.doXPath("//event");
+
+
+ for (var i=0; i < xml.length; i++) {
+ evs[i]=this.xmlNodeToJSON(xml[i]);
+
+ evs[i].text=evs[i].text||evs[i]._tagvalue;
+ evs[i].start_date=this.templates.xml_date(evs[i].start_date);
+ evs[i].end_date=this.templates.xml_date(evs[i].end_date);
+ }
+ return evs;
+};
+scheduler.xmlNodeToJSON = function(node){
+ var t={};
+ for (var i=0; i<node.attributes.length; i++)
+ t[node.attributes[i].name]=node.attributes[i].value;
+
+ for (var i=0; i<node.childNodes.length; i++){
+ var child=node.childNodes[i];
+ if (child.nodeType==1)
+ t[child.tagName]=child.firstChild?child.firstChild.nodeValue:"";
+ }
+
+ if (!t.text) t.text=node.firstChild?node.firstChild.nodeValue:"";
+
+ return t;
+};
+scheduler.attachEvent("onXLS",function(){
+ if (this.config.show_loading===true){
+ var t;
+ t=this.config.show_loading=document.createElement("DIV");
+ t.className='dhx_loading';
+ t.style.left = Math.round((this._x-128)/2)+"px";
+ t.style.top = Math.round((this._y-15)/2)+"px";
+ this._obj.appendChild(t);
+ }
+});
+scheduler.attachEvent("onXLE",function(){
+ var t;
+ if (t=this.config.show_loading)
+ if (typeof t == "object"){
+ this._obj.removeChild(t);
+ this.config.show_loading=true;
+ }
+});