comparison default/assets/vendors/charts/utils.js @ 0:1d038bc9b3d2 default tip

Up:default
author Liny <dev@neowd.com>
date Sat, 31 May 2025 09:21:51 +0800
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:1d038bc9b3d2
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