source: branches/2.2.0.1/calendar/js/dhtmlx/sources/property.js @ 4001

Revision 4001, 5.4 KB checked in by rafaelraymundo, 13 years ago (diff)

Ticket #1615 - Componente novo para agenda......................................

Line 
1scheduler._props = {};
2scheduler.createUnitsView=function(name,property,list,size,step){
3        if (typeof name == "object"){
4                list = name.list;
5                property = name.property;
6                size = name.size||0;
7                step = name.step||1;
8                name = name.name;               
9        }
10        scheduler.date[name+"_start"]= scheduler.date.day_start;
11        scheduler.templates[name+"_date"] = function(date){
12                return scheduler.templates.day_date(date);
13        }
14        scheduler.templates[name+"_scale_date"] = function(date){
15                if (!list.length) return "";
16                var index = (scheduler._props[name].position||0)+Math.floor((scheduler._correct_shift(date.valueOf(),1)-scheduler._min_date.valueOf())/(60*60*24*1000));
17                if (list[index].css)
18                        return "<span class='"+list[index].css+"'>"+list[index].label+"</span>";
19                else
20                        return list[index].label;
21        }
22        scheduler.date["add_"+name]=function(date,inc){ return scheduler.date.add(date,inc,"day"); }
23        scheduler.date["get_"+name+"_end"]=function(date){ return scheduler.date.add(date,size||list.length,"day"); }
24       
25        scheduler._props[name]={map_to:property, options:list, size:size, step:step, position:0 };     
26       
27        scheduler.attachEvent("onOptionsLoad",function(){
28                var order = scheduler._props[name].order = {};
29                for(var i=0; i<list.length;i++)
30                        order[list[i].key]=i;   
31                if (scheduler._date)
32                        scheduler.setCurrentView(scheduler._date, scheduler._mode);
33        });
34        scheduler.callEvent("onOptionsLoad",[]);
35};
36scheduler.scrollUnit=function(step){
37        var pr = scheduler._props[this._mode];
38        if (pr){
39                pr.position=Math.min(Math.max(0,pr.position+step),pr.options.length-pr.size);
40                this.update_view();             
41        }
42};
43
44(function(){
45        var fix_und=function(pr,ev){
46                if (pr && typeof pr.order[ev[pr.map_to]] == "undefined"){
47                        var s = scheduler;
48                        var dx = 24*60*60*1000;
49                        var ind = Math.floor((ev.end_date - s._min_date)/dx);
50                        //ev.end_date = new Date(s.date.time_part(ev.end_date)*1000+s._min_date.valueOf());
51                        //ev.start_date = new Date(s.date.time_part(ev.start_date)*1000+s._min_date.valueOf());
52                        ev[pr.map_to] = pr.options[Math.min(ind+pr.position,pr.options.length-1)].key;
53                        return true;
54                }
55        }
56        var t = scheduler._reset_scale;
57       
58        var oldive = scheduler.is_visible_events;
59        scheduler.is_visible_events = function(e){
60                var res = oldive.apply(this,arguments);
61                if (res){
62                        var pr = scheduler._props[this._mode];
63                        if (pr && pr.size){
64                                 var val = pr.order[e[pr.map_to]];
65                                 if (val < pr.position || val >= pr.size+pr.position )
66                                        return false;
67                        }
68                }
69                return res;
70        }
71       
72        scheduler._reset_scale = function(){
73                var pr = scheduler._props[this._mode];
74                var ret = t.apply(this,arguments);
75                if (pr){
76                        this._max_date=this.date.add(this._min_date,1,"day");
77                               
78                                var d = this._els["dhx_cal_data"][0].childNodes;
79                                for (var i=0; i < d.length; i++)
80                                        d[i].className = d[i].className.replace("_now",""); //clear now class
81                               
82                        if (pr.size && pr.size < pr.options.length){
83                               
84                                var h = this._els["dhx_cal_header"][0];
85                                var arrow = document.createElement("DIV");                             
86                                if (pr.position){
87                                        arrow.className = "dhx_cal_prev_button";
88                                        arrow.style.cssText="left:1px;top:2px;position:absolute;"
89                                        arrow.innerHTML = "&nbsp;"                             
90                                        h.firstChild.appendChild(arrow);
91                                        arrow.onclick=function(){
92                                                scheduler.scrollUnit(pr.step*-1);
93                                        }
94                                }
95                                if (pr.position+pr.size<pr.options.length){
96                                        arrow = document.createElement("DIV");
97                                        arrow.className = "dhx_cal_next_button";
98                                        arrow.style.cssText="left:auto; right:0px;top:2px;position:absolute;"
99                                        arrow.innerHTML = "&nbsp;"             
100                                        h.lastChild.appendChild(arrow);
101                                        arrow.onclick=function(){
102                                                scheduler.scrollUnit(pr.step);
103                                        }
104                                }
105                        }
106                }
107                return ret;
108               
109        }
110        var r = scheduler._get_event_sday;
111        scheduler._get_event_sday=function(ev){
112                var pr = scheduler._props[this._mode];
113                if (pr){
114                        fix_und(pr,ev);
115                        return pr.order[ev[pr.map_to]]-pr.position;     
116                }
117                return r.call(this,ev);
118        }
119        var l = scheduler.locate_holder_day;
120        scheduler.locate_holder_day=function(a,b,ev){
121                var pr = scheduler._props[this._mode];
122                if (pr){
123                        fix_und(pr,ev);
124                        return pr.order[ev[pr.map_to]]*1+(b?1:0)-pr.position;   
125                }
126                return l.apply(this,arguments);
127        }
128        var p = scheduler._mouse_coords;
129        scheduler._mouse_coords=function(){
130                var pr = scheduler._props[this._mode];
131                var pos=p.apply(this,arguments);
132                if (pr){
133                        var ev = this._drag_event;
134                        if (this._drag_id){
135                                ev = this.getEvent(this._drag_id);
136                                this._drag_event._dhx_changed = true;
137                        }
138                        var unit_ind = Math.min(pos.x+pr.position,pr.options.length-1);
139                        ev[pr.map_to]=pr.options[unit_ind].key;
140                        pos.x = unit_ind/10000000;
141                }
142                return pos;
143        }
144        var o = scheduler._time_order;
145        scheduler._time_order = function(evs){
146                var pr = scheduler._props[this._mode];
147                if (pr){
148                        evs.sort(function(a,b){
149                                return pr.order[a[pr.map_to]]>pr.order[b[pr.map_to]]?1:-1;
150                        });
151                } else
152                        o.apply(this,arguments);
153        }
154       
155        scheduler.attachEvent("onEventAdded",function(id,ev){
156                if (this._loading) return true;
157                for (var a in scheduler._props){
158                        var pr = scheduler._props[a];
159                        if (typeof ev[pr.map_to] == "undefined")
160                                ev[pr.map_to] = pr.options[0].key;
161                }
162                return true;
163        })
164        scheduler.attachEvent("onEventCreated",function(id,n_ev){
165                var pr = scheduler._props[this._mode];
166                if (pr){
167                        var ev = this.getEvent(id);
168                        this._mouse_coords(n_ev);
169                        fix_und(pr,ev);
170                        this.event_updated(ev);
171                }
172                return true;
173        })
174                       
175})();
Note: See TracBrowser for help on using the repository browser.