Moving dhtmlxGantt library to 'libraries' folder

This commit is contained in:
Manuel Cillero 2017-08-13 11:07:26 +02:00
parent dbcdde741c
commit 5e16eb66dd
162 changed files with 6 additions and 5 deletions

View file

@ -0,0 +1,119 @@
/*
@license
dhtmlxGantt v.3.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.
*/
if(!gantt._markers)
gantt._markers = {};
gantt.config.show_markers = true;
gantt.attachEvent("onClear", function(){
gantt._markers = {};
});
gantt.attachEvent("onGanttReady", function(){
var markerArea = document.createElement("div");
markerArea.className = "gantt_marker_area";
gantt.$task_data.appendChild(markerArea);
gantt.$marker_area = markerArea;
gantt._markerRenderer = gantt._task_renderer("markers", render_marker, gantt.$marker_area, null);
function render_marker(marker){
if(!gantt.config.show_markers)
return false;
if(!marker.start_date)
return false;
var state = gantt.getState();
if(+marker.start_date > +state.max_date)
return;
if(+marker.end_date && +marker.end_date < +state.min_date || +marker.start_date < +state.min_date)
return;
var div = document.createElement("div");
div.setAttribute("marker_id", marker.id);
var css = "gantt_marker";
if(gantt.templates.marker_class)
css += " " + gantt.templates.marker_class(marker);
if(marker.css){
css += " " + marker.css;
}
if(marker.title){
div.title = marker.title;
}
div.className = css;
var start = gantt.posFromDate(marker.start_date);
div.style.left = start + "px";
div.style.height = Math.max(gantt._y_from_ind(gantt._order.length), 0) + "px";
if(marker.end_date){
var end = gantt.posFromDate(marker.end_date);
div.style.width = Math.max((end - start), 0) + "px";
}
if(marker.text){
div.innerHTML = "<div class='gantt_marker_content' >" + marker.text + "</div>";
}
return div;
}
});
gantt.attachEvent("onDataRender", function(){
gantt.renderMarkers();
});
gantt.getMarker = function(id){
if(!this._markers) return null;
return this._markers[id];
};
gantt.addMarker = function(marker){
marker.id = marker.id || dhtmlx.uid();
this._markers[marker.id] = marker;
return marker.id;
};
gantt.deleteMarker = function(id){
if(!this._markers || !this._markers[id])
return false;
delete this._markers[id];
return true;
};
gantt.updateMarker = function(id){
if(this._markerRenderer)
this._markerRenderer.render_item(id);
};
gantt.renderMarkers = function(){
if(!this._markers)
return false;
if(!this._markerRenderer)
return false;
var to_render = [];
for(var id in this._markers)
to_render.push(this._markers[id]);
this._markerRenderer.render_items(to_render);
return true;
};

View file

@ -0,0 +1 @@
{"version":3,"file":"dhtmlxgantt_marker.js","sources":["dhtmlxgantt_marker.js"],"names":["gantt","_markers","config","show_markers","attachEvent","render_marker","marker","start_date","state","getState","max_date","end_date","min_date","div","document","createElement","setAttribute","id","css","templates","marker_class","title","className","start","posFromDate","style","left","height","Math","max","_y_from_ind","_order","length","end","width","text","innerHTML","markerArea","$task_data","appendChild","$marker_area","_markerRenderer","_task_renderer","renderMarkers","getMarker","this","addMarker","dhtmlx","uid","deleteMarker","updateMarker","render_item","to_render","push","render_items"],"mappings":";;;;;;;;AASIA,MAAMC,WACTD,MAAMC,aAEPD,MAAME,OAAOC,cAAe,EAE5BH,MAAMI,YAAY,UAAW,WAC5BJ,MAAMC,cAGPD,MAAMI,YAAY,eAAgB,WAQjC,QAASC,GAAcC,GACtB,IAAIN,MAAME,OAAOC,aAChB,OAAO,CAER,KAAIG,EAAOC,WACV,OAAO,CAER,IAAIC,GAAQR,MAAMS,UAClB,OAAIH,EAAOC,YAAcC,EAAME,WAE3BJ,EAAOK,WAAaL,EAAOK,UAAYH,EAAMI,WAAaN,EAAOC,YAAcC,EAAMI,UAAzF,CAGA,GAAIC,GAAMC,SAASC,cAAc,MAEjCF,GAAIG,aAAa,YAAaV,EAAOW,GAErC,IAAIC,GAAM,cACPlB,OAAMmB,UAAUC,eAClBF,GAAO,IAAMlB,MAAMmB,UAAUC,aAAad;AAExCA,EAAOY,MACTA,GAAO,IAAMZ,EAAOY,KAGlBZ,EAAOe,QACTR,EAAIQ,MAAQf,EAAOe,OAEpBR,EAAIS,UAAYJ,CAEhB,IAAIK,GAAQvB,MAAMwB,YAAYlB,EAAOC,WAGrC,IAFAM,EAAIY,MAAMC,KAAOH,EAAQ,KACzBV,EAAIY,MAAME,OAASC,KAAKC,IAAI7B,MAAM8B,YAAY9B,MAAM+B,OAAOC,QAAS,GAAK,KACtE1B,EAAOK,SAAS,CAClB,GAAIsB,GAAMjC,MAAMwB,YAAYlB,EAAOK,SACnCE,GAAIY,MAAMS,MAAQN,KAAKC,IAAKI,EAAMV,EAAQ,GAAK,KAQhD,MAJGjB,GAAO6B,OACTtB,EAAIuB,UAAY,sCAAwC9B,EAAO6B,KAAO,UAGhEtB,GAlDR,GAAIwB,GAAavB,SAASC,cAAc,MACxCsB,GAAWf,UAAY,oBACvBtB,MAAMsC,WAAWC,YAAYF,GAC7BrC,MAAMwC,aAAeH,EAErBrC,MAAMyC,gBAAkBzC,MAAM0C,eAAe,UAAWrC,EAAeL,MAAMwC,aAAc;;GAkD5FxC,MAAMI,YAAY,eAAgB,WACjCJ,MAAM2C,kBAGP3C,MAAM4C,UAAY,SAAS3B,GAC1B,MAAI4B,MAAK5C,SAEF4C,KAAK5C,SAASgB,GAFK,MAK3BjB,MAAM8C,UAAY,SAASxC,GAK1B,MAJAA,GAAOW,GAAKX,EAAOW,IAAM8B,OAAOC,MAEhCH,KAAK5C,SAASK,EAAOW,IAAMX,EAEpBA,EAAOW,IAGfjB,MAAMiD,aAAe,SAAShC,GAC7B,MAAI4B,MAAK5C,UAAa4C,KAAK5C,SAASgB,UAG7B4B,MAAK5C,SAASgB,IACd,IAHC,GAKTjB,MAAMkD,aAAe,SAASjC,GAC1B4B,KAAKJ,iBACPI,KAAKJ,gBAAgBU,YAAYlC,IAEnCjB,MAAM2C,cAAgB,WACrB,IAAIE,KAAK5C,SACR,OAAO,CAER,KAAI4C,KAAKJ,gBACR,OAAO;;AAER,GAAIW,KAEJ,KAAI,GAAInC,KAAM4B,MAAK5C,SAClBmD,EAAUC,KAAKR,KAAK5C,SAASgB,GAI9B,OAFA4B,MAAKJ,gBAAgBa,aAAaF,IAE3B"}

View file

@ -0,0 +1,241 @@
/*
@license
dhtmlxGantt v.3.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.
*/
gantt.config.multiselect = true;
gantt.config.multiselect_one_level = false;
gantt._multiselect = {
selected: {},
one_level: true,
active: true,
isActive: function(){
this.update_state();
return this.active;
},
update_state: function(){
this.one_level = gantt.config.multiselect_one_level;
var active = this.active;
this.active = gantt.config.multiselect;
if(this.active != active){
this.reset();
}
},
reset: function () {
this.selected = {};
},
set_last_selected: function (id) {
this.last_selected = id;
},
getLastSelected: function () {
return this.last_selected ? this.last_selected : null;
},
select: function (id, e) {
if(gantt.callEvent("onBeforeTaskMultiSelect", [id, true, e])){
this.selected[id] = true;
this.set_last_selected(id);
gantt.callEvent("onTaskMultiSelect", [id, true, e]);
}
},
toggle: function (id, e) {
if(this.selected[id]){
this.unselect(id, e);
}else{
this.select(id, e);
}
},
unselect: function (id, e) {
if(gantt.callEvent("onBeforeTaskMultiSelect", [id, false, e])){
this.selected[id] = false;
if(this.last_selected == id)
this.last_selected = null;
gantt.callEvent("onTaskMultiSelect", [id, true, e]);
}
},
isSelected: function (id) {
return !!this.selected[id];
},
getSelected: function () {
var res = [];
for (var i in this.selected) {
if (this.selected[i]) {
res.push(i);
}
}
res.sort(function(a, b){
return gantt.calculateTaskLevel(gantt.getTask(a)) > gantt.calculateTaskLevel(gantt.getTask(b)) ? 1 : -1;
});
return res;
},
forSelected: function (callback) {
var selected = this.getSelected();
for (var i = 0; i < selected.length; i++) {
callback(selected[i]);
}
},
is_same_level: function(id){
if(!this.one_level)
return true;
var last = this.getLastSelected();
if(!last)
return true;
if(!(gantt.isTaskExists(last) && gantt.isTaskExists(id)))
return true;
return !!(gantt.calculateTaskLevel(gantt.getTask(last)) == gantt.calculateTaskLevel(gantt.getTask(id)));
},
_after_select: function(target){
gantt.refreshTask(target);
},
_do_selection: function(e) {
/* add onclick handler to gantt container, hook up multiselection */
if(!this.isActive())
return true;
var target_ev = gantt.locate(e);
var selected = this.getSelected();
if (!target_ev)
return true;
if(!gantt.callEvent("onBeforeMultiSelect", [e])){
return true;
}
if (e.ctrlKey) {
if (target_ev) {
this.toggle(target_ev, e);
this._after_select(target_ev);
}
} else if (e.shiftKey && selected.length) {
var last = this.getLastSelected();
if (!last)
last = selected[selected.length - 1];
if (target_ev && last != target_ev) {
var last_si = gantt.getGlobalTaskIndex(last);
var cur_si = gantt.getGlobalTaskIndex(target_ev);
var tmp = target_ev;
while (gantt.getGlobalTaskIndex(tmp) != last_si) {
this.select(tmp);
this._after_select(tmp);
tmp = (last_si > cur_si) ? gantt.getNext(tmp) : gantt.getPrev(tmp);
}
this.forSelected(dhtmlx.bind(function (task_id) {
var index = gantt.getGlobalTaskIndex(task_id);
if ((index > last_si && index > cur_si) || (index < last_si && index < cur_si)) {
this.unselect(task_id);
gantt.refreshTask(task_id);
}
}, this));
}
}
else {
this.forSelected(dhtmlx.bind(function (task_id) {
if (task_id != target_ev) {
this.unselect(task_id);
gantt.refreshTask(task_id);
}
}, this));
if (!this.isSelected(target_ev)) {
this.select(target_ev);
this._after_select(target_ev);
}
}
if(!this.isSelected(target_ev)){
return false;
}
return true;
}
};
(function(){
var old_selectTask = gantt.selectTask;
gantt.selectTask = function(id){
var res = old_selectTask.call(this, id);
if(this.config.multiselect)
this._multiselect.select(id);
return res;
};
var old_unselectTask = gantt.unselectTask;
gantt.unselectTask = function(id){
var res = old_unselectTask.call(this, id);
if(this.config.multiselect)
this._multiselect.unselect(id);
return res;
};
gantt.toggleTaskSelection = function(id){
if(this.config.multiselect)
this._multiselect.toggle(id);
};
gantt.getSelectedTasks = function(){
return this._multiselect.getSelected();
};
gantt.eachSelectedTask = function(callback){
return this._multiselect.forSelected(callback);
};
gantt.isSelectedTask = function(id){
return this._multiselect.isSelected(id);
};
gantt.getLastSelectedTask = function(){
return this._multiselect.getLastSelected();
};
})();
gantt.attachEvent("onTaskIdChange", function (id, new_id) {
var multiselect = gantt._multiselect;
if(!multiselect.isActive())
return true;
if (gantt.isSelectedTask(id)) {
multiselect.unselect(id, null);
multiselect.select(new_id, null);
gantt.refreshTask(new_id);
}
});
gantt.attachEvent("onAfterTaskDelete", function (id, item) {
var multiselect = gantt._multiselect;
if(!multiselect.isActive())
return true;
if (multiselect.selected[id])
multiselect.unselect(id, null);
multiselect.forSelected(function (task_id) {
if (!gantt.isTaskExists(task_id))
multiselect.unselect(task_id, null);
});
});
gantt.attachEvent("onBeforeTaskMultiSelect", function(id, select, e){
var multiselect = gantt._multiselect;
if(select && multiselect.isActive()){
return multiselect.is_same_level(id);
}
return true;
});
gantt.attachEvent("onTaskClick", function(id, e){
var res = gantt._multiselect._do_selection(e);
gantt.callEvent("onMultiSelect", [e]);
return res;
});
gantt.attachEvent("onEmptyClick", function (e){
gantt._multiselect._do_selection(e);
gantt.callEvent("onMultiSelect", [e]);
return true;
});

View file

@ -0,0 +1 @@
{"version":3,"file":"dhtmlxgantt_multiselect.js","sources":["dhtmlxgantt_multiselect.js"],"names":["gantt","config","multiselect","multiselect_one_level","_multiselect","selected","one_level","active","isActive","this","update_state","reset","set_last_selected","id","last_selected","getLastSelected","select","e","callEvent","toggle","unselect","isSelected","getSelected","res","i","push","sort","a","b","calculateTaskLevel","getTask","forSelected","callback","length","is_same_level","last","isTaskExists","_after_select","target","refreshTask","_do_selection","target_ev","locate","ctrlKey","shiftKey","last_si","getGlobalTaskIndex","cur_si","tmp","getNext","getPrev","dhtmlx","bind","task_id","index","old_selectTask","selectTask","call","old_unselectTask","unselectTask","toggleTaskSelection","getSelectedTasks","eachSelectedTask","isSelectedTask","getLastSelectedTask","attachEvent","new_id"],"mappings":"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"}

View file

@ -0,0 +1,218 @@
/*
@license
dhtmlxGantt v.3.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.
*/
gantt.config.quickinfo_buttons = ["icon_delete","icon_edit"];
gantt.config.quick_info_detached = true;
gantt.config.show_quick_info = true;
gantt.attachEvent("onTaskClick", function(id){
gantt.showQuickInfo(id);
return true;
});
(function(){
var events = ["onEmptyClick", "onViewChange", "onLightbox", "onBeforeTaskDelete", "onBeforeDrag"];
var hiding_function = function(){
gantt._hideQuickInfo();
return true;
};
for (var i=0; i<events.length; i++)
gantt.attachEvent(events[i], hiding_function);
})();
gantt.templates.quick_info_title = function(start, end, ev){ return ev.text.substr(0,50); };
gantt.templates.quick_info_content = function(start, end, ev){ return ev.details || ev.text; };
gantt.templates.quick_info_date = function(start, end, ev){
return gantt.templates.task_time(start, end, ev);
};
gantt.templates.quick_info_class = function(start, end, task){ return ""; };
gantt.showQuickInfo = function(id){
if (id == this._quick_info_box_id || !this.config.show_quick_info) return;
this.hideQuickInfo(true);
var pos = this._get_event_counter_part(id);
if (pos){
this._quick_info_box = this._init_quick_info(pos, id);
this._quick_info_box.className = gantt._prepare_quick_info_classname(id);
this._fill_quick_data(id);
this._show_quick_info(pos);
}
};
gantt._hideQuickInfo = function(){
gantt.hideQuickInfo();
};
gantt.hideQuickInfo = function(forced){
var qi = this._quick_info_box;
this._quick_info_box_id = 0;
if (qi && qi.parentNode){
if (gantt.config.quick_info_detached)
return qi.parentNode.removeChild(qi);
qi.className += " gantt_qi_hidden";
if (qi.style.right == "auto")
qi.style.left = "-350px";
else
qi.style.right = "-350px";
if (forced)
qi.parentNode.removeChild(qi);
}
};
dhtmlxEvent(window, "keydown", function(e){
if (e.keyCode == 27)
gantt.hideQuickInfo();
});
gantt._show_quick_info = function(pos){
var qi = gantt._quick_info_box;
if (gantt.config.quick_info_detached){
if (!qi.parentNode ||
qi.parentNode.nodeName.toLowerCase() == "#document-fragment")//IE8
gantt.$task_data.appendChild(qi);
var width = qi.offsetWidth;
var height = qi.offsetHeight;
var scrolls = this.getScrollState();
var screen_width = this.$task.offsetWidth + scrolls.x - width;
qi.style.left = Math.min(Math.max(scrolls.x, pos.left - pos.dx*(width - pos.width)), screen_width) + "px";
qi.style.top = pos.top - (pos.dy?height:-pos.height) - 25 + "px";
} else {
qi.style.top = 20 + "px";
if (pos.dx == 1){
qi.style.right = "auto";
qi.style.left = "-300px";
setTimeout(function(){
qi.style.left = "-10px";
},1);
} else {
qi.style.left = "auto";
qi.style.right = "-300px";
setTimeout(function(){
qi.style.right = "-10px";
},1);
}
qi.className += " gantt_qi_"+(pos.dx == 1 ? "left" : "right");
gantt._obj.appendChild(qi);
}
};
gantt._prepare_quick_info_classname = function(id){
var task = gantt.getTask(id);
var css = "gantt_cal_quick_info",
template = this.templates.quick_info_class(task.start_date, task.end_date, task);
if(template){
css += " " + template;
}
return css;
};
gantt._init_quick_info = function(pos, id){
var task = gantt.getTask(id);
if(typeof this._quick_info_readonly == "boolean"){
if(this._is_readonly(task) !== this._quick_info_readonly){
gantt.hideQuickInfo(true);
this._quick_info_box = null;
}
}
this._quick_info_readonly = this._is_readonly(task);
if (!this._quick_info_box){
var qi = this._quick_info_box = document.createElement("div");
//title
var html = "<div class=\"gantt_cal_qi_title\">" +
"<div class=\"gantt_cal_qi_tcontent\"></div><div class=\"gantt_cal_qi_tdate\"></div>" +
"</div>" +
"<div class=\"gantt_cal_qi_content\"></div>";
//buttons
html += "<div class=\"gantt_cal_qi_controls\">";
var buttons = gantt.config.quickinfo_buttons;
var is_editor = {"icon_delete":true,"icon_edit":true};
for (var i = 0; i < buttons.length; i++){
if(this._quick_info_readonly && is_editor[buttons[i]])
continue;
html += "<div class=\"gantt_qi_big_icon "+buttons[i]+"\" title=\""+gantt.locale.labels[buttons[i]]+"\"><div class='gantt_menu_icon " + buttons[i] + "'></div><div>"+gantt.locale.labels[buttons[i]]+"</div></div>";
}
html += "</div>";
qi.innerHTML = html;
dhtmlxEvent(qi, "click", function(ev){
ev = ev || event;
gantt._qi_button_click(ev.target || ev.srcElement);
});
if (gantt.config.quick_info_detached)
dhtmlxEvent(gantt.$task_data, "scroll", function(){ gantt.hideQuickInfo(); });
}
return this._quick_info_box;
};
gantt._qi_button_click = function(node){
var box = gantt._quick_info_box;
if (!node || node == box) return;
var mask = node.className;
if (mask.indexOf("_icon")!=-1){
var id = gantt._quick_info_box_id;
gantt.$click.buttons[mask.split(" ")[1].replace("icon_","")](id);
} else
gantt._qi_button_click(node.parentNode);
};
gantt._get_event_counter_part = function(id){
var domEv = gantt.getTaskNode(id);
var left = 0;
var top = 0;
var node = domEv;
while (node && node.className != "gantt_task"){
left += node.offsetLeft;
top += node.offsetTop;
node = node.offsetParent;
}
var scroll = this.getScrollState();
if(node){
var dx = (left + domEv.offsetWidth/2) - scroll.x > (gantt._x/2) ? 1 : 0;
var dy = (top + domEv.offsetHeight/2) - scroll.y > (gantt._y/2) ? 1 : 0;
return { left:left, top:top, dx:dx, dy:dy,
width:domEv.offsetWidth, height:domEv.offsetHeight };
}
return 0;
};
gantt._fill_quick_data = function(id){
var ev = gantt.getTask(id);
var qi = gantt._quick_info_box;
gantt._quick_info_box_id = id;
//title content
var titleContent = qi.firstChild.firstChild;
titleContent.innerHTML = gantt.templates.quick_info_title(ev.start_date, ev.end_date, ev);
var titleDate = titleContent.nextSibling;
titleDate.innerHTML = gantt.templates.quick_info_date(ev.start_date, ev.end_date, ev);
//main content
var main = qi.firstChild.nextSibling;
main.innerHTML = gantt.templates.quick_info_content(ev.start_date, ev.end_date, ev);
};

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,172 @@
/*
@license
dhtmlxGantt v.3.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.
*/
gantt._tooltip = {};
gantt._tooltip_class = "gantt_tooltip";
gantt.config.tooltip_timeout = 30;//,
gantt.config.tooltip_offset_y = 20;
gantt.config.tooltip_offset_x = 10;//,
// timeout_to_hide: 50,
// delta_x: 15,
// delta_y: -20
gantt._create_tooltip = function(){
if (!this._tooltip_html){
this._tooltip_html = document.createElement('div');
this._tooltip_html.className = gantt._tooltip_class;
}
return this._tooltip_html;
};
gantt._is_cursor_under_tooltip = function(mouse_pos, tooltip) {
if(mouse_pos.x >= tooltip.pos.x && mouse_pos.x <= (tooltip.pos.x + tooltip.width)) return true;
if(mouse_pos.y >= tooltip.pos.y && mouse_pos.y <= (tooltip.pos.y + tooltip.height)) return true;
return false;
};
gantt._show_tooltip = function(text, pos) {
if (gantt.config.touch && !gantt.config.touch_tooltip) return;
var tip = this._create_tooltip();
tip.innerHTML = text;
gantt.$task_data.appendChild(tip);
var width = tip.offsetWidth + 20;
var height = tip.offsetHeight + 40;
var max_height = this.$task.offsetHeight;
var max_width = this.$task.offsetWidth;
var scroll = this.getScrollState();
//pos.x += scroll.x;
pos.y += scroll.y;
var mouse_pos = {
x: pos.x,
y: pos.y
};
pos.x += (gantt.config.tooltip_offset_x*1 || 0);
pos.y += (gantt.config.tooltip_offset_y*1 || 0);
pos.y = Math.min(Math.max(scroll.y, pos.y), scroll.y+max_height - height);
pos.x = Math.min(Math.max(scroll.x, pos.x), scroll.x+max_width - width);
if (gantt._is_cursor_under_tooltip(mouse_pos, {pos: pos, width: width, height: height})) {
if((mouse_pos.x+width) > (max_width + scroll.x)) pos.x = mouse_pos.x - (width - 20) - (gantt.config.tooltip_offset_x*1 || 0);
if((mouse_pos.y+height) > (max_height + scroll.y)) pos.y = mouse_pos.y - (height - 40) - (gantt.config.tooltip_offset_y*1 || 0);
}
tip.style.left = pos.x + "px";
tip.style.top = pos.y + "px";
};
gantt._hide_tooltip = function(){
if (this._tooltip_html && this._tooltip_html.parentNode)
this._tooltip_html.parentNode.removeChild(this._tooltip_html);
this._tooltip_id = 0;
};
gantt._is_tooltip = function(ev) {
var node = ev.target || ev.srcElement;
return gantt._is_node_child(node, function(node){
return (node.className == this._tooltip_class);
});
};
gantt._is_task_line = function(ev){
var node = ev.target || ev.srcElement;
return gantt._is_node_child(node, function(node){
return (node == this.$task_data);
});
};
gantt._is_node_child = function(node, condition){
var res = false;
while (node && !res) {
res = condition.call(gantt, node);
node = node.parentNode;
}
return res;
};
gantt._tooltip_pos = function(ev) {
if (ev.pageX || ev.pageY)
var pos = {x:ev.pageX, y:ev.pageY};
var d = _isIE ? document.documentElement : document.body;
var pos = {
x:ev.clientX + d.scrollLeft - d.clientLeft,
y:ev.clientY + d.scrollTop - d.clientTop
};
var box = gantt._get_position(gantt.$task_data);
pos.x = pos.x - box.x;
pos.y = pos.y - box.y;
return pos;
};
gantt.attachEvent("onMouseMove", function(event_id, ev) { // (gantt event_id, browser event)
if(this.config.tooltip_timeout){
//making events survive timeout in ie
if(document.createEventObject && !document.createEvent)
ev = document.createEventObject(ev);
var delay = this.config.tooltip_timeout;
if(this._tooltip_id && !event_id){
if(!isNaN(this.config.tooltip_hide_timeout)){
delay = this.config.tooltip_hide_timeout;
}
}
clearTimeout(gantt._tooltip_ev_timer);
gantt._tooltip_ev_timer = setTimeout(function(){
gantt._init_tooltip(event_id, ev);
}, delay);
}else{
gantt._init_tooltip(event_id, ev);
}
});
gantt._init_tooltip = function(event_id, ev){
if (this._is_tooltip(ev)) return;
if (event_id == this._tooltip_id && !this._is_task_line(ev)) return;
if (!event_id)
return this._hide_tooltip();
this._tooltip_id = event_id;
var task = this.getTask(event_id);
var text = this.templates.tooltip_text(task.start_date, task.end_date, task);
if (!text){
this._hide_tooltip();
return;
}
this._show_tooltip(text, this._tooltip_pos(ev));
};
gantt.attachEvent("onMouseLeave", function(ev){
if (gantt._is_tooltip(ev)) return;
this._hide_tooltip();
});
// gantt.attachEvent("onBeforeDrag", function() {
// gantt._tooltip.hide();
// return true;
// });
// gantt.attachEvent("onEventDeleted", function() {
// gantt._tooltip.hide();
// return true;
// });
/* Could be redifined */
gantt.templates.tooltip_date_format = gantt.date.date_to_str("%Y-%m-%d");
gantt.templates.tooltip_text = function(start, end, event) {
return "<b>Task:</b> " + event.text + "<br/><b>Start date:</b> " + gantt.templates.tooltip_date_format(start) + "<br/><b>End date:</b> " + gantt.templates.tooltip_date_format(end);
};

View file

@ -0,0 +1 @@
{"version":3,"file":"dhtmlxgantt_tooltip.js","sources":["dhtmlxgantt_tooltip.js"],"names":["gantt","_tooltip","_tooltip_class","config","tooltip_timeout","tooltip_offset_y","tooltip_offset_x","_create_tooltip","this","_tooltip_html","document","createElement","className","_is_cursor_under_tooltip","mouse_pos","tooltip","x","pos","width","y","height","_show_tooltip","text","touch","touch_tooltip","tip","innerHTML","$task_data","appendChild","offsetWidth","offsetHeight","max_height","$task","max_width","scroll","getScrollState","Math","min","max","style","left","top","_hide_tooltip","parentNode","removeChild","_tooltip_id","_is_tooltip","ev","node","target","srcElement","_is_node_child","_is_task_line","condition","res","call","_tooltip_pos","pageX","pageY","d","_isIE","documentElement","body","clientX","scrollLeft","clientLeft","clientY","scrollTop","clientTop","box","_get_position","attachEvent","event_id","createEventObject","createEvent","delay","isNaN","tooltip_hide_timeout","clearTimeout","_tooltip_ev_timer","setTimeout","_init_tooltip","task","getTask","templates","tooltip_text","start_date","end_date","tooltip_date_format","date","date_to_str","start","end","event"],"mappings":"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"}