From dbe05d8afde73dc5b825fee62b8442a3e0e0a56d Mon Sep 17 00:00:00 2001 From: alexkar598 <25136265+alexkar598@users.noreply.github.com> Date: Wed, 3 Jul 2024 13:04:45 -0400 Subject: [PATCH] Custom versions --- src/app/panels/byond/byond.component.html | 99 +++++++++++++++++------ src/app/panels/byond/byond.component.ts | 54 +++++++++++-- 2 files changed, 121 insertions(+), 32 deletions(-) diff --git a/src/app/panels/byond/byond.component.html b/src/app/panels/byond/byond.component.html index 387e856..c944f2a 100644 --- a/src/app/panels/byond/byond.component.html +++ b/src/app/panels/byond/byond.component.html @@ -1,3 +1,41 @@ +Downloaded versions + + +Latest versions @if (byondService.latestVersion | async; as latestVersions) {

Latest stable: {{ latestVersions.stable }} @@ -5,6 +43,8 @@ tuiButton size="xs" (click)="byondService.getVersion(latestVersions.stable)" + class="ml-2" + [disabled]="byondService.versions.has(latestVersions.stable)" > Fetch @@ -16,6 +56,8 @@ tuiButton size="xs" (click)="byondService.getVersion(latestVersions.beta)" + class="ml-2" + [disabled]="byondService.versions.has(latestVersions.beta)" > Fetch @@ -25,29 +67,36 @@ Loading latest version... } -

+ Major version + + + Minor version + + + + diff --git a/src/app/panels/byond/byond.component.ts b/src/app/panels/byond/byond.component.ts index 50d2720..325d1c7 100644 --- a/src/app/panels/byond/byond.component.ts +++ b/src/app/panels/byond/byond.component.ts @@ -1,27 +1,67 @@ -import { Component } from '@angular/core'; +import { Component, OnInit } from '@angular/core'; import { ByondService, VersionStatus } from '../../../vm/byond.service'; import { AsyncPipe } from '@angular/common'; -import { TuiButtonModule, TuiLoaderModule } from '@taiga-ui/core'; -import { TuiBadgeModule } from '@taiga-ui/kit'; +import { + TuiButtonModule, + TuiGroupModule, + TuiLoaderModule, + TuiTextfieldControllerModule, +} from '@taiga-ui/core'; +import { TuiBadgeModule, TuiInputNumberModule } from '@taiga-ui/kit'; +import { + FormControl, + NonNullableFormBuilder, + ReactiveFormsModule, +} from '@angular/forms'; @Component({ selector: 'app-panel-byond', standalone: true, - imports: [AsyncPipe, TuiLoaderModule, TuiButtonModule, TuiBadgeModule], + imports: [ + AsyncPipe, + TuiLoaderModule, + TuiButtonModule, + TuiBadgeModule, + TuiInputNumberModule, + ReactiveFormsModule, + TuiGroupModule, + TuiTextfieldControllerModule, + ], templateUrl: './byond.component.html', styleUrl: './byond.component.scss', }) -export default class ByondPanel { +export default class ByondPanel implements OnInit { // noinspection JSUnusedGlobalSymbols static title = 'BYOND versions'; - constructor(protected byondService: ByondService) {} + protected form; + + constructor( + protected byondService: ByondService, + formBuilder: NonNullableFormBuilder, + ) { + this.form = formBuilder.group({ + major: new FormControl(0), + minor: new FormControl(0), + }); + } + + ngOnInit(): void { + this.byondService.latestVersion.then(({ stable }) => { + const [major, minor] = stable.split('.').map((x) => parseInt(x)); + this.form.setControl('major', new FormControl(major)); + this.form.setControl('minor', new FormControl(minor)); + }); + } + + protected resolveVersion() { + return `${this.form.value.major}.${this.form.value.minor}`; + } protected statusToMessage: Record = { [VersionStatus.Fetching]: 'Downloading...', [VersionStatus.Fetched]: 'Downloaded', [VersionStatus.Loading]: 'Loading...', - [VersionStatus.Extracting]: 'Extracting...', [VersionStatus.Loaded]: 'Loaded', }; }