From fe30561a409a661138ab3a1deba19290fbfe9ff4 Mon Sep 17 00:00:00 2001 From: Schneider Roland Date: Tue, 16 Dec 2025 08:07:05 +0100 Subject: [PATCH] list booking --- .../lib/components/pagination/pagination.css | 0 .../lib/components/pagination/pagination.html | 14 +++++ .../components/pagination/pagination.spec.ts | 23 ++++++++ .../lib/components/pagination/pagination.ts | 23 ++++++++ .../rschneider/ng-daisyui/src/public-api.ts | 1 + .../app/components/list-view/list-view.css | 0 .../app/components/list-view/list-view.html | 1 + .../src/app/components/list-view/list-view.ts | 11 ++++ .../single-event-booking-list.html | 8 ++- .../single-event-booking-list.ts | 52 ++++++++++++++++++- 10 files changed, 130 insertions(+), 3 deletions(-) create mode 100644 admin/projects/rschneider/ng-daisyui/src/lib/components/pagination/pagination.css create mode 100644 admin/projects/rschneider/ng-daisyui/src/lib/components/pagination/pagination.html create mode 100644 admin/projects/rschneider/ng-daisyui/src/lib/components/pagination/pagination.spec.ts create mode 100644 admin/projects/rschneider/ng-daisyui/src/lib/components/pagination/pagination.ts create mode 100644 admin/src/app/components/list-view/list-view.css create mode 100644 admin/src/app/components/list-view/list-view.html create mode 100644 admin/src/app/components/list-view/list-view.ts diff --git a/admin/projects/rschneider/ng-daisyui/src/lib/components/pagination/pagination.css b/admin/projects/rschneider/ng-daisyui/src/lib/components/pagination/pagination.css new file mode 100644 index 0000000..e69de29 diff --git a/admin/projects/rschneider/ng-daisyui/src/lib/components/pagination/pagination.html b/admin/projects/rschneider/ng-daisyui/src/lib/components/pagination/pagination.html new file mode 100644 index 0000000..6b41211 --- /dev/null +++ b/admin/projects/rschneider/ng-daisyui/src/lib/components/pagination/pagination.html @@ -0,0 +1,14 @@ +
+ @if (pageCount() > 1) { + + } + @for (page of pages(); track page){ + + } + @if (pageCount() > 1) { + + } +
diff --git a/admin/projects/rschneider/ng-daisyui/src/lib/components/pagination/pagination.spec.ts b/admin/projects/rschneider/ng-daisyui/src/lib/components/pagination/pagination.spec.ts new file mode 100644 index 0000000..bd8da17 --- /dev/null +++ b/admin/projects/rschneider/ng-daisyui/src/lib/components/pagination/pagination.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { Pagination } from './pagination'; + +describe('Pagination', () => { + let component: Pagination; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [Pagination] + }) + .compileComponents(); + + fixture = TestBed.createComponent(Pagination); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/admin/projects/rschneider/ng-daisyui/src/lib/components/pagination/pagination.ts b/admin/projects/rschneider/ng-daisyui/src/lib/components/pagination/pagination.ts new file mode 100644 index 0000000..40e6d06 --- /dev/null +++ b/admin/projects/rschneider/ng-daisyui/src/lib/components/pagination/pagination.ts @@ -0,0 +1,23 @@ +import { Component, computed, input, output } from '@angular/core'; + +@Component({ + selector: 'rs-daisy-pagination', + imports: [], + templateUrl: './pagination.html', + styleUrl: './pagination.css', +}) +export class Pagination { + pageCount = input(0); + activePage = input(0); + pages = computed( () => { + console.info("pag.pagecount", this.pageCount()) + return [...Array(this.pageCount() ?? 1)].map((_,i) => i+1) + }) + + onPaginate = output(); + + + paginate(page: number){ + this.onPaginate.emit(page); + } +} diff --git a/admin/projects/rschneider/ng-daisyui/src/public-api.ts b/admin/projects/rschneider/ng-daisyui/src/public-api.ts index 29d030d..37edc75 100644 --- a/admin/projects/rschneider/ng-daisyui/src/public-api.ts +++ b/admin/projects/rschneider/ng-daisyui/src/public-api.ts @@ -7,6 +7,7 @@ export * from './lib/components/button/button'; export * from './lib/components/footer/footer'; export * from './lib/components/breadcrumbs/breadcrumbs'; export * from './lib/components/modal/modal'; +export * from './lib/components/pagination/pagination'; export * from './lib/components/card/card-with-centered-content-and-paddings/card-with-centered-content-and-paddings'; export * from './lib/daisy.types'; export * from './lib/layout/'; diff --git a/admin/src/app/components/list-view/list-view.css b/admin/src/app/components/list-view/list-view.css new file mode 100644 index 0000000..e69de29 diff --git a/admin/src/app/components/list-view/list-view.html b/admin/src/app/components/list-view/list-view.html new file mode 100644 index 0000000..d693cfb --- /dev/null +++ b/admin/src/app/components/list-view/list-view.html @@ -0,0 +1 @@ +

list-view works!

diff --git a/admin/src/app/components/list-view/list-view.ts b/admin/src/app/components/list-view/list-view.ts new file mode 100644 index 0000000..0da74f6 --- /dev/null +++ b/admin/src/app/components/list-view/list-view.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-list-view', + imports: [], + templateUrl: './list-view.html', + styleUrl: './list-view.css', +}) +export class ListView { + +} diff --git a/admin/src/app/features/calendar/components/calendar-view/single-event-booking-list/single-event-booking-list.html b/admin/src/app/features/calendar/components/calendar-view/single-event-booking-list/single-event-booking-list.html index fcf71eb..69e4b09 100644 --- a/admin/src/app/features/calendar/components/calendar-view/single-event-booking-list/single-event-booking-list.html +++ b/admin/src/app/features/calendar/components/calendar-view/single-event-booking-list/single-event-booking-list.html @@ -1 +1,7 @@ -

single-event-booking-list works!

+

Foglalások

+@for ( booking of bookings.value();track booking){ +
+ {{booking}} +
+} + diff --git a/admin/src/app/features/calendar/components/calendar-view/single-event-booking-list/single-event-booking-list.ts b/admin/src/app/features/calendar/components/calendar-view/single-event-booking-list/single-event-booking-list.ts index ace9357..94992c4 100644 --- a/admin/src/app/features/calendar/components/calendar-view/single-event-booking-list/single-event-booking-list.ts +++ b/admin/src/app/features/calendar/components/calendar-view/single-event-booking-list/single-event-booking-list.ts @@ -1,14 +1,62 @@ -import { Component, inject, input } from '@angular/core'; +import { Component, computed, inject, input, signal } from '@angular/core'; import { EventBusService } from '../../../../../services/event-bus.service'; import { CalendarEventDto } from '../../../models/events-in-range-dto.model'; +import { CalendarService } from '../../../../../../api'; +import { rxResource } from '@angular/core/rxjs-interop'; +import { of } from 'rxjs'; +import { Pagination } from '@rschneider/ng-daisyui'; @Component({ selector: 'app-single-event-booking-list', - imports: [], + imports: [ + Pagination, + ], templateUrl: './single-event-booking-list.html', styleUrl: './single-event-booking-list.css', }) export class SingleEventBookingList { + + calendarService = inject(CalendarService); eventBus = inject(EventBusService); event = input(); + + activePage = signal(1); + // bookings = toSignal(of(['a','b'])); + pageSize = input(10); + pageCount = computed(() => { + const bookings = this.bookings.value() ?? []; + let pageCount = Math.floor( bookings.length / this.pageSize()); + if ( (bookings.length % this.pageSize()) > 0){ + pageCount += 1; + } + pageCount = Math.max(pageCount ,1); + console.info("pageCount", pageCount); + return pageCount; + }) + + bookings = rxResource( + { + params: () => { + page: this.activePage() + }, + stream: ({params}) => { + console.info("loading resource", params); + + const allData = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t"] + const pageData = allData.slice(this.activePage()-1,this.activePage()+this.pageSize()) + console.info("booking page data",pageData); + return of(pageData) + }, + + } + ) + + + protected paginate($event: number) { + console.info("paginated to ", $event) + this.activePage.set($event); + } + + } +