⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 japanese-eras.js

📁 javascript实现的关于时间线的简单例子。
💻 JS
📖 第 1 页 / 共 2 页
字号:
/*==================================================
 *  Japanese Era Date Labeller
 *==================================================
 */

Timeline.JapaneseEraDateLabeller = function(locale, timeZone, useRomanizedName) {
    var o = new Timeline.GregorianDateLabeller(locale, timeZone);
    
    o._useRomanizedName = (useRomanizedName);
    o._oldLabelInterval = o.labelInterval;
    o.labelInterval = Timeline.JapaneseEraDateLabeller._labelInterval;
    
    return o;
};

Timeline.JapaneseEraDateLabeller._labelInterval = function(date, intervalUnit) {
    var text;
    var emphasized = false;
    
    var date2 = Timeline.DateTime.removeTimeZoneOffset(date, this._timeZone);
    
    switch(intervalUnit) {
    case Timeline.DateTime.YEAR:
    case Timeline.DateTime.DECADE:
    case Timeline.DateTime.CENTURY:
    case Timeline.DateTime.MILLENNIUM:
        var y = date2.getUTCFullYear();
        if (y >= Timeline.JapaneseEraDateLabeller._eras.elementAt(0).startingYear) {
            var eraIndex = Timeline.JapaneseEraDateLabeller._eras.find(function(era) {
                    return era.startingYear - y;
                }
            );
            if (eraIndex < Timeline.JapaneseEraDateLabeller._eras.length()) {
                var era = Timeline.JapaneseEraDateLabeller._eras.elementAt(eraIndex);
                if (y < era.startingYear) {
                    era = Timeline.JapaneseEraDateLabeller._eras.elementAt(eraIndex - 1);
                }
            } else {
                var era = Timeline.JapaneseEraDateLabeller._eras.elementAt(eraIndex - 1);
            }
            
            text = (this._useRomanizedName ? era.romanizedName : era.japaneseName) + " " + (y - era.startingYear + 1);
            emphasized = intervalUnit == Timeline.DateTime.YEAR && y == era.startingYear;
            break;
        } // else, fall through
    default:
        return this._oldLabelInterval(date, intervalUnit);
    }
    
    return { text: text, emphasized: emphasized };
};

/*==================================================
 *  Japanese Era Ether Painter
 *==================================================
 */
 
Timeline.JapaneseEraEtherPainter = function(params, band, timeline) {
    this._params = params;
    this._theme = params.theme;
};

Timeline.JapaneseEraEtherPainter.prototype.initialize = function(band, timeline) {
    this._band = band;
    this._timeline = timeline;
    
    this._backgroundLayer = band.createLayerDiv(0);
    this._backgroundLayer.setAttribute("name", "ether-background"); // for debugging
    this._backgroundLayer.style.background = this._theme.ether.backgroundColors[band.getIndex()];
    
    this._markerLayer = null;
    this._lineLayer = null;
    
    var align = ("align" in this._params) ? this._params.align : 
        this._theme.ether.interval.marker[timeline.isHorizontal() ? "hAlign" : "vAlign"];
    var showLine = ("showLine" in this._params) ? this._params.showLine : 
        this._theme.ether.interval.line.show;
        
    this._intervalMarkerLayout = new Timeline.EtherIntervalMarkerLayout(
        this._timeline, this._band, this._theme, align, showLine);
        
    this._highlight = new Timeline.EtherHighlight(
        this._timeline, this._band, this._theme, this._backgroundLayer);
}

Timeline.JapaneseEraEtherPainter.prototype.setHighlight = function(startDate, endDate) {
    this._highlight.position(startDate, endDate);
}

Timeline.JapaneseEraEtherPainter.prototype.paint = function() {
    if (this._markerLayer) {
        this._band.removeLayerDiv(this._markerLayer);
    }
    this._markerLayer = this._band.createLayerDiv(100);
    this._markerLayer.setAttribute("name", "ether-markers"); // for debugging
    this._markerLayer.style.display = "none";
    
    if (this._lineLayer) {
        this._band.removeLayerDiv(this._lineLayer);
    }
    this._lineLayer = this._band.createLayerDiv(1);
    this._lineLayer.setAttribute("name", "ether-lines"); // for debugging
    this._lineLayer.style.display = "none";
    
    var minYear = this._band.getMinDate().getUTCFullYear();
    var maxYear = this._band.getMaxDate().getUTCFullYear();
    var eraIndex = Timeline.JapaneseEraDateLabeller._eras.find(function(era) {
            return era.startingYear - minYear;
        }
    );
    
    var l = Timeline.JapaneseEraDateLabeller._eras.length();
    for (var i = eraIndex; i < l; i++) {
        var era = Timeline.JapaneseEraDateLabeller._eras.elementAt(i);
        if (era.startingYear > maxYear) {
            break;
        }
        
        var d = new Date(0);
        d.setUTCFullYear(era.startingYear);
        
        var labeller = {
            labelInterval: function(date, intervalUnit) {
                return {
                    text: era.japaneseName,
                    emphasized: true
                };
            }
        };
        
        this._intervalMarkerLayout.createIntervalMarker(
            d, labeller, Timeline.DateTime.YEAR, this._markerLayer, this._lineLayer);
    }
    this._markerLayer.style.display = "block";
    this._lineLayer.style.display = "block";
};

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


Timeline.JapaneseEraDateLabeller._eras = new Timeline.SortedArray(
    function(e1, e2) {
        return e1.startingYear - e2.startingYear;
    },
    [
        { startingYear: 645, japaneseName: '大化', romanizedName: "Taika" },
        { startingYear: 650, japaneseName: '白雉', romanizedName: "Hakuchi" },
        { startingYear: 686, japaneseName: '朱鳥', romanizedName: "Shuchō" },
        { startingYear: 701, japaneseName: '大宝', romanizedName: "Taihō" },
        { startingYear: 704, japaneseName: '慶雲', romanizedName: "Keiun" },
        { startingYear: 708, japaneseName: '和銅', romanizedName: "Wadō" },
        { startingYear: 715, japaneseName: '霊亀', romanizedName: "Reiki" },
        { startingYear: 717, japaneseName: '養老', romanizedName: "Yōrō" },
        { startingYear: 724, japaneseName: '神亀', romanizedName: "Jinki" },
        { startingYear: 729, japaneseName: '天平', romanizedName: "Tenpyō" },
        { startingYear: 749, japaneseName: '天平感宝', romanizedName: "Tenpyō-kanpō" },
        { startingYear: 749, japaneseName: '天平勝宝', romanizedName: "Tenpyō-shōhō" },
        { startingYear: 757, japaneseName: '天平宝字', romanizedName: "Tenpyō-hōji" },
        { startingYear: 765, japaneseName: '天平神護', romanizedName: "Tenpyō-jingo" },
        { startingYear: 767, japaneseName: '神護景雲', romanizedName: "Jingo-keiun" },
        { startingYear: 770, japaneseName: '宝亀', romanizedName: "Hōki" },
        { startingYear: 781, japaneseName: '天応', romanizedName: "Ten'ō" },
        { startingYear: 782, japaneseName: '延暦', romanizedName: "Enryaku" },
        { startingYear: 806, japaneseName: '大同', romanizedName: "Daidō" },
        { startingYear: 810, japaneseName: '弘仁', romanizedName: "Kōnin" },
        { startingYear: 824, japaneseName: '天長', romanizedName: "Tenchō" },
        { startingYear: 834, japaneseName: '承和', romanizedName: "Jōwa" },
        { startingYear: 848, japaneseName: '嘉祥', romanizedName: "Kajō" },
        { startingYear: 851, japaneseName: '仁寿', romanizedName: "Ninju" },
        { startingYear: 854, japaneseName: '斉衡', romanizedName: "Saikō" },
        { startingYear: 857, japaneseName: '天安', romanizedName: "Tennan" },
        { startingYear: 859, japaneseName: '貞観', romanizedName: "Jōgan" },
        { startingYear: 877, japaneseName: '元慶', romanizedName: "Gangyō" },
        { startingYear: 885, japaneseName: '仁和', romanizedName: "Ninna" },
        { startingYear: 889, japaneseName: '寛平', romanizedName: "Kanpyō" },
        { startingYear: 898, japaneseName: '昌泰', romanizedName: "Shōtai" },
        { startingYear: 901, japaneseName: '延喜', romanizedName: "Engi" },
        { startingYear: 923, japaneseName: '延長', romanizedName: "Enchō" },
        { startingYear: 931, japaneseName: '承平', romanizedName: "Jōhei" },
        { startingYear: 938, japaneseName: '天慶', romanizedName: "Tengyō" },
        { startingYear: 947, japaneseName: '天暦', romanizedName: "Tenryaku" },
        { startingYear: 957, japaneseName: '天徳', romanizedName: "Tentoku" },
        { startingYear: 961, japaneseName: '応和', romanizedName: "Ōwa" },
        { startingYear: 964, japaneseName: '康保', romanizedName: "Kōhō" },
        { startingYear: 968, japaneseName: '安和', romanizedName: "Anna" },
        { startingYear: 970, japaneseName: '天禄', romanizedName: "Tenroku" },
        { startingYear: 973, japaneseName: '天延', romanizedName: "Ten'en" },
        { startingYear: 976, japaneseName: '貞元', romanizedName: "Jōgen" },
        { startingYear: 978, japaneseName: '天元', romanizedName: "Tengen" },
        { startingYear: 983, japaneseName: '永観', romanizedName: "Eikan" },
        { startingYear: 985, japaneseName: '寛和', romanizedName: "Kanna" },
        { startingYear: 987, japaneseName: '永延', romanizedName: "Eien" },
        { startingYear: 988, japaneseName: '永祚', romanizedName: "Eiso" },
        { startingYear: 990, japaneseName: '正暦', romanizedName: "Shōryaku" },
        { startingYear: 995, japaneseName: '長徳', romanizedName: "Chōtoku" },
        { startingYear: 999, japaneseName: '長保', romanizedName: "Chōhō" },
        { startingYear: 1004, japaneseName: '寛弘', romanizedName: "Kankō" },

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -