0
|
1 /* global Chart */
|
|
2
|
|
3 'use strict';
|
|
4
|
|
5 window.chartColors = {
|
|
6 red: 'rgb(255, 99, 132)',
|
|
7 orange: 'rgb(255, 159, 64)',
|
|
8 yellow: 'rgb(255, 205, 86)',
|
|
9 green: 'rgb(75, 192, 192)',
|
|
10 blue: 'rgb(54, 162, 235)',
|
|
11 purple: 'rgb(153, 102, 255)',
|
|
12 grey: 'rgb(201, 203, 207)'
|
|
13 };
|
|
14
|
|
15 window.randomScalingFactor = function() {
|
|
16 return (Math.random() > 0.5 ? 1.0 : -1.0) * Math.round(Math.random() * 100);
|
|
17 };
|
|
18
|
|
19 (function(global) {
|
|
20 var Months = [
|
|
21 'January',
|
|
22 'February',
|
|
23 'March',
|
|
24 'April',
|
|
25 'May',
|
|
26 'June',
|
|
27 'July',
|
|
28 'August',
|
|
29 'September',
|
|
30 'October',
|
|
31 'November',
|
|
32 'December'
|
|
33 ];
|
|
34
|
|
35 var Samples = global.Samples || (global.Samples = {});
|
|
36 Samples.utils = {
|
|
37 // Adapted from http://indiegamr.com/generate-repeatable-random-numbers-in-js/
|
|
38 srand: function(seed) {
|
|
39 this._seed = seed;
|
|
40 },
|
|
41
|
|
42 rand: function(min, max) {
|
|
43 var seed = this._seed;
|
|
44 min = min === undefined? 0 : min;
|
|
45 max = max === undefined? 1 : max;
|
|
46 this._seed = (seed * 9301 + 49297) % 233280;
|
|
47 return min + (this._seed / 233280) * (max - min);
|
|
48 },
|
|
49
|
|
50 numbers: function(config) {
|
|
51 var cfg = config || {};
|
|
52 var min = cfg.min || 0;
|
|
53 var max = cfg.max || 1;
|
|
54 var from = cfg.from || [];
|
|
55 var count = cfg.count || 8;
|
|
56 var decimals = cfg.decimals || 8;
|
|
57 var continuity = cfg.continuity || 1;
|
|
58 var dfactor = Math.pow(10, decimals) || 0;
|
|
59 var data = [];
|
|
60 var i, value;
|
|
61
|
|
62 for (i=0; i<count; ++i) {
|
|
63 value = (from[i] || 0) + this.rand(min, max);
|
|
64 if (this.rand() <= continuity) {
|
|
65 data.push(Math.round(dfactor * value) / dfactor);
|
|
66 } else {
|
|
67 data.push(null);
|
|
68 }
|
|
69 }
|
|
70
|
|
71 return data;
|
|
72 },
|
|
73
|
|
74 labels: function(config) {
|
|
75 var cfg = config || {};
|
|
76 var min = cfg.min || 0;
|
|
77 var max = cfg.max || 100;
|
|
78 var count = cfg.count || 8;
|
|
79 var step = (max-min) / count;
|
|
80 var decimals = cfg.decimals || 8;
|
|
81 var dfactor = Math.pow(10, decimals) || 0;
|
|
82 var prefix = cfg.prefix || '';
|
|
83 var values = [];
|
|
84 var i;
|
|
85
|
|
86 for (i=min; i<max; i+=step) {
|
|
87 values.push(prefix + Math.round(dfactor * i) / dfactor);
|
|
88 }
|
|
89
|
|
90 return values;
|
|
91 },
|
|
92
|
|
93 months: function(config) {
|
|
94 var cfg = config || {};
|
|
95 var count = cfg.count || 12;
|
|
96 var section = cfg.section;
|
|
97 var values = [];
|
|
98 var i, value;
|
|
99
|
|
100 for (i=0; i<count; ++i) {
|
|
101 value = Months[Math.ceil(i)%12];
|
|
102 values.push(value.substring(0, section));
|
|
103 }
|
|
104
|
|
105 return values;
|
|
106 },
|
|
107
|
|
108 transparentize: function(color, opacity) {
|
|
109 var alpha = opacity === undefined? 0.5 : 1 - opacity;
|
|
110 return Chart.helpers.color(color).alpha(alpha).rgbString();
|
|
111 },
|
|
112
|
|
113 merge: Chart.helpers.configMerge
|
|
114 };
|
|
115
|
|
116 Samples.utils.srand(Date.now());
|
|
117
|
|
118 }(this));
|
|
119
|