From 8e04cc97ba48c8343a0135584ff786e3c3a8b4c8 Mon Sep 17 00:00:00 2001 From: eneller Date: Sun, 2 Feb 2025 14:59:20 +0100 Subject: [PATCH] feat: use URL query parameters to initialize textarea ?names parameter is now used to initialize the playerNames textarea --- README.md | 22 ++++++++++++---------- src/app/app.component.html | 7 +++++-- src/app/app.component.ts | 18 ++++++++++++++---- 3 files changed, 31 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index cdf1ad4..8ca30ff 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,9 @@ # Vb -A Team Randomizer built using Angular, installable as a progressive web app (PWA). +A Team Randomizer built using Angular and Bootstrap, installable as a progressive web app (PWA). +Supports setting names using URL query parameters: +```url +https://vb.example.org?names=Me,Myself,I +``` ## Development @@ -11,6 +15,12 @@ ng serve Once the server is running, open your browser and navigate to `http://localhost:4200/`. The application will automatically reload whenever you modify any of the source files. +Alternatively, to open the server to the network instead of just localhost, use + +```bash +npm run serve +``` + ## Building To build the project run: @@ -20,12 +30,4 @@ ng build ``` This will compile your project and store the build artifacts in the `dist/` directory. -As this is a static site, simply move the contents of browser/ to a directory that can be served by nginx or apache. - -## Running unit tests - -To execute unit tests with the [Karma](https://karma-runner.github.io) test runner, use the following command: - -```bash -ng test -``` +As this is a static site, simply move the contents of `dist/vb/browser/` to a directory that can be served by nginx or apache. \ No newline at end of file diff --git a/src/app/app.component.html b/src/app/app.component.html index 19bc860..809389c 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -23,20 +23,23 @@ +
-
-
+ diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 41cc671..3375bfa 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -1,6 +1,6 @@ -import { Component } from '@angular/core'; +import { AfterViewInit, Component, OnInit} from '@angular/core'; import { FormsModule } from '@angular/forms'; -import { RouterOutlet } from '@angular/router'; +import { RouterOutlet, ActivatedRoute } from '@angular/router'; import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; import { CommonModule } from '@angular/common'; @@ -11,14 +11,24 @@ import { CommonModule } from '@angular/common'; templateUrl: './app.component.html', styleUrl: './app.component.less' }) -export class AppComponent { +export class AppComponent implements OnInit { title = 'vb'; + playerNamesValue = ""; numTeamsSelectorValue = "2"; numTeamsSelected = 2; nTeamsValue = "4"; teamsArray: string[][] = []; displayedColumns = ["teamCount", "teamNames"]; + constructor(private activatedRoute: ActivatedRoute){} + + ngOnInit(): void { + //consiedr using Angular's ActivatedRoute here instead + const params = new URLSearchParams(window.location.search); + const names = params.get('names')?.replaceAll(',', '\n'); + if (names) this.playerNamesValue = names; + } + onButtonGenerate(textinput: string): void{ if(this.numTeamsSelectorValue === 'n'){ this.numTeamsSelected = Number(this.nTeamsValue); @@ -26,7 +36,7 @@ export class AppComponent { else{ this.numTeamsSelected = Number(this.numTeamsSelectorValue); } - let names = textinput + let names = this.playerNamesValue .split('\n') .map(function(str){return str.trim();}) .filter(function(str){return str}); // boolean interpretation is same as non-empty