Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 9 additions & 4 deletions src/js/charts/Heatmap.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import BaseChart from './BaseChart';
import { getComponent } from '../objects/ChartComponents';
import { makeText, heatSquare } from '../utils/draw';
import {
DAY_NAMES_SHORT, addDays, areInSameMonth, getLastDateInMonth, setDayToSunday, getYyyyMmDd, getWeeksBetween, getMonthName, clone,
DAY_NAMES_SHORT, toMidnightUTC, addDays, areInSameMonth, getLastDateInMonth, setDayToSunday, getYyyyMmDd, getWeeksBetween, getMonthName, clone,
NO_OF_MILLIS, NO_OF_YEAR_MONTHS, NO_OF_DAYS_IN_WEEK
} from '../utils/date-utils';
import { calcDistribution, getMaxCheckpoint } from '../utils/intervals';
Expand Down Expand Up @@ -62,7 +62,12 @@ export default class Heatmap extends BaseChart {
data.start = new Date();
data.start.setFullYear(data.start.getFullYear() - 1);
}
if (!data.end) { data.end = new Date(); }
data.start = toMidnightUTC(data.start);

if (!data.end) {
data.end = new Date();
}
data.end = toMidnightUTC(data.end);
data.dataPoints = data.dataPoints || {};

if (parseInt(Object.keys(data.dataPoints)[0]) > 100000) {
Expand Down Expand Up @@ -234,7 +239,7 @@ export default class Heatmap extends BaseChart {
getDomainConfig(startDate, endDate = '') {
let [month, year] = [startDate.getMonth(), startDate.getFullYear()];
let startOfWeek = setDayToSunday(startDate); // TODO: Monday as well
endDate = clone(endDate) || getLastDateInMonth(month, year);
endDate = endDate ? clone(endDate) : toMidnightUTC(getLastDateInMonth(month, year));

let domainConfig = {
index: month,
Expand All @@ -249,7 +254,7 @@ export default class Heatmap extends BaseChart {
col = this.getCol(startOfWeek, month);
cols.push(col);

startOfWeek = new Date(col[NO_OF_DAYS_IN_WEEK - 1].yyyyMmDd);
startOfWeek = toMidnightUTC(new Date(col[NO_OF_DAYS_IN_WEEK - 1].yyyyMmDd));
addDays(startOfWeek, 1);
}

Expand Down
2 changes: 1 addition & 1 deletion src/js/utils/axis-chart-utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ export function dataPrep(data, type) {

// Set type
if (!d.chartType) {
if (!AXIS_DATASET_CHART_TYPES.includes(type)) type === DEFAULT_AXIS_CHART_TYPE;
if (!AXIS_DATASET_CHART_TYPES.includes(type)) type = DEFAULT_AXIS_CHART_TYPE;
d.chartType = type;
}

Expand Down
6 changes: 6 additions & 0 deletions src/js/utils/date-utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,12 @@ function treatAsUtc(date) {
return result;
}

export function toMidnightUTC(date) {
let result = new Date(date);
result.setUTCHours(0, result.getTimezoneOffset(), 0, 0);
return result;
}

export function getYyyyMmDd(date) {
let dd = date.getDate();
let mm = date.getMonth() + 1; // getMonth() is zero-based
Expand Down
40 changes: 20 additions & 20 deletions src/js/utils/helpers.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ export function floatTwo(d) {
* @param {Array} arr2 Second array
*/
export function arraysEqual(arr1, arr2) {
if(arr1.length !== arr2.length) return false;
if (arr1.length !== arr2.length) return false;
let areEqual = true;
arr1.map((d, i) => {
if(arr2[i] !== d) areEqual = false;
if (arr2[i] !== d) areEqual = false;
});
return areEqual;
}
Expand Down Expand Up @@ -46,8 +46,8 @@ export function shuffle(array) {
* @param {Object} element element to fill with
* @param {Boolean} start fill at start?
*/
export function fillArray(array, count, element, start=false) {
if(!element) {
export function fillArray(array, count, element, start = false) {
if (!element) {
element = start ? array[0] : array[array.length - 1];
}
let fillerArray = new Array(Math.abs(count)).fill(element);
Expand All @@ -61,16 +61,16 @@ export function fillArray(array, count, element, start=false) {
* @param {Number} charWidth Width of single char in pixels
*/
export function getStringWidth(string, charWidth) {
return (string+"").length * charWidth;
return (string + "").length * charWidth;
}

export function bindChange(obj, getFn, setFn) {
return new Proxy(obj, {
set: function(target, prop, value) {
set: function (target, prop, value) {
setFn();
return Reflect.set(target, prop, value);
},
get: function(target, prop) {
get: function (target, prop) {
getFn();
return Reflect.get(target, prop);
}
Expand Down Expand Up @@ -98,7 +98,7 @@ export function getPositionByAngle(angle, radius) {
* @param {object} candidate Candidate to test
* @param {Boolean} nonNegative flag to treat negative number as invalid
*/
export function isValidNumber(candidate, nonNegative=false) {
export function isValidNumber(candidate, nonNegative = false) {
if (Number.isNaN(candidate)) return false;
else if (candidate === undefined) return false;
else if (!Number.isFinite(candidate)) return false;
Expand All @@ -120,24 +120,24 @@ export function round(d) {
* Creates a deep clone of an object
* @param {Object} candidate Any Object
*/
export function deepClone(candidate) {
export function deepClone(candidate) {
let cloned, value, key;

if (candidate instanceof Date) {
return new Date(candidate.getTime());
return new Date(candidate.getTime());
}

if (typeof candidate !== "object" || candidate === null) {
return candidate;
return candidate;
}

cloned = Array.isArray(candidate) ? [] : {};

for (key in candidate) {
value = candidate[key];
cloned[key] = deepClone(value);
value = candidate[key];

cloned[key] = deepClone(value);
}

return cloned;
}
}
4 changes: 2 additions & 2 deletions src/js/utils/intervals.js
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ export function calcChartIntervals(values, withMinimum = false, range = {}) {
if (range.max !== undefined) {
maxValue = maxValue > range.max ? maxValue : range.max;
}

if (range.min !== undefined) {
minValue = minValue < range.min ? minValue : range.min;
}
Expand Down Expand Up @@ -160,7 +160,7 @@ export function calcChartIntervals(values, withMinimum = false, range = {}) {
intervals = intervals.reverse().map(d => d * (-1));
}

return intervals;
return intervals.sort((a, b) => (a - b));
}

export function getZeroIndex(yPts) {
Expand Down
Loading