999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

關于Google日歷中事件排列算法的實現

2012-04-24 06:26:50福建省科學技術信息研究所劉懷北
海峽科學 2012年4期
關鍵詞:用戶方法

福建省科學技術信息研究所 劉懷北

?

關于Google日歷中事件排列算法的實現

福建省科學技術信息研究所 劉懷北

Google Calendar作為一款基于事件的日歷系統,以友好的操作界面和實用的功能而著稱。在事件的顯示方面,通過自適應調整事件寬度的方式進行排列,避免事件之間的重疊,直觀地反映事件的時間與分布。該文對Google Calendar中事件排列顯示的方式進行了解析,對其中的概念進行了抽象與定義,并提出了一種相應的算法實現。

Google Calendar 功能 事件排列算法

0 引言

Google Calendar[1]作為Google在線服務的一個重要組成部分,以其簡潔易用的操作界面、全面實用的功能以及豐富而強大的插件,贏得了廣大用戶的青睞。在顯示事件的方式上,Google Calendar通過自適應調整事件寬度進行排列的方式來處理時間上存在重疊的事件,從而使得用戶能夠一目了然地查看事件的時間與分布。

本文通過對該事件顯示方式進行一系列的解析,闡述自適應調整寬度進行排列的目的與方法,構造并提出一種相應的算法實現。

1 事件的排列顯示

如下圖1所示,不同情況下事件的顯示方式可以歸納為以3種:

● 自然排列:每個事件都完整的顯示,并占據整列;

● 重疊排列:每個事件都占據整列顯示,后面的事件會遮蓋前面的事件;

● 自適應寬度排列:每個事件各占據約整列寬的一半,并且完整顯示。

圖1 事件的3種排列顯示方式

顯然,當2個事件之間存在重疊的情況下,第3種排列顯示方法要比第2種方法更有效,用戶能夠直觀地看到2個事件的時間跨度,而第2種重疊排列的顯示方式則無法反映出第1個事件在何時結束,用戶必須借助文字信息才能做出判斷。不能想象,在更多事件之間存在更多重疊的情況下,第2種排列顯示方式對于用戶來說是毫無意義的。

2 自適應寬度排列算法

自適應寬度排列方式的優點在于能夠通過調整事件在列表中的顯示寬度和水平位置來降低或避免事件顯示時的重疊。為此,可以通過2個步驟來實現:(1)查找在時間上存在重疊的事件,建立連續重疊事件集合;(2)根據重疊的情況安排事件顯示的寬度和水平位置。

2.1 連續重疊事件集合

如果事件A與事件B之間存在時間重疊,稱A與B直接重疊;如果事件B與事件C也直接重疊,則事件A重疊可達C;如果事件C重疊可達事件E,則事件A也重疊可達E。

圖2 連續重疊事件集合示例

連續重疊事件集合(以下簡稱為COE集合)是指在連續時間區域上,所有能夠通過重疊連接的事件所組成的集合。任意2個屬于該集合的事件A和B,至少滿足以下2個條件之一:①A和B直接重疊;②A重疊可達B。

如圖2所示,事件ABCDE形成了COE集合1,事件FH形成了COE集合2。值得指出的是,任何集合1中的事件都無法重疊達到任何集合2中的事件。

2.2 建立COE集合

定義COE集合類,該類維護一個事件數組evtList,存儲所有屬于該集合的事件,并按照事件發生時間順序排列。

建立COE集合的過程可以通過按照時間順序遍歷所有事件一次完成,其具體算法如下(JavaScript[2]偽代碼):

其中sortByTime方法將evts數組按事件起始先后排序;belongWhichCOE方法在coes數組中查找,返回傳入事件所屬的COE集合,如果未找到,則返回null;insert方法則將事件插入到COE集合中適當位置。

2.3 自適應寬度排列

建立COE集合數組后,需要為每個COE集合中的事件計算寬度和水平位置,為此需要根據各事件間的重疊情況對事件進行分列顯示,其具體算法如下(JavaScript偽代碼):

上述COE類的insert方法將完成事件的插入和列的建立與更新;findColumn方法用于尋找空隙的列來插入事件;而isOverlap方法則負責判斷列中是否有空隙能夠容納傳入的事件;最后layout算法完成對COE集合中事件的排列。

因此,最終整個算法可以歸納為如下過程。

[1] Google日歷在線系統,https://www.google.com/calendar/render?tab=mc

[2] John Resig. Versions of JavaScript. Ejohn.org, 2009

猜你喜歡
用戶方法
學習方法
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
捕魚
Camera360:拍出5億用戶
創業家(2015年10期)2015-02-27 07:55:08
100萬用戶
創業家(2015年10期)2015-02-27 07:54:39
主站蜘蛛池模板: 欧美α片免费观看| 中文字幕波多野不卡一区| 日本不卡在线播放| 亚洲国内精品自在自线官| 欧美三级视频在线播放| 亚洲欧美日韩天堂| 在线a网站| 中文字幕乱码二三区免费| 亚洲国产成人综合精品2020 | a毛片免费观看| 波多野结衣亚洲一区| 亚洲视频二| 久久亚洲欧美综合| 精品久久久久久久久久久| 精品国产黑色丝袜高跟鞋| 欧美亚洲欧美| 欧美午夜视频| 欧美精品综合视频一区二区| 香蕉久久永久视频| 中文字幕无线码一区| 丝袜国产一区| 欧美成人h精品网站| 久久精品国产亚洲AV忘忧草18| 中文字幕伦视频| 2019年国产精品自拍不卡| 2020久久国产综合精品swag| 国产精品毛片一区| 国产精品丝袜视频| 国产成人禁片在线观看| 香蕉eeww99国产在线观看| 99成人在线观看| 亚洲天堂伊人| 久久先锋资源| 亚洲无限乱码一二三四区| 欧美性天天| 久久亚洲美女精品国产精品| 啪啪免费视频一区二区| 免费无遮挡AV| av一区二区三区高清久久| 国产精品亚洲综合久久小说| 亚洲一区二区成人| 日本一区二区三区精品视频| 激情综合五月网| 国产综合亚洲欧洲区精品无码| 亚洲人成在线精品| 伊人久久久大香线蕉综合直播| 国产成人夜色91| 久久香蕉国产线看观看亚洲片| 国产喷水视频| 国产国产人在线成免费视频狼人色| 丁香五月婷婷激情基地| 福利小视频在线播放| 伊人久久婷婷五月综合97色| 国产成人精品综合| av免费在线观看美女叉开腿| 国产91在线|日本| 亚洲成人www| 婷婷五月在线视频| 亚洲制服丝袜第一页| jizz在线观看| 国产不卡一级毛片视频| 国产美女精品在线| 久草视频中文| 国产精品无码制服丝袜| 四虎亚洲国产成人久久精品| 国产毛片片精品天天看视频| 中文成人无码国产亚洲| 亚洲综合专区| 国产成人高清精品免费| 又爽又大又黄a级毛片在线视频| 欧美日韩亚洲综合在线观看| аv天堂最新中文在线| 中文字幕佐山爱一区二区免费| 亚洲精品福利网站| 日韩精品专区免费无码aⅴ| 亚洲日韩久久综合中文字幕| 女人18一级毛片免费观看| 国产真实二区一区在线亚洲| 欧美伦理一区| AV无码无在线观看免费| 天天干天天色综合网| 国产精品亚洲精品爽爽|