feat: 3 screens for rotations

commit 563116331f
Author: eneller <erikneller@gmx.de>
Date:   Sun Feb 1 10:28:19 2026 +0100

    fix: edit list items

commit 1946c599be
Author: eneller <erikneller@gmx.de>
Date:   Sun Feb 1 10:19:16 2026 +0100

    fix: minor misc ui and data

commit 7c7762515b
Author: eneller <erikneller@gmx.de>
Date:   Sat Jan 31 23:02:01 2026 +0100

    feat: navbar

commit aaa0ab0638
Author: eneller <erikneller@gmx.de>
Date:   Sat Jan 31 21:05:23 2026 +0100

    feat: remove players

commit 4082932095
Author: eneller <erikneller@gmx.de>
Date:   Sat Jan 31 20:36:49 2026 +0100

    feat: dataservice

commit b6d34ce262
Author: eneller <erikneller@gmx.de>
Date:   Sat Jan 31 17:12:37 2026 +0100

    wip: rotations accordion

commit 764ce43138
Author: eneller <erikneller@gmx.de>
Date:   Sat Jan 31 16:29:11 2026 +0100

    refactor: basic screen

commit 1bc97df0da
Author: eneller <erikneller@gmx.de>
Date:   Sat Jan 31 15:52:06 2026 +0100

    feat: deduplicated player adding

commit 5408a8d9b6
Author: eneller <erikneller@gmx.de>
Date:   Sat Jan 31 00:31:01 2026 +0100

    central players list

commit 665cb25d34
Author: eneller <erikneller@gmx.de>
Date:   Fri Jan 30 23:15:16 2026 +0100

    feat: modal

commit 3b8e5145c3
Author: eneller <erikneller@gmx.de>
Date:   Fri Jan 30 22:51:09 2026 +0100

    wip: player modal

commit 51414f5a99
Author: eneller <erikneller@gmx.de>
Date:   Fri Jan 30 22:03:48 2026 +0100

    refactor: extract randomizer to component
This commit is contained in:
eneller
2026-02-01 10:40:05 +01:00
parent 7e7313916b
commit c4a2307530
27 changed files with 659 additions and 110 deletions

View File

@@ -0,0 +1,67 @@
import { Component, inject, Input, ViewChild } from '@angular/core';
import { NgbAlert, NgbModal } from '@ng-bootstrap/ng-bootstrap';
import { Player } from '../model';
import { ModalRotationsComponent } from '../modal-rotations/modal-rotations.component';
import { FormsModule } from '@angular/forms';
import { Subject } from 'rxjs/internal/Subject';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { debounceTime, tap } from 'rxjs/operators';
import { DataService } from '../data.service';
@Component({
selector: 'app-screen-edit',
imports: [FormsModule, NgbAlert],
templateUrl: './screen-edit.component.html',
styleUrl: './screen-edit.component.less'
})
export class ScreenEditComponent {
data = inject(DataService);
@ViewChild('selfClosingAlert', { static: false })selfClosingAlert!: NgbAlert;
private _message$ = new Subject<string>();
newItem: string = "";
alertMessage = '';
constructor(private modalService: NgbModal) {
this._message$
.pipe(
takeUntilDestroyed(),
tap((message) => (this.alertMessage = message)),
debounceTime(5000),
)
.subscribe(() => this.selfClosingAlert?.close());
}
addItem() {
const name = this.newItem.trim()
if (name) {
let newPlayer = new Player(name);
if(this.data.addPlayer(newPlayer)){
this.newItem = '';
return
}
else{
this.setAlertMessage(newPlayer.name);
}
}
}
removeItem(player: Player){
this.data.removePlayer(player);
}
openPlayerModal(player: Player){
const modalRef = this.modalService.open(ModalRotationsComponent);
modalRef.componentInstance.player = player;
/*
modalRef.result.then((updatedPlayer) => {
// Handle the updated player data if needed
console.log('Player updated:', updatedPlayer);
}).catch((error) => {
console.log('Modal dismissed');
});
*/
}
public setAlertMessage(s: string) {
this._message$.next(`"${s}" already exists. Please choose a unique name.`);
}
}