Datatable views updates for display values with format (#1603)

Co-authored-by: Jose Alberto Hernandez <alberto@MacBook-Pro.local>
This commit is contained in:
José Alberto Hernández
2022-12-19 23:09:09 -06:00
committed by GitHub
co-authored by Jose Alberto Hernandez
parent eae1b350b7
commit 7bbab6423e
23 changed files with 325 additions and 149 deletions
@@ -22,8 +22,8 @@
<table #dataTable mat-table [hidden]="!datatableData[0]" [dataSource]="datatableData" class="mat-elevation-z1 m-b-25"> <table #dataTable mat-table [hidden]="!datatableData[0]" [dataSource]="datatableData" class="mat-elevation-z1 m-b-25">
<ng-container *ngFor="let datatableColumn of datatableColumns;let i = index" [matColumnDef]="datatableColumn"> <ng-container *ngFor="let datatableColumn of datatableColumns;let i = index" [matColumnDef]="datatableColumn">
<th mat-header-cell *matHeaderCellDef> {{datatableColumn}} </th> <th mat-header-cell class="right" *matHeaderCellDef> {{datatableColumn}} </th>
<td mat-cell *matCellDef="let data"> {{data.row[i]}} </td> <td mat-cell class="right" *matCellDef="let data">{{ formatValue(i, data.row[i]) }}</td>
</ng-container> </ng-container>
<tr mat-header-row *matHeaderRowDef="datatableColumns"></tr> <tr mat-header-row *matHeaderRowDef="datatableColumns"></tr>
@@ -16,6 +16,9 @@ import { CentersService } from '../../../centers.service';
import { SettingsService } from 'app/settings/settings.service'; import { SettingsService } from 'app/settings/settings.service';
import { Dates } from 'app/core/utils/dates'; import { Dates } from 'app/core/utils/dates';
import { Datatables } from 'app/core/utils/datatables'; import { Datatables } from 'app/core/utils/datatables';
import { DateFormatPipe } from 'app/pipes/date-format.pipe';
import { DatetimeFormatPipe } from 'app/pipes/datetime-format.pipe';
import { DecimalPipe } from '@angular/common';
/** /**
* Center Multi Row Data Tables * Center Multi Row Data Tables
@@ -58,7 +61,10 @@ export class MultiRowComponent implements OnInit, OnChanges {
private centersService: CentersService, private centersService: CentersService,
private settingsService: SettingsService, private settingsService: SettingsService,
private dialog: MatDialog, private dialog: MatDialog,
private datatables: Datatables) { private datatables: Datatables,
private dateFormat: DateFormatPipe,
private dateTimeFormat: DatetimeFormatPipe,
private numberFormat: DecimalPipe) {
this.centerId = this.route.parent.parent.snapshot.paramMap.get('centerId'); this.centerId = this.route.parent.parent.snapshot.paramMap.get('centerId');
} }
@@ -134,4 +140,16 @@ export class MultiRowComponent implements OnInit, OnChanges {
}); });
} }
formatValue(index: number, value: any): any {
const columnDisplayType = this.dataObject.columnHeaders[index].columnDisplayType;
if (columnDisplayType === 'DATE') {
return this.dateFormat.transform(value);
} else if (columnDisplayType === 'DATETIME') {
return this.dateTimeFormat.transform(value);
} else if (columnDisplayType === 'INTEGER' || columnDisplayType === 'DECIMAL') {
return this.numberFormat.transform(value);
}
return value;
}
} }
@@ -1,41 +1,42 @@
<div class="tab-container mat-typography"> <div class="tab-container mat-typography">
<h3>{{datatableName}}</h3>
<div fxLayout="row" fxLayoutAlign="flex-end">
<button mat-raised-button color="primary" (click)="add()" *ngIf="!dataObject.data[0]">
<fa-icon icon="plus" class="m-r-10"></fa-icon>Add
</button>
<button mat-raised-button color="primary" (click)="edit()" *ngIf="dataObject.data[0]">
<fa-icon icon="edit" class="m-r-10"></fa-icon>Edit
</button>
<button class="delete-button" mat-raised-button color="warn" (click)="delete()" *ngIf="dataObject.data[0]">
<fa-icon icon="trash" class="m-r-10"></fa-icon>Delete All
</button>
</div>
<div> <mat-divider></mat-divider>
<div fxLayout="column" fxFlex="50%" class="tableName"> <ng-container *ngIf="dataObject.data.length > 0">
<h3>{{datatableName}}</h3>
</div>
<div fxLayout="column" fxFlex="50%" > <div *ngFor="let columnHeader of dataObject.columnHeaders;let i = index" class="table-data">
<div fxLayout="row" fxLayoutAlign="flex-end">
<span *mifosxHasPermission="'CREATE_' + datatableName"> <div fxFlex="45%" class="mat-body-strong left">
<button mat-raised-button color="primary" (click)="add()" *ngIf="!dataObject.data[0]"> {{columnHeader.columnName}}
<fa-icon icon="plus"></fa-icon>&nbsp;&nbsp;Add </div>
</button>
<div fxFlex="45%" [ngSwitch]="columnHeader.columnDisplayType" class="right">
<span *ngSwitchCase="'DATE'">
{{dataObject.data[0].row[i] | dateFormat}}
</span> </span>
<span *mifosxHasPermission="'UPDATE_' + datatableName"> <span *ngSwitchCase="'DATETIME'">
<button mat-raised-button color="primary" (click)="edit()" *ngIf="dataObject.data[0]"> {{dataObject.data[0].row[i] | datetimeFormat}}
<fa-icon icon="edit"></fa-icon>&nbsp;&nbsp;Edit
</button>
</span> </span>
<span *mifosxHasPermission="'DELETE_' + datatableName" class="delete-button"> <span *ngSwitchCase="'INTEGER' || 'DECIMAL'">
<button mat-raised-button color="warn" (click)="delete()" *ngIf="dataObject.data[0]"> {{dataObject.data[0].row[i] | number}}
<fa-icon icon="trash"></fa-icon>&nbsp;&nbsp;Delete </span>
</button> <span *ngSwitchDefault>
{{dataObject.data[0].row[i]}}
</span> </span>
</div> </div>
</div> </div>
</ng-container>
</div>
<mat-divider></mat-divider>
<div>
<mat-list role="list" *ngIf="dataObject.data[0]">
<mat-list-item role="listitem" *ngFor="let columnHeader of dataObject.columnHeaders;let i = index">
{{columnHeader.columnName}} : {{dataObject.data[0].row[i]}}
</mat-list-item>
</mat-list>
</div>
</div> </div>
@@ -11,10 +11,10 @@
<table #dataTable mat-table [hidden]="!datatableData[0]" [dataSource]="datatableData"> <table #dataTable mat-table [hidden]="!datatableData[0]" [dataSource]="datatableData">
<ng-container *ngFor="let datatableColumn of datatableColumns;let i = index" [matColumnDef]="datatableColumn"> <ng-container *ngFor="let datatableColumn of datatableColumns;let i = index" [matColumnDef]="datatableColumn">
<th mat-header-cell *matHeaderCellDef> {{datatableColumn}} </th> <th mat-header-cell class="right" *matHeaderCellDef> {{datatableColumn}} </th>
<td mat-cell *matCellDef="let data"> {{data.row[i]}} </td> <td mat-cell class="right" *matCellDef="let data">{{ formatValue(i, data.row[i]) }}</td>
</ng-container> </ng-container>
<tr mat-header-row *matHeaderRowDef="datatableColumns"></tr> <tr mat-header-row *matHeaderRowDef="datatableColumns"></tr>
<tr mat-row *matRowDef="let row; columns: datatableColumns;"></tr> <tr mat-row *matRowDef="let row; columns: datatableColumns;"></tr>
</table> </table>
</div> </div>
@@ -13,6 +13,9 @@ import { ClientsService } from '../../../clients.service';
import { SettingsService } from 'app/settings/settings.service'; import { SettingsService } from 'app/settings/settings.service';
import { Dates } from 'app/core/utils/dates'; import { Dates } from 'app/core/utils/dates';
import { Datatables } from 'app/core/utils/datatables'; import { Datatables } from 'app/core/utils/datatables';
import { DateFormatPipe } from 'app/pipes/date-format.pipe';
import { DatetimeFormatPipe } from 'app/pipes/datetime-format.pipe';
import { DecimalPipe } from '@angular/common';
@Component({ @Component({
selector: 'mifosx-multi-row', selector: 'mifosx-multi-row',
@@ -42,7 +45,10 @@ export class MultiRowComponent implements OnInit, OnChanges {
private clientsService: ClientsService, private clientsService: ClientsService,
private dialog: MatDialog, private dialog: MatDialog,
private settingsService: SettingsService, private settingsService: SettingsService,
private datatables: Datatables) { private datatables: Datatables,
private dateFormat: DateFormatPipe,
private dateTimeFormat: DatetimeFormatPipe,
private numberFormat: DecimalPipe) {
this.clientId = this.route.parent.parent.snapshot.paramMap.get('clientId'); this.clientId = this.route.parent.parent.snapshot.paramMap.get('clientId');
} }
@@ -109,4 +115,16 @@ export class MultiRowComponent implements OnInit, OnChanges {
}); });
} }
formatValue(index: number, value: any): any {
const columnDisplayType = this.dataObject.columnHeaders[index].columnDisplayType;
if (columnDisplayType === 'DATE') {
return this.dateFormat.transform(value);
} else if (columnDisplayType === 'DATETIME') {
return this.dateTimeFormat.transform(value);
} else if (columnDisplayType === 'INTEGER' || columnDisplayType === 'DECIMAL') {
return this.numberFormat.transform(value);
}
return value;
}
} }
@@ -2,16 +2,19 @@
<h3>{{datatableName}}</h3> <h3>{{datatableName}}</h3>
<div fxLayout="row" fxLayoutAlign="flex-end"> <div fxLayout="row" fxLayoutAlign="flex-end">
<button mat-raised-button color="primary" (click)="add()" *ngIf="!dataObject.data[0]"> <button mat-raised-button color="primary" (click)="add()" *ngIf="!dataObject.data[0]">
<fa-icon icon="plus"></fa-icon>&nbsp;&nbsp;Add <fa-icon icon="plus" class="m-r-10"></fa-icon>Add
</button> </button>
<button mat-raised-button color="primary" (click)="edit()" *ngIf="dataObject.data[0]"> <button mat-raised-button color="primary" (click)="edit()" *ngIf="dataObject.data[0]">
<fa-icon icon="edit"></fa-icon>&nbsp;&nbsp;Edit <fa-icon icon="edit" class="m-r-10"></fa-icon>Edit
</button> </button>
<button class="delete-button" mat-raised-button color="warn" (click)="delete()" *ngIf="dataObject.data[0]"> <button class="delete-button" mat-raised-button color="warn" (click)="delete()" *ngIf="dataObject.data[0]">
<fa-icon icon="trash"></fa-icon>&nbsp;&nbsp;Delete All <fa-icon icon="trash" class="m-r-10"></fa-icon>Delete All
</button> </button>
</div> </div>
<ng-container>
<mat-divider></mat-divider>
<ng-container *ngIf="dataObject.data.length > 0">
<div *ngFor="let columnHeader of dataObject.columnHeaders;let i = index" class="table-data"> <div *ngFor="let columnHeader of dataObject.columnHeaders;let i = index" class="table-data">
@@ -21,8 +21,8 @@
<table #dataTable mat-table [hidden]="!datatableData[0]" [dataSource]="datatableData" class="mat-elevation-z1 m-b-25"> <table #dataTable mat-table [hidden]="!datatableData[0]" [dataSource]="datatableData" class="mat-elevation-z1 m-b-25">
<ng-container *ngFor="let datatableColumn of datatableColumns;let i = index" [matColumnDef]="datatableColumn"> <ng-container *ngFor="let datatableColumn of datatableColumns;let i = index" [matColumnDef]="datatableColumn">
<th mat-header-cell *matHeaderCellDef> {{datatableColumn}} </th> <th mat-header-cell class="right" *matHeaderCellDef> {{datatableColumn}} </th>
<td mat-cell *matCellDef="let data"> {{data.row[i]}} </td> <td mat-cell class="right" *matCellDef="let data">{{ formatValue(i, data.row[i]) }}</td>
</ng-container> </ng-container>
<tr mat-header-row *matHeaderRowDef="datatableColumns"></tr> <tr mat-header-row *matHeaderRowDef="datatableColumns"></tr>
@@ -16,6 +16,9 @@ import { GroupsService } from '../../../groups.service';
import { SettingsService } from 'app/settings/settings.service'; import { SettingsService } from 'app/settings/settings.service';
import { Dates } from 'app/core/utils/dates'; import { Dates } from 'app/core/utils/dates';
import { Datatables } from 'app/core/utils/datatables'; import { Datatables } from 'app/core/utils/datatables';
import { DateFormatPipe } from 'app/pipes/date-format.pipe';
import { DatetimeFormatPipe } from 'app/pipes/datetime-format.pipe';
import { DecimalPipe } from '@angular/common';
/** /**
* Group Multi Row Data Tables * Group Multi Row Data Tables
@@ -58,7 +61,10 @@ export class MultiRowComponent implements OnInit, OnChanges {
private groupsService: GroupsService, private groupsService: GroupsService,
private dialog: MatDialog, private dialog: MatDialog,
private settingsService: SettingsService, private settingsService: SettingsService,
private datatables: Datatables) { private datatables: Datatables,
private dateFormat: DateFormatPipe,
private dateTimeFormat: DatetimeFormatPipe,
private numberFormat: DecimalPipe) {
this.groupId = this.route.parent.parent.snapshot.paramMap.get('groupId'); this.groupId = this.route.parent.parent.snapshot.paramMap.get('groupId');
} }
@@ -134,4 +140,16 @@ export class MultiRowComponent implements OnInit, OnChanges {
}); });
} }
formatValue(index: number, value: any): any {
const columnDisplayType = this.dataObject.columnHeaders[index].columnDisplayType;
if (columnDisplayType === 'DATE') {
return this.dateFormat.transform(value);
} else if (columnDisplayType === 'DATETIME') {
return this.dateTimeFormat.transform(value);
} else if (columnDisplayType === 'INTEGER' || columnDisplayType === 'DECIMAL') {
return this.numberFormat.transform(value);
}
return value;
}
} }
@@ -1,29 +1,42 @@
<div class="tab-container mat-typography"> <div class="tab-container mat-typography">
<h3>{{datatableName}}</h3> <h3>{{datatableName}}</h3>
<div fxLayout="row" fxLayoutAlign="flex-end"> <div fxLayout="row" fxLayoutAlign="flex-end">
<span *mifosxHasPermission="'CREATE_' + datatableName"> <button mat-raised-button color="primary" (click)="add()" *ngIf="!dataObject.data[0]">
<button mat-raised-button color="primary" (click)="add()" *ngIf="!dataObject.data[0]"> <fa-icon icon="plus" class="m-r-10"></fa-icon>Add
<fa-icon icon="plus"></fa-icon>&nbsp;&nbsp;Add </button>
</button> <button mat-raised-button color="primary" (click)="edit()" *ngIf="dataObject.data[0]">
</span> <fa-icon icon="edit" class="m-r-10"></fa-icon>Edit
<span *mifosxHasPermission="'UPDATE_' + datatableName"> </button>
<button mat-raised-button color="primary" (click)="edit()" *ngIf="dataObject.data[0]"> <button class="delete-button" mat-raised-button color="warn" (click)="delete()" *ngIf="dataObject.data[0]">
<fa-icon icon="edit"></fa-icon>&nbsp;&nbsp;Edit <fa-icon icon="trash" class="m-r-10"></fa-icon>Delete All
</button> </button>
</span>
<span *mifosxHasPermission="'DELETE_' + datatableName" class="delete-button">
<button mat-raised-button color="warn" (click)="delete()" *ngIf="dataObject.data[0]">
<fa-icon icon="trash"></fa-icon>&nbsp;&nbsp;Delete
</button>
</span>
</div> </div>
<mat-list role="list" *ngIf="dataObject.data[0]"> <mat-divider></mat-divider>
<mat-list-item role="listitem" *ngFor="let columnHeader of dataObject.columnHeaders;let i = index">
{{columnHeader.columnName}} : {{dataObject.data[0].row[i]}} <ng-container *ngIf="dataObject.data.length > 0">
</mat-list-item>
</mat-list> <div *ngFor="let columnHeader of dataObject.columnHeaders;let i = index" class="table-data">
<div fxFlex="45%" class="mat-body-strong left">
{{columnHeader.columnName}}
</div>
<div fxFlex="45%" [ngSwitch]="columnHeader.columnDisplayType" class="right">
<span *ngSwitchCase="'DATE'">
{{dataObject.data[0].row[i] | dateFormat}}
</span>
<span *ngSwitchCase="'DATETIME'">
{{dataObject.data[0].row[i] | datetimeFormat}}
</span>
<span *ngSwitchCase="'INTEGER' || 'DECIMAL'">
{{dataObject.data[0].row[i] | number}}
</span>
<span *ngSwitchDefault>
{{dataObject.data[0].row[i]}}
</span>
</div>
</div>
</ng-container>
</div> </div>
@@ -5,14 +5,14 @@
<h3>{{datatableName}}</h3> <h3>{{datatableName}}</h3>
</div> </div>
<div class="action-button m-b-5" fxLayoutGap="10px"> <div class="action-button m-b-5" fxLayoutGap="10px">
<span *mifosxHasPermission="'CREATE_' + datatableName"> <span>
<button mat-raised-button color="primary" (click)="add()"> <button mat-raised-button color="primary" (click)="add()">
<fa-icon icon="plus"></fa-icon>&nbsp;&nbsp;Add <fa-icon icon="plus" class="m-r-10"></fa-icon>Add
</button> </button>
</span> </span>
<span *mifosxHasPermission="'DELETE_' + datatableName"> <span>
<button class="delete-button" mat-raised-button color="warn" (click)="delete()" *ngIf="showDeleteBotton"> <button class="delete-button" mat-raised-button color="warn" (click)="delete()" *ngIf="showDeleteBotton">
<fa-icon icon="trash"></fa-icon>&nbsp;&nbsp;Delete All <fa-icon icon="trash" class="m-r-10"></fa-icon>Delete All
</button> </button>
</span> </span>
</div> </div>
@@ -22,8 +22,8 @@
<table #dataTable mat-table [hidden]="!datatableData[0]" [dataSource]="datatableData" class="mat-elevation-z1 m-b-25"> <table #dataTable mat-table [hidden]="!datatableData[0]" [dataSource]="datatableData" class="mat-elevation-z1 m-b-25">
<ng-container *ngFor="let datatableColumn of datatableColumns;let i = index" [matColumnDef]="datatableColumn"> <ng-container *ngFor="let datatableColumn of datatableColumns;let i = index" [matColumnDef]="datatableColumn">
<th mat-header-cell *matHeaderCellDef> {{datatableColumn}} </th> <th mat-header-cell class="right" *matHeaderCellDef> {{datatableColumn}} </th>
<td mat-cell *matCellDef="let data"> {{data.row[i]}} </td> <td mat-cell class="right" *matCellDef="let data">{{ formatValue(i, data.row[i]) }}</td>
</ng-container> </ng-container>
<tr mat-header-row *matHeaderRowDef="datatableColumns"></tr> <tr mat-header-row *matHeaderRowDef="datatableColumns"></tr>
@@ -16,6 +16,9 @@ import { FormfieldBase } from 'app/shared/form-dialog/formfield/model/formfield-
import { LoansService } from '../../../loans.service'; import { LoansService } from '../../../loans.service';
import { Dates } from 'app/core/utils/dates'; import { Dates } from 'app/core/utils/dates';
import { Datatables } from 'app/core/utils/datatables'; import { Datatables } from 'app/core/utils/datatables';
import { DateFormatPipe } from 'app/pipes/date-format.pipe';
import { DatetimeFormatPipe } from 'app/pipes/datetime-format.pipe';
import { DecimalPipe, NumberFormatStyle } from '@angular/common';
/** /**
* Loan Multi Row Data Tables * Loan Multi Row Data Tables
@@ -58,7 +61,10 @@ export class MultiRowComponent implements OnInit, OnChanges {
private loansService: LoansService, private loansService: LoansService,
private dialog: MatDialog, private dialog: MatDialog,
private settingsService: SettingsService, private settingsService: SettingsService,
private datatables: Datatables) { private datatables: Datatables,
private dateFormat: DateFormatPipe,
private dateTimeFormat: DatetimeFormatPipe,
private numberFormat: DecimalPipe) {
this.loanId = this.route.parent.parent.snapshot.paramMap.get('loanId'); this.loanId = this.route.parent.parent.snapshot.paramMap.get('loanId');
} }
@@ -134,4 +140,16 @@ export class MultiRowComponent implements OnInit, OnChanges {
}); });
} }
formatValue(index: number, value: any): any {
const columnDisplayType = this.dataObject.columnHeaders[index].columnDisplayType;
if (columnDisplayType === 'DATE') {
return this.dateFormat.transform(value);
} else if (columnDisplayType === 'DATETIME') {
return this.dateTimeFormat.transform(value);
} else if (columnDisplayType === 'INTEGER' || columnDisplayType === 'DECIMAL') {
return this.numberFormat.transform(value);
}
return value;
}
} }
@@ -2,25 +2,25 @@
<div> <div>
<div fxLayout="column" fxFlex="50%" class="tableName"> <div fxLayout="column" fxFlex="50%" class="table-name">
<h3>{{datatableName}}</h3> <h3>{{datatableName}}</h3>
</div> </div>
<div fxLayout="column" fxFlex="50%" > <div fxLayout="column" fxFlex="50%">
<div fxLayout="row" fxLayoutAlign="flex-end"> <div fxLayout="row" fxLayoutAlign="flex-end">
<span *mifosxHasPermission="'CREATE_' + datatableName"> <span>
<button mat-raised-button color="primary" (click)="add()" *ngIf="!dataObject.data[0]"> <button mat-raised-button color="primary" (click)="add()" *ngIf="!dataObject.data[0]">
<fa-icon icon="plus"></fa-icon>&nbsp;&nbsp;Add <fa-icon icon="plus" class="m-r-10"></fa-icon>Add
</button> </button>
</span> </span>
<span *mifosxHasPermission="'UPDATE_' + datatableName"> <span>
<button mat-raised-button color="primary" (click)="edit()" *ngIf="dataObject.data[0]"> <button mat-raised-button color="primary" (click)="edit()" *ngIf="dataObject.data[0]">
<fa-icon icon="edit"></fa-icon>&nbsp;&nbsp;Edit <fa-icon icon="edit" class="m-r-10"></fa-icon>Edit
</button> </button>
</span> </span>
<span *mifosxHasPermission="'DELETE_' + datatableName" class="delete-button"> <span class="delete-button">
<button mat-raised-button color="warn" (click)="delete()" *ngIf="dataObject.data[0]"> <button mat-raised-button color="warn" (click)="delete()" *ngIf="dataObject.data[0]">
<fa-icon icon="trash"></fa-icon>&nbsp;&nbsp;Delete <fa-icon icon="trash" class="m-r-10"></fa-icon>Delete
</button> </button>
</span> </span>
</div> </div>
@@ -30,12 +30,29 @@
<mat-divider></mat-divider> <mat-divider></mat-divider>
<div> <ng-container *ngIf="dataObject.data.length > 0">
<mat-list role="list" *ngIf="dataObject.data[0]">
<mat-list-item role="listitem" *ngFor="let columnHeader of dataObject.columnHeaders;let i = index"> <div *ngFor="let columnHeader of dataObject.columnHeaders;let i = index" class="table-data">
{{columnHeader.columnName}} : {{dataObject.data[0].row[i]}}
</mat-list-item> <div fxFlex="45%" class="mat-body-strong left">
</mat-list> {{columnHeader.columnName}}
</div> </div>
<div fxFlex="45%" [ngSwitch]="columnHeader.columnDisplayType" class="right">
<span *ngSwitchCase="'DATE'">
{{dataObject.data[0].row[i] | dateFormat}}
</span>
<span *ngSwitchCase="'DATETIME'">
{{dataObject.data[0].row[i] | datetimeFormat}}
</span>
<span *ngSwitchCase="'INTEGER' || 'DECIMAL'">
{{dataObject.data[0].row[i] | number}}
</span>
<span *ngSwitchDefault>
{{dataObject.data[0].row[i]}}
</span>
</div>
</div>
</ng-container>
</div> </div>
@@ -6,6 +6,6 @@
} }
} }
.tableName { .table-name {
padding-left: 2%; padding-left: 2%;
} }
@@ -4,14 +4,18 @@
<fa-icon icon="flag"></fa-icon>&nbsp;&nbsp; <fa-icon icon="flag"></fa-icon>&nbsp;&nbsp;
Edit Edit
</button> </button>
<button mat-raised-button color="accent" *mifosxHasPermission="'PAY_SAVINGSACCOUNTCHARGE'" (click)="payCharge()"> <span *ngIf="allowPayCharge">
<fa-icon icon="dollar-sign"></fa-icon>&nbsp;&nbsp; <button mat-raised-button color="accent" *mifosxHasPermission="'PAY_SAVINGSACCOUNTCHARGE'" (click)="payCharge()">
Pay <fa-icon icon="dollar-sign"></fa-icon>&nbsp;&nbsp;
</button> Pay
<button mat-raised-button color="primary" *mifosxHasPermission="'WAIVE_SAVINGSACCOUNTCHARGE'" (click)="waiveCharge()"> </button>
<fa-icon icon="flag"></fa-icon>&nbsp;&nbsp; </span>
Waive <span *ngIf="allowWaive">
</button> <button mat-raised-button color="primary" *mifosxHasPermission="'WAIVE_SAVINGSACCOUNTCHARGE'" (click)="waiveCharge()">
<fa-icon icon="flag"></fa-icon>&nbsp;&nbsp;
Waive
</button>
</span>
</div> </div>
<div *ngIf="loansAccountData.status.value === 'Submitted and pending approval'" fxLayout="row" fxLayoutAlign="end" <div *ngIf="loansAccountData.status.value === 'Submitted and pending approval'" fxLayout="row" fxLayoutAlign="end"
@@ -32,6 +32,8 @@ export class ViewChargeComponent {
chargeData: any; chargeData: any;
/** Loans Account Data */ /** Loans Account Data */
loansAccountData: any; loansAccountData: any;
allowPayCharge = true;
allowWaive = true;
/** /**
* Retrieves the Charge data from `resolve`. * Retrieves the Charge data from `resolve`.
@@ -50,6 +52,8 @@ export class ViewChargeComponent {
private settingsService: SettingsService) { private settingsService: SettingsService) {
this.route.data.subscribe((data: { loansAccountCharge: any, loanDetailsData: any }) => { this.route.data.subscribe((data: { loansAccountCharge: any, loanDetailsData: any }) => {
this.chargeData = data.loansAccountCharge; this.chargeData = data.loansAccountCharge;
this.allowPayCharge = (this.chargeData.chargeTimeType.code === 'chargeTimeType.instalmentFee');
this.allowWaive = !this.chargeData.chargeTimeType.waived;
this.loansAccountData = data.loanDetailsData; this.loansAccountData = data.loanDetailsData;
}); });
} }
@@ -21,8 +21,8 @@
<table #dataTable mat-table [hidden]="!datatableData[0]" [dataSource]="datatableData" class="mat-elevation-z1 m-b-25"> <table #dataTable mat-table [hidden]="!datatableData[0]" [dataSource]="datatableData" class="mat-elevation-z1 m-b-25">
<ng-container *ngFor="let datatableColumn of datatableColumns;let i = index" [matColumnDef]="datatableColumn"> <ng-container *ngFor="let datatableColumn of datatableColumns;let i = index" [matColumnDef]="datatableColumn">
<th mat-header-cell *matHeaderCellDef> {{datatableColumn}} </th> <th mat-header-cell class="right" *matHeaderCellDef> {{datatableColumn}} </th>
<td mat-cell *matCellDef="let data"> {{data.row[i]}} </td> <td mat-cell class="right" *matCellDef="let data">{{ formatValue(i, data.row[i]) }}</td>
</ng-container> </ng-container>
<tr mat-header-row *matHeaderRowDef="datatableColumns"></tr> <tr mat-header-row *matHeaderRowDef="datatableColumns"></tr>
@@ -16,6 +16,9 @@ import { OrganizationService } from '../../../../organization.service';
import { SettingsService } from 'app/settings/settings.service'; import { SettingsService } from 'app/settings/settings.service';
import { Dates } from 'app/core/utils/dates'; import { Dates } from 'app/core/utils/dates';
import { Datatables } from 'app/core/utils/datatables'; import { Datatables } from 'app/core/utils/datatables';
import { DateFormatPipe } from 'app/pipes/date-format.pipe';
import { DatetimeFormatPipe } from 'app/pipes/datetime-format.pipe';
import { DecimalPipe } from '@angular/common';
/** /**
* Office Multi Row Data Tables * Office Multi Row Data Tables
@@ -57,7 +60,10 @@ export class MultiRowComponent implements OnInit, OnChanges {
private organizationService: OrganizationService, private organizationService: OrganizationService,
private settingsService: SettingsService, private settingsService: SettingsService,
private dialog: MatDialog, private dialog: MatDialog,
private datatables: Datatables) { private datatables: Datatables,
private dateFormat: DateFormatPipe,
private dateTimeFormat: DatetimeFormatPipe,
private numberFormat: DecimalPipe) {
this.officeId = this.route.parent.parent.snapshot.paramMap.get('id'); this.officeId = this.route.parent.parent.snapshot.paramMap.get('id');
} }
@@ -133,4 +139,16 @@ export class MultiRowComponent implements OnInit, OnChanges {
}); });
} }
formatValue(index: number, value: any): any {
const columnDisplayType = this.dataObject.columnHeaders[index].columnDisplayType;
if (columnDisplayType === 'DATE') {
return this.dateFormat.transform(value);
} else if (columnDisplayType === 'DATETIME') {
return this.dateTimeFormat.transform(value);
} else if (columnDisplayType === 'INTEGER' || columnDisplayType === 'DECIMAL') {
return this.numberFormat.transform(value);
}
return value;
}
} }
@@ -1,29 +1,42 @@
<div class="tab-container mat-typography"> <div class="tab-container mat-typography">
<h3>{{datatableName}}</h3> <h3>{{datatableName}}</h3>
<div fxLayout="row" fxLayoutAlign="flex-end"> <div fxLayout="row" fxLayoutAlign="flex-end">
<span *mifosxHasPermission="'CREATE_' + datatableName"> <button mat-raised-button color="primary" (click)="add()" *ngIf="!dataObject.data[0]">
<button mat-raised-button color="primary" (click)="add()" *ngIf="!dataObject.data[0]"> <fa-icon icon="plus" class="m-r-10"></fa-icon>Add
<fa-icon icon="plus"></fa-icon>&nbsp;&nbsp;Add </button>
</button> <button mat-raised-button color="primary" (click)="edit()" *ngIf="dataObject.data[0]">
</span> <fa-icon icon="edit" class="m-r-10"></fa-icon>Edit
<span *mifosxHasPermission="'UPDATE_' + datatableName"> </button>
<button mat-raised-button color="primary" (click)="edit()" *ngIf="dataObject.data[0]"> <button class="delete-button" mat-raised-button color="warn" (click)="delete()" *ngIf="dataObject.data[0]">
<fa-icon icon="edit"></fa-icon>&nbsp;&nbsp;Edit <fa-icon icon="trash" class="m-r-10"></fa-icon>Delete All
</button> </button>
</span>
<span *mifosxHasPermission="'DELETE_' + datatableName" class="delete-button">
<button mat-raised-button color="warn" (click)="delete()" *ngIf="dataObject.data[0]">
<fa-icon icon="trash"></fa-icon>&nbsp;&nbsp;Delete
</button>
</span>
</div> </div>
<mat-list role="list" *ngIf="dataObject.data[0]"> <mat-divider></mat-divider>
<mat-list-item role="listitem" *ngFor="let columnHeader of dataObject.columnHeaders;let i = index">
{{columnHeader.columnName}} : {{dataObject.data[0].row[i]}} <ng-container *ngIf="dataObject.data.length > 0">
</mat-list-item>
</mat-list> <div *ngFor="let columnHeader of dataObject.columnHeaders;let i = index" class="table-data">
<div fxFlex="45%" class="mat-body-strong left">
{{columnHeader.columnName}}
</div>
<div fxFlex="45%" [ngSwitch]="columnHeader.columnDisplayType" class="right">
<span *ngSwitchCase="'DATE'">
{{dataObject.data[0].row[i] | dateFormat}}
</span>
<span *ngSwitchCase="'DATETIME'">
{{dataObject.data[0].row[i] | datetimeFormat}}
</span>
<span *ngSwitchCase="'INTEGER' || 'DECIMAL'">
{{dataObject.data[0].row[i] | number}}
</span>
<span *ngSwitchDefault>
{{dataObject.data[0].row[i]}}
</span>
</div>
</div>
</ng-container>
</div> </div>
+1 -1
View File
@@ -10,7 +10,7 @@ export class DateFormatPipe implements PipeTransform {
constructor(private settingsService: SettingsService) { constructor(private settingsService: SettingsService) {
} }
transform(value: any, dateFormat: string): any { transform(value: any, dateFormat?: string): any {
const defaultDateFormat = this.settingsService.dateFormat.replace('dd', 'DD'); const defaultDateFormat = this.settingsService.dateFormat.replace('dd', 'DD');
if (typeof value === 'undefined') { if (typeof value === 'undefined') {
return ''; return '';
+1 -1
View File
@@ -10,7 +10,7 @@ export class DatetimeFormatPipe implements PipeTransform {
constructor(private settingsService: SettingsService) { constructor(private settingsService: SettingsService) {
} }
transform(value: any, datetimeFormat: string): any { transform(value: any, datetimeFormat?: string): any {
const defaultDateFormat = this.settingsService.dateFormat.replace('dd', 'DD'); const defaultDateFormat = this.settingsService.dateFormat.replace('dd', 'DD');
if (typeof value === 'undefined') { if (typeof value === 'undefined') {
return ''; return '';
@@ -21,8 +21,8 @@
<table #dataTable mat-table [hidden]="!datatableData[0]" [dataSource]="datatableData" class="mat-elevation-z1 m-b-25"> <table #dataTable mat-table [hidden]="!datatableData[0]" [dataSource]="datatableData" class="mat-elevation-z1 m-b-25">
<ng-container *ngFor="let datatableColumn of datatableColumns;let i = index" [matColumnDef]="datatableColumn"> <ng-container *ngFor="let datatableColumn of datatableColumns;let i = index" [matColumnDef]="datatableColumn">
<th mat-header-cell *matHeaderCellDef> {{datatableColumn}} </th> <th mat-header-cell class="right" *matHeaderCellDef> {{datatableColumn}} </th>
<td mat-cell *matCellDef="let data"> {{data.row[i]}} </td> <td mat-cell class="right" *matCellDef="let data">{{ formatValue(i, data.row[i]) }}</td>
</ng-container> </ng-container>
<tr mat-header-row *matHeaderRowDef="datatableColumns"></tr> <tr mat-header-row *matHeaderRowDef="datatableColumns"></tr>
@@ -20,6 +20,9 @@ import { DatepickerBase } from 'app/shared/form-dialog/formfield/model/datepicke
import { SavingsService } from '../../../savings.service'; import { SavingsService } from '../../../savings.service';
import { Dates } from 'app/core/utils/dates'; import { Dates } from 'app/core/utils/dates';
import { Datatables } from 'app/core/utils/datatables'; import { Datatables } from 'app/core/utils/datatables';
import { DateFormatPipe } from 'app/pipes/date-format.pipe';
import { DatetimeFormatPipe } from 'app/pipes/datetime-format.pipe';
import { DecimalPipe } from '@angular/common';
/** /**
* Savings Account Multi Row Data Tables * Savings Account Multi Row Data Tables
@@ -62,7 +65,10 @@ export class MultiRowComponent implements OnInit, OnChanges {
private savingsService: SavingsService, private savingsService: SavingsService,
private dialog: MatDialog, private dialog: MatDialog,
private settingsService: SettingsService, private settingsService: SettingsService,
private datatables: Datatables) { private datatables: Datatables,
private dateFormat: DateFormatPipe,
private dateTimeFormat: DatetimeFormatPipe,
private numberFormat: DecimalPipe) {
this.savingAccountId = this.route.parent.parent.snapshot.paramMap.get('savingAccountId'); this.savingAccountId = this.route.parent.parent.snapshot.paramMap.get('savingAccountId');
} }
@@ -138,4 +144,16 @@ export class MultiRowComponent implements OnInit, OnChanges {
}); });
} }
formatValue(index: number, value: any): any {
const columnDisplayType = this.dataObject.columnHeaders[index].columnDisplayType;
if (columnDisplayType === 'DATE') {
return this.dateFormat.transform(value);
} else if (columnDisplayType === 'DATETIME') {
return this.dateTimeFormat.transform(value);
} else if (columnDisplayType === 'INTEGER' || columnDisplayType === 'DECIMAL') {
return this.numberFormat.transform(value);
}
return value;
}
} }
@@ -1,29 +1,42 @@
<div class="tab-container mat-typography"> <div class="tab-container mat-typography">
<h3>{{datatableName}}</h3> <h3>{{datatableName}}</h3>
<div fxLayout="row" fxLayoutAlign="flex-end"> <div fxLayout="row" fxLayoutAlign="flex-end">
<span *mifosxHasPermission="'CREATE_' + datatableName"> <button mat-raised-button color="primary" (click)="add()" *ngIf="!dataObject.data[0]">
<button mat-raised-button color="primary" (click)="add()" *ngIf="!dataObject.data[0]"> <fa-icon icon="plus" class="m-r-10"></fa-icon>Add
<fa-icon icon="plus"></fa-icon>&nbsp;&nbsp;Add </button>
</button> <button mat-raised-button color="primary" (click)="edit()" *ngIf="dataObject.data[0]">
</span> <fa-icon icon="edit" class="m-r-10"></fa-icon>Edit
<span *mifosxHasPermission="'UPDATE_' + datatableName"> </button>
<button mat-raised-button color="primary" (click)="edit()" *ngIf="dataObject.data[0]"> <button class="delete-button" mat-raised-button color="warn" (click)="delete()" *ngIf="dataObject.data[0]">
<fa-icon icon="edit"></fa-icon>&nbsp;&nbsp;Edit <fa-icon icon="trash" class="m-r-10"></fa-icon>Delete All
</button> </button>
</span>
<span *mifosxHasPermission="'DELETE_' + datatableName" class="delete-button">
<button mat-raised-button color="warn" (click)="delete()" *ngIf="dataObject.data[0]">
<fa-icon icon="trash"></fa-icon>&nbsp;&nbsp;Delete
</button>
</span>
</div> </div>
<mat-list role="list" *ngIf="dataObject.data[0]"> <mat-divider></mat-divider>
<mat-list-item role="listitem" *ngFor="let columnHeader of dataObject.columnHeaders;let i = index">
{{columnHeader.columnName}} : {{dataObject.data[0].row[i]}} <ng-container *ngIf="dataObject.data.length > 0">
</mat-list-item>
</mat-list> <div *ngFor="let columnHeader of dataObject.columnHeaders;let i = index" class="table-data">
<div fxFlex="45%" class="mat-body-strong left">
{{columnHeader.columnName}}
</div>
<div fxFlex="45%" [ngSwitch]="columnHeader.columnDisplayType" class="right">
<span *ngSwitchCase="'DATE'">
{{dataObject.data[0].row[i] | dateFormat}}
</span>
<span *ngSwitchCase="'DATETIME'">
{{dataObject.data[0].row[i] | datetimeFormat}}
</span>
<span *ngSwitchCase="'INTEGER' || 'DECIMAL'">
{{dataObject.data[0].row[i] | number}}
</span>
<span *ngSwitchDefault>
{{dataObject.data[0].row[i]}}
</span>
</div>
</div>
</ng-container>
</div> </div>