diff options
| author | Karan Jayachandra <mail@karanjayachandra.com> | 2026-08-30 22:43:21 +0200 |
|---|---|---|
| committer | Karan Jayachandra <mail@karanjayachandra.com> | 2026-08-30 22:43:21 +0200 |
| commit | fc8d8ab8d0da95ec79056f59e14a150df6fcea89 (patch) | |
| tree | 33f8050b2f2920c0f1b884a205a8aa4c81d7687c /src/manage.js | |
| parent | d37ebfda883bcd03b146a85bc3e5a4657d0abd73 (diff) | |
Moved to sveltemain
Diffstat (limited to 'src/manage.js')
| -rw-r--r-- | src/manage.js | 214 |
1 files changed, 0 insertions, 214 deletions
diff --git a/src/manage.js b/src/manage.js deleted file mode 100644 index 10a9896..0000000 --- a/src/manage.js +++ /dev/null @@ -1,214 +0,0 @@ -import { Court, Guest, Regular } from "./data"; -import { uniqueNamesGenerator, names, adjectives } from 'unique-names-generator'; - -const config = { - dictionaries: [adjectives, names], - style: 'capital', - length: 2 -} - -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("secondary"); - p.classList.toggle("outline"); - }); - } - } - 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() { - super("Court", 12); - } - createItem(i) { - return new Court(i, randomStatus()); - } - loadItem(data) { - let id = Number(data.id); - let status = Boolean(Number(data.status)); - return new Court(id, status); - } -} - -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(description, count) { - if (typeof description === "undefined") { - description = "Guest"; - } - if (typeof count === "undefined") { - count = 18; - } - super(description, count); - } - createItem(i) { - return new Guest(i, randomStatus()); - } - loadItem(data) { - let id = Number(data.id); - let status = Boolean(Number(data.status)); - let games = data.games; - return new Guest(id, status, games); - } - active() { - return normalize(super.active()); - } - incrementGames(list) { - for (let index = 0; index < this.data.length; index++) { - if (list.includes(this.data[index].name)) { - console.log("Added game count to " + this.data[index].name); - this.data[index].games += 1; - } - } - this.store(); - } -} - -export function randomLevel() { - const maxLevel = 10; - return Math.floor(Math.random() * maxLevel + 1); -} - -export class RegularManager extends GuestManager { - constructor() { - super("Regular", 71); - addLoadBehaviour(this); - } - createItem(i) { - const name = uniqueNamesGenerator(config); - console.log(name); - const firstName = name.split("_")[0]; - const lastName = name.split("_")[1]; - return new Regular(i, randomStatus(), randomLevel(), 0, firstName, lastName); - } - loadItem(data) { - const id = Number(data.id); - const level = Number(data.level); - const status = Boolean(Number(data.status)); - const games = Number(data.games); - const firstName = data.firstName; - const lastName = data.lastName; - return new Regular(id, status, level, games, firstName, lastName); - } - reset() { - for (let index = 0; index < this.data.length; index++) { - this.data[index].games = 0; - this.data[index].status = false; - } - } -} - -function parseLineToPlayer(data) { - const info = data.split(","); - const id = Number(info[0].trim()); - const firstName = info[1].trim(); - const lastName = info[2].trim(); - const level = Number(info[3].trim()); - return new Regular(id, randomStatus(), level, 0, firstName, lastName); -} - -function parseCsv(data) { - let lines = data.split("\n"); - let players = []; - for (let i = 1; i < lines.length; i++) { - if (lines[i] == undefined || lines[i].trim() == "") { - continue; - } - players.push(parseLineToPlayer(lines[i])); - } - console.log("Loaded " + players.length + " Players"); - for (let i = 0; i < players.length; i++) { - players[i].print(); - } - return players; -} - -document.getElementById("button-player-load").addEventListener("click", () => { - document.getElementById("player-load").click(); -}); - -function addLoadBehaviour(p) { - const f = document.getElementById("player-load"); - f.addEventListener("change", () => { - const file = f.files[0]; - let importData; - console.log("Loading data from " + file.name); - const reader = new FileReader(); - reader.onload = function (e) { - importData = reader.result; - p.data = parseCsv(importData); - p.store(); - p.render(); - }; - reader.readAsText(file); - }); -} |
