diff --git a/npm/ng-packs/packages/tenant-management/src/lib/actions/tenant-management.actions.ts b/npm/ng-packs/packages/tenant-management/src/lib/actions/tenant-management.actions.ts index c9c2af5c11..74034507e8 100644 --- a/npm/ng-packs/packages/tenant-management/src/lib/actions/tenant-management.actions.ts +++ b/npm/ng-packs/packages/tenant-management/src/lib/actions/tenant-management.actions.ts @@ -1,7 +1,9 @@ import { TenantManagement } from '../models/tenant-management'; +import { ABP } from '@abp/ng.core'; export class TenantManagementGet { static readonly type = '[TenantManagement] Get'; + constructor(public payload?: ABP.PageQueryParams) {} } export class TenantManagementGetById { diff --git a/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.html b/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.html index 6bf58659ef..e7632b7e9c 100644 --- a/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.html +++ b/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.html @@ -26,11 +26,20 @@ > - + {{ 'AbpTenantManagement::Actions' | abpLocalization }} @@ -112,7 +121,7 @@
- +
@@ -123,7 +132,13 @@
- + diff --git a/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.ts b/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.ts index a18667570c..b6fad6851c 100644 --- a/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.ts +++ b/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.ts @@ -1,13 +1,14 @@ import { ABP } from '@abp/ng.core'; import { ConfirmationService, Toaster } from '@abp/ng.theme.shared'; -import { Component, TemplateRef, ViewChild } from '@angular/core'; +import { Component, OnInit, TemplateRef, ViewChild } from '@angular/core'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { Select, Store } from '@ngxs/store'; -import { Observable } from 'rxjs'; -import { pluck, switchMap, take } from 'rxjs/operators'; +import { Observable, Subject } from 'rxjs'; +import { debounceTime, finalize, pluck, switchMap, take } from 'rxjs/operators'; import { TenantManagementAdd, TenantManagementDelete, + TenantManagementGet, TenantManagementGetById, TenantManagementUpdate, } from '../../actions/tenant-management.actions'; @@ -24,9 +25,12 @@ type SelectedModalContent = { selector: 'abp-tenants', templateUrl: './tenants.component.html', }) -export class TenantsComponent { +export class TenantsComponent implements OnInit { @Select(TenantManagementState.get) - datas$: Observable; + data$: Observable; + + @Select(TenantManagementState.getTenantsTotalCount) + totalCount$: Observable; selected: ABP.BasicItem; @@ -42,6 +46,14 @@ export class TenantsComponent { _useSharedDatabase: boolean; + pageQuery: ABP.PageQueryParams = { + sorting: 'name', + }; + + loading: boolean = false; + + search$ = new Subject(); + get useSharedDatabase(): boolean { return this.defaultConnectionStringForm.get('useSharedDatabase').value; } @@ -66,6 +78,13 @@ export class TenantsComponent { private store: Store, ) {} + ngOnInit() { + this.search$.pipe(debounceTime(300)).subscribe(value => { + this.pageQuery.filter = value; + this.get(); + }); + } + private createTenantForm() { this.tenantForm = this.fb.group({ name: [this.selected.name || '', [Validators.required, Validators.maxLength(256)]], @@ -178,4 +197,19 @@ export class TenantsComponent { } }); } + + onPageChange(data) { + this.pageQuery.skipCount = data.first; + this.pageQuery.maxResultCount = data.rows; + + this.get(); + } + + get() { + this.loading = true; + this.store + .dispatch(new TenantManagementGet(this.pageQuery)) + .pipe(finalize(() => (this.loading = false))) + .subscribe(); + } } diff --git a/npm/ng-packs/packages/tenant-management/src/lib/services/tenant-management.service.ts b/npm/ng-packs/packages/tenant-management/src/lib/services/tenant-management.service.ts index 99ec24e8e3..8639fba755 100644 --- a/npm/ng-packs/packages/tenant-management/src/lib/services/tenant-management.service.ts +++ b/npm/ng-packs/packages/tenant-management/src/lib/services/tenant-management.service.ts @@ -9,10 +9,11 @@ import { TenantManagement } from '../models/tenant-management'; export class TenantManagementService { constructor(private rest: RestService) {} - get(): Observable { + get(params = {} as ABP.PageQueryParams): Observable { const request: Rest.Request = { method: 'GET', url: '/api/multi-tenancy/tenants', + params, }; return this.rest.request(request); diff --git a/npm/ng-packs/packages/tenant-management/src/lib/states/tenant-management.state.ts b/npm/ng-packs/packages/tenant-management/src/lib/states/tenant-management.state.ts index d4bce9955e..cd108dd225 100644 --- a/npm/ng-packs/packages/tenant-management/src/lib/states/tenant-management.state.ts +++ b/npm/ng-packs/packages/tenant-management/src/lib/states/tenant-management.state.ts @@ -21,11 +21,16 @@ export class TenantManagementState { return result.items || []; } + @Selector() + static getTenantsTotalCount({ result }: TenantManagement.State): number { + return result.totalCount; + } + constructor(private tenantManagementService: TenantManagementService) {} @Action(TenantManagementGet) - get({ patchState }: StateContext) { - return this.tenantManagementService.get().pipe( + get({ patchState }: StateContext, { payload }: TenantManagementGet) { + return this.tenantManagementService.get(payload).pipe( tap(result => patchState({ result,