-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathjquery.skeduler.min.js
More file actions
17 lines (17 loc) · 2.32 KB
/
jquery.skeduler.min.js
File metadata and controls
17 lines (17 loc) · 2.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
!function(e){function s(e){return(e<10?"0":"")+Math.floor(e)+(Math.ceil(e)>Math.floor(e)?":30":":00")}function a(e){return(d.lineHeight+d.borderWidth)*(2*e)-1}function n(e){return(d.lineHeight+d.borderWidth)*(2*e)}function r(s){var a=d.cardTemplate
for(var n in s)s.hasOwnProperty(n)&&(a=a.replace("${"+n+"}",s[n]))
return e(a)}function t(t,l){for(var o=function(e){for(var s={},a=0;a<e.length;a++){for(var n=a,r=0;0!=e[a];)a++,r++
var t=a
r&&r++
for(var l=0,d=n;d<=t;d++)e[d]=r,s[d]=l++}return{args:e,indexes:s}}(function(){for(var e=[],s=0;s<l.length-1;s++){for(var a=0,n=s+1;n<l.length&&l[s].startTime<l[n].startTime&&l[s].startTime+l[s].duration>l[n].startTime;)a++,n++
e.push(a)}return e.push(0),e}()),i=0;i<o.args.length;i++){var c=194/(o.args[i]||1)
l[i].width=c,l[i].left=o.indexes[i]*c||4}l.forEach(function(l,o){var i=r(l),c=n(l.startTime)+2,u=a(l.duration),C=l.width||194,h=l.left||4,p=e("<div></div>").attr({style:"top: "+c+"px; height: "+(u-4)+"px; width: "+(C-8)+"px; left: "+h+"px",title:s(l.startTime)+" - "+s(l.startTime+l.duration)})
p.on("click",function(e){d.onClick&&d.onClick(e,l)}),p.append(i).appendTo(t)},this)}var l={headers:[],tasks:[],cardTemplate:"<div>${id}</div>",onClick:function(e,s){},containerCssClass:"skeduler-container",headerContainerCssClass:"skeduler-headers",schedulerContainerCssClass:"skeduler-main",taskPlaceholderCssClass:"skeduler-task-placeholder",cellCssClass:"skeduler-cell",lineHeight:30,borderWidth:1,debug:!1},d={}
e.fn.skeduler=function(a){d=e.extend(l,a),d.debug&&console.time("skeduler")
var n=e(this)
n.empty(),n.addClass(d.containerCssClass)
var r=e("<div></div>"),o=r.clone().addClass(d.headerContainerCssClass)
d.headers.forEach(function(e){r.clone().text(e).appendTo(o)},this),n.append(o)
for(var i=r.clone().addClass(d.schedulerContainerCssClass),c=r.clone().addClass(d.schedulerContainerCssClass+"-timeline"),u=r.clone().addClass(d.schedulerContainerCssClass+"-body"),C=r.clone(),h=0;h<24;h++)r.clone().text(s(h)).appendTo(c),r.clone().appendTo(c),C.append(r.clone().addClass(d.cellCssClass)),C.append(r.clone().addClass(d.cellCssClass))
for(var p=0;p<d.headers.length;p++){var f=C.clone(),v=r.clone().addClass(d.taskPlaceholderCssClass)
t(v,d.tasks.filter(function(e){return e.column==p})),f.prepend(v),f.appendTo(u)}return i.append(c),i.append(u),n.append(i),d.debug&&console.timeEnd("skeduler"),n}}(jQuery)