Search External Asset Owner (#1851)

Co-authored-by: Jose Alberto Hernandez <alberto@blue-daemon.local>
This commit is contained in:
José Alberto Hernández
2023-08-27 16:14:44 -06:00
committed by GitHub
co-authored by Jose Alberto Hernandez
parent b50ac452f5
commit 10e84d1acb
11 changed files with 245 additions and 216 deletions
+1 -1
View File
@@ -12,7 +12,7 @@
"license": "MPL-2.0", "license": "MPL-2.0",
"scripts": { "scripts": {
"ng": "ng", "ng": "ng",
"build": "npm run env -s && ng build --prod --output-hashing=none", "build": "node version.js && npm run env -s && ng build --prod --output-hashing=none",
"build:prod": "node --max-old-space-size=16384 ./node_modules/@angular/cli/bin/ng build --prod --output-hashing=none --base-href=/web-app/", "build:prod": "node --max-old-space-size=16384 ./node_modules/@angular/cli/bin/ng build --prod --output-hashing=none --base-href=/web-app/",
"start": "npm run env -s && ng serve --aot --proxy-config proxy.conf.js", "start": "npm run env -s && ng serve --aot --proxy-config proxy.conf.js",
"serve:dev": "npm run env -s && ng serve", "serve:dev": "npm run env -s && ng serve",
@@ -6,7 +6,8 @@
<div fxLayout="row" fxLayoutAlign="flex-end"> <div fxLayout="row" fxLayoutAlign="flex-end">
<button mat-raised-button color="primary" [routerLink]="['./add']"> <button mat-raised-button color="primary" [routerLink]="['./add']">
<fa-icon icon="plus" class="m-r-10"></fa-icon>Add <fa-icon icon="plus" class="m-r-10"></fa-icon>
Add
</button> </button>
</div> </div>
@@ -45,7 +46,7 @@
Martial Status : {{member.maritalStatus}}<br /> Martial Status : {{member.maritalStatus}}<br />
Gender : {{member.gender}}<br /> Gender : {{member.gender}}<br />
Profession : {{member.profession}}<br /> Profession : {{member.profession}}<br />
Date Of Birth : {{member.dateOfBirth | dateFormat}}<br /> Date Of Birth : {{member.dateOfBirth | dateFormat}}<br />
</p> </p>
</mat-expansion-panel> </mat-expansion-panel>
@@ -1,72 +1,70 @@
<div fxLayout="row" fxLayoutGap="32px" class="asset-transfer-container"> <table>
<table> <tbody>
<tbody> <tr>
<tr> <td fxFlex="25%" class="m-l-5">
<td fxFlex="25%" class="m-l-5"> <b>Status :</b>
<b>Status :</b> </td>
</td> <td fxFlex="25%" class="m-l-5 left">
<td fxFlex="25%" class="m-l-5 left"> <div [ngClass]="itemStatus(transferData.status)">
<div [ngClass]="itemStatus(transferData.status)"> <fa-icon icon="stop"></fa-icon>
<fa-icon icon="stop"></fa-icon> <span class="m-l-5 status">{{transferData.status}}</span>
<span class="m-l-5 status">{{transferData.status}}</span> </div>
</div> </td>
</td> <td fxFlex="25%" class="m-l-5">
<td fxFlex="25%" class="m-l-5"> <b>Owner External Id :</b>
<b>Owner External Id :</b> </td>
</td> <td fxFlex="25%" class="m-l-5 left">
<td fxFlex="25%" class="m-l-5 left"> <mifosx-external-identifier externalId="{{transferData.owner.externalId}}" completed="true"></mifosx-external-identifier>
<mifosx-external-identifier externalId="{{transferData.owner.externalId}}" completed="true"></mifosx-external-identifier> </td>
</td> </tr>
</tr> <tr>
<tr> <td fxFlex="25%" class="m-l-5">
<td fxFlex="25%" class="m-l-5"> <b>Settlement Date :</b>
<b>Settlement Date :</b> </td>
</td> <td fxFlex="25%" class="m-l-5">
<td fxFlex="25%" class="m-l-5"> {{transferData.settlementDate | dateFormat}}
{{transferData.settlementDate | dateFormat}} </td>
</td> <td fxFlex="25%" class="m-l-5">
<td fxFlex="25%" class="m-l-5"> <b>Effective Date :</b>
<b>Effective Date :</b> </td>
</td> <td fxFlex="25%" class="m-l-5">
<td fxFlex="25%" class="m-l-5"> {{transferData.effectiveFrom | dateFormat}}
{{transferData.effectiveFrom | dateFormat}} </td>
</td> </tr>
</tr> <tr>
<tr> <td fxFlex="25%" class="m-l-5">
<td fxFlex="25%" class="m-l-5"> <b>Details :</b>
<b>Details :</b> </td>
</td> <td fxFlex="75%" class="left">
<td fxFlex="75%" class="left"> <table>
<table> <tbody>
<tbody> <tr>
<tr> <td fxFlex="50%" class="m-l-5"><b>Principal Outstanding :</b></td>
<td fxFlex="50%" class="m-l-5"><b>Principal Outstanding :</b></td> <td fxFlex="50%" class="r-amount">{{transferData.details.totalPrincipalOutstanding | formatNumber}}</td>
<td fxFlex="50%" class="r-amount">{{transferData.details.totalPrincipalOutstanding | formatNumber}}</td> </tr>
</tr> <tr>
<tr> <td fxFlex="50%" class="m-l-5"><b>Interest Outstanding :</b></td>
<td fxFlex="50%" class="m-l-5"><b>Interest Outstanding :</b></td> <td fxFlex="50%" class="r-amount">{{transferData.details.totalInterestOutstanding | formatNumber}}</td>
<td fxFlex="50%" class="r-amount">{{transferData.details.totalInterestOutstanding | formatNumber}}</td> </tr>
</tr> <tr>
<tr> <td fxFlex="50%" class="m-l-5"><b>Fees Outstanding :</b></td>
<td fxFlex="50%" class="m-l-5"><b>Fees Outstanding :</b></td> <td fxFlex="50%" class="r-amount">{{transferData.details.totalFeeChargesOutstanding | formatNumber}}</td>
<td fxFlex="50%" class="r-amount">{{transferData.details.totalFeeChargesOutstanding | formatNumber}}</td> </tr>
</tr> <tr>
<tr> <td fxFlex="50%" class="m-l-5"><b>Penalties Outstanding :</b></td>
<td fxFlex="50%" class="m-l-5"><b>Penalties Outstanding :</b></td> <td fxFlex="50%" class="r-amount">{{transferData.details.totalPenaltyChargesOutstanding | formatNumber}}</td>
<td fxFlex="50%" class="r-amount">{{transferData.details.totalPenaltyChargesOutstanding | formatNumber}}</td> </tr>
</tr> <tr>
<tr> <td fxFlex="50%" class="m-l-5"><b>Outstanding :</b></td>
<td fxFlex="50%" class="m-l-5"><b>Outstanding :</b></td> <td fxFlex="50%" class="r-amount">{{transferData.details.totalOutstanding | formatNumber}}</td>
<td fxFlex="50%" class="r-amount">{{transferData.details.totalOutstanding | formatNumber}}</td> </tr>
</tr> <tr>
<tr> <td fxFlex="50%" class="m-l-5"><b>Overpaid :</b></td>
<td fxFlex="50%" class="m-l-5"><b>Overpaid :</b></td> <td fxFlex="50%" class="r-amount">{{transferData.details.totalOverpaid | formatNumber}}</td>
<td fxFlex="50%" class="r-amount">{{transferData.details.totalOverpaid | formatNumber}}</td> </tr>
</tr> </tbody>
</tbody> </table>
</table> </td>
</td> </tr>
</tr> </tbody>
</tbody> </table>
</table>
</div>
@@ -6,16 +6,12 @@ import { ExternalAssetOwner } from 'app/loans/services/external-asset-owner';
templateUrl: './external-asset-transfer.component.html', templateUrl: './external-asset-transfer.component.html',
styleUrls: ['./external-asset-transfer.component.scss'] styleUrls: ['./external-asset-transfer.component.scss']
}) })
export class ExternalAssetTransferComponent implements OnInit { export class ExternalAssetTransferComponent {
/** Input Fields Data */ /** Input Fields Data */
@Input() transferData: any; @Input() transferData: any;
constructor(private externalAssetOwner: ExternalAssetOwner) { } constructor(private externalAssetOwner: ExternalAssetOwner) { }
ngOnInit(): void {
console.log(this.transferData);
}
itemStatus(status: string): string { itemStatus(status: string): string {
return this.externalAssetOwner.itemStatus(status); return this.externalAssetOwner.itemStatus(status);
} }
@@ -2,7 +2,12 @@
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column"> <div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
<mat-form-field fxFlex="22%" (click)="effectiveFromDatePicker.open()"> <mat-form-field fxFlex="18%">
<mat-label>Search by Text</mat-label>
<input matInput [formControl]="searchText">
</mat-form-field>
<mat-form-field fxFlex="18%" (click)="effectiveFromDatePicker.open()">
<mat-label>Effective Date From</mat-label> <mat-label>Effective Date From</mat-label>
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="effectiveFromDatePicker" <input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="effectiveFromDatePicker"
[formControl]="effectiveFromDate"> [formControl]="effectiveFromDate">
@@ -10,7 +15,7 @@
<mat-datepicker #effectiveFromDatePicker></mat-datepicker> <mat-datepicker #effectiveFromDatePicker></mat-datepicker>
</mat-form-field> </mat-form-field>
<mat-form-field fxFlex="22%" (click)="effectiveToDatePicker.open()"> <mat-form-field fxFlex="18%" (click)="effectiveToDatePicker.open()">
<mat-label>Effective Date To</mat-label> <mat-label>Effective Date To</mat-label>
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="effectiveToDatePicker" <input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="effectiveToDatePicker"
[formControl]="effectiveToDate"> [formControl]="effectiveToDate">
@@ -18,7 +23,7 @@
<mat-datepicker #effectiveToDatePicker></mat-datepicker> <mat-datepicker #effectiveToDatePicker></mat-datepicker>
</mat-form-field> </mat-form-field>
<mat-form-field fxFlex="22%" (click)="settlementFromDatePicker.open()"> <mat-form-field fxFlex="18%" (click)="settlementFromDatePicker.open()">
<mat-label>Settlement Date From</mat-label> <mat-label>Settlement Date From</mat-label>
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="settlementFromDatePicker" <input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="settlementFromDatePicker"
[formControl]="settlementFromDate"> [formControl]="settlementFromDate">
@@ -26,7 +31,7 @@
<mat-datepicker #settlementFromDatePicker></mat-datepicker> <mat-datepicker #settlementFromDatePicker></mat-datepicker>
</mat-form-field> </mat-form-field>
<mat-form-field fxFlex="22%" (click)="settlementToDatePicker.open()"> <mat-form-field fxFlex="18%" (click)="settlementToDatePicker.open()">
<mat-label>Settlement Date To</mat-label> <mat-label>Settlement Date To</mat-label>
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="settlementToDatePicker" <input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="settlementToDatePicker"
[formControl]="settlementToDate"> [formControl]="settlementToDate">
@@ -34,102 +39,118 @@
<mat-datepicker #settlementToDatePicker></mat-datepicker> <mat-datepicker #settlementToDatePicker></mat-datepicker>
</mat-form-field> </mat-form-field>
<mat-form-field fxFlex="60%"> <div fxFlex="98%" class="center m-t-15">
<mat-label>Transaction ID</mat-label>
<input matInput [formControl]="searchText">
</mat-form-field>
<ng-container fxFlex="40%" class="right">
<button mat-raised-button color="primary" (click)="searchEAO()"> <button mat-raised-button color="primary" (click)="searchEAO()">
<fa-icon icon="search" class="m-r-10"></fa-icon> Search <fa-icon icon="search" class="m-r-10"></fa-icon> Search
</button> </button>
</ng-container> </div>
</div> </div>
<div class="mat-elevation-z8 container"> <div class="mat-elevation-z8 container m-t-20">
<mat-progress-bar mode="indeterminate" *ngIf="isLoading"></mat-progress-bar> <mat-progress-bar mode="indeterminate" *ngIf="isLoading"></mat-progress-bar>
<table mat-table [dataSource]="dataSource" matSort *ngIf="existsDataToFilter" multiTemplateDataRows> <mat-accordion *ngIf="existsDataToFilter">
<mat-expansion-panel *ngFor="let record of searchResults;index as i" class="record">
<mat-expansion-panel-header>
<mat-panel-title>
<table>
<tr>
<td>
<div [ngClass]="itemStatus(record.status)" class="m-r-20">
<fa-icon icon="stop"></fa-icon>
<span class="m-l-10 status">{{record.status}}</span>
</div>
</td>
<td> Owner ExternalId </td>
<td>
<mifosx-external-identifier externalId="{{record.owner.externalId}}"></mifosx-external-identifier>
</td>
<td> Effective From </td>
<td> {{ record.effectiveFrom | dateFormat }} </td>
</tr>
</table>
</mat-panel-title>
<mat-panel-description>
<mifosx-external-identifier externalId="{{record.transferExternalId}}"></mifosx-external-identifier>
</mat-panel-description>
<ng-container matColumnDef="status"> </mat-expansion-panel-header>
<th mat-header-cell *matHeaderCellDef mat-sort-header> Status </th>
<td mat-cell *matCellDef="let item">
<div [ngClass]="itemStatus(item.status)">
<fa-icon icon="stop"></fa-icon>
<span class="m-l-10 status">{{item.status}}</span>
</div>
</td>
</ng-container>
<ng-container matColumnDef="effectiveFrom"> <div class="external-asset-transfer">
<th mat-header-cell *matHeaderCellDef mat-sort-header> Effective From Date </th> <table>
<td mat-cell *matCellDef="let item"> {{ item.effectiveFrom | dateFormat }} </td> <tbody>
</ng-container> <tr>
<td fxFlex="25%" class="m-l-5">
<b>Status :</b>
</td>
<td fxFlex="25%" class="m-l-5 left">
<div [ngClass]="itemStatus(record.status)">
<fa-icon icon="stop"></fa-icon>
<span class="m-l-5 status">{{record.status}}</span>
</div>
</td>
<td fxFlex="25%" class="m-l-5">
<b>Owner External Id :</b>
</td>
<td fxFlex="25%" class="m-l-5 left">
<mifosx-external-identifier externalId="{{record.owner.externalId}}" completed="true"></mifosx-external-identifier>
</td>
</tr>
<tr>
<td fxFlex="25%" class="m-l-5">
<b>Settlement Date :</b>
</td>
<td fxFlex="25%" class="m-l-5">
{{record.settlementDate | dateFormat}}
</td>
<td fxFlex="25%" class="m-l-5">
<b>Effective Date :</b>
</td>
<td fxFlex="25%" class="m-l-5">
{{record.effectiveFrom | dateFormat}}
</td>
</tr>
<tr>
<td fxFlex="25%" class="m-l-5">
<b>Details :</b>
</td>
<td fxFlex="75%" class="left">
<table>
<tbody>
<tr>
<td fxFlex="50%" class="m-l-5"><b>Principal Outstanding :</b></td>
<td fxFlex="50%" class="r-amount">{{record.details.totalPrincipalOutstanding | formatNumber}}</td>
</tr>
<tr>
<td fxFlex="50%" class="m-l-5"><b>Interest Outstanding :</b></td>
<td fxFlex="50%" class="r-amount">{{record.details.totalInterestOutstanding | formatNumber}}</td>
</tr>
<tr>
<td fxFlex="50%" class="m-l-5"><b>Fees Outstanding :</b></td>
<td fxFlex="50%" class="r-amount">{{record.details.totalFeeChargesOutstanding | formatNumber}}</td>
</tr>
<tr>
<td fxFlex="50%" class="m-l-5"><b>Penalties Outstanding :</b></td>
<td fxFlex="50%" class="r-amount">{{record.details.totalPenaltyChargesOutstanding | formatNumber}}</td>
</tr>
<tr>
<td fxFlex="50%" class="m-l-5"><b>Outstanding :</b></td>
<td fxFlex="50%" class="r-amount">{{record.details.totalOutstanding | formatNumber}}</td>
</tr>
<tr>
<td fxFlex="50%" class="m-l-5"><b>Overpaid :</b></td>
<td fxFlex="50%" class="r-amount">{{record.details.totalOverpaid | formatNumber}}</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
<ng-container matColumnDef="ownerExternalId"> </mat-expansion-panel>
<th mat-header-cell *matHeaderCellDef mat-sort-header> Owner </th> </mat-accordion>
<td mat-cell *matCellDef="let item">
<mifosx-external-identifier externalId="{{item.owner.externalId}}"></mifosx-external-identifier>
</td>
</ng-container>
<ng-container matColumnDef="loanAccount">
<th mat-header-cell *matHeaderCellDef mat-sort-header> Loan </th>
<td mat-cell *matCellDef="let item"> {{ item.loan.loanId }} </td>
</ng-container>
<ng-container matColumnDef="transferExternalId">
<th mat-header-cell *matHeaderCellDef mat-sort-header> Transfer </th>
<td mat-cell *matCellDef="let item">
<mifosx-external-identifier externalId="{{item.transferExternalId}}"></mifosx-external-identifier>
</td>
</ng-container>
<ng-container matColumnDef="settlementDate">
<th mat-header-cell *matHeaderCellDef mat-sort-header> Settlement Date </th>
<td mat-cell *matCellDef="let item"> {{ item.settlementDate | dateFormat }} </td>
</ng-container>
<ng-container matColumnDef="purchasePriceRatio">
<th mat-header-cell *matHeaderCellDef mat-sort-header> Purchase Price Ratio </th>
<td mat-cell *matCellDef="let item"> {{ item.purchasePriceRatio | number }} </td>
</ng-container>
<ng-container matColumnDef="totalAmount">
<th mat-header-cell *matHeaderCellDef mat-sort-header> Total Amount </th>
<td mat-cell *matCellDef="let item">
<span *ngIf="item.details">
{{ item.details.totalOutstanding | number }}
</span>
</td>
</ng-container>
<ng-container matColumnDef="actions">
<th mat-header-cell class="center" *matHeaderCellDef> Actions </th>
<td mat-cell *matCellDef="let item" class="center td-min-space">
<button class="account-action-button" *ngIf="!isPendingOrCanceled(item)" mat-raised-button color="primary" matTooltip="View Journal Entries"
matTooltipPosition="left" (click)="routeJournalEntry($event)" [routerLink]="['/', 'journal-entry', 'view-transfer', item.transferId]">
<i class="fa fa-arrow-circle-right"></i>
</button>
</td>
</ng-container>
<ng-container matColumnDef="expandedDetail">
<td mat-cell *matCellDef="let item" [attr.colspan]="displayedColumns.length">
<div class="element-detail"
[@detailExpand]="item.transferId == expandedRowId ? 'expanded' : 'collapsed'">
<mifosx-external-asset-transfer [transferData]="item"></mifosx-external-asset-transfer>
</div>
</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
<tr mat-row *matRowDef="let item; columns: displayedColumns;"
class="element-row"
[class.expanded-row]="expandedRowId === item.transferId"
(click)="expandedRowId = expandedRowId === item.transferId ? null : item.transferId"></tr>
<tr mat-row *matRowDef="let item; columns: ['expandedDetail']" class="detail-row"></tr>
</table>
<mat-paginator [pageSize]="pageSize" [pageSizeOptions]="[50, 100, 200]" [length]="totalRows" (page)="pageChanged($event)" <mat-paginator [pageSize]="pageSize" [pageSizeOptions]="[50, 100, 200]" [length]="totalRows" (page)="pageChanged($event)"
showFirstLastButtons *ngIf="existsDataToFilter"></mat-paginator> showFirstLastButtons *ngIf="existsDataToFilter"></mat-paginator>
@@ -2,39 +2,25 @@
color: black; color: black;
} }
.account-action-button{ .external-asset-transfer {
min-width: 26px; margin-top: 10px;
padding: 0 0 3px 0; min-height: 160px;
margin: 0 2%;
line-height: 25px;
} }
.item-detail { .record {
overflow: hidden; .record-actions{
display: flex; margin-top: 1%;
button{
margin-right: 1%;
}
}
h3 {
margin: 1% auto;
}
p {
line-height: 30px;
margin-left: 2%;
}
} }
tr.detail-row {
height: 0;
}
tr.element-row:hover {
cursor: pointer;
}
tr.element-row:not(.expanded-row):hover {
background: whitesmoke;
}
tr.element-row:not(.expanded-row):active {
background: #efefef;
}
.element-row td {
border-bottom-width: 0;
}
.element-detail {
overflow: hidden;
display: flex;
}
@@ -28,6 +28,7 @@ export class InvestorsComponent implements OnInit {
/** Maximum transaction date allowed. */ /** Maximum transaction date allowed. */
maxDate = new Date(); maxDate = new Date();
searchResults: any[] = [];
searchText = new FormControl(''); searchText = new FormControl('');
effectiveFromDate = new FormControl(''); effectiveFromDate = new FormControl('');
effectiveToDate = new FormControl(''); effectiveToDate = new FormControl('');
@@ -138,11 +139,16 @@ export class InvestorsComponent implements OnInit {
this.totalRows = response.totalElements; this.totalRows = response.totalElements;
this.existsDataToFilter = (response.totalElements > 0); this.existsDataToFilter = (response.totalElements > 0);
this.dataSource.data = response.content; this.dataSource.data = response.content;
this.searchResults = response.content;
this.isLoading = false; this.isLoading = false;
}); });
} }
transform(data: any): any {
return data;
}
pageChanged(event: PageEvent) { pageChanged(event: PageEvent) {
this.pageSize = event.pageSize; this.pageSize = event.pageSize;
this.currentPage = event.pageIndex; this.currentPage = event.pageIndex;
@@ -233,7 +233,11 @@ export class RunReportComponent implements OnInit {
formattedResponse[newKey] = value['id']; formattedResponse[newKey] = value['id'];
break; break;
case 'date': case 'date':
formattedResponse[newKey] = this.dateUtils.formatDate(value, this.settingsService.dateFormat); if (this.isTableReport()) {
formattedResponse[newKey] = this.dateUtils.formatDate(value, Dates.DEFAULT_DATEFORMAT);
} else {
formattedResponse[newKey] = this.dateUtils.formatDate(value, this.settingsService.dateFormat);
}
this.reportUsesDates = true; this.reportUsesDates = true;
break; break;
case 'none': case 'none':
@@ -254,10 +258,14 @@ export class RunReportComponent implements OnInit {
...userResponseValues, ...userResponseValues,
}; };
if (this.reportUsesDates) { if (this.reportUsesDates) {
let dateFormat = this.settingsService.dateFormat;
if (this.isTableReport()) {
dateFormat = Dates.DEFAULT_DATEFORMAT;
}
formData = { formData = {
...userResponseValues, ...userResponseValues,
locale: this.settingsService.language.code, locale: this.settingsService.language.code,
dateFormat: this.settingsService.dateFormat dateFormat: dateFormat
}; };
} }
if (this.reportToBeExportedInRepository) { if (this.reportToBeExportedInRepository) {
+7 -7
View File
@@ -2,22 +2,22 @@
<mat-divider fxFlexAlign="center" class="divider"></mat-divider> <mat-divider fxFlexAlign="center" class="divider"></mat-divider>
<div fxLayout="column" class="m-b-20 content"> <div fxLayout="column" class="m-b-20 content">
<table> <table class="versions">
<tr> <tr>
<td class="footer-content">Mifos</td> <td class="footer-content">Mifos</td>
<td class="right footer-content"><b>{{ versions.mifos }}</b> - <b>{{ hash }}</b></td> <td class="right footer-content">{{ versions.mifos }} - <b>{{ hash }}</b></td>
</tr> </tr>
<tr> <tr>
<td class="footer-content">Fineract</td> <td class="footer-content">Fineract</td>
<td class="right footer-content"><b>{{ versions.fineract.version[0] }}</b> - <b>{{ versions.fineract.version[1] }}</b></td> <td class="right footer-content">{{ versions.fineract.version }} - <b>{{ versions.fineract.hash }}</b></td>
</tr>
<tr *ngIf="isBusinessDateDefined">
<td class="footer-content">Current Business Date:</td>
<td class="center footer-content"><b>{{ businessDate | date: 'EEEE, MMMM dd, y' }}</b></td>
</tr> </tr>
<tr *ngIf="displayBackEndInfo"> <tr *ngIf="displayBackEndInfo">
<td colspan="2" class="center footer-content"><b>{{ server }}</b></td> <td colspan="2" class="center footer-content"><b>{{ server }}</b></td>
</tr> </tr>
<tr *ngIf="isBusinessDateDefined">
<td class="footer-content">Current Business Date:</td>
<td class="center footer-content business-date"><b>{{ businessDate | date: 'EEEE, MMMM dd, y' }}</b></td>
</tr>
</table> </table>
</div> </div>
<mat-divider fxFlexAlign="center" class="divider"></mat-divider> <mat-divider fxFlexAlign="center" class="divider"></mat-divider>
@@ -1,3 +1,5 @@
@import "assets/styles/helper";
#footer { #footer {
align-items: center; align-items: center;
@@ -14,6 +16,14 @@
width: 4rem; width: 4rem;
} }
.business-date {
color: $status-approved;
}
.versions {
color: $status-inactive;
}
table { table {
border: none; border: none;
+8 -5
View File
@@ -24,7 +24,11 @@ export class FooterComponent implements OnInit, OnDestroy {
/** Mifos X version. */ /** Mifos X version. */
versions: any = { versions: any = {
mifos: environment.version mifos: environment.version,
fineract: {
version: '',
hash: ''
}
}; };
/** Mifos X hash */ /** Mifos X hash */
hash: string = environment.hash; hash: string = environment.hash;
@@ -67,10 +71,9 @@ export class FooterComponent implements OnInit, OnDestroy {
this.getConfigurations(); this.getConfigurations();
this.server = this.settingsService.server; this.server = this.settingsService.server;
this.versionService.getBackendInfo().subscribe((data: any) => { this.versionService.getBackendInfo().subscribe((data: any) => {
const buildVersion: string = data.git.build.version; const buildVersion: string = data.git.build.version.split('-');
this.versions.fineract = { this.versions.fineract.version = buildVersion[0];
version: buildVersion.split('-') this.versions.fineract.hash = buildVersion[1];
};
}); });
} }