refactor: basic screen
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
<main class="main">
|
<main class="main">
|
||||||
<app-screen-edit [players]="players"></app-screen-edit>
|
<app-screen-basic [players]="players"></app-screen-basic>
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<router-outlet />
|
<router-outlet />
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
<div class="row justify-content-md-center">
|
<div class="justify-content-md-center">
|
||||||
<h1>Please select the number of teams:</h1>
|
|
||||||
<div class="btn-toolbar mb-3 col justify-content-center" role="toolbar">
|
<div class="btn-toolbar mb-3 col justify-content-center" role="toolbar">
|
||||||
<div class="btn-group me-2" id="numTeamsSelector" role="group"
|
<div class="btn-group me-2" id="numTeamsSelector" role="group"
|
||||||
value="2">
|
value="2">
|
||||||
@@ -16,26 +15,14 @@
|
|||||||
<label for="nTeamsField">n Teams</label>
|
<label for="nTeamsField">n Teams</label>
|
||||||
<input type="number" pattern="\d*" [(ngModel)]="nTeamsValue" id="nTeamsField" class="form-control" >
|
<input type="number" pattern="\d*" [(ngModel)]="nTeamsValue" id="nTeamsField" class="form-control" >
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<h1>Random Teams</h1>
|
||||||
|
|
||||||
<form>
|
<form>
|
||||||
<div class="container">
|
<button type="button" (click)="onButtonGenerate()" class="btn btn-primary">Generate</button>
|
||||||
<label for="playerNames">Names</label>
|
|
||||||
<textarea [(ngModel)]="playerNamesValue"
|
|
||||||
class="form-control mb-3"
|
|
||||||
rows="18"
|
|
||||||
cols="30"
|
|
||||||
style="text-align: left;"
|
|
||||||
name="playerNames"
|
|
||||||
#playerNames
|
|
||||||
id="playerNames"
|
|
||||||
></textarea>
|
|
||||||
</div>
|
|
||||||
<button type="button" (click)="onButtonGenerate(playerNames.value)" class="btn btn-primary">Generate</button>
|
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<table class="table table-striped custom-table">
|
<table class="table table-striped custom-table">
|
||||||
<caption *ngIf="duplicateNames.length >0">Removed: {{ duplicateNames }}</caption>
|
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="col">Size</th>
|
<th scope="col">Size</th>
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import { RouterOutlet, ActivatedRoute } from '@angular/router';
|
|||||||
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
|
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
|
||||||
import { CommonModule } from '@angular/common';
|
import { CommonModule } from '@angular/common';
|
||||||
import { Player } from '../model';
|
import { Player } from '../model';
|
||||||
|
import { iter } from '../util';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-screen-basic',
|
selector: 'app-screen-basic',
|
||||||
@@ -14,46 +15,31 @@ import { Player } from '../model';
|
|||||||
})
|
})
|
||||||
export class ScreenBasicComponent {
|
export class ScreenBasicComponent {
|
||||||
@Input() players!: Player[];
|
@Input() players!: Player[];
|
||||||
playerNamesValue = "";
|
|
||||||
numTeamsSelectorValue = "2";
|
numTeamsSelectorValue = "2";
|
||||||
numTeamsSelected = 2;
|
numTeamsSelected = 2;
|
||||||
nTeamsValue = "4";
|
nTeamsValue = "4";
|
||||||
teamsArray: string[][] = [];
|
teamsArray: string[][] = [];
|
||||||
duplicateNames: string[] = [];
|
|
||||||
|
|
||||||
onButtonGenerate(textinput: string): void{
|
onButtonGenerate(): void{
|
||||||
if(this.numTeamsSelectorValue === 'n'){
|
if(this.numTeamsSelectorValue === 'n'){
|
||||||
this.numTeamsSelected = Number(this.nTeamsValue);
|
this.numTeamsSelected = Number(this.nTeamsValue);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
this.numTeamsSelected = Number(this.numTeamsSelectorValue);
|
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 teams = Array.from({ length: this.numTeamsSelected }, () => []);
|
||||||
|
// clone array here
|
||||||
|
let localPlayers: Player[] = Object.assign([],this.players);
|
||||||
|
|
||||||
let nameslen = names.length;
|
let nameslen = localPlayers.length;
|
||||||
function* iter(list: any[]){
|
|
||||||
let index = 0;
|
|
||||||
while(true){
|
|
||||||
yield list[index % list.length];
|
|
||||||
index++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
let iterator = iter(teams);
|
let iterator = iter(teams);
|
||||||
for(let i =0; i < nameslen; i++){
|
for(let i =0; i < nameslen; i++){
|
||||||
let index = Math.floor(Math.random()* names.length);
|
let index = Math.floor(Math.random()* localPlayers.length);
|
||||||
let n = names[index];
|
let n = localPlayers[index];
|
||||||
names.splice(index,1);
|
localPlayers.splice(index,1);
|
||||||
let team = iterator.next().value;
|
let team = iterator.next().value;
|
||||||
team.push(n);
|
team.push(n.name);
|
||||||
|
|
||||||
}
|
}
|
||||||
this.teamsArray = teams;
|
this.teamsArray = teams;
|
||||||
|
|||||||
7
src/app/util.ts
Normal file
7
src/app/util.ts
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
export function* iter(list: any[]){
|
||||||
|
let index = 0;
|
||||||
|
while(true){
|
||||||
|
yield list[index % list.length];
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user