Mercurial > nebulaweb3
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 |