Mercurial > hg > extraction-interface
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 })(); |