From 5408a8d9b690d8a8c4cad9520fa90090a97e67cf Mon Sep 17 00:00:00 2001 From: eneller Date: Sat, 31 Jan 2026 00:31:01 +0100 Subject: [PATCH] central players list --- src/app/app.component.html | 2 +- src/app/app.component.ts | 51 ++----------------- src/app/model.ts | 32 +++++++++--- .../screen-basic/screen-basic.component.ts | 6 ++- .../screen-rotations.component.html | 2 +- .../screen-rotations.component.ts | 14 +++-- 6 files changed, 42 insertions(+), 65 deletions(-) diff --git a/src/app/app.component.html b/src/app/app.component.html index 5174957..f5ecf24 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -1,5 +1,5 @@
- +
diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 34167db..64981c6 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -7,6 +7,7 @@ import { CommonModule } from '@angular/common'; import { filter, take } from 'rxjs'; import { ScreenBasicComponent } from "./screen-basic/screen-basic.component"; import { ScreenRotationsComponent } from './screen-rotations/screen-rotations.component'; +import { Player } from './model'; @Component({ selector: 'app-root', @@ -16,12 +17,7 @@ import { ScreenRotationsComponent } from './screen-rotations/screen-rotations.co }) export class AppComponent implements OnInit { title = 'vb'; - playerNamesValue = ""; - numTeamsSelectorValue = "2"; - numTeamsSelected = 2; - nTeamsValue = "4"; - teamsArray: string[][] = []; - duplicateNames: string[] = []; + players : Player[] = []; constructor(private activatedRoute: ActivatedRoute){} @@ -30,50 +26,11 @@ export class AppComponent implements OnInit { filter(params => Object.keys(params).length > 0), // Only proceed if params are not empty take(1) ).subscribe(params => { - const names = params['names']?.replaceAll(',', '\n'); - if (names) { - this.playerNamesValue = names; + if (params['names']){ + this.players = params['names'].split(',').map((name: string) => new Player(name)); } }); } -onButtonGenerate(textinput: string): void{ - if(this.numTeamsSelectorValue === 'n'){ - this.numTeamsSelected = Number(this.nTeamsValue); - } - else{ - this.numTeamsSelected = Number(this.numTeamsSelectorValue); - } - let nameslist = this.playerNamesValue - .split('\n') - .map(function(str){return str.trim();}) - .filter(function(str){return str}); // boolean interpretation is same as non-empty - // remove duplicates by using a Set - let namesset = new Set(nameslist); - let names = [...namesset]; - - - let teams = Array.from({ length: this.numTeamsSelected }, () => []); - let playersPerTeam = Math.floor(names.length / this.numTeamsSelected); - - let nameslen = names.length; - function* iter(list: any[]){ - let index = 0; - while(true){ - yield list[index % list.length]; - index++; - } - } - let iterator = iter(teams); - for(let i =0; i < nameslen; i++){ - let index = Math.floor(Math.random()* names.length); - let n = names[index]; - names.splice(index,1); - let team = iterator.next().value; - team.push(n); - - } - this.teamsArray = teams; - } } diff --git a/src/app/model.ts b/src/app/model.ts index 6570870..e9cc6e3 100644 --- a/src/app/model.ts +++ b/src/app/model.ts @@ -1,11 +1,31 @@ export class Player{ name: string; - outside: boolean = false; - middle: boolean = false; - opposite: boolean = false; // dia - setter: boolean = false; - libero: boolean = false; - constructor( name: string){ + outside: boolean; + middle: boolean; + opposite: boolean; // dia + setter: boolean; + libero: boolean; + + constructor( + name:string, + outside: boolean = false, + middle: boolean = false, + opposite: boolean = false, // dia + setter: boolean = false, + libero: boolean = false, + ){ this.name = name; + this.outside = outside; + this.middle = middle; + this.opposite = opposite; + this.setter = setter; + this.libero = libero; + } + serialize(): string[] { + const values = 'OOOO' + return [this.name, values]; + } + static deSerialize(name: string, values: string): Player{ + return new Player(name); } } diff --git a/src/app/screen-basic/screen-basic.component.ts b/src/app/screen-basic/screen-basic.component.ts index 39be8b4..8f29cbc 100644 --- a/src/app/screen-basic/screen-basic.component.ts +++ b/src/app/screen-basic/screen-basic.component.ts @@ -1,8 +1,10 @@ -import { Component, OnInit} from '@angular/core'; +// Original Team Generation Screen for arbitrary size and number of teams +import { Component, Input, OnInit} from '@angular/core'; import { FormsModule } from '@angular/forms'; import { RouterOutlet, ActivatedRoute } from '@angular/router'; import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; import { CommonModule } from '@angular/common'; +import { Player } from '../model'; @Component({ selector: 'app-screen-basic', @@ -11,6 +13,7 @@ import { CommonModule } from '@angular/common'; styleUrl: './screen-basic.component.less' }) export class ScreenBasicComponent { + @Input() players!: Player[]; playerNamesValue = ""; numTeamsSelectorValue = "2"; numTeamsSelected = 2; @@ -35,7 +38,6 @@ export class ScreenBasicComponent { let teams = Array.from({ length: this.numTeamsSelected }, () => []); - let playersPerTeam = Math.floor(names.length / this.numTeamsSelected); let nameslen = names.length; function* iter(list: any[]){ diff --git a/src/app/screen-rotations/screen-rotations.component.html b/src/app/screen-rotations/screen-rotations.component.html index c854196..b2f2cf5 100644 --- a/src/app/screen-rotations/screen-rotations.component.html +++ b/src/app/screen-rotations/screen-rotations.component.html @@ -4,7 +4,7 @@