diff --git a/projects/gameboard-ui/src/app/admin/admin-page/admin-page.component.html b/projects/gameboard-ui/src/app/admin/admin-page/admin-page.component.html index d161defa..7c24a412 100644 --- a/projects/gameboard-ui/src/app/admin/admin-page/admin-page.component.html +++ b/projects/gameboard-ui/src/app/admin/admin-page/admin-page.component.html @@ -18,7 +18,6 @@

Administration

Support Notifications - Reports
diff --git a/projects/gameboard-ui/src/app/admin/admin-player-session/admin-player-session.component.html b/projects/gameboard-ui/src/app/admin/admin-player-session/admin-player-session.component.html index cc576872..7ce3ce98 100644 --- a/projects/gameboard-ui/src/app/admin/admin-player-session/admin-player-session.component.html +++ b/projects/gameboard-ui/src/app/admin/admin-player-session/admin-player-session.component.html @@ -37,7 +37,6 @@
Score

Session Extension

-
- + Back @@ -26,12 +26,14 @@

Challenge Reports

- +
- +
@@ -58,12 +60,15 @@

Challenge Reports

{{c.tag}}
{{c.points}}
{{c.attemptCount}}
-
{{c.successCount}} / {{c.successCount / c.attemptCount | percent}}
-
{{c.partialCount}} / {{c.partialCount / c.attemptCount | percent}}
+
{{c.successCount}} / {{c.successCount / c.attemptCount | percent}} +
+
{{c.partialCount}} / {{c.partialCount / c.attemptCount | percent}} +
{{c.averageTime}}
{{c.averageScore}}
-
+
Question
Points / % of Total
@@ -73,7 +78,8 @@

Challenge Reports

{{i + 1}}. {{part.text}}
{{ part.weight }} / {{ part.weight / c.points | percent}}
-
{{part.solveCount}} / {{part.solveCount / challengeDetailReports[c.id].attemptCount | percent}}
+
{{part.solveCount}} / + {{part.solveCount / challengeDetailReports[c.id].attemptCount | percent}}
{{0 | percent}}
diff --git a/projects/gameboard-ui/src/app/admin/components/external-game-admin/external-game-admin.component.html b/projects/gameboard-ui/src/app/admin/components/external-game-admin/external-game-admin.component.html index 295c0c49..54b3f654 100644 --- a/projects/gameboard-ui/src/app/admin/components/external-game-admin/external-game-admin.component.html +++ b/projects/gameboard-ui/src/app/admin/components/external-game-admin/external-game-admin.component.html @@ -75,7 +75,7 @@
Challenges
- + Created @@ -123,11 +123,15 @@
Challenges
Game Host URL
-
+
+ {{team.externalGameHostUrl}} +
- diff --git a/projects/gameboard-ui/src/app/admin/components/external-game-host-picker/external-game-host-picker.component.ts b/projects/gameboard-ui/src/app/admin/components/external-game-host-picker/external-game-host-picker.component.ts index 320294c0..81c2bf13 100644 --- a/projects/gameboard-ui/src/app/admin/components/external-game-host-picker/external-game-host-picker.component.ts +++ b/projects/gameboard-ui/src/app/admin/components/external-game-host-picker/external-game-host-picker.component.ts @@ -26,6 +26,12 @@ export class ExternalGameHostPickerComponent implements OnInit { async ngOnInit(): Promise { await this.loadHosts(this.selectedHostId); + + if (!this.selectedHostId && this.hosts.length) { + this.selectedHostId = this.hosts[0].id; + this.selectedHostIdChange.emit(this.selectedHostId); + this.selectedHostChange.emit(this.hosts[0]); + } } ngOnChanges(changes: SimpleChanges) { diff --git a/projects/gameboard-ui/src/app/admin/components/external-host-editor/external-host-editor.component.html b/projects/gameboard-ui/src/app/admin/components/external-host-editor/external-host-editor.component.html index 54374cad..3c04a3ff 100644 --- a/projects/gameboard-ui/src/app/admin/components/external-host-editor/external-host-editor.component.html +++ b/projects/gameboard-ui/src/app/admin/components/external-host-editor/external-host-editor.component.html @@ -21,7 +21,7 @@
+ [(ngModel)]="editHost.clientUrl" placeholder="https://my-site.com/the-client" required>
@@ -32,7 +32,7 @@
-
@@ -50,12 +50,29 @@ [(ngModel)]="editHost.teamExtendedEndpoint" placeholder="team/extended">
-
+
- +
+ +
+ +
+
+ +
+ + {{ tryPingResult.response }} + +
+
+ + + All set! + diff --git a/projects/gameboard-ui/src/app/admin/components/external-host-editor/external-host-editor.component.ts b/projects/gameboard-ui/src/app/admin/components/external-host-editor/external-host-editor.component.ts index e2f5b9d3..93db6eda 100644 --- a/projects/gameboard-ui/src/app/admin/components/external-host-editor/external-host-editor.component.ts +++ b/projects/gameboard-ui/src/app/admin/components/external-host-editor/external-host-editor.component.ts @@ -19,8 +19,11 @@ export class ExternalHostEditorComponent implements OnInit { public onSave?: (host: UpsertExternalGameHost) => void | Promise; protected subtitle?: string; protected title = "New External Game Host"; + protected tryPingResult?: { success: boolean; response?: string }; - constructor(private externalGameService: ExternalGameService) { } + constructor( + private externalGameService: ExternalGameService, + ) { } async ngOnInit() { if (this.hostId) { @@ -40,4 +43,8 @@ export class ExternalHostEditorComponent implements OnInit { if (this.onSave) await this.onSave(host); } + + protected async handleTryPing(host: UpsertExternalGameHost) { + this.tryPingResult = await this.externalGameService.tryPingHost(host); + } } diff --git a/projects/gameboard-ui/src/app/admin/feedback-report/feedback-report.component.html b/projects/gameboard-ui/src/app/admin/feedback-report/feedback-report.component.html index 13ff5e69..40407060 100644 --- a/projects/gameboard-ui/src/app/admin/feedback-report/feedback-report.component.html +++ b/projects/gameboard-ui/src/app/admin/feedback-report/feedback-report.component.html @@ -1,4 +1,4 @@ - + Back @@ -40,7 +40,7 @@

Feedback

{{currentGame?.name}} - {{currentChallengeSpec?.name ?? 'All ' + - challengeSpecs?.length + ' Challenges'}} + challengeSpecs?.length + ' Challenges'}}

@@ -124,9 +125,12 @@

Question Summary

{{q.id}}) {{q.prompt}}*
-
{{!!q.count ? (q.average | number:'1.2-2'): ''}}/{{q.scaleMax}}
-
{{!!q.count ? q.lowest : ''}}/{{q.scaleMax}}
-
{{!!q.count ? q.highest : ''}}/{{q.scaleMax}}
+
{{!!q.count ? (q.average | number:'1.2-2'): ''}}/{{q.scaleMax}}
+
{{!!q.count ? q.lowest : ''}}/{{q.scaleMax}} +
+
{{!!q.count ? q.highest : ''}}/{{q.scaleMax}} +
{{q.count}}
@@ -162,19 +166,29 @@

Individual Submissions

Time Challenge Name - + {{q.id}})
{{q.shortName ?? q.prompt}}
- -
{{ r.timestamp | shorttime:true }}
-
{{r.challengeId | slice:0:8}} {{r.challengeTag}}
-
{{ r.approvedName }}
- -
{{(q.answer && q.answer.length) ? q.answer : "--"}}
+ + +
{{ r.timestamp | shorttime:true }}
+ + +
{{r.challengeId | slice:0:8}} {{r.challengeTag}}
+ + +
{{ r.approvedName }}
+ + +
{{(q.answer && + q.answer.length) ? q.answer : "--"}}
@@ -183,7 +197,7 @@

Individual Submissions

No feedback yet.
- +
diff --git a/projects/gameboard-ui/src/app/admin/game-editor/game-editor.component.ts b/projects/gameboard-ui/src/app/admin/game-editor/game-editor.component.ts index 0d0db91e..3d0140ec 100644 --- a/projects/gameboard-ui/src/app/admin/game-editor/game-editor.component.ts +++ b/projects/gameboard-ui/src/app/admin/game-editor/game-editor.component.ts @@ -103,9 +103,11 @@ export class GameEditorComponent implements AfterViewInit { } async handleExternalGameHostChanged(host: ExternalGameHost) { - this.game.externalHostId = host.id; - await firstValueFrom(this.api.update(this.game)); - this.toast.showMessage(`Changed to host **${host.name}**`); + if (this.game.mode == "external" && this.game.externalHostId != host.id) { + this.game.externalHostId = host.id; + await firstValueFrom(this.api.update(this.game)); + this.toast.showMessage(`Changed to host **${host.name}**`); + } } async handleFeedbackTemplateChange(template?: FeedbackTemplate) { @@ -121,9 +123,14 @@ export class GameEditorComponent implements AfterViewInit { await firstValueFrom(this.api.update(this.game)); } - handleModeChange(event: Event) { + async handleModeChange(event: Event) { const gameMode = ((event?.target as any).value as GameEngineMode); this.game.mode = gameMode; + + if (this.game.mode != "external") + this.game.externalHostId = undefined; + + await firstValueFrom(this.api.update(this.game)); } protected handleSpecsUpdated(specs: Spec[]) { diff --git a/projects/gameboard-ui/src/app/admin/participation-report/participation-report.component.html b/projects/gameboard-ui/src/app/admin/participation-report/participation-report.component.html index 7717727a..93b8c793 100644 --- a/projects/gameboard-ui/src/app/admin/participation-report/participation-report.component.html +++ b/projects/gameboard-ui/src/app/admin/participation-report/participation-report.component.html @@ -1,43 +1,49 @@ - - - Back - - -

Participation Reports

+ + + Back + -
+

Participation Reports

+ +
- +
- +
- +
- +
- +
- +
diff --git a/projects/gameboard-ui/src/app/admin/player-sponsor-report/player-sponsor-report.component.html b/projects/gameboard-ui/src/app/admin/player-sponsor-report/player-sponsor-report.component.html index 1ddfe76e..4430f006 100644 --- a/projects/gameboard-ui/src/app/admin/player-sponsor-report/player-sponsor-report.component.html +++ b/projects/gameboard-ui/src/app/admin/player-sponsor-report/player-sponsor-report.component.html @@ -1,7 +1,7 @@ - + Back diff --git a/projects/gameboard-ui/src/app/admin/support-report-legacy/support-report-legacy.component.html b/projects/gameboard-ui/src/app/admin/support-report-legacy/support-report-legacy.component.html index 60764c2b..d6451d3a 100644 --- a/projects/gameboard-ui/src/app/admin/support-report-legacy/support-report-legacy.component.html +++ b/projects/gameboard-ui/src/app/admin/support-report-legacy/support-report-legacy.component.html @@ -1,4 +1,4 @@ - + Back diff --git a/projects/gameboard-ui/src/app/admin/user-registrar/user-registrar.component.ts b/projects/gameboard-ui/src/app/admin/user-registrar/user-registrar.component.ts index 9ed40c2a..419fea73 100644 --- a/projects/gameboard-ui/src/app/admin/user-registrar/user-registrar.component.ts +++ b/projects/gameboard-ui/src/app/admin/user-registrar/user-registrar.component.ts @@ -4,11 +4,12 @@ import { Component } from '@angular/core'; import { BehaviorSubject, interval, merge, Observable } from 'rxjs'; import { debounceTime, map, switchMap, tap } from 'rxjs/operators'; -import { Search, SortDirection } from '../../api/models'; +import { Search } from '../../api/models'; import { ApiUser, UserRole } from '../../api/user-models'; import { UserService } from '../../api/user.service'; import { fa } from '@/services/font-awesome.service'; import { SortService } from '@/services/sort.service'; +import { SortDirection } from '@/core/models/sort-direction'; type UserRegistrarSort = "name" | "lastLogin" | "createdOn"; diff --git a/projects/gameboard-ui/src/app/admin/user-report/user-report.component.html b/projects/gameboard-ui/src/app/admin/user-report/user-report.component.html index 18ac2a71..34228c15 100644 --- a/projects/gameboard-ui/src/app/admin/user-report/user-report.component.html +++ b/projects/gameboard-ui/src/app/admin/user-report/user-report.component.html @@ -1,7 +1,7 @@ - + Back @@ -14,12 +14,14 @@

User Reports

- +
- +
@@ -54,7 +56,7 @@
Players
{{p.gameName}}
-
{{p.playerCount}}
+
{{p.playerCount}}
{{p.sessionPlayerCount}}
diff --git a/projects/gameboard-ui/src/app/api/models.ts b/projects/gameboard-ui/src/app/api/models.ts index bfde79ab..8027213a 100644 --- a/projects/gameboard-ui/src/app/api/models.ts +++ b/projects/gameboard-ui/src/app/api/models.ts @@ -1,6 +1,7 @@ // Copyright 2021 Carnegie Mellon University. All Rights Reserved. // Released under a MIT (SEI)-style license. See LICENSE.md in the project root for license information. +import { SortDirection } from "@/core/models/sort-direction"; import { Game } from "./game-models"; import { Player } from "./player-models"; import { ApiUser } from "./user-models"; @@ -14,8 +15,6 @@ export interface Search { filter?: string[]; } -export type SortDirection = "asc" | "desc"; - export interface GameContext { game: Game; player: Player; diff --git a/projects/gameboard-ui/src/app/app.component.html b/projects/gameboard-ui/src/app/app.component.html index 1634e3c2..5f592865 100644 --- a/projects/gameboard-ui/src/app/app.component.html +++ b/projects/gameboard-ui/src/app/app.component.html @@ -2,7 +2,7 @@
-
+
@@ -12,5 +12,4 @@ -
diff --git a/projects/gameboard-ui/src/app/app.component.scss b/projects/gameboard-ui/src/app/app.component.scss index 5bb57f13..d9bbddf5 100644 --- a/projects/gameboard-ui/src/app/app.component.scss +++ b/projects/gameboard-ui/src/app/app.component.scss @@ -2,6 +2,13 @@ min-height: 100vh; } +@media print { + .app-bar-container, + .app-bar-container * { + display: none !important; + } +} + .sticky-content { top: 0px; left: 0px; diff --git a/projects/gameboard-ui/src/app/components/nav/nav.component.html b/projects/gameboard-ui/src/app/components/nav/nav.component.html index 77b1ea5f..1de6e56e 100644 --- a/projects/gameboard-ui/src/app/components/nav/nav.component.html +++ b/projects/gameboard-ui/src/app/components/nav/nav.component.html @@ -18,8 +18,6 @@ Reports - - [BETA]
- + diff --git a/projects/gameboard-ui/src/app/core/directives/query-param-model.directive.ts b/projects/gameboard-ui/src/app/core/directives/query-param-model.directive.ts index 3d7b9683..e17685bf 100644 --- a/projects/gameboard-ui/src/app/core/directives/query-param-model.directive.ts +++ b/projects/gameboard-ui/src/app/core/directives/query-param-model.directive.ts @@ -139,30 +139,6 @@ export class QueryParamModelDirective implements OnChanges { resetParams: this.config?.resetQueryParams }); } - - private deserializeModel(params: Params, config: QueryParamModelConfig): T | null { - if (!config) { - return null; - } - - if (!this._isMultiConfig) { - // we're deserializing a simple type using a provided serializer - // and mapping it to config.name - - if (!config.name) { - throw new Error("Can't deserialize a query param model with no name."); - } - - return (config.deserialize || defaultDeserializer)(params[config.name]); - } - - // otherwise, we're deserializing an object with multiple properties - if (!config.deserializeMulti || !config.propertyNameToQueryParamNameMap) { - throw new Error("Can't deserialize a multiproperty query param model without a deserializer and a param names map."); - } - - return config.deserializeMulti!(params, this._toQueryStringParamNames) as T; - } } export const defaultSerializer = (value: T | null): string | null => value?.toString() || null; diff --git a/projects/gameboard-ui/src/app/core/models/sort-direction.ts b/projects/gameboard-ui/src/app/core/models/sort-direction.ts new file mode 100644 index 00000000..57369084 --- /dev/null +++ b/projects/gameboard-ui/src/app/core/models/sort-direction.ts @@ -0,0 +1 @@ +export type SortDirection = "asc" | "desc"; diff --git a/projects/gameboard-ui/src/app/game/components/scoreboard-team-detail-modal/scoreboard-team-detail-modal.component.html b/projects/gameboard-ui/src/app/game/components/scoreboard-team-detail-modal/scoreboard-team-detail-modal.component.html index 8b0c4278..0eecadb0 100644 --- a/projects/gameboard-ui/src/app/game/components/scoreboard-team-detail-modal/scoreboard-team-detail-modal.component.html +++ b/projects/gameboard-ui/src/app/game/components/scoreboard-team-detail-modal/scoreboard-team-detail-modal.component.html @@ -62,7 +62,7 @@

Challenges

- + Challenge diff --git a/projects/gameboard-ui/src/app/game/components/scoreboard/scoreboard.component.html b/projects/gameboard-ui/src/app/game/components/scoreboard/scoreboard.component.html index 0030fd17..29e29243 100644 --- a/projects/gameboard-ui/src/app/game/components/scoreboard/scoreboard.component.html +++ b/projects/gameboard-ui/src/app/game/components/scoreboard/scoreboard.component.html @@ -13,8 +13,8 @@ - - + + {{ scoreboardData.game.isTeamGame ? "Team" : "Player" }} Challenges diff --git a/projects/gameboard-ui/src/app/game/pages/gameboard-page/gameboard-page.component.ts b/projects/gameboard-ui/src/app/game/pages/gameboard-page/gameboard-page.component.ts index 8344d246..349c1619 100644 --- a/projects/gameboard-ui/src/app/game/pages/gameboard-page/gameboard-page.component.ts +++ b/projects/gameboard-ui/src/app/game/pages/gameboard-page/gameboard-page.component.ts @@ -1,10 +1,10 @@ // Copyright 2021 Carnegie Mellon University. All Rights Reserved. // Released under a MIT (SEI)-style license. See LICENSE.md in the project root for license information. -import { Component, OnDestroy, ViewChild } from '@angular/core'; +import { Component, ViewChild } from '@angular/core'; import { Title } from '@angular/platform-browser'; import { ActivatedRoute } from '@angular/router'; -import { firstValueFrom, merge, Observable, of, Subject, Subscription, timer } from 'rxjs'; +import { firstValueFrom, merge, Observable, of, Subject, timer } from 'rxjs'; import { catchError, debounceTime, filter, map, switchMap, tap } from 'rxjs/operators'; import { faArrowLeft, faBolt, faExclamationTriangle, faTrash, faTv } from '@fortawesome/free-solid-svg-icons'; @@ -27,14 +27,13 @@ import { UnsubscriberService } from '@/services/unsubscriber.service'; styleUrls: ['./gameboard-page.component.scss'], providers: [UnsubscriberService] }) -export class GameboardPageComponent implements OnDestroy { +export class GameboardPageComponent { refresh$ = new Subject(); ctx!: BoardPlayer; hoveredItem: BoardSpec | null = null; selected!: BoardSpec; selecting$ = new Subject(); launching$ = new Subject(); - fetch$: Subscription; etd$!: Observable; errors: any[] = []; @@ -63,68 +62,68 @@ export class GameboardPageComponent implements OnDestroy { ) { this.user$ = usersvc.user$; - + this.unsub.add(hub.challengeEvents.subscribe(ev => this.syncOne(ev.model as Challenge))); this.unsub.add( - hub.challengeEvents.subscribe(ev => this.syncOne(ev.model as Challenge)) + merge( + route.params.pipe( + tap(p => this.cid = p.cid), + map(p => p.playerId) + ), + this.refresh$ + ).pipe( + filter(id => !!id), + debounceTime(300), + switchMap(id => api.load(id).pipe( + catchError(err => of({} as BoardPlayer)) + )), + tap(b => { + this.ctx = b; + title.setTitle(`${b.game.name} | ${this.config.appName}`); + + this.performanceSummaryViewModel = { + player: { + id: b.id, + teamId: b.teamId, + session: b.session, + scoring: { + rank: b.rank, + score: b.score, + partialCount: b.partialCount, + correctCount: b.correctCount + } + } + }; + }), + tap(b => this.startHub(b)), + tap(() => this.reselect()) + ).subscribe() ); - this.fetch$ = merge( - route.params.pipe( - tap(p => this.cid = p.cid), - map(p => p.playerId) - ), - this.refresh$ - ).pipe( - filter(id => !!id), - debounceTime(300), - switchMap(id => api.load(id).pipe( - catchError(err => of({} as BoardPlayer)) - )), - tap(b => { - this.ctx = b; - title.setTitle(`${b.game.name} | ${this.config.appName}`); - - this.performanceSummaryViewModel = { - player: { - id: b.id, - teamId: b.teamId, - session: b.session, - scoring: { - rank: b.rank, - score: b.score, - partialCount: b.partialCount, - correctCount: b.correctCount - } + this.unsub.add( + this.launching$.pipe( + switchMap(async s => { + try { + const launchedSpec = await firstValueFrom( + api.launch({ + playerId: this.ctx.id, + specId: s.id, + variant: this.variant, + userId: usersvc.user$.value!.id + }) + ); + + return launchedSpec; } - }; - }), - tap(b => this.startHub(b)), - tap(() => this.reselect()) - ).subscribe(); - - this.unsub.add(this.launching$.pipe( - switchMap(async s => { - try { - const launchedSpec = await firstValueFrom( - api.launch({ - playerId: this.ctx.id, - specId: s.id, - variant: this.variant, - userId: usersvc.user$.value!.id - }) - ); - - return launchedSpec; - } - catch (err: any) { - this.renderLaunchError(err); - return s.instance || null as unknown as Challenge; - } - }), - tap(c => this.deploying = false), - filter(c => !!c), - map(c => this.syncOne(c)) - ).subscribe()); + catch (err: any) { + this.renderLaunchError(err); + return s.instance || null as unknown as Challenge; + } + }), + tap(c => this.deploying = false), + filter(c => !!c), + map(c => this.syncOne(c)) + ).subscribe() + ); this.unsub.add( this.selecting$.pipe( @@ -146,11 +145,8 @@ export class GameboardPageComponent implements OnDestroy { // don't persist the "confirming" state if they switch challenges (#178) tap(c => this.startChallengeConfirmButton?.stopConfirming()), tap(s => this.selected = s) - ).subscribe()); - } - - ngOnDestroy(): void { - if (this.fetch$) { this.fetch$.unsubscribe(); } + ).subscribe() + ); } private startHub(b: BoardPlayer): void { diff --git a/projects/gameboard-ui/src/app/reports/components/parameter-change-link/parameter-change-link.component.ts b/projects/gameboard-ui/src/app/reports/components/parameter-change-link/parameter-change-link.component.ts index d4dc77ea..8320ad8b 100644 --- a/projects/gameboard-ui/src/app/reports/components/parameter-change-link/parameter-change-link.component.ts +++ b/projects/gameboard-ui/src/app/reports/components/parameter-change-link/parameter-change-link.component.ts @@ -9,7 +9,7 @@ export interface ParameterChangeRouterLinkConfig { @Component({ selector: 'app-parameter-change-link', template: ` -
+ diff --git a/projects/gameboard-ui/src/app/reports/components/reports-home/reports-home.component.html b/projects/gameboard-ui/src/app/reports/components/reports-home/reports-home.component.html index 58f0229d..5ce438ea 100644 --- a/projects/gameboard-ui/src/app/reports/components/reports-home/reports-home.component.html +++ b/projects/gameboard-ui/src/app/reports/components/reports-home/reports-home.component.html @@ -8,7 +8,12 @@

Reports

-

Legacy Reports

+

+ Legacy Reports + + [Deprecating] +

User Reports Board Reports diff --git a/projects/gameboard-ui/src/app/reports/components/reports/challenges-report/challenges-report.component.html b/projects/gameboard-ui/src/app/reports/components/reports/challenges-report/challenges-report.component.html index 95fa3902..b059acc3 100644 --- a/projects/gameboard-ui/src/app/reports/components/reports/challenges-report/challenges-report.component.html +++ b/projects/gameboard-ui/src/app/reports/components/reports/challenges-report/challenges-report.component.html @@ -10,7 +10,7 @@ [itemTemplate]="multiSelectGame" [getSearchText]="displayGameName" [value]="getGameValue"> + label="Include Challenge Stats from">
+ class="table table-hover gameboard-table gameboard-report"> - - + + - - - - - - - - - - - - - + + + + + + + + + + + + +
Summary Players @@ -41,22 +41,41 @@ Competitive Solves
ChallengeGamePlayersAvg. ScoreAvg. Solve TimeCompetitivePracticeNonePartialComplete
ChallengeGame + Players + + Avg. Score + + Avg. Solve Time + + + Competitive + + Practice + + None + + Partial + + Complete +
{{ record.challengeSpec.name }} diff --git a/projects/gameboard-ui/src/app/reports/components/reports/enrollment-report/enrollment-report-by-game/enrollment-report-by-game.component.html b/projects/gameboard-ui/src/app/reports/components/reports/enrollment-report/enrollment-report-by-game/enrollment-report-by-game.component.html index 18de6d57..794f5b0d 100644 --- a/projects/gameboard-ui/src/app/reports/components/reports/enrollment-report/enrollment-report-by-game/enrollment-report-by-game.component.html +++ b/projects/gameboard-ui/src/app/reports/components/reports/enrollment-report/enrollment-report-by-game/enrollment-report-by-game.component.html @@ -1,28 +1,44 @@
- +
- - + + - - - - - - - - - - - + + + + + + + + + + + +
Game Enrollment
GameRegistration OpenRegistration ClosedExecution StartExecution EndTotal PlayersTotal SponsorsTop Sponsor
+ Game + + Registration Open + + Registration Close + + Execution Start + + Execution End + + Total Players + + Total Sponsors + + Top Sponsor +
@@ -53,12 +69,13 @@

{{ record.sponsors.length }}

- + {{record.topSponsor.playerCount}} {{ "player" | pluralizer:record.topSponsor.playerCount }} diff --git a/projects/gameboard-ui/src/app/reports/components/reports/enrollment-report/enrollment-report-by-game/enrollment-report-by-game.component.ts b/projects/gameboard-ui/src/app/reports/components/reports/enrollment-report/enrollment-report-by-game/enrollment-report-by-game.component.ts index 457db1a8..1c2002d2 100644 --- a/projects/gameboard-ui/src/app/reports/components/reports/enrollment-report/enrollment-report-by-game/enrollment-report-by-game.component.ts +++ b/projects/gameboard-ui/src/app/reports/components/reports/enrollment-report/enrollment-report-by-game/enrollment-report-by-game.component.ts @@ -44,7 +44,7 @@ export class EnrollmentReportByGameComponent implements OnChanges { sponsors: sponsors, } }, - modalClasses: ["modal-xl"] + modalClasses: ["modal-lg"] }); } diff --git a/projects/gameboard-ui/src/app/reports/components/reports/enrollment-report/enrollment-report-sponsor-player-count-modal/enrollment-report-sponsor-player-count-modal.component.html b/projects/gameboard-ui/src/app/reports/components/reports/enrollment-report/enrollment-report-sponsor-player-count-modal/enrollment-report-sponsor-player-count-modal.component.html index 60f7df1d..a4c1f95f 100644 --- a/projects/gameboard-ui/src/app/reports/components/reports/enrollment-report/enrollment-report-sponsor-player-count-modal/enrollment-report-sponsor-player-count-modal.component.html +++ b/projects/gameboard-ui/src/app/reports/components/reports/enrollment-report/enrollment-report-sponsor-player-count-modal/enrollment-report-sponsor-player-count-modal.component.html @@ -11,9 +11,8 @@

Players per Sponsor

-