/*
dhtmlxScheduler v.4.2.0 Stardard
This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited.
(c) Dinamenta, UAB.
*/
scheduler._props = {};
scheduler.createUnitsView=function(name,property,list,size,step,skip_incorrect){
if (typeof name == "object"){
list = name.list;
property = name.property;
size = name.size||0;
step = name.step||1;
skip_incorrect = name.skip_incorrect;
name = name.name;
}
scheduler._props[name]={map_to:property, options:list, step:step, position:0 };
if(size>scheduler._props[name].options.length){
scheduler._props[name]._original_size = size;
size = 0;
}
scheduler._props[name].size = size;
scheduler._props[name].skip_incorrect = skip_incorrect||false;
scheduler.date[name+"_start"]= scheduler.date.day_start;
scheduler.templates[name+"_date"] = function(date){
return scheduler.templates.day_date(date);
};
scheduler._get_unit_index = function(unit_view, date) {
var original_position = unit_view.position || 0;
var date_position = Math.floor((scheduler._correct_shift(+date, 1) - +scheduler._min_date) / (60 * 60 * 24 * 1000));
return original_position + date_position;
};
scheduler.templates[name + "_scale_text"] = function(id, label, option) {
if (option.css) {
return "" + label + "";
} else {
return label;
}
};
scheduler.templates[name+"_scale_date"] = function(date) {
var unit_view = scheduler._props[name];
var list = unit_view.options;
if (!list.length) return "";
var index = scheduler._get_unit_index(unit_view, date);
var option = list[index];
return scheduler.templates[name + "_scale_text"](option.key, option.label, option);
};
scheduler.date["add_"+name]=function(date,inc){ return scheduler.date.add(date,inc,"day"); };
scheduler.date["get_"+name+"_end"]=function(date){
return scheduler.date.add(date,scheduler._props[name].size||scheduler._props[name].options.length,"day");
};
scheduler.attachEvent("onOptionsLoad",function(){
var pr = scheduler._props[name];
var order = pr.order = {};
var list = pr.options;
for(var i=0; i list.length) {
pr._original_size = pr.size;
pr.size = 0;
}
else
pr.size = pr._original_size||pr.size;
if (scheduler._date && scheduler._mode == name)
scheduler.setCurrentView(scheduler._date, scheduler._mode);
});
scheduler["mouse_"+ name] = function(pos){ //mouse_coord handler
var pr = scheduler._props[this._mode];
if (pr){
pos = this._week_indexes_from_pos(pos);
if(!this._drag_event) this._drag_event = {};
if (this._drag_id && this._drag_mode){
this._drag_event._dhx_changed = true;
}
var unit_ind = Math.min(pos.x+pr.position,pr.options.length-1);
pos.section = (pr.options[unit_ind]||{}).key;
pos.x = 0;
var ev = this.getEvent(this._drag_id);
this._update_unit_section({view:pr, event:ev, pos:pos});
}
pos.force_redraw = true;
return pos;
};
scheduler.callEvent("onOptionsLoad",[]);
};
scheduler._update_unit_section = function(action){
var view = action.view,
event = action.event,
pos = action.pos;
if(event) {
event[view.map_to] = pos.section;
}
};
scheduler.scrollUnit=function(step){
var pr = scheduler._props[this._mode];
if (pr){
pr.position=Math.min(Math.max(0,pr.position+step),pr.options.length-pr.size);
this.setCurrentView();
}
};
(function(){
var _removeIncorrectEvents = function(evs) {
var pr = scheduler._props[scheduler._mode];
if(pr && pr.order && pr.skip_incorrect) {
var correct_events = [];
for(var i=0; i= pr.size+pr.position )
return false;
}
}
return res;
};
scheduler._reset_scale = function(){
var pr = scheduler._props[this._mode];
var ret = t.apply(this,arguments);
if (pr){
this._max_date=this.date.add(this._min_date,1,"day");
var d = this._els["dhx_cal_data"][0].childNodes;
for (var i=0; i < d.length; i++)
d[i].className = d[i].className.replace("_now",""); //clear now class
if (pr.size && pr.size < pr.options.length){
var h = this._els["dhx_cal_header"][0];
var arrow = document.createElement("DIV");
if (pr.position){
arrow.className = "dhx_cal_prev_button";
arrow.style.cssText="left:1px;top:2px;position:absolute;";
arrow.innerHTML = " ";
h.firstChild.appendChild(arrow);
arrow.onclick=function(){
scheduler.scrollUnit(pr.step*-1);
};
}
if (pr.position+pr.sizepr.order[b[pr.map_to]]?1:-1;
});
} else
o.apply(this,arguments);
};
scheduler.attachEvent("onEventAdded",function(id,ev){
if (this._loading) return true;
for (var a in scheduler._props){
var pr = scheduler._props[a];
if (typeof ev[pr.map_to] == "undefined")
ev[pr.map_to] = pr.options[0].key;
}
return true;
});
scheduler.attachEvent("onEventCreated",function(id,n_ev){
var pr = scheduler._props[this._mode];
if (pr && n_ev){
var ev = this.getEvent(id);
var pos = this._mouse_coords(n_ev);
this._update_unit_section({view:pr, event:ev, pos:pos});
fix_und(pr,ev);
this.event_updated(ev);
}
return true;
});
})();