JSFiddle - React, Tailwind, and code Playground
by falldeaf
CSS
body {
background-color: black;
}
JavaScript
class Counter {
constructor (){
this.obj = {};
this.triggered = {};
}
increment(dname, repeat, cooldown) {
var currenttime = Math.round(Date.now() / 1000);
if (dname in this.triggered && currenttime < this.triggered[dname]) return false;
delete(this.triggered[dname]);
if (dname in this.obj) {
console.log(`increment ${dname} | ${this.obj[dname]}`);
this.obj[dname]++;
} else {
console.log(`create ${dname}`);
this.obj[dname] = 1;
}
if (this.obj[dname] >= repeat) {
this.triggered[dname] = currenttime + (cooldown * 60)
}
return (this.obj[dname] >= repeat);
}
decrement(dname) {
if (dname in this.obj) {
console.log(`decrement ${dname} | ${this.obj[dname]}`);
this.obj[dname]--;
if(this.obj[dname] < 0) {
console.log(`delete ${dname} | ${this.obj[dname]}`);
delete(this.obj[dname]);
}
} else {
console.log(`!${dname}`)
}
}
}
var cnt = new Counter(2, 5);
console.log(cnt.increment('a', 2, 5));
console.log(cnt.increment('a', 2, 5));
console.log(cnt.increment('a', 2, 5));
cnt.decrement('a');
cnt.decrement('a');
cnt.decrement('a');
cnt.decrement('a');
cnt.decrement('a');