Replaced checked in package-lock.json by regenerated one. Ran ng update @angular/core@20 @angular/cli@20 Ran npm install @angular-builders/jest@^20.0.0 @fortawesome/angular-fontawesome@^3.0.0 @swimlane/ngx-graph@^11 Ran npm install ngx-mat-select-search@^8.0.2. Ran ng update @angular/material@20. Updated all eslint and typescript to the latest versions. Removed @angular-devkit/schematics. Updated fontawesome. Updated rxjs and tslib. Moved required node version from 16 to 20. Updated jest-preset-angular. Set preserveWhitespaces to false. Corrected two type declarations in two typescript files to make ng serve run without errors. Removed unused angular-devkit/schematics from view-user.component.ts . Updated list of supported browsers. Upgraded prettier. Ran prettier . --write the first time. Ran prettier . --write the second time. Ran ng generate @angular/core:inject with defaults, excepted a handful of files. Fixed remaining eslint problems. Added dist directory to ignores in eslint.config.js. Let prettier fix formatting, almost everything is just line breaks. Made htmlhint ignore @if and @for Angular constructs. Updated node version in Github workflow to 22.12.0 (build.yml). Updated .env.ts. Updated Angular datetime format strings from YYYY-MM-DD to yyyy-MM-dd. Merged changes from dev into angular20 branch.
163 lines
5.0 KiB
HTML
163 lines
5.0 KiB
HTML
<mat-card-header class="layout-row gap-5percent header">
|
|
<fa-icon class="main-icon" icon="building" size="3x"></fa-icon>
|
|
<mat-card-title-group>
|
|
<div class="mat-typography">
|
|
<mat-card-title>
|
|
<h2>
|
|
{{ centerData.name }}
|
|
<span [className]="centerData.status.code | statusLookup">
|
|
<fa-icon
|
|
matTooltip="{{ centerData.status.value }}"
|
|
matTooltipPosition="right"
|
|
icon="circle"
|
|
size="lg"
|
|
></fa-icon>
|
|
</span>
|
|
</h2>
|
|
</mat-card-title>
|
|
<mat-card-subtitle>
|
|
<p>
|
|
{{ 'labels.inputs.Account No' | translate }}:
|
|
<mifosx-account-number accountNo="{{ centerData.accountNo }}"></mifosx-account-number>
|
|
</p>
|
|
@if (centerData.externalId) {
|
|
<p>
|
|
{{ 'labels.inputs.External Id' | translate }}:
|
|
<mifosx-external-identifier externalId="{{ centerData.externalId }}"></mifosx-external-identifier>
|
|
</p>
|
|
}
|
|
</mat-card-subtitle>
|
|
</div>
|
|
</mat-card-title-group>
|
|
</mat-card-header>
|
|
|
|
<mat-card-content>
|
|
<mat-tab-group>
|
|
<mat-tab label="Details">
|
|
<div class="layout-row-wrap">
|
|
<div class="flex-50 mat-body-strong">
|
|
{{ 'labels.inputs.Activation Date' | translate }}
|
|
</div>
|
|
|
|
<div class="flex-50">
|
|
{{ centerData.activationDate | dateFormat }}
|
|
</div>
|
|
|
|
<div class="flex-50 mat-body-strong">
|
|
{{ 'labels.inputs.Associated Officer' | translate }}
|
|
</div>
|
|
|
|
<div class="flex-50">
|
|
{{ centerData.staffName }}
|
|
</div>
|
|
|
|
@if (centerSummaryData) {
|
|
<div class="flex-50 mat-body-strong">
|
|
{{ 'labels.inputs.Number of Active Clients' | translate }}
|
|
</div>
|
|
}
|
|
|
|
@if (centerSummaryData) {
|
|
<div class="flex-50">
|
|
{{ centerSummaryData.activeClients }}
|
|
</div>
|
|
}
|
|
|
|
@if (centerSummaryData) {
|
|
<div class="flex-50 mat-body-strong">
|
|
{{ 'labels.inputs.Number of Active Client Loans' | translate }}
|
|
</div>
|
|
}
|
|
|
|
@if (centerSummaryData) {
|
|
<div class="flex-50">
|
|
{{ centerSummaryData.activeClientLoans }}
|
|
</div>
|
|
}
|
|
|
|
@if (centerSummaryData) {
|
|
<div class="flex-50 mat-body-strong">
|
|
{{ 'labels.inputs.Number of Active Client Borrowers' | translate }}
|
|
</div>
|
|
}
|
|
|
|
@if (centerSummaryData) {
|
|
<div class="flex-50">
|
|
{{ centerSummaryData.activeClientBorrowers }}
|
|
</div>
|
|
}
|
|
|
|
@if (centerSummaryData) {
|
|
<div class="flex-50 mat-body-strong">
|
|
{{ 'labels.inputs.Number of Active Overdue Group Loans' | translate }}
|
|
</div>
|
|
}
|
|
|
|
@if (centerSummaryData) {
|
|
<div class="flex-50">
|
|
{{ centerSummaryData.overdueGroupLoans }}
|
|
</div>
|
|
}
|
|
|
|
@if (centerSummaryData) {
|
|
<div class="flex-50 mat-body-strong">
|
|
{{ 'labels.inputs.Number of Active Overdue Client Loans' | translate }}
|
|
</div>
|
|
}
|
|
|
|
@if (centerSummaryData) {
|
|
<div class="flex-50">
|
|
{{ centerSummaryData.overdueClientLoans }}
|
|
</div>
|
|
}
|
|
|
|
@if (centerData.collectionMeetingCalendar && centerData.collectionMeetingCalendar.nextTenRecurringDates[0]) {
|
|
<div class="mat-body-strong flex-50">
|
|
{{ 'labels.inputs.Next Meeting Date' | translate }}
|
|
</div>
|
|
}
|
|
|
|
@if (centerData.collectionMeetingCalendar && centerData.collectionMeetingCalendar.nextTenRecurringDates[0]) {
|
|
<div class="flex-50">
|
|
{{ centerSummaryData.collectionMeetingCalendar.nextTenRecurringDates[0] | dateFormat }}
|
|
</div>
|
|
}
|
|
|
|
@if (centerData.collectionMeetingCalendar && centerData.collectionMeetingCalendar.humanReadable) {
|
|
<div class="mat-body-strong flex-50">
|
|
{{ 'labels.inputs.Meeting Frequency' | translate }}
|
|
</div>
|
|
}
|
|
|
|
@if (centerData.collectionMeetingCalendar && centerData.collectionMeetingCalendar.humanReadable) {
|
|
<div class="flex-50">
|
|
{{ centerSummaryData.collectionMeetingCalendar.humanReadable }}
|
|
</div>
|
|
}
|
|
|
|
<div class="flex-50 mat-body-strong">
|
|
{{ 'labels.inputs.Number of Groups' | translate }}
|
|
</div>
|
|
|
|
<div class="flex-50">
|
|
{{ groupData ? groupData.length : '' }}
|
|
</div>
|
|
</div>
|
|
</mat-tab>
|
|
|
|
@if (centerAccountsData && centerAccountsData.loanAccounts) {
|
|
<mat-tab label="Loan Accounts">
|
|
<mifosx-loan-account-table [loanAccountData]="centerAccountsData.loanAccounts"></mifosx-loan-account-table>
|
|
</mat-tab>
|
|
}
|
|
|
|
@if (centerAccountsData && centerAccountsData.savingsAccounts) {
|
|
<mat-tab label="Savings Accounts">
|
|
<mifosx-savings-account-table
|
|
[savingsAccountData]="centerAccountsData.savingsAccounts"
|
|
></mifosx-savings-account-table>
|
|
</mat-tab>
|
|
}
|
|
</mat-tab-group>
|
|
</mat-card-content>
|