diff options
| author | Karan Jayachandra <karan.jayachandra@nxp.com> | 2025-11-14 17:46:28 +0100 |
|---|---|---|
| committer | Karan Jayachandra <karan.jayachandra@nxp.com> | 2025-11-14 17:46:28 +0100 |
| commit | 06d6cf87acfd4582beb6beb314c6f1d7c3fe9675 (patch) | |
| tree | 4c2af5aadf3fa7663435f48357de9bb438bb9aad /src/manage.js | |
| parent | baba5a39de4f699141438b122905888acd50ea53 (diff) | |
Simplified the file even more though longer
Diffstat (limited to 'src/manage.js')
| -rw-r--r-- | src/manage.js | 130 |
1 files changed, 86 insertions, 44 deletions
diff --git a/src/manage.js b/src/manage.js index 31e828d..ef48f8e 100644 --- a/src/manage.js +++ b/src/manage.js @@ -1,5 +1,70 @@ import { Court, Guest, Player } from "./data"; -import { shuffle, Manager, randomLevel, randomStatus } from "./utils"; + +export class Manager { + constructor(description, maxCount) { + this.description = description; + this.maxCount = maxCount; + this.data = []; + this.count = this.data.length; + let data = JSON.parse(localStorage.getItem(this.description)); + if (data === null || data.length === 0) { + this.generate(); + return; + } + this.load(data); + } + generate() { + for (let i = 0; i < this.maxCount; i++) { + this.data.push(this.createItem(i)); + } + console.log("Generated " + this.data.length + " " + this.description); + this.store(); + this.render(); + } + load(data) { + for (let i = 0; i < data.length; i++) { + this.data.push(this.loadItem(data[i])); + } + console.log("Loaded " + this.data.length + " " + this.description); + this.render(); + } + store() { + let stringData = JSON.stringify(this.data); + localStorage.setItem(this.data[0].description, stringData); + } + render() { + let renderedHTML = this.data + .map((i) => { + return i.render(); + }) + .join(""); + let elementId = this.data[0].description + "_list"; + document.getElementById(elementId).innerHTML = renderedHTML; + this.addBehaviour(); + } + addBehaviour() { + for (let idx = 0; idx < this.data.length; ++idx) { + const elementId = this.data[0].description + "_" + this.data[idx].id; + const p = document.getElementById(elementId); + p.addEventListener("click", () => { + this.data[idx].toggle(); + this.store(); + p.classList.toggle("is-success"); + p.classList.toggle("is-danger"); + }); + } + } + active() { + return this.data.filter(function (c) { + return c.status; + }); + } + inactive() { + return this.data.filter(function (c) { + return !c.status; + }); + } +} export class CourtManager extends Manager { constructor() { @@ -15,6 +80,19 @@ export class CourtManager extends Manager { } } +export function randomStatus() { + return Math.random() < 0.5; +} + +function normalize(data) { + let factor = Number(document.getElementById("skill").value); + console.log("Normalize skill by a factor of " + factor + "."); + return data.map(function (p) { + p.skill = Math.ceil(p.skill / factor); + return p; + }); +} + export class GuestManager extends Manager { constructor() { super("Guest", 12); @@ -30,16 +108,15 @@ export class GuestManager extends Manager { } active(factor) { factor = typeof factor !== "undefined" ? factor : 1; - let data = super.active(); - console.log("Normalize skill by a factor of " + factor + "."); - let players = data.map(function (p) { - p.skill = Math.ceil(p.skill / factor); - return p; - }); - return players; + return normalize(super.active()); } } +export function randomLevel() { + const max_level = 10; + return Math.floor(Math.random() * max_level + 1); +} + export class PlayerManager extends Manager { constructor() { super("Regular", 71); @@ -76,42 +153,7 @@ export class PlayerManager extends Manager { } active(factor) { factor = typeof factor !== "undefined" ? factor : 1; - let data = super.active(); - console.log("Normalize skill by a factor of " + factor + "."); - let players = data.map(function (p) { - p.skill = Math.ceil(p.skill / factor); - return p; - }); - return players; - } - propose(count) { - console.log("Required players are " + count); - let factor = Number(document.getElementById("skill").value); - console.log("Skill normalized by a factor of " + factor + "."); - let activePlayers = this.active(factor); - const activeGuests = this.g.active(factor); - activePlayers = activePlayers.concat(activeGuests); - console.log("Active players are:"); - console.log( - activePlayers - .map((i) => { - return i.name; - }) - .join(",") - ); - const shuffledPlayers = shuffle(activePlayers); - shuffledPlayers.sort((a, b) => a.totalPlayed - b.totalPlayed); - const selectedPlayers = shuffledPlayers.slice(0, count); - selectedPlayers.sort((a, b) => a.level - b.level); - console.log("Selected players are:"); - console.log( - selectedPlayers - .map((i) => { - return i.name; - }) - .join(",") - ); - return selectedPlayers; + return normalize(super.active()); } } |
