UNPKG

react-d3-heatmap

Version:
79 lines (65 loc) 1.83 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.setData = setData; exports.convertDateArrToObjectArr = convertDateArrToObjectArr; /** * Generate data test * @param {Date} dateStart * @param {Date} dateEnd * @param {Date} nb : Numbers of data generated * @returns An Array of data(Object{date: Date, count: Number}). The length of array is equal to nb params */ function setData(dateStart, dateEnd, nb) { var data = []; var dates = []; for (var i = 0; i < nb; i++) { var _date = randomDate(dateStart, dateEnd); while (dates.includes(_date)) { _date = randomDate(dateStart, dateEnd); } dates.push(_date); var _count = Math.floor(Math.random() * 14); data.push({ date: new Date(_date), count: _count }); } return data; } /** * Generate a random date between two dates * @param {Date} start * @param {Date} end * @returns a random date */ function randomDate(start, end) { return new Date(start.getTime() + Math.random() * (end.getTime() - start.getTime())); } /** * Convert an array of date to a n array of Object{ date: Date, count: Number} * @param {Array[Date]} dates * @returns an array of Object{ date: Date, count: Number} */ function convertDateArrToObjectArr(dates) { var result = []; dates.map(function (date) { var dateTmp = new Date(date).setHours(0, 0, 0, 0); if (!isNaN(dateTmp) && typeof dateTmp === "number") { var index = result.findIndex(function (d) { var dateToMatch = new Date(d.date).setHours(0, 0, 0, 0); return dateToMatch === dateTmp; }); if (index !== -1) { result[index].count += 1; } else { result.push({ date: new Date(dateTmp), count: 1 }); } } }); return result; }