event的颜色以及可以附加在上边的eventselector的颜色,是由\\event\category\@value控制的,我添加了一个然后添加了一个新的style,果然好用。
这一种做法,我曾经在3C的项目中使用过,不过那时候并没有根据服务器的数据作改变。
event的选择颜色的做法也是很值得我学习的,
var gColorTable = {
green:{
dim: 0xCBD1C5,
bright: 0xD4DAC8,
bkgnd: 0x587457,
trans: {ra:85, ga:100, ba:85}
},
blue:{
dim: 0xBBC6D1,
bright: 0xC6CEDC,
bkgnd: 0x4C5E7E,
trans: {ra:75, ga:85, ba:100},
bvl_bkgnd: 0xCDD4E0,
bvl_hilite: 0xDFE4EB,
bvl_shdw: 0x606369
},
....
green:{
dim: 0xCBD1C5,
bright: 0xD4DAC8,
bkgnd: 0x587457,
trans: {ra:85, ga:100, ba:85}
},
blue:{
dim: 0xBBC6D1,
bright: 0xC6CEDC,
bkgnd: 0x4C5E7E,
trans: {ra:75, ga:85, ba:100},
bvl_bkgnd: 0xCDD4E0,
bvl_hilite: 0xDFE4EB,
bvl_shdw: 0x606369
},
....
}
var category_colors = {
holiday: "green",
astro: "purple",
....
}
下午从addEvent(cal-data.lzx#138)方法开始研究,在197行处的
alleventsDP.addNodeFromPointer(blankeventDP);
发现这句话的前后currenteventDP从无数据到有数据。甚是不解。currentventDP在这一个文件中没有setDatapath,setFromPointer之类的赋值方法,搜索所有文件也没有发现这三个pointer之见有什么直接关系。
搜索currenteventDP发现,在eventselector的setSelectedEvent方法中有一句
currenteventDP.setFromPointer( e.datapath );
debug一下,果然这句话在currenteventDP发生改变的时候起了作用,而这个方法正是event的selected属性的setter方法中使用的。
// When a event is current it's selected node attribute is 'true'
// This is the only way that an event becomes the current event,
// which in turn selects the event selector bar
debug.write("sel", sel);
this.selected = sel;
if (this.selected)
eventselector.setSelectedEvent(this, this.mouseIsDown);
而event和alleventsDP指向同样的数据源。
哈终于被我发现了来龙去脉,这样写保证了currenteventDP始终是那个被选中的event的dp。


没有评论:
发表评论