~jstys-z/helioviewer.org/timeline

« back to all changes in this revision

Viewing changes to timeline/exporting-server/java/highcharts-export/highcharts-export-web/src/main/webapp/resources/lib/codemirror/util/loadmode.js

  • Committer: Jeff Stys
  • Date: 2014-04-21 12:46:26 UTC
  • Revision ID: jstys@sesda3.com-20140421124626-2332pb2dyjc33jxi
Proof-of-concept version of Data Coverage Timeline using Highchart/Highstock javascript library.  Changes to getDataCoverage API in order to feed the necessary data to the Timeline

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
(function() {
 
2
  if (!CodeMirror.modeURL) CodeMirror.modeURL = "../mode/%N/%N.js";
 
3
 
 
4
  var loading = {};
 
5
  function splitCallback(cont, n) {
 
6
    var countDown = n;
 
7
    return function() { if (--countDown == 0) cont(); };
 
8
  }
 
9
  function ensureDeps(mode, cont) {
 
10
    var deps = CodeMirror.modes[mode].dependencies;
 
11
    if (!deps) return cont();
 
12
    var missing = [];
 
13
    for (var i = 0; i < deps.length; ++i) {
 
14
      if (!CodeMirror.modes.hasOwnProperty(deps[i]))
 
15
        missing.push(deps[i]);
 
16
    }
 
17
    if (!missing.length) return cont();
 
18
    var split = splitCallback(cont, missing.length);
 
19
    for (var i = 0; i < missing.length; ++i)
 
20
      CodeMirror.requireMode(missing[i], split);
 
21
  }
 
22
 
 
23
  CodeMirror.requireMode = function(mode, cont) {
 
24
    if (typeof mode != "string") mode = mode.name;
 
25
    if (CodeMirror.modes.hasOwnProperty(mode)) return ensureDeps(mode, cont);
 
26
    if (loading.hasOwnProperty(mode)) return loading[mode].push(cont);
 
27
 
 
28
    var script = document.createElement("script");
 
29
    script.src = CodeMirror.modeURL.replace(/%N/g, mode);
 
30
    var others = document.getElementsByTagName("script")[0];
 
31
    others.parentNode.insertBefore(script, others);
 
32
    var list = loading[mode] = [cont];
 
33
    var count = 0, poll = setInterval(function() {
 
34
      if (++count > 100) return clearInterval(poll);
 
35
      if (CodeMirror.modes.hasOwnProperty(mode)) {
 
36
        clearInterval(poll);
 
37
        loading[mode] = null;
 
38
        ensureDeps(mode, function() {
 
39
          for (var i = 0; i < list.length; ++i) list[i]();
 
40
        });
 
41
      }
 
42
    }, 200);
 
43
  };
 
44
 
 
45
  CodeMirror.autoLoadMode = function(instance, mode) {
 
46
    if (!CodeMirror.modes.hasOwnProperty(mode))
 
47
      CodeMirror.requireMode(mode, function() {
 
48
        instance.setOption("mode", instance.getOption("mode"));
 
49
      });
 
50
  };
 
51
}());