feat: add refresh functionality to various components
- Implemented refresh event emission in multiple list components across partner and superAdmin modules. - Updated consumers and customers list components to handle refresh actions. - Enhanced dashboard component to fetch partner info on initialization. - Introduced new API method in PartnerService to retrieve current partner data. - Modified PartnerStore to utilize the new API method for fetching partner information. - Updated UI elements to reflect changes in partner and license management, including new fields for license renewals. - Added a new POS display component for better presentation of POS terminal information. - Updated layout service and top bar to reflect new titles and improve user experience. - Refactored existing components to ensure consistency and maintainability.
This commit is contained in:
@@ -10,6 +10,7 @@
|
||||
[showDetails]="true"
|
||||
[showAdd]="true"
|
||||
(onAdd)="openAddForm()"
|
||||
(onRefresh)="refresh()"
|
||||
>
|
||||
</app-page-data-list>
|
||||
<superAdmin-consumer-account-form
|
||||
|
||||
+1
@@ -13,6 +13,7 @@
|
||||
(onAdd)="openAddForm()"
|
||||
(onEdit)="onEditClick($event)"
|
||||
(onDetails)="toSinglePage($event)"
|
||||
(onRefresh)="refresh()"
|
||||
>
|
||||
</app-page-data-list>
|
||||
<superAdmin-consumer-businessActivities-form
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
(onAdd)="openAddForm()"
|
||||
(onEdit)="onEditClick($event)"
|
||||
(onDetails)="toSinglePage($event)"
|
||||
(onRefresh)="refresh()"
|
||||
>
|
||||
</app-page-data-list>
|
||||
<superAdmin-consumer-complex-form
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
(onAdd)="openAddForm()"
|
||||
(onEdit)="onEditClick($event)"
|
||||
(onDetails)="toSinglePage($event)"
|
||||
(onRefresh)="refresh()"
|
||||
>
|
||||
</app-page-data-list>
|
||||
<superAdmin-consumer-pos-form
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
(onAdd)="openAddForm()"
|
||||
(onDetails)="toSinglePage($event)"
|
||||
(onEdit)="onEditClick($event)"
|
||||
(onRefresh)="refresh()"
|
||||
/>
|
||||
<superAdmin-consumer-form
|
||||
[(visible)]="visibleForm"
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
[showEdit]="true"
|
||||
(onAdd)="openAddForm()"
|
||||
(onEdit)="onEditClick($event)"
|
||||
(onRefresh)="refresh()"
|
||||
/>
|
||||
<deviceBrand-form
|
||||
[(visible)]="visibleForm"
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
[showEdit]="true"
|
||||
(onAdd)="openAddForm()"
|
||||
(onEdit)="onEditClick($event)"
|
||||
(onRefresh)="refresh()"
|
||||
/>
|
||||
<superAdmin-device-form
|
||||
[(visible)]="visibleForm"
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
[fullHeight]="fullHeight"
|
||||
(onEdit)="onEditClick($event)"
|
||||
(onAdd)="openAddForm()"
|
||||
(onRefresh)="refresh()"
|
||||
/>
|
||||
|
||||
<admin-guild-good-categories-form
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
[fullHeight]="fullHeight"
|
||||
(onEdit)="onEditClick($event)"
|
||||
(onAdd)="openAddForm()"
|
||||
(onRefresh)="refresh()"
|
||||
/>
|
||||
<admin-guild-good-form
|
||||
[guildId]="guildId"
|
||||
|
||||
@@ -11,5 +11,6 @@
|
||||
[showAdd]="true"
|
||||
(onAdd)="openAddForm()"
|
||||
(onDetails)="toSinglePage($event)"
|
||||
(onRefresh)="refresh()"
|
||||
/>
|
||||
<admin-guild-form [(visible)]="visibleForm" (onSubmit)="refresh()" />
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
emptyPlaceholderTitle="لایسنسی یافت نشد"
|
||||
[items]="items()"
|
||||
[loading]="loading()"
|
||||
(onRefresh)="refresh()"
|
||||
>
|
||||
<!-- <ng-template #role let-data>
|
||||
<catalog-role-tag [role]="data.role" />
|
||||
|
||||
@@ -2,14 +2,12 @@
|
||||
pageTitle="مدیریت حسابهای کاربری"
|
||||
[addNewCtaLabel]="'افزودن حساب کاربری جدید'"
|
||||
[columns]="columns"
|
||||
[showAdd]="true"
|
||||
emptyPlaceholderTitle="حساب کاربریای یافت نشد."
|
||||
emptyPlaceholderDescription="برای افزودن حساب کاربری جدید، روی دکمهٔ بالا کلیک کنید."
|
||||
[items]="items()"
|
||||
[loading]="loading()"
|
||||
[showDetails]="true"
|
||||
[showAdd]="true"
|
||||
(onAdd)="openAddForm()"
|
||||
(onRefresh)="refresh()"
|
||||
>
|
||||
</app-page-data-list>
|
||||
<superAdmin-partner-account-form
|
||||
|
||||
+1
@@ -4,5 +4,6 @@
|
||||
emptyPlaceholderTitle="تا به حال شارژ کاربری انجام نشده است"
|
||||
[items]="items()"
|
||||
[loading]="loading()"
|
||||
(onRefresh)="refresh()"
|
||||
>
|
||||
</app-page-data-list>
|
||||
|
||||
+1
@@ -4,6 +4,7 @@
|
||||
emptyPlaceholderTitle="تا به حال شارژ لایسنسی انجام نشده است"
|
||||
[items]="items()"
|
||||
[loading]="loading()"
|
||||
(onRefresh)="refresh()"
|
||||
>
|
||||
<!-- <ng-template #role let-data>
|
||||
<catalog-role-tag [role]="data.role" />
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
<app-page-data-list
|
||||
pageTitle="لیست لایسنسهای فروخته شده"
|
||||
[columns]="columns"
|
||||
emptyPlaceholderTitle="تا به حال توسط این شریک تجاری لایسنسی فروخته نشده است"
|
||||
emptyPlaceholderTitle="تا به حال لایسنسی فروخته نشده است"
|
||||
[items]="items()"
|
||||
[loading]="loading()"
|
||||
(onRefresh)="refresh()"
|
||||
>
|
||||
<!-- <ng-template #role let-data>
|
||||
<catalog-role-tag [role]="data.role" />
|
||||
|
||||
@@ -2,13 +2,14 @@
|
||||
import { AbstractList } from '@/shared/abstractClasses/abstract-list';
|
||||
import { PageDataListComponent } from '@/shared/components/pageDataList/page-data-list.component';
|
||||
import { Component, inject, Input } from '@angular/core';
|
||||
import { ButtonDirective } from 'primeng/button';
|
||||
import { IPartnerActivatedLicenseResponse } from '../../models';
|
||||
import { AdminPartnerActivatedLicensesService } from '../../services/licenses.service';
|
||||
|
||||
@Component({
|
||||
selector: 'admin-partner-licenses',
|
||||
templateUrl: './list.component.html',
|
||||
imports: [PageDataListComponent],
|
||||
imports: [PageDataListComponent, ButtonDirective],
|
||||
})
|
||||
export class AdminPartnerLicensesComponent extends AbstractList<IPartnerActivatedLicenseResponse> {
|
||||
@Input({ required: true }) partnerId!: string;
|
||||
@@ -25,6 +26,12 @@ export class AdminPartnerLicensesComponent extends AbstractList<IPartnerActivate
|
||||
return `${item.business_activity.consumer.first_name} ${item.business_activity.consumer.last_name} (${item.business_activity.name})`;
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'license',
|
||||
header: 'تعداد کاربر قابل تعریف',
|
||||
type: 'nested',
|
||||
nestedOption: { path: 'license.accounts_limit' },
|
||||
},
|
||||
{ field: 'expires_at', header: 'تاریخ انقضا', type: 'date' },
|
||||
];
|
||||
}
|
||||
|
||||
@@ -14,6 +14,11 @@ export interface IPartnerRawResponse {
|
||||
used: number;
|
||||
expired: number;
|
||||
};
|
||||
license_renew_status: {
|
||||
total: number;
|
||||
used: number;
|
||||
expired: number;
|
||||
};
|
||||
}
|
||||
export interface IPartnerResponse extends IPartnerRawResponse {}
|
||||
|
||||
|
||||
@@ -13,15 +13,24 @@
|
||||
(onAdd)="openAddForm()"
|
||||
(onDetails)="toSinglePage($event)"
|
||||
(onEdit)="onEditClick($event)"
|
||||
(onRefresh)="refresh()"
|
||||
>
|
||||
<ng-template #licensesStatus let-item>
|
||||
<span class="font-bold">
|
||||
{{ item.licenses_status.total }}
|
||||
@if (item.licenses_status.used) {
|
||||
<small class="small text-muted-color font-normal"> ({{ item.licenses_status.used }} عدد استفاده شده) </small>
|
||||
} @else {
|
||||
<small class="small text-muted-color font-normal"> (تمامی لایسنسها فعال میباشند) </small>
|
||||
}
|
||||
<small class="small text-muted-color font-normal"> ({{ item.licenses_status.used }} عدد استفاده شده) </small>
|
||||
</span>
|
||||
</ng-template>
|
||||
<ng-template #accountQuotaStatus let-item>
|
||||
<span class="font-bold">
|
||||
{{ item.account_quota_status.total }}
|
||||
<small class="small text-muted-color font-normal"> ({{ item.account_quota_status.used }} عدد استفاده شده) </small>
|
||||
</span>
|
||||
</ng-template>
|
||||
<ng-template #licensesRenewStatus let-item>
|
||||
<span class="font-bold">
|
||||
{{ item.license_renew_status.total }}
|
||||
<small class="small text-muted-color font-normal"> ({{ item.license_renew_status.used }} عدد استفاده شده) </small>
|
||||
</span>
|
||||
</ng-template>
|
||||
</app-page-data-list>
|
||||
|
||||
@@ -18,18 +18,25 @@ export class PartnersComponent extends AbstractList<IPartnerResponse> {
|
||||
private readonly router = inject(Router);
|
||||
|
||||
@ViewChild('licensesStatus', { static: true }) licensesStatus!: TemplateRef<any>;
|
||||
@ViewChild('accountQuotaStatus', { static: true }) accountQuotaStatus!: TemplateRef<any>;
|
||||
@ViewChild('licensesRenewStatus', { static: true }) licensesRenewStatus!: TemplateRef<any>;
|
||||
|
||||
override setColumns(): void {
|
||||
this.columns = [
|
||||
{ field: 'name', header: 'نام' },
|
||||
{ field: 'code', header: 'کد' },
|
||||
{ field: 'licenses', header: 'وضعیت لایسنسها', customDataModel: this.licensesStatus },
|
||||
{ field: 'status', header: 'وضعیت' },
|
||||
{ field: 'licenses', header: 'تعداد لایسنسها', customDataModel: this.licensesStatus },
|
||||
{
|
||||
field: 'created_at',
|
||||
header: 'تاریخ ایجاد',
|
||||
type: 'date',
|
||||
field: 'account_quota',
|
||||
header: 'تعداد کاربرهای خریداری شده',
|
||||
customDataModel: this.accountQuotaStatus,
|
||||
},
|
||||
{
|
||||
field: 'license_renew',
|
||||
header: 'تعداد لایسنسهای تمدیدی',
|
||||
customDataModel: this.licensesRenewStatus,
|
||||
},
|
||||
{ field: 'status', header: 'وضعیت' },
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -32,6 +32,18 @@
|
||||
(partner()?.account_quota_status?.expired || 0)
|
||||
"
|
||||
/>
|
||||
<p-divider align="center" class="col-span-3">اطلاعات تمدید لایسنسها</p-divider>
|
||||
<app-key-value label="تعداد کاربران خریداری شده" [value]="partner()?.license_renew_status?.total" />
|
||||
<app-key-value label="تعداد کاربران منقضی شده" [value]="partner()?.license_renew_status?.expired" />
|
||||
<app-key-value label="تعداد کاربران فروخته شده" [value]="partner()?.license_renew_status?.used" />
|
||||
<app-key-value
|
||||
label="تعداد کاربران باقیمانده"
|
||||
[value]="
|
||||
(partner()?.license_renew_status?.total || 0) -
|
||||
(partner()?.license_renew_status?.used || 0) -
|
||||
(partner()?.license_renew_status?.expired || 0)
|
||||
"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</app-card-data>
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
[showDetails]="true"
|
||||
[showAdd]="true"
|
||||
(onAdd)="openAddForm()"
|
||||
(onRefresh)="refresh()"
|
||||
/>
|
||||
<provider-form
|
||||
[(visible)]="visibleForm"
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
[showDetails]="true"
|
||||
[showAdd]="true"
|
||||
(onAdd)="openAddForm()"
|
||||
(onRefresh)="refresh()"
|
||||
>
|
||||
</app-page-data-list>
|
||||
<superAdmin-user-account-form
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
(onAdd)="openAddForm()"
|
||||
(onEdit)="onEditClick($event)"
|
||||
(onDetails)="toSinglePage($event)"
|
||||
(onRefresh)="refresh()"
|
||||
/>
|
||||
<superAdmin-user-form
|
||||
[(visible)]="visibleForm"
|
||||
|
||||
Reference in New Issue
Block a user