📄 timeline.js
字号:
$order:2,
'text-align':'left',
'padding-left':'4px'
},
ACTIVE:{
'z-index':300,
position:'relative',
'border-left': '1px dashed',
'border-right': '1px dashed',
left:'-100px',
width:'0',
background:0,
height:'100%'
},
ZOOMIN:{
background: linb.UI.$bg('cmds.gif', ' no-repeat -271px top', true)
},
'ZOOMIN-mouseover':{
$order:2,
'background-position': '-271px -16px'
},
'ZOOMIN-mousedown':{
$order:3,
'background-position': '-271px -31px'
},
ZOOMOUT:{
background: linb.UI.$bg('cmds.gif', ' no-repeat -256px top', true)
},
'ZOOMOUT-mouseover':{
$order:2,
'background-position': '-256px -16px'
},
'ZOOMOUT-mousedown':{
$order:3,
'background-position': '-256px -31px'
},
DATE:{
background: linb.UI.$bg('cmds.gif', ' no-repeat -46px -65px', true)
},
'DATE-mouseover':{
$order:2,
'background-position':' -46px -80px'
},
'DATE-mousedown':{
$order:3,
'background-position':' -46px -95px'
},
MIN:{
background: linb.UI.$bg('cmds.gif', ' no-repeat -31px -65px', true)
},
PRE:{
background: linb.UI.$bg('cmds.gif', ' no-repeat 0 -65px', true),
top:'0'
},
'PRE-mouseover':{
$order:2,
'background-position': '0 -80px'
},
'PRE-mousedown':{
$order:3,
'background-position': '0 -95px'
},
NEXT:{
position:'absolute',
background: linb.UI.$bg('cmds.gif', ' no-repeat -16px -65px', true),
top:'0'
},
'NEXT-mouseover':{
$order:2,
'background-position': '-16px -80px'
},
'NEXT-mousedown':{
$order:3,
'background-position': '-16px -95px'
},
ITEM:{
position:'absolute',
overflow:'visible'
},
'MIN, NORMAL':{
//position:'absolute',
//top:0,
//left:0,
position:'relative',
height:'16px',
overflow:'hidden',
'z-index':'1'
},
'MIN':{
width:'16px',
background: linb.UI.$bg('cmds.gif', ' no-repeat -30px -65px', true),
cursor:'pointer'
},
'MIN-mouseover':{
'background-position': '-30px -80px'
},
'MIN-mousedown':{
'background-position': '-30px -95px'
},
NORMAL:{
cursor:'pointer',
'background-color': '#C6D6F7',
border:'solid 1px #203A83'
},
'NORMAL-mouseover':{
$order:2,
'border-color': 'red'
},
'LEFT, HEAD, RIGHT':{
position:'absolute',
top:0,
height:'100%'
},
HEAD:{
background: linb.UI.$bg('handler.gif', ' left top', true),
width:'6px',
left:'3px',
cursor:'move',
'z-index':5
},
'LEFT, RIGHT':{
width:'2px',
'z-index':10
},
'LEFT':{
cursor:'e-resize',
left:0
},
'RIGHT':{
cursor:'w-resize',
right:0
},
CON:{
'padding-left':'12px',
position:'relative',
height:'100%',
overflow:'hidden'
}
},
RenderTrigger:function(){
var self=this, p=self.properties,cls=self.box;
self.$active = self.getSubNode('ACTIVE').get(0);
cls._ajustHeight(self);
self.boxing().iniContent();
},
_onDropMarkShow:function(){linb.DragDrop.setDragIcon('add');return false},
_onDropMarkClear:function(){linb.DragDrop.setDragIcon();return false},
_onDragEnter:function(profile,e,src){
var t=profile.properties,
ep=linb.Event.getPos(e),
_left = t._unitPixs/2
;
linb(profile.$active).css('display','block');
profile.$dd_ox =linb([src]).offset().left+_left;
profile.$$ondrag=true;
},
_onDragLeave:function(profile){
profile.$$ondrag=profile.$dd_ox=null;
profile.box._deActive(profile);
},
_onDrop:function(profile){
profile.$$ondrag=profile.$dd_ox=null;
var r = profile.box._deActive(profile),
task={id:_.id(),caption:profile.properties.dftTaskName},
box=profile.box,
b=profile.boxing();
task.from = box._getTime(profile, r.left);
task.to = box._getTime(profile, r.left+r.width);
task._dropData=linb.DragDrop.getProfile().dragData;
if(profile.beforeNewTasks && false===b.beforeNewTasks(profile, [task])){}else
b.addTasks([task]);
},
_prepareData:function(profile){
var p=profile.properties,
d={},
date=linb.Date,
us=date.$TIMEUNIT,
nodisplay='display:none',
zoom=profile.box.$zoom,
m=0,u,
i,t,label,temp,_date,width,rate,
_unitParas,
_dateStart,
_barCount,_leftBarCount,_rightBarCount,_barCountall,
smallMarks,smallLabelStart,smallLabelEnd,smallLabelUnit,smallLabelCount,smallLabelFormat
;
d.dateDisplay = p.dateBtn?'':nodisplay;
d.closeDisplay = p.closeBtn?'':nodisplay;
d.optDisplay = p.optBtn?'':nodisplay;
d._showBigLabel=p.showBigLabel?'':nodisplay;
// for quick move
p._scroll_offset = p._scrollRate;
p._lines=[{}];
//border
d._bWidth = p.width - 2*p.$borderW;
d._bHeight = p.height - 2*p.$borderW;
//view
p._viewHeight = d._bHeight - (p.showTips&&p._tipsHeight) - (p.showBigLabel?p._bigLabelHeight:0) - p._smallLabelHeight - (p.showBar&&p._barHeight);
d._tipsdisplay=p.showTips?'':nodisplay;
d._bardisplay = p.showBar?'':nodisplay;
//get unitparas from timespan key
if(p.timeSpanKey){
_.arr.each(zoom,function(o){
if(o[0]===p.timeSpanKey){
_unitParas=p._unitParas=o;
return false;
}
});
//give a default key
if(!_unitParas)
_unitParas=p._unitParas=zoom[p.timeSpanKey='1 d'];
}
//if no timeSpanKey( _unitParas) input,
d.zoomDisplay = (p.zoomable && _unitParas)?'':nodisplay
if(_unitParas){
p._unitPixs = p.unitPixs||_unitParas[1];
p._smallLabelCount = p.smallLabelCount||_unitParas[2];
p._smallLabelUnit = p.smallLabelUnit||_unitParas[3];
p._smallLabelFormat = p.smallLabelFormat||_unitParas[4];
p._bigLabelCount = p.bigLabelCount||_unitParas[5];
p._bigLabelUnit = p.bigLabelUnit||_unitParas[6];
p._bigLabelFormat = p.bigLabelFormat||_unitParas[7];
p._timeFormat = p.timeFormat||_unitParas[8];
}
u=p._unitPixs;
smallLabelCount = p._smallLabelCount;
smallLabelUnit = p._smallLabelUnit;
smallLabelFormat = p._smallLabelFormat;
// get bar count in view
_barCount = (Math.ceil(p.width / u)||0);
_leftBarCount = p.leftSpanCount?p.leftSpanCount:_barCount;
_rightBarCount = p.rightSpanCount?p.rightSpanCount:_barCount;
_barCountall = _barCount + _leftBarCount + _rightBarCount;
// ms per px
rate = p._rate = us[smallLabelUnit]*smallLabelCount/u;
//adjust dateStart
if(p.maxDate&& date.add(p.dateStart,'ms',p.width*rate) > p.maxDate)
p.dateStart=date.add(p.maxDate,'ms',-p.width*rate);
if(p.minDate&& p.dateStart<p.minDate)
p.dateStart=p.minDate;
// get the round start from the approximate start
_dateStart = date.getTimSpanStart(p.dateStart, smallLabelUnit, smallLabelCount);
// rel start in band
smallLabelStart=p._smallLabelStart = date.add(_dateStart, smallLabelUnit, -_leftBarCount*smallLabelCount);
// rel to in band
smallLabelEnd = p._smallLabelEnd = date.add(smallLabelStart, smallLabelUnit, _barCountall*smallLabelCount);
// get band with
p._band_width = Math.ceil(date.diff(smallLabelStart,smallLabelEnd, 'ms')/rate);
// set band left
p._band_left_fix = p._band_left = - Math.ceil(date.diff(smallLabelStart, p.dateStart, 'ms')/rate);
// build bars
smallMarks = p._smallMarks = [];
temp=0;
label=date.get(smallLabelStart, smallLabelFormat);
for(i=0; i< _barCountall; i++){
_date = date.add(smallLabelStart, smallLabelUnit, smallLabelCount*(i+1));
width = Math.ceil(date.diff(smallLabelStart, _date, 'ms')/rate);
smallMarks.push({
left : temp,
width : width - temp,
text : label
});
temp=width;
label=date.getText(_date, smallLabelFormat);
}
if(p.showBigLabel){
var _barCount2,off,
bigMarks,bigLabelStart,bigLabelEnd,
bigLabelCount = p._bigLabelCount,
bigLabelUnit = p._bigLabelUnit,
bigLabelFormat = p._bigLabelFormat
;
bigMarks = p._bigMarks = [];
bigLabelStart=p._bigLabelStart =date.getTimSpanStart(smallLabelStart, bigLabelUnit, bigLabelCount);
bigLabelEnd=p._bigLabelEnd = date.getTimSpanEnd(smallLabelEnd, bigLabelUnit, bigLabelCount);
_barCount2 = date.diff(bigLabelStart, bigLabelEnd, bigLabelUnit)/bigLabelCount;
off=date.diff(smallLabelStart, bigLabelStart, 'ms')/rate;
label=date.getText(bigLabelStart, bigLabelFormat);
temp=0;
for(i=0; i< _barCount2; i++){
_date = date.add(bigLabelStart, bigLabelUnit, bigLabelCount*(i+1));
width = date.diff(bigLabelStart, _date, 'ms')/rate;
bigMarks.push({
left : Math.ceil(temp + off),
width : Math.ceil(width - temp),
text : label
});
temp=width;
label=date.getText(_date, bigLabelFormat);
}
}
return arguments.callee.upper.call(this, profile, d);
},
_prepareItem:function(profile, item, oitem, pid){
var self=this,
t=profile.properties,
index;
if(!item.id)item.id=_.id();
if(!item.caption)item.caption=t.dftTaskName;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -