|
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