feat(giving): keyboard-first Sunday offering batch entry page + routes
- Add MemberQuickAddDialogComponent for fast in-session member creation - Add OfferingSessionPageComponent: client-side buffer, reconcile totals, date-conflict check, submit to API - Wire finance/giving-categories, finance/givings, finance/offering-session routes (RoleGuard: finance + super_admin) - Fix givings-page: replace [total] + data[] with GridDataResult for Kendo v20 server-side paging Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -12,9 +12,9 @@
|
||||
<button kendoButton (click)="onSearch()">Search</button>
|
||||
</div>
|
||||
|
||||
<kendo-grid [data]="data" [loading]="isLoading"
|
||||
<kendo-grid [data]="gridData" [loading]="isLoading"
|
||||
[pageable]="true" [skip]="(page-1)*pageSize" [pageSize]="pageSize"
|
||||
[total]="totalCount" (pageChange)="onPageChange($event)">
|
||||
(pageChange)="onPageChange($event)">
|
||||
<kendo-grid-column field="givingDate" title="Date" [width]="110"></kendo-grid-column>
|
||||
<kendo-grid-column title="Giver">
|
||||
<ng-template kendoGridCellTemplate let-g>{{ g.isAnonymous ? '(Anonymous)' : g.memberName }}</ng-template>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { Component, OnInit } from '@angular/core';
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { FormsModule } from '@angular/forms';
|
||||
import { GridModule, PageChangeEvent } from '@progress/kendo-angular-grid';
|
||||
import { GridModule, GridDataResult, PageChangeEvent } from '@progress/kendo-angular-grid';
|
||||
import { InputsModule } from '@progress/kendo-angular-inputs';
|
||||
import { ButtonsModule } from '@progress/kendo-angular-buttons';
|
||||
import { DropDownsModule } from '@progress/kendo-angular-dropdowns';
|
||||
@@ -32,8 +32,7 @@ interface MemberOption {
|
||||
styleUrls: ['./givings-page.component.scss'],
|
||||
})
|
||||
export class GivingsPageComponent implements OnInit {
|
||||
data: GivingListItemDto[] = [];
|
||||
totalCount = 0;
|
||||
gridData: GridDataResult = { data: [], total: 0 };
|
||||
page = 1;
|
||||
pageSize = 20;
|
||||
isLoading = false;
|
||||
@@ -73,7 +72,7 @@ export class GivingsPageComponent implements OnInit {
|
||||
categoryId: this.filterCategoryId ?? undefined,
|
||||
}).subscribe({
|
||||
next: (r: PagedResult<GivingListItemDto>) => {
|
||||
this.data = r.items; this.totalCount = r.totalCount; this.isLoading = false;
|
||||
this.gridData = { data: r.items, total: r.totalCount }; this.isLoading = false;
|
||||
},
|
||||
error: () => { this.isLoading = false; },
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user