Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v3.24.0-beta0 #201

Merged
merged 40 commits into from
Nov 5, 2024
Merged
Show file tree
Hide file tree
Changes from 38 commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
7948b4d
Fix tracking of active prac challenge
sei-bstein Oct 8, 2024
ee7d0b4
Minor cleanup and improved console logging
sei-bstein Oct 8, 2024
8696a8e
Bug fixes and challenge report tags filter.
sei-bstein Oct 11, 2024
81b35fd
Merge branch 'main' into next
sei-bstein Oct 11, 2024
5df6804
Fix event horizon, game center teams, enrollment report stat summary,…
sei-bstein Oct 15, 2024
95f9d0e
Fix issue with past games not showing ongoing ones
sei-bstein Oct 15, 2024
fe312b4
WIP question sets
sei-bstein Oct 29, 2024
8900f02
Merge branch 'next' into feature/question-sets
sei-bstein Oct 29, 2024
9b656e7
More question set stuff
sei-bstein Oct 30, 2024
6c776e0
Improvements to OIDC experience and support for auto log in/out.
sei-bstein Oct 30, 2024
57be712
merge from next
sei-bstein Oct 31, 2024
1b2e5a7
Add favicon defaults. Update theme
sei-bstein Oct 31, 2024
f96dc59
Fix settings link bug, more thing
sei-bstein Oct 31, 2024
c3e3b69
Theme stuff
sei-bstein Oct 31, 2024
d640ee8
Add settings link to user menu
sei-bstein Oct 31, 2024
a26c715
Theme stuff
sei-bstein Oct 31, 2024
16aa081
Revert "Theme stuff"
sei-bstein Oct 31, 2024
4ee8b4c
Revert "Add settings link to user menu"
sei-bstein Oct 31, 2024
448fe5c
Revert "Theme stuff"
sei-bstein Oct 31, 2024
9c2f970
Revert "Fix settings link bug, more thing"
sei-bstein Oct 31, 2024
18e6656
Revert "Add favicon defaults. Update theme"
sei-bstein Oct 31, 2024
435e5bf
Rollback and reimplement oauth changes
sei-bstein Oct 31, 2024
9064801
Update oidc settings to match topo
sei-bstein Oct 31, 2024
725b0e7
Cleanup
sei-bstein Oct 31, 2024
c1f9cef
Update dev env settings
sei-bstein Nov 1, 2024
7463bbb
Improvements to OIDC experience and support for auto log in/out.
sei-bstein Oct 30, 2024
5e8e679
Restore ux improvements
sei-bstein Nov 1, 2024
d644d15
More retheme
sei-bstein Nov 1, 2024
6a9bc88
Merge branch 'next' into feature/question-sets
sei-bstein Nov 1, 2024
658f1c7
Retheming and initial work on name improvements.
sei-bstein Nov 4, 2024
2e5f56c
Update gh action versions
sei-bstein Nov 4, 2024
5807b7b
Retheming and name mgmt
sei-bstein Nov 4, 2024
85b79a5
Styling stuff
sei-bstein Nov 4, 2024
de36cd9
Styling stuff
sei-bstein Nov 4, 2024
c043987
Move challenge markdown
sei-bstein Nov 4, 2024
97491d2
Un 'fix' start practice button
sei-bstein Nov 4, 2024
fe8cead
minor name fixes
sei-bstein Nov 4, 2024
e6c8583
Name cleanup
sei-bstein Nov 4, 2024
686e982
Merge branch 'main' into next
sei-bstein Nov 5, 2024
781352d
Finish merge from main
sei-bstein Nov 5, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: CI
on:
pull_request:
release:
types: [ "published" ]
types: ["published"]
push:
branches:
- dev
Expand All @@ -15,32 +15,32 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v4

- name: Docker meta
id: docker_meta
uses: crazy-max/ghaction-docker-meta@v1
uses: docker/metadata-action@v5
with:
images: cmusei/gameboard-ui

- name: Set up QEMU
uses: docker/setup-qemu-action@v1
uses: docker/setup-qemu-action@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
uses: docker/setup-buildx-action@v3

- name: fetch wmks
run: curl https://box.cmusei.dev/wmks-jam-v1.tar -s -o wmks.tar

- name: Login to DockerHub
if: github.event_name != 'pull_request'
uses: docker/login-action@v1
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}

- name: Build and push
uses: docker/build-push-action@v2
uses: docker/build-push-action@v6
with:
context: .
file: ./Dockerfile
Expand Down
28 changes: 16 additions & 12 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
"ng2-charts": "^4.1.1",
"ngx-bootstrap": "^10.3.0",
"ngx-markdown": "^15.1.2",
"oidc-client-ts": "^2.2.2",
"oidc-client-ts": "^3.1.0",
"rxjs": "^7.8.0",
"toastify-js": "^1.12.0",
"tslib": "^2.1.0",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,6 @@ export class NoVNCConsoleService implements ConsoleService {
copy(): void { }

async paste(text: string): Promise<void> {
console.log(text);
this.client.clipboardPasteFrom(text);
}

Expand Down
20 changes: 12 additions & 8 deletions projects/gameboard-mks/src/styles.scss
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
$primary: #181866;
$primary-hover: #131398;
$danger: #A41E25;
$danger: #a41e25;
$success: #41ad57;
$light: #f8f9fa;
$gray-200: #333;
Expand All @@ -11,7 +11,8 @@ $bg-tools: #444;
body {
background-color: $dark;
color: $light;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica,
Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
font-size: 18px;
box-sizing: border-box;
-webkit-font-smoothing: antialiased;
Expand Down Expand Up @@ -75,9 +76,11 @@ button {
border: none;
cursor: default;
}

button:hover {
background-color: $primary-hover
background-color: $primary-hover;
}

.btn-lg {
margin: 8px;
padding: 32px;
Expand All @@ -96,7 +99,8 @@ button:hover {
}
}
app-spinner {
svg path, svg rect {
svg path,
svg rect {
fill: $primary;
}
}
Expand All @@ -109,12 +113,12 @@ app-spinner {
color: $light;
}
textarea {
background-color: $gray-200;
color: $gray-800;
background-color: $gray-200;
color: $gray-800;
}
textarea:focus {
background-color: $gray-200;
color: $gray-800;
background-color: $gray-200;
color: $gray-800;
}
input.form-check-input {
background-color: $gray-200;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ <h4 class="mt-4 px-3">Session Extension</h4>
<input id="duration-input" class="form-control" type="number" placeholder="Extension length (in minutes)"
[(ngModel)]="durationExtensionInMinutes">
<div class="input-group-append">
<button class="btn" [class.btn-info]="(durationExtensionInMinutes || 0) >= 0"
<button class="btn" [class.btn-success]="(durationExtensionInMinutes || 0) >= 0"
[class.btn-warning]="(durationExtensionInMinutes || 0) < 0" [disabled]="!durationExtensionInMinutes"
[ariaDisabled]="!durationExtensionInMinutes" (click)="extendByDuration(team, durationExtensionInMinutes)">
<span>{{ durationExtensionInMinutes && durationExtensionInMinutes < 0 ? "Shorten" : "Extend" }}</span>
Expand All @@ -55,7 +55,7 @@ <h4 class="mt-4 px-3">Session Extension</h4>
<div class="input-group">
<input id="date-input" class="form-control" type="text" [(ngModel)]="isoDateExtension">
<div class="input-group-append">
<button class="btn btn-info" (click)="extend(team)">
<button class="btn btn-success" (click)="extend(team)">
<span>Extend</span>
</button>
</div>
Expand All @@ -69,11 +69,11 @@ <h4 class="mb-2 px-3">Other tools</h4>
<app-announce [teamId]="team.teamId" placeholderText="Your message (sends only to this player/team)"></app-announce>

<div class="other-tools-buttons d-flex px-3">
<button class="btn btn-info btn-sm mr-2" (click)="toggleRawView(!showRaw)">
<button class="btn btn-success btn-sm mr-2" (click)="toggleRawView(!showRaw)">
<fa-icon [icon]="faInfo"></fa-icon>
<span>{{ (showRaw ? "Hide" : "View") }} Data</span>
</button>
<button type="button" class="btn btn-sm btn-info mr-2"
<button type="button" class="btn btn-sm btn-success mr-2"
(click)="onManageManualBonusesRequest.emit(team.teamId)">Manage Challenge Bonuses</button>
<app-confirm-button btnClass="btn btn-sm btn-danger" *ngIf="canUnenroll"
(confirm)="onUnenrollRequest.emit(team.teamId)">Unenroll</app-confirm-button>
Expand Down
19 changes: 16 additions & 3 deletions projects/gameboard-ui/src/app/admin/admin.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -73,17 +73,22 @@ import { PlayerSponsorReportComponent } from './player-sponsor-report/player-spo
import { PracticeSettingsComponent } from './practice/practice-settings/practice-settings.component';
import { PracticeComponent } from './practice/practice.component';
import { PrereqsComponent } from './prereqs/prereqs.component';
import { SafeUrlPipe } from '@/standalone/core/pipes/safe-url.pipe';
import { SpecBrowserComponent } from './spec-browser/spec-browser.component';
import { SponsorBrowserComponent } from './sponsor-browser/sponsor-browser.component';
import { SupportReportLegacyComponent } from './support-report-legacy/support-report-legacy.component';
import { TeamObserverComponent } from './team-observer/team-observer.component';
import { UserApiKeysComponent } from './user-api-keys/user-api-keys.component';
import { UserRegistrarComponent } from './user-registrar/user-registrar.component';
import { UserReportComponent } from './user-report/user-report.component';
import { GameInfoBubblesComponent } from "../standalone/components/game-info-bubbles/game-info-bubbles.component";
import { GameInfoBubblesComponent } from "../standalone/games/components/game-info-bubbles/game-info-bubbles.component";
import { ScoreboardComponent } from '@/scoreboard/components/scoreboard/scoreboard.component';
import { GameIdResolver } from './resolvers/game-id.resolver';
import { GameCenterSelectedTabResolver } from './resolvers/game-center-selected-tab-resolver';
import { ErrorDivComponent } from '@/standalone/core/components/error-div/error-div.component';
import { SpinnerComponent } from '@/standalone/core/components/spinner/spinner.component';
import { ToSupportCodePipe } from '@/standalone/core/pipes/to-support-code.pipe';
import { IfHasPermissionDirective } from '@/standalone/directives/if-has-permission.directive';

@NgModule({
declarations: [
Expand Down Expand Up @@ -151,7 +156,7 @@ import { GameCenterSelectedTabResolver } from './resolvers/game-center-selected-
TeamListCardComponent,
GameCenterTeamDetailComponent,
TeamCenterComponent,
GameMapEditorComponent,
GameMapEditorComponent
],
imports: [
CommonModule,
Expand Down Expand Up @@ -217,7 +222,15 @@ import { GameCenterSelectedTabResolver } from './resolvers/game-center-selected-
ScoreboardModule,
SponsorsModule,
SystemNotificationsModule,
GameInfoBubblesComponent

// standalones
ErrorDivComponent,
GameInfoBubblesComponent,
IfHasPermissionDirective,
SafeUrlPipe,
SpinnerComponent,
ToSupportCodePipe,
]
})

export class AdminModule { }
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ <h4>Challenges</h4>
<app-error-div [errors]="errors"></app-error-div>

<div class="text-right">
<button class="btn btn-info" (click)="regrade(selected)">
<button class="btn btn-success" (click)="regrade(selected)">
<fa-icon [icon]="faSync"></fa-icon>
<span>Regrade</span>
</button>
Expand Down Expand Up @@ -93,7 +93,7 @@ <h4 class="mt-4">Challenge</h4>

<ng-template #gameEngineAuditNotLoaded>
<div *ngIf="selected && !selected.archived && !isLoadingAuditFromGameEngine"
class="btn btn-link text-info cursor-pointer py-0 px-0" (click)="auditFromGameEngine(selected.id)">
class="btn btn-link text-success cursor-pointer py-0 px-0" (click)="auditFromGameEngine(selected.id)">
Audit from game engine?
</div>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ export class ChallengeBrowserComponent {
this.isLoadingSubmissions = true;

try {
const submissions = await firstValueFrom(this.challengesService.getSubmissions(c.id));
const submissions = await firstValueFrom(this.challengesService.getSubmissionsLegacy(c.id));
this.selectedAudit = submissions.submittedAnswers.map(s => {
return { submittedOn: s.submittedOn, answers: s.answers.map(a => a || "(no response)") };
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ <h4 class="col-2 text-right">Consoles</h4>
</div> <!-- end users list header -->
<div class="iframe-wrapper mt-auto" style="padding: 0px;">
<iframe class="rounded-bottom w-100 h-100" frameborder="0"
[src]="(mksHost+'?f=0&o=1&s='+vm.challengeId+'&v='+vm.name+'&teamName='+row.value.playerName+'&challengeName='+row.value.name) | safeurl">
[src]="(mksHost+'?f=0&o=1&s='+vm.challengeId+'&v='+vm.name+'&teamName='+row.value.playerName+'&challengeName='+row.value.name) | safeUrl">
</iframe>
</div> <!-- end iframe wrapper -->
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ <h4 class="game-link">
<h5 class="overflow-ellipsis">
{{ challenge.team.name }}
</h5>
<button type="button" class="btn btn-link text-info" appCopyOnClick
<button type="button" class="btn btn-link text-success" appCopyOnClick
tooltip="Copy this support code" placement="bottom">
{{ {id: challenge.id, tag: spec.tag } | toSupportCode }}
</button>
Expand All @@ -48,8 +48,9 @@ <h5 class="overflow-ellipsis">
</div>
<div class="end-time">
<span class="fw-bold">Session End: </span>
<span>{{ challenge.team.session.end | datetimeToDate | friendlyDateAndTime
}}</span>
<span>
{{ challenge.team.session.end | datetimeToDate | friendlyDateAndTime }}
</span>
</div>
</div>
</div>
Expand All @@ -64,32 +65,32 @@ <h5 class="overflow-ellipsis">
</div>

<button type="button" tooltip="Copy this challenge's ID" placement="bottom"
class="btn btn-info mr-2" [appCopyOnClick]="challenge.id">
class="btn btn-success mr-2" [appCopyOnClick]="challenge.id">
<fa-icon [icon]="fa.copy"></fa-icon>
</button>

<a [href]="'admin/support?search=' + challenge.id | relativeToAbsoluteHref"
target="_blank" class="btn btn-info mr-2" tooltip="View this challenge's state"
target="_blank" class="btn btn-success mr-2" tooltip="View this challenge's state"
placement="bottom">
<fa-icon [icon]="fa.barsStaggered" size="lg"></fa-icon>
</a>

<a [href]="'admin/registrar/' + spec.game.id + '?term=' + challenge.team.id | relativeToAbsoluteHref"
target="_blank" class="btn btn-info mr-2"
target="_blank" class="btn btn-success mr-2"
[tooltip]="'View this ' + (spec.game.isTeamGame ? 'team' : 'player') + '\'s session'"
placement="bottom">
<fa-icon [icon]="spec.game.isTeamGame ? fa.peopleGroup : fa.person"
size="lg"></fa-icon>
</a>

<a [href]="'admin/observer/challenges/' + spec.game.id + '?search=' + challenge.id | relativeToAbsoluteHref"
target="_blank" class="btn btn-info mr-2" tooltip="Observe this challenge"
target="_blank" class="btn btn-success mr-2" tooltip="Observe this challenge"
placement="bottom">
<fa-icon [icon]="fa.eye" size="lg"></fa-icon>
</a>

<a [href]="'game/' + spec.game.id | relativeToAbsoluteHref" target="_blank"
class="btn btn-info" tooltip="View this game" placement="bottom">
class="btn btn-success" tooltip="View this game" placement="bottom">
<fa-icon [icon]="fa.chessBoard" size="lg"></fa-icon>
</a>
</div>
Expand All @@ -101,16 +102,16 @@ <h5 class="overflow-ellipsis">
</div>

<div class="modal-footer">
<button type="button" class="btn btn-info" (click)="close()">OK</button>
<button type="button" class="btn btn-success" (click)="close()">OK</button>
</div>
</div>

<ng-template #noChallenges>
<div class="text-center gray-text fs-11">There aren't any active challenges of this type right now.</div>
<div class="text-center text-muted fs-11">There aren't any active challenges of this type right now.</div>
</ng-template>

<ng-template #noMatchingChallenges>
<div class="text-center gray-text fs-11">None of the active challenges match your search.</div>
<div class="text-center text-muted fs-11">None of the active challenges match your search.</div>
</ng-template>

<ng-template #loading>
Expand Down
Loading
Loading