Skip to content

Commit 1ea3bbb

Browse files
benmccannsimonbrunel
authored andcommitted
Fix data in financial sample (chartjs#6244)
1 parent 71bc870 commit 1ea3bbb

File tree

1 file changed

+32
-4
lines changed

1 file changed

+32
-4
lines changed

samples/scales/time/financial.html

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
<body>
1919
<div style="width:1000px">
20+
<p>This example demonstrates a time series scale by drawing a financial line chart using just the core library. For more specific functionality for financial charts, please see <a href="https://github.com/chartjs/chartjs-chart-financial">chartjs-chart-financial</a></p>
2021
<canvas id="chart1"></canvas>
2122
</div>
2223
<br>
@@ -37,6 +38,27 @@
3738
<button id="update">update</button>
3839
<script>
3940
function generateData() {
41+
var unit = document.getElementById('unit').value;
42+
43+
function unitLessThanDay() {
44+
return unit === 'second' || unit === 'minute' || unit === 'hour';
45+
}
46+
47+
function beforeNineThirty(date) {
48+
return date.hour() < 9 || (date.hour() === 9 && date.minute() < 30);
49+
}
50+
51+
// Returns true if outside 9:30am-4pm on a weekday
52+
function outsideMarketHours(date) {
53+
if (date.isoWeekday() > 5) {
54+
return true;
55+
}
56+
if (unitLessThanDay() && (beforeNineThirty(date) || date.hour() > 16)) {
57+
return true;
58+
}
59+
return false;
60+
}
61+
4062
function randomNumber(min, max) {
4163
return Math.random() * (max - min) + min;
4264
}
@@ -53,11 +75,17 @@
5375
var date = moment('Jan 01 1990', 'MMM DD YYYY');
5476
var now = moment();
5577
var data = [];
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.length > 0 ? data[data.length - 1].y : 30));
78+
var lessThanDay = unitLessThanDay();
79+
for (; data.length < 60 && date.isBefore(now); date = date.clone().add(1, unit).startOf(unit)) {
80+
if (outsideMarketHours(date)) {
81+
if (!lessThanDay || !beforeNineThirty(date)) {
82+
date = date.clone().add(date.isoWeekday() >= 5 ? 8 - date.isoWeekday() : 1, 'day');
83+
}
84+
if (lessThanDay) {
85+
date = date.hour(9).minute(30).second(0);
86+
}
6087
}
88+
data.push(randomBar(date, data.length > 0 ? data[data.length - 1].y : 30));
6189
}
6290

6391
return data;

0 commit comments

Comments
 (0)