rgraph-rails 1.0.5 → 1.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +8 -8
  2. data/.travis.yml +0 -1
  3. data/README.md +3 -3
  4. data/lib/rgraph-rails/version.rb +1 -1
  5. data/vendor/assets/javascripts/RGraph.bar.js +239 -3764
  6. data/vendor/assets/javascripts/RGraph.bipolar.js +115 -1986
  7. data/vendor/assets/javascripts/RGraph.common.annotate.js +35 -399
  8. data/vendor/assets/javascripts/RGraph.common.context.js +30 -600
  9. data/vendor/assets/javascripts/RGraph.common.core.js +403 -5187
  10. data/vendor/assets/javascripts/RGraph.common.csv.js +19 -275
  11. data/vendor/assets/javascripts/RGraph.common.deprecated.js +35 -454
  12. data/vendor/assets/javascripts/RGraph.common.dynamic.js +84 -1189
  13. data/vendor/assets/javascripts/RGraph.common.effects.js +90 -1548
  14. data/vendor/assets/javascripts/RGraph.common.key.js +54 -755
  15. data/vendor/assets/javascripts/RGraph.common.resizing.js +37 -567
  16. data/vendor/assets/javascripts/RGraph.common.sheets.js +29 -356
  17. data/vendor/assets/javascripts/RGraph.common.tooltips.js +32 -614
  18. data/vendor/assets/javascripts/RGraph.common.zoom.js +14 -223
  19. data/vendor/assets/javascripts/RGraph.cornergauge.js +71 -0
  20. data/vendor/assets/javascripts/RGraph.drawing.background.js +35 -620
  21. data/vendor/assets/javascripts/RGraph.drawing.circle.js +35 -576
  22. data/vendor/assets/javascripts/RGraph.drawing.image.js +52 -807
  23. data/vendor/assets/javascripts/RGraph.drawing.marker1.js +41 -717
  24. data/vendor/assets/javascripts/RGraph.drawing.marker2.js +37 -668
  25. data/vendor/assets/javascripts/RGraph.drawing.marker3.js +36 -563
  26. data/vendor/assets/javascripts/RGraph.drawing.poly.js +40 -608
  27. data/vendor/assets/javascripts/RGraph.drawing.rect.js +35 -597
  28. data/vendor/assets/javascripts/RGraph.drawing.text.js +34 -642
  29. data/vendor/assets/javascripts/RGraph.drawing.xaxis.js +50 -809
  30. data/vendor/assets/javascripts/RGraph.drawing.yaxis.js +51 -856
  31. data/vendor/assets/javascripts/RGraph.fuel.js +58 -964
  32. data/vendor/assets/javascripts/RGraph.funnel.js +55 -984
  33. data/vendor/assets/javascripts/RGraph.gantt.js +75 -1241
  34. data/vendor/assets/javascripts/RGraph.gauge.js +87 -1397
  35. data/vendor/assets/javascripts/RGraph.hbar.js +143 -2376
  36. data/vendor/assets/javascripts/RGraph.hprogress.js +80 -1397
  37. data/vendor/assets/javascripts/RGraph.line.js +241 -4162
  38. data/vendor/assets/javascripts/RGraph.meter.js +74 -1278
  39. metadata +3 -30
  40. data/vendor/assets/images/bg.png +0 -0
  41. data/vendor/assets/images/bullet.png +0 -0
  42. data/vendor/assets/images/facebook-large.png +0 -0
  43. data/vendor/assets/images/google-plus-large.png +0 -0
  44. data/vendor/assets/images/logo.png +0 -0
  45. data/vendor/assets/images/meter-image-sd-needle.png +0 -0
  46. data/vendor/assets/images/meter-image-sd.png +0 -0
  47. data/vendor/assets/images/meter-sketch-needle.png +0 -0
  48. data/vendor/assets/images/meter-sketch.png +0 -0
  49. data/vendor/assets/images/odometer-background.png +0 -0
  50. data/vendor/assets/images/rgraph.jpg +0 -0
  51. data/vendor/assets/images/title.png +0 -0
  52. data/vendor/assets/images/twitter-large.png +0 -0
  53. data/vendor/assets/javascripts/RGraph.modaldialog.js +0 -301
  54. data/vendor/assets/javascripts/RGraph.odo.js +0 -1265
  55. data/vendor/assets/javascripts/RGraph.pie.js +0 -2272
  56. data/vendor/assets/javascripts/RGraph.radar.js +0 -1847
  57. data/vendor/assets/javascripts/RGraph.rose.js +0 -1877
  58. data/vendor/assets/javascripts/RGraph.rscatter.js +0 -1425
  59. data/vendor/assets/javascripts/RGraph.scatter.js +0 -2970
  60. data/vendor/assets/javascripts/RGraph.semicircularprogress.js +0 -1015
  61. data/vendor/assets/javascripts/RGraph.thermometer.js +0 -1129
  62. data/vendor/assets/javascripts/RGraph.vprogress.js +0 -1452
  63. data/vendor/assets/javascripts/RGraph.waterfall.js +0 -1252
  64. data/vendor/assets/javascripts/financial-data.js +0 -1067
  65. data/vendor/assets/stylesheets/ModalDialog.css +0 -90
  66. data/vendor/assets/stylesheets/animations.css +0 -3347
  67. data/vendor/assets/stylesheets/website.css +0 -446
@@ -1,400 +1,36 @@
1
- // version: 2016-06-04
2
- /**
3
- * o--------------------------------------------------------------------------------o
4
- * | This file is part of the RGraph package - you can learn more at: |
5
- * | |
6
- * | http://www.rgraph.net |
7
- * | |
8
- * | RGraph is dual licensed under the Open Source GPL (General Public License) |
9
- * | v2.0 license and a commercial license which means that you're not bound by |
10
- * | the terms of the GPL. The commercial license starts at just 99 GBP and |
11
- * | you can read about it here: |
12
- * | |
13
- * | http://www.rgraph.net/license |
14
- * o--------------------------------------------------------------------------------o
15
- */
16
1
 
17
- RGraph = window.RGraph || {isRGraph: true};
18
-
19
- // Module pattern
20
- (function (win, doc, undefined)
21
- {
22
- var RG = RGraph,
23
- ua = navigator.userAgent,
24
- ma = Math;
25
-
26
-
27
-
28
-
29
- /**
30
- * This installs some event handlers
31
- *
32
- * Checking the RGraph.Annotate flag means the annotate code only runs once
33
- */
34
- RG.annotating_canvas_onmousedown = function (e)
35
- {
36
- if (e.button === 0) {
37
-
38
- e.target.__object__.Set('chart.mousedown', true);
39
-
40
- // Get the object from the canvas. Annotating must be enabled on the
41
- // last object defined
42
- var obj = e.target.__object__,
43
- prop = obj.properties
44
-
45
- // This starts the annotating "path" and set the color
46
- obj.context.beginPath();
47
-
48
- obj.context.strokeStyle = obj.Get('chart.annotate.color');
49
- obj.context.lineWidth = obj.Get('chart.annotate.linewidth');
50
-
51
- var mouseXY = RG.getMouseXY(e),
52
- mouseX = mouseXY[0],
53
- mouseY = mouseXY[1]
54
-
55
- // Allow for the Bar chart 3D
56
- if (obj.type === 'bar' && prop['chart.variant'] === '3d') {
57
- var adjustment = prop['chart.variant.threed.angle'] * mouseXY[0];
58
- mouseY -= adjustment;
59
- }
60
-
61
- // Clear the annotation recording
62
- RG.Registry.Set('annotate.actions', [obj.Get('chart.annotate.color')]);
63
-
64
- // This sets the initial X/Y position
65
- obj.context.moveTo(mouseX, mouseY);
66
- RG.Registry.Set('annotate.last.coordinates', [mouseX,mouseY]);
67
-
68
- RG.Registry.Set('started.annotating', false);
69
- RG.Registry.Set('chart.annotating', obj);
70
-
71
- // Fire the onannotatebegin event.
72
- RG.FireCustomEvent(obj, 'onannotatebegin');
73
- }
74
-
75
- return false;
76
- };
77
-
78
-
79
-
80
-
81
- /**
82
- * This cancels annotating for ALL canvases
83
- */
84
- RG.annotating_window_onmouseup = function (e)
85
- {
86
- var obj = RG.Registry.Get('chart.annotating');
87
- var win = window;
88
-
89
- if (e.button != 0 || !obj) {
90
- return;
91
- }
92
-
93
- // This cancels annotating on ALL canvas tags on the page
94
- var tags = doc.getElementsByTagName('canvas');
95
-
96
- for (var i=0; i<tags.length; ++i) {
97
- if (tags[i].__object__) {
98
- tags[i].__object__.Set('chart.mousedown', false);
99
- }
100
- }
101
-
102
- // Store the annotations in browser storage if it's available
103
- if (RG.Registry.Get('annotate.actions') && RG.Registry.Get('annotate.actions').length > 0 && win.localStorage) {
104
-
105
- var id = '__rgraph_annotations_' + e.target.id + '__';
106
- var annotations = win.localStorage[id] ? win.localStorage[id] + '|' : '';
107
- annotations += RG.Registry.Get('annotate.actions');
108
-
109
- // Store the annotations information in HTML5 browser storage here
110
- win.localStorage[id] = annotations;
111
- }
112
-
113
- // Clear the recorded annotations
114
- RG.Registry.Set('annotate.actions', []);
115
-
116
- // Fire the annotate event
117
- RG.FireCustomEvent(obj, 'onannotateend');
118
- };
119
-
120
-
121
-
122
-
123
- /**
124
- * The canvas onmousemove function
125
- */
126
- RGraph.annotating_canvas_onmousemove = function (e)
127
- {
128
- var obj = e.target.__object__;
129
- var prop = obj.properties;
130
- var mouseXY = RG.getMouseXY(e);
131
- var mouseX = mouseXY[0];
132
- var mouseY = mouseXY[1];
133
- var lastXY = RG.Registry.Get('annotate.last.coordinates');
134
-
135
- if (obj.Get('chart.mousedown')) {
136
-
137
- // Allow for the Bar chart 3D
138
- if (obj.type === 'bar' && prop['chart.variant'] === '3d') {
139
- var adjustment = prop['chart.variant.threed.angle'] * mouseXY[0];
140
- mouseY -= adjustment;
141
- }
142
-
143
- obj.context.beginPath();
144
-
145
- if (!lastXY) {
146
- obj.context.moveTo(mouseX, mouseY)
147
- } else {
148
- obj.context.strokeStyle = obj.properties['chart.annotate.color'];
149
- obj.context.moveTo(lastXY[0], lastXY[1]);
150
- obj.context.lineTo(mouseX, mouseY);
151
- }
152
-
153
- RG.Registry.Set('annotate.actions', RG.Registry.Get('annotate.actions') + '|' + mouseX + ',' + mouseY);
154
- RG.Registry.Set('annotate.last.coordinates', [mouseX,mouseY]);
155
-
156
- RG.FireCustomEvent(obj, 'onannotate');
157
- obj.context.stroke();
158
- }
159
- };
160
-
161
-
162
-
163
-
164
- /**
165
- * Shows the mini palette used for annotations
166
- *
167
- * @param object e The event object
168
- */
169
- RG.ShowPalette =
170
- RG.Showpalette = function (e)
171
- {
172
- var isSafari = navigator.userAgent.indexOf('Safari') ? true : false;
173
-
174
- e = RG.FixEventObject(e);
175
-
176
- var canvas = e.target.parentNode.__canvas__,
177
- context = canvas.getContext('2d'),
178
- obj = canvas.__object__,
179
- div = document.createElement('DIV'),
180
- coords = RG.getMouseXY(e)
181
-
182
- div.__object__ = obj; // The graph object
183
- div.className = 'RGraph_palette';
184
- div.style.position = 'absolute';
185
- div.style.backgroundColor = 'white';
186
- div.style.border = '1px solid black';
187
- div.style.left = 0;
188
- div.style.top = 0;
189
- div.style.padding = '3px';
190
- div.style.paddingLeft = '5px';
191
- div.style.opacity = 0;
192
- div.style.boxShadow = 'rgba(96,96,96,0.5) 3px 3px 3px';
193
- div.style.WebkitBoxShadow = 'rgba(96,96,96,0.5) 3px 3px 3px';
194
- div.style.MozBoxShadow = 'rgba(96,96,96,0.5) 3px 3px 3px';
195
-
196
-
197
- // MUST use named colors that are capitalised
198
- var colors = [
199
- 'Black',
200
- 'Red',
201
- 'Yellow',
202
- 'Green',
203
- 'Orange',
204
- 'White',
205
- 'Magenta',
206
- 'Pink'
207
- ];
208
-
209
- // Add the colors to the palette
210
- for (var i=0,len=colors.length; i<len; i+=1) {
211
-
212
- var div2 = doc.createElement('DIV');
213
- div2.cssClass = 'RGraph_palette_color';
214
- div2.style.fontSize = '12pt';
215
- div2.style.cursor = 'pointer';
216
- div2.style.padding = '1px';
217
- div2.style.paddingRight = '10px';
218
- div2.style.textAlign = 'left';
219
-
220
- var span = document.createElement('SPAN');
221
- span.style.display = 'inline-block';
222
- span.style.marginRight = '9px';
223
- span.style.width = '17px';
224
- span.style.height = '17px';
225
- span.style.top = '2px';
226
- span.style.position = 'relative';
227
- span.style.backgroundColor = colors[i];
228
- div2.appendChild(span);
229
-
230
- div2.innerHTML += colors[i];
231
-
232
-
233
- div2.onmouseover = function ()
234
- {
235
- this.style.backgroundColor = '#eee';
236
- }
237
-
238
- div2.onmouseout = function ()
239
- {
240
- this.style.backgroundColor = '';
241
- }
242
-
243
- div2.onclick = function (e)
244
- {
245
- var color = this.childNodes[0].style.backgroundColor;
246
-
247
- obj.Set('chart.annotate.color', color);
248
- }
249
- div.appendChild(div2);
250
- }
251
-
252
-
253
- doc.body.appendChild(div);
254
-
255
- /**
256
- * Now the div has been added to the document, move it up and left
257
- */
258
- div.style.left = e.pageX + 'px';
259
- div.style.top = e.pageY + 'px';
260
-
261
- /**
262
- * Chang the position if the cursor is near the right edge of the browser window
263
- */
264
- if ((e.pageX + (div.offsetWidth + 5) ) > document.body.offsetWidth) {
265
- div.style.left = (e.pageX - div.offsetWidth) + 'px';
266
- }
267
-
268
- /**
269
- * Store the palette div in the registry
270
- */
271
- RGraph.Registry.Set('chart.palette', div);
272
-
273
- setTimeout(function () {div.style.opacity = 0.2;}, 50);
274
- setTimeout(function () {div.style.opacity = 0.4;}, 100);
275
- setTimeout(function () {div.style.opacity = 0.6;}, 150);
276
- setTimeout(function () {div.style.opacity = 0.8;}, 200);
277
- setTimeout(function () {div.style.opacity = 1;}, 250);
278
-
279
- RGraph.hideContext();
280
-
281
- window.onclick = function ()
282
- {
283
- RG.hidePalette();
284
- }
285
-
286
- // Should this be here? Yes. This function is being used as an event handler.
287
- e.stopPropagation();
288
- return false;
289
- };
290
-
291
-
292
-
293
-
294
- /**
295
- * Clears any annotation data from global storage
296
- *
297
- * @param object canvas The canvas tag object
298
- */
299
- RG.clearAnnotations =
300
- RG.ClearAnnotations = function (canvas)
301
- {
302
- /**
303
- * For BC the argument can also be the ID of the canvas
304
- */
305
- if (typeof canvas === 'string') {
306
- var id = canvas;
307
- canvas = doc.getElementById(id);
308
- } else {
309
- var id = canvas.id
310
- }
311
-
312
- var obj = canvas.__object__;
313
-
314
- if (win.localStorage && win.localStorage['__rgraph_annotations_' + id + '__'] && win.localStorage['__rgraph_annotations_' + id + '__'].length) {
315
- win.localStorage['__rgraph_annotations_' + id + '__'] = [];
316
-
317
- RGraph.FireCustomEvent(obj, 'onannotateclear');
318
- }
319
- };
320
-
321
-
322
-
323
-
324
- /**
325
- * Replays stored annotations
326
- *
327
- * @param object obj The graph object
328
- */
329
- RG.replayAnnotations =
330
- RG.ReplayAnnotations = function (obj)
331
- {
332
- // Check for support
333
- if (!win.localStorage) {
334
- return;
335
- }
336
-
337
- var context = obj.context;
338
- var annotations = win.localStorage['__rgraph_annotations_' + obj.id + '__'];
339
- var i, len, move, coords;
340
-
341
- context.beginPath();
342
- context.lineWidth = obj.Get('annotate.linewidth');
343
-
344
- if (annotations && annotations.length) {
345
- annotations = annotations.split('|');
346
- } else {
347
- return;
348
- }
349
-
350
-
351
- for (i=0,len=annotations.length; i<len; ++i) {
352
-
353
- // If the element of the array is a color - finish the path,
354
- // stroke it and start a new one
355
- if (annotations[i].match(/[a-z]+/)) {
356
- context.stroke();
357
- context.beginPath();
358
-
359
- context.strokeStyle = annotations[i];
360
- move = true;
361
- continue;
362
- }
363
-
364
- coords = annotations[i].split(',');
365
- coords[0] = Number(coords[0]);
366
- coords[1] = Number(coords[1]);
367
-
368
- if (move) {
369
- context.moveTo(coords[0], coords[1]);
370
- move = false;
371
- } else {
372
- context.lineTo(coords[0], coords[1]);
373
- }
374
- }
375
-
376
- context.stroke();
377
- };
378
-
379
-
380
-
381
-
382
- window.addEventListener('load', function (e)
383
- {
384
- // This delay is necessary to allow the window.onload event listener to run
385
- setTimeout(function ()
386
- {
387
- var tags = doc.getElementsByTagName('canvas');
388
- for (var i=0; i<tags.length; ++i) {
389
- if (tags[i].__object__ && tags[i].__object__.isRGraph && tags[i].__object__.Get('chart.annotatable')) {
390
- RG.replayAnnotations(tags[i].__object__);
391
- }
392
- }
393
- }, 100); // This delay is sufficient to wait before replaying the annotations
394
- }, false);
395
-
396
-
397
-
398
-
399
- // End module pattern
400
- })(window, document);
2
+ RGraph=window.RGraph||{isRGraph:true};(function(win,doc,undefined)
3
+ {var RG=RGraph,ua=navigator.userAgent,ma=Math;RG.annotating_canvas_onmousedown=function(e)
4
+ {if(e.button===0){e.target.__object__.Set('chart.mousedown',true);var obj=e.target.__object__,prop=obj.properties
5
+ obj.context.beginPath();obj.context.strokeStyle=obj.Get('chart.annotate.color');obj.context.lineWidth=obj.Get('chart.annotate.linewidth');var mouseXY=RG.getMouseXY(e),mouseX=mouseXY[0],mouseY=mouseXY[1]
6
+ if(obj.type==='bar'&&prop['chart.variant']==='3d'){var adjustment=prop['chart.variant.threed.angle']*mouseXY[0];mouseY-=adjustment;}
7
+ RG.Registry.Set('annotate.actions',[obj.Get('chart.annotate.color')]);obj.context.moveTo(mouseX,mouseY);RG.Registry.Set('annotate.last.coordinates',[mouseX,mouseY]);RG.Registry.Set('started.annotating',false);RG.Registry.Set('chart.annotating',obj);RG.FireCustomEvent(obj,'onannotatebegin');}
8
+ return false;};RG.annotating_window_onmouseup=function(e)
9
+ {var obj=RG.Registry.Get('chart.annotating');var win=window;if(e.button!=0||!obj){return;}
10
+ var tags=doc.getElementsByTagName('canvas');for(var i=0;i<tags.length;++i){if(tags[i].__object__){tags[i].__object__.Set('chart.mousedown',false);}}
11
+ if(RG.Registry.Get('annotate.actions')&&RG.Registry.Get('annotate.actions').length>0&&win.localStorage){var id='__rgraph_annotations_'+e.target.id+'__';var annotations=win.localStorage[id]?win.localStorage[id]+'|':'';annotations+=RG.Registry.Get('annotate.actions');win.localStorage[id]=annotations;}
12
+ RG.Registry.Set('annotate.actions',[]);RG.FireCustomEvent(obj,'onannotateend');};RGraph.annotating_canvas_onmousemove=function(e)
13
+ {var obj=e.target.__object__;var prop=obj.properties;var mouseXY=RG.getMouseXY(e);var mouseX=mouseXY[0];var mouseY=mouseXY[1];var lastXY=RG.Registry.Get('annotate.last.coordinates');if(obj.Get('chart.mousedown')){if(obj.type==='bar'&&prop['chart.variant']==='3d'){var adjustment=prop['chart.variant.threed.angle']*mouseXY[0];mouseY-=adjustment;}
14
+ obj.context.beginPath();if(!lastXY){obj.context.moveTo(mouseX,mouseY)}else{obj.context.strokeStyle=obj.properties['chart.annotate.color'];obj.context.moveTo(lastXY[0],lastXY[1]);obj.context.lineTo(mouseX,mouseY);}
15
+ RG.Registry.Set('annotate.actions',RG.Registry.Get('annotate.actions')+'|'+mouseX+','+mouseY);RG.Registry.Set('annotate.last.coordinates',[mouseX,mouseY]);RG.FireCustomEvent(obj,'onannotate');obj.context.stroke();}};RG.ShowPalette=RG.Showpalette=function(e)
16
+ {var isSafari=navigator.userAgent.indexOf('Safari')?true:false;e=RG.FixEventObject(e);var canvas=e.target.parentNode.__canvas__,context=canvas.getContext('2d'),obj=canvas.__object__,div=document.createElement('DIV'),coords=RG.getMouseXY(e)
17
+ div.__object__=obj;div.className='RGraph_palette';div.style.position='absolute';div.style.backgroundColor='white';div.style.border='1px solid black';div.style.left=0;div.style.top=0;div.style.padding='3px';div.style.paddingLeft='5px';div.style.opacity=0;div.style.boxShadow='rgba(96,96,96,0.5) 3px 3px 3px';div.style.WebkitBoxShadow='rgba(96,96,96,0.5) 3px 3px 3px';div.style.MozBoxShadow='rgba(96,96,96,0.5) 3px 3px 3px';var colors=['Black','Red','Yellow','Green','Orange','White','Magenta','Pink'];for(var i=0,len=colors.length;i<len;i+=1){var div2=doc.createElement('DIV');div2.cssClass='RGraph_palette_color';div2.style.fontSize='12pt';div2.style.cursor='pointer';div2.style.padding='1px';div2.style.paddingRight='10px';div2.style.textAlign='left';var span=document.createElement('SPAN');span.style.display='inline-block';span.style.marginRight='9px';span.style.width='17px';span.style.height='17px';span.style.top='2px';span.style.position='relative';span.style.backgroundColor=colors[i];div2.appendChild(span);div2.innerHTML+=colors[i];div2.onmouseover=function()
18
+ {this.style.backgroundColor='#eee';}
19
+ div2.onmouseout=function()
20
+ {this.style.backgroundColor='';}
21
+ div2.onclick=function(e)
22
+ {var color=this.childNodes[0].style.backgroundColor;obj.Set('chart.annotate.color',color);}
23
+ div.appendChild(div2);}
24
+ doc.body.appendChild(div);div.style.left=e.pageX+'px';div.style.top=e.pageY+'px';if((e.pageX+(div.offsetWidth+5))>document.body.offsetWidth){div.style.left=(e.pageX-div.offsetWidth)+'px';}
25
+ RGraph.Registry.Set('chart.palette',div);setTimeout(function(){div.style.opacity=0.2;},50);setTimeout(function(){div.style.opacity=0.4;},100);setTimeout(function(){div.style.opacity=0.6;},150);setTimeout(function(){div.style.opacity=0.8;},200);setTimeout(function(){div.style.opacity=1;},250);RGraph.hideContext();window.onclick=function()
26
+ {RG.hidePalette();}
27
+ e.stopPropagation();return false;};RG.clearAnnotations=RG.ClearAnnotations=function(canvas)
28
+ {if(typeof canvas==='string'){var id=canvas;canvas=doc.getElementById(id);}else{var id=canvas.id}
29
+ var obj=canvas.__object__;if(win.localStorage&&win.localStorage['__rgraph_annotations_'+id+'__']&&win.localStorage['__rgraph_annotations_'+id+'__'].length){win.localStorage['__rgraph_annotations_'+id+'__']=[];RGraph.FireCustomEvent(obj,'onannotateclear');}};RG.replayAnnotations=RG.ReplayAnnotations=function(obj)
30
+ {if(!win.localStorage){return;}
31
+ var context=obj.context;var annotations=win.localStorage['__rgraph_annotations_'+obj.id+'__'];var i,len,move,coords;context.beginPath();context.lineWidth=obj.Get('annotate.linewidth');if(annotations&&annotations.length){annotations=annotations.split('|');}else{return;}
32
+ for(i=0,len=annotations.length;i<len;++i){if(annotations[i].match(/[a-z]+/)){context.stroke();context.beginPath();context.strokeStyle=annotations[i];move=true;continue;}
33
+ coords=annotations[i].split(',');coords[0]=Number(coords[0]);coords[1]=Number(coords[1]);if(move){context.moveTo(coords[0],coords[1]);move=false;}else{context.lineTo(coords[0],coords[1]);}}
34
+ context.stroke();};window.addEventListener('load',function(e)
35
+ {setTimeout(function()
36
+ {var tags=doc.getElementsByTagName('canvas');for(var i=0;i<tags.length;++i){if(tags[i].__object__&&tags[i].__object__.isRGraph&&tags[i].__object__.Get('chart.annotatable')){RG.replayAnnotations(tags[i].__object__);}}},100);},false);})(window,document);