亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? detailed-painter.js

?? javascript實(shí)現(xiàn)的關(guān)于時(shí)間線的簡單例子。
?? JS
?? 第 1 頁 / 共 2 頁
字號:
/*==================================================
 *  Detailed Event Painter
 *==================================================
 */

// Note: a number of features from original-painter 
//       are not yet implemented in detailed painter.
//       Eg classname, id attributes for icons, labels, tapes

Timeline.DetailedEventPainter = function(params) {
    this._params = params;
    this._onSelectListeners = [];
    
    this._filterMatcher = null;
    this._highlightMatcher = null;
    this._frc = null;
    
    this._eventIdToElmt = {};
};

Timeline.DetailedEventPainter.prototype.initialize = function(band, timeline) {
    this._band = band;
    this._timeline = timeline;
    
    this._backLayer = null;
    this._eventLayer = null;
    this._lineLayer = null;
    this._highlightLayer = null;
    
    this._eventIdToElmt = null;
};

Timeline.DetailedEventPainter.prototype.getType = function() {
    return 'detailed';
};

Timeline.DetailedEventPainter.prototype.addOnSelectListener = function(listener) {
    this._onSelectListeners.push(listener);
};

Timeline.DetailedEventPainter.prototype.removeOnSelectListener = function(listener) {
    for (var i = 0; i < this._onSelectListeners.length; i++) {
        if (this._onSelectListeners[i] == listener) {
            this._onSelectListeners.splice(i, 1);
            break;
        }
    }
};

Timeline.DetailedEventPainter.prototype.getFilterMatcher = function() {
    return this._filterMatcher;
};

Timeline.DetailedEventPainter.prototype.setFilterMatcher = function(filterMatcher) {
    this._filterMatcher = filterMatcher;
};

Timeline.DetailedEventPainter.prototype.getHighlightMatcher = function() {
    return this._highlightMatcher;
};

Timeline.DetailedEventPainter.prototype.setHighlightMatcher = function(highlightMatcher) {
    this._highlightMatcher = highlightMatcher;
};

Timeline.DetailedEventPainter.prototype.paint = function() {
    var eventSource = this._band.getEventSource();
    if (eventSource == null) {
        return;
    }
    
    this._eventIdToElmt = {};
    this._prepareForPainting();
    
    var eventTheme = this._params.theme.event;
    var trackHeight = Math.max(eventTheme.track.height, this._frc.getLineHeight());
    var metrics = {
        trackOffset:    Math.round(this._band.getViewWidth() / 2 - trackHeight / 2),
        trackHeight:    trackHeight,
        trackGap:       eventTheme.track.gap,
        trackIncrement: trackHeight + eventTheme.track.gap,
        icon:           eventTheme.instant.icon,
        iconWidth:      eventTheme.instant.iconWidth,
        iconHeight:     eventTheme.instant.iconHeight,
        labelWidth:     eventTheme.label.width
    }
    
    var minDate = this._band.getMinDate();
    var maxDate = this._band.getMaxDate();
    
    var filterMatcher = (this._filterMatcher != null) ? 
        this._filterMatcher :
        function(evt) { return true; };
    var highlightMatcher = (this._highlightMatcher != null) ? 
        this._highlightMatcher :
        function(evt) { return -1; };
    
    var iterator = eventSource.getEventReverseIterator(minDate, maxDate);
    while (iterator.hasNext()) {
        var evt = iterator.next();
        if (filterMatcher(evt)) {
            this.paintEvent(evt, metrics, this._params.theme, highlightMatcher(evt));
        }
    }
    
    this._highlightLayer.style.display = "block";
    this._lineLayer.style.display = "block";
    this._eventLayer.style.display = "block";
    // update the band object for max number of tracks in this section of the ether
    this._band.updateEventTrackInfo(this._lowerTracks.length + this._upperTracks.length,
                                 metrics.trackIncrement); 
};

Timeline.DetailedEventPainter.prototype.softPaint = function() {
};

Timeline.DetailedEventPainter.prototype._prepareForPainting = function() {
    var band = this._band;
        
    if (this._backLayer == null) {
        this._backLayer = this._band.createLayerDiv(0, "timeline-band-events");
        this._backLayer.style.visibility = "hidden";
        
        var eventLabelPrototype = document.createElement("span");
        eventLabelPrototype.className = "timeline-event-label";
        this._backLayer.appendChild(eventLabelPrototype);
        this._frc = SimileAjax.Graphics.getFontRenderingContext(eventLabelPrototype);
    }
    this._frc.update();
    this._lowerTracks = [];
    this._upperTracks = [];
    
    if (this._highlightLayer != null) {
        band.removeLayerDiv(this._highlightLayer);
    }
    this._highlightLayer = band.createLayerDiv(105, "timeline-band-highlights");
    this._highlightLayer.style.display = "none";
    
    if (this._lineLayer != null) {
        band.removeLayerDiv(this._lineLayer);
    }
    this._lineLayer = band.createLayerDiv(110, "timeline-band-lines");
    this._lineLayer.style.display = "none";
    
    if (this._eventLayer != null) {
        band.removeLayerDiv(this._eventLayer);
    }
    this._eventLayer = band.createLayerDiv(110, "timeline-band-events");
    this._eventLayer.style.display = "none";
};

Timeline.DetailedEventPainter.prototype.paintEvent = function(evt, metrics, theme, highlightIndex) {
    if (evt.isInstant()) {
        this.paintInstantEvent(evt, metrics, theme, highlightIndex);
    } else {
        this.paintDurationEvent(evt, metrics, theme, highlightIndex);
    }
};
    
Timeline.DetailedEventPainter.prototype.paintInstantEvent = function(evt, metrics, theme, highlightIndex) {
    if (evt.isImprecise()) {
        this.paintImpreciseInstantEvent(evt, metrics, theme, highlightIndex);
    } else {
        this.paintPreciseInstantEvent(evt, metrics, theme, highlightIndex);
    }
}

Timeline.DetailedEventPainter.prototype.paintDurationEvent = function(evt, metrics, theme, highlightIndex) {
    if (evt.isImprecise()) {
        this.paintImpreciseDurationEvent(evt, metrics, theme, highlightIndex);
    } else {
        this.paintPreciseDurationEvent(evt, metrics, theme, highlightIndex);
    }
}
    
Timeline.DetailedEventPainter.prototype.paintPreciseInstantEvent = function(evt, metrics, theme, highlightIndex) {
    var doc = this._timeline.getDocument();
    var text = evt.getText();
    
    var startDate = evt.getStart();
    var startPixel = Math.round(this._band.dateToPixelOffset(startDate));
    var iconRightEdge = Math.round(startPixel + metrics.iconWidth / 2);
    var iconLeftEdge = Math.round(startPixel - metrics.iconWidth / 2);
    
    var labelSize = this._frc.computeSize(text);
    var iconTrack = this._findFreeTrackForSolid(iconRightEdge, startPixel);
    var iconElmtData = this._paintEventIcon(evt, iconTrack, iconLeftEdge, metrics, theme);
    
    var labelLeft = iconRightEdge + theme.event.label.offsetFromLine;
    var labelTrack = iconTrack;
    
    var iconTrackData = this._getTrackData(iconTrack);
    if (Math.min(iconTrackData.solid, iconTrackData.text) >= labelLeft + labelSize.width) { // label on the same track, to the right of icon
        iconTrackData.solid = iconLeftEdge;
        iconTrackData.text = labelLeft;
    } else { // label on a different track, below icon
        iconTrackData.solid = iconLeftEdge;
        
        labelLeft = startPixel + theme.event.label.offsetFromLine;
        labelTrack = this._findFreeTrackForText(iconTrack, labelLeft + labelSize.width, function(t) { t.line = startPixel - 2; });
        this._getTrackData(labelTrack).text = iconLeftEdge;
        
        this._paintEventLine(evt, startPixel, iconTrack, labelTrack, metrics, theme);
    }
    
    var labelTop = Math.round(
        metrics.trackOffset + labelTrack * metrics.trackIncrement + 
        metrics.trackHeight / 2 - labelSize.height / 2);
        
    var labelElmtData = this._paintEventLabel(evt, text, labelLeft, labelTop, labelSize.width, labelSize.height, theme);

    var self = this;
    var clickHandler = function(elmt, domEvt, target) {
        return self._onClickInstantEvent(iconElmtData.elmt, domEvt, evt);
    };
    SimileAjax.DOM.registerEvent(iconElmtData.elmt, "mousedown", clickHandler);
    SimileAjax.DOM.registerEvent(labelElmtData.elmt, "mousedown", clickHandler);
    
    this._createHighlightDiv(highlightIndex, iconElmtData, theme);
    
    this._eventIdToElmt[evt.getID()] = iconElmtData.elmt;
};

Timeline.DetailedEventPainter.prototype.paintImpreciseInstantEvent = function(evt, metrics, theme, highlightIndex) {
    var doc = this._timeline.getDocument();
    var text = evt.getText();
    
    var startDate = evt.getStart();
    var endDate = evt.getEnd();
    var startPixel = Math.round(this._band.dateToPixelOffset(startDate));
    var endPixel = Math.round(this._band.dateToPixelOffset(endDate));
    
    var iconRightEdge = Math.round(startPixel + metrics.iconWidth / 2);
    var iconLeftEdge = Math.round(startPixel - metrics.iconWidth / 2);
    
    var labelSize = this._frc.computeSize(text);
    var iconTrack = this._findFreeTrackForSolid(endPixel, startPixel);
    
    var tapeElmtData = this._paintEventTape(evt, iconTrack, startPixel, endPixel, 
        theme.event.instant.impreciseColor, theme.event.instant.impreciseOpacity, metrics, theme);
    var iconElmtData = this._paintEventIcon(evt, iconTrack, iconLeftEdge, metrics, theme);
    
    var iconTrackData = this._getTrackData(iconTrack);
    iconTrackData.solid = iconLeftEdge;
    
    var labelLeft = iconRightEdge + theme.event.label.offsetFromLine;
    var labelRight = labelLeft + labelSize.width;
    var labelTrack;
    if (labelRight < endPixel) {
        labelTrack = iconTrack;
    } else {
        labelLeft = startPixel + theme.event.label.offsetFromLine;
        labelRight = labelLeft + labelSize.width;
    
        labelTrack = this._findFreeTrackForText(iconTrack, labelRight, function(t) { t.line = startPixel - 2; });
        this._getTrackData(labelTrack).text = iconLeftEdge;
        
        this._paintEventLine(evt, startPixel, iconTrack, labelTrack, metrics, theme);
    }
    var labelTop = Math.round(
        metrics.trackOffset + labelTrack * metrics.trackIncrement + 
        metrics.trackHeight / 2 - labelSize.height / 2);
        
    var labelElmtData = this._paintEventLabel(evt, text, labelLeft, labelTop, labelSize.width, labelSize.height, theme);
    
    var self = this;
    var clickHandler = function(elmt, domEvt, target) {
        return self._onClickInstantEvent(iconElmtData.elmt, domEvt, evt);
    };
    SimileAjax.DOM.registerEvent(iconElmtData.elmt, "mousedown", clickHandler);
    SimileAjax.DOM.registerEvent(tapeElmtData.elmt, "mousedown", clickHandler);
    SimileAjax.DOM.registerEvent(labelElmtData.elmt, "mousedown", clickHandler);
    
    this._createHighlightDiv(highlightIndex, iconElmtData, theme);
    
    this._eventIdToElmt[evt.getID()] = iconElmtData.elmt;
};

Timeline.DetailedEventPainter.prototype.paintPreciseDurationEvent = function(evt, metrics, theme, highlightIndex) {
    var doc = this._timeline.getDocument();
    var text = evt.getText();
    
    var startDate = evt.getStart();
    var endDate = evt.getEnd();
    var startPixel = Math.round(this._band.dateToPixelOffset(startDate));
    var endPixel = Math.round(this._band.dateToPixelOffset(endDate));
    
    var labelSize = this._frc.computeSize(text);
    var tapeTrack = this._findFreeTrackForSolid(endPixel);
    var color = evt.getColor();
    color = color != null ? color : theme.event.duration.color;
    
    var tapeElmtData = this._paintEventTape(evt, tapeTrack, startPixel, endPixel, color, 100, metrics, theme);
    
    var tapeTrackData = this._getTrackData(tapeTrack);
    tapeTrackData.solid = startPixel;
    
    var labelLeft = startPixel + theme.event.label.offsetFromLine;
    var labelTrack = this._findFreeTrackForText(tapeTrack, labelLeft + labelSize.width, function(t) { t.line = startPixel - 2; });
    this._getTrackData(labelTrack).text = startPixel - 2;
    
    this._paintEventLine(evt, startPixel, tapeTrack, labelTrack, metrics, theme);
    
    var labelTop = Math.round(
        metrics.trackOffset + labelTrack * metrics.trackIncrement + 
        metrics.trackHeight / 2 - labelSize.height / 2);
        
    var labelElmtData = this._paintEventLabel(evt, text, labelLeft, labelTop, labelSize.width, labelSize.height, theme);

    var self = this;
    var clickHandler = function(elmt, domEvt, target) {
        return self._onClickDurationEvent(tapeElmtData.elmt, domEvt, evt);
    };
    SimileAjax.DOM.registerEvent(tapeElmtData.elmt, "mousedown", clickHandler);
    SimileAjax.DOM.registerEvent(labelElmtData.elmt, "mousedown", clickHandler);
    
    this._createHighlightDiv(highlightIndex, tapeElmtData, theme);
    
    this._eventIdToElmt[evt.getID()] = tapeElmtData.elmt;
};

Timeline.DetailedEventPainter.prototype.paintImpreciseDurationEvent = function(evt, metrics, theme, highlightIndex) {
    var doc = this._timeline.getDocument();
    var text = evt.getText();
    
    var startDate = evt.getStart();
    var latestStartDate = evt.getLatestStart();
    var endDate = evt.getEnd();
    var earliestEndDate = evt.getEarliestEnd();
    
    var startPixel = Math.round(this._band.dateToPixelOffset(startDate));
    var latestStartPixel = Math.round(this._band.dateToPixelOffset(latestStartDate));
    var endPixel = Math.round(this._band.dateToPixelOffset(endDate));
    var earliestEndPixel = Math.round(this._band.dateToPixelOffset(earliestEndDate));
    
    var labelSize = this._frc.computeSize(text);
    var tapeTrack = this._findFreeTrackForSolid(endPixel);
    var color = evt.getColor();
    color = color != null ? color : theme.event.duration.color;
    
    var impreciseTapeElmtData = this._paintEventTape(evt, tapeTrack, startPixel, endPixel, 
        theme.event.duration.impreciseColor, theme.event.duration.impreciseOpacity, metrics, theme);
    var tapeElmtData = this._paintEventTape(evt, tapeTrack, latestStartPixel, earliestEndPixel, color, 100, metrics, theme);
    
    var tapeTrackData = this._getTrackData(tapeTrack);
    tapeTrackData.solid = startPixel;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品一区二区三区四区| 亚洲三级免费电影| 欧美日韩一区二区欧美激情| 国产成人av电影在线播放| 午夜免费欧美电影| 一区二区理论电影在线观看| 国产精品乱子久久久久| 久久麻豆一区二区| 亚洲欧美日韩精品久久久久| 国产精品丝袜久久久久久app| 欧美本精品男人aⅴ天堂| 日韩精品综合一本久道在线视频| 91精品国产综合久久精品图片| 91福利视频久久久久| 99精品热视频| 91美女在线视频| 91亚洲国产成人精品一区二三 | 麻豆精品国产91久久久久久| 亚洲一区二区影院| 亚洲人成伊人成综合网小说| 1000精品久久久久久久久| 国产精品成人免费| 亚洲人成在线观看一区二区| 亚洲女爱视频在线| 亚洲综合精品久久| 午夜在线电影亚洲一区| 亚洲 欧美综合在线网络| 亚洲国产cao| 日韩二区三区四区| 美女视频一区二区| 韩国欧美国产一区| 精品亚洲国产成人av制服丝袜| 久久成人18免费观看| 激情综合五月婷婷| 成人综合婷婷国产精品久久蜜臀| 成人网男人的天堂| 91福利区一区二区三区| 色综合天天综合色综合av| 日韩免费电影网站| 一区二区三区四区视频精品免费| 日韩欧美中文字幕制服| 欧美日韩一区二区三区四区五区| 欧美女孩性生活视频| 91精品国产欧美日韩| 日韩一区二区精品葵司在线| 中文在线一区二区| 亚洲一区在线视频观看| 毛片av一区二区| 国产成人综合精品三级| 色综合久久九月婷婷色综合| 欧美久久久一区| 精品国产制服丝袜高跟| 亚洲国产精品av| 亚洲午夜羞羞片| 麻豆成人91精品二区三区| 国产91精品精华液一区二区三区| 日本精品免费观看高清观看| 欧美日本韩国一区二区三区视频| 精品国产乱码久久久久久免费 | wwww国产精品欧美| 国产精品成人一区二区艾草| 日韩高清一区二区| 国产一区二区三区免费播放| 91香蕉视频mp4| 日韩一级在线观看| 国产精品剧情在线亚洲| 一本到不卡免费一区二区| **欧美大码日韩| 美女精品一区二区| 91久久国产最好的精华液| 久久精品一区二区三区av| 午夜欧美在线一二页| 99久精品国产| 中文字幕高清不卡| 黑人巨大精品欧美黑白配亚洲| 欧美日韩久久久| 亚洲欧美一区二区三区极速播放 | 天天综合色天天| 91浏览器打开| 中文av一区二区| 国内一区二区在线| 日韩无一区二区| 视频一区二区三区入口| 色播五月激情综合网| 中文字幕在线一区二区三区| 国产一区二区三区四区五区美女| 制服丝袜一区二区三区| 亚洲国产aⅴ成人精品无吗| 91网站最新地址| **欧美大码日韩| 99天天综合性| 国产精品美女久久久久久久久| 国产精品66部| 久久久夜色精品亚洲| 久久99久久99小草精品免视看| 91精品国产色综合久久不卡电影| 亚洲r级在线视频| 欧美视频你懂的| 午夜视频久久久久久| 欧美日韩另类一区| 爽好久久久欧美精品| 欧美精品日日鲁夜夜添| 亚洲大片精品永久免费| 欧美日韩一区二区三区四区 | 亚洲一二三区视频在线观看| 91极品美女在线| 亚洲与欧洲av电影| 欧美三级电影在线看| 亚洲高清久久久| 91麻豆精品国产91久久久 | eeuss鲁一区二区三区| 国产精品理论片在线观看| 97se亚洲国产综合自在线不卡 | 国产一区二区中文字幕| 久久综合久久综合亚洲| 国产精品白丝jk白祙喷水网站| 国产午夜精品理论片a级大结局| 国产精品99久久久| 国产精品乱码人人做人人爱 | 欧美成人女星排行榜| 国内外精品视频| 亚洲国产精品v| 91久久免费观看| 日韩成人免费电影| 精品美女一区二区| 成人av在线一区二区三区| 亚洲精品一二三四区| 欧美日本精品一区二区三区| 久久aⅴ国产欧美74aaa| 国产农村妇女毛片精品久久麻豆| 99久久精品国产一区二区三区| 亚洲综合精品自拍| 日韩免费观看高清完整版在线观看| 国产精品一区二区在线播放| 亚洲色图在线看| 欧美日韩精品是欧美日韩精品| 蜜桃在线一区二区三区| 欧美—级在线免费片| 欧美在线综合视频| 九九视频精品免费| 一区精品在线播放| 51精品国自产在线| 国产91清纯白嫩初高中在线观看| 亚洲免费高清视频在线| 日韩一区二区三区视频在线观看| 成人午夜激情片| 婷婷丁香激情综合| 国产欧美日韩视频在线观看| 欧美综合欧美视频| 狠狠色狠狠色综合日日91app| 综合欧美亚洲日本| 日韩欧美自拍偷拍| 99精品在线免费| 久久99精品视频| 亚洲一区二区三区四区的| 久久在线观看免费| 欧美日韩国产一级片| 国产91精品欧美| 日本欧美一区二区在线观看| 国产精品福利影院| 日韩一区二区高清| 色综合天天综合狠狠| 九九视频精品免费| 亚洲第一福利一区| 国产精品久久一卡二卡| 制服.丝袜.亚洲.中文.综合| 不卡免费追剧大全电视剧网站| 琪琪一区二区三区| 亚洲女子a中天字幕| 久久综合资源网| 91精品婷婷国产综合久久| 97se亚洲国产综合自在线| 国内成人精品2018免费看| 亚洲电影你懂得| 亚洲人成在线播放网站岛国| 久久久高清一区二区三区| 欧美一区二区三区成人| 在线看国产日韩| av成人动漫在线观看| 国产精品18久久久久久久久久久久 | 成人精品视频.| 极品销魂美女一区二区三区| 偷窥少妇高潮呻吟av久久免费| 国产精品久久毛片a| 久久久精品2019中文字幕之3| 日韩视频123| 欧美日韩国产免费一区二区| 97国产一区二区| 成人h动漫精品一区二区| 国产精品一区2区| 激情av综合网| 麻豆久久久久久| 蜜臀va亚洲va欧美va天堂 | av一二三不卡影片| 国产剧情在线观看一区二区| 麻豆91在线观看| 蜜臀av性久久久久蜜臀aⅴ| 婷婷久久综合九色综合绿巨人 | 一二三四社区欧美黄| 亚洲品质自拍视频|