rgraph-rails 1.0.4 → 1.0.5
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.
- checksums.yaml +8 -8
- data/.travis.yml +1 -0
- data/README.md +2 -2
- data/lib/rgraph-rails/version.rb +1 -1
- data/vendor/assets/images/bullet.png +0 -0
- data/vendor/assets/images/facebook-large.png +0 -0
- data/vendor/assets/images/google-plus-large.png +0 -0
- data/vendor/assets/images/logo.png +0 -0
- data/vendor/assets/images/rgraph.jpg +0 -0
- data/vendor/assets/javascripts/RGraph.bar.js +533 -242
- data/vendor/assets/javascripts/RGraph.bipolar.js +152 -169
- data/vendor/assets/javascripts/RGraph.common.annotate.js +2 -2
- data/vendor/assets/javascripts/RGraph.common.context.js +2 -2
- data/vendor/assets/javascripts/RGraph.common.core.js +688 -373
- data/vendor/assets/javascripts/RGraph.common.csv.js +2 -2
- data/vendor/assets/javascripts/RGraph.common.deprecated.js +2 -2
- data/vendor/assets/javascripts/RGraph.common.dynamic.js +188 -193
- data/vendor/assets/javascripts/RGraph.common.effects.js +62 -38
- data/vendor/assets/javascripts/RGraph.common.key.js +35 -15
- data/vendor/assets/javascripts/RGraph.common.resizing.js +38 -21
- data/vendor/assets/javascripts/RGraph.common.sheets.js +2 -2
- data/vendor/assets/javascripts/RGraph.common.tooltips.js +48 -40
- data/vendor/assets/javascripts/RGraph.common.zoom.js +2 -2
- data/vendor/assets/javascripts/RGraph.drawing.background.js +33 -49
- data/vendor/assets/javascripts/RGraph.drawing.circle.js +27 -30
- data/vendor/assets/javascripts/RGraph.drawing.image.js +23 -26
- data/vendor/assets/javascripts/RGraph.drawing.marker1.js +47 -40
- data/vendor/assets/javascripts/RGraph.drawing.marker2.js +38 -42
- data/vendor/assets/javascripts/RGraph.drawing.marker3.js +24 -28
- data/vendor/assets/javascripts/RGraph.drawing.poly.js +25 -39
- data/vendor/assets/javascripts/RGraph.drawing.rect.js +27 -32
- data/vendor/assets/javascripts/RGraph.drawing.text.js +53 -58
- data/vendor/assets/javascripts/RGraph.drawing.xaxis.js +24 -29
- data/vendor/assets/javascripts/RGraph.drawing.yaxis.js +45 -51
- data/vendor/assets/javascripts/RGraph.fuel.js +11 -9
- data/vendor/assets/javascripts/RGraph.funnel.js +40 -43
- data/vendor/assets/javascripts/RGraph.gantt.js +34 -34
- data/vendor/assets/javascripts/RGraph.gauge.js +64 -55
- data/vendor/assets/javascripts/RGraph.hbar.js +194 -137
- data/vendor/assets/javascripts/RGraph.hprogress.js +261 -167
- data/vendor/assets/javascripts/RGraph.line.js +520 -512
- data/vendor/assets/javascripts/RGraph.meter.js +11 -10
- data/vendor/assets/javascripts/RGraph.modaldialog.js +11 -2
- data/vendor/assets/javascripts/RGraph.odo.js +11 -9
- data/vendor/assets/javascripts/RGraph.pie.js +385 -100
- data/vendor/assets/javascripts/RGraph.radar.js +36 -29
- data/vendor/assets/javascripts/RGraph.rose.js +58 -41
- data/vendor/assets/javascripts/RGraph.rscatter.js +40 -36
- data/vendor/assets/javascripts/RGraph.scatter.js +441 -499
- data/vendor/assets/javascripts/RGraph.semicircularprogress.js +1015 -0
- data/vendor/assets/javascripts/RGraph.thermometer.js +37 -37
- data/vendor/assets/javascripts/RGraph.vprogress.js +285 -157
- data/vendor/assets/javascripts/RGraph.waterfall.js +62 -62
- data/vendor/assets/stylesheets/website.css +30 -16
- metadata +3 -2
@@ -1,4 +1,4 @@
|
|
1
|
-
// version: 2016-
|
1
|
+
// version: 2016-06-04
|
2
2
|
/**
|
3
3
|
* o--------------------------------------------------------------------------------o
|
4
4
|
* | This file is part of the RGraph package - you can learn more at: |
|
@@ -7,7 +7,7 @@
|
|
7
7
|
* | |
|
8
8
|
* | RGraph is dual licensed under the Open Source GPL (General Public License) |
|
9
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
|
10
|
+
* | the terms of the GPL. The commercial license starts at just 99 GBP and |
|
11
11
|
* | you can read about it here: |
|
12
12
|
* | |
|
13
13
|
* | http://www.rgraph.net/license |
|
@@ -1,4 +1,4 @@
|
|
1
|
-
// version: 2016-
|
1
|
+
// version: 2016-06-04
|
2
2
|
/**
|
3
3
|
* o--------------------------------------------------------------------------------o
|
4
4
|
* | This file is part of the RGraph package - you can learn more at: |
|
@@ -7,7 +7,7 @@
|
|
7
7
|
* | |
|
8
8
|
* | RGraph is dual licensed under the Open Source GPL (General Public License) |
|
9
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
|
10
|
+
* | the terms of the GPL. The commercial license starts at just 99 GBP and |
|
11
11
|
* | you can read about it here: |
|
12
12
|
* | |
|
13
13
|
* | http://www.rgraph.net/license |
|
@@ -120,8 +120,10 @@
|
|
120
120
|
|
121
121
|
'chart.text.color': 'black', // Gradients aren't supported for this color
|
122
122
|
'chart.text.size': 12,
|
123
|
-
'chart.text.font': 'Arial',
|
124
|
-
|
123
|
+
'chart.text.font': 'Segoe UI, Arial, Verdana, sans-serif',
|
124
|
+
'chart.text.accessible': true,
|
125
|
+
'chart.text.accessible.overflow': 'visible',
|
126
|
+
'chart.text.accessible.pointerevents': false,
|
125
127
|
'chart.events.click': null,
|
126
128
|
'chart.events.mousemove': null,
|
127
129
|
|
@@ -163,6 +165,7 @@
|
|
163
165
|
'chart.title.yaxis.x': null,
|
164
166
|
'chart.title.yaxis.y': null,
|
165
167
|
'chart.title.yaxis.pos': null,
|
168
|
+
'chart.clearto': 'rgba(0,0,0,0)'
|
166
169
|
}
|
167
170
|
|
168
171
|
/**
|
@@ -252,10 +255,9 @@
|
|
252
255
|
|
253
256
|
|
254
257
|
// Convert uppercase letters to dot+lower case letter
|
255
|
-
name
|
256
|
-
|
257
|
-
|
258
|
-
});
|
258
|
+
while(name.match(/([A-Z])/)) {
|
259
|
+
name = name.replace(/([A-Z])/, '.' + RegExp.$1.toLowerCase());
|
260
|
+
}
|
259
261
|
|
260
262
|
|
261
263
|
prop[name] = value;
|
@@ -437,52 +439,29 @@
|
|
437
439
|
var height = tooltip.offsetHeight;
|
438
440
|
var tooltipX = RG.getCanvasXY(obj.canvas)[0] + ((obj.canvas.width - this.gutterLeft - this.gutterRight) / 2) + this.gutterLeft;
|
439
441
|
var tooltipY = RG.getCanvasXY(obj.canvas)[1] + ((obj.canvas.height - this.gutterTop - this.gutterBottom) / 2) + this.gutterTop;
|
442
|
+
var mouseXY = RG.getMouseXY(window.event);
|
440
443
|
|
441
444
|
// Set the top position
|
442
445
|
tooltip.style.left = 0;
|
443
|
-
tooltip.style.top =
|
444
|
-
|
446
|
+
tooltip.style.top = window.event.pageY - height - 5 + 'px';
|
447
|
+
|
445
448
|
// By default any overflow is hidden
|
446
449
|
tooltip.style.overflow = '';
|
447
|
-
|
448
|
-
// The arrow
|
449
|
-
var img = new Image();
|
450
|
-
img.src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAFCAYAAACjKgd3AAAARUlEQVQYV2NkQAN79+797+RkhC4M5+/bd47B2dmZEVkBCgcmgcsgbAaA9GA1BCSBbhAuA/AagmwQPgMIGgIzCD0M0AMMAEFVIAa6UQgcAAAAAElFTkSuQmCC';
|
451
|
-
img.style.position = 'absolute';
|
452
|
-
img.id = '__rgraph_tooltip_pointer__';
|
453
|
-
img.style.top = (tooltip.offsetHeight - 2) + 'px';
|
454
|
-
tooltip.appendChild(img);
|
455
450
|
|
456
451
|
// Reposition the tooltip if at the edges:
|
457
452
|
|
458
453
|
// LEFT edge
|
459
|
-
if (
|
460
|
-
tooltip.style.left =
|
461
|
-
|
462
|
-
|
463
|
-
// RIGHT EDGE
|
464
|
-
} else if ( (tooltipX + (width / 2)) > doc.body.offsetWidth) {
|
465
|
-
tooltip.style.left = (tooltipX - (width * 0.9)) + 'px';
|
466
|
-
img.style.left = ((width * 0.9) - 8.5) + 'px';
|
467
|
-
|
468
|
-
|
469
|
-
// CENTERED
|
470
|
-
} else {
|
471
|
-
tooltip.style.left = (tooltipX - (width * 0.5)) + 'px';
|
472
|
-
img.style.left = ((width * 0.5) - 8.5) + 'px';
|
473
|
-
}
|
474
|
-
//tooltip.style.left = (canvasXY[0] + this.centerx - (width * 0.1)) + 'px';
|
475
|
-
//img.style.left = ((width * 0.1) - 8.5) + 'px';
|
476
|
-
|
454
|
+
if (canvasXY[0] + mouseXY[0] - (width / 2) < 0) {
|
455
|
+
tooltip.style.left = canvasXY[0] + mouseXY[0] - (width * 0.1) + 'px';
|
456
|
+
|
477
457
|
// RIGHT edge
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
458
|
+
} else if (canvasXY[0] + mouseXY[0] + (width / 2) > doc.body.offsetWidth) {
|
459
|
+
tooltip.style.left = canvasXY[0] + mouseXY[0] - (width * 0.9) + 'px';
|
460
|
+
|
482
461
|
// Default positioning - CENTERED
|
483
|
-
|
484
|
-
|
485
|
-
|
462
|
+
} else {
|
463
|
+
tooltip.style.left = canvasXY[0] + mouseXY[0] - (width / 2) + 'px';
|
464
|
+
}
|
486
465
|
};
|
487
466
|
|
488
467
|
|
@@ -497,12 +476,17 @@
|
|
497
476
|
this.Highlight = function (shape)
|
498
477
|
{
|
499
478
|
if (prop['chart.tooltips.highlight']) {
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
'
|
479
|
+
if (typeof prop['chart.highlight.style'] === 'function') {
|
480
|
+
(prop['chart.highlight.style'])(shape);
|
481
|
+
} else {
|
482
|
+
pa2(co, [
|
483
|
+
'b',
|
484
|
+
'r', prop['chart.gutter.left'], prop['chart.gutter.top'], ca.width - prop['chart.gutter.left'] - prop['chart.gutter.right'],ca.height - prop['chart.gutter.top'] - prop['chart.gutter.bottom'],
|
485
|
+
'f',prop['chart.highlight.fill'],
|
486
|
+
's',prop['chart.highlight.stroke']
|
487
|
+
]);
|
488
|
+
|
489
|
+
}
|
506
490
|
}
|
507
491
|
};
|
508
492
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
// version: 2016-
|
1
|
+
// version: 2016-06-04
|
2
2
|
/**
|
3
3
|
* o--------------------------------------------------------------------------------o
|
4
4
|
* | This file is part of the RGraph package - you can learn more at: |
|
@@ -7,7 +7,7 @@
|
|
7
7
|
* | |
|
8
8
|
* | RGraph is dual licensed under the Open Source GPL (General Public License) |
|
9
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
|
10
|
+
* | the terms of the GPL. The commercial license starts at just 99 GBP and |
|
11
11
|
* | you can read about it here: |
|
12
12
|
* | |
|
13
13
|
* | http://www.rgraph.net/license |
|
@@ -123,7 +123,8 @@
|
|
123
123
|
'chart.tooltips': null,
|
124
124
|
'chart.tooltips.highlight': true,
|
125
125
|
'chart.tooltips.event': 'onclick',
|
126
|
-
'chart.linewidth': 2
|
126
|
+
'chart.linewidth': 2,
|
127
|
+
'chart.clearto': 'rgba(0,0,0,0)'
|
127
128
|
}
|
128
129
|
|
129
130
|
/**
|
@@ -165,7 +166,6 @@
|
|
165
166
|
ca = this.canvas,
|
166
167
|
co = ca.getContext('2d'),
|
167
168
|
prop = this.properties,
|
168
|
-
pa = RG.Path,
|
169
169
|
pa2 = RG.path2,
|
170
170
|
win = window,
|
171
171
|
doc = document,
|
@@ -218,10 +218,9 @@
|
|
218
218
|
|
219
219
|
|
220
220
|
// Convert uppercase letters to dot+lower case letter
|
221
|
-
name
|
222
|
-
|
223
|
-
|
224
|
-
});
|
221
|
+
while(name.match(/([A-Z])/)) {
|
222
|
+
name = name.replace(/([A-Z])/, '.' + RegExp.$1.toLowerCase());
|
223
|
+
}
|
225
224
|
|
226
225
|
|
227
226
|
|
@@ -286,13 +285,13 @@
|
|
286
285
|
this.colorsParsed = true;
|
287
286
|
}
|
288
287
|
|
289
|
-
|
288
|
+
pa2(co, ['b', 'lw',prop['chart.linewidth']]);
|
290
289
|
|
291
290
|
if (prop['chart.shadow']) {
|
292
291
|
RG.SetShadow(this, prop['chart.shadow.color'], prop['chart.shadow.offsetx'], prop['chart.shadow.offsety'], prop['chart.shadow.blur']);
|
293
292
|
}
|
294
293
|
|
295
|
-
|
294
|
+
pa2(co, ['a',this.coords[0][0], this.coords[0][1], this.radius, 0, RGraph.TWOPI, false,'f',prop['chart.fillstyle'],'s', prop['chart.strokestyle']]);
|
296
295
|
|
297
296
|
// Must turn the shadow off before the fill is done
|
298
297
|
RG.NoShadow(this);
|
@@ -388,7 +387,7 @@
|
|
388
387
|
* @param obj object The chart object
|
389
388
|
* @param int x The X coordinate specified for the tooltip
|
390
389
|
* @param int y The Y coordinate specified for the tooltip
|
391
|
-
* @param
|
390
|
+
* @param object tooltip The tooltips DIV element
|
392
391
|
*/
|
393
392
|
this.positionTooltip = function (obj, x, y, tooltip, idx)
|
394
393
|
{
|
@@ -396,38 +395,32 @@
|
|
396
395
|
var width = tooltip.offsetWidth;
|
397
396
|
var height = tooltip.offsetHeight;
|
398
397
|
var radius = this.radius;
|
398
|
+
var mouseXY = RG.getMouseXY(window.event);
|
399
399
|
|
400
400
|
// Set the top position
|
401
401
|
tooltip.style.left = 0;
|
402
|
-
tooltip.style.top = canvasXY[1] +
|
403
|
-
|
402
|
+
tooltip.style.top = canvasXY[1] + this.coords[0][1] - (height / 2) - this.radius + 'px';
|
403
|
+
|
404
|
+
// Set the top position
|
405
|
+
tooltip.style.left = 0;
|
406
|
+
tooltip.style.top = window.event.pageY - height - 5 + 'px';
|
407
|
+
|
404
408
|
// By default any overflow is hidden
|
405
409
|
tooltip.style.overflow = '';
|
406
|
-
|
407
|
-
// The arrow
|
408
|
-
var img = new Image();
|
409
|
-
img.src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAFCAYAAACjKgd3AAAARUlEQVQYV2NkQAN79+797+RkhC4M5+/bd47B2dmZEVkBCgcmgcsgbAaA9GA1BCSBbhAuA/AagmwQPgMIGgIzCD0M0AMMAEFVIAa6UQgcAAAAAElFTkSuQmCC';
|
410
|
-
img.style.position = 'absolute';
|
411
|
-
img.id = '__rgraph_tooltip_pointer__';
|
412
|
-
img.style.top = (tooltip.offsetHeight - 2) + 'px';
|
413
|
-
tooltip.appendChild(img);
|
414
410
|
|
415
411
|
// Reposition the tooltip if at the edges:
|
416
412
|
|
417
413
|
// LEFT edge
|
418
|
-
if (
|
419
|
-
tooltip.style.left =
|
420
|
-
img.style.left = ((width * 0.1) - 8.5) + 'px';
|
414
|
+
if (canvasXY[0] + mouseXY[0] - (width / 2) < 0) {
|
415
|
+
tooltip.style.left = canvasXY[0] + mouseXY[0] - (width * 0.1) + 'px';
|
421
416
|
|
422
417
|
// RIGHT edge
|
423
|
-
} else if (
|
424
|
-
tooltip.style.left = canvasXY[0] +
|
425
|
-
img.style.left = ((width * 0.9) - 8.5) + 'px';
|
418
|
+
} else if (canvasXY[0] + mouseXY[0] + (width / 2) > doc.body.offsetWidth) {
|
419
|
+
tooltip.style.left = canvasXY[0] + mouseXY[0] - (width * 0.9) + 'px';
|
426
420
|
|
427
421
|
// Default positioning - CENTERED
|
428
422
|
} else {
|
429
|
-
tooltip.style.left =
|
430
|
-
img.style.left = ((width * 0.5) - 8.5) + 'px';
|
423
|
+
tooltip.style.left = canvasXY[0] + mouseXY[0] - (width / 2) + 'px';
|
431
424
|
}
|
432
425
|
};
|
433
426
|
|
@@ -443,7 +436,11 @@
|
|
443
436
|
this.Highlight = function (shape)
|
444
437
|
{
|
445
438
|
if (prop['chart.tooltips.highlight']) {
|
446
|
-
|
439
|
+
if (typeof prop['chart.highlight.style'] === 'function') {
|
440
|
+
(prop['chart.highlight.style'])(shape);
|
441
|
+
} else {
|
442
|
+
pa2(co, ['b','a',this.centerx, this.centery, this.radius + 0.5, 0, RGraph.TWOPI, false,'f',prop['chart.highlight.fill'],'s',prop['chart.highlight.stroke']]);
|
443
|
+
}
|
447
444
|
}
|
448
445
|
};
|
449
446
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
// version: 2016-
|
1
|
+
// version: 2016-06-04
|
2
2
|
/**
|
3
3
|
* o--------------------------------------------------------------------------------o
|
4
4
|
* | This file is part of the RGraph package - you can learn more at: |
|
@@ -7,7 +7,7 @@
|
|
7
7
|
* | |
|
8
8
|
* | RGraph is dual licensed under the Open Source GPL (General Public License) |
|
9
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
|
10
|
+
* | the terms of the GPL. The commercial license starts at just 99 GBP and |
|
11
11
|
* | you can read about it here: |
|
12
12
|
* | |
|
13
13
|
* | http://www.rgraph.net/license |
|
@@ -138,7 +138,8 @@
|
|
138
138
|
'chart.border.color': 'black',
|
139
139
|
'chart.border.linewidth': 1,
|
140
140
|
'chart.border.radius': 0,
|
141
|
-
'chart.background.color': 'rgba(0,0,0,0)'
|
141
|
+
'chart.background.color': 'rgba(0,0,0,0)',
|
142
|
+
'chart.clearto': 'rgba(0,0,0,0)'
|
142
143
|
}
|
143
144
|
|
144
145
|
/**
|
@@ -179,7 +180,6 @@
|
|
179
180
|
ca = this.canvas,
|
180
181
|
co = ca.getContext('2d'),
|
181
182
|
prop = this.properties,
|
182
|
-
pa = RG.Path,
|
183
183
|
pa2 = RG.path2,
|
184
184
|
win = window,
|
185
185
|
doc = document,
|
@@ -232,10 +232,9 @@
|
|
232
232
|
|
233
233
|
|
234
234
|
// Convert uppercase letters to dot+lower case letter
|
235
|
-
name
|
236
|
-
|
237
|
-
|
238
|
-
});
|
235
|
+
while(name.match(/([A-Z])/)) {
|
236
|
+
name = name.replace(/([A-Z])/, '.' + RegExp.$1.toLowerCase());
|
237
|
+
}
|
239
238
|
|
240
239
|
|
241
240
|
|
@@ -588,38 +587,32 @@
|
|
588
587
|
var canvasXY = RG.getCanvasXY(obj.canvas);
|
589
588
|
var width = tooltip.offsetWidth;
|
590
589
|
var height = tooltip.offsetHeight;
|
590
|
+
var mouseXY = RG.getMouseXY(window.event);
|
591
|
+
|
592
|
+
// Set the top position
|
593
|
+
tooltip.style.left = 0;
|
594
|
+
tooltip.style.top = canvasXY[1] + this.coords[0][1] - (height / 2) - this.radius + 'px';
|
591
595
|
|
592
596
|
// Set the top position
|
593
597
|
tooltip.style.left = 0;
|
594
|
-
tooltip.style.top =
|
598
|
+
tooltip.style.top = window.event.pageY - height - 5 + 'px';
|
595
599
|
|
596
600
|
// By default any overflow is hidden
|
597
601
|
tooltip.style.overflow = '';
|
598
|
-
|
599
|
-
// The arrow
|
600
|
-
var img = new Image();
|
601
|
-
img.src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAFCAYAAACjKgd3AAAARUlEQVQYV2NkQAN79+797+RkhC4M5+/bd47B2dmZEVkBCgcmgcsgbAaA9GA1BCSBbhAuA/AagmwQPgMIGgIzCD0M0AMMAEFVIAa6UQgcAAAAAElFTkSuQmCC';
|
602
|
-
img.style.position = 'absolute';
|
603
|
-
img.id = '__rgraph_tooltip_pointer__';
|
604
|
-
img.style.top = (tooltip.offsetHeight - 2) + 'px';
|
605
|
-
tooltip.appendChild(img);
|
606
602
|
|
607
603
|
// Reposition the tooltip if at the edges:
|
608
604
|
|
609
605
|
// LEFT edge
|
610
|
-
if (
|
611
|
-
tooltip.style.left =
|
612
|
-
img.style.left = ((width * 0.1) - 8.5) + 'px';
|
606
|
+
if (canvasXY[0] + mouseXY[0] - (width / 2) < 0) {
|
607
|
+
tooltip.style.left = canvasXY[0] + mouseXY[0] - (width * 0.1) + 'px';
|
613
608
|
|
614
609
|
// RIGHT edge
|
615
|
-
} else if (
|
616
|
-
tooltip.style.left =
|
617
|
-
img.style.left = ((width * 0.9) - 8.5) + 'px';
|
610
|
+
} else if (canvasXY[0] + mouseXY[0] + (width / 2) > doc.body.offsetWidth) {
|
611
|
+
tooltip.style.left = canvasXY[0] + mouseXY[0] - (width * 0.9) + 'px';
|
618
612
|
|
619
613
|
// Default positioning - CENTERED
|
620
614
|
} else {
|
621
|
-
tooltip.style.left =
|
622
|
-
img.style.left = ((width * 0.5) - 8.5) + 'px';
|
615
|
+
tooltip.style.left = canvasXY[0] + mouseXY[0] - (width / 2) + 'px';
|
623
616
|
}
|
624
617
|
};
|
625
618
|
|
@@ -635,7 +628,11 @@
|
|
635
628
|
this.Highlight = function (shape)
|
636
629
|
{
|
637
630
|
if (prop['chart.tooltips.highlight']) {
|
638
|
-
|
631
|
+
if (typeof prop['chart.highlight.style'] === 'function') {
|
632
|
+
(prop['chart.highlight.style'])(shape);
|
633
|
+
} else {
|
634
|
+
pa2(co, ['b','r',this.coords[0][0],this.coords[0][1],this.coords[0][2],this.coords[0][3], 'f',prop['chart.highlight.fill'], 's', prop['chart.highlight.stroke']]);
|
635
|
+
}
|
639
636
|
}
|
640
637
|
};
|
641
638
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
// version: 2016-
|
1
|
+
// version: 2016-06-04
|
2
2
|
/**
|
3
3
|
* o--------------------------------------------------------------------------------o
|
4
4
|
* | This file is part of the RGraph package - you can learn more at: |
|
@@ -7,7 +7,7 @@
|
|
7
7
|
* | |
|
8
8
|
* | RGraph is dual licensed under the Open Source GPL (General Public License) |
|
9
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
|
10
|
+
* | the terms of the GPL. The commercial license starts at just 99 GBP and |
|
11
11
|
* | you can read about it here: |
|
12
12
|
* | |
|
13
13
|
* | http://www.rgraph.net/license |
|
@@ -119,7 +119,10 @@
|
|
119
119
|
'chart.linewidth': 2,
|
120
120
|
'chart.text.color': 'black',
|
121
121
|
'chart.text.size': 12,
|
122
|
-
'chart.text.font': 'Arial',
|
122
|
+
'chart.text.font': 'Segoe UI, Arial, Verdana, sans-serif',
|
123
|
+
'chart.text.accessible': true,
|
124
|
+
'chart.text.accessible.overflow': 'visible',
|
125
|
+
'chart.text.accessible.pointerevents': false,
|
123
126
|
'chart.events.click': null,
|
124
127
|
'chart.events.mousemove': null,
|
125
128
|
'chart.shadow': true,
|
@@ -132,7 +135,8 @@
|
|
132
135
|
'chart.tooltips': null,
|
133
136
|
'chart.tooltips.highlight': true,
|
134
137
|
'chart.tooltips.event': 'onclick',
|
135
|
-
'chart.align': 'center'
|
138
|
+
'chart.align': 'center',
|
139
|
+
'chart.clearto': 'rgba(0,0,0,0)'
|
136
140
|
}
|
137
141
|
|
138
142
|
/**
|
@@ -177,7 +181,6 @@
|
|
177
181
|
ca = this.canvas,
|
178
182
|
co = ca.getContext('2d'),
|
179
183
|
prop = this.properties,
|
180
|
-
pa = RG.Path,
|
181
184
|
pa2 = RG.path2,
|
182
185
|
win = window,
|
183
186
|
doc = document,
|
@@ -230,10 +233,9 @@
|
|
230
233
|
|
231
234
|
|
232
235
|
// Convert uppercase letters to dot+lower case letter
|
233
|
-
name
|
234
|
-
|
235
|
-
|
236
|
-
});
|
236
|
+
while(name.match(/([A-Z])/)) {
|
237
|
+
name = name.replace(/([A-Z])/, '.' + RegExp.$1.toLowerCase());
|
238
|
+
}
|
237
239
|
|
238
240
|
|
239
241
|
|
@@ -328,14 +330,14 @@
|
|
328
330
|
/**
|
329
331
|
* DRAW THE MARKER HERE
|
330
332
|
*/
|
331
|
-
|
333
|
+
pa2(co, ['b','lw',prop['chart.linewidth']]);
|
332
334
|
|
333
335
|
if (prop['chart.shadow']) {
|
334
336
|
RG.SetShadow(this, prop['chart.shadow.color'], prop['chart.shadow.offsetx'], prop['chart.shadow.offsety'], prop['chart.shadow.blur']);
|
335
337
|
}
|
336
338
|
this.DrawMarker();
|
337
339
|
|
338
|
-
|
340
|
+
pa2(co, ['c','s',prop['chart.strokestyle'],'f',prop['chart.fillstyle']]);
|
339
341
|
|
340
342
|
|
341
343
|
|
@@ -463,6 +465,7 @@
|
|
463
465
|
this.positionTooltip = function (obj, x, y, tooltip, idx)
|
464
466
|
{
|
465
467
|
var canvasXY = RG.getCanvasXY(obj.canvas);
|
468
|
+
var mouseXY = RG.getMouseXY(window.event);
|
466
469
|
var width = tooltip.offsetWidth;
|
467
470
|
var height = tooltip.offsetHeight;
|
468
471
|
|
@@ -470,33 +473,26 @@
|
|
470
473
|
tooltip.style.left = 0;
|
471
474
|
tooltip.style.top = canvasXY[1] + this.coords[0][1] - (height / 2) - this.radius + 'px';
|
472
475
|
|
476
|
+
// Set the top position
|
477
|
+
tooltip.style.left = 0;
|
478
|
+
tooltip.style.top = window.event.pageY - height - 5 + 'px';
|
479
|
+
|
473
480
|
// By default any overflow is hidden
|
474
481
|
tooltip.style.overflow = '';
|
475
|
-
|
476
|
-
// The arrow
|
477
|
-
var img = new Image();
|
478
|
-
img.src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAFCAYAAACjKgd3AAAARUlEQVQYV2NkQAN79+797+RkhC4M5+/bd47B2dmZEVkBCgcmgcsgbAaA9GA1BCSBbhAuA/AagmwQPgMIGgIzCD0M0AMMAEFVIAa6UQgcAAAAAElFTkSuQmCC';
|
479
|
-
img.style.position = 'absolute';
|
480
|
-
img.id = '__rgraph_tooltip_pointer__';
|
481
|
-
img.style.top = (tooltip.offsetHeight - 2) + 'px';
|
482
|
-
tooltip.appendChild(img);
|
483
482
|
|
484
483
|
// Reposition the tooltip if at the edges:
|
485
484
|
|
486
485
|
// LEFT edge
|
487
|
-
if (
|
488
|
-
tooltip.style.left = canvasXY[0] +
|
489
|
-
img.style.left = ((width * 0.1) - 8.5) + 'px';
|
486
|
+
if (canvasXY[0] + mouseXY[0] - (width / 2) < 0) {
|
487
|
+
tooltip.style.left = canvasXY[0] + mouseXY[0] - (width * 0.1) + 'px';
|
490
488
|
|
491
489
|
// RIGHT edge
|
492
|
-
} else if (
|
493
|
-
tooltip.style.left = canvasXY[0] +
|
494
|
-
img.style.left = ((width * 0.9) - 8.5) + 'px';
|
490
|
+
} else if (canvasXY[0] + mouseXY[0] + (width / 2) > doc.body.offsetWidth) {
|
491
|
+
tooltip.style.left = canvasXY[0] + mouseXY[0] - (width * 0.9) + 'px';
|
495
492
|
|
496
493
|
// Default positioning - CENTERED
|
497
494
|
} else {
|
498
|
-
tooltip.style.left =
|
499
|
-
img.style.left = ((width * 0.5) - 8.5) + 'px';
|
495
|
+
tooltip.style.left = canvasXY[0] + mouseXY[0] - (width / 2) + 'px';
|
500
496
|
}
|
501
497
|
};
|
502
498
|
|
@@ -512,7 +508,18 @@
|
|
512
508
|
this.Highlight = function (shape)
|
513
509
|
{
|
514
510
|
if (prop['chart.tooltips.highlight']) {
|
515
|
-
|
511
|
+
if (typeof prop['chart.highlight.style'] === 'function') {
|
512
|
+
(prop['chart.highlight.style'])(shape);
|
513
|
+
} else {
|
514
|
+
|
515
|
+
co.beginPath();
|
516
|
+
co.strokeStyle = prop['chart.highlight.stroke'];
|
517
|
+
co.fillStyle = prop['chart.highlight.fill'];
|
518
|
+
this.drawMarker();
|
519
|
+
co.closePath();
|
520
|
+
co.stroke();
|
521
|
+
co.fill();
|
522
|
+
}
|
516
523
|
}
|
517
524
|
};
|
518
525
|
|
@@ -533,32 +540,32 @@
|
|
533
540
|
var x = this.markerCenterx;
|
534
541
|
var y = this.markerCentery;
|
535
542
|
|
536
|
-
|
543
|
+
pa2(co, ['a',x,y,r,RG.HALFPI,RG.TWOPI,false]);
|
537
544
|
|
538
545
|
// special case for MSIE 7/8
|
539
546
|
if (RG.ISOLD) {
|
540
|
-
|
547
|
+
pa2(co,['m',x + r + r,y+r+r,'qc',x + r,y + r,x + r + 1,y,'m',x + r + r,y+r+r]);
|
541
548
|
} else {
|
542
|
-
|
549
|
+
pa2(co, ['qc',x + r,y + r,x + r + r,y + r + r]);
|
543
550
|
}
|
544
551
|
|
545
|
-
|
552
|
+
pa2(co, ['qc',x + r,y + r,x,y + r + (RG.ISOLD ? 1 : 0)]);
|
546
553
|
|
547
554
|
} else if (prop['chart.align'] == 'right') {
|
548
555
|
|
549
556
|
var x = this.markerCenterx;
|
550
557
|
var y = this.markerCentery;
|
551
558
|
|
552
|
-
|
559
|
+
pa2(co, ['a',x,y,r,RG.HALFPI,RG.PI,true]);
|
553
560
|
|
554
561
|
// special case for MSIE 7/8
|
555
562
|
if (RG.ISOLD) {
|
556
|
-
|
563
|
+
pa2(co, ['m',x - r - r,y+r+r,'qc',x - r,y + r,x - r - 1,y,'m',x - r - r,y+r+r]);
|
557
564
|
} else {
|
558
|
-
|
565
|
+
pa2(co, ['qc',x - r,y + r,x - r - r,y + r + r]);
|
559
566
|
}
|
560
567
|
|
561
|
-
|
568
|
+
pa2(co, ['qc',x - r, y + r, x, y + r + (RG.ISOLD ? 1 : 0)]);
|
562
569
|
|
563
570
|
// Default is center
|
564
571
|
} else {
|
@@ -566,17 +573,17 @@
|
|
566
573
|
var x = this.markerCenterx;
|
567
574
|
var y = this.markerCentery;
|
568
575
|
|
569
|
-
|
576
|
+
pa2(co, ['a',x, y, r, RG.HALFPI / 2, RG.PI - (RG.HALFPI / 2), true]);
|
570
577
|
//co.arc(x, y, r, HALFPI / 2, PI - (HALFPI / 2), true);
|
571
578
|
|
572
579
|
// special case for MSIE 7/8
|
573
580
|
if (RG.ISOLD) {
|
574
|
-
|
581
|
+
pa2(co, ['m',x,y+r+r-2,'qc',x,y + r + (r / 4),x - (Math.cos(RG.HALFPI / 2) * r),y + (Math.sin(RG.HALFPI / 2) * r),'m',x, y+r+r-2]);
|
575
582
|
} else {
|
576
|
-
|
583
|
+
pa2(co, ['qc',x,y + r + (r / 4),x,y + r + r - 2]);
|
577
584
|
}
|
578
585
|
|
579
|
-
|
586
|
+
pa2(co, ['qc',x,y + r + (r / 4),x + (Math.cos(RG.HALFPI / 2) * r),y + (Math.sin(RG.HALFPI / 2) * r)]);
|
580
587
|
}
|
581
588
|
|
582
589
|
this.coords[0] = [x, y, r];
|