rgraph-rails 5.00 → 6.14
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/publish-geml.yaml +46 -0
- data/.gitignore +1 -0
- data/README.md +4 -5
- data/lib/rgraph-rails/version.rb +1 -1
- data/rgraph-rails.gemspec +4 -4
- data/vendor/assets/javascripts/RGraph.activity.js +1691 -0
- data/vendor/assets/javascripts/RGraph.bar.js +4253 -236
- data/vendor/assets/javascripts/RGraph.bipolar.js +3958 -162
- data/vendor/assets/javascripts/RGraph.common.annotate.js +414 -35
- data/vendor/assets/javascripts/RGraph.common.context.js +635 -30
- data/vendor/assets/javascripts/RGraph.common.core.js +10485 -419
- data/vendor/assets/javascripts/RGraph.common.csv.js +508 -27
- data/vendor/assets/javascripts/RGraph.common.dynamic.js +1693 -90
- data/vendor/assets/javascripts/RGraph.common.effects.js +1629 -89
- data/vendor/assets/javascripts/RGraph.common.key.js +1003 -53
- data/vendor/assets/javascripts/RGraph.common.moment.js +5670 -0
- data/vendor/assets/javascripts/RGraph.common.sheets.js +541 -31
- data/vendor/assets/javascripts/RGraph.common.sheets.php +351 -0
- data/vendor/assets/javascripts/RGraph.common.starburst.js +382 -0
- data/vendor/assets/javascripts/RGraph.common.table.js +386 -0
- data/vendor/assets/javascripts/RGraph.common.tooltips.js +1433 -32
- data/vendor/assets/javascripts/RGraph.drawing.background.js +660 -35
- data/vendor/assets/javascripts/RGraph.drawing.circle.js +618 -34
- data/vendor/assets/javascripts/RGraph.drawing.image.js +857 -52
- data/vendor/assets/javascripts/RGraph.drawing.line.js +712 -0
- data/vendor/assets/javascripts/RGraph.drawing.marker1.js +760 -38
- data/vendor/assets/javascripts/RGraph.drawing.marker2.js +740 -37
- data/vendor/assets/javascripts/RGraph.drawing.marker3.js +573 -36
- data/vendor/assets/javascripts/RGraph.drawing.poly.js +667 -36
- data/vendor/assets/javascripts/RGraph.drawing.rect.js +638 -34
- data/vendor/assets/javascripts/RGraph.drawing.text.js +672 -37
- data/vendor/assets/javascripts/RGraph.drawing.xaxis.js +653 -52
- data/vendor/assets/javascripts/RGraph.drawing.yaxis.js +714 -51
- data/vendor/assets/javascripts/RGraph.fuel.js +1149 -59
- data/vendor/assets/javascripts/RGraph.funnel.js +1277 -56
- data/vendor/assets/javascripts/RGraph.gantt.js +1646 -82
- data/vendor/assets/javascripts/RGraph.gauge.js +1773 -89
- data/vendor/assets/javascripts/RGraph.hbar.js +3869 -159
- data/vendor/assets/javascripts/RGraph.horseshoe.js +970 -0
- data/vendor/assets/javascripts/RGraph.hprogress.js +1829 -81
- data/vendor/assets/javascripts/RGraph.line.js +5293 -244
- data/vendor/assets/javascripts/RGraph.meter.js +1570 -77
- data/vendor/assets/javascripts/RGraph.modaldialog.js +300 -19
- data/vendor/assets/javascripts/RGraph.odo.js +1553 -68
- data/vendor/assets/javascripts/RGraph.pie.js +3273 -129
- data/vendor/assets/javascripts/RGraph.radar.js +2333 -108
- data/vendor/assets/javascripts/RGraph.rose.js +2685 -114
- data/vendor/assets/javascripts/RGraph.rscatter.js +1920 -80
- data/vendor/assets/javascripts/RGraph.scatter.js +4215 -171
- data/vendor/assets/javascripts/RGraph.segmented.js +1006 -0
- data/vendor/assets/javascripts/RGraph.semicircularprogress.js +1980 -59
- data/vendor/assets/javascripts/RGraph.svg.activity.js +1696 -0
- data/vendor/assets/javascripts/RGraph.svg.bar.js +2575 -77
- data/vendor/assets/javascripts/RGraph.svg.bipolar.js +3533 -106
- data/vendor/assets/javascripts/RGraph.svg.common.ajax.js +240 -21
- data/vendor/assets/javascripts/RGraph.svg.common.core.js +7105 -299
- data/vendor/assets/javascripts/RGraph.svg.common.csv.js +408 -28
- data/vendor/assets/javascripts/RGraph.svg.common.fx.js +1291 -68
- data/vendor/assets/javascripts/RGraph.svg.common.key.js +451 -20
- data/vendor/assets/javascripts/RGraph.svg.common.sheets.js +543 -31
- data/vendor/assets/javascripts/RGraph.svg.common.table.js +391 -0
- data/vendor/assets/javascripts/RGraph.svg.common.tooltips.js +1072 -23
- data/vendor/assets/javascripts/RGraph.svg.funnel.js +1151 -32
- data/vendor/assets/javascripts/RGraph.svg.gauge.js +1429 -34
- data/vendor/assets/javascripts/RGraph.svg.hbar.js +2692 -65
- data/vendor/assets/javascripts/RGraph.svg.horseshoe.js +969 -0
- data/vendor/assets/javascripts/RGraph.svg.line.js +2855 -86
- data/vendor/assets/javascripts/RGraph.svg.pie.js +1630 -58
- data/vendor/assets/javascripts/RGraph.svg.radar.js +1772 -58
- data/vendor/assets/javascripts/RGraph.svg.rose.js +2419 -83
- data/vendor/assets/javascripts/RGraph.svg.scatter.js +2280 -65
- data/vendor/assets/javascripts/RGraph.svg.segmented.js +930 -0
- data/vendor/assets/javascripts/RGraph.svg.semicircularprogress.js +1612 -29
- data/vendor/assets/javascripts/RGraph.svg.waterfall.js +1525 -50
- data/vendor/assets/javascripts/RGraph.thermometer.js +1411 -64
- data/vendor/assets/javascripts/RGraph.vprogress.js +1915 -81
- data/vendor/assets/javascripts/RGraph.waterfall.js +1896 -89
- data/vendor/assets/javascripts/financial-data.js +1067 -0
- metadata +37 -16
- data/.travis.yml +0 -11
- data/vendor/assets/javascripts/RGraph.common.deprecated.js +0 -35
- data/vendor/assets/javascripts/RGraph.common.resizing.js +0 -38
- data/vendor/assets/javascripts/RGraph.common.zoom.js +0 -15
- data/vendor/assets/javascripts/RGraph.cornergauge.js +0 -71
@@ -1,36 +1,415 @@
|
|
1
|
+
'version:2023-09-16 (6.14)';
|
2
|
+
//
|
3
|
+
// o--------------------------------------------------------------------------------o
|
4
|
+
// | This file is part of the RGraph package - you can learn more at: |
|
5
|
+
// | |
|
6
|
+
// | https://www.rgraph.net |
|
7
|
+
// | |
|
8
|
+
// | RGraph is licensed under the Open Source MIT license. That means that it's |
|
9
|
+
// | totally free to use and there are no restrictions on what you can do with it! |
|
10
|
+
// o--------------------------------------------------------------------------------o
|
1
11
|
|
2
|
-
RGraph=window.RGraph||{isRGraph:true};
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
var
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
12
|
+
RGraph = window.RGraph || {isrgraph:true,isRGraph: true,rgraph:true};
|
13
|
+
|
14
|
+
// Module pattern
|
15
|
+
(function (win, doc, undefined)
|
16
|
+
{
|
17
|
+
var ua = navigator.userAgent;
|
18
|
+
|
19
|
+
//
|
20
|
+
// This installs some event handlers
|
21
|
+
//
|
22
|
+
// Checking the RGraph.annotate flag means the annotate code only runs once
|
23
|
+
//
|
24
|
+
RGraph.annotating_canvas_onmousedown = function (e)
|
25
|
+
{
|
26
|
+
if (e.button === 0) {
|
27
|
+
|
28
|
+
e.target.__object__.set('mousedown', true);
|
29
|
+
|
30
|
+
// Get the object from the canvas. Annotating must be enabled on the
|
31
|
+
// last object defined
|
32
|
+
var obj = e.target.__object__,
|
33
|
+
properties = obj.properties
|
34
|
+
|
35
|
+
// This starts the annotating "path" and set the color
|
36
|
+
obj.context.beginPath();
|
37
|
+
|
38
|
+
obj.context.strokeStyle = obj.get('annotatableColor');
|
39
|
+
obj.context.lineWidth = obj.get('annotatableLinewidth');
|
40
|
+
|
41
|
+
var mouseXY = RGraph.getMouseXY(e),
|
42
|
+
mouseX = mouseXY[0],
|
43
|
+
mouseY = mouseXY[1]
|
44
|
+
|
45
|
+
// Allow for the Bar chart 3D
|
46
|
+
if (obj.type === 'bar' && properties.variant === '3d') {
|
47
|
+
var adjustment = properties.variantThreedAngle * mouseXY[0];
|
48
|
+
mouseY -= adjustment;
|
49
|
+
}
|
50
|
+
|
51
|
+
// Clear the annotation recording
|
52
|
+
RGraph.Registry.set('annotatable.actions', [obj.get('annotatableColor')]);
|
53
|
+
|
54
|
+
// This sets the initial X/Y position
|
55
|
+
obj.context.moveTo(mouseX, mouseY);
|
56
|
+
RGraph.Registry.set('annotatable.last.coordinates', [mouseX,mouseY]);
|
57
|
+
|
58
|
+
RGraph.Registry.set('started.annotating', false);
|
59
|
+
RGraph.Registry.set('annotating', obj);
|
60
|
+
|
61
|
+
// Fire the onannotatebegin event.
|
62
|
+
RGraph.fireCustomEvent(obj, 'onannotatebegin');
|
63
|
+
}
|
64
|
+
|
65
|
+
return false;
|
66
|
+
};
|
67
|
+
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
//
|
76
|
+
// This cancels annotating for ALL canvases
|
77
|
+
//
|
78
|
+
RGraph.annotating_window_onmouseup = function (e)
|
79
|
+
{
|
80
|
+
var obj = RGraph.Registry.get('annotating');
|
81
|
+
var win = window;
|
82
|
+
|
83
|
+
if (e.button != 0 || !obj) {
|
84
|
+
return;
|
85
|
+
}
|
86
|
+
|
87
|
+
// This cancels annotating on ALL canvas tags on the page
|
88
|
+
var tags = doc.getElementsByTagName('canvas');
|
89
|
+
|
90
|
+
for (var i=0; i<tags.length; ++i) {
|
91
|
+
if (tags[i].__object__) {
|
92
|
+
tags[i].__object__.set('mousedown', false);
|
93
|
+
}
|
94
|
+
}
|
95
|
+
|
96
|
+
// Store the annotations in browser storage if it's available
|
97
|
+
if (RGraph.Registry.get('annotatable.actions') && RGraph.Registry.get('annotatable.actions').length > 0 && win.localStorage) {
|
98
|
+
|
99
|
+
var id = '__rgraph_annotations_' + e.target.id + '__';
|
100
|
+
var annotations = win.localStorage[id] ? win.localStorage[id] + '|' : '';
|
101
|
+
annotations += RGraph.Registry.get('annotatable.actions');
|
102
|
+
|
103
|
+
// Store the annotations information in HTML5 browser storage here
|
104
|
+
win.localStorage[id] = annotations;
|
105
|
+
}
|
106
|
+
|
107
|
+
// Clear the recorded annotations
|
108
|
+
RGraph.Registry.set('annotatable.actions', []);
|
109
|
+
|
110
|
+
// Fire the annotate event
|
111
|
+
RGraph.fireCustomEvent(obj, 'onannotateend');
|
112
|
+
};
|
113
|
+
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
|
118
|
+
|
119
|
+
|
120
|
+
|
121
|
+
//
|
122
|
+
// The canvas onmousemove function
|
123
|
+
//
|
124
|
+
RGraph.annotating_canvas_onmousemove = function (e)
|
125
|
+
{
|
126
|
+
var obj = e.target.__object__;
|
127
|
+
var properties = obj.properties;
|
128
|
+
var mouseXY = RGraph.getMouseXY(e);
|
129
|
+
var mouseX = mouseXY[0];
|
130
|
+
var mouseY = mouseXY[1];
|
131
|
+
var lastXY = RGraph.Registry.get('annotatable.last.coordinates');
|
132
|
+
|
133
|
+
if (obj.get('mousedown')) {
|
134
|
+
|
135
|
+
// Allow for the Bar chart 3D
|
136
|
+
if (obj.type === 'bar' && properties.variant === '3d') {
|
137
|
+
var adjustment = properties.variantThreedAngle * mouseXY[0];
|
138
|
+
mouseY -= adjustment;
|
139
|
+
}
|
140
|
+
|
141
|
+
obj.context.beginPath();
|
142
|
+
|
143
|
+
if (!lastXY) {
|
144
|
+
obj.context.moveTo(mouseX, mouseY)
|
145
|
+
} else {
|
146
|
+
obj.context.strokeStyle = obj.properties.annotatableColor;
|
147
|
+
obj.context.moveTo(lastXY[0], lastXY[1]);
|
148
|
+
obj.context.lineTo(mouseX, mouseY);
|
149
|
+
}
|
150
|
+
|
151
|
+
RGraph.Registry.set('annotatable.actions', RGraph.Registry.get('annotatable.actions') + '|' + mouseX + ',' + mouseY);
|
152
|
+
RGraph.Registry.set('annotatable.last.coordinates', [mouseX,mouseY]);
|
153
|
+
|
154
|
+
RGraph.fireCustomEvent(obj, 'onannotate');
|
155
|
+
obj.context.stroke();
|
156
|
+
}
|
157
|
+
};
|
158
|
+
|
159
|
+
|
160
|
+
|
161
|
+
|
162
|
+
|
163
|
+
|
164
|
+
|
165
|
+
|
166
|
+
//
|
167
|
+
// Shows the mini palette used for annotations
|
168
|
+
//
|
169
|
+
// @param object e The event object
|
170
|
+
//
|
171
|
+
RGraph.showPalette = function (e)
|
172
|
+
{
|
173
|
+
var isSafari = navigator.userAgent.indexOf('Safari') ? true : false;
|
174
|
+
|
175
|
+
var canvas = e.target.parentNode.__canvas__,
|
176
|
+
context = canvas.getContext('2d'),
|
177
|
+
obj = canvas.__object__,
|
178
|
+
div = document.createElement('DIV'),
|
179
|
+
coords = RGraph.getMouseXY(e)
|
180
|
+
|
181
|
+
div.__object__ = obj; // The graph object
|
182
|
+
div.className = 'RGraph_palette';
|
183
|
+
div.style.position = 'absolute';
|
184
|
+
div.style.backgroundColor = 'white';
|
185
|
+
div.style.border = '1px solid #999';
|
186
|
+
div.style.left = 0;
|
187
|
+
div.style.top = 0;
|
188
|
+
div.style.padding = '3px';
|
189
|
+
div.style.paddingLeft = '5px';
|
190
|
+
div.style.opacity = 0;
|
191
|
+
div.style.boxShadow = 'rgba(48,48,48,0.25) 1px 1px 3px';
|
192
|
+
div.style.WebkitBoxShadow = 'rgba(48,48,48,0.25) 1px 1px 3px';
|
193
|
+
div.style.MozBoxShadow = 'rgba(48,48,48,0.25) 1px 1px 3px';
|
194
|
+
|
195
|
+
|
196
|
+
// MUST use named colors that are capitalised
|
197
|
+
var colors = [
|
198
|
+
'Black', 'Red', 'Yellow', 'Green',
|
199
|
+
'Orange', 'White', 'Magenta', 'Pink'
|
200
|
+
];
|
201
|
+
|
202
|
+
// Add the colors to the palette
|
203
|
+
for (var i=0,len=colors.length; i<len; i+=1) {
|
204
|
+
|
205
|
+
var div2 = doc.createElement('DIV');
|
206
|
+
div2.cssClass = 'RGraph_palette_color';
|
207
|
+
div2.style.fontSize = '12pt';
|
208
|
+
div2.style.cursor = 'pointer';
|
209
|
+
div2.style.padding = '1px';
|
210
|
+
div2.style.paddingRight = '10px';
|
211
|
+
div2.style.textAlign = 'left';
|
212
|
+
|
213
|
+
var span = document.createElement('SPAN');
|
214
|
+
span.style.display = 'inline-block';
|
215
|
+
span.style.marginRight = '9px';
|
216
|
+
span.style.width = '17px';
|
217
|
+
span.style.height = '17px';
|
218
|
+
span.style.top = '2px';
|
219
|
+
span.style.position = 'relative';
|
220
|
+
span.style.backgroundColor = colors[i];
|
221
|
+
div2.appendChild(span);
|
222
|
+
|
223
|
+
div2.innerHTML += colors[i];
|
224
|
+
|
225
|
+
|
226
|
+
div2.onmouseover = function ()
|
227
|
+
{
|
228
|
+
this.style.backgroundColor = '#eee';
|
229
|
+
}
|
230
|
+
|
231
|
+
div2.onmouseout = function ()
|
232
|
+
{
|
233
|
+
this.style.backgroundColor = '';
|
234
|
+
}
|
235
|
+
|
236
|
+
div2.onclick = function (e)
|
237
|
+
{
|
238
|
+
var color = this.childNodes[0].style.backgroundColor;
|
239
|
+
|
240
|
+
obj.set('annotatableColor', color);
|
241
|
+
}
|
242
|
+
div.appendChild(div2);
|
243
|
+
}
|
244
|
+
|
245
|
+
|
246
|
+
doc.body.appendChild(div);
|
247
|
+
|
248
|
+
//
|
249
|
+
// Now the div has been added to the document, move it up and left
|
250
|
+
//
|
251
|
+
div.style.left = e.pageX + 'px';
|
252
|
+
div.style.top = e.pageY + 'px';
|
253
|
+
|
254
|
+
//
|
255
|
+
// Chang the position if the cursor is near the right edge of the browser window
|
256
|
+
//
|
257
|
+
if ((e.pageX + (div.offsetWidth + 5) ) > document.body.offsetWidth) {
|
258
|
+
div.style.left = (e.pageX - div.offsetWidth) + 'px';
|
259
|
+
}
|
260
|
+
|
261
|
+
//
|
262
|
+
// Store the palette div in the registry
|
263
|
+
//
|
264
|
+
RGraph.Registry.set('palette', div);
|
265
|
+
|
266
|
+
setTimeout(function () {div.style.opacity = 0.2;}, 50);
|
267
|
+
setTimeout(function () {div.style.opacity = 0.4;}, 100);
|
268
|
+
setTimeout(function () {div.style.opacity = 0.6;}, 150);
|
269
|
+
setTimeout(function () {div.style.opacity = 0.8;}, 200);
|
270
|
+
setTimeout(function () {div.style.opacity = 1;}, 250);
|
271
|
+
|
272
|
+
RGraph.hideContext();
|
273
|
+
|
274
|
+
window.onclick = function ()
|
275
|
+
{
|
276
|
+
RGraph.hidePalette();
|
277
|
+
}
|
278
|
+
|
279
|
+
// Should this be here? Yes. This function is being used as an event handler.
|
280
|
+
e.stopPropagation();
|
281
|
+
return false;
|
282
|
+
};
|
283
|
+
|
284
|
+
|
285
|
+
|
286
|
+
|
287
|
+
|
288
|
+
|
289
|
+
|
290
|
+
|
291
|
+
//
|
292
|
+
// Clears any annotation data from global storage
|
293
|
+
//
|
294
|
+
// @param object canvas The canvas tag object
|
295
|
+
//
|
296
|
+
RGraph.clearAnnotations = function (canvas)
|
297
|
+
{
|
298
|
+
//
|
299
|
+
// For BC the argument can also be the ID of the canvas
|
300
|
+
//
|
301
|
+
if (typeof canvas === 'string') {
|
302
|
+
var id = canvas;
|
303
|
+
canvas = doc.getElementById(id);
|
304
|
+
} else {
|
305
|
+
var id = canvas.id
|
306
|
+
}
|
307
|
+
|
308
|
+
var obj = canvas.__object__;
|
309
|
+
|
310
|
+
if (win.localStorage && win.localStorage['__rgraph_annotations_' + id + '__'] && win.localStorage['__rgraph_annotations_' + id + '__'].length) {
|
311
|
+
win.localStorage['__rgraph_annotations_' + id + '__'] = [];
|
312
|
+
|
313
|
+
RGraph.fireCustomEvent(obj, 'onannotateclear');
|
314
|
+
}
|
315
|
+
};
|
316
|
+
|
317
|
+
|
318
|
+
|
319
|
+
|
320
|
+
|
321
|
+
|
322
|
+
|
323
|
+
|
324
|
+
//
|
325
|
+
// Replays stored annotations
|
326
|
+
//
|
327
|
+
// @param object obj The graph object
|
328
|
+
//
|
329
|
+
RGraph.replayAnnotations = function (obj)
|
330
|
+
{
|
331
|
+
// Check for support
|
332
|
+
if (!win.localStorage) {
|
333
|
+
return;
|
334
|
+
}
|
335
|
+
|
336
|
+
var context = obj.context;
|
337
|
+
var annotations = win.localStorage['__rgraph_annotations_' + obj.id + '__'];
|
338
|
+
var i, len, move, coords;
|
339
|
+
|
340
|
+
// Save the state of the canvas
|
341
|
+
context.save();
|
342
|
+
context.beginPath();
|
343
|
+
context.lineWidth = obj.get('annotatableLinewidth');
|
344
|
+
|
345
|
+
if (annotations && annotations.length) {
|
346
|
+
annotations = annotations.split('|');
|
347
|
+
} else {
|
348
|
+
return;
|
349
|
+
}
|
350
|
+
|
351
|
+
// Set the stroke color
|
352
|
+
context.strokeStyle = annotations[i] || 'black';
|
353
|
+
|
354
|
+
|
355
|
+
|
356
|
+
for (i=0,len=annotations.length; i<len; ++i) {
|
357
|
+
|
358
|
+
// If the element of the array is a color - finish the path,
|
359
|
+
// stroke it and start a new one
|
360
|
+
if (annotations[i].match(/[a-z]+/)) {
|
361
|
+
|
362
|
+
context.stroke();
|
363
|
+
context.beginPath();
|
364
|
+
|
365
|
+
context.strokeStyle = annotations[i];
|
366
|
+
move = true;
|
367
|
+
continue;
|
368
|
+
}
|
369
|
+
|
370
|
+
coords = annotations[i].split(',');
|
371
|
+
coords[0] = Number(coords[0]);
|
372
|
+
coords[1] = Number(coords[1]);
|
373
|
+
|
374
|
+
if (move) {
|
375
|
+
context.moveTo(coords[0], coords[1]);
|
376
|
+
move = false;
|
377
|
+
} else {
|
378
|
+
context.lineTo(coords[0], coords[1]);
|
379
|
+
}
|
380
|
+
}
|
381
|
+
|
382
|
+
context.stroke();
|
383
|
+
context.restore();
|
384
|
+
};
|
385
|
+
|
386
|
+
|
387
|
+
|
388
|
+
|
389
|
+
|
390
|
+
|
391
|
+
|
392
|
+
|
393
|
+
window.addEventListener('load', function (e)
|
394
|
+
{
|
395
|
+
// This delay is necessary to allow the window.onload event listener to run
|
396
|
+
setTimeout(function ()
|
397
|
+
{
|
398
|
+
var tags = doc.getElementsByTagName('canvas');
|
399
|
+
for (var i=0; i<tags.length; ++i) {
|
400
|
+
if (tags[i].__object__ && tags[i].__object__.isRGraph && tags[i].__object__.get('annotatable')) {
|
401
|
+
RGraph.replayAnnotations(tags[i].__object__);
|
402
|
+
}
|
403
|
+
}
|
404
|
+
}, 100); // This delay is sufficient to wait before replaying the annotations
|
405
|
+
}, false);
|
406
|
+
|
407
|
+
|
408
|
+
|
409
|
+
|
410
|
+
|
411
|
+
|
412
|
+
|
413
|
+
|
414
|
+
// End module pattern
|
415
|
+
})(window, document);
|