comparison geotemco/lib/simile/timeplot/timeplot-api.js @ 0:b12c99b7c3f0

commit for previous development
author Zoe Hong <zhong@mpiwg-berlin.mpg.de>
date Mon, 19 Jan 2015 17:13:49 +0100
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:b12c99b7c3f0
1 /*==================================================
2 * Simile Timeplot API
3 *
4 * Include Timeplot in your HTML file as follows:
5 * <script src="http://api.simile-widgets.org/timeplot/1.1/timeplot-api.js" type="text/javascript"></script>
6 *
7 *==================================================*/
8
9 (function() {
10
11 var local = false;
12
13 // obtain local mode from the document URL
14 if (document.location.search.length > 0) {
15 var params = document.location.search.substr(1).split("&");
16 for (var i = 0; i < params.length; i++) {
17 if (params[i] == "local") {
18 local = true;
19 }
20 }
21 }
22
23 // obtain local mode from the script URL params attribute
24 if (!local) {
25 var heads = document.documentElement.getElementsByTagName("head");
26 for (var h = 0; h < heads.length; h++) {
27 var node = heads[h].firstChild;
28 while (node != null) {
29 if (node.nodeType == 1 && node.tagName.toLowerCase() == "script") {
30 var url = node.src;
31 if (url.indexOf("timeplot-api") >= 0) {
32 local = (url.indexOf("local") >= 0);
33 }
34 }
35 node = node.nextSibling;
36 }
37 }
38 }
39
40 // Load Timeplot if it's not already loaded (after SimileAjax and Timeline)
41 var loadTimeplot = function() {
42
43 if (typeof window.Timeplot != "undefined") {
44 return;
45 }
46
47 window.Timeplot = {
48 loaded: false,
49 params: { bundle: true, autoCreate: true },
50 importers: {}
51 };
52
53 var javascriptFiles = [
54 "timeplot.js",
55 "plot.js",
56 "sources.js",
57 "geometry.js",
58 "color.js",
59 "math.js",
60 "processor.js"
61 ];
62 var cssFiles = [
63 "timeplot.css"
64 ];
65
66 var locales = [ "en" ];
67
68 var defaultClientLocales = ("language" in navigator ? navigator.language : navigator.browserLanguage).split(";");
69 for (var l = 0; l < defaultClientLocales.length; l++) {
70 var locale = defaultClientLocales[l];
71 if (locale != "en") {
72 var segments = locale.split("-");
73 if (segments.length > 1 && segments[0] != "en") {
74 locales.push(segments[0]);
75 }
76 locales.push(locale);
77 }
78 }
79
80 var paramTypes = { bundle:Boolean, js:Array, css:Array, autoCreate:Boolean };
81 if (typeof Timeplot_urlPrefix == "string") {
82 Timeplot.urlPrefix = Timeplot_urlPrefix;
83 if ("Timeplot_parameters" in window) {
84 SimileAjax.parseURLParameters(Timeplot_parameters, Timeplot.params, paramTypes);
85 }
86 } else {
87 var url = SimileAjax.findScript(document, "/timeplot-api.js");
88 if (url == null) {
89 Timeplot.error = new Error("Failed to derive URL prefix for Simile Timeplot API code files");
90 return;
91 }
92 Timeplot.urlPrefix = url.substr(0, url.indexOf("timeplot-api.js"));
93
94 SimileAjax.parseURLParameters(url, Timeplot.params, paramTypes);
95 }
96
97 if (Timeplot.params.locale) { // ISO-639 language codes,
98 // optional ISO-3166 country codes (2 characters)
99 if (Timeplot.params.locale != "en") {
100 var segments = Timeplot.params.locale.split("-");
101 if (segments.length > 1 && segments[0] != "en") {
102 locales.push(segments[0]);
103 }
104 locales.push(Timeplot.params.locale);
105 }
106 }
107
108 var timeplotURLPrefix = Timeplot.urlPrefix;
109
110 if (local && !("console" in window)) {
111 var firebug = [ timeplotURLPrefix + "lib/firebug/firebug.js" ];
112 SimileAjax.includeJavascriptFiles(document, "", firebug);
113 }
114
115 var canvas = document.createElement("canvas");
116
117 if (!canvas.getContext) {
118 var excanvas = [ timeplotURLPrefix + "lib/excanvas.js" ];
119 SimileAjax.includeJavascriptFiles(document, "", excanvas);
120 }
121
122 var scriptURLs = Timeplot.params.js || [];
123 var cssURLs = Timeplot.params.css || [];
124
125 // Core scripts and styles
126 if (Timeplot.params.bundle && !local) {
127 scriptURLs.push(timeplotURLPrefix + "timeplot-bundle.js");
128 cssURLs.push(timeplotURLPrefix + "timeplot-bundle.css");
129 } else {
130 SimileAjax.prefixURLs(scriptURLs, timeplotURLPrefix + "scripts/", javascriptFiles);
131 SimileAjax.prefixURLs(cssURLs, timeplotURLPrefix + "styles/", cssFiles);
132 }
133
134 // Localization
135 //for (var i = 0; i < locales.length; i++) {
136 // scriptURLs.push(Timeplot.urlPrefix + "locales/" + locales[i] + "/locale.js");
137 //};
138
139 window.SimileAjax_onLoad = function() {
140 if (local && window.console.open) window.console.open();
141 if (Timeplot.params.callback) {
142 eval(Timeplot.params.callback + "()");
143 }
144 }
145
146 SimileAjax.includeJavascriptFiles(document, "", scriptURLs);
147 SimileAjax.includeCssFiles(document, "", cssURLs);
148 Timeplot.loaded = true;
149 };
150
151 // Load Timeline if it's not already loaded (after SimileAjax and before Timeplot)
152 var loadTimeline = function() {
153 if (typeof Timeline != "undefined") {
154 loadTimeplot();
155 } else {
156 var timelineURL = "http://api.simile-widgets.org/timeline/2.3.1/timeline-api.js?bundle=true";
157 window.SimileAjax_onLoad = loadTimeplot;
158 SimileAjax.includeJavascriptFile(document, timelineURL);
159 }
160 };
161
162 // Load SimileAjax if it's not already loaded
163 if (typeof SimileAjax == "undefined") {
164 window.SimileAjax_onLoad = loadTimeline;
165
166 var url = "http://api.simile-widgets.org/ajax/2.2.1/simile-ajax-api.js?bundle=true";
167
168 var createScriptElement = function() {
169 var script = document.createElement("script");
170 script.type = "text/javascript";
171 script.language = "JavaScript";
172 script.src = url;
173 document.getElementsByTagName("head")[0].appendChild(script);
174 }
175
176 if (document.body == null) {
177 try {
178 document.write("<script src='" + url + "' type='text/javascript'></script>");
179 } catch (e) {
180 createScriptElement();
181 }
182 } else {
183 createScriptElement();
184 }
185 } else {
186 loadTimeline();
187 }
188 })();