|
26 | 26 | <option value="line">Line</option>
|
27 | 27 | <option value="bar">Bar</option>
|
28 | 28 | </select>
|
| 29 | + <select id="unit"> |
| 30 | + <option value="second">Second</option> |
| 31 | + <option value="minute">Minute</option> |
| 32 | + <option value="hour">Hour</option> |
| 33 | + <option value="day" selected>Day</option> |
| 34 | + <option value="month">Month</option> |
| 35 | + <option value="year">Year</option> |
| 36 | + </select> |
29 | 37 | <button id="update">update</button>
|
30 | 38 | <script>
|
31 |
| - function randomNumber(min, max) { |
32 |
| - return Math.random() * (max - min) + min; |
33 |
| - } |
| 39 | + function generateData() { |
| 40 | + function randomNumber(min, max) { |
| 41 | + return Math.random() * (max - min) + min; |
| 42 | + } |
34 | 43 |
|
35 |
| - function randomBar(date, lastClose) { |
36 |
| - var open = randomNumber(lastClose * 0.95, lastClose * 1.05).toFixed(2); |
37 |
| - var close = randomNumber(open * 0.95, open * 1.05).toFixed(2); |
38 |
| - return { |
39 |
| - t: date.valueOf(), |
40 |
| - y: close |
41 |
| - }; |
42 |
| - } |
| 44 | + function randomBar(date, lastClose) { |
| 45 | + var open = randomNumber(lastClose * 0.95, lastClose * 1.05).toFixed(2); |
| 46 | + var close = randomNumber(open * 0.95, open * 1.05).toFixed(2); |
| 47 | + return { |
| 48 | + t: date.valueOf(), |
| 49 | + y: close |
| 50 | + }; |
| 51 | + } |
43 | 52 |
|
44 |
| - var dateFormat = 'MMMM DD YYYY'; |
45 |
| - var date = moment('April 01 2017', dateFormat); |
46 |
| - var data = [randomBar(date, 30)]; |
47 |
| - while (data.length < 60) { |
48 |
| - date = date.clone().add(1, 'd'); |
49 |
| - if (date.isoWeekday() <= 5) { |
50 |
| - data.push(randomBar(date, data[data.length - 1].y)); |
| 53 | + var date = moment('Jan 01 1990', 'MMM DD YYYY'); |
| 54 | + var now = moment(); |
| 55 | + var data = [randomBar(date, 30)]; |
| 56 | + var unit = document.getElementById('unit').value; |
| 57 | + for (; data.length < 60 && date.isBefore(now); date = date.clone().add(1, unit)) { |
| 58 | + if (date.isoWeekday() <= 5) { |
| 59 | + data.push(randomBar(date, data[data.length - 1].y)); |
| 60 | + } |
51 | 61 | }
|
| 62 | + |
| 63 | + return data; |
52 | 64 | }
|
53 | 65 |
|
54 | 66 | var ctx = document.getElementById('chart1').getContext('2d');
|
|
63 | 75 | label: 'CHRT - Chart.js Corporation',
|
64 | 76 | backgroundColor: color(window.chartColors.red).alpha(0.5).rgbString(),
|
65 | 77 | borderColor: window.chartColors.red,
|
66 |
| - data: data, |
| 78 | + data: generateData(), |
67 | 79 | type: 'line',
|
68 | 80 | pointRadius: 0,
|
69 | 81 | fill: false,
|
|
109 | 121 |
|
110 | 122 | document.getElementById('update').addEventListener('click', function() {
|
111 | 123 | var type = document.getElementById('type').value;
|
112 |
| - chart.config.data.datasets[0].type = type; |
| 124 | + var dataset = chart.config.data.datasets[0]; |
| 125 | + dataset.type = type; |
| 126 | + dataset.data = generateData(); |
113 | 127 | chart.update();
|
114 | 128 | });
|
115 | 129 |
|
|
0 commit comments