diff --git a/src/app/app-module.ts b/src/app/app-module.ts index bc24b0c..06cbe6a 100644 --- a/src/app/app-module.ts +++ b/src/app/app-module.ts @@ -9,6 +9,9 @@ import { App } from './app'; import { MatIconModule } from '@angular/material/icon'; import { MatTabsModule } from '@angular/material/tabs'; +import { MatToolbarModule } from '@angular/material/toolbar'; +import { MatProgressBarModule } from '@angular/material/progress-bar'; + import { HeaderComponent } from './header/header.component'; import { HomeComponent } from './home/home.component'; @@ -26,6 +29,7 @@ import { MovieScheduleInfoComponent } from './movie-schedule-info/movie-schedule import { MovieScheduleTimesComponent } from './movie-schedule-times/movie-schedule-times.component'; import { MovieCategoryComponent } from './movie-category/movie-category.component'; import { MovieScheduleEmptyComponent } from './movie-schedule-empty/movie-schedule-empty.component'; +import { Header2Component } from './header-2/header-2.component'; @NgModule({ @@ -45,7 +49,8 @@ import { MovieScheduleEmptyComponent } from './movie-schedule-empty/movie-schedu MovieRatingComponent, MovieDurationComponent, MovieCategoryComponent, - MovieScheduleEmptyComponent + MovieScheduleEmptyComponent, + Header2Component ], imports: [ AppRoutingModule, @@ -53,8 +58,10 @@ import { MovieScheduleEmptyComponent } from './movie-schedule-empty/movie-schedu CommonModule, FormsModule, MatIconModule, - MatTabsModule - ], + MatTabsModule, + MatToolbarModule, + MatProgressBarModule +], providers: [ provideBrowserGlobalErrorListeners(), provideHttpClient( diff --git a/src/app/header-2/header-2.component.css b/src/app/header-2/header-2.component.css new file mode 100644 index 0000000..262bf70 --- /dev/null +++ b/src/app/header-2/header-2.component.css @@ -0,0 +1,16 @@ +header { + width: 100%; +} + +.header { + display: flex; + align-items: center; + justify-content: space-between; + background-color: white; +} + +.redirect-img { + height: 2rem; + width: auto; + border-radius: 5px; +} diff --git a/src/app/header-2/header-2.component.html b/src/app/header-2/header-2.component.html new file mode 100644 index 0000000..6e0cf87 --- /dev/null +++ b/src/app/header-2/header-2.component.html @@ -0,0 +1,35 @@ +
+
+ + +

InfiniMotion

+
+ +
+

+ Absolut war gestern, Bewegung ist heute! +

+
+ + +
+ + @if (loading$ | async) { + + } @else { +
+ } +
diff --git a/src/app/header-2/header-2.component.ts b/src/app/header-2/header-2.component.ts new file mode 100644 index 0000000..35073fc --- /dev/null +++ b/src/app/header-2/header-2.component.ts @@ -0,0 +1,15 @@ +import { Component } from '@angular/core'; +import { LoadingService } from '../loading.service'; + +@Component({ + selector: 'app-header-2', + standalone: false, + templateUrl: './header-2.component.html', + styleUrl: './header-2.component.css' +}) +export class Header2Component { + loading$; + constructor(private loadingService: LoadingService) { + this.loading$ = this.loadingService.loading$; + } +} diff --git a/src/app/http.service.ts b/src/app/http.service.ts index bdc03ae..248d323 100644 --- a/src/app/http.service.ts +++ b/src/app/http.service.ts @@ -3,10 +3,12 @@ import { HttpClient } from "@angular/common/http"; import { inject, Injectable } from "@angular/core"; import { Observable } from "rxjs"; -@Injectable({providedIn: 'root'}) +@Injectable({ + providedIn: 'root' +}) export class HttpService { private http = inject(HttpClient); - private baseUrl = '/api/'; + private baseUrl = 'https://infinimotion.de/api/'; /* Kinosaal APIs */ diff --git a/src/app/layouts/main-layout/main-layout.component.html b/src/app/layouts/main-layout/main-layout.component.html index ba74d32..b147eb3 100644 --- a/src/app/layouts/main-layout/main-layout.component.html +++ b/src/app/layouts/main-layout/main-layout.component.html @@ -1,4 +1,4 @@ - +
diff --git a/src/app/loading.service.ts b/src/app/loading.service.ts new file mode 100644 index 0000000..e34d633 --- /dev/null +++ b/src/app/loading.service.ts @@ -0,0 +1,18 @@ +import { Injectable } from '@angular/core'; +import { BehaviorSubject } from 'rxjs'; + +@Injectable({ + providedIn: 'root' +}) +export class LoadingService { + private _loading = new BehaviorSubject(false); + readonly loading$ = this._loading.asObservable(); + + show() { + this._loading.next(true); + } + + hide() { + this._loading.next(false); + } +} diff --git a/src/app/schedule/schedule.component.ts b/src/app/schedule/schedule.component.ts index ec6b934..7e89034 100644 --- a/src/app/schedule/schedule.component.ts +++ b/src/app/schedule/schedule.component.ts @@ -3,6 +3,7 @@ import { HttpService } from '../http.service'; import { Vorstellung } from '@infinimotion/model-frontend'; import { Performance } from '../model/performance.model'; import { MovieGroup } from '../model/movie-group.model'; +import { LoadingService } from '../loading.service'; @Component({ selector: 'app-schedule', @@ -15,6 +16,7 @@ export class ScheduleComponent implements OnInit { performaces: Vorstellung[] = []; private http = inject(HttpService); + private loading = inject(LoadingService) constructor() { this.generateDates(); @@ -44,12 +46,14 @@ export class ScheduleComponent implements OnInit { } loadPerformances() { + this.loading.show(); this.http.getPerformaces().subscribe({ next: (data) => { this.performaces = Array.isArray(data) ? data : [data]; this.assignPerformancesToDates(); }, error: (err) => console.error('Fehler beim Laden der Performances', err), + complete: () => this.loading.hide() }); } diff --git a/src/assets/logo-gitea.png b/src/assets/logo-gitea.png new file mode 100644 index 0000000..9d7773a Binary files /dev/null and b/src/assets/logo-gitea.png differ diff --git a/src/assets/logo-github.png b/src/assets/logo-github.png new file mode 100644 index 0000000..6cb3b70 Binary files /dev/null and b/src/assets/logo-github.png differ diff --git a/src/assets/logo-quarkus.png b/src/assets/logo-quarkus.png new file mode 100644 index 0000000..5b30f89 Binary files /dev/null and b/src/assets/logo-quarkus.png differ diff --git a/src/assets/logo-redpanda.jpeg b/src/assets/logo-redpanda.jpeg new file mode 100644 index 0000000..466b22b Binary files /dev/null and b/src/assets/logo-redpanda.jpeg differ