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