Moved to Angular v20 and Tailwind v4 plus all related dependencies

Renamed Docker directory.

Also serving static files from FastAPI.
This commit is contained in:
tanshu committed 2025-06-26 06:46:17 +00:00
1 parent 05b395af00
commit cb2b650375
253 files changed
+8626 -1995

No files matched your search

+19 -21
View File
@@ -1,27 +1,28 @@
import { Component, OnInit } from '@angular/core';
import { Component, inject, OnInit } from '@angular/core';
import { FormArray, FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';
import { MatButton, MatIconButton } from '@angular/material/button';
import { MatCard, MatCardContent, MatCardSubtitle } from '@angular/material/card';
import { MatCheckbox } from '@angular/material/checkbox';
import { MatDatepickerInput, MatDatepickerToggle, MatDatepicker } from '@angular/material/datepicker';
import { MatDatepicker, MatDatepickerInput, MatDatepickerToggle } from '@angular/material/datepicker';
import { MatDialog } from '@angular/material/dialog';
import { MatFormField, MatLabel, MatSuffix } from '@angular/material/form-field';
import { MatIcon } from '@angular/material/icon';
import { MatInput } from '@angular/material/input';
import { MatSnackBar } from '@angular/material/snack-bar';
import { MatSort } from '@angular/material/sort';
import {
MatTable,
MatColumnDef,
MatHeaderCellDef,
MatHeaderCell,
MatCellDef,
MatCell,
MatHeaderRowDef,
MatCellDef,
MatColumnDef,
MatHeaderCell,
MatHeaderCellDef,
MatHeaderRow,
MatRowDef,
MatHeaderRowDef,
MatRow,
MatRowDef,
MatTable,
} from '@angular/material/table';
import { MatTabGroup, MatTab } from '@angular/material/tabs';
import { MatTab, MatTabGroup } from '@angular/material/tabs';
import { ActivatedRoute, Router } from '@angular/router';
import moment from 'moment';
import { BehaviorSubject } from 'rxjs';
@@ -29,9 +30,7 @@ import { BehaviorSubject } from 'rxjs';
import { environment } from '../app.environment';
import { AuthService } from '../auth/auth.service';
import { AccountType } from '../core/account-type';
import { MatSnackBar } from '@angular/material/snack-bar';
import { ConfirmDialogComponent } from '../shared/confirm-dialog/confirm-dialog.component';
import { LockDataSource } from './lock-datasource';
import { LockInfo } from './lock-info';
import { SettingsService } from './settings.service';
@@ -40,7 +39,6 @@ import { SettingsService } from './settings.service';
selector: 'app-settings',
templateUrl: './settings.component.html',
styleUrls: ['./settings.component.css'],
standalone: true,
imports: [
MatTabGroup,
MatTab,
@@ -73,6 +71,13 @@ import { SettingsService } from './settings.service';
],
})
export class SettingsComponent implements OnInit {
private route = inject(ActivatedRoute);
private router = inject(Router);
private dialog = inject(MatDialog);
private snackBar = inject(MatSnackBar);
auth = inject(AuthService);
private ser = inject(SettingsService);
public lockObservable = new BehaviorSubject<LockInfo[]>([]);
dataSource: LockDataSource = new LockDataSource(this.lockObservable);
@@ -111,14 +116,7 @@ export class SettingsComponent implements OnInit {
version: string;
constructor(
private route: ActivatedRoute,
private router: Router,
private dialog: MatDialog,
private snackBar: MatSnackBar,
public auth: AuthService,
private ser: SettingsService,
) {
constructor() {
const startDate = moment().date(1);
const finishDate = moment().date(startDate.daysInMonth());
this.lockInfoForm = new FormGroup({
@@ -2,7 +2,6 @@ import { Routes } from '@angular/router';
import { accountTypeResolver } from '../account/account-type.resolver';
import { authGuard } from '../auth/auth-guard.service';
import { lockInformationResolver } from './lock-information.resolver';
import { maintenanceResolver } from './maintenance.resolver';
import { SettingsComponent } from './settings.component';
@@ -1,20 +1,17 @@
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { inject, Injectable } from '@angular/core';
import { Observable } from 'rxjs/internal/Observable';
import { catchError } from 'rxjs/operators';
import { ErrorLoggerService } from '../core/error-logger.service';
import { LockInfo } from './lock-info';
const serviceName = 'SettingsService';
@Injectable({ providedIn: 'root' })
export class SettingsService {
constructor(
private http: HttpClient,
private log: ErrorLoggerService,
) {}
private http = inject(HttpClient);
private log = inject(ErrorLoggerService);
getLockInformation(): Observable<[LockInfo]> {
const url = '/api/lock-information';
@@ -2,7 +2,6 @@ import { inject } from '@angular/core';
import { ResolveFn } from '@angular/router';
import { AccountType } from '../core/account-type';
import { VoucherTypeService } from './voucher-type.service';
export const voucherTypeResolver: ResolveFn<AccountType[]> = () => {
@@ -1,5 +1,5 @@
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { inject, Injectable } from '@angular/core';
import { Observable } from 'rxjs/internal/Observable';
import { catchError } from 'rxjs/operators';
@@ -13,10 +13,8 @@ const serviceName = 'VoucherTypeService';
providedIn: 'root',
})
export class VoucherTypeService {
constructor(
private http: HttpClient,
private log: ErrorLoggerService,
) {}
private http = inject(HttpClient);
private log = inject(ErrorLoggerService);
list(): Observable<AccountType[]> {
return this.http.get<AccountType[]>(url).pipe(catchError(this.log.handleError(serviceName, 'list'))) as Observable<