rgraph-rails 1.0.5 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,615 +1,33 @@
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
-
20
-
21
-
22
- // Module pattern
23
- (function (win, doc, undefined)
24
- {
25
- var RG = RGraph,
26
- ua = navigator.userAgent,
27
- ma = Math;
28
-
29
-
30
-
31
-
32
- /**
33
- * This is used in two functions, hence it's here
34
- */
35
- RG.tooltips = {};
36
- RG.tooltips.padding = '3px';
37
- RG.tooltips.font_face = 'Tahoma';
38
- RG.tooltips.font_size = '10pt';
39
-
40
-
41
-
42
-
43
- /**
44
- * Shows a tooltip next to the mouse pointer
45
- *
46
- * @param canvas object The canvas element object
47
- * @param text string The tooltip text
48
- * @param int x The X position that the tooltip should appear at. Combined with the canvases offsetLeft
49
- * gives the absolute X position
50
- * @param int y The Y position the tooltip should appear at. Combined with the canvases offsetTop
51
- * gives the absolute Y position
52
- * @param int idx The index of the tooltip in the graph objects tooltip array
53
- * @param object e The event object
54
- */
55
- RG.tooltip =
56
- RG.Tooltip = function (obj, text, x, y, idx, e)
57
- {
58
- /**
59
- * chart.tooltip.override allows you to totally take control of rendering the tooltip yourself
60
- */
61
- if (typeof(obj.get('chart.tooltips.override')) == 'function') {
62
- return obj.get('chart.tooltips.override')(obj, text, x, y, idx);
63
- }
64
-
65
-
66
- /**
67
- * Fire the beforetooltip event
68
- */
69
- RG.fireCustomEvent(obj, 'onbeforetooltip');
70
-
71
-
72
- /**
73
- * Save the X/Y coords
74
- */
75
- var originalX = x;
76
- var originalY = y;
77
-
78
- /**
79
- * This facilitates the "id:xxx" format
80
- */
81
- text = RG.getTooltipTextFromDIV(text);
82
-
83
- /**
84
- * First clear any exising timers
85
- */
86
- var timers = RG.Registry.Get('chart.tooltip.timers');
87
-
88
- if (timers && timers.length) {
89
- for (i=0; i<timers.length; ++i) {
90
- clearTimeout(timers[i]);
91
- }
92
- }
93
- RG.Registry.Set('chart.tooltip.timers', []);
94
-
95
- /**
96
- * Hide the context menu if it's currently shown
97
- */
98
- if (obj.Get('chart.contextmenu')) {
99
- RG.hideContext();
100
- }
101
-
102
- var effect = obj.Get('chart.tooltips.effect') ? obj.Get('chart.tooltips.effect').toLowerCase() : 'fade';
103
-
104
-
105
- /**
106
- * Show a tool tip
107
- */
108
- var tooltipObj = document.createElement('DIV');
109
- tooltipObj.className = obj.Get('chart.tooltips.css.class');
110
- tooltipObj.style.display = 'none';
111
- tooltipObj.style.position = RG.isFixed(obj.canvas) ? 'fixed' : 'absolute';
112
- tooltipObj.style.left = 0;
113
- tooltipObj.style.top = 0;
114
- tooltipObj.style.backgroundColor = 'rgb(255,255,239)';
115
- tooltipObj.style.color = 'black';
116
- if (!document.all) tooltipObj.style.border = '';
117
- tooltipObj.style.visibility = 'visible';
118
- tooltipObj.style.paddingLeft = RG.tooltips.padding;
119
- tooltipObj.style.paddingRight = RG.tooltips.padding;
120
- tooltipObj.style.fontFamily = RG.tooltips.font_face;
121
- tooltipObj.style.fontSize = RG.tooltips.font_size;
122
- tooltipObj.style.zIndex = 3;
123
-
124
- tooltipObj.style.borderRadius = '5px';
125
- tooltipObj.style.MozBorderRadius = '5px';
126
- tooltipObj.style.WebkitBorderRadius = '5px';
127
- tooltipObj.style.WebkitBoxShadow = 'rgba(96,96,96,0.5) 0 0 5px';
128
- tooltipObj.style.MozBoxShadow = 'rgba(96,96,96,0.5) 0 0 5px';
129
- tooltipObj.style.boxShadow = 'rgba(96,96,96,0.5) 0 0 5px';
130
- tooltipObj.style.filter = 'progid:DXImageTransform.Microsoft.Shadow(color=#666666,direction=135)';
131
- tooltipObj.style.opacity = 0;
132
- //tooltipObj.style.overflow = 'hidden';
133
- tooltipObj.innerHTML = text;
134
- tooltipObj.__text__ = text; // This is set because the innerHTML can change when it's set
135
- tooltipObj.__canvas__ = obj.canvas;
136
- tooltipObj.style.display = 'inline';
137
- tooltipObj.id = '__rgraph_tooltip_' + obj.canvas.id + '_' + obj.uid + '_'+ idx;
138
- tooltipObj.__event__ = obj.Get('chart.tooltips.event') || 'click';
139
- tooltipObj.__object__ = obj;
140
-
141
- if (typeof(idx) == 'number') {
142
- tooltipObj.__index__ = idx;
143
- origIdx = idx;
144
- }
145
-
146
- if (obj.type == 'line' || obj.type == 'radar') {
147
- for (var ds=0; ds<obj.data.length; ++ds) {
148
- if (idx >= obj.data[ds].length) {
149
- idx -= obj.data[ds].length;
150
- } else {
151
- break;
152
- }
153
- }
154
-
155
- tooltipObj.__dataset__ = ds;
156
- tooltipObj.__index2__ = idx;
157
- }
158
-
159
- document.body.appendChild(tooltipObj);
160
-
161
- var width = tooltipObj.offsetWidth;
162
- var height = tooltipObj.offsetHeight;
163
-
164
-
165
- /**
166
- * Set the width on the tooltip so it doesn't resize if the window is resized
167
- */
168
- tooltipObj.style.width = width + 'px';
169
-
170
-
171
-
172
- tooltipObj.style.top = window.event.pageY - height - 5 + 'px';
173
-
174
- /**
175
- * If the function exists call the object specific tooltip positioning function
176
- */
177
-
178
- if (typeof(obj.positionTooltip) == 'function') {
179
- if (tooltipObj.innerHTML.length > 0) {
180
-
181
- obj.positionTooltip(obj, x, y, tooltipObj, origIdx ? origIdx : idx);
182
-
183
- if (obj.Get('chart.tooltips.coords.page')) {
184
-
185
- tooltipObj.style.left = e.pageX - (width / 2) - 4.25 + 'px';
186
- tooltipObj.style.top = e.pageY - height - 5 + 'px';
187
-
188
- // In case the value is negative - this positions the tooltip
189
- // underneath the click
190
- //if (obj.type === 'bar' && obj.data_arr[idx] < 0) {
191
- //tooltipObj.style.top = e.pageY + 10 + 'px';
192
- //}
193
-
194
- //document.getElementById('__rgraph_tooltip_pointer__').style.left = (parseInt(tooltipObj.offsetWidth) / 2) - 8.5 + 'px';
195
- }
196
- }
197
- } else {
198
- tooltipObj.style.left = e.pageX - (width / 2) - 4.25 + 'px';
199
- tooltipObj.style.top = e.pageY - height - 7 + 'px';
200
- }
201
-
202
-
203
- if (effect == 'fade' || effect == 'expand' || effect == 'contract' || effect == 'snap') {
204
- setTimeout(function () {tooltipObj.style.opacity = 0.1;}, 25);
205
- setTimeout(function () {tooltipObj.style.opacity = 0.2;}, 50);
206
- setTimeout(function () {tooltipObj.style.opacity = 0.3;}, 75);
207
- setTimeout(function () {tooltipObj.style.opacity = 0.4;}, 100);
208
- setTimeout(function () {tooltipObj.style.opacity = 0.5;}, 125);
209
- setTimeout(function () {tooltipObj.style.opacity = 0.6;}, 150);
210
- setTimeout(function () {tooltipObj.style.opacity = 0.7;}, 175);
211
- setTimeout(function () {tooltipObj.style.opacity = 0.8;}, 200);
212
- setTimeout(function () {tooltipObj.style.opacity = 0.9;}, 225);
213
-
214
- if (effect == 'expand' || effect == 'contract' || effect == 'snap') {
215
- console.log('[RGRAPH] The snap, expand and contract tooltip effects are deprecated. Available effects now are fade and none');
216
- }
217
- }
218
-
219
- setTimeout("if (RGraph.Registry.Get('chart.tooltip')) { RGraph.Registry.Get('chart.tooltip').style.opacity = 1;}", effect == 'none' ? 50 : 250);
220
-
221
- /**
222
- * If the tooltip it self is clicked, cancel it
223
- */
224
- tooltipObj.onmousedown = function (e){e.stopPropagation();}
225
- tooltipObj.onmouseup = function (e){e.stopPropagation();}
226
- tooltipObj.onclick = function (e){if (e.button == 0) {e.stopPropagation();}}
227
-
228
-
229
-
230
-
231
-
232
-
233
-
234
- /**
235
- * Keep a reference to the tooltip in the registry
236
- */
237
- RG.Registry.Set('chart.tooltip', tooltipObj);
238
-
239
- /**
240
- * Fire the tooltip event
241
- */
242
- RG.FireCustomEvent(obj, 'ontooltip');
243
- };
244
-
245
-
246
-
247
-
248
-
249
- /**
250
- *
251
- */
252
- RG.getTooltipTextFromDIV = function (text)
253
- {
254
- // This regex is duplicated firher down on roughly line 888
255
- var result = /^id:(.*)/.exec(text);
256
-
257
- if (result && result[1] && document.getElementById(result[1])) {
258
- text = document.getElementById(result[1]).innerHTML;
259
- } else if (result && result[1]) {
260
- text = '';
261
- }
262
-
263
- return text;
264
- };
265
-
266
-
267
- /**
268
- *
269
- */
270
- RG.getTooltipWidth = function (text, obj)
271
- {
272
- var div = document.createElement('DIV');
273
- div.className = obj.Get('chart.tooltips.css.class');
274
- div.style.paddingLeft = RG.tooltips.padding;
275
- div.style.paddingRight = RG.tooltips.padding;
276
- div.style.fontFamily = RG.tooltips.font_face;
277
- div.style.fontSize = RG.tooltips.font_size;
278
- div.style.visibility = 'hidden';
279
- div.style.position = 'absolute';
280
- div.style.top = '300px';
281
- div.style.left = 0;
282
- div.style.display = 'inline';
283
- div.innerHTML = RG.getTooltipTextFromDIV(text);
284
- document.body.appendChild(div);
285
-
286
- return div.offsetWidth;
287
- };
288
-
289
-
290
- /**
291
- * Hides the currently shown tooltip
292
- */
293
- RG.hideTooltip =
294
- RG.HideTooltip = function ()
295
- {
296
- var tooltip = RG.Registry.Get('chart.tooltip');
297
- var uid = arguments[0] && arguments[0].uid ? arguments[0].uid : null;
298
-
299
- if (tooltip && tooltip.parentNode && (!uid || uid == tooltip.__canvas__.uid)) {
300
- tooltip.parentNode.removeChild(tooltip);
301
- tooltip.style.display = 'none';
302
- tooltip.style.visibility = 'hidden';
303
- RG.Registry.Set('chart.tooltip', null);
304
- }
305
- };
306
-
307
-
308
-
309
- /**
310
- * This installs the window mousedown event listener. It clears any highlight that may
311
- * be present.
312
- *
313
- * @param object obj The chart object
314
- *
315
- RGraph.InstallWindowMousedownTooltipListener = function (obj)
316
- {
317
- if (RGraph.Registry.Get('__rgraph_event_listeners__')['window_mousedown']) {
318
- return;
319
- }
320
-
321
- // When the canvas is cleared, reset this flag so that the event listener is installed again
322
- RGraph.AddCustomEventListener(obj, 'onclear', function (obj) {RGraph.Registry.Get('__rgraph_event_listeners__')['window_mousedown'] = false;})
323
-
324
- // NOTE: Global on purpose
325
- rgraph_window_mousedown = function (e)
326
- {
327
- if (RGraph.Registry.Get('chart.tooltip')) {
328
-
329
- var obj = RGraph.Registry.Get('chart.tooltip').__object__;
330
- var canvas = obj.canvas;
331
-
332
- /**
333
- * Get rid of the tooltip and redraw all canvases on the page
334
- *
335
- RGraph.HideTooltip();
336
-
337
- /**
338
- * No need to clear if highlighting is disabled
339
- *
340
- * TODO Really, need to check ALL of the pertinent objects that
341
- * are drawing on the canvas using the ObjectRegistry -
342
- * ie RGraph.ObjectRegistry.getObjectsByCanvasID()
343
- *
344
- if (obj.Get('chart.tooltips.highlight')) {
345
- RGraph.RedrawCanvas(canvas);
346
- }
347
- }
348
- }
349
- window.addEventListener('mousedown', rgraph_window_mousedown, false);
350
- RGraph.AddEventListener('window_' + obj.id, 'mousedown', rgraph_window_mousedown);
351
- }
352
- */
353
-
354
-
355
- /**
356
- * This installs the canvas mouseup event listener. This is the function that
357
- * actually shows the appropriate (if any) tooltip.
358
- *
359
- * @param object obj The chart object
360
- *
361
- RGraph.InstallCanvasMouseupTooltipListener = function (obj)
362
- {
363
- if (RGraph.Registry.Get('__rgraph_event_listeners__')[obj.canvas.id + '_mouseup']) {
364
- return;
365
- }
366
- RGraph.Registry.Get('__rgraph_event_listeners__')[obj.canvas.id + '_mouseup'] = true;
367
-
368
- // When the canvas is cleared, reset this flag so that the event listener is installed again
369
- RGraph.AddCustomEventListener(obj, 'onclear', function (obj) {RGraph.Registry.Get('__rgraph_event_listeners__')[obj.canvas.id + '_mouseup'] = false});
370
-
371
- // Install the onclick event handler for the tooltips
372
- //
373
- // // NOTE: Global on purpose
374
- rgraph_canvas_mouseup_func = function (e)
375
- {
376
- var x = arguments[1] ? arguments[1] : e.pageX;
377
- var y = arguments[2] ? arguments[2] : e.pageY;
378
-
379
- var objects = RGraph.ObjectRegistry.getObjectsByCanvasID(e.target.id);
380
-
381
- // It's important to go backwards through the array so that the front charts
382
- // are checked first, then the charts at the back
383
- for (var i=(objects.length - 1); i>=0; --i) {
384
-
385
- var shape = objects[i].getShape(e);
386
-
387
- if (shape && shape['object'] && !RGraph.Registry.Get('chart.tooltip')) {
388
-
389
- /**
390
- * This allows the Scatter chart funky tooltips style
391
- *
392
- if (objects[i].type == 'scatter' && shape['dataset'] > 0) {
393
- for (var j=0; j<(objects[i].data.length - 1); ++j) {
394
- shape['index'] += objects[i].data[j].length;
395
- }
396
- }
397
-
398
- var text = RGraph.parseTooltipText(objects[i].Get('chart.tooltips'), shape['index']);
399
-
400
- if (text) {
401
-
402
- if (shape['object'].Get('chart.tooltips.hotspot.xonly')) {
403
- var canvasXY = RGraph.getCanvasXY(objects[i].canvas);
404
- x = canvasXY[0] + shape[1];
405
- y = canvasXY[1] + shape[2];
406
- }
407
-
408
- RGraph.Tooltip(objects[i], text, x, y, shape['index']);
409
- objects[i].Highlight(shape);
410
-
411
- e.stopPropagation();
412
- e.cancelBubble = true;
413
- return false;
414
- }
415
- }
416
- }
417
- }
418
- obj.canvas.addEventListener('mouseup', rgraph_canvas_mouseup_func, false);
419
- RGraph.AddEventListener(obj.id, 'mouseup', rgraph_canvas_mouseup_func);
420
- }
421
- */
422
-
423
-
424
-
425
- /**
426
- * This installs the canvas mousemove event listener. This is the function that
427
- * changes the mouse pointer if need be.
428
- *
429
- * @param object obj The chart object
430
- *
431
- RGraph.InstallCanvasMousemoveTooltipListener = function (obj)
432
- {
433
- if (RGraph.Registry.Get('__rgraph_event_listeners__')[obj.canvas.id + '_mousemove']) {
434
- return;
435
- }
436
- RGraph.Registry.Get('__rgraph_event_listeners__')[obj.canvas.id + '_mousemove'] = true;
437
-
438
- // When the canvas is cleared, reset this flag so that the event listener is installed again
439
- RGraph.AddCustomEventListener(obj, 'onclear', function (obj) {RGraph.Registry.Get('__rgraph_event_listeners__')[obj.canvas.id + '_mousemove'] = false})
440
-
441
- // Install the mousemove event handler for the tooltips
442
- //
443
- // NOTE: Global on purpose
444
- rgraph_canvas_mousemove_func = function (e)
445
- {
446
- var objects = RGraph.ObjectRegistry.getObjectsByCanvasID(e.target.id);
447
-
448
- for (var i=0; i<objects.length; ++i) {
449
-
450
- var shape = objects[i].getShape(e);
451
-
452
- if (shape && shape['object']) {
453
-
454
- /**
455
- * This allows the Scatter chart funky tooltips style
456
- *
457
- if (objects[i].type == 'scatter' && shape['dataset'] > 0) {
458
- for (var j=0; j<(objects[i].data.length - 1); ++j) {
459
- shape['index'] += objects[i].data[j].length;
460
- }
461
- }
462
-
463
- var text = RGraph.parseTooltipText(objects[i].Get('chart.tooltips'), shape['index']);
464
-
465
-
466
- if (text) {
467
-
468
- e.target.style.cursor = 'pointer';
469
-
470
- /**
471
- * This facilitates the event triggering the tooltips being mousemove
472
- *
473
-
474
- if ( typeof(objects[i].Get('chart.tooltips.event')) == 'string'
475
- && objects[i].Get('chart.tooltips.event') == 'onmousemove'
476
- && (!RGraph.Registry.Get('chart.tooltip') || shape['index'] != RGraph.Registry.Get('chart.tooltip').__index__ || shape['object'].uid != RGraph.Registry.Get('chart.tooltip').__object__.uid)
477
- ) {
478
-
479
- // Hide any current tooltip
480
- rgraph_window_mousedown(e);
481
-
482
- rgraph_canvas_mouseup_func(e);
483
- }
484
- }
485
- }
486
- }
487
- }
488
- obj.canvas.addEventListener('mousemove', rgraph_canvas_mousemove_func, false);
489
- RGraph.AddEventListener(obj.id, 'mousemove', rgraph_canvas_mousemove_func);
490
- }
491
- */
492
-
493
-
494
-
495
-
496
-
497
-
498
-
499
- /**
500
- * This (as the name suggests preloads any images it can find in the tooltip text
501
- *
502
- * @param object obj The chart object
503
- */
504
- RG.preLoadTooltipImages =
505
- RG.PreLoadTooltipImages = function (obj)
506
- {
507
- var tooltips = obj.Get('chart.tooltips');
508
-
509
- if (RG.hasTooltips(obj)) {
510
-
511
- if (obj.type == 'rscatter') {
512
- tooltips = [];
513
- for (var i=0; i<obj.data.length; ++i) {
514
- tooltips.push(obj.data[3]);
515
- }
516
- }
517
-
518
- for (var i=0; i<tooltips.length; ++i) {
519
- // Add the text to an offscreen DIV tag
520
- var div = document.createElement('DIV');
521
- div.style.position = 'absolute';
522
- div.style.opacity = 0;
523
- div.style.top = '-100px';
524
- div.style.left = '-100px';
525
- div.innerHTML = tooltips[i];
526
- document.body.appendChild(div);
527
-
528
- // Now get the IMG tags and create them
529
- var img_tags = div.getElementsByTagName('IMG');
530
-
531
- // Create the image in an off-screen image tag
532
- for (var j=0; j<img_tags.length; ++j) {
533
- if (img_tags && img_tags[i]) {
534
- var img = document.createElement('IMG');
535
- img.style.position = 'absolute';
536
- img.style.opacity = 0;
537
- img.style.top = '-100px';
538
- img.style.left = '-100px';
539
- img.src = img_tags[i].src
540
- document.body.appendChild(img);
541
-
542
- setTimeout(function () {document.body.removeChild(img);}, 250);
543
- }
544
- }
545
-
546
- // Now remove the div
547
- document.body.removeChild(div);
548
- }
549
- }
550
- };
551
-
552
-
553
-
554
-
555
- /**
556
- * This is the tooltips canvas onmousemove listener
557
- */
558
- RG.tooltips_mousemove =
559
- RG.Tooltips_mousemove = function (obj, e)
560
- {
561
- var shape = obj.getShape(e);
562
- var changeCursor_tooltips = false
563
-
564
- if ( shape
565
- && typeof(shape['index']) == 'number'
566
- && obj.Get('chart.tooltips')[shape['index']]
567
- ) {
568
-
569
- var text = RG.parseTooltipText(obj.Get('chart.tooltips'), shape['index']);
570
-
571
- if (text) {
572
-
573
- /**
574
- * Change the cursor
575
- */
576
- changeCursor_tooltips = true;
577
-
578
- if (obj.Get('chart.tooltips.event') == 'onmousemove') {
579
-
580
- // Show the tooltip if it's not the same as the one already visible
581
- if (
582
- !RG.Registry.Get('chart.tooltip')
583
- || RG.Registry.Get('chart.tooltip').__object__.uid != obj.uid
584
- || RG.Registry.Get('chart.tooltip').__index__ != shape['index']
585
- ) {
586
-
587
- RG.hideTooltip();
588
- RG.Clear(obj.canvas);
589
- RG.redraw();
590
- RG.tooltip(obj, text, e.pageX, e.pageY, shape['index']);
591
- obj.Highlight(shape);
592
- }
593
- }
594
- }
595
-
596
- /**
597
- * More highlighting
598
- */
599
- } else if (shape && typeof(shape['index']) == 'number') {
600
-
601
- var text = RG.parseTooltipText(obj.Get('chart.tooltips'), shape['index']);
602
-
603
- if (text) {
604
- changeCursor_tooltips = true
605
- }
606
- }
607
-
608
- return changeCursor_tooltips;
609
- };
610
-
611
-
612
-
613
-
614
- // End module pattern
615
- })(window, document);
2
+ RGraph=window.RGraph||{isRGraph:true};(function(win,doc,undefined)
3
+ {var RG=RGraph,ua=navigator.userAgent,ma=Math;RG.tooltips={};RG.tooltips.style={display:'inline-block',position:'absolute',padding:'6px',fontFamily:'Arial',fontSize:'10pt',fontWeight:'normal',textAlign:'center',left:0,top:0,backgroundColor:'rgb(255,255,239)',color:'black',visibility:'visible',zIndex:3,borderRadius:'5px',boxShadow:'rgba(96,96,96,0.5) 0 0 5px',opacity:0};RG.tooltip=RG.Tooltip=function(obj,text,x,y,idx,e)
4
+ {if(RG.trim(text).length===0){return;}
5
+ RG.fireCustomEvent(obj,'onbeforetooltip');if(typeof(obj.get('chart.tooltips.override'))=='function'){return obj.get('chart.tooltips.override')(obj,text,x,y,idx);}
6
+ var originalX=x;var originalY=y;text=RG.getTooltipTextFromDIV(text);var timers=RG.Registry.Get('chart.tooltip.timers');if(timers&&timers.length){for(i=0;i<timers.length;++i){clearTimeout(timers[i]);}}
7
+ RG.Registry.Set('chart.tooltip.timers',[]);if(obj.get('chart.contextmenu')){RG.hideContext();}
8
+ var tooltipObj=document.createElement('DIV');tooltipObj.className=obj.get('chart.tooltips.css.class');for(var i in RGraph.tooltips.style){if(typeof i==='string'){tooltipObj.style[i]=RGraph.tooltips.style[i];}}
9
+ tooltipObj.innerHTML=text;tooltipObj.__text__=text;tooltipObj.__canvas__=obj.canvas;tooltipObj.id='__rgraph_tooltip_'+obj.canvas.id+'_'+obj.uid+'_'+idx;tooltipObj.__event__=obj.Get('chart.tooltips.event')||'click';tooltipObj.__object__=obj;if(typeof idx==='number'){tooltipObj.__index__=idx;origIdx=idx;}
10
+ if(obj.type==='line'||obj.type==='radar'){for(var ds=0;ds<obj.data.length;++ds){if(idx>=obj.data[ds].length){idx-=obj.data[ds].length;}else{break;}}
11
+ tooltipObj.__dataset__=ds;tooltipObj.__index2__=idx;}
12
+ document.body.appendChild(tooltipObj);var width=tooltipObj.offsetWidth;var height=tooltipObj.offsetHeight;tooltipObj.style.width=width+'px';var mouseXY=RG.getMouseXY(e);var canvasXY=RG.getCanvasXY(obj.canvas);tooltipObj.style.left=e.pageX-(parseFloat(tooltipObj.style.paddingLeft)+(width/2))+'px';tooltipObj.style.top=e.pageY-height-10+'px';if(parseFloat(tooltipObj.style.left)<=5){tooltipObj.style.left='5px';}
13
+ if(parseFloat(tooltipObj.style.left)+parseFloat(tooltipObj.style.width)>window.innerWidth){tooltipObj.style.left=''
14
+ tooltipObj.style.right='5px'}
15
+ if(RG.isFixed(obj.canvas)){var scrollTop=window.scrollY||document.documentElement.scrollTop;tooltipObj.style.position='fixed';tooltipObj.style.top=e.pageY-scrollTop-height-10+'px';}
16
+ if(obj.get('chart.tooltips.effect')==='fade'){for(var i=1;i<=10;++i){(function(index)
17
+ {setTimeout(function()
18
+ {tooltipObj.style.opacity=index/10;},index*25);})(i);}}else{tooltipObj.style.opacity=1;}
19
+ tooltipObj.onmousedown=function(e){e.stopPropagation();}
20
+ tooltipObj.onmouseup=function(e){e.stopPropagation();}
21
+ tooltipObj.onclick=function(e){if(e.button==0){e.stopPropagation();}}
22
+ RG.Registry.Set('chart.tooltip',tooltipObj);RG.fireCustomEvent(obj,'ontooltip');};RG.getTooltipTextFromDIV=function(text)
23
+ {var result=/^id:(.*)/.exec(text);if(result&&result[1]&&document.getElementById(result[1])){text=document.getElementById(result[1]).innerHTML;}else if(result&&result[1]){text='';}
24
+ return text;};RG.getTooltipWidth=function(text,obj)
25
+ {var div=document.createElement('DIV');div.className=obj.Get('chart.tooltips.css.class');div.style.paddingLeft=RG.tooltips.padding;div.style.paddingRight=RG.tooltips.padding;div.style.fontFamily=RG.tooltips.font_face;div.style.fontSize=RG.tooltips.font_size;div.style.visibility='hidden';div.style.position='absolute';div.style.top='300px';div.style.left=0;div.style.display='inline';div.innerHTML=RG.getTooltipTextFromDIV(text);document.body.appendChild(div);return div.offsetWidth;};RG.hideTooltip=RG.HideTooltip=function()
26
+ {var tooltip=RG.Registry.Get('chart.tooltip');var uid=arguments[0]&&arguments[0].uid?arguments[0].uid:null;if(tooltip&&tooltip.parentNode&&(!uid||uid==tooltip.__canvas__.uid)){tooltip.parentNode.removeChild(tooltip);tooltip.style.display='none';tooltip.style.visibility='hidden';RG.Registry.Set('chart.tooltip',null);}};RG.preLoadTooltipImages=RG.PreLoadTooltipImages=function(obj)
27
+ {var tooltips=obj.Get('chart.tooltips');if(RG.hasTooltips(obj)){if(obj.type=='rscatter'){tooltips=[];for(var i=0;i<obj.data.length;++i){tooltips.push(obj.data[3]);}}
28
+ for(var i=0;i<tooltips.length;++i){var div=document.createElement('DIV');div.style.position='absolute';div.style.opacity=0;div.style.top='-100px';div.style.left='-100px';div.innerHTML=tooltips[i];document.body.appendChild(div);var img_tags=div.getElementsByTagName('IMG');for(var j=0;j<img_tags.length;++j){if(img_tags&&img_tags[i]){var img=document.createElement('IMG');img.style.position='absolute';img.style.opacity=0;img.style.top='-100px';img.style.left='-100px';img.src=img_tags[i].src
29
+ document.body.appendChild(img);setTimeout(function(){document.body.removeChild(img);},250);}}
30
+ document.body.removeChild(div);}}};RG.tooltips_mousemove=RG.Tooltips_mousemove=function(obj,e)
31
+ {var shape=obj.getShape(e);var changeCursor_tooltips=false
32
+ if(shape&&typeof(shape['index'])=='number'&&obj.Get('chart.tooltips')[shape['index']]){var text=RG.parseTooltipText(obj.Get('chart.tooltips'),shape['index']);if(text){changeCursor_tooltips=true;if(obj.Get('chart.tooltips.event')=='onmousemove'){if(!RG.Registry.Get('chart.tooltip')||RG.Registry.Get('chart.tooltip').__object__.uid!=obj.uid||RG.Registry.Get('chart.tooltip').__index__!=shape['index']){RG.hideTooltip();RG.Clear(obj.canvas);RG.redraw();RG.tooltip(obj,text,e.pageX,e.pageY,shape['index']);obj.Highlight(shape);}}}}else if(shape&&typeof(shape['index'])=='number'){var text=RG.parseTooltipText(obj.Get('chart.tooltips'),shape['index']);if(text){changeCursor_tooltips=true}}
33
+ return changeCursor_tooltips;};})(window,document);