📄 japanese-eras.js
字号:
/*==================================================
* 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 + -