mkData = (offsetSeconds = 0) => {
const radiusRange = [30, 200],
circles = 5,
curveLength = d3.sum(radiusRange) * Math.PI * circles,
length = calenderLength,
scaleRadius = d3
.scalePow()
.exponent(0.5)
.domain([0, length])
.range(radiusRange),
__ = 0;
var lst = [],
startDate,
date,
theta,
_ = 1;
startDate = new Date();
startDate = new Date(
startDate.getTime() +
dateOffsets.oneSecond * offsetSeconds +
dateOffsets.oneHour * hoursOffset +
dateOffsets.oneDay * daysOffset
);
theta = d3
.scaleLinear()
.domain([24 * 60, 0])
.range([0, Math.PI * 2])(
startDate.getHours() * 60 + startDate.getMinutes()
);
for (let i = 0; i < length; ++i) {
date = new Date(startDate.getTime() + dateOffsets.oneDay * i);
lst.push({
i,
obj: date,
date: date.getDate(),
hour: date.getHours(),
day: date.getDay(),
month: date.getMonth(),
year: date.getFullYear(),
r: scaleRadius(i),
theta: theta
});
theta += curveLength / length / scaleRadius(i);
}
lst.map((d) => {
const { r, theta } = d,
x = r * Math.cos(theta),
y = r * Math.sin(theta);
Object.assign(d, { x, y });
});
return lst;
}