You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by ms...@apache.org on 2017/05/17 15:29:58 UTC
svn commit: r1795424 [24/29] - in /openoffice/ooo-site/trunk/content:
scripts/api.simile-widgets.org/ scripts/api.simile-widgets.org/ajax/
scripts/api.simile-widgets.org/ajax/2.2.1.fake/
scripts/api.simile-widgets.org/ajax/2.2.1/ scripts/api.simile-wid...
Added: openoffice/ooo-site/trunk/content/scripts/api.simile-widgets.org/timeline/2.3.1/scripts/ext/japanese-eras.js
URL: http://svn.apache.org/viewvc/openoffice/ooo-site/trunk/content/scripts/api.simile-widgets.org/timeline/2.3.1/scripts/ext/japanese-eras.js?rev=1795424&view=auto
==============================================================================
--- openoffice/ooo-site/trunk/content/scripts/api.simile-widgets.org/timeline/2.3.1/scripts/ext/japanese-eras.js (added)
+++ openoffice/ooo-site/trunk/content/scripts/api.simile-widgets.org/timeline/2.3.1/scripts/ext/japanese-eras.js Wed May 17 15:29:56 2017
@@ -0,0 +1,395 @@
+/*==================================================
+ * 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Å" },
+ { startingYear: 1012, japaneseName: 'é·å', romanizedName: "ChÅwa" },
+ { startingYear: 1017, japaneseName: 'å¯ä»', romanizedName: "Kannin" },
+ { startingYear: 1021, japaneseName: 'æ²»å®', romanizedName: "Jian" },
+ { startingYear: 1024, japaneseName: 'ä¸å¯¿', romanizedName: "Manju" },
+ { startingYear: 1028, japaneseName: 'é·å
', romanizedName: "ChÅgen" },
+ { startingYear: 1037, japaneseName: 'é·æ¦', romanizedName: "ChÅryaku" },
+ { startingYear: 1040, japaneseName: 'é·ä¹
', romanizedName: "ChÅkyÅ«" },
+ { startingYear: 1044, japaneseName: 'å¯å¾³', romanizedName: "Kantoku" },
+ { startingYear: 1046, japaneseName: 'æ°¸æ¿', romanizedName: "EishÅ" },
+ { startingYear: 1053, japaneseName: '天å', romanizedName: "Tengi" },
+ { startingYear: 1058, japaneseName: '康平', romanizedName: "KÅhei" },
+ { startingYear: 1065, japaneseName: 'æ²»æ¦', romanizedName: "Jiryaku" },
+ { startingYear: 1069, japaneseName: '延ä¹
', romanizedName: "Enkyū" },
+ { startingYear: 1074, japaneseName: 'æ¿ä¿', romanizedName: "JÅhÅ" },
+ { startingYear: 1077, japaneseName: 'æ¿æ¦', romanizedName: "JÅryaku" },
+ { startingYear: 1081, japaneseName: 'æ°¸ä¿', romanizedName: "EihÅ" },
+ { startingYear: 1084, japaneseName: 'å¿å¾³', romanizedName: "Åtoku" },
+ { startingYear: 1087, japaneseName: 'å¯æ²»', romanizedName: "Kanji" },
+ { startingYear: 1094, japaneseName: 'åä¿', romanizedName: "KahÅ" },
+ { startingYear: 1096, japaneseName: 'æ°¸é·', romanizedName: "EichÅ" },
+ { startingYear: 1097, japaneseName: 'æ¿å¾³', romanizedName: "JÅtoku" },
+ { startingYear: 1099, japaneseName: '康å', romanizedName: "KÅwa" },
+ { startingYear: 1104, japaneseName: 'é·æ²»', romanizedName: "ChÅji" },
+ { startingYear: 1106, japaneseName: 'åæ¿', romanizedName: "KajÅ" },
+ { startingYear: 1108, japaneseName: '天ä»', romanizedName: "Tennin" },
+ { startingYear: 1110, japaneseName: '天永', romanizedName: "Ten'ei" },
+ { startingYear: 1113, japaneseName: 'æ°¸ä¹
', romanizedName: "Eikyū" },
+ { startingYear: 1118, japaneseName: 'å
æ°¸', romanizedName: "Gen'ei" },
+ { startingYear: 1120, japaneseName: 'ä¿å®', romanizedName: "HÅan" },
+ { startingYear: 1124, japaneseName: '天治', romanizedName: "Tenji" },
+ { startingYear: 1126, japaneseName: '大治', romanizedName: "Daiji" },
+ { startingYear: 1131, japaneseName: '天æ¿', romanizedName: "TenshÅ" },
+ { startingYear: 1132, japaneseName: 'é·æ¿', romanizedName: "ChÅshÅ" },
+ { startingYear: 1135, japaneseName: 'ä¿å»¶', romanizedName: "HÅen" },
+ { startingYear: 1141, japaneseName: '永治', romanizedName: "Eiji" },
+ { startingYear: 1142, japaneseName: '康治', romanizedName: "KÅji" },
+ { startingYear: 1144, japaneseName: '天é¤', romanizedName: "Ten'yÅ" },
+ { startingYear: 1145, japaneseName: 'ä¹
å®', romanizedName: "KyÅ«an" },
+ { startingYear: 1151, japaneseName: 'ä»å¹³', romanizedName: "Ninpei" },
+ { startingYear: 1154, japaneseName: 'ä¹
寿', romanizedName: "Kyūju" },
+ { startingYear: 1156, japaneseName: 'ä¿å
', romanizedName: "HÅgen" },
+ { startingYear: 1159, japaneseName: '平治', romanizedName: "Heiji" },
+ { startingYear: 1160, japaneseName: 'æ°¸æ¦', romanizedName: "Eiryaku" },
+ { startingYear: 1161, japaneseName: 'å¿ä¿', romanizedName: "ÅhÅ" },
+ { startingYear: 1163, japaneseName: 'é·å¯', romanizedName: "ChÅkan" },
+ { startingYear: 1165, japaneseName: 'æ°¸ä¸', romanizedName: "Eiman" },
+ { startingYear: 1166, japaneseName: 'ä»å®', romanizedName: "Ninnan" },
+ { startingYear: 1169, japaneseName: 'åå¿', romanizedName: "KaÅ" },
+ { startingYear: 1171, japaneseName: 'æ¿å®', romanizedName: "JÅan" },
+ { startingYear: 1175, japaneseName: 'å®å
', romanizedName: "Angen" },
+ { startingYear: 1177, japaneseName: 'æ²»æ¿', romanizedName: "JishÅ" },
+ { startingYear: 1181, japaneseName: 'é¤å', romanizedName: "YÅwa" },
+ { startingYear: 1182, japaneseName: '寿永', romanizedName: "Juei" },
+ { startingYear: 1184, japaneseName: 'å
æ¦', romanizedName: "Genryaku" },
+ { startingYear: 1185, japaneseName: 'ææ²»', romanizedName: "Bunji" },
+ { startingYear: 1190, japaneseName: '建ä¹
', romanizedName: "Kenkyū" },
+ { startingYear: 1199, japaneseName: 'æ£æ²»', romanizedName: "ShÅji" },
+ { startingYear: 1201, japaneseName: '建ä»', romanizedName: "Kennin" },
+ { startingYear: 1204, japaneseName: 'å
ä¹
', romanizedName: "Genkyū" },
+ { startingYear: 1206, japaneseName: '建永', romanizedName: "Ken'ei" },
+ { startingYear: 1207, japaneseName: 'æ¿å
', romanizedName: "JÅgen" },
+ { startingYear: 1211, japaneseName: '建æ¦', romanizedName: "Kenryaku" },
+ { startingYear: 1213, japaneseName: '建ä¿', romanizedName: "KenpÅ" },
+ { startingYear: 1219, japaneseName: 'æ¿ä¹
', romanizedName: "JÅkyÅ«" },
+ { startingYear: 1222, japaneseName: 'è²å¿', romanizedName: "JÅÅ" },
+ { startingYear: 1224, japaneseName: 'å
ä»', romanizedName: "Gennin" },
+ { startingYear: 1225, japaneseName: 'åç¦', romanizedName: "Karoku" },
+ { startingYear: 1227, japaneseName: 'å®è²', romanizedName: "Antei" },
+ { startingYear: 1229, japaneseName: 'å¯å', romanizedName: "Kanki" },
+ { startingYear: 1232, japaneseName: 'è²æ°¸', romanizedName: "JÅei" },
+ { startingYear: 1233, japaneseName: '天ç¦', romanizedName: "Tenpuku" },
+ { startingYear: 1234, japaneseName: 'ææ¦', romanizedName: "Bunryaku" },
+ { startingYear: 1235, japaneseName: 'åç¦', romanizedName: "Katei" },
+ { startingYear: 1238, japaneseName: 'æ¦ä»', romanizedName: "Ryakunin" },
+ { startingYear: 1239, japaneseName: '延å¿', romanizedName: "En'Å" },
+ { startingYear: 1240, japaneseName: 'ä»æ²»', romanizedName: "Ninji" },
+ { startingYear: 1243, japaneseName: 'å¯å
', romanizedName: "Kangen" },
+ { startingYear: 1247, japaneseName: 'å®æ²»', romanizedName: "HÅji" },
+ { startingYear: 1249, japaneseName: '建é·', romanizedName: "KenchÅ" },
+ { startingYear: 1256, japaneseName: '康å
', romanizedName: "KÅgen" },
+ { startingYear: 1257, japaneseName: 'æ£å', romanizedName: "ShÅka" },
+ { startingYear: 1259, japaneseName: 'æ£å
', romanizedName: "ShÅgen" },
+ { startingYear: 1260, japaneseName: 'æå¿', romanizedName: "Bun'Å" },
+ { startingYear: 1261, japaneseName: 'å¼é·', romanizedName: "KÅcho" },
+ { startingYear: 1264, japaneseName: 'ææ°¸', romanizedName: "Bun'ei" },
+ { startingYear: 1275, japaneseName: '建治', romanizedName: "Kenji" },
+ { startingYear: 1278, japaneseName: 'å¼å®', romanizedName: "KÅan" },
+ { startingYear: 1288, japaneseName: 'æ£å¿', romanizedName: "ShÅÅ" },
+ { startingYear: 1293, japaneseName: 'æ°¸ä»', romanizedName: "Einin" },
+ { startingYear: 1299, japaneseName: 'æ£å®', romanizedName: "ShÅan" },
+ { startingYear: 1302, japaneseName: 'ä¹¾å
', romanizedName: "Kengen" },
+ { startingYear: 1303, japaneseName: 'åå
', romanizedName: "Kagen" },
+ { startingYear: 1306, japaneseName: '徳治', romanizedName: "Tokuji" },
+ { startingYear: 1308, japaneseName: '延æ
¶', romanizedName: "Enkei" },
+ { startingYear: 1311, japaneseName: 'å¿é·', romanizedName: "ÅchÅ" },
+ { startingYear: 1312, japaneseName: 'æ£å', romanizedName: "ShÅwa" },
+ { startingYear: 1317, japaneseName: 'æä¿', romanizedName: "BunpÅ" },
+ { startingYear: 1319, japaneseName: 'å
å¿', romanizedName: "Gen'Å" },
+ { startingYear: 1321, japaneseName: 'å
亨', romanizedName: "GenkyÅ" },
+ { startingYear: 1324, japaneseName: 'æ£ä¸', romanizedName: "ShÅchÅ«" },
+ { startingYear: 1326, japaneseName: 'åæ¦', romanizedName: "Karyaku" },
+ { startingYear: 1329, japaneseName: 'å
å¾³', romanizedName: "Gentoku" },
+ { startingYear: 1331, japaneseName: 'å
å¼', romanizedName: "GenkÅ" },
+ { startingYear: 1334, japaneseName: '建æ¦', romanizedName: "Kenmu" },
+ { startingYear: 1336, japaneseName: '延å
', romanizedName: "Engen" },
+ { startingYear: 1340, japaneseName: 'èå½', romanizedName: "KÅkoku" },
+ { startingYear: 1346, japaneseName: 'æ£å¹³', romanizedName: "ShÅhei" },
+ { startingYear: 1370, japaneseName: '建徳', romanizedName: "Kentoku" },
+ { startingYear: 1372, japaneseName: 'æä¸', romanizedName: "BunchÅ«" },
+ { startingYear: 1375, japaneseName: '天æ', romanizedName: "Tenju" },
+ { startingYear: 1381, japaneseName: 'å¼å', romanizedName: "KÅwa" },
+ { startingYear: 1384, japaneseName: 'å
ä¸', romanizedName: "GenchÅ«" },
+ { startingYear: 1332, japaneseName: 'æ£æ
¶', romanizedName: "ShÅkei" },
+ { startingYear: 1338, japaneseName: 'æ¦å¿', romanizedName: "RyakuÅ" },
+ { startingYear: 1342, japaneseName: '康永', romanizedName: "KÅei" },
+ { startingYear: 1345, japaneseName: 'è²å', romanizedName: "JÅwa" },
+ { startingYear: 1350, japaneseName: '観å¿', romanizedName: "Kan'Å" },
+ { startingYear: 1352, japaneseName: 'æå', romanizedName: "Bunna" },
+ { startingYear: 1356, japaneseName: '延æ', romanizedName: "Enbun" },
+ { startingYear: 1361, japaneseName: '康å®', romanizedName: "KÅan" },
+ { startingYear: 1362, japaneseName: 'è²æ²»', romanizedName: "JÅji" },
+ { startingYear: 1368, japaneseName: 'å¿å®', romanizedName: "Åan" },
+ { startingYear: 1375, japaneseName: 'æ°¸å', romanizedName: "Eiwa" },
+ { startingYear: 1379, japaneseName: '康æ¦', romanizedName: "KÅryaku" },
+ { startingYear: 1381, japaneseName: '永徳', romanizedName: "Eitoku" },
+ { startingYear: 1384, japaneseName: 'è³å¾³', romanizedName: "Shitoku" },
+ { startingYear: 1387, japaneseName: 'åæ
¶', romanizedName: "Kakei" },
+ { startingYear: 1389, japaneseName: '康å¿', romanizedName: "KÅÅ" },
+ { startingYear: 1390, japaneseName: 'æå¾³', romanizedName: "Meitoku" },
+ { startingYear: 1394, japaneseName: 'å¿æ°¸', romanizedName: "Åei" },
+ { startingYear: 1428, japaneseName: 'æ£é·', romanizedName: "ShÅchÅ" },
+ { startingYear: 1429, japaneseName: '永享', romanizedName: "EikyÅ" },
+ { startingYear: 1441, japaneseName: 'åå', romanizedName: "Kakitsu" },
+ { startingYear: 1444, japaneseName: 'æå®', romanizedName: "Bunnan" },
+ { startingYear: 1449, japaneseName: 'å®å¾³', romanizedName: "HÅtoku" },
+ { startingYear: 1452, japaneseName: '享徳', romanizedName: "KyÅtoku" },
+ { startingYear: 1455, japaneseName: '康æ£', romanizedName: "KÅshÅ" },
+ { startingYear: 1457, japaneseName: 'é·ç¦', romanizedName: "ChÅroku" },
+ { startingYear: 1460, japaneseName: 'å¯æ£', romanizedName: "KanshÅ" },
+ { startingYear: 1466, japaneseName: 'ææ£', romanizedName: "BunshÅ" },
+ { startingYear: 1467, japaneseName: 'å¿ä»', romanizedName: "Ånin" },
+ { startingYear: 1469, japaneseName: 'ææ', romanizedName: "Bunmei" },
+ { startingYear: 1487, japaneseName: 'é·äº«', romanizedName: "ChÅkyÅ" },
+ { startingYear: 1489, japaneseName: '延徳', romanizedName: "Entoku" },
+ { startingYear: 1492, japaneseName: 'æå¿', romanizedName: "MeiÅ" },
+ { startingYear: 1501, japaneseName: 'æäº', romanizedName: "Bunki" },
+ { startingYear: 1504, japaneseName: 'æ°¸æ£', romanizedName: "EishÅ" },
+ { startingYear: 1521, japaneseName: '大永', romanizedName: "Daiei" },
+ { startingYear: 1528, japaneseName: '享ç¦', romanizedName: "KyÅroku" },
+ { startingYear: 1532, japaneseName: '天æ', romanizedName: "Tenbun" },
+ { startingYear: 1555, japaneseName: 'å¼æ²»', romanizedName: "KÅji" },
+ { startingYear: 1558, japaneseName: 'æ°¸ç¦', romanizedName: "Eiroku" },
+ { startingYear: 1570, japaneseName: 'å
äº', romanizedName: "Genki" },
+ { startingYear: 1573, japaneseName: '天æ£', romanizedName: "TenshÅ" },
+ { startingYear: 1592, japaneseName: 'æç¦', romanizedName: "Bunroku" },
+ { startingYear: 1596, japaneseName: 'æ
¶é·', romanizedName: "KeichÅ" },
+ { startingYear: 1615, japaneseName: 'å
å', romanizedName: "Genna" },
+ { startingYear: 1624, japaneseName: 'å¯æ°¸', romanizedName: "Kan'ei" },
+ { startingYear: 1644, japaneseName: 'æ£ä¿', romanizedName: "ShÅhÅ" },
+ { startingYear: 1648, japaneseName: 'æ
¶å®', romanizedName: "Keian" },
+ { startingYear: 1652, japaneseName: 'æ¿å¿', romanizedName: "JÅÅ" },
+ { startingYear: 1655, japaneseName: 'ææ¦', romanizedName: "Meireki" },
+ { startingYear: 1658, japaneseName: 'ä¸æ²»', romanizedName: "Manji" },
+ { startingYear: 1661, japaneseName: 'å¯æ', romanizedName: "Kanbun" },
+ { startingYear: 1673, japaneseName: '延å®', romanizedName: "EnpÅ" },
+ { startingYear: 1681, japaneseName: '天å', romanizedName: "Tenna" },
+ { startingYear: 1684, japaneseName: 'è²äº«', romanizedName: "JÅkyÅ" },
+ { startingYear: 1688, japaneseName: 'å
ç¦', romanizedName: "Genroku" },
+ { startingYear: 1704, japaneseName: 'å®æ°¸', romanizedName: "HÅei" },
+ { startingYear: 1711, japaneseName: 'æ£å¾³', romanizedName: "ShÅtoku" },
+ { startingYear: 1716, japaneseName: '享ä¿', romanizedName: "KyÅhÅ" },
+ { startingYear: 1736, japaneseName: 'å
æ', romanizedName: "Genbun" },
+ { startingYear: 1741, japaneseName: 'å¯ä¿', romanizedName: "KanpÅ" },
+ { startingYear: 1744, japaneseName: '延享', romanizedName: "EnkyÅ" },
+ { startingYear: 1748, japaneseName: 'å¯å»¶', romanizedName: "Kan'en" },
+ { startingYear: 1751, japaneseName: 'å®æ¦', romanizedName: "HÅreki" },
+ { startingYear: 1764, japaneseName: 'æå', romanizedName: "Meiwa" },
+ { startingYear: 1772, japaneseName: 'å®æ°¸', romanizedName: "An'ei" },
+ { startingYear: 1781, japaneseName: '天æ', romanizedName: "Tenmei" },
+ { startingYear: 1789, japaneseName: 'å¯æ¿', romanizedName: "Kansei" },
+ { startingYear: 1801, japaneseName: '享å', romanizedName: "KyÅwa" },
+ { startingYear: 1804, japaneseName: 'æå', romanizedName: "Bunka" },
+ { startingYear: 1818, japaneseName: 'ææ¿', romanizedName: "Bunsei" },
+ { startingYear: 1830, japaneseName: '天ä¿', romanizedName: "TenpÅ" },
+ { startingYear: 1844, japaneseName: 'å¼å', romanizedName: "KÅka" },
+ { startingYear: 1848, japaneseName: 'åæ°¸', romanizedName: "Kaei" },
+ { startingYear: 1854, japaneseName: 'å®æ¿', romanizedName: "Ansei" },
+ { startingYear: 1860, japaneseName: 'ä¸å»¶', romanizedName: "Man'en" },
+ { startingYear: 1861, japaneseName: 'æä¹
', romanizedName: "Bunkyū" },
+ { startingYear: 1864, japaneseName: 'å
æ²»', romanizedName: "Genji" },
+ { startingYear: 1865, japaneseName: 'æ
¶å¿', romanizedName: "KeiÅ" },
+ { startingYear: 1868, japaneseName: 'ææ²»', romanizedName: "Meiji" },
+ { startingYear: 1912, japaneseName: '大æ£', romanizedName: "TaishÅ" },
+ { startingYear: 1926, japaneseName: 'æå', romanizedName: "ShÅwa" },
+ { startingYear: 1989, japaneseName: 'å¹³æ', romanizedName: "Heisei" }
+ ]
+);
Added: openoffice/ooo-site/trunk/content/scripts/api.simile-widgets.org/timeline/2.3.1/scripts/labellers.js
URL: http://svn.apache.org/viewvc/openoffice/ooo-site/trunk/content/scripts/api.simile-widgets.org/timeline/2.3.1/scripts/labellers.js?rev=1795424&view=auto
==============================================================================
--- openoffice/ooo-site/trunk/content/scripts/api.simile-widgets.org/timeline/2.3.1/scripts/labellers.js (added)
+++ openoffice/ooo-site/trunk/content/scripts/api.simile-widgets.org/timeline/2.3.1/scripts/labellers.js Wed May 17 15:29:56 2017
@@ -0,0 +1,91 @@
+/*==================================================
+ * Gregorian Date Labeller
+ *==================================================
+ */
+
+Timeline.GregorianDateLabeller = function(locale, timeZone) {
+ this._locale = locale;
+ this._timeZone = timeZone;
+};
+
+Timeline.GregorianDateLabeller.monthNames = [];
+Timeline.GregorianDateLabeller.dayNames = [];
+Timeline.GregorianDateLabeller.labelIntervalFunctions = [];
+
+Timeline.GregorianDateLabeller.getMonthName = function(month, locale) {
+ return Timeline.GregorianDateLabeller.monthNames[locale][month];
+};
+
+Timeline.GregorianDateLabeller.prototype.labelInterval = function(date, intervalUnit) {
+ var f = Timeline.GregorianDateLabeller.labelIntervalFunctions[this._locale];
+ if (f == null) {
+ f = Timeline.GregorianDateLabeller.prototype.defaultLabelInterval;
+ }
+ return f.call(this, date, intervalUnit);
+};
+
+Timeline.GregorianDateLabeller.prototype.labelPrecise = function(date) {
+ return SimileAjax.DateTime.removeTimeZoneOffset(
+ date,
+ this._timeZone //+ (new Date().getTimezoneOffset() / 60)
+ ).toUTCString();
+};
+
+Timeline.GregorianDateLabeller.prototype.defaultLabelInterval = function(date, intervalUnit) {
+ var text;
+ var emphasized = false;
+
+ date = SimileAjax.DateTime.removeTimeZoneOffset(date, this._timeZone);
+
+ switch(intervalUnit) {
+ case SimileAjax.DateTime.MILLISECOND:
+ text = date.getUTCMilliseconds();
+ break;
+ case SimileAjax.DateTime.SECOND:
+ text = date.getUTCSeconds();
+ break;
+ case SimileAjax.DateTime.MINUTE:
+ var m = date.getUTCMinutes();
+ if (m == 0) {
+ text = date.getUTCHours() + ":00";
+ emphasized = true;
+ } else {
+ text = m;
+ }
+ break;
+ case SimileAjax.DateTime.HOUR:
+ text = date.getUTCHours() + "hr";
+ break;
+ case SimileAjax.DateTime.DAY:
+ text = Timeline.GregorianDateLabeller.getMonthName(date.getUTCMonth(), this._locale) + " " + date.getUTCDate();
+ break;
+ case SimileAjax.DateTime.WEEK:
+ text = Timeline.GregorianDateLabeller.getMonthName(date.getUTCMonth(), this._locale) + " " + date.getUTCDate();
+ break;
+ case SimileAjax.DateTime.MONTH:
+ var m = date.getUTCMonth();
+ if (m != 0) {
+ text = Timeline.GregorianDateLabeller.getMonthName(m, this._locale);
+ break;
+ } // else, fall through
+ case SimileAjax.DateTime.YEAR:
+ case SimileAjax.DateTime.DECADE:
+ case SimileAjax.DateTime.CENTURY:
+ case SimileAjax.DateTime.MILLENNIUM:
+ var y = date.getUTCFullYear();
+ if (y > 0) {
+ text = date.getUTCFullYear();
+ } else {
+ text = (1 - y) + "BC";
+ }
+ emphasized =
+ (intervalUnit == SimileAjax.DateTime.MONTH) ||
+ (intervalUnit == SimileAjax.DateTime.DECADE && y % 100 == 0) ||
+ (intervalUnit == SimileAjax.DateTime.CENTURY && y % 1000 == 0);
+ break;
+ default:
+ text = date.toUTCString();
+ }
+ return { text: text, emphasized: emphasized };
+}
+
Added: openoffice/ooo-site/trunk/content/scripts/api.simile-widgets.org/timeline/2.3.1/scripts/original-painter.js
URL: http://svn.apache.org/viewvc/openoffice/ooo-site/trunk/content/scripts/api.simile-widgets.org/timeline/2.3.1/scripts/original-painter.js?rev=1795424&view=auto
==============================================================================
--- openoffice/ooo-site/trunk/content/scripts/api.simile-widgets.org/timeline/2.3.1/scripts/original-painter.js (added)
+++ openoffice/ooo-site/trunk/content/scripts/api.simile-widgets.org/timeline/2.3.1/scripts/original-painter.js Wed May 17 15:29:56 2017
@@ -0,0 +1,674 @@
+/*==================================================
+ * Original Event Painter
+ *==================================================
+ */
+
+/*==================================================
+ *
+ * To enable a single event listener to monitor everything
+ * on a Timeline, we need a way to map from an event's icon,
+ * label or tape element to the associated timeline, band and
+ * specific event.
+ *
+ * Thus a set format is used for the id's of the
+ * events' elements on the Timeline--
+ *
+ * element id format for labels, icons, tapes:
+ * labels: label-tl-<timelineID>-<band_index>-<evt.id>
+ * icons: icon-tl-<timelineID>-<band_index>-<evt.id>
+ * tapes: tape1-tl-<timelineID>-<band_index>-<evt.id>
+ * tape2-tl-<timelineID>-<band_index>-<evt.id>
+ * // some events have more than one tape
+ * highlight: highlight1-tl-<timelineID>-<band_index>-<evt.id>
+ * highlight2-tl-<timelineID>-<band_index>-<evt.id>
+ * // some events have more than one highlight div (future)
+ * You can then retrieve the band/timeline objects and event object
+ * by using Timeline.EventUtils.decodeEventElID
+ *
+ *==================================================
+ */
+
+/*
+ * eventPaintListener functions receive calls about painting.
+ * function(band, op, evt, els)
+ * context: 'this' will be an OriginalEventPainter object.
+ * It has properties and methods for obtaining
+ * the relevant band, timeline, etc
+ * band = the band being painted
+ * op = 'paintStarting' // the painter is about to remove
+ * all previously painted events, if any. It will
+ * then start painting all of the visible events that
+ * pass the filter.
+ * evt = null, els = null
+ * op = 'paintEnded' // the painter has finished painting
+ * all of the visible events that passed the filter
+ * evt = null, els = null
+ * op = 'paintedEvent' // the painter just finished painting an event
+ * evt = event just painted
+ * els = array of painted elements' divs. Depending on the event,
+ * the array could be just a tape or icon (if no label).
+ * Or could include label, multiple tape divs (imprecise event),
+ * highlight divs. The array is not ordered. The meaning of
+ * each el is available by decoding the el's id
+ * Note that there may be no paintedEvent calls if no events were visible
+ * or passed the filter.
+ */
+
+Timeline.OriginalEventPainter = function(params) {
+ this._params = params;
+ this._onSelectListeners = [];
+ this._eventPaintListeners = [];
+
+ this._filterMatcher = null;
+ this._highlightMatcher = null;
+ this._frc = null;
+
+ this._eventIdToElmt = {};
+};
+
+Timeline.OriginalEventPainter.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.OriginalEventPainter.prototype.getType = function() {
+ return 'original';
+};
+
+Timeline.OriginalEventPainter.prototype.addOnSelectListener = function(listener) {
+ this._onSelectListeners.push(listener);
+};
+
+Timeline.OriginalEventPainter.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.OriginalEventPainter.prototype.addEventPaintListener = function(listener) {
+ this._eventPaintListeners.push(listener);
+};
+
+Timeline.OriginalEventPainter.prototype.removeEventPaintListener = function(listener) {
+ for (var i = 0; i < this._eventPaintListeners.length; i++) {
+ if (this._eventPaintListeners[i] == listener) {
+ this._eventPaintListeners.splice(i, 1);
+ break;
+ }
+ }
+};
+
+Timeline.OriginalEventPainter.prototype.getFilterMatcher = function() {
+ return this._filterMatcher;
+};
+
+Timeline.OriginalEventPainter.prototype.setFilterMatcher = function(filterMatcher) {
+ this._filterMatcher = filterMatcher;
+};
+
+Timeline.OriginalEventPainter.prototype.getHighlightMatcher = function() {
+ return this._highlightMatcher;
+};
+
+Timeline.OriginalEventPainter.prototype.setHighlightMatcher = function(highlightMatcher) {
+ this._highlightMatcher = highlightMatcher;
+};
+
+Timeline.OriginalEventPainter.prototype.paint = function() {
+ // Paints the events for a given section of the band--what is
+ // visible on screen and some extra.
+ var eventSource = this._band.getEventSource();
+ if (eventSource == null) {
+ return;
+ }
+
+ this._eventIdToElmt = {};
+ this._fireEventPaintListeners('paintStarting', null, null);
+ this._prepareForPainting();
+
+ var eventTheme = this._params.theme.event;
+ var trackHeight = Math.max(eventTheme.track.height, eventTheme.tape.height +
+ this._frc.getLineHeight());
+ var metrics = {
+ trackOffset: eventTheme.track.offset,
+ 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,
+ maxLabelChar: eventTheme.label.maxLabelChar,
+ impreciseIconMargin: eventTheme.instant.impreciseIconMargin
+ }
+
+ 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._tracks.length, metrics.trackIncrement);
+ this._fireEventPaintListeners('paintEnded', null, null);
+};
+
+Timeline.OriginalEventPainter.prototype.softPaint = function() {
+};
+
+Timeline.OriginalEventPainter.prototype._prepareForPainting = function() {
+ // Remove everything previously painted: highlight, line and event layers.
+ // Prepare blank layers for painting.
+ 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._tracks = [];
+
+ 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(115, "timeline-band-events");
+ this._eventLayer.style.display = "none";
+};
+
+Timeline.OriginalEventPainter.prototype.paintEvent = function(evt, metrics, theme, highlightIndex) {
+ if (evt.isInstant()) {
+ this.paintInstantEvent(evt, metrics, theme, highlightIndex);
+ } else {
+ this.paintDurationEvent(evt, metrics, theme, highlightIndex);
+ }
+};
+
+Timeline.OriginalEventPainter.prototype.paintInstantEvent = function(evt, metrics, theme, highlightIndex) {
+ if (evt.isImprecise()) {
+ this.paintImpreciseInstantEvent(evt, metrics, theme, highlightIndex);
+ } else {
+ this.paintPreciseInstantEvent(evt, metrics, theme, highlightIndex);
+ }
+}
+
+Timeline.OriginalEventPainter.prototype.paintDurationEvent = function(evt, metrics, theme, highlightIndex) {
+ if (evt.isImprecise()) {
+ this.paintImpreciseDurationEvent(evt, metrics, theme, highlightIndex);
+ } else {
+ this.paintPreciseDurationEvent(evt, metrics, theme, highlightIndex);
+ }
+}
+
+Timeline.OriginalEventPainter.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 labelDivClassName = this._getLabelDivClassName(evt);
+ var labelSize = this._frc.computeSize(text, labelDivClassName);
+ var labelLeft = iconRightEdge + theme.event.label.offsetFromLine;
+ var labelRight = labelLeft + labelSize.width;
+
+ var rightEdge = labelRight;
+ var track = this._findFreeTrack(evt, rightEdge);
+
+ var labelTop = Math.round(
+ metrics.trackOffset + track * metrics.trackIncrement +
+ metrics.trackHeight / 2 - labelSize.height / 2);
+
+ var iconElmtData = this._paintEventIcon(evt, track, iconLeftEdge, metrics, theme, 0);
+ var labelElmtData = this._paintEventLabel(evt, text, labelLeft, labelTop, labelSize.width,
+ labelSize.height, theme, labelDivClassName, highlightIndex);
+ var els = [iconElmtData.elmt, labelElmtData.elmt];
+
+ 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);
+
+ var hDiv = this._createHighlightDiv(highlightIndex, iconElmtData, theme, evt);
+ if (hDiv != null) {els.push(hDiv);}
+ this._fireEventPaintListeners('paintedEvent', evt, els);
+
+
+ this._eventIdToElmt[evt.getID()] = iconElmtData.elmt;
+ this._tracks[track] = iconLeftEdge;
+};
+
+Timeline.OriginalEventPainter.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 labelDivClassName = this._getLabelDivClassName(evt);
+ var labelSize = this._frc.computeSize(text, labelDivClassName);
+ var labelLeft = iconRightEdge + theme.event.label.offsetFromLine;
+ var labelRight = labelLeft + labelSize.width;
+
+ var rightEdge = Math.max(labelRight, endPixel);
+ var track = this._findFreeTrack(evt, rightEdge);
+ var tapeHeight = theme.event.tape.height;
+ var labelTop = Math.round(
+ metrics.trackOffset + track * metrics.trackIncrement + tapeHeight);
+
+ var iconElmtData = this._paintEventIcon(evt, track, iconLeftEdge, metrics, theme, tapeHeight);
+ var labelElmtData = this._paintEventLabel(evt, text, labelLeft, labelTop, labelSize.width,
+ labelSize.height, theme, labelDivClassName, highlightIndex);
+
+ var color = evt.getColor();
+ color = color != null ? color : theme.event.instant.impreciseColor;
+
+ var tapeElmtData = this._paintEventTape(evt, track, startPixel, endPixel,
+ color, theme.event.instant.impreciseOpacity, metrics, theme, 0);
+ var els = [iconElmtData.elmt, labelElmtData.elmt, tapeElmtData.elmt];
+
+ 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);
+
+ var hDiv = this._createHighlightDiv(highlightIndex, iconElmtData, theme, evt);
+ if (hDiv != null) {els.push(hDiv);}
+ this._fireEventPaintListeners('paintedEvent', evt, els);
+
+ this._eventIdToElmt[evt.getID()] = iconElmtData.elmt;
+ this._tracks[track] = iconLeftEdge;
+};
+
+Timeline.OriginalEventPainter.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 labelDivClassName = this._getLabelDivClassName(evt);
+ var labelSize = this._frc.computeSize(text, labelDivClassName);
+ var labelLeft = startPixel;
+ var labelRight = labelLeft + labelSize.width;
+
+ var rightEdge = Math.max(labelRight, endPixel);
+ var track = this._findFreeTrack(evt, rightEdge);
+ var labelTop = Math.round(
+ metrics.trackOffset + track * metrics.trackIncrement + theme.event.tape.height);
+
+ var color = evt.getColor();
+ color = color != null ? color : theme.event.duration.color;
+
+ var tapeElmtData = this._paintEventTape(evt, track, startPixel, endPixel, color, 100, metrics, theme, 0);
+ var labelElmtData = this._paintEventLabel(evt, text, labelLeft, labelTop, labelSize.width,
+ labelSize.height, theme, labelDivClassName, highlightIndex);
+ var els = [tapeElmtData.elmt, labelElmtData.elmt];
+
+ 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);
+
+ var hDiv = this._createHighlightDiv(highlightIndex, tapeElmtData, theme, evt);
+ if (hDiv != null) {els.push(hDiv);}
+ this._fireEventPaintListeners('paintedEvent', evt, els);
+
+ this._eventIdToElmt[evt.getID()] = tapeElmtData.elmt;
+ this._tracks[track] = startPixel;
+};
+
+Timeline.OriginalEventPainter.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 labelDivClassName = this._getLabelDivClassName(evt);
+ var labelSize = this._frc.computeSize(text, labelDivClassName);
+ var labelLeft = latestStartPixel;
+ var labelRight = labelLeft + labelSize.width;
+
+ var rightEdge = Math.max(labelRight, endPixel);
+ var track = this._findFreeTrack(evt, rightEdge);
+ var labelTop = Math.round(
+ metrics.trackOffset + track * metrics.trackIncrement + theme.event.tape.height);
+
+ var color = evt.getColor();
+ color = color != null ? color : theme.event.duration.color;
+
+ // Imprecise events can have two event tapes
+ // The imprecise dates tape, uses opacity to be dimmer than precise dates
+ var impreciseTapeElmtData = this._paintEventTape(evt, track, startPixel, endPixel,
+ theme.event.duration.impreciseColor,
+ theme.event.duration.impreciseOpacity, metrics, theme, 0);
+ // The precise dates tape, regular (100%) opacity
+ var tapeElmtData = this._paintEventTape(evt, track, latestStartPixel,
+ earliestEndPixel, color, 100, metrics, theme, 1);
+
+ var labelElmtData = this._paintEventLabel(evt, text, labelLeft, labelTop,
+ labelSize.width, labelSize.height, theme, labelDivClassName, highlightIndex);
+ var els = [impreciseTapeElmtData.elmt, tapeElmtData.elmt, labelElmtData.elmt];
+
+ 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);
+
+ var hDiv = this._createHighlightDiv(highlightIndex, tapeElmtData, theme, evt);
+ if (hDiv != null) {els.push(hDiv);}
+ this._fireEventPaintListeners('paintedEvent', evt, els);
+
+ this._eventIdToElmt[evt.getID()] = tapeElmtData.elmt;
+ this._tracks[track] = startPixel;
+};
+
+Timeline.OriginalEventPainter.prototype._encodeEventElID = function(elType, evt) {
+ return Timeline.EventUtils.encodeEventElID(this._timeline, this._band, elType, evt);
+};
+
+Timeline.OriginalEventPainter.prototype._findFreeTrack = function(event, rightEdge) {
+ var trackAttribute = event.getTrackNum();
+ if (trackAttribute != null) {
+ return trackAttribute; // early return since event includes track number
+ }
+
+ // normal case: find an open track
+ for (var i = 0; i < this._tracks.length; i++) {
+ var t = this._tracks[i];
+ if (t > rightEdge) {
+ break;
+ }
+ }
+ return i;
+};
+
+Timeline.OriginalEventPainter.prototype._paintEventIcon = function(evt, iconTrack, left, metrics, theme, tapeHeight) {
+ // If no tape, then paint the icon in the middle of the track.
+ // If there is a tape, paint the icon below the tape + impreciseIconMargin
+ var icon = evt.getIcon();
+ icon = icon != null ? icon : metrics.icon;
+
+ var top; // top of the icon
+ if (tapeHeight > 0) {
+ top = metrics.trackOffset + iconTrack * metrics.trackIncrement +
+ tapeHeight + metrics.impreciseIconMargin;
+ } else {
+ var middle = metrics.trackOffset + iconTrack * metrics.trackIncrement +
+ metrics.trackHeight / 2;
+ top = Math.round(middle - metrics.iconHeight / 2);
+ }
+ var img = SimileAjax.Graphics.createTranslucentImage(icon);
+ var iconDiv = this._timeline.getDocument().createElement("div");
+ iconDiv.className = this._getElClassName('timeline-event-icon', evt, 'icon');
+ iconDiv.id = this._encodeEventElID('icon', evt);
+ iconDiv.style.left = left + "px";
+ iconDiv.style.top = top + "px";
+ iconDiv.appendChild(img);
+
+ if(evt._title != null)
+ iconDiv.title = evt._title;
+
+ this._eventLayer.appendChild(iconDiv);
+
+ return {
+ left: left,
+ top: top,
+ width: metrics.iconWidth,
+ height: metrics.iconHeight,
+ elmt: iconDiv
+ };
+};
+
+Timeline.OriginalEventPainter.prototype._paintEventLabel = function(evt, text, left, top, width,
+ height, theme, labelDivClassName, highlightIndex) {
+ var doc = this._timeline.getDocument();
+
+ var labelDiv = doc.createElement("div");
+ labelDiv.className = labelDivClassName;
+ labelDiv.id = this._encodeEventElID('label', evt);
+ labelDiv.style.left = left + "px";
+ labelDiv.style.width = width + "px";
+ labelDiv.style.top = top + "px";
+ labelDiv.innerHTML = text;
+
+ if(evt._title != null)
+ labelDiv.title = evt._title;
+
+ var color = evt.getTextColor();
+ if (color == null) {
+ color = evt.getColor();
+ }
+ if (color != null) {
+ labelDiv.style.color = color;
+ }
+ if (theme.event.highlightLabelBackground && highlightIndex >= 0) {
+ labelDiv.style.background = this._getHighlightColor(highlightIndex, theme);
+ }
+
+ this._eventLayer.appendChild(labelDiv);
+
+ return {
+ left: left,
+ top: top,
+ width: width,
+ height: height,
+ elmt: labelDiv
+ };
+};
+
+Timeline.OriginalEventPainter.prototype._paintEventTape = function(
+ evt, iconTrack, startPixel, endPixel, color, opacity, metrics, theme, tape_index) {
+
+ var tapeWidth = endPixel - startPixel;
+ var tapeHeight = theme.event.tape.height;
+ var top = metrics.trackOffset + iconTrack * metrics.trackIncrement;
+
+ var tapeDiv = this._timeline.getDocument().createElement("div");
+ tapeDiv.className = this._getElClassName('timeline-event-tape', evt, 'tape');
+ tapeDiv.id = this._encodeEventElID('tape' + tape_index, evt);
+ tapeDiv.style.left = startPixel + "px";
+ tapeDiv.style.width = tapeWidth + "px";
+ tapeDiv.style.height = tapeHeight + "px";
+ tapeDiv.style.top = top + "px";
+
+ if(evt._title != null)
+ tapeDiv.title = evt._title;
+
+ if(color != null) {
+ tapeDiv.style.backgroundColor = color;
+ }
+
+ var backgroundImage = evt.getTapeImage();
+ var backgroundRepeat = evt.getTapeRepeat();
+ backgroundRepeat = backgroundRepeat != null ? backgroundRepeat : 'repeat';
+ if(backgroundImage != null) {
+ tapeDiv.style.backgroundImage = "url(" + backgroundImage + ")";
+ tapeDiv.style.backgroundRepeat = backgroundRepeat;
+ }
+
+ SimileAjax.Graphics.setOpacity(tapeDiv, opacity);
+
+ this._eventLayer.appendChild(tapeDiv);
+
+ return {
+ left: startPixel,
+ top: top,
+ width: tapeWidth,
+ height: tapeHeight,
+ elmt: tapeDiv
+ };
+}
+
+Timeline.OriginalEventPainter.prototype._getLabelDivClassName = function(evt) {
+ return this._getElClassName('timeline-event-label', evt, 'label');
+};
+
+Timeline.OriginalEventPainter.prototype._getElClassName = function(elClassName, evt, prefix) {
+ // Prefix and '_' is added to the event's classname. Set to null for no prefix
+ var evt_classname = evt.getClassName(),
+ pieces = [];
+
+ if (evt_classname) {
+ if (prefix) {pieces.push(prefix + '-' + evt_classname + ' ');}
+ pieces.push(evt_classname + ' ');
+ }
+ pieces.push(elClassName);
+ return(pieces.join(''));
+};
+
+Timeline.OriginalEventPainter.prototype._getHighlightColor = function(highlightIndex, theme) {
+ var highlightColors = theme.event.highlightColors;
+ return highlightColors[Math.min(highlightIndex, highlightColors.length - 1)];
+};
+
+Timeline.OriginalEventPainter.prototype._createHighlightDiv = function(highlightIndex, dimensions, theme, evt) {
+ var div = null;
+ if (highlightIndex >= 0) {
+ var doc = this._timeline.getDocument();
+ var color = this._getHighlightColor(highlightIndex, theme);
+
+ div = doc.createElement("div");
+ div.className = this._getElClassName('timeline-event-highlight', evt, 'highlight');
+ div.id = this._encodeEventElID('highlight0', evt); // in future will have other
+ // highlight divs for tapes + icons
+ div.style.position = "absolute";
+ div.style.overflow = "hidden";
+ div.style.left = (dimensions.left - 2) + "px";
+ div.style.width = (dimensions.width + 4) + "px";
+ div.style.top = (dimensions.top - 2) + "px";
+ div.style.height = (dimensions.height + 4) + "px";
+ div.style.background = color;
+
+ this._highlightLayer.appendChild(div);
+ }
+ return div;
+};
+
+Timeline.OriginalEventPainter.prototype._onClickInstantEvent = function(icon, domEvt, evt) {
+ var c = SimileAjax.DOM.getPageCoordinates(icon);
+ this._showBubble(
+ c.left + Math.ceil(icon.offsetWidth / 2),
+ c.top + Math.ceil(icon.offsetHeight / 2),
+ evt
+ );
+ this._fireOnSelect(evt.getID());
+
+ domEvt.cancelBubble = true;
+ SimileAjax.DOM.cancelEvent(domEvt);
+ return false;
+};
+
+Timeline.OriginalEventPainter.prototype._onClickDurationEvent = function(target, domEvt, evt) {
+ if ("pageX" in domEvt) {
+ var x = domEvt.pageX;
+ var y = domEvt.pageY;
+ } else {
+ var c = SimileAjax.DOM.getPageCoordinates(target);
+ var x = domEvt.offsetX + c.left;
+ var y = domEvt.offsetY + c.top;
+ }
+ this._showBubble(x, y, evt);
+ this._fireOnSelect(evt.getID());
+
+ domEvt.cancelBubble = true;
+ SimileAjax.DOM.cancelEvent(domEvt);
+ return false;
+};
+
+Timeline.OriginalEventPainter.prototype.showBubble = function(evt) {
+ var elmt = this._eventIdToElmt[evt.getID()];
+ if (elmt) {
+ var c = SimileAjax.DOM.getPageCoordinates(elmt);
+ this._showBubble(c.left + elmt.offsetWidth / 2, c.top + elmt.offsetHeight / 2, evt);
+ }
+};
+
+Timeline.OriginalEventPainter.prototype._showBubble = function(x, y, evt) {
+ var div = document.createElement("div");
+ var themeBubble = this._params.theme.event.bubble;
+ evt.fillInfoBubble(div, this._params.theme, this._band.getLabeller());
+
+ SimileAjax.WindowManager.cancelPopups();
+ SimileAjax.Graphics.createBubbleForContentAndPoint(div, x, y,
+ themeBubble.width, null, themeBubble.maxHeight);
+};
+
+Timeline.OriginalEventPainter.prototype._fireOnSelect = function(eventID) {
+ for (var i = 0; i < this._onSelectListeners.length; i++) {
+ this._onSelectListeners[i](eventID);
+ }
+};
+
+Timeline.OriginalEventPainter.prototype._fireEventPaintListeners = function(op, evt, els) {
+ for (var i = 0; i < this._eventPaintListeners.length; i++) {
+ this._eventPaintListeners[i](this._band, op, evt, els);
+ }
+};
Added: openoffice/ooo-site/trunk/content/scripts/api.simile-widgets.org/timeline/2.3.1/scripts/overview-painter.js
URL: http://svn.apache.org/viewvc/openoffice/ooo-site/trunk/content/scripts/api.simile-widgets.org/timeline/2.3.1/scripts/overview-painter.js?rev=1795424&view=auto
==============================================================================
--- openoffice/ooo-site/trunk/content/scripts/api.simile-widgets.org/timeline/2.3.1/scripts/overview-painter.js (added)
+++ openoffice/ooo-site/trunk/content/scripts/api.simile-widgets.org/timeline/2.3.1/scripts/overview-painter.js Wed May 17 15:29:56 2017
@@ -0,0 +1,258 @@
+/*==================================================
+ * Overview Event Painter
+ *==================================================
+ */
+
+Timeline.OverviewEventPainter = function(params) {
+ this._params = params;
+ this._onSelectListeners = [];
+
+ this._filterMatcher = null;
+ this._highlightMatcher = null;
+};
+
+Timeline.OverviewEventPainter.prototype.initialize = function(band, timeline) {
+ this._band = band;
+ this._timeline = timeline;
+
+ this._eventLayer = null;
+ this._highlightLayer = null;
+};
+
+Timeline.OverviewEventPainter.prototype.getType = function() {
+ return 'overview';
+};
+
+Timeline.OverviewEventPainter.prototype.addOnSelectListener = function(listener) {
+ this._onSelectListeners.push(listener);
+};
+
+Timeline.OverviewEventPainter.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.OverviewEventPainter.prototype.getFilterMatcher = function() {
+ return this._filterMatcher;
+};
+
+Timeline.OverviewEventPainter.prototype.setFilterMatcher = function(filterMatcher) {
+ this._filterMatcher = filterMatcher;
+};
+
+Timeline.OverviewEventPainter.prototype.getHighlightMatcher = function() {
+ return this._highlightMatcher;
+};
+
+Timeline.OverviewEventPainter.prototype.setHighlightMatcher = function(highlightMatcher) {
+ this._highlightMatcher = highlightMatcher;
+};
+
+Timeline.OverviewEventPainter.prototype.paint = function() {
+ var eventSource = this._band.getEventSource();
+ if (eventSource == null) {
+ return;
+ }
+
+ this._prepareForPainting();
+
+ var eventTheme = this._params.theme.event;
+ var metrics = {
+ trackOffset: eventTheme.overviewTrack.offset,
+ trackHeight: eventTheme.overviewTrack.height,
+ trackGap: eventTheme.overviewTrack.gap,
+ trackIncrement: eventTheme.overviewTrack.height + eventTheme.overviewTrack.gap
+ }
+
+ 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._eventLayer.style.display = "block";
+ // update the band object for max number of tracks in this section of the ether
+ this._band.updateEventTrackInfo(this._tracks.length, metrics.trackIncrement);
+};
+
+Timeline.OverviewEventPainter.prototype.softPaint = function() {
+};
+
+Timeline.OverviewEventPainter.prototype._prepareForPainting = function() {
+ var band = this._band;
+
+ this._tracks = [];
+
+ if (this._highlightLayer != null) {
+ band.removeLayerDiv(this._highlightLayer);
+ }
+ this._highlightLayer = band.createLayerDiv(105, "timeline-band-highlights");
+ this._highlightLayer.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.OverviewEventPainter.prototype.paintEvent = function(evt, metrics, theme, highlightIndex) {
+ if (evt.isInstant()) {
+ this.paintInstantEvent(evt, metrics, theme, highlightIndex);
+ } else {
+ this.paintDurationEvent(evt, metrics, theme, highlightIndex);
+ }
+};
+
+Timeline.OverviewEventPainter.prototype.paintInstantEvent = function(evt, metrics, theme, highlightIndex) {
+ var startDate = evt.getStart();
+ var startPixel = Math.round(this._band.dateToPixelOffset(startDate));
+
+ var color = evt.getColor(),
+ klassName = evt.getClassName();
+ if (klassName) {
+ color = null;
+ } else {
+ color = color != null ? color : theme.event.duration.color;
+ }
+
+ var tickElmtData = this._paintEventTick(evt, startPixel, color, 100, metrics, theme);
+
+ this._createHighlightDiv(highlightIndex, tickElmtData, theme);
+};
+
+Timeline.OverviewEventPainter.prototype.paintDurationEvent = function(evt, metrics, theme, highlightIndex) {
+ var latestStartDate = evt.getLatestStart();
+ var earliestEndDate = evt.getEarliestEnd();
+
+ var latestStartPixel = Math.round(this._band.dateToPixelOffset(latestStartDate));
+ var earliestEndPixel = Math.round(this._band.dateToPixelOffset(earliestEndDate));
+
+ var tapeTrack = 0;
+ for (; tapeTrack < this._tracks.length; tapeTrack++) {
+ if (earliestEndPixel < this._tracks[tapeTrack]) {
+ break;
+ }
+ }
+ this._tracks[tapeTrack] = earliestEndPixel;
+
+ var color = evt.getColor(),
+ klassName = evt.getClassName();
+ if (klassName) {
+ color = null;
+ } else {
+ color = color != null ? color : theme.event.duration.color;
+ }
+
+ var tapeElmtData = this._paintEventTape(evt, tapeTrack, latestStartPixel, earliestEndPixel,
+ color, 100, metrics, theme, klassName);
+
+ this._createHighlightDiv(highlightIndex, tapeElmtData, theme);
+};
+
+Timeline.OverviewEventPainter.prototype._paintEventTape = function(
+ evt, track, left, right, color, opacity, metrics, theme, klassName) {
+
+ var top = metrics.trackOffset + track * metrics.trackIncrement;
+ var width = right - left;
+ var height = metrics.trackHeight;
+
+ var tapeDiv = this._timeline.getDocument().createElement("div");
+ tapeDiv.className = 'timeline-small-event-tape'
+ if (klassName) {tapeDiv.className += ' small-' + klassName;}
+ tapeDiv.style.left = left + "px";
+ tapeDiv.style.width = width + "px";
+ tapeDiv.style.top = top + "px";
+ tapeDiv.style.height = height + "px";
+
+ if (color) {
+ tapeDiv.style.backgroundColor = color; // set color here if defined by event. Else use css
+ }
+ // tapeDiv.style.overflow = "hidden"; // now set in css
+ // tapeDiv.style.position = "absolute";
+ if(opacity<100) SimileAjax.Graphics.setOpacity(tapeDiv, opacity);
+
+ this._eventLayer.appendChild(tapeDiv);
+
+ return {
+ left: left,
+ top: top,
+ width: width,
+ height: height,
+ elmt: tapeDiv
+ };
+}
+
+Timeline.OverviewEventPainter.prototype._paintEventTick = function(
+ evt, left, color, opacity, metrics, theme) {
+
+ var height = theme.event.overviewTrack.tickHeight;
+ var top = metrics.trackOffset - height;
+ var width = 1;
+
+ var tickDiv = this._timeline.getDocument().createElement("div");
+ tickDiv.className = 'timeline-small-event-icon'
+ tickDiv.style.left = left + "px";
+ tickDiv.style.top = top + "px";
+ // tickDiv.style.width = width + "px";
+ // tickDiv.style.position = "absolute";
+ // tickDiv.style.height = height + "px";
+ // tickDiv.style.backgroundColor = color;
+ // tickDiv.style.overflow = "hidden";
+
+ var klassName = evt.getClassName()
+ if (klassName) {tickDiv.className +=' small-' + klassName};
+
+ if(opacity<100) {SimileAjax.Graphics.setOpacity(tickDiv, opacity)};
+
+ this._eventLayer.appendChild(tickDiv);
+
+ return {
+ left: left,
+ top: top,
+ width: width,
+ height: height,
+ elmt: tickDiv
+ };
+}
+
+Timeline.OverviewEventPainter.prototype._createHighlightDiv = function(highlightIndex, dimensions, theme) {
+ if (highlightIndex >= 0) {
+ var doc = this._timeline.getDocument();
+ var eventTheme = theme.event;
+
+ var color = eventTheme.highlightColors[Math.min(highlightIndex, eventTheme.highlightColors.length - 1)];
+
+ var div = doc.createElement("div");
+ div.style.position = "absolute";
+ div.style.overflow = "hidden";
+ div.style.left = (dimensions.left - 1) + "px";
+ div.style.width = (dimensions.width + 2) + "px";
+ div.style.top = (dimensions.top - 1) + "px";
+ div.style.height = (dimensions.height + 2) + "px";
+ div.style.background = color;
+
+ this._highlightLayer.appendChild(div);
+ }
+};
+
+Timeline.OverviewEventPainter.prototype.showBubble = function(evt) {
+ // not implemented
+};