viewof ej_15minute_canvas = {
let alpha = 0.5;
const q5 = new Q5();
q5.createCanvas(width, height);
q5.randomSeed();
const el = html`${q5.canvas}`;
el.value = q5;
yield el;
invalidation.then(() => q5.clear());
let x = width / 2;
let y = height / 2;
let px = x;
let py = y;
let circles = [];
const addCircle = function() {
circles.push({
x: chance.floating({ min: 0, max: width }),
y: chance.floating({ min: 0, max: height })
});
};
for (let c = 0; c < 1200; c++) {
addCircle();
}
while (true) {
q5.clear();
let now = moment(new Date());
let diffSeconds = moment(userdl).diff(now, "seconds");
let diffMinutes = moment(userdl).diff(now, "minutes");
let diffSecondHand = d3.max([0, diffSeconds - diffMinutes * 60]);
circles = circles.slice(0, +diffSeconds);
for (let i = 0; i < circles.length; i++) {
q5.circle(circles[i].x, circles[i].y, circleRadius);
if (chance.bool()) {
circles[i].x += chance.floating({
min: -circleStepMax,
max: circleStepMax
});
}
if (chance.bool()) {
circles[i].y += chance.floating({
min: -circleStepMax,
max: circleStepMax
});
}
if (circles[i].y > height) {
circles[i].y -= circleRadius * 1.5;
}
if (circles[i].x > width) {
circles[i].x = 0;
}
}
q5.textSize(220);
q5.textSize(48);
q5.text("TIME LEFT", width * 0.28, 70);
yield el;
}
}