Upgrade to Angular 16

Merge `angular-update-16` into `dev` branch
This commit is contained in:
Adam Saghy
2025-05-23 18:47:20 +02:00
parent c7c2f60182
commit 19a14e5b5b
882 changed files with 14895 additions and 14340 deletions
@@ -1,6 +1,5 @@
/** Angular Imports */
import { Injectable } from '@angular/core';
import { Resolve } from '@angular/router';
/** rxjs Imports */
import { Observable } from 'rxjs';
@@ -12,7 +11,7 @@ import { OrganizationService } from 'app/organization/organization.service';
* Adhoc Query template data resolver.
*/
@Injectable()
export class AdhocQueryTemplateResolver implements Resolve<Object> {
export class AdhocQueryTemplateResolver {
/**
* @param {OrganizationService} organizationService Organization service.
*/
@@ -1,4 +1,4 @@
<div class="container m-b-20" fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px">
<div class="container m-b-20 layout-row align-end gap-20px">
<button mat-raised-button color="primary" [routerLink]="['create']" *mifosxHasPermission="'CREATE_ADHOC'">
<fa-icon icon="plus" class="m-r-10"></fa-icon>
{{ 'labels.buttons.Create AdHoc Query' | translate }}
@@ -6,8 +6,8 @@
</div>
<div class="container">
<div fxLayout="row" fxLayoutGap="20px">
<mat-form-field fxFlex>
<div class="layout-row gap-20px">
<mat-form-field class="flex-fill">
<mat-label>{{ 'labels.inputs.Filter' | translate }}</mat-label>
<input matInput (keyup)="applyFilter($event.target.value)" />
</mat-form-field>
@@ -1,6 +1,5 @@
/** Angular Imports */
import { Injectable } from '@angular/core';
import { Resolve } from '@angular/router';
/** rxjs Imports */
import { Observable } from 'rxjs';
@@ -12,7 +11,7 @@ import { OrganizationService } from '../../organization.service';
* Adhoc Queries data resolver.
*/
@Injectable()
export class AdhocQueriesResolver implements Resolve<Object> {
export class AdhocQueriesResolver {
/**
* @param {OrganizationService} organizationService Organization service.
*/
@@ -1,6 +1,6 @@
/** Angular Imports */
import { Injectable } from '@angular/core';
import { Resolve, ActivatedRouteSnapshot } from '@angular/router';
import { ActivatedRouteSnapshot } from '@angular/router';
/** rxjs Imports */
import { Observable } from 'rxjs';
@@ -12,7 +12,7 @@ import { OrganizationService } from 'app/organization/organization.service';
* Adhoc Query and template data resolver.
*/
@Injectable()
export class AdhocQueryAndTemplateResolver implements Resolve<Object> {
export class AdhocQueryAndTemplateResolver {
/**
* @param {OrganizationService} organizationService Organization service.
*/
@@ -1,6 +1,6 @@
/** Angular Imports */
import { Injectable } from '@angular/core';
import { Resolve, ActivatedRouteSnapshot } from '@angular/router';
import { ActivatedRouteSnapshot } from '@angular/router';
/** rxjs Imports */
import { Observable } from 'rxjs';
@@ -12,7 +12,7 @@ import { OrganizationService } from 'app/organization/organization.service';
* Adhoc Query data resolver.
*/
@Injectable()
export class AdhocQueryResolver implements Resolve<Object> {
export class AdhocQueryResolver {
/**
* @param {OrganizationService} organizationService Organization service.
*/
@@ -2,7 +2,7 @@
<mat-card>
<form [formGroup]="adhocQueryForm" (ngSubmit)="submit()">
<mat-card-content>
<div fxLayout="column">
<div class="layout-column">
<mat-form-field>
<mat-label>{{ 'labels.inputs.name' | translate }}</mat-label>
<input matInput required formControlName="name" />
@@ -76,7 +76,7 @@
</div>
</mat-card-content>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<mat-card-actions class="layout-row align-center gap-5px responsive-column">
<button type="button" mat-raised-button [routerLink]="['../']">
{{ 'labels.buttons.Cancel' | translate }}
</button>
@@ -2,7 +2,7 @@
<mat-card>
<form [formGroup]="editAdhocQueryForm" (ngSubmit)="submit()">
<mat-card-content>
<div fxLayout="column">
<div class="layout-column">
<mat-form-field>
<mat-label>{{ 'labels.inputs.name' | translate }}</mat-label>
<input matInput required formControlName="name" />
@@ -76,7 +76,7 @@
</div>
</mat-card-content>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<mat-card-actions class="layout-row align-center gap-5px responsive-column">
<button type="button" mat-raised-button [routerLink]="['../']">
{{ 'labels.buttons.Cancel' | translate }}
</button>
@@ -1,4 +1,4 @@
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column" class="container m-b-20">
<div class="layout-row align-end gap-2px responsive-column container m-b-20">
<button mat-raised-button color="primary" [routerLink]="['edit']" *mifosxHasPermission="'UPDATE_ADHOC'">
<fa-icon icon="edit" class="m-r-10"></fa-icon>
{{ 'labels.buttons.Edit' | translate }}
@@ -12,52 +12,52 @@
<div class="container">
<mat-card>
<mat-card-content>
<div fxLayout="row wrap" class="content">
<div fxFlex="50%" class="mat-body-strong">
<div class="layout-row-wrap">
<div class="flex-50 mat-body-strong">
{{ 'labels.inputs.name' | translate }}
</div>
<div fxFlex="50%">
<div class="flex-50">
{{ adhocQueryData.name }}
</div>
<div fxFlex="50%" class="mat-body-strong">
<div class="flex-50 mat-body-strong">
{{ 'labels.inputs.Query' | translate }}
</div>
<div fxFlex="50%">
<div class="flex-50">
{{ adhocQueryData.query }}
</div>
<div fxFlex="50%" class="mat-body-strong">
<div class="flex-50 mat-body-strong">
{{ 'labels.inputs.Table Affected' | translate }}
</div>
<div fxFlex="50%">
<div class="flex-50">
{{ adhocQueryData.tableName }}
</div>
<div fxFlex="50%" class="mat-body-strong" *ngIf="adhocQueryData.reportRunFrequency">
<div class="flex-50 mat-body-strong" *ngIf="adhocQueryData.reportRunFrequency">
{{ 'labels.inputs.Report Run Frequency' | translate }}
</div>
<div fxFlex="50%" *ngIf="adhocQueryData.reportRunFrequency">
<div class="flex-50" *ngIf="adhocQueryData.reportRunFrequency">
{{ reportRunFrequency }}
</div>
<div fxFlex="50%" class="mat-body-strong">
<div class="flex-50 mat-body-strong">
{{ 'labels.inputs.Status' | translate }}
</div>
<div fxFlex="50%">
<div class="flex-50">
{{ adhocQueryData.isActive === true ? 'Active' : 'Inactive' }}
</div>
<div fxFlex="50%" class="mat-body-strong">
<div class="flex-50 mat-body-strong">
{{ 'labels.inputs.Created By' | translate }}
</div>
<div fxFlex="50%">
<div class="flex-50">
{{ adhocQueryData.createdBy }}
</div>
</div>
@@ -1,8 +1,8 @@
<!-- TODO: Refactor Permissions -->
<div class="container">
<mat-card>
<div fxLayout="row" fxLayout.lt-md="column" fxLayoutGap="20px">
<div fxFlex="50%">
<div class="layout-row responsive-column gap-20px">
<div class="flex-50">
<mat-nav-list>
<mat-list-item *mifosxHasPermission="'READ_OFFICE'">
<mat-icon matListIcon [routerLink]="['Offices']">
@@ -109,7 +109,7 @@
</mat-nav-list>
</div>
<div fxFlex="50%">
<div class="flex-50">
<mat-nav-list>
<mat-list-item *mifosxHasPermission="'READ_OFFICE'">
<mat-icon matListIcon [routerLink]="['Employees']">
@@ -1,6 +1,6 @@
/** Angular Imports */
import { Injectable } from '@angular/core';
import { Resolve, ActivatedRouteSnapshot } from '@angular/router';
import { ActivatedRouteSnapshot } from '@angular/router';
/** rxjs Imports */
import { Observable } from 'rxjs';
@@ -15,7 +15,7 @@ import { BulkImports } from './view-bulk-import/bulk-imports';
* Bulk Imports data resolver.
*/
@Injectable()
export class BulkImportResolver implements Resolve<Object> {
export class BulkImportResolver {
bulkImportsArray = BulkImports;
/**
@@ -1,6 +1,6 @@
<div class="container">
<div fxLayoutGap="2%" class="m-b-20">
<mat-card fxLayout="column" fxLayoutGap="2%" fxFlex="50%">
<div class="gap-2percent m-b-20">
<mat-card class="layout-column gap-2percent flex-50">
<h3>
<strong>{{ bulkImport.name }} {{ 'labels.heading.Template' | translate }}</strong>
</h3>
@@ -8,7 +8,7 @@
<form [formGroup]="bulkImportForm">
<mat-card-content>
<div *ngIf="bulkImport.formFields >= 1">
<mat-form-field fxFlex>
<mat-form-field class="flex-fill">
<mat-label>{{ 'labels.inputs.Office' | translate }}</mat-label>
<mat-select formControlName="officeId">
<mat-option *ngFor="let office of officeData" [value]="office.id">
@@ -19,7 +19,7 @@
</div>
<div *ngIf="bulkImport.formFields >= 2">
<mat-form-field fxFlex>
<mat-form-field class="flex-fill">
<mat-label>{{ 'labels.inputs.Staff' | translate }}</mat-label>
<mat-select formControlName="staffId">
<mat-option *ngFor="let staff of staffData" [value]="staff.id">
@@ -30,7 +30,7 @@
</div>
<div *ngIf="bulkImport.formFields === 3">
<mat-form-field fxFlex>
<mat-form-field class="flex-fill">
<mat-label>{{ 'labels.inputs.Legal Form' | translate }}</mat-label>
<mat-select required formControlName="legalForm">
<mat-option value="Entity">{{ 'labels.inputs.Entity' | translate }}</mat-option>
@@ -41,7 +41,7 @@
</mat-card-content>
</form>
<div fxFlex="13%">
<div class="flex-13">
<button
mat-raised-button
color="primary"
@@ -53,7 +53,7 @@
</div>
</mat-card>
<mat-card fxLayout="column" fxLayoutGap="2%" fxFlex="50%">
<mat-card class="layout-column gap-2percent flex-50">
<h3>
<strong>{{ bulkImport.name }}</strong>
</h3>
@@ -66,13 +66,13 @@
'labels.text.Please retain the value Entity/Person in the filename.' | translate
}}</mat-hint>
<div fxFlex="13%">
<div class="flex-13">
<button mat-raised-button color="primary" [disabled]="!template" (click)="uploadTemplate()">
<i class="fa fa-upload"></i>&nbsp;&nbsp;{{ 'labels.buttons.Upload' | translate }}
</button>
</div>
<div *ngIf="bulkImport.formFields >= 2" fxFlex class="cover"></div>
<div *ngIf="bulkImport.formFields >= 2" class="flex cover"></div>
</mat-card>
</div>
@@ -83,7 +83,7 @@
</h3>
</div>
<div class="m-b-10" fxLayoutAlign="end">
<div class="m-b-10 layout-align-end">
<button mat-raised-button color="primary" (click)="refreshDocuments()">
<i class="fa fa-repeat"></i>&nbsp;&nbsp;{{ 'labels.buttons.Refresh' | translate }}
</button>
@@ -2,8 +2,8 @@
<mat-card>
<form [formGroup]="bulkLoanForm" (ngSubmit)="submit()">
<mat-card-content>
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
<mat-form-field fxFlex="48%">
<div class="layout-row-wrap gap-2px responsive-column">
<mat-form-field class="flex-48">
<mat-label>{{ 'labels.inputs.Office' | translate }}</mat-label>
<mat-select required (selectionChange)="getOffice($event.value)">
<mat-option *ngFor="let office of offices" [value]="office.id">
@@ -13,8 +13,8 @@
</mat-form-field>
</div>
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
<mat-form-field fxFlex="48%" (click)="assignmentDatePicker.open()">
<div class="layout-row-wrap gap-2px responsive-column">
<mat-form-field class="flex-48" (click)="assignmentDatePicker.open()">
<mat-label>{{ 'labels.inputs.Assignment Date' | translate }}</mat-label>
<input
matInput
@@ -33,8 +33,8 @@
</mat-form-field>
</div>
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
<mat-form-field fxFlex="48%" *ngIf="fromLoanOfficers !== undefined">
<div class="layout-row-wrap gap-2px responsive-column">
<mat-form-field class="flex-48" *ngIf="fromLoanOfficers !== undefined">
<mat-label>{{ 'labels.inputs.From loan officer' | translate }}</mat-label>
<mat-select required formControlName="fromLoanOfficerId" (selectionChange)="getFromOfficers($event.value)">
<mat-option *ngFor="let fromOfficers of fromLoanOfficers" [value]="fromOfficers.id">
@@ -48,8 +48,8 @@
</mat-form-field>
</div>
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
<mat-form-field fxFlex="48%">
<div class="layout-row-wrap gap-2px responsive-column">
<mat-form-field class="flex-48">
<mat-label>{{ 'labels.inputs.To loan officer' | translate }}</mat-label>
<mat-select required formControlName="toLoanOfficerId">
<mat-option *ngFor="let toOfficers of toLoanOfficers" [value]="toOfficers.id">
@@ -63,8 +63,8 @@
</mat-form-field>
</div>
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
<table *ngIf="officerTemplate !== undefined" fxFlex="48%">
<div class="layout-row-wrap gap-2px responsive-column">
<table *ngIf="officerTemplate !== undefined" class="flex-48">
<thead>
<th>{{ 'labels.inputs.Clients' | translate }}</th>
</thead>
@@ -90,7 +90,7 @@
</tbody>
</table>
<table *ngIf="officerTemplate !== undefined" fxFlex="48%">
<table *ngIf="officerTemplate !== undefined" class="flex-48">
<thead>
<th>{{ 'labels.inputs.Groups' | translate }}</th>
</thead>
@@ -116,7 +116,7 @@
</div>
</mat-card-content>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<mat-card-actions class="layout-row align-center gap-5px responsive-column">
<button type="button" mat-raised-button [routerLink]="['../']">
{{ 'labels.buttons.Cancel' | translate }}
</button>
@@ -1,4 +1,4 @@
<div class="container m-b-20" fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px">
<div class="container m-b-20 layout-row align-end gap-20px">
<div #buttonAddEdit class="in-block">
<button mat-raised-button color="primary" [routerLink]="'manage'" *mifosxHasPermission="'UPDATE_CURRENCY'">
<fa-icon icon="plus" class="m-r-10"></fa-icon>
@@ -8,8 +8,8 @@
</div>
<div class="container">
<div #filter fxLayout="row" fxLayoutGap="20px">
<mat-form-field fxFlex>
<div #filter class="layout-row gap-20px">
<mat-form-field class="flex-fill">
<mat-label>{{ 'labels.inputs.Filter' | translate }}</mat-label>
<input matInput (keyup)="applyFilter($event.target.value)" />
</mat-form-field>
@@ -38,7 +38,7 @@
<ng-template #templateButtonAddEdit let-popover="popover">
<h2>{{ 'labels.heading.Add/Edit Currency' | translate }}</h2>
<p class="mw300">{{ 'labels.text.List of all currencies currently in use' | translate }}</p>
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
<div class="layout-row align-end gap-2px responsive-column">
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
{{ 'labels.buttons.Close' | translate }}
</button>
@@ -57,7 +57,7 @@
<ng-template #templateFilter let-popover="popover">
<h4>{{ 'labels.heading.Search bar to filter currencies.' | translate }}</h4>
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
<div class="layout-row align-end gap-2px responsive-column">
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
{{ 'labels.buttons.Close' | translate }}
</button>
@@ -80,7 +80,7 @@
<ng-template #templateTableCurrencies let-popover="popover">
<h4>{{ 'labels.heading.List of currencies available.' | translate }}</h4>
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
<div class="layout-row align-end gap-2px responsive-column">
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
{{ 'labels.buttons.Close' | translate }}
</button>
@@ -1,6 +1,5 @@
/** Angular Imports */
import { Injectable } from '@angular/core';
import { Resolve } from '@angular/router';
/** rxjs Imports */
import { Observable } from 'rxjs';
@@ -12,7 +11,7 @@ import { OrganizationService } from '../organization.service';
* Currencies data resolver.
*/
@Injectable()
export class CurrenciesResolver implements Resolve<Object> {
export class CurrenciesResolver {
/**
* @param {OrganizationService} organizationService Organization service.
*/
@@ -4,13 +4,10 @@
<form
#formRef="ngForm"
[formGroup]="currencyForm"
fxLayout="row"
fxLayoutAlign="start baseline"
fxLayoutGap="20px"
fxFlex="48%"
class="layout-row align-start-baseline gap-20px flex-48"
(ngSubmit)="addCurrency()"
>
<mat-form-field fxFlex="calc(90%-20px)">
<mat-form-field class="flex-fill flex-90-minus-20px">
<mat-label>{{ 'labels.inputs.Currency' | translate }}</mat-label>
<mat-select required formControlName="currency">
<mat-option>
@@ -32,7 +29,7 @@
<button
mat-raised-button
fxFlex
class="flex-fill"
color="primary"
[disabled]="!currencyForm.valid"
*mifosxHasPermission="'UPDATE_CURRENCY'"
@@ -43,18 +40,22 @@
</div>
<mat-grid-list cols="2" rowHeight="50px">
<mat-grid-tile *ngFor="let currency of selectedCurrencies; index as i">
<input matInput [value]="currency.name" />
<mat-grid-tile class="grid-tile-content" *ngFor="let currency of selectedCurrencies; index as i">
<div class="grid-container">
<div>
<button
mat-button
color="warn"
(click)="deleteCurrency(currency.code, i)"
*mifosxHasPermission="'UPDATE_CURRENCY'"
>
<fa-icon icon="trash"></fa-icon>
</button>
</div>
<div fxLayout="row" fxLayoutAlign="flex-start">
<button
mat-button
color="warn"
(click)="deleteCurrency(currency.code, i)"
*mifosxHasPermission="'UPDATE_CURRENCY'"
<span class="label m-l-10 p-t-5"
><b>{{ currency.name }}</b></span
>
<fa-icon icon="trash"></fa-icon>
</button>
</div>
</mat-grid-tile>
</mat-grid-list>
@@ -69,7 +70,7 @@
'labels.inputs.Currency Configuration' | translate
}}</a>
</p>
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
<div class="layout-row align-end gap-2px responsive-column">
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
{{ 'labels.buttons.Close' | translate }}
</button>
@@ -1,3 +1,20 @@
.container {
width: 74rem;
}
.currency-grid {
max-width: 40%;
justify-content: left !important;
}
mat-grid-tile {
justify-content: left !important;
}
.grid-container {
display: flex;
flex-direction: row;
justify-content: left;
width: 100%;
height: 100%;
}
@@ -2,7 +2,7 @@
<mat-card>
<form [formGroup]="employeeForm" (ngSubmit)="submit()">
<mat-card-content>
<div #createEmployeeFormRef fxLayout="column">
<div #createEmployeeFormRef class="layout-column">
<mat-form-field>
<mat-label>{{ 'labels.inputs.Office' | translate }}</mat-label>
<mat-select required formControlName="officeId">
@@ -71,7 +71,7 @@
</div>
</mat-card-content>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<mat-card-actions class="layout-row align-center gap-5px responsive-column">
<button type="button" mat-raised-button [routerLink]="['../']">
{{ 'labels.buttons.Cancel' | translate }}
</button>
@@ -97,7 +97,7 @@
'labels.inputs.Manage Employees' | translate
}}</a>
</p>
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
<div class="layout-row align-end gap-2px responsive-column">
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
{{ 'labels.buttons.Close' | translate }}
</button>
@@ -1,6 +1,6 @@
/** Angular Imports */
import { Injectable } from '@angular/core';
import { Resolve, ActivatedRouteSnapshot } from '@angular/router';
import { ActivatedRouteSnapshot } from '@angular/router';
/** rxjs Imports */
import { Observable } from 'rxjs';
@@ -12,7 +12,7 @@ import { OrganizationService } from '../organization.service';
* Employees data resolver.
*/
@Injectable()
export class EditEmployeeResolver implements Resolve<Object> {
export class EditEmployeeResolver {
/**
* @param {OrganizationService} organizationService Organization service.
*/
@@ -2,7 +2,7 @@
<mat-card>
<form [formGroup]="editEmployeeForm" (ngSubmit)="submit()">
<mat-card-content>
<div fxLayout="column">
<div class="layout-column">
<mat-form-field>
<mat-label>{{ 'labels.inputs.Office' | translate }}</mat-label>
<mat-select required formControlName="officeId">
@@ -75,7 +75,7 @@
</div>
</mat-card-content>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<mat-card-actions class="layout-row align-center gap-5px responsive-column">
<button type="button" mat-raised-button [routerLink]="['../']">
{{ 'labels.buttons.Cancel' | translate }}
</button>
@@ -1,6 +1,6 @@
/** Angular Imports */
import { Injectable } from '@angular/core';
import { Resolve, ActivatedRouteSnapshot } from '@angular/router';
import { ActivatedRouteSnapshot } from '@angular/router';
/** rxjs Imports */
import { Observable } from 'rxjs';
@@ -12,7 +12,7 @@ import { OrganizationService } from 'app/organization/organization.service';
* Employee data resolver.
*/
@Injectable()
export class EmployeeResolver implements Resolve<Object> {
export class EmployeeResolver {
/**
* @param {OrganizationService} organizationService Organization service.
*/
@@ -1,4 +1,4 @@
<div class="container m-b-20" fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px">
<div class="container m-b-20 layout-row align-end gap-20px">
<div #buttonImportEmployees>
<button
mat-raised-button
@@ -19,8 +19,8 @@
</div>
<div class="container">
<div #filter fxLayout="row" fxLayoutGap="20px">
<mat-form-field fxFlex>
<div #filter class="layout-row gap-20px">
<mat-form-field class="flex-fill">
<mat-label>{{ 'labels.inputs.Filter' | translate }}</mat-label>
<input matInput (keyup)="applyFilter($event.target.value)" />
</mat-form-field>
@@ -85,7 +85,7 @@
<ng-template #templateButtonImportEmployees let-data let-popover="popover">
<h2>{{ 'labels.heading.Import Employees' | translate }}</h2>
<p class="mw300">{{ 'labels.text.Import employee details from your local device' | translate }}</p>
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
<div class="layout-row align-end gap-2px responsive-column">
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
{{ 'labels.buttons.Close' | translate }}
</button>
@@ -105,7 +105,7 @@
<ng-template #templateButtonCreateEmployee let-popover="popover">
<h2>{{ 'labels.heading.Create Employee' | translate }}</h2>
<p class="mw300">{{ 'labels.text.Create new employees in your organization' | translate }}</p>
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
<div class="layout-row align-end gap-2px responsive-column">
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
{{ 'labels.buttons.Close' | translate }}
</button>
@@ -128,7 +128,7 @@
<ng-template #templateFilter let-popover="popover">
<h4>{{ 'labels.heading.Search bar to filter employees.' | translate }}</h4>
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
<div class="layout-row align-end gap-2px responsive-column">
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
{{ 'labels.buttons.Close' | translate }}
</button>
@@ -151,7 +151,7 @@
<ng-template #templateTableEmployees let-popover="popover">
<h4>{{ 'labels.heading.List of employees in the organization.' | translate }}</h4>
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
<div class="layout-row align-end gap-2px responsive-column">
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
{{ 'labels.buttons.Close' | translate }}
</button>
@@ -1,6 +1,5 @@
/** Angular Imports */
import { Injectable } from '@angular/core';
import { Resolve } from '@angular/router';
/** rxjs Imports */
import { Observable } from 'rxjs';
@@ -12,7 +11,7 @@ import { OrganizationService } from '../organization.service';
* Employees data resolver.
*/
@Injectable()
export class EmployeesResolver implements Resolve<Object> {
export class EmployeesResolver {
/**
* @param {OrganizationService} organizationService Organization service.
*/
@@ -1,4 +1,4 @@
<div class="container m-b-20" fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px">
<div class="container m-b-20 layout-row align-end gap-20px">
<button mat-raised-button color="primary" [routerLink]="['edit']" *mifosxHasPermission="'UPDATE_STAFF'">
<fa-icon icon="edit" class="m-r-10"></fa-icon>
{{ 'labels.buttons.Edit' | translate }}
@@ -8,60 +8,60 @@
<div class="container">
<mat-card>
<mat-card-content>
<div fxLayout="row wrap" class="content">
<div fxFlex="50%" class="mat-body-strong">
<div class="layout-row-wrap">
<div class="flex-50 mat-body-strong">
{{ 'labels.inputs.First Name' | translate }}
</div>
<div fxFlex="50%">
<div class="flex-50">
{{ employeeData.firstname }}
</div>
<div fxFlex="50%" class="mat-body-strong">
<div class="flex-50 mat-body-strong">
{{ 'labels.inputs.Last Name' | translate }}
</div>
<div fxFlex="50%">
<div class="flex-50">
{{ employeeData.lastname }}
</div>
<div fxFlex="50%" class="mat-body-strong">
<div class="flex-50 mat-body-strong">
{{ 'labels.inputs.Office' | translate }}
</div>
<div fxFlex="50%">
<div class="flex-50">
{{ employeeData.officeName }}
</div>
<div fxFlex="50%" class="mat-body-strong">
<div class="flex-50 mat-body-strong">
{{ 'labels.inputs.Is Loan Officer' | translate }}
</div>
<div fxFlex="50%">
<div class="flex-50">
{{ employeeData.isLoanOfficer === true | yesNo }}
</div>
<div fxFlex="50%" class="mat-body-strong" *ngIf="employeeData.mobileNo">
<div class="flex-50 mat-body-strong" *ngIf="employeeData.mobileNo">
{{ 'labels.inputs.Mobile Number for SMS' | translate }}
</div>
<div fxFlex="50%" *ngIf="employeeData.mobileNo">
<div class="flex-50" *ngIf="employeeData.mobileNo">
{{ employeeData.mobileNo }}
</div>
<div fxFlex="50%" class="mat-body-strong">
<div class="flex-50 mat-body-strong">
{{ 'labels.inputs.Status' | translate }}
</div>
<div fxFlex="50%">
<div class="flex-50">
{{ employeeData.isActive === true ? 'Active' : 'Inactive' }}
</div>
<div fxFlex="50%" class="mat-body-strong">
<div class="flex-50 mat-body-strong">
{{ 'labels.inputs.Joining Date' | translate }}
</div>
<div fxFlex="50%">
<div class="flex-50">
{{ employeeData.joiningDate | dateFormat }}
</div>
</div>
@@ -2,7 +2,7 @@
<mat-card>
<form [formGroup]="createEntityForm" (ngSubmit)="submit()">
<mat-card-content>
<div fxLayout="column">
<div class="layout-column">
<mat-form-field>
<mat-label>{{ 'labels.inputs.Entity' | translate }}</mat-label>
<mat-select required formControlName="entity">
@@ -73,7 +73,7 @@
</div>
</mat-card-content>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<mat-card-actions class="layout-row align-center gap-5px responsive-column">
<button type="button" mat-raised-button [routerLink]="['../']">
{{ 'labels.buttons.Cancel' | translate }}
</button>
@@ -1,6 +1,5 @@
/** Angular Imports */
import { Injectable } from '@angular/core';
import { Resolve } from '@angular/router';
/** rxjs Imports */
import { Observable } from 'rxjs';
@@ -12,7 +11,7 @@ import { OrganizationService } from '../organization.service';
* Entity Data Table Checks data resolver.
*/
@Injectable()
export class EntityDataTableChecksTemplateResolver implements Resolve<Object> {
export class EntityDataTableChecksTemplateResolver {
/**
* @param {OrganizationService} organizationService Organization service.
*/
@@ -1,4 +1,4 @@
<div class="container m-b-20" fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px">
<div class="container m-b-20 layout-row align-end gap-20px">
<button
mat-raised-button
color="primary"
@@ -11,8 +11,8 @@
</div>
<div class="container">
<div fxLayout="row" fxLayoutGap="20px">
<mat-form-field fxFlex>
<div class="layout-row gap-20px">
<mat-form-field class="flex-fill">
<mat-label>{{ 'labels.inputs.Filter' | translate }}</mat-label>
<input matInput (keyup)="applyFilter($event.target.value)" />
</mat-form-field>
@@ -1,6 +1,5 @@
/** Angular Imports */
import { Injectable } from '@angular/core';
import { Resolve } from '@angular/router';
/** rxjs Imports */
import { Observable } from 'rxjs';
@@ -12,7 +11,7 @@ import { OrganizationService } from '../organization.service';
* Entity Data Table Checks data resolver.
*/
@Injectable()
export class EntityDataTableChecksResolver implements Resolve<Object> {
export class EntityDataTableChecksResolver {
/**
* @param {OrganizationService} organizationService Organization service.
*/
@@ -1,6 +1,5 @@
/** Angular Imports */
import { Injectable } from '@angular/core';
import { Resolve } from '@angular/router';
/** rxjs Imports */
import { Observable } from 'rxjs';
@@ -12,7 +11,7 @@ import { OrganizationService } from '../organization.service';
* Advance Search Template resolver.
*/
@Injectable()
export class AdvanceSearchTemplateResolver implements Resolve<Object> {
export class AdvanceSearchTemplateResolver {
/**
* @param {OrganizationService} organizationService Organization service.
*/
@@ -1,7 +1,7 @@
<mat-card class="container" *ngIf="!isCollapsed">
<form [formGroup]="fundMappingForm" (ngSubmit)="submit()">
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column" fxLayoutAlign.gt-sm="start center">
<mat-form-field fxFlex="48%">
<div class="layout-row-wrap gap-2percent responsive-column align-start-center">
<mat-form-field class="flex-48">
<mat-label>{{ 'labels.inputs.Loan Status' | translate }}</mat-label>
<mat-select formControlName="loanStatus" multiple>
<mat-option value="all">{{ 'labels.inputs.All' | translate }}</mat-option>
@@ -12,9 +12,9 @@
</mat-select>
</mat-form-field>
<span fxFlex="48%" fxHide.lt-md></span>
<span class="flex-48 hide-lt-md"></span>
<mat-form-field fxFlex="48%">
<mat-form-field class="flex-48">
<mat-label>{{ 'labels.inputs.Product' | translate }}</mat-label>
<mat-select formControlName="loanProducts" multiple>
<mat-option *ngFor="let product of advanceSearchTemplate.loanProducts" [value]="product.id">
@@ -23,7 +23,7 @@
</mat-select>
</mat-form-field>
<mat-form-field fxFlex="48%">
<mat-form-field class="flex-48">
<mat-label>{{ 'labels.inputs.Office' | translate }}</mat-label>
<mat-select formControlName="offices" multiple>
<mat-option *ngFor="let office of advanceSearchTemplate.offices" [value]="office.id">
@@ -32,7 +32,7 @@
</mat-select>
</mat-form-field>
<mat-form-field fxFlex="31%">
<mat-form-field class="flex-31">
<mat-label>{{ 'labels.inputs.Date Type' | translate }}</mat-label>
<mat-select required formControlName="loanDateOption">
<mat-option value="approvalDate">{{ 'labels.inputs.Approval Date' | translate }}</mat-option>
@@ -41,7 +41,7 @@
</mat-select>
</mat-form-field>
<mat-form-field fxFlex="31%" (click)="fromDatePicker.open()">
<mat-form-field class="flex-fill flex-31" (click)="fromDatePicker.open()">
<mat-label>{{ 'labels.inputs.From Date' | translate }}</mat-label>
<input
matInput
@@ -59,7 +59,7 @@
</mat-error>
</mat-form-field>
<mat-form-field fxFlex="31%" (click)="toDatePicker.open()">
<mat-form-field class="flex-fill flex-31" (click)="toDatePicker.open()">
<mat-label>{{ 'labels.inputs.To Date' | translate }}</mat-label>
<input
matInput
@@ -78,22 +78,18 @@
</mat-form-field>
<mat-checkbox
fxFlex="73%"
labelPosition="before"
formControlName="includeOutStandingAmountPercentage"
class="margin-b"
class="margin-b flex-73"
>
{{ 'labels.inputs.Loan Outstanding Percentage' | translate }}
</mat-checkbox>
<div
*ngIf="fundMappingForm.value.includeOutStandingAmountPercentage"
fxFlexFill
fxLayout="row wrap"
fxLayoutGap="2%"
fxLayout.lt-md="column"
class="flex-fill layout-row-wrap gap-2percent layout-xs-column"
>
<mat-form-field *ngIf="fundMappingForm.contains('outStandingAmountPercentageCondition')" fxFlex="31%">
<mat-form-field *ngIf="fundMappingForm.contains('outStandingAmountPercentageCondition')" class="flex-31">
<mat-label>{{ 'labels.inputs.Comparison Condition' | translate }}</mat-label>
<mat-select required formControlName="outStandingAmountPercentageCondition">
<mat-option value="between">{{ 'labels.inputs.between' | translate }}</mat-option>
@@ -109,7 +105,7 @@
</mat-error>
</mat-form-field>
<mat-form-field *ngIf="fundMappingForm.contains('minOutStandingAmountPercentage')" fxFlex="31%">
<mat-form-field *ngIf="fundMappingForm.contains('minOutStandingAmountPercentage')" class="flex-31">
<mat-label>{{ 'labels.inputs.Minimum Value' | translate }}</mat-label>
<input type="number" matInput required formControlName="minOutStandingAmountPercentage" />
<mat-error *ngIf="fundMappingForm.controls.minOutStandingAmountPercentage.hasError('required')">
@@ -118,7 +114,7 @@
</mat-error>
</mat-form-field>
<mat-form-field *ngIf="fundMappingForm.contains('outStandingAmountPercentage')" fxFlex="31%">
<mat-form-field *ngIf="fundMappingForm.contains('outStandingAmountPercentage')" class="flex-31">
<mat-label>{{ 'labels.inputs.Comparison Value' | translate }}</mat-label>
<input type="number" matInput required formControlName="outStandingAmountPercentage" />
<mat-error *ngIf="fundMappingForm.controls.outStandingAmountPercentage.hasError('required')">
@@ -127,7 +123,7 @@
</mat-error>
</mat-form-field>
<mat-form-field *ngIf="fundMappingForm.contains('maxOutStandingAmountPercentage')" fxFlex="31%">
<mat-form-field *ngIf="fundMappingForm.contains('maxOutStandingAmountPercentage')" class="flex-31">
<mat-label>{{ 'labels.inputs.Maximum Value' | translate }}</mat-label>
<input type="number" matInput required formControlName="maxOutStandingAmountPercentage" />
<mat-error *ngIf="fundMappingForm.controls.maxOutStandingAmountPercentage.hasError('required')">
@@ -137,18 +133,15 @@
</mat-form-field>
</div>
<mat-checkbox fxFlex="73%" labelPosition="before" formControlName="includeOutstandingAmount" class="margin-b">
<mat-checkbox class="flex-73 margin-b" labelPosition="before" formControlName="includeOutstandingAmount">
{{ 'labels.inputs.Loan Outstanding Amount' | translate }}
</mat-checkbox>
<div
*ngIf="fundMappingForm.value.includeOutstandingAmount"
fxFlexFill
fxLayout="row wrap"
fxLayoutGap="2%"
fxLayout.lt-md="column"
class="flex-fill layout-row-wrap gap-2percent responsive-column"
>
<mat-form-field *ngIf="fundMappingForm.contains('outstandingAmountCondition')" fxFlex="31%">
<mat-form-field *ngIf="fundMappingForm.contains('outstandingAmountCondition')" class="flex-31">
<mat-label>{{ 'labels.inputs.Comparison Condition' | translate }}</mat-label>
<mat-select required formControlName="outstandingAmountCondition">
<mat-option value="between">{{ 'labels.inputs.between' | translate }}</mat-option>
@@ -164,7 +157,7 @@
</mat-error>
</mat-form-field>
<mat-form-field *ngIf="fundMappingForm.contains('minOutstandingAmount')" fxFlex="31%">
<mat-form-field *ngIf="fundMappingForm.contains('minOutstandingAmount')" class="flex-31">
<mat-label>{{ 'labels.inputs.Minimum Value' | translate }}</mat-label>
<input type="number" matInput required formControlName="minOutstandingAmount" />
<mat-error *ngIf="fundMappingForm.controls.minOutstandingAmount.hasError('required')">
@@ -173,7 +166,7 @@
</mat-error>
</mat-form-field>
<mat-form-field *ngIf="fundMappingForm.contains('outstandingAmount')" fxFlex="31%">
<mat-form-field *ngIf="fundMappingForm.contains('outstandingAmount')" class="flex-31">
<mat-label>{{ 'labels.inputs.Comparison Value' | translate }}</mat-label>
<input type="number" matInput required formControlName="outstandingAmount" />
<mat-error *ngIf="fundMappingForm.controls.outstandingAmount.hasError('required')">
@@ -182,7 +175,7 @@
</mat-error>
</mat-form-field>
<mat-form-field *ngIf="fundMappingForm.contains('maxOutstandingAmount')" fxFlex="31%">
<mat-form-field *ngIf="fundMappingForm.contains('maxOutstandingAmount')" class="flex-31">
<mat-label>{{ 'labels.inputs.Maximum Value' | translate }}</mat-label>
<input type="number" matInput required formControlName="maxOutstandingAmount" />
<mat-error *ngIf="fundMappingForm.controls.maxOutstandingAmount.hasError('required')">
@@ -193,7 +186,7 @@
</div>
</div>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<mat-card-actions class="layout-row align-center gap-5px responsive-column">
<button type="button" mat-raised-button [routerLink]="['../']">{{ 'labels.buttons.Cancel' | translate }}</button>
<button mat-raised-button color="primary" [disabled]="!fundMappingForm.valid">
<fa-icon icon="search"></fa-icon>&nbsp; {{ 'labels.buttons.Summary' | translate }}
@@ -2,7 +2,7 @@
<mat-card>
<form [formGroup]="holidayForm" (ngSubmit)="submit()">
<mat-card-content>
<div fxLayout="column">
<div class="layout-column">
<mat-form-field>
<mat-label>{{ 'labels.inputs.name' | translate }}</mat-label>
<input matInput required autofocus formControlName="name" />
@@ -111,7 +111,7 @@
</div>
</mat-card-content>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<mat-card-actions class="layout-row align-center gap-5px responsive-column">
<button type="button" mat-raised-button [routerLink]="['../']">
{{ 'labels.buttons.Cancel' | translate }}
</button>
@@ -2,7 +2,7 @@
<mat-card>
<form [formGroup]="holidayForm" (ngSubmit)="submit()">
<mat-card-content>
<div fxLayout="column">
<div class="layout-column">
<mat-form-field>
<mat-label>{{ 'labels.inputs.name' | translate }}</mat-label>
<input matInput required autofocus formControlName="name" />
@@ -86,7 +86,7 @@
</div>
</mat-card-content>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<mat-card-actions class="layout-row align-center gap-5px responsive-column">
<button type="button" mat-raised-button [routerLink]="['../']">
{{ 'labels.buttons.Cancel' | translate }}
</button>
@@ -1,6 +1,6 @@
/** Angular Imports */
import { Injectable } from '@angular/core';
import { Resolve, ActivatedRouteSnapshot } from '@angular/router';
import { ActivatedRouteSnapshot } from '@angular/router';
/** rxjs Imports */
import { Observable } from 'rxjs';
@@ -12,7 +12,7 @@ import { OrganizationService } from 'app/organization/organization.service';
* Holiday data template resolver.
*/
@Injectable()
export class HolidayTemplateResolver implements Resolve<Object> {
export class HolidayTemplateResolver {
/**
* @param {OrganizationService} organizationService Organization service.
*/
@@ -1,6 +1,6 @@
/** Angular Imports */
import { Injectable } from '@angular/core';
import { Resolve, ActivatedRouteSnapshot } from '@angular/router';
import { ActivatedRouteSnapshot } from '@angular/router';
/** rxjs Imports */
import { Observable } from 'rxjs';
@@ -12,7 +12,7 @@ import { OrganizationService } from 'app/organization/organization.service';
* Holiday data resolver.
*/
@Injectable()
export class HolidayResolver implements Resolve<Object> {
export class HolidayResolver {
/**
* @param {OrganizationService} organizationService Organization service.
*/
@@ -1,4 +1,4 @@
<div class="container m-b-20" fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px">
<div class="container m-b-20 layout-row align-end gap-20px">
<div #buttonCreateHoliday class="in-block">
<button mat-raised-button color="primary" [routerLink]="['create']" *mifosxHasPermission="'CREATE_HOLIDAY'">
<fa-icon icon="plus" class="m-r-10"></fa-icon>
@@ -8,8 +8,8 @@
</div>
<div class="container">
<div #filterRef fxLayout="row" fxLayoutGap="20px">
<mat-form-field fxFlex>
<div #filterRef class="layout-row gap-20px">
<mat-form-field class="flex-fill">
<mat-label>{{ 'labels.inputs.Filter' | translate }}</mat-label>
<input matInput (keyup)="applyFilter($event.target.value)" />
</mat-form-field>
@@ -67,7 +67,7 @@
<ng-template #templateButtonCreateHoliday let-popover="popover">
<h2>{{ 'labels.heading.Create Holiday' | translate }}</h2>
<p class="mw300">{{ 'labels.text.Create holidays for different offices' | translate }}</p>
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
<div class="layout-row align-end gap-2px responsive-column">
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
{{ 'labels.buttons.Close' | translate }}
</button>
@@ -86,7 +86,7 @@
<ng-template #templateFilterRef let-popover="popover">
<h4>{{ 'labels.heading.Filter holidays' | translate }}</h4>
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
<div class="layout-row align-end gap-2px responsive-column">
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
{{ 'labels.buttons.Close' | translate }}
</button>
@@ -1,4 +1,4 @@
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column" class="container m-b-20">
<div class="layout-row align-end gap-2px responsive-column container m-b-20">
<span *mifosxHasPermission="'ACTIVATE_HOLIDAY'">
<button mat-raised-button color="accent" (click)="activateHoliday()" *ngIf="holidayData.status.value !== 'Active'">
<fa-icon icon="lock-open" class="m-r-10"></fa-icon>
@@ -18,44 +18,44 @@
<div class="container">
<mat-card>
<mat-card-content>
<div fxLayout="row wrap" class="content">
<div fxFlex="50%" class="header">
<div class="layout-row-wrap">
<div class="flex-50 header">
{{ 'labels.inputs.Name' | translate }}
</div>
<div fxFlex="50%">
<div class="flex-50">
{{ holidayData.name }}
</div>
<div fxFlex="50%" class="header">
<div class="flex-50 header">
{{ 'labels.inputs.From Date' | translate }}
</div>
<div fxFlex="50%">
<div class="flex-50">
{{ holidayData.fromDate | dateFormat }}
</div>
<div fxFlex="50%" class="header">
<div class="flex-50 header">
{{ 'labels.inputs.To Date' | translate }}
</div>
<div fxFlex="50%">
<div class="flex-50">
{{ holidayData.toDate | dateFormat }}
</div>
<div fxFlex="50%" class="header">
<div class="flex-50 header">
{{ 'labels.inputs.Repayments Scheduled To' | translate }}
</div>
<div
fxFlex="50%"
class="flex-50"
*ngIf="holidayData.repaymentsRescheduledTo !== undefined && holidayData.repaymentsRescheduledTo !== null"
>
{{ holidayData.repaymentsRescheduledTo | dateFormat }}
</div>
<div
fxFlex="50%"
class="flex-50"
*ngIf="holidayData.repaymentsRescheduledTo === undefined || holidayData.repaymentsRescheduledTo === null"
>
{{ 'labels.inputs.Next Repayment Date' | translate }}
@@ -1,11 +1,11 @@
<mat-card class="container">
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
<mat-form-field fxFlex="18%">
<div class="layout-row-wrap gap-2px responsive-column">
<mat-form-field class="flex-fill flex-18">
<mat-label>{{ 'labels.text.Search by Text' | translate }}</mat-label>
<input matInput [formControl]="searchText" />
</mat-form-field>
<mat-form-field fxFlex="18%" (click)="effectiveFromDatePicker.open()">
<mat-form-field class="flex-fill flex-18" (click)="effectiveFromDatePicker.open()">
<mat-label>{{ 'labels.text.Effective Date From' | translate }}</mat-label>
<input
matInput
@@ -18,7 +18,7 @@
<mat-datepicker #effectiveFromDatePicker></mat-datepicker>
</mat-form-field>
<mat-form-field fxFlex="18%" (click)="effectiveToDatePicker.open()">
<mat-form-field class="flex-fill flex-18" (click)="effectiveToDatePicker.open()">
<mat-label>{{ 'labels.text.Effective Date To' | translate }}</mat-label>
<input
matInput
@@ -31,7 +31,7 @@
<mat-datepicker #effectiveToDatePicker></mat-datepicker>
</mat-form-field>
<mat-form-field fxFlex="18%" (click)="settlementFromDatePicker.open()">
<mat-form-field class="flex-fill flex-18" (click)="settlementFromDatePicker.open()">
<mat-label>{{ 'labels.text.Settlement Date From' | translate }}</mat-label>
<input
matInput
@@ -44,7 +44,7 @@
<mat-datepicker #settlementFromDatePicker></mat-datepicker>
</mat-form-field>
<mat-form-field fxFlex="18%" (click)="settlementToDatePicker.open()">
<mat-form-field class="flex-fill flex-18" (click)="settlementToDatePicker.open()">
<mat-label>{{ 'labels.text.Settlement Date To' | translate }}</mat-label>
<input
matInput
@@ -57,7 +57,7 @@
<mat-datepicker #settlementToDatePicker></mat-datepicker>
</mat-form-field>
<div fxFlex="98%" class="center m-t-15">
<div class="center m-t-15 flex-98">
<button mat-raised-button color="primary" (click)="searchEAO()">
<fa-icon icon="search" class="m-r-10"></fa-icon> {{ 'labels.buttons.Search' | translate }}
</button>
@@ -99,19 +99,19 @@
<table>
<tbody>
<tr>
<td fxFlex="25%" class="m-l-5">
<td class="m-l-5 flex-25">
<b>{{ 'labels.inputs.Status' | translate }} :</b>
</td>
<td fxFlex="25%" class="m-l-5 left">
<td class="flex-25 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">
<td class="m-l-5 flex-25">
<b>{{ 'labels.inputs.Owner External Id' | translate }} :</b>
</td>
<td fxFlex="25%" class="m-l-5 left">
<td class="flex-25 m-l-5 left">
<mifosx-external-identifier
externalId="{{ record.owner.externalId }}"
completed="true"
@@ -119,69 +119,69 @@
</td>
</tr>
<tr>
<td fxFlex="25%" class="m-l-5">
<td class="m-l-5 flex-25">
<b>{{ 'labels.inputs.Settlement Date' | translate }} :</b>
</td>
<td fxFlex="25%" class="m-l-5">
<td class="m-l-5 flex-25">
{{ record.settlementDate | dateFormat }}
</td>
<td fxFlex="25%" class="m-l-5">
<td class="m-l-5 flex-25">
<b>{{ 'labels.inputs.Effective Date' | translate }} :</b>
</td>
<td fxFlex="25%" class="m-l-5">
<td class="m-l-5 flex-25">
{{ record.effectiveFrom | dateFormat }}
</td>
</tr>
<tr *ngIf="record.details">
<td fxFlex="25%" class="m-l-5">
<td class="m-l-5 flex-25">
<b>{{ 'labels.inputs.Details' | translate }} :</b>
</td>
<td fxFlex="75%" class="left">
<td class="flex-75 left">
<table>
<tbody>
<tr>
<td fxFlex="50%" class="m-l-5">
<td class="flex-50 m-l-5">
<b>{{ 'labels.inputs.Principal Outstanding' | translate }} :</b>
</td>
<td fxFlex="50%" class="r-amount">
<td class="flex-50 r-amount">
{{ record.details.totalPrincipalOutstanding | formatNumber }}
</td>
</tr>
<tr>
<td fxFlex="50%" class="m-l-5">
<td class="flex-50 m-l-5">
<b>{{ 'labels.inputs.Interest Outstanding' | translate }} :</b>
</td>
<td fxFlex="50%" class="r-amount">
<td class="flex-50 r-amount">
{{ record.details.totalInterestOutstanding | formatNumber }}
</td>
</tr>
<tr>
<td fxFlex="50%" class="m-l-5">
<td class="flex-50 m-l-5">
<b>{{ 'labels.inputs.Fees Outstanding' | translate }} :</b>
</td>
<td fxFlex="50%" class="r-amount">
<td class="flex-50 r-amount">
{{ record.details.totalFeeChargesOutstanding | formatNumber }}
</td>
</tr>
<tr>
<td fxFlex="50%" class="m-l-5">
<td class="flex-50 m-l-5">
<b>{{ 'labels.inputs.Penalties Outstanding' | translate }} :</b>
</td>
<td fxFlex="50%" class="r-amount">
<td class="flex-50 r-amount">
{{ record.details.totalPenaltyChargesOutstanding | formatNumber }}
</td>
</tr>
<tr>
<td fxFlex="50%" class="m-l-5">
<td class="flex-50 m-l-5">
<b>{{ 'labels.inputs.Outstanding' | translate }} :</b>
</td>
<td fxFlex="50%" class="r-amount">{{ record.details.totalOutstanding | formatNumber }}</td>
<td class="flex-50 r-amount">{{ record.details.totalOutstanding | formatNumber }}</td>
</tr>
<tr>
<td fxFlex="50%" class="m-l-5">
<td class="flex-50 m-l-5">
<b>{{ 'labels.inputs.Overpaid' | translate }} :</b>
</td>
<td fxFlex="50%" class="r-amount">{{ record.details.totalOverpaid | formatNumber }}</td>
<td class="flex-50 r-amount">{{ record.details.totalOverpaid | formatNumber }}</td>
</tr>
</tbody>
</table>
@@ -193,7 +193,7 @@
<mat-divider [inset]="true"></mat-divider>
<div class="record-actions" fxLayout="row" fxLayoutAlign="flex-end" *ngIf="canBeCancelled(record)">
<div class="record-actions layout-row align-flex-end" *ngIf="canBeCancelled(record)">
<button
mat-button
color="warn"
@@ -1,6 +1,6 @@
/** Angular Imports */
import { Injectable } from '@angular/core';
import { Resolve, ActivatedRouteSnapshot } from '@angular/router';
import { ActivatedRouteSnapshot } from '@angular/router';
/** rxjs Imports */
import { Observable } from 'rxjs';
@@ -12,7 +12,7 @@ import { OrganizationService } from '../../organization.service';
* Provisioning criteria and template resolver.
*/
@Injectable()
export class LoanProvisioningCriteriaAndTemplateResolver implements Resolve<Object> {
export class LoanProvisioningCriteriaAndTemplateResolver {
/**
* @param {OrganizationService} organizationService Products service.
*/
@@ -1,6 +1,5 @@
/** Angular Imports */
import { Injectable } from '@angular/core';
import { Resolve } from '@angular/router';
/** rxjs Imports */
import { Observable } from 'rxjs';
@@ -12,7 +11,7 @@ import { OrganizationService } from '../../organization.service';
* Provisioning criteria template resolver.
*/
@Injectable()
export class LoanProvisioningCriteriaTemplateResolver implements Resolve<Object> {
export class LoanProvisioningCriteriaTemplateResolver {
/**
* @param {OrganizationService} organizationService Products service.
*/
@@ -1,6 +1,6 @@
/** Angular Imports */
import { Injectable } from '@angular/core';
import { Resolve, ActivatedRouteSnapshot } from '@angular/router';
import { ActivatedRouteSnapshot } from '@angular/router';
/** rxjs Imports */
import { Observable } from 'rxjs';
@@ -12,7 +12,7 @@ import { OrganizationService } from '../../organization.service';
* Loan Provisioning Criteria data resolver.
*/
@Injectable()
export class LoanProvisioningCriteriaResolver implements Resolve<Object> {
export class LoanProvisioningCriteriaResolver {
/**
* @param {OrganizationService} organizationService Organization service.
*/
@@ -1,6 +1,5 @@
/** Angular Imports */
import { Injectable } from '@angular/core';
import { Resolve } from '@angular/router';
/** rxjs Imports */
import { Observable } from 'rxjs';
@@ -12,7 +11,7 @@ import { OrganizationService } from '../../organization.service';
* Charges data resolver.
*/
@Injectable()
export class LoanProvisioningCriteriasResolver implements Resolve<Object> {
export class LoanProvisioningCriteriasResolver {
/**
* @param {OrganizationService} organizationService Products service.
*/
@@ -2,8 +2,8 @@
<mat-card>
<div>
<form [formGroup]="provisioningCriteriaForm">
<div fxLayout="row" fxLayoutGap="2%">
<mat-form-field fxFlex>
<div class="layout-row gap-2percent">
<mat-form-field class="flex-fill">
<mat-label>{{ 'labels.inputs.Provisioning Criteria' | translate }}</mat-label>
<input required matInput formControlName="criteriaName" />
<mat-error *ngIf="provisioningCriteriaForm.controls.criteriaName.hasError('required')">
@@ -12,7 +12,7 @@
</mat-error>
</mat-form-field>
<mat-form-field fxFlex>
<mat-form-field class="flex-fill">
<mat-label>{{ 'labels.inputs.Selected Products' | translate }}</mat-label>
<mat-select formControlName="loanProducts" multiple>
<mat-option *ngFor="let product of loanProvisioningCriteriaTemplate.loanProducts" [value]="product">
@@ -81,7 +81,7 @@
</table>
</div>
<div class="m-t-20" fxLayout="row" fxLayoutAlign="center" fxLayoutGap="20px">
<div class="m-t-20 layout-row layout-align-center gap-20px">
<button type="button" mat-raised-button [routerLink]="['../']">{{ 'labels.buttons.Cancel' | translate }}</button>
<button
mat-raised-button
@@ -2,8 +2,8 @@
<mat-card>
<div>
<form [formGroup]="provisioningCriteriaForm">
<div fxLayout="row" fxLayoutGap="2%">
<mat-form-field fxFlex>
<div class="layout-row gap-2percent">
<mat-form-field class="flex-fill">
<mat-label>{{ 'labels.inputs.Provisioning Criteria' | translate }}</mat-label>
<input required matInput formControlName="criteriaName" />
<mat-error *ngIf="provisioningCriteriaForm.controls.criteriaName.hasError('required')">
@@ -12,7 +12,7 @@
</mat-error>
</mat-form-field>
<mat-form-field fxFlex>
<mat-form-field class="flex-fill">
<mat-label>{{ 'labels.inputs.Selected Products' | translate }}</mat-label>
<mat-select formControlName="loanProducts" [compareWith]="compareOptions" multiple>
<mat-option *ngFor="let product of loanProducts" [value]="product">
@@ -84,7 +84,7 @@
</table>
</div>
<div class="m-t-20" fxLayout="row" fxLayoutAlign="center" fxLayoutGap="20px">
<div class="m-t-20 layout-row layout-align-center gap-20px">
<button type="button" mat-raised-button [routerLink]="['../']">{{ 'labels.buttons.Cancel' | translate }}</button>
<button
mat-raised-button
@@ -1,4 +1,4 @@
<div class="container m-b-20" fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px">
<div class="container m-b-20 layout-row align-end gap-20px">
<button
mat-raised-button
color="primary"
@@ -11,8 +11,8 @@
</div>
<div class="container">
<div fxLayout="row" fxLayoutGap="20px">
<mat-form-field fxFlex>
<div class="layout-row gap-20px">
<mat-form-field class="flex-fill">
<mat-label>{{ 'labels.inputs.Filter' | translate }}</mat-label>
<input matInput (keyup)="applyFilter($event.target.value)" />
</mat-form-field>
@@ -1,4 +1,4 @@
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column" class="container m-b-20">
<div class="layout-row align-end gap-2px responsive-column container m-b-20">
<button mat-raised-button color="primary" [routerLink]="['edit']" *mifosxHasPermission="'UPDATE_CRITERIA'">
<fa-icon icon="edit" class="m-r-10"></fa-icon>
{{ 'labels.buttons.Edit' | translate }}
@@ -12,13 +12,13 @@
<div class="container">
<mat-card>
<mat-card-content>
<div fxLayout="row wrap" class="content">
<h2 class="mat-h2" fxFlexFill>{{ provisioningData.criteriaName }}</h2>
<div class="layout-row-wrap">
<h2 class="mat-h2 flex-fill">{{ provisioningData.criteriaName }}</h2>
<mat-divider [inset]="true"></mat-divider>
<div fxFlexFill class="loanProduct">
<span fxFlex="40%">{{ 'labels.inputs.Loan Product' | translate }}:</span>
<span fxFlex="60%">{{ loanProducts }}</span>
<div class="loanProduct flex-fill">
<span class="flex-40">{{ 'labels.inputs.Loan Product' | translate }}:</span>
<span class="flex-60">{{ loanProducts }}</span>
</div>
</div>
@@ -2,7 +2,7 @@
<mat-card>
<form [formGroup]="fundForm" (ngSubmit)="submit()">
<mat-card-content>
<div fxLayout="column">
<div class="layout-column">
<mat-form-field>
<mat-label>{{ 'labels.inputs.name' | translate }}</mat-label>
<input matInput required autofocus formControlName="name" />
@@ -19,7 +19,7 @@
</div>
</mat-card-content>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<mat-card-actions class="layout-row align-center gap-5px responsive-column">
<button type="button" mat-raised-button [routerLink]="['../']">
{{ 'labels.buttons.Cancel' | translate }}
</button>
@@ -2,7 +2,7 @@
<mat-card>
<form [formGroup]="fundForm" (ngSubmit)="submit()">
<mat-card-content>
<div fxLayout="column">
<div class="layout-column">
<mat-form-field>
<mat-label>{{ 'labels.inputs.name' | translate }}</mat-label>
<input matInput required autofocus formControlName="name" />
@@ -19,7 +19,7 @@
</div>
</mat-card-content>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<mat-card-actions class="layout-row align-center gap-5px responsive-column">
<button type="button" mat-raised-button [routerLink]="['../']">
{{ 'labels.buttons.Cancel' | translate }}
</button>
@@ -1,12 +1,12 @@
import { Injectable } from '@angular/core';
import { ActivatedRouteSnapshot, Resolve } from '@angular/router';
import { ActivatedRouteSnapshot } from '@angular/router';
import { Observable } from 'rxjs';
import { OrganizationService } from '../organization.service';
@Injectable({
providedIn: 'root'
})
export class ManageFundResolver implements Resolve<boolean> {
export class ManageFundResolver {
/**
* @param {OrganizationService} organizationService Organization service.
*/
@@ -1,4 +1,4 @@
<div class="container m-b-20" fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px">
<div class="container m-b-20 layout-row align-end gap-20px">
<div #fundFormRef class="in-block">
<button mat-raised-button color="primary" [routerLink]="['create']" *mifosxHasPermission="'CREATE_FUND'">
<fa-icon icon="plus" class="m-r-10"></fa-icon>
@@ -8,8 +8,8 @@
</div>
<div class="container">
<div #filter fxLayout="row" fxLayoutGap="20px">
<mat-form-field fxFlex>
<div #filter class="layout-row gap-20px">
<mat-form-field class="flex-fill">
<mat-label>{{ 'labels.inputs.Filter' | translate }}</mat-label>
<input matInput (keyup)="applyFilter($event.target.value)" />
</mat-form-field>
@@ -45,7 +45,7 @@
'labels.inputs.Manage Funds' | translate
}}</a>
</p>
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
<div class="layout-row align-end gap-2px responsive-column">
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
Close
</button>
@@ -18,8 +18,8 @@ import { ConfigurationWizardService } from '../../configuration-wizard/configura
/** Custom Dialog Component */
import { ContinueSetupDialogComponent } from '../../configuration-wizard/continue-setup-dialog/continue-setup-dialog.component';
import { MatTableDataSource } from '@angular/material/table';
import { MatPaginator } from '@angular/material/paginator';
import { MatTableDataSource } from '@angular/material/table';
import { MatSort } from '@angular/material/sort';
/**
@@ -1,6 +1,5 @@
/** Angular Imports */
import { Injectable } from '@angular/core';
import { Resolve } from '@angular/router';
/** rxjs Imports */
import { Observable } from 'rxjs';
@@ -12,7 +11,7 @@ import { OrganizationService } from '../organization.service';
* Manage Funds data resolver.
*/
@Injectable()
export class ManageFundsResolver implements Resolve<Object> {
export class ManageFundsResolver {
/**
* @param {OrganizationService} organizationService Organization service.
*/
@@ -1,4 +1,4 @@
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column" class="container m-b-20">
<div class="layout-row align-end gap-2px responsive-column container m-b-20">
<button mat-raised-button color="primary" [routerLink]="['edit']" *mifosxHasPermission="'UPDATE_FUND'">
<fa-icon icon="edit" class="m-r-10"></fa-icon>
{{ 'labels.buttons.Edit' | translate }}
@@ -8,20 +8,20 @@
<div class="container">
<mat-card>
<mat-card-content>
<div fxLayout="row wrap" class="content">
<div fxFlex="50%" class="mat-body-strong">
<div class="layout-row-wrap">
<div class="flex-50 mat-body-strong">
{{ 'labels.inputs.name' | translate }}
</div>
<div fxFlex="50%">
<div class="flex-50">
{{ fundData.name }}
</div>
<div fxFlex="50%" class="mat-body-strong">
<div class="flex-50 mat-body-strong">
{{ 'labels.inputs.External Id' | translate }}
</div>
<div fxFlex="50%">
<div class="flex-50">
<mifosx-external-identifier
externalId="{{ fundData.externalId }}"
completed="true"
@@ -29,7 +29,7 @@
</div>
</div>
<div fxLayout="row" fxLayoutAlign="center" fxLayoutGap="2%" fxLayout.lt-md="column">
<div class="layout-row layout-align-center gap-2percent column-on-mobile">
<button type="button" mat-raised-button color="primary" [routerLink]="['../']">
{{ 'labels.buttons.Back' | translate }}
</button>
@@ -1,6 +1,6 @@
/** Angular Imports */
import { Injectable } from '@angular/core';
import { Resolve, ActivatedRouteSnapshot } from '@angular/router';
import { ActivatedRouteSnapshot } from '@angular/router';
/** rxjs Imports */
import { Observable } from 'rxjs';
@@ -12,7 +12,7 @@ import { OrganizationService } from '../../organization.service';
* Office and template data resolver.
*/
@Injectable()
export class EditOfficeResolver implements Resolve<Object> {
export class EditOfficeResolver {
/**
* @param {OrganizationService} organizationService Organization service.
*/
@@ -1,6 +1,6 @@
/** Angular Imports */
import { Injectable } from '@angular/core';
import { Resolve, ActivatedRouteSnapshot } from '@angular/router';
import { ActivatedRouteSnapshot } from '@angular/router';
import { SystemService } from 'app/system/system.service';
/** rxjs Imports */
@@ -10,7 +10,7 @@ import { Observable } from 'rxjs';
* Office Datatable data resolver.
*/
@Injectable()
export class OfficeDatatableResolver implements Resolve<Object> {
export class OfficeDatatableResolver {
/**
* @param {SystemService} systemService Products service.
*/
@@ -1,6 +1,6 @@
/** Angular Imports */
import { Injectable } from '@angular/core';
import { Resolve, ActivatedRouteSnapshot } from '@angular/router';
import { ActivatedRouteSnapshot } from '@angular/router';
import { SystemService } from 'app/system/system.service';
/** rxjs Imports */
@@ -10,7 +10,7 @@ import { Observable } from 'rxjs';
* Office Datatables data resolver.
*/
@Injectable()
export class OfficeDatatablesResolver implements Resolve<Object> {
export class OfficeDatatablesResolver {
/**
* @param {SystemService} systemService Products service.
*/
@@ -1,6 +1,6 @@
/** Angular Imports */
import { Injectable } from '@angular/core';
import { Resolve, ActivatedRouteSnapshot } from '@angular/router';
import { ActivatedRouteSnapshot } from '@angular/router';
/** rxjs Imports */
import { Observable } from 'rxjs';
@@ -12,7 +12,7 @@ import { OrganizationService } from '../../organization.service';
* Office data resolver.
*/
@Injectable()
export class OfficeResolver implements Resolve<Object> {
export class OfficeResolver {
/**
* @param {OrganizationService} organizationService Organization service.
*/
@@ -1,6 +1,5 @@
/** Angular Imports */
import { Injectable } from '@angular/core';
import { Resolve } from '@angular/router';
/** rxjs Imports */
import { Observable } from 'rxjs';
@@ -12,7 +11,7 @@ import { OrganizationService } from '../../organization.service';
* Manage Offices data resolver.
*/
@Injectable()
export class OfficesResolver implements Resolve<Object> {
export class OfficesResolver {
/**
* @param {OrganizationService} organizationService Organization service.
*/
@@ -2,7 +2,7 @@
<mat-card>
<form [formGroup]="officeForm" (ngSubmit)="submit()">
<mat-card-content>
<div #createOfficeFormRef fxLayout="column">
<div #createOfficeFormRef class="layout-column">
<mat-form-field>
<mat-label>{{ 'labels.inputs.Office' | translate }}</mat-label>
<input required matInput formControlName="name" />
@@ -50,7 +50,7 @@
</div>
</mat-card-content>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<mat-card-actions class="layout-row align-center gap-5px responsive-column">
<button type="button" mat-raised-button [routerLink]="['../']">
{{ 'labels.buttons.Cancel' | translate }}
</button>
@@ -70,7 +70,7 @@
'labels.inputs.Manage Offices' | translate
}}</a>
</p>
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
<div class="layout-row align-end gap-2px responsive-column">
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
{{ 'labels.buttons.Close' | translate }}
</button>
@@ -2,7 +2,7 @@
<mat-card>
<form [formGroup]="officeForm" (ngSubmit)="submit()">
<mat-card-content>
<div fxLayout="column">
<div class="layout-column">
<mat-form-field>
<mat-label>{{ 'labels.inputs.Office' | translate }}</mat-label>
<input matInput required formControlName="name" />
@@ -50,7 +50,7 @@
</div>
</mat-card-content>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<mat-card-actions class="layout-row align-center gap-5px responsive-column">
<button type="button" mat-raised-button [routerLink]="['../general']">
{{ 'labels.buttons.Cancel' | translate }}
</button>
@@ -1,4 +1,4 @@
<div class="container m-b-20" fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px">
<div class="container m-b-20 layout-row align-end gap-20px">
<mat-button-toggle-group #buttonTreeView [formControl]="viewGroup">
<mat-button-toggle value="listView">
<fa-icon icon="list"></fa-icon>
@@ -29,8 +29,8 @@
</div>
<div class="container" [hidden]="viewGroup.value !== 'listView'">
<div #filter fxLayout="row" fxLayoutGap="20px">
<mat-form-field fxFlex>
<div #filter class="layout-row gap-20px">
<mat-form-field class="flex-fill">
<mat-label>{{ 'Filter' | translate }}</mat-label>
<input matInput (keyup)="applyFilter($event.target.value)" />
</mat-form-field>
@@ -74,14 +74,14 @@
<!-- Tree View -->
<div class="container" [hidden]="viewGroup.value !== 'treeView'">
<div class="m-b-20" fxLayout="row" fxLayoutAlign="start" fxLayoutGap="20px">
<div class="m-b-20 layout-row align-start gap-20px">
<button mat-raised-button (click)="toggleExpandCollapse()">
{{ (isTreeExpanded ? 'labels.buttons.Collapse All' : 'labels.buttons.Expand All') | translate }}
</button>
</div>
<div fxLayout="row" fxLayoutGap="4%" fxLayout.lt-md="column">
<div fxFlex>
<div class="layout-row gap-4percent responsive-column">
<div class="flex-fill">
<mat-card>
<mat-card-content>
<mat-tree [dataSource]="nestedTreeDataSource" [treeControl]="nestedTreeControl" class="office-tree">
@@ -117,15 +117,15 @@
</mat-card>
</div>
<div fxFlex="48%" *ngIf="office">
<div class="flex-48" *ngIf="office">
<mat-card>
<mat-card-content>
<div fxLayout="row">
<div class="layout-row">
<mat-card-title>
{{ office.name }}
</mat-card-title>
<div fxFlex fxLayoutAlign="end">
<div class="flex align-end">
<button mat-icon-button (click)="closeOffice()">
<fa-icon icon="times"></fa-icon>
</button>
@@ -134,28 +134,28 @@
<mat-tab-group>
<mat-tab label="General">
<div fxLayout="row wrap" class="content">
<div fxFlex="50%" class="mat-body-strong" *ngIf="office.parentId">
<div class="layout-row-wrap">
<div class="flex-50 mat-body-strong" *ngIf="office.parentId">
{{ 'Parent Office' | translate }}
</div>
<div fxFlex="50%" *ngIf="office.parentId">
<div class="flex-50" *ngIf="office.parentId">
{{ office.parentName }}
</div>
<div fxFlex="50%" class="mat-body-strong">
<div class="flex-50 mat-body-strong">
{{ ' Opened On' | translate }}
</div>
<div fxFlex="50%">
<div class="flex-50">
{{ office.openingDate | date }}
</div>
<div fxFlex="50%" class="mat-body-strong" *ngIf="office.externalId">
<div class="flex-50 mat-body-strong" *ngIf="office.externalId">
{{ 'External Id' | translate }}
</div>
<div fxFlex="50%" *ngIf="office.externalId">
<div class="flex-50" *ngIf="office.externalId">
<mifosx-external-identifier externalId="{{ office.externalId }}"></mifosx-external-identifier>
</div>
</div>
@@ -172,7 +172,7 @@
<ng-template #templateButtonTreeView let-popover="popover">
<h2>{{ 'labels.heading.Tree View' | translate }}</h2>
<p class="mw300">{{ 'labels.text.Launch an alternative view for office hierarchy' | translate }}</p>
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
<div class="layout-row align-end gap-2px responsive-column">
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
{{ 'labels.buttons.Close' | translate }}
</button>
@@ -192,7 +192,7 @@
<ng-template #templateButtonCreateOffice let-popover="popover">
<h2>{{ 'labels.heading.Create Office' | translate }}</h2>
<p class="mw300">{{ 'labels.text.Create new offices' | translate }}</p>
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
<div class="layout-row align-end gap-2px responsive-column">
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
{{ 'labels.buttons.Close' | translate }}
</button>
@@ -216,7 +216,7 @@
<ng-template #templateButtonImportOffices let-popover="popover">
<h2>{{ 'labels.heading.Import Offices' | translate }}</h2>
<p class="mw300">{{ 'labels.text.Launch the Bulk import/Offices' | translate }}</p>
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
<div class="layout-row align-end gap-2px responsive-column">
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
{{ 'labels.buttons.Close' | translate }}
</button>
@@ -239,7 +239,7 @@
<ng-template #templateFilter let-popover="popover">
<h4>{{ 'labels.heading.Search bar to filter offices.' | translate }}</h4>
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
<div class="layout-row align-end gap-2px responsive-column">
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
{{ 'labels.buttons.Close' | translate }}
</button>
@@ -262,7 +262,7 @@
<ng-template #templateTableOffices let-popover="popover">
<h4>{{ 'labels.heading.List of offices in the organization.' | translate }}</h4>
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
<div class="layout-row align-end gap-2px responsive-column">
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
{{ 'labels.buttons.Close' | translate }}
</button>
@@ -1,5 +1,5 @@
<div class="tab-container mat-typography">
<div fxLayoutAlign="flex-end" class="action-button m-b-20">
<div class="layout-align-end action-button m-b-20">
<span *mifosxHasPermission="'UPDATE_OFFICE'">
<button mat-raised-button color="primary" [routerLink]="['../edit']">
<fa-icon icon="edit" class="m-r-10"></fa-icon>{{ 'labels.buttons.Edit' | translate }}
@@ -7,35 +7,27 @@
</span>
</div>
<div fxLayout="row wrap" fxLayout.lt-md="column">
<div fxFlex="45%" class="mat-body-strong left">
{{ 'labels.inputs.Parent Office' | translate }}
</div>
<div fxFlex="50%" class="right">
<div class="layout-row-wrap responsive-column">
<div class="flex-45 mat-body-strong left">{{ 'labels.inputs.Parent Office' | translate }}</div>
<div class="flex-50 right">
{{ officeData.parentName ? officeData.parentName : 'N/A' }}
</div>
<div fxFlex="45%" class="mat-body-strong left">
{{ 'labels.inputs.Opened On' | translate }}
</div>
<div fxFlex="50%" class="right">
<div class="flex-45 mat-body-strong left">{{ 'labels.inputs.Opened On' | translate }}</div>
<div class="flex-50 right">
{{ officeData.openingDate ? (officeData.openingDate | dateFormat) : 'Unassigned' }}
</div>
<div fxFlex="45%" class="mat-body-strong left">
{{ 'labels.inputs.Name Decorated' | translate }}
</div>
<div fxFlex="50%" class="right">
<div class="flex-45 mat-body-strong left">{{ 'labels.inputs.Name Decorated' | translate }}</div>
<div class="flex-50 right">
{{ officeData.nameDecorated ? officeData.nameDecorated : 'Unassigned' }}
</div>
<div fxFlex="45%" class="mat-body-strong left">
{{ 'labels.inputs.External Id' | translate }}
</div>
<div fxFlex="50%" class="right" *ngIf="officeData.externalId">
<div class="flex-45 mat-body-strong left">{{ 'labels.inputs.External Id' | translate }}</div>
<div class="flex-50 right" *ngIf="officeData.externalId">
<mifosx-external-identifier externalId="{{ officeData.externalId }}"></mifosx-external-identifier>
</div>
<div fxFlex="50%" class="right" *ngIf="!officeData.externalId">
<div class="flex-50 right" *ngIf="!officeData.externalId">
{{ 'labels.inputs.Unassigned' | translate }}
</div>
</div>
@@ -1,7 +1,7 @@
<div class="container">
<mat-card class="office-card">
<mat-card-content>
<nav mat-tab-nav-bar class="navigation-tabs">
<nav mat-tab-nav-bar class="navigation-tabs" [tabPanel]="tabPanel">
<a
mat-tab-link
[routerLink]="['./general']"
@@ -25,7 +25,9 @@
</span>
</nav>
<router-outlet></router-outlet>
<mat-tab-nav-panel #tabPanel>
<router-outlet></router-outlet>
</mat-tab-nav-panel>
</mat-card-content>
</mat-card>
</div>
+515 -219
View File
@@ -1,309 +1,605 @@
<div class="container">
<mat-card>
<div fxLayout="row" fxLayout.lt-md="column" fxLayoutGap="20px">
<div fxFlex="50%">
<div class="layout-row responsive-column gap-20px">
<div class="flex-50">
<mat-nav-list>
<div #office>
<mat-list-item *mifosxHasPermission="'READ_OFFICE'">
<mat-icon matListIcon [routerLink]="['offices']">
<fa-icon icon="building" size="sm"></fa-icon>
</mat-icon>
<h4 matLine [routerLink]="['offices']">{{ 'labels.heading.Manage Offices' | translate }}</h4>
<fa-icon (click)="arrowBooleansToggle(0)" *ngIf="!arrowBooleans[0]" icon="arrow-down" size="md"></fa-icon>
<fa-icon (click)="arrowBooleansToggle(0)" *ngIf="arrowBooleans[0]" icon="arrow-up" size="md"></fa-icon>
<p matLine *ngIf="arrowBooleans[0]" [routerLink]="['offices']">
{{ 'labels.text.Add new office or modify or deactivate office' | translate }}
</p>
<div class="menu-list-item-content">
<div class="menu-left-section" [routerLink]="['offices']">
<mat-icon matListIcon>
<fa-icon icon="building" size="sm"></fa-icon>
</mat-icon>
<div matLine>
{{ 'labels.heading.Manage Offices' | translate }}
<p matLine *ngIf="arrowBooleans[0]" [routerLink]="['offices']" class="menu-explanation">
{{ 'labels.text.Add new office or modify or deactivate office' | translate }}
</p>
</div>
</div>
<div class="menu-right-section">
<fa-icon
(click)="arrowBooleansToggle(0)"
*ngIf="!arrowBooleans[0]"
icon="arrow-down"
size="md"
></fa-icon>
<fa-icon
(click)="arrowBooleansToggle(0)"
*ngIf="arrowBooleans[0]"
icon="arrow-up"
size="md"
></fa-icon>
</div>
</div>
</mat-list-item>
</div>
<div #holidays>
<mat-list-item *mifosxHasPermission="'READ_HOLIDAY'">
<mat-icon matListIcon [routerLink]="['holidays']">
<fa-icon icon="calendar-alt" size="sm"></fa-icon>
</mat-icon>
<h4 matLine [routerLink]="['holidays']">{{ 'labels.heading.Manage Holidays' | translate }}</h4>
<fa-icon (click)="arrowBooleansToggle(1)" *ngIf="!arrowBooleans[1]" icon="arrow-down" size="md"></fa-icon>
<fa-icon (click)="arrowBooleansToggle(1)" *ngIf="arrowBooleans[1]" icon="arrow-up" size="md"></fa-icon>
<p matLine *ngIf="arrowBooleans[1]" [routerLink]="['holidays']">
{{ 'labels.text.Define holidays for office' | translate }}
</p>
<div class="menu-list-item-content">
<div class="menu-left-section" [routerLink]="['holidays']">
<mat-icon matListIcon>
<fa-icon icon="calendar-alt" size="sm"></fa-icon>
</mat-icon>
<div matLine>
{{ 'labels.heading.Manage Holidays' | translate }}
<p matLine *ngIf="arrowBooleans[1]" [routerLink]="['holidays']" class="menu-explanation">
{{ 'labels.text.Define holidays for office' | translate }}
</p>
</div>
</div>
<div class="menu-right-section">
<fa-icon
(click)="arrowBooleansToggle(1)"
*ngIf="!arrowBooleans[1]"
icon="arrow-down"
size="md"
></fa-icon>
<fa-icon
(click)="arrowBooleansToggle(1)"
*ngIf="arrowBooleans[1]"
icon="arrow-up"
size="md"
></fa-icon>
</div>
</div>
</mat-list-item>
</div>
<div #employee>
<mat-list-item *mifosxHasPermission="'READ_STAFF'">
<mat-icon matListIcon [routerLink]="['employees']">
<fa-icon icon="user" size="sm"></fa-icon>
</mat-icon>
<h4 matLine [routerLink]="['employees']">{{ 'labels.heading.Manage Employees' | translate }}</h4>
<fa-icon (click)="arrowBooleansToggle(2)" *ngIf="!arrowBooleans[2]" icon="arrow-down" size="md"></fa-icon>
<fa-icon (click)="arrowBooleansToggle(2)" *ngIf="arrowBooleans[2]" icon="arrow-up" size="md"></fa-icon>
<p matLine *ngIf="arrowBooleans[2]" [routerLink]="['employees']">
{{ 'labels.text.Employee represents loan officers' | translate }}
</p>
<div class="menu-list-item-content">
<div class="menu-left-section" [routerLink]="['employees']">
<mat-icon matListIcon>
<fa-icon icon="user" size="sm"></fa-icon>
</mat-icon>
<div matLine>
{{ 'labels.heading.Manage Employees' | translate }}
<p matLine *ngIf="arrowBooleans[2]" [routerLink]="['employees']" class="menu-explanation">
{{ 'labels.text.Employee represents loan officers' | translate }}
</p>
</div>
</div>
<div class="menu-right-section">
<fa-icon
(click)="arrowBooleansToggle(2)"
*ngIf="!arrowBooleans[2]"
icon="arrow-down"
size="md"
></fa-icon>
<fa-icon
(click)="arrowBooleansToggle(2)"
*ngIf="arrowBooleans[2]"
icon="arrow-up"
size="md"
></fa-icon>
</div>
</div>
</mat-list-item>
</div>
<div #standinginstructions>
<mat-list-item *mifosxHasPermission="'READ_STANDINGINSTRUCTION'">
<mat-icon matListIcon [routerLink]="['standing-instructions-history']">
<fa-icon icon="book" size="sm"></fa-icon>
</mat-icon>
<h4 matLine [routerLink]="['standing-instructions-history']">
{{ 'labels.heading.Standing Instructions History' | translate }}
</h4>
<fa-icon (click)="arrowBooleansToggle(3)" *ngIf="!arrowBooleans[3]" icon="arrow-down" size="md"></fa-icon>
<fa-icon (click)="arrowBooleansToggle(3)" *ngIf="arrowBooleans[3]" icon="arrow-up" size="md"></fa-icon>
<p matLine *ngIf="arrowBooleans[3]" [routerLink]="['standing-instructions-history']">
{{ 'labels.text.View logged history' | translate }}
</p>
<div class="menu-list-item-content">
<div class="menu-left-section" [routerLink]="['standing-instructions']">
<mat-icon matListIcon>
<fa-icon icon="book" size="sm"></fa-icon>
</mat-icon>
<div matLine>
{{ 'labels.heading.Standing Instructions History' | translate }}
<p
matLine
*ngIf="arrowBooleans[3]"
[routerLink]="['standing-instructions-history']"
class="menu-explanation"
>
{{ 'labels.text.View logged history' | translate }}
</p>
</div>
</div>
<div class="menu-right-section">
<fa-icon
(click)="arrowBooleansToggle(3)"
*ngIf="!arrowBooleans[3]"
icon="arrow-down"
size="md"
></fa-icon>
<fa-icon
(click)="arrowBooleansToggle(3)"
*ngIf="arrowBooleans[3]"
icon="arrow-up"
size="md"
></fa-icon>
</div>
</div>
</mat-list-item>
</div>
<div #investor>
<mat-list-item *mifosxHasPermission="'READ_OFFICE'">
<mat-icon matListIcon [routerLink]="['investors']">
<fa-icon icon="user-tie" size="sm"></fa-icon>
</mat-icon>
<h4 matLine [routerLink]="['investors']">{{ 'labels.text.Investors' | translate }}</h4>
<fa-icon (click)="arrowBooleansToggle(4)" *ngIf="!arrowBooleans[4]" icon="arrow-down" size="md"></fa-icon>
<fa-icon (click)="arrowBooleansToggle(4)" *ngIf="arrowBooleans[4]" icon="arrow-up" size="md"></fa-icon>
<p matLine *ngIf="arrowBooleans[4]" [routerLink]="['investors']">
{{ 'labels.text.View the loan account details associated with the investors' | translate }}
</p>
<div class="menu-list-item-content">
<div class="menu-left-section" [routerLink]="['investors']">
<mat-icon>
<fa-icon icon="user-tie" size="sm"></fa-icon>
</mat-icon>
<div matLine>
{{ 'labels.text.Investors' | translate }}
<p matLine *ngIf="arrowBooleans[4]" [routerLink]="['investors']" class="menu-explanation">
{{ 'labels.text.View the loan account details associated with the investors' | translate }}
</p>
</div>
</div>
<div class="menu-right-section">
<fa-icon
(click)="arrowBooleansToggle(4)"
*ngIf="!arrowBooleans[4]"
icon="arrow-down"
size="md"
></fa-icon>
<fa-icon
(click)="arrowBooleansToggle(4)"
*ngIf="arrowBooleans[4]"
icon="arrow-up"
size="md"
></fa-icon>
</div>
</div>
</mat-list-item>
</div>
<div #fundmapping>
<mat-list-item *mifosxHasPermission="'READ_OFFICE'">
<mat-icon matListIcon [routerLink]="['fund-mapping']">
<fa-icon icon="money-bill-alt" size="sm"></fa-icon>
</mat-icon>
<h4 matLine [routerLink]="['fund-mapping']">{{ 'labels.heading.Fund Mapping' | translate }}</h4>
<fa-icon (click)="arrowBooleansToggle(5)" *ngIf="!arrowBooleans[5]" icon="arrow-down" size="md"></fa-icon>
<fa-icon (click)="arrowBooleansToggle(5)" *ngIf="arrowBooleans[5]" icon="arrow-up" size="md"></fa-icon>
<p matLine *ngIf="arrowBooleans[5]" [routerLink]="['fund-mapping']">
{{ 'labels.text.Bulk entry screen for mapping' | translate }}
</p>
<div class="menu-list-item-content">
<div class="menu-left-section" [routerLink]="['fund-mapping']">
<mat-icon matListIcon>
<fa-icon icon="money-bill-alt" size="sm"></fa-icon>
</mat-icon>
<div matLine>
{{ 'labels.heading.Fund Mapping' | translate }}
<p matLine *ngIf="arrowBooleans[5]" [routerLink]="['fund-mapping']" class="menu-explanation">
{{ 'labels.text.Bulk entry screen for mapping' | translate }}
</p>
</div>
</div>
<div class="menu-right-section">
<fa-icon
(click)="arrowBooleansToggle(5)"
*ngIf="!arrowBooleans[5]"
icon="arrow-down"
size="md"
></fa-icon>
<fa-icon
(click)="arrowBooleansToggle(5)"
*ngIf="arrowBooleans[5]"
icon="arrow-up"
size="md"
></fa-icon>
</div>
</div>
</mat-list-item>
</div>
<div #passwordpreferences>
<mat-list-item *mifosxHasPermission="'READ_PASSWORD_VALIDATION_POLICY'">
<mat-icon matListIcon [routerLink]="['password-preferences']">
<fa-icon icon="lock" size="sm"></fa-icon>
</mat-icon>
<h4 matLine [routerLink]="['password-preferences']">
{{ 'labels.heading.Password Preferences' | translate }}
</h4>
<fa-icon (click)="arrowBooleansToggle(6)" *ngIf="!arrowBooleans[6]" icon="arrow-down" size="md"></fa-icon>
<fa-icon (click)="arrowBooleansToggle(6)" *ngIf="arrowBooleans[6]" icon="arrow-up" size="md"></fa-icon>
<p matLine *ngIf="arrowBooleans[6]" [routerLink]="['password-preferences']">
{{ 'labels.text.The usage of stronger passwords' | translate }}
</p>
<div class="menu-list-item-content">
<div class="menu-left-section" [routerLink]="['password-preferences']">
<mat-icon>
<fa-icon icon="lock" size="sm"></fa-icon>
</mat-icon>
<div matLine>
{{ 'labels.heading.Password Preferences' | translate }}
<p
matLine
*ngIf="arrowBooleans[6]"
[routerLink]="['password-preferences']"
class="menu-explanation"
>
{{ 'labels.text.The usage of stronger passwords' | translate }}
</p>
</div>
</div>
<div class="menu-right-section">
<fa-icon
(click)="arrowBooleansToggle(6)"
*ngIf="!arrowBooleans[6]"
icon="arrow-down"
size="md"
></fa-icon>
<fa-icon
(click)="arrowBooleansToggle(6)"
*ngIf="arrowBooleans[6]"
icon="arrow-up"
size="md"
></fa-icon>
</div>
</div>
</mat-list-item>
</div>
<div #provisioning>
<mat-list-item *mifosxHasPermission="'VIEW_PROVISIONS'">
<mat-icon matListIcon [routerLink]="['provisioning-criteria']">
<fa-icon icon="edit" size="sm"></fa-icon>
</mat-icon>
<h4 matLine [routerLink]="['provisioning-criteria']">
{{ 'labels.heading.Loan Provisioning Criteria' | translate }}
</h4>
<fa-icon (click)="arrowBooleansToggle(7)" *ngIf="!arrowBooleans[7]" icon="arrow-down" size="md"></fa-icon>
<fa-icon (click)="arrowBooleansToggle(7)" *ngIf="arrowBooleans[7]" icon="arrow-up" size="md"></fa-icon>
<p matLine *ngIf="arrowBooleans[7]" [routerLink]="['provisioning-criteria']">
{{ 'labels.text.Loan Provisioning Criteria Organization' | translate }}
</p>
<div class="menu-list-item-content">
<div class="menu-left-section" [routerLink]="['provisioning-criteria']">
<mat-icon matListIcon>
<fa-icon icon="edit" size="sm"></fa-icon>
</mat-icon>
<div matLine>
{{ 'labels.heading.Loan Provisioning Criteria' | translate }}
<p
matLine
*ngIf="arrowBooleans[7]"
[routerLink]="['provisioning-criteria']"
class="menu-explanation"
>
{{ 'labels.text.Loan Provisioning Criteria Organization' | translate }}
</p>
</div>
</div>
<div class="menu-right-section">
<fa-icon
(click)="arrowBooleansToggle(7)"
*ngIf="!arrowBooleans[7]"
icon="arrow-down"
size="md"
></fa-icon>
<fa-icon
(click)="arrowBooleansToggle(7)"
*ngIf="arrowBooleans[7]"
icon="arrow-up"
size="md"
></fa-icon>
</div>
</div>
</mat-list-item>
</div>
<div #entitydatatable>
<mat-list-item *mifosxHasPermission="'READ_ENTITY_DATATABLE_CHECK'">
<mat-icon matListIcon [routerLink]="['entity-data-table-checks']">
<fa-icon icon="check" size="sm"></fa-icon>
</mat-icon>
<h4 matLine [routerLink]="['entity-data-table-checks']">
{{ 'labels.heading.Entity Data Table Checks' | translate }}
</h4>
<fa-icon (click)="arrowBooleansToggle(8)" *ngIf="!arrowBooleans[8]" icon="arrow-down" size="md"></fa-icon>
<fa-icon (click)="arrowBooleansToggle(8)" *ngIf="arrowBooleans[8]" icon="arrow-up" size="md"></fa-icon>
<p matLine *ngIf="arrowBooleans[8]" [routerLink]="['entity-data-table-checks']">
{{ 'labels.text.Entity Data Table Checks Organization' | translate }}
</p>
<div class="menu-list-item-content">
<div class="menu-left-section" [routerLink]="['entity-data-table-checks']">
<mat-icon matListIcon>
<fa-icon icon="check" size="sm"></fa-icon>
</mat-icon>
<div matLine>
{{ 'labels.heading.Entity Data Table Checks' | translate }}
<p
matLine
*ngIf="arrowBooleans[8]"
[routerLink]="['entity-data-table-checks']"
class="menu-explanation"
>
{{ 'labels.text.Entity Data Table Checks Organization' | translate }}
</p>
</div>
</div>
<div class="menu-right-section">
<fa-icon
(click)="arrowBooleansToggle(8)"
*ngIf="!arrowBooleans[8]"
icon="arrow-down"
size="md"
></fa-icon>
<fa-icon
(click)="arrowBooleansToggle(8)"
*ngIf="arrowBooleans[8]"
icon="arrow-up"
size="md"
></fa-icon>
</div>
</div>
</mat-list-item>
</div>
</mat-nav-list>
</div>
<div fxFlex="50%">
<div class="flex-50">
<mat-nav-list>
<div #addEditCurrency>
<mat-list-item *mifosxHasPermission="'READ_CURRENCY'">
<mat-icon matListIcon [routerLink]="['currencies']">
<fa-icon icon="cogs" size="sm"></fa-icon>
</mat-icon>
<h4 matLine [routerLink]="['currencies']">{{ 'labels.heading.Currency Configuration' | translate }}</h4>
<fa-icon (click)="arrowBooleansToggle(9)" *ngIf="!arrowBooleans[9]" icon="arrow-down" size="md"></fa-icon>
<fa-icon (click)="arrowBooleansToggle(9)" *ngIf="arrowBooleans[9]" icon="arrow-up" size="md"></fa-icon>
<p matLine *ngIf="arrowBooleans[9]" [routerLink]="['currencies']">
{{ 'labels.text.Currencies available across organization' | translate }}
</p>
<div class="menu-list-item-content">
<div class="menu-left-section" [routerLink]="['currencies']">
<mat-icon matListIcon>
<fa-icon icon="cogs" size="sm"></fa-icon>
</mat-icon>
<div matLine>
{{ 'labels.heading.Currency Configuration' | translate }}
<p matLine *ngIf="arrowBooleans[9]" [routerLink]="['currencies']" class="menu-explanation">
{{ 'labels.text.Currencies available across organization' | translate }}
</p>
</div>
</div>
<div class="menu-right-section">
<fa-icon
(click)="arrowBooleansToggle(9)"
*ngIf="!arrowBooleans[9]"
icon="arrow-down"
size="md"
></fa-icon>
<fa-icon
(click)="arrowBooleansToggle(9)"
*ngIf="arrowBooleans[9]"
icon="arrow-up"
size="md"
></fa-icon>
</div>
</div>
</mat-list-item>
</div>
<div #manageFunds>
<mat-list-item *mifosxHasPermission="'READ_FUND'">
<mat-icon matListIcon [routerLink]="['manage-funds']">
<fa-icon icon="money-bill-alt" size="sm"></fa-icon>
</mat-icon>
<h4 matLine [routerLink]="['manage-funds']">{{ 'labels.heading.Manage Funds' | translate }}</h4>
<fa-icon
(click)="arrowBooleansToggle(10)"
*ngIf="!arrowBooleans[10]"
icon="arrow-down"
size="md"
></fa-icon>
<fa-icon (click)="arrowBooleansToggle(10)" *ngIf="arrowBooleans[10]" icon="arrow-up" size="md"></fa-icon>
<p matLine *ngIf="arrowBooleans[10]" [routerLink]="['manage-funds']">
{{ 'labels.text.Funds are associated with loans' | translate }}
</p>
<div class="menu-list-item-content">
<div class="menu-left-section" [routerLink]="['manage-funds']">
<mat-icon matListIcon>
<fa-icon icon="money-bill-alt" size="sm"></fa-icon>
</mat-icon>
<div matLine>
{{ 'labels.heading.Manage Funds' | translate }}
<p matLine *ngIf="arrowBooleans[10]" [routerLink]="['manage-funds']" class="menu-explanation">
{{ 'labels.text.Funds are associated with loans' | translate }}
</p>
</div>
</div>
<div class="menu-right-section">
<fa-icon
(click)="arrowBooleansToggle(10)"
*ngIf="!arrowBooleans[10]"
icon="arrow-down"
size="md"
></fa-icon>
<fa-icon
(click)="arrowBooleansToggle(10)"
*ngIf="arrowBooleans[10]"
icon="arrow-up"
size="md"
></fa-icon>
</div>
</div>
</mat-list-item>
</div>
<div #bulkloan>
<mat-list-item *mifosxHasPermission="'BULKREASSIGN_LOAN'">
<mat-icon matListIcon [routerLink]="['bulkloan']">
<fa-icon icon="money-bill-alt" size="sm"></fa-icon>
</mat-icon>
<h4 matLine [routerLink]="['bulkloan']">{{ 'labels.heading.Bulk Loan Reassignment' | translate }}</h4>
<fa-icon
(click)="arrowBooleansToggle(11)"
*ngIf="!arrowBooleans[11]"
icon="arrow-down"
size="md"
></fa-icon>
<fa-icon (click)="arrowBooleansToggle(11)" *ngIf="arrowBooleans[11]" icon="arrow-up" size="md"></fa-icon>
<p matLine *ngIf="arrowBooleans[11]" [routerLink]="['bulkloan']">
{{ 'labels.text.Easy way to reassign all the loan' | translate }}
</p>
<div class="menu-list-item-content">
<div class="menu-left-section" [routerLink]="['bulkloan']">
<mat-icon>
<fa-icon icon="money-bill-alt" size="sm"></fa-icon>
</mat-icon>
<div matLine>
{{ 'labels.heading.Bulk Loan Reassignment' | translate }}
<p matLine *ngIf="arrowBooleans[11]" [routerLink]="['bulkloan']" class="menu-explanation">
{{ 'labels.text.Easy way to reassign all the loan' | translate }}
</p>
</div>
</div>
<div class="menu-right-section">
<fa-icon
(click)="arrowBooleansToggle(11)"
*ngIf="!arrowBooleans[11]"
icon="arrow-down"
size="md"
></fa-icon>
<fa-icon
(click)="arrowBooleansToggle(11)"
*ngIf="arrowBooleans[11]"
icon="arrow-up"
size="md"
></fa-icon>
</div>
</div>
</mat-list-item>
</div>
<div #tellers>
<mat-list-item *mifosxHasPermission="'READ_TELLER'">
<mat-icon matListIcon [routerLink]="['tellers']">
<fa-icon icon="money-bill-alt" size="sm"></fa-icon>
</mat-icon>
<h4 matLine [routerLink]="['tellers']">{{ 'labels.heading.Teller / Cashier Management' | translate }}</h4>
<fa-icon
(click)="arrowBooleansToggle(12)"
*ngIf="!arrowBooleans[12]"
icon="arrow-down"
size="md"
></fa-icon>
<fa-icon (click)="arrowBooleansToggle(12)" *ngIf="arrowBooleans[12]" icon="arrow-up" size="md"></fa-icon>
<p matLine *ngIf="arrowBooleans[12]" [routerLink]="['tellers']">
{{ 'labels.text.Manage Tellers / Cashiers' | translate }}
</p>
<div class="menu-list-item-content">
<div class="menu-left-section" [routerLink]="['tellers']">
<mat-icon>
<fa-icon icon="money-bill-alt" size="sm"></fa-icon>
</mat-icon>
<div matLine>
{{ 'labels.heading.Teller / Cashier Management' | translate }}
<p matLine *ngIf="arrowBooleans[12]" [routerLink]="['tellers']" class="menu-explanation">
{{ 'labels.text.Manage Tellers / Cashiers' | translate }}
</p>
</div>
</div>
<div class="menu-right-section">
<fa-icon
(click)="arrowBooleansToggle(12)"
*ngIf="!arrowBooleans[12]"
icon="arrow-down"
size="md"
></fa-icon>
<fa-icon
(click)="arrowBooleansToggle(12)"
*ngIf="arrowBooleans[12]"
icon="arrow-up"
size="md"
></fa-icon>
</div>
</div>
</mat-list-item>
</div>
<div #workingDays>
<mat-list-item *mifosxHasPermission="'READ_WORKINGDAYS'">
<mat-icon matListIcon [routerLink]="['working-days']">
<fa-icon icon="calendar-alt" size="sm"></fa-icon>
</mat-icon>
<h4 matLine [routerLink]="['working-days']">{{ 'labels.heading.Working Days' | translate }}</h4>
<fa-icon
(click)="arrowBooleansToggle(13)"
*ngIf="!arrowBooleans[13]"
icon="arrow-down"
size="md"
></fa-icon>
<fa-icon (click)="arrowBooleansToggle(13)" *ngIf="arrowBooleans[13]" icon="arrow-up" size="md"></fa-icon>
<p matLine *ngIf="arrowBooleans[13]" [routerLink]="['working-days']">
{{ 'labels.text.Working days and configure behaviour of payments' | translate }}
</p>
<div class="menu-list-item-content">
<div class="menu-left-section" [routerLink]="['working-days']">
<mat-icon>
<fa-icon icon="calendar-alt" size="sm"></fa-icon>
</mat-icon>
<div matLine>
{{ 'labels.heading.Working Days' | translate }}
<p matLine *ngIf="arrowBooleans[13]" [routerLink]="['working-days']" class="menu-explanation">
{{ 'labels.text.Working days and configure behaviour of payments' | translate }}
</p>
</div>
</div>
<div class="menu-right-section">
<fa-icon
(click)="arrowBooleansToggle(13)"
*ngIf="!arrowBooleans[13]"
icon="arrow-down"
size="md"
></fa-icon>
<fa-icon
(click)="arrowBooleansToggle(13)"
*ngIf="arrowBooleans[13]"
icon="arrow-up"
size="md"
></fa-icon>
</div>
</div>
</mat-list-item>
</div>
<div #paymenttypes>
<mat-list-item *mifosxHasPermission="'READ_PAYMENTTYPE'">
<mat-icon matListIcon [routerLink]="['payment-types']">
<fa-icon icon="dollar-sign" size="sm"></fa-icon>
</mat-icon>
<h4 matLine [routerLink]="['payment-types']">{{ 'labels.heading.Payment Type' | translate }}</h4>
<fa-icon
(click)="arrowBooleansToggle(14)"
*ngIf="!arrowBooleans[14]"
icon="arrow-down"
size="md"
></fa-icon>
<fa-icon (click)="arrowBooleansToggle(14)" *ngIf="arrowBooleans[14]" icon="arrow-up" size="md"></fa-icon>
<p matLine *ngIf="arrowBooleans[14]" [routerLink]="['payment-types']">
{{ 'labels.text.Manage payment types' | translate }}
</p>
<div class="menu-list-item-content">
<div class="menu-left-section" [routerLink]="['payment-types']">
<mat-icon matListIcon>
<fa-icon icon="dollar-sign" size="sm"></fa-icon>
</mat-icon>
<div matLine>
{{ 'labels.heading.Payment Type' | translate }}
<p matLine *ngIf="arrowBooleans[14]" [routerLink]="['payment-types']" class="menu-explanation">
{{ 'labels.text.Manage payment types' | translate }}
</p>
</div>
</div>
<div class="menu-right-section">
<fa-icon
(click)="arrowBooleansToggle(14)"
*ngIf="!arrowBooleans[14]"
icon="arrow-down"
size="md"
></fa-icon>
<fa-icon
(click)="arrowBooleansToggle(14)"
*ngIf="arrowBooleans[14]"
icon="arrow-up"
size="md"
></fa-icon>
</div>
</div>
</mat-list-item>
</div>
<div #smscampaigns>
<mat-list-item *mifosxHasPermission="'VIEW_SMSCAMPAIGNS'">
<mat-icon matListIcon [routerLink]="['sms-campaigns']">
<fa-icon icon="envelope" size="sm"></fa-icon>
</mat-icon>
<h4 matLine [routerLink]="['sms-campaigns']">{{ 'labels.heading.SMS Campaigns' | translate }}</h4>
<fa-icon
(click)="arrowBooleansToggle(15)"
*ngIf="!arrowBooleans[15]"
icon="arrow-down"
size="md"
></fa-icon>
<fa-icon (click)="arrowBooleansToggle(15)" *ngIf="arrowBooleans[15]" icon="arrow-up" size="md"></fa-icon>
<p matLine *ngIf="arrowBooleans[15]" [routerLink]="['sms-campaigns']">
{{ 'labels.text.Define SMS Campaigns for Organization' | translate }}
</p>
<div class="menu-list-item-content">
<div class="menu-left-section" [routerLink]="['sms-campaigns']">
<mat-icon matListIcon>
<fa-icon icon="envelope" size="sm"></fa-icon>
</mat-icon>
<div matLine>
{{ 'labels.heading.SMS Campaigns' | translate }}
<p matLine *ngIf="arrowBooleans[15]" [routerLink]="['sms-campaigns']" class="menu-explanation">
{{ 'labels.text.Define SMS Campaigns for Organization' | translate }}
</p>
</div>
</div>
<div class="menu-right-section">
<fa-icon
(click)="arrowBooleansToggle(15)"
*ngIf="!arrowBooleans[15]"
icon="arrow-down"
size="md"
></fa-icon>
<fa-icon
(click)="arrowBooleansToggle(15)"
*ngIf="arrowBooleans[15]"
icon="arrow-up"
size="md"
></fa-icon>
</div>
</div>
</mat-list-item>
</div>
<div #adhocquery>
<mat-list-item *mifosxHasPermission="'VIEW_ADHOC'">
<mat-icon matListIcon [routerLink]="['adhoc-query']">
<fa-icon icon="chevron-right" size="sm"></fa-icon>
</mat-icon>
<h4 matLine [routerLink]="['adhoc-query']">{{ 'labels.heading.AdHocQuery' | translate }}</h4>
<fa-icon
(click)="arrowBooleansToggle(16)"
*ngIf="!arrowBooleans[16]"
icon="arrow-down"
size="md"
></fa-icon>
<fa-icon (click)="arrowBooleansToggle(16)" *ngIf="arrowBooleans[16]" icon="arrow-up" size="md"></fa-icon>
<p matLine *ngIf="arrowBooleans[16]" [routerLink]="['adhoc-query']">
{{ 'labels.text.Define AdHocQuery for Organization' | translate }}
</p>
<div class="menu-list-item-content">
<div class="menu-left-section" [routerLink]="['adhoc-query']">
<mat-icon matListIcon>
<fa-icon icon="chevron-right" size="sm"></fa-icon>
</mat-icon>
<div matLine>
{{ 'labels.heading.AdHocQuery' | translate }}
<p matLine *ngIf="arrowBooleans[16]" [routerLink]="['adhoc-query']" class="menu-explanation">
{{ 'labels.text.Define AdHocQuery for Organization' | translate }}
</p>
</div>
</div>
<div class="menu-right-section">
<fa-icon
(click)="arrowBooleansToggle(16)"
*ngIf="!arrowBooleans[16]"
icon="arrow-down"
size="md"
></fa-icon>
<fa-icon
(click)="arrowBooleansToggle(16)"
*ngIf="arrowBooleans[16]"
icon="arrow-up"
size="md"
></fa-icon>
</div>
</div>
</mat-list-item>
</div>
<div #bulkimport>
<mat-list-item *mifosxHasPermission="'VIEW_BULKIMPORT'">
<mat-icon matListIcon [routerLink]="['bulk-import']">
<fa-icon icon="upload" size="sm"></fa-icon>
</mat-icon>
<h4 matLine [routerLink]="['bulk-import']">{{ 'labels.heading.Bulk Import' | translate }}</h4>
<fa-icon
(click)="arrowBooleansToggle(17)"
*ngIf="!arrowBooleans[17]"
icon="arrow-down"
size="md"
></fa-icon>
<fa-icon (click)="arrowBooleansToggle(17)" *ngIf="arrowBooleans[17]" icon="arrow-up" size="md"></fa-icon>
<p matLine *ngIf="arrowBooleans[17]" [routerLink]="['bulk-import']">
{{ 'labels.text.Bulk data import using excel spreadsheet templates' | translate }}
</p>
<div class="menu-list-item-content">
<div class="menu-left-section" [routerLink]="['bulk-import']">
<mat-icon matListIcon>
<fa-icon icon="upload" size="sm"></fa-icon>
</mat-icon>
<div matLine>
{{ 'labels.heading.Bulk Import' | translate }}
<p matLine *ngIf="arrowBooleans[17]" [routerLink]="['bulk-import']" class="menu-explanation">
{{ 'labels.text.Bulk data import using excel spreadsheet templates' | translate }}
</p>
</div>
</div>
<div class="menu-right-section">
<fa-icon
(click)="arrowBooleansToggle(17)"
*ngIf="!arrowBooleans[17]"
icon="arrow-down"
size="md"
></fa-icon>
<fa-icon
(click)="arrowBooleansToggle(17)"
*ngIf="arrowBooleans[17]"
icon="arrow-up"
size="md"
></fa-icon>
</div>
</div>
</mat-list-item>
</div>
</mat-nav-list>
@@ -315,7 +611,7 @@
<ng-template #templateOffice let-popover="popover">
<h2>{{ 'labels.heading.Manage Offices' | translate }}</h2>
<p class="mw300">{{ 'labels.text.Manage Offices page allows you to create, edit' | translate }}</p>
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
<div class="layout-row align-end gap-2px responsive-column">
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
{{ 'labels.buttons.Close' | translate }}
</button>
@@ -331,7 +627,7 @@
<ng-template #templateAddEditCurrency let-popover="popover">
<h2>{{ 'labels.heading.Currency Configuration' | translate }}</h2>
<p class="mw300">{{ 'labels.text.Define what currencies interactions within the Mifos X system' | translate }}</p>
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
<div class="layout-row align-end gap-2px responsive-column">
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
{{ 'labels.buttons.Close' | translate }}
</button>
@@ -347,7 +643,7 @@
<ng-template #templateHolidays let-popover="popover">
<h2>{{ 'labels.heading.Manage Holidays' | translate }}</h2>
<p class="mw300">{{ 'labels.text.Ability to manage holidays for individual offices' | translate }}</p>
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
<div class="layout-row align-end gap-2px responsive-column">
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
{{ 'labels.buttons.Close' | translate }}
</button>
@@ -363,7 +659,7 @@
<ng-template #templateEmployee let-popover="popover">
<h2>{{ 'labels.heading.Manage Employees' | translate }}</h2>
<p class="mw300">{{ 'labels.text.View, edit and delete employees of your organization' | translate }}</p>
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
<div class="layout-row align-end gap-2px responsive-column">
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
{{ 'labels.buttons.Close' | translate }}
</button>
@@ -379,7 +675,7 @@
<ng-template #templateWorkingDays let-popover="popover">
<h2>{{ 'labels.heading.Working Days' | translate }}</h2>
<p class="mw300">{{ 'labels.text.Working days page allows you to define which days' | translate }}</p>
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
<div class="layout-row align-end gap-2px responsive-column">
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
{{ 'labels.buttons.Close' | translate }}
</button>
@@ -395,7 +691,7 @@
<ng-template #templateManageFunds let-popover="popover">
<h2>{{ 'labels.heading.Manage Funds' | translate }}</h2>
<p class="mw300">{{ 'labels.text.This allows you to manage funds associated with loans.' | translate }}</p>
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
<div class="layout-row align-end gap-2px responsive-column">
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
{{ 'labels.buttons.Close' | translate }}
</button>
@@ -1,6 +1,5 @@
/** Angular Imports */
import { Injectable } from '@angular/core';
import { Resolve } from '@angular/router';
/** rxjs Imports */
import { Observable } from 'rxjs';
@@ -12,7 +11,7 @@ import { OrganizationService } from '../organization.service';
* Password Preferences Template data resolver.
*/
@Injectable()
export class PasswordPreferencesTemplateResolver implements Resolve<Object> {
export class PasswordPreferencesTemplateResolver {
/**
* @param {OrganizationService} organizationService Organization service.
*/
@@ -2,14 +2,14 @@
<mat-card>
<form [formGroup]="passwordPreferencesForm" (ngSubmit)="submit()">
<mat-card-content>
<mat-radio-group fxLayout="column" formControlName="validationPolicyId" fxLayoutGap="10px">
<mat-radio-group class="layout-column gap-10px radio-group-spacing" formControlName="validationPolicyId">
<mat-radio-button *ngFor="let passwordPreference of passwordPreferencesData" [value]="passwordPreference.id">
<span class="description-wrap">{{ passwordPreference.description }}</span>
</mat-radio-button>
</mat-radio-group>
</mat-card-content>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<mat-card-actions class="layout-row align-center gap-5px responsive-column">
<button type="button" mat-raised-button [routerLink]="['../']">
{{ 'labels.buttons.Cancel' | translate }}
</button>
@@ -1,3 +1,15 @@
.description-wrap {
white-space: normal;
}
.radio-group-spacing {
display: flex;
gap: 2rem;
flex-direction: row;
}
@media (width <= 768px) {
.radio-group-spacing {
flex-direction: column;
}
}
@@ -2,7 +2,7 @@
<mat-card>
<form [formGroup]="paymentTypeForm" (ngSubmit)="submit()">
<mat-card-content>
<div fxLayout="column">
<div class="layout-column">
<mat-form-field>
<mat-label>{{ 'labels.inputs.Payment Type' | translate }}</mat-label>
<input required matInput formControlName="name" />
@@ -32,7 +32,7 @@
</div>
</mat-card-content>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<mat-card-actions class="layout-row align-center gap-5px responsive-column">
<button type="button" mat-raised-button [routerLink]="['../']">
{{ 'labels.buttons.Cancel' | translate }}
</button>
@@ -2,7 +2,7 @@
<mat-card>
<form [formGroup]="paymentTypeForm" (ngSubmit)="submit()">
<mat-card-content>
<div fxLayout="column">
<div class="layout-column">
<mat-form-field>
<mat-label>{{ 'labels.inputs.Payment Type' | translate }}</mat-label>
<input required matInput formControlName="name" />
@@ -32,7 +32,7 @@
</div>
</mat-card-content>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<mat-card-actions class="layout-row align-center gap-5px responsive-column">
<button type="button" mat-raised-button [routerLink]="['../../']">
{{ 'labels.buttons.Cancel' | translate }}
</button>
@@ -1,4 +1,4 @@
<div class="container m-b-20" fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px">
<div class="container m-b-20 layout-row align-end gap-20px">
<button mat-raised-button color="primary" [routerLink]="['create']" *mifosxHasPermission="'CREATE_PAYMENTTYPE'">
<fa-icon icon="plus" class="m-r-10"></fa-icon>
{{ 'labels.buttons.Create Payment Type' | translate }}
@@ -6,8 +6,8 @@
</div>
<div class="container">
<div fxLayout="row" fxLayoutGap="20px">
<mat-form-field fxFlex>
<div class="layout-row gap-20px">
<mat-form-field class="flex-fill">
<mat-label>{{ 'labels.inputs.Filter' | translate }}</mat-label>
<input matInput (keyup)="applyFilter($event.target.value)" />
</mat-form-field>
@@ -81,12 +81,13 @@
<ng-container matColumnDef="actions">
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Actions' | translate }}</th>
<td mat-cell *matCellDef="let paymentType">
<td mat-cell *matCellDef="let paymentType" class="layout-row">
<button
mat-button
[routerLink]="[paymentType.id, 'edit']"
color="primary"
*ngIf="!paymentType.isSystemDefined"
class="no-wrap"
>
<fa-icon icon="edit" class="m-r-10"></fa-icon>{{ 'labels.buttons.Edit' | translate }}
</button>
@@ -95,6 +96,7 @@
(click)="deletePaymentType(paymentType.id)"
color="warn"
*ngIf="!paymentType.isSystemDefined"
class="no-wrap"
>
<fa-icon icon="trash" class="m-r-10"></fa-icon>{{ 'labels.buttons.Delete' | translate }}
</button>
@@ -13,3 +13,9 @@ table {
.text-center {
text-align: center;
}
.nowrap {
display: inline-flex;
align-items: center;
white-space: nowrap;
}
@@ -1,6 +1,6 @@
/** Angular Imports */
import { Injectable } from '@angular/core';
import { ActivatedRouteSnapshot, Resolve } from '@angular/router';
import { ActivatedRouteSnapshot } from '@angular/router';
/** rxjs Imports */
import { Observable } from 'rxjs';
@@ -12,7 +12,7 @@ import { OrganizationService } from '../organization.service';
* Payment Types data resolver.
*/
@Injectable()
export class PaymentTypesResolver implements Resolve<Object> {
export class PaymentTypesResolver {
/**
* @param {OrganizationService} organizationService Organization service.
*/
@@ -1,6 +1,5 @@
/** Angular Imports */
import { Injectable } from '@angular/core';
import { Resolve } from '@angular/router';
/** rxjs Imports */
import { Observable } from 'rxjs';
@@ -12,7 +11,7 @@ import { OrganizationService } from '../../organization.service';
* SMS Campaign Template resolver.
*/
@Injectable()
export class SmsCampaignTemplateResolver implements Resolve<Object> {
export class SmsCampaignTemplateResolver {
/**
* @param {OrganizationService} organizationService Organization service.
*/
@@ -1,6 +1,6 @@
/** Angular Imports */
import { Injectable } from '@angular/core';
import { Resolve, ActivatedRouteSnapshot } from '@angular/router';
import { ActivatedRouteSnapshot } from '@angular/router';
/** rxjs Imports */
import { Observable } from 'rxjs';
@@ -12,7 +12,7 @@ import { OrganizationService } from 'app/organization/organization.service';
* SMS Campaign data resolver.
*/
@Injectable()
export class SmsCampaignResolver implements Resolve<Object> {
export class SmsCampaignResolver {
/**
* @param {OrganizationService} organizationService Organization service.
*/
@@ -1,6 +1,5 @@
/** Angular Imports */
import { Injectable } from '@angular/core';
import { Resolve } from '@angular/router';
/** rxjs Imports */
import { Observable } from 'rxjs';
@@ -12,7 +11,7 @@ import { OrganizationService } from '../../organization.service';
* SMS Campaigns data resolver.
*/
@Injectable()
export class SmsCampaignsResolver implements Resolve<Object> {
export class SmsCampaignsResolver {
/**
* @param {OrganizationService} organizationService Organization service.
*/
@@ -1,12 +1,12 @@
<div fxLayout="column">
<mat-form-field fxFlex="98%">
<div class="layout-column">
<mat-form-field class="flex-98">
<mat-label>{{ 'labels.inputs.Campaign Message' | translate }}</mat-label>
<textarea matInput [formControl]="message"></textarea>
</mat-form-field>
<h3 fxFlex="98%" class="mat-h3">{{ 'labels.heading.Template Parameters' | translate }}</h3>
<h3 class="mat-h3 flex-98">{{ 'labels.heading.Template Parameters' | translate }}</h3>
<div fxLayout="row wrap" fxLayout.xs="column" fxLayoutAlign="center">
<div class="layout-row-wrap layout-xs-column layout-align-center">
<button
mat-stroked-button
color="primary"
@@ -18,7 +18,7 @@
</button>
</div>
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
<div class="layout-row align-center gap-2percent margin-t responsive-column">
<button mat-raised-button matStepperPrevious>
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
{{ 'labels.buttons.Previous' | translate }}
@@ -17,13 +17,13 @@
{{ campaign.editFlag ? campaign.reportName : campaign.paramValue?.reportName }}
</mat-list-item>
<div fxLayout="column" fxLayoutGap="10px" class="template-message">
<div class="layout-column gap-10px template-message">
<h3>{{ 'labels.heading.Campaign Message' | translate }} :</h3>
<textarea matInput disabled>{{ campaign.editFlag ? editedCampaignMessage : campaign.message }}</textarea>
</div>
</mat-list>
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
<div class="layout-row align-center gap-2percent margin-t responsive-column">
<button mat-raised-button [routerLink]="['../']">
{{ 'labels.buttons.Cancel' | translate }}
</button>
@@ -1,13 +1,13 @@
<div fxLayout="column">
<mat-divider fxFlex="98%"></mat-divider>
<div class="layout-column">
<mat-divider class="flex-98"></mat-divider>
<h3 fxFlex="98%" class="mat-h3">{{ 'labels.heading.Business Rule Parameters' | translate }}</h3>
<h3 class="mat-h3 flex-98">{{ 'labels.heading.Business Rule Parameters' | translate }}</h3>
<form [formGroup]="ReportForm">
<div fxLayout="row wrap" fxLayoutGap="2%">
<div class="layout-row-wrap gap-2percent">
<ng-container *ngFor="let param of paramData" [ngSwitch]="param.displayType">
<ng-container *ngIf="ReportForm.controls[param.name]">
<mat-form-field fxFlex="48%" *ngSwitchCase="'text'">
<mat-form-field class="flex-48" *ngSwitchCase="'text'">
<mat-label>{{ param.label }}</mat-label>
<input matInput required [formControlName]="param.name" />
<mat-error *ngIf="ReportForm.controls[param.name].hasError('required')">
@@ -16,7 +16,7 @@
</mat-error>
</mat-form-field>
<mat-form-field fxFlex="48%" *ngSwitchCase="'date'" (click)="runReportDatePicker.open()">
<mat-form-field class="flex-48" *ngSwitchCase="'date'" (click)="runReportDatePicker.open()">
<mat-label>{{ param.label }}</mat-label>
<input
matInput
@@ -34,7 +34,7 @@
</mat-error>
</mat-form-field>
<mat-form-field fxFlex="48%" *ngSwitchCase="'select'">
<mat-form-field class="flex-48" *ngSwitchCase="'select'">
<mat-label>{{ param.label }}</mat-label>
<mat-select required [formControlName]="param.name" [compareWith]="compareOptions">
<mat-option *ngFor="let option of param.selectOptions" [value]="option">
@@ -52,7 +52,7 @@
</form>
</div>
<div fxLayout="row" class="margin-t" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="2%">
<div class="layout-row responsive-column align-center gap-2px margin-t">
<button mat-raised-button matStepperPrevious disabled>
<fa-icon icon="arrow-left" class="m-r-10"></fa-icon>
{{ 'labels.buttons.Previous' | translate }}
@@ -1,6 +1,6 @@
<form [formGroup]="smsCampaignDetailsForm">
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column" fxLayoutAlign.gt-sm="start center">
<mat-form-field fxFlex="48%">
<div class="layout-row-wrap gap-2percent responsive-column align-start-center">
<mat-form-field class="flex-48">
<mat-label>{{ 'labels.inputs.Campaign Name' | translate }}</mat-label>
<input matInput formControlName="campaignName" required />
<mat-error>
@@ -9,7 +9,7 @@
</mat-error>
</mat-form-field>
<mat-form-field fxFlex="48%" *ngIf="!smsCampaignDetailsForm.controls.isNotification.value">
<mat-form-field class="flex-48" *ngIf="!smsCampaignDetailsForm.controls.isNotification.value">
<mat-label>{{ 'labels.inputs.SMS Provider' | translate }}</mat-label>
<mat-select formControlName="providerId">
<mat-option *ngFor="let provider of smsProviders" [value]="provider.id">
@@ -18,7 +18,7 @@
</mat-select>
</mat-form-field>
<mat-form-field fxFlex="48%">
<mat-form-field class="flex-48">
<mat-label>{{ 'labels.inputs.Trigger Type' | translate }}</mat-label>
<mat-select formControlName="triggerType" required>
<mat-option *ngFor="let triggerType of triggerTypes" [value]="triggerType.id">
@@ -31,12 +31,12 @@
</mat-error>
</mat-form-field>
<mat-checkbox labelPosition="before" formControlName="isNotification" fxFlex="48%">
<mat-checkbox labelPosition="before" formControlName="isNotification" class="flex-48">
{{ 'labels.inputs.Is Notification' | translate }}?
</mat-checkbox>
<mat-form-field
fxFlex="48%"
class="flex-48"
*ngIf="smsCampaignDetailsForm.controls.recurrenceStartDate"
(click)="recurrenceStartDatePicker.open()"
>
@@ -57,7 +57,7 @@
</mat-error>
</mat-form-field>
<mat-form-field fxFlex="48%">
<mat-form-field class="flex-48">
<mat-label>{{ 'labels.inputs.Business Rule' | translate }}</mat-label>
<mat-select formControlName="runReportId" required>
<mat-option *ngFor="let rule of businessRules" [value]="rule.reportId">
@@ -1,13 +1,13 @@
<div fxLayout="column">
<mat-divider fxFlex="98%"></mat-divider>
<div class="layout-column">
<mat-divider class="flex-98"></mat-divider>
<h3 fxFlex="98%" class="mat-h3">{{ 'labels.heading.Business Rule Parameters' | translate }}</h3>
<h3 class="mat-h3 flex-98">{{ 'labels.heading.Business Rule Parameters' | translate }}</h3>
<form [formGroup]="ReportForm">
<div fxLayout="row wrap" fxLayoutGap="2%">
<div class="layout-row-wrap gap-2percent">
<ng-container *ngFor="let param of paramData" [ngSwitch]="param.displayType">
<ng-container *ngIf="ReportForm.contains(param.name)">
<mat-form-field fxFlex="48%" *ngSwitchCase="'text'">
<mat-form-field class="flex-48" *ngSwitchCase="'text'">
<mat-label>{{ param.label }}</mat-label>
<input matInput required [formControlName]="param.name" />
<mat-error *ngIf="ReportForm.controls[param.name].hasError('required')">
@@ -16,7 +16,7 @@
</mat-error>
</mat-form-field>
<mat-form-field fxFlex="48%" *ngSwitchCase="'date'" (click)="runReportDatePicker.open()">
<mat-form-field class="flex-48" *ngSwitchCase="'date'" (click)="runReportDatePicker.open()">
<mat-label>{{ param.label }}</mat-label>
<input
matInput
@@ -34,7 +34,7 @@
</mat-error>
</mat-form-field>
<mat-form-field fxFlex="48%" *ngSwitchCase="'select'">
<mat-form-field class="flex-48" *ngSwitchCase="'select'">
<mat-label>{{ param.label }}</mat-label>
<mat-select required [formControlName]="param.name">
<mat-option *ngFor="let option of param.selectOptions" [value]="option">
@@ -52,7 +52,7 @@
</form>
</div>
<div class="margin-t" fxLayoutAlign="center">
<div class="layout-align-center margin-t">
<button
mat-raised-button
matStepperNext
@@ -1,6 +1,6 @@
<form [formGroup]="smsCampaignDetailsForm">
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column" fxLayoutAlign.gt-sm="start center">
<mat-form-field fxFlex="48%">
<div class="layout-row-wrap gap-2percent responsive-column align-start-center">
<mat-form-field class="flex-48">
<mat-label>{{ 'labels.inputs.Campaign Name' | translate }}</mat-label>
<input matInput formControlName="campaignName" required />
<mat-error>
@@ -9,7 +9,7 @@
</mat-error>
</mat-form-field>
<mat-form-field fxFlex="48%" *ngIf="!smsCampaignDetailsForm.controls.isNotification.value">
<mat-form-field class="flex-48" *ngIf="!smsCampaignDetailsForm.controls.isNotification.value">
<mat-label>{{ 'labels.inputs.SMS Provider' | translate }}</mat-label>
<mat-select formControlName="providerId">
<mat-option *ngFor="let provider of smsProviders" [value]="provider.id">
@@ -18,7 +18,7 @@
</mat-select>
</mat-form-field>
<mat-form-field fxFlex="48%">
<mat-form-field class="flex-48">
<mat-label>{{ 'labels.inputs.Trigger Type' | translate }}</mat-label>
<mat-select formControlName="triggerType" required>
<mat-option *ngFor="let triggerType of triggerTypes" [value]="triggerType.id">
@@ -31,12 +31,12 @@
</mat-error>
</mat-form-field>
<mat-checkbox labelPosition="before" formControlName="isNotification" fxFlex="48%">
<mat-checkbox labelPosition="before" formControlName="isNotification" class="flex-48">
{{ 'labels.inputs.Is Notification' | translate }}?
</mat-checkbox>
<mat-form-field
fxFlex="48%"
class="flex-48"
*ngIf="smsCampaignDetailsForm.contains('recurrenceStartDate')"
(click)="recurrenceStartDatePicker.open()"
>
@@ -57,7 +57,7 @@
</mat-error>
</mat-form-field>
<mat-form-field fxFlex="48%" *ngIf="smsCampaignDetailsForm.contains('frequency')">
<mat-form-field class="flex-48" *ngIf="smsCampaignDetailsForm.contains('frequency')">
<mat-label>{{ 'labels.inputs.Repeats' | translate }}</mat-label>
<mat-select formControlName="frequency" required>
<mat-option [value]="1">{{ 'labels.inputs.Daily' | translate }}</mat-option>
@@ -71,7 +71,7 @@
</mat-error>
</mat-form-field>
<mat-form-field fxFlex="48%" *ngIf="smsCampaignDetailsForm.contains('interval')">
<mat-form-field class="flex-48" *ngIf="smsCampaignDetailsForm.contains('interval')">
<mat-label>{{ 'labels.inputs.Repetition Interval' | translate }}</mat-label>
<mat-select formControlName="interval" required>
<mat-option *ngFor="let interval of repetitionIntervals" [value]="interval">
@@ -84,7 +84,7 @@
</mat-error>
</mat-form-field>
<mat-form-field fxFlex="48%" *ngIf="smsCampaignDetailsForm.contains('repeatsOnDay')">
<mat-form-field class="flex-48" *ngIf="smsCampaignDetailsForm.contains('repeatsOnDay')">
<mat-label>{{ 'labels.inputs.Repeats on Day' | translate }}</mat-label>
<mat-select formControlName="repeatsOnDay" required>
<mat-option value="1">{{ 'labels.inputs.Monday' | translate }}</mat-option>
@@ -101,7 +101,7 @@
</mat-error>
</mat-form-field>
<mat-form-field fxFlex="48%">
<mat-form-field class="flex-48">
<mat-label>{{ 'labels.inputs.Business Rule' | translate }}</mat-label>
<mat-select formControlName="runReportId" required>
<mat-option *ngFor="let rule of businessRules" [value]="rule.reportId">
@@ -116,11 +116,7 @@
</div>
<div
fxLayout="row"
class="margin-t"
fxLayout.xs="column"
fxLayoutAlign="center"
fxLayoutGap="2%"
class="layout-row layout-xs-column layout-align-center margin-t gap-2percent"
*ngIf="!smsCampaignDetailsForm.controls.runReportId.value"
>
<button mat-raised-button matStepperPrevious disabled>
@@ -1,4 +1,4 @@
<div class="container m-b-20" fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px">
<div class="container m-b-20 layout-row align-end gap-20px">
<button mat-raised-button color="primary" [routerLink]="['create']" *mifosxHasPermission="'CREATE_SMSCAMPAIGN'">
<fa-icon icon="plus" class="m-r-10"></fa-icon>
{{ 'labels.buttons.Create SMS Campaign' | translate }}
@@ -6,8 +6,8 @@
</div>
<div class="container">
<div fxLayout="row" fxLayoutGap="20px">
<mat-form-field fxFlex>
<div class="layout-row gap-20px">
<mat-form-field class="flex-fill">
<mat-label>{{ 'labels.inputs.Filter' | translate }}</mat-label>
<input matInput (keyup)="applyFilter($event.target.value)" />
</mat-form-field>
@@ -1,5 +1,5 @@
<div class="container">
<div fxLayout="row" fxLayoutGap="1%" fxLayoutAlign="flex-end" class="action-buttons m-b-20">
<div class="layout-row align-flex-end action-buttons m-b-20 gap-1percent">
<span *ngIf="smsCampaignData.campaignStatus.value !== 'active'">
<button mat-raised-button color="primary" *mifosxHasPermission="'UPDATE_SMSCAMPAIGN'" [routerLink]="['edit']">
<fa-icon icon="edit" class="m-r-10"></fa-icon>{{ 'labels.buttons.Edit' | translate }}
@@ -74,7 +74,7 @@
{{ 'labels.inputs.Recurrence' | translate }} : {{ smsCampaignData.recurrence }}
</mat-list-item>
<div fxLayout="column" fxLayoutGap="10px" class="template-message">
<div class="layout-column gap-10px template-message">
<h3>{{ 'labels.heading.Template Message' | translate }} :</h3>
<textarea matInput disabled>{{ smsCampaignData.campaignMessage }}</textarea>
</div>
@@ -85,7 +85,7 @@
<mat-tab *ngFor="let tab of smsTabs" [label]="tab.label">
<div class="tab-content mat-typography">
<form [formGroup]="smsForm" (ngSubmit)="search()">
<div fxLayout="row" fxLayoutGap="3%" fxLayoutAlign="center">
<div class="layout-row layout-align-center gap-3percent">
<mat-form-field (click)="fromDatePicker.open()">
<mat-label>{{ 'labels.inputs.From Date' | translate }}</mat-label>
<input
@@ -2,7 +2,7 @@
<mat-card *ngIf="!isCollapsed">
<form [formGroup]="instructionForm" (ngSubmit)="search()">
<mat-card-content>
<div fxLayout="column">
<div class="layout-column">
<mat-form-field>
<mat-label>{{ 'labels.inputs.Client Name' | translate }}</mat-label>
<input matInput formControlName="clientName" />
@@ -64,7 +64,7 @@
</div>
</mat-card-content>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<mat-card-actions class="layout-row align-center gap-5px responsive-column">
<button type="button" mat-raised-button [routerLink]="['../']">
{{ 'labels.buttons.Cancel' | translate }}
</button>
@@ -1,6 +1,5 @@
/** Angular Imports */
import { Injectable } from '@angular/core';
import { Resolve } from '@angular/router';
/** rxjs Imports */
import { Observable } from 'rxjs';
@@ -12,7 +11,7 @@ import { OrganizationService } from '../organization.service';
* Standing Instructions Template resolver.
*/
@Injectable()
export class StandingInstructionsTemplateResolver implements Resolve<Object> {
export class StandingInstructionsTemplateResolver {
/**
* @param {OrganizationService} organizationService Organization service.
*/
@@ -2,28 +2,28 @@
<mat-card>
<form [formGroup]="allocateCashForm" (ngSubmit)="submit()">
<mat-card-content>
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
<mat-form-field fxFlex="48%">
<div class="layout-row-wrap gap-2px responsive-column">
<mat-form-field class="flex-48">
<mat-label>{{ 'labels.inputs.Office' | translate }}</mat-label>
<input matInput required formControlName="office" />
</mat-form-field>
<mat-form-field fxFlex="48%">
<mat-form-field class="flex-48">
<mat-label>{{ 'labels.inputs.Teller Name' | translate }}</mat-label>
<input matInput required formControlName="tellerName" />
</mat-form-field>
<mat-form-field fxFlex="48%">
<mat-form-field class="flex-48">
<mat-label>{{ 'labels.inputs.Cashier' | translate }}</mat-label>
<input matInput required formControlName="cashier" />
</mat-form-field>
<mat-form-field fxFlex="48%">
<mat-form-field class="flex-48">
<mat-label>{{ 'labels.inputs.Assignment Period' | translate }}</mat-label>
<input matInput formControlName="assignmentPeriod" />
</mat-form-field>
<mat-form-field fxFlex="48%" (click)="cashDatePicker.open()">
<mat-form-field class="flex-48" (click)="cashDatePicker.open()">
<mat-label>{{ 'labels.inputs.Date' | translate }}</mat-label>
<input
matInput
@@ -41,7 +41,7 @@
</mat-error>
</mat-form-field>
<mat-form-field fxFlex="48%">
<mat-form-field class="flex-48">
<mat-label>{{ 'labels.inputs.Currency' | translate }}</mat-label>
<mat-select required formControlName="currencyCode">
<mat-option *ngFor="let currency of cashierData.currencyOptions" [value]="currency.code">
@@ -54,7 +54,7 @@
</mat-error>
</mat-form-field>
<mat-form-field fxFlex="48%">
<mat-form-field class="flex-48">
<mat-label>{{ 'labels.inputs.Amount' | translate }}</mat-label>
<input matInput required formControlName="txnAmount" />
<mat-error *ngIf="allocateCashForm.controls.txnAmount.hasError('required')">
@@ -63,7 +63,7 @@
</mat-error>
</mat-form-field>
<mat-form-field fxFlex="48%">
<mat-form-field class="flex-48">
<mat-label>{{ 'labels.inputs.Notes/Comments' | translate }}</mat-label>
<input matInput required formControlName="txnNote" />
<mat-error *ngIf="allocateCashForm.controls.txnNote.hasError('required')">
@@ -74,7 +74,7 @@
</div>
</mat-card-content>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<mat-card-actions class="layout-row align-center gap-5px responsive-column">
<button type="button" mat-raised-button [routerLink]="['../']">
{{ 'labels.buttons.Cancel' | translate }}
</button>
@@ -1,4 +1,4 @@
<div class="container m-b-20" fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px">
<div class="container m-b-20 layout-row align-end gap-20px">
<button
mat-raised-button
color="primary"
@@ -11,8 +11,8 @@
</div>
<div class="container">
<div fxLayout="row" fxLayoutGap="20px">
<mat-form-field fxFlex>
<div class="layout-row gap-20px">
<mat-form-field class="flex-fill">
<mat-label>{{ 'labels.inputs.Filter' | translate }}</mat-label>
<input matInput (keyup)="applyFilter($event.target.value)" />
</mat-form-field>
@@ -2,18 +2,18 @@
<mat-card>
<form [formGroup]="createCashierForm" (ngSubmit)="submit()">
<mat-card-content>
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
<mat-form-field fxFlex="48%">
<div class="layout-row-wrap gap-2px responsive-column">
<mat-form-field class="flex-48">
<mat-label>{{ 'labels.inputs.Office' | translate }}</mat-label>
<input matInput required autofocus [value]="cashierTemplate.officeName" disabled />
</mat-form-field>
<mat-form-field fxFlex="48%">
<mat-form-field class="flex-48">
<mat-label>{{ 'labels.inputs.Teller Name' | translate }}</mat-label>
<input matInput required autofocus [value]="cashierTemplate.tellerName" disabled />
</mat-form-field>
<mat-form-field fxFlex="48%">
<mat-form-field class="flex-48">
<mat-label>{{ 'labels.inputs.Cashier' | translate }}</mat-label>
<mat-select formControlName="staffId">
<mat-option *ngFor="let staff of cashierTemplate.staffOptions" [value]="staff.id">
@@ -26,12 +26,12 @@
</mat-error>
</mat-form-field>
<mat-form-field fxFlex="48%">
<mat-form-field class="flex-48">
<mat-label>{{ 'labels.inputs.Description/Notes' | translate }}</mat-label>
<input matInput autofocus formControlName="description" />
</mat-form-field>
<mat-form-field fxFlex="48%" (click)="fromDatePicker.open()">
<mat-form-field class="flex-48" (click)="fromDatePicker.open()">
<mat-label>{{ 'labels.inputs.From' | translate }}</mat-label>
<input
matInput
@@ -49,7 +49,7 @@
</mat-error>
</mat-form-field>
<mat-form-field fxFlex="48%" (click)="toDatePicker.open()">
<mat-form-field class="flex-48" (click)="toDatePicker.open()">
<mat-label>{{ 'labels.inputs.To' | translate }}</mat-label>
<input
matInput
@@ -67,7 +67,7 @@
</mat-error>
</mat-form-field>
<div fxFlex="48%" class="space">
<div class="space flex-48">
<mat-checkbox labelPosition="before" formControlName="isFullDay">
{{ 'labels.inputs.Full Day' | translate }}?
</mat-checkbox>
@@ -75,7 +75,7 @@
</div>
</mat-card-content>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<mat-card-actions class="layout-row align-center gap-5px responsive-column">
<button type="button" mat-raised-button [routerLink]="['../']">
{{ 'labels.buttons.Cancel' | translate }}
</button>
@@ -2,18 +2,18 @@
<mat-card>
<form [formGroup]="editCashierForm" (ngSubmit)="submit()">
<mat-card-content>
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
<mat-form-field fxFlex="48%">
<div class="layout-row-wrap gap-2px responsive-column">
<mat-form-field class="flex-48">
<mat-label>{{ 'labels.inputs.Office' | translate }}</mat-label>
<input matInput required autofocus [value]="cashierData.template.officeName" disabled />
</mat-form-field>
<mat-form-field fxFlex="48%">
<mat-form-field class="flex-48">
<mat-label>{{ 'labels.inputs.Teller Name' | translate }}</mat-label>
<input matInput required autofocus [value]="cashierData.data.tellerName" disabled />
</mat-form-field>
<mat-form-field fxFlex="48%" *ngIf="isStaffId">
<mat-form-field class="flex-48" *ngIf="isStaffId">
<mat-label>{{ 'labels.inputs.Cashier' | translate }}</mat-label>
<mat-select formControlName="staffId">
<mat-option *ngFor="let staff of cashierData.template.staffOptions" [value]="staff.id">
@@ -22,7 +22,7 @@
</mat-select>
</mat-form-field>
<mat-form-field fxFlex="48%" *ngIf="!isStaffId">
<mat-form-field class="flex-48" *ngIf="!isStaffId">
<mat-label>{{ 'labels.inputs.Cashier' | translate }}</mat-label>
<mat-select formControlName="staffId" *ngIf="!isStaffId">
<mat-option [value]="cashierData.data.staffId">
@@ -31,12 +31,12 @@
</mat-select>
</mat-form-field>
<mat-form-field fxFlex="48%">
<mat-form-field class="flex-48">
<mat-label>{{ 'labels.inputs.Description/Notes' | translate }}</mat-label>
<input matInput autofocus formControlName="description" />
</mat-form-field>
<mat-form-field fxFlex="48%" (click)="fromDatePicker.open()">
<mat-form-field class="flex-48" (click)="fromDatePicker.open()">
<mat-label>{{ 'labels.inputs.From' | translate }}</mat-label>
<input
matInput
@@ -54,7 +54,7 @@
</mat-error>
</mat-form-field>
<mat-form-field fxFlex="48%" (click)="toDatePicker.open()">
<mat-form-field class="flex-48" (click)="toDatePicker.open()">
<mat-label>{{ 'labels.inputs.To' | translate }}</mat-label>
<input
matInput
@@ -72,7 +72,7 @@
</mat-error>
</mat-form-field>
<div fxFlex="48%" class="space">
<div class="space flex-48">
<mat-checkbox labelPosition="before" formControlName="isFullDay">
{{ 'labels.inputs.Full Day' | translate }}?
</mat-checkbox>
@@ -80,7 +80,7 @@
</div>
</mat-card-content>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<mat-card-actions class="layout-row align-center gap-5px responsive-column">
<button type="button" mat-raised-button [routerLink]="['../']">
{{ 'labels.buttons.Cancel' | translate }}
</button>
@@ -2,28 +2,28 @@
<mat-card>
<form [formGroup]="settleCashForm" (ngSubmit)="submit()">
<mat-card-content>
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
<mat-form-field fxFlex="48%">
<div class="layout-row-wrap gap-2px responsive-column">
<mat-form-field class="flex-48">
<mat-label>{{ 'labels.inputs.Office' | translate }}</mat-label>
<input matInput required formControlName="office" />
</mat-form-field>
<mat-form-field fxFlex="48%">
<mat-form-field class="flex-48">
<mat-label>{{ 'labels.inputs.Teller Name' | translate }}</mat-label>
<input matInput required formControlName="tellerName" />
</mat-form-field>
<mat-form-field fxFlex="48%">
<mat-form-field class="flex-48">
<mat-label>{{ 'labels.inputs.Cashier' | translate }}</mat-label>
<input matInput required formControlName="cashier" />
</mat-form-field>
<mat-form-field fxFlex="48%">
<mat-form-field class="flex-48">
<mat-label>{{ 'labels.inputs.Assignment Period' | translate }}</mat-label>
<input matInput formControlName="assignmentPeriod" />
</mat-form-field>
<mat-form-field fxFlex="48%" (click)="cashDatePicker.open()">
<mat-form-field class="flex-48" (click)="cashDatePicker.open()">
<mat-label>{{ 'labels.inputs.Date' | translate }}</mat-label>
<input
matInput
@@ -41,7 +41,7 @@
</mat-error>
</mat-form-field>
<mat-form-field fxFlex="48%">
<mat-form-field class="flex-48">
<mat-label>{{ 'labels.inputs.Currency' | translate }}</mat-label>
<mat-select required formControlName="currencyCode">
<mat-option *ngFor="let currency of cashierData.currencyOptions" [value]="currency.code">
@@ -54,7 +54,7 @@
</mat-error>
</mat-form-field>
<mat-form-field fxFlex="48%">
<mat-form-field class="flex-48">
<mat-label>{{ 'labels.inputs.Amount' | translate }}</mat-label>
<input matInput required formControlName="txnAmount" />
<mat-error *ngIf="settleCashForm.controls.txnAmount.hasError('required')">
@@ -63,7 +63,7 @@
</mat-error>
</mat-form-field>
<mat-form-field fxFlex="48%">
<mat-form-field class="flex-48">
<mat-label>{{ 'labels.inputs.Notes/Comments' | translate }}</mat-label>
<input matInput required formControlName="txnNote" />
<mat-error *ngIf="settleCashForm.controls.txnNote.hasError('required')">
@@ -74,7 +74,7 @@
</div>
</mat-card-content>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<mat-card-actions class="layout-row align-center gap-5px responsive-column">
<button type="button" mat-raised-button [routerLink]="['../']">
{{ 'labels.buttons.Cancel' | translate }}
</button>
@@ -1,4 +1,4 @@
<div fxLayout="row" fxLayoutGap="1%" fxLayoutAlign="end" class="container m-b-20">
<div class="layout-row gap-1percent layout-align-end container m-b-20">
<button
mat-raised-button
color="primary"
@@ -22,47 +22,45 @@
<div class="container m-b-20" *ngIf="cashierData">
<mat-card class="mat-elevation-z8">
<mat-card-content>
<div fxLayout="row wrap" class="content">
<div fxFlex="25%" fxFlex.lt-md="50%" class="header">
<div class="layout-row-wrap">
<div class="flex-25 header">
{{ 'labels.inputs.Branch' | translate }}
</div>
<div fxFlex="25%" fxFlex.lt-md="50%">
<div class="flex-25">
{{ cashierData.officeName }}
</div>
<div fxFlex="25%" fxFlex.lt-md="50%" class="header">
<div class="flex-25 header">
{{ 'labels.inputs.Teller' | translate }}
</div>
<div fxFlex="25%" fxFlex.lt-md="50%">
<div class="flex-25">
{{ cashierData.tellerName }}
</div>
<div fxFlex="25%" fxFlex.lt-md="50%" class="header">
<div class="flex-25 header">
{{ 'labels.inputs.Cashier' | translate }}
</div>
<div fxFlex="25%" fxFlex.lt-md="50%">
<div class="flex-25">
{{ cashierData.cashierName }}
</div>
<div fxFlex="25%" fxFlex.lt-md="50%" class="header">
<div class="flex-25 header">
{{ 'labels.inputs.Net Cash' | translate }}
</div>
<div fxFlex="25%" fxFlex.lt-md="50%">
{{ cashierData.netCash | formatNumber }} [{{ currencySelector.value }}]
</div>
<div class="flex-25">{{ cashierData.netCash | formatNumber }} [{{ currencySelector.value }}]</div>
</div>
</mat-card-content>
</mat-card>
</div>
<div class="container">
<mat-card fxLayout="column" fxLayoutGap="2%" class="mat-elevation-z8">
<div fxLayout="row" fxLayoutGap="2%">
<mat-form-field fxFlex>
<mat-card class="layout-column gap-2percent mat-elevation-z8">
<div class="layout-row gap-2percent">
<mat-form-field class="flex-fill">
<mat-label>{{ 'labels.inputs.Filter' | translate }}</mat-label>
<input matInput (keyup)="applyFilter($event.target.value)" />
</mat-form-field>
@@ -1,4 +1,4 @@
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column" class="container m-b-20">
<div class="layout-row align-end gap-2px responsive-column container m-b-20">
<button mat-raised-button color="primary" [routerLink]="['edit']" *mifosxHasPermission="'UPDATE_CASHIER'">
<fa-icon icon="edit" class="m-r-10"></fa-icon>
{{ 'labels.buttons.Edit' | translate }}
@@ -12,58 +12,58 @@
<div class="container">
<mat-card>
<mat-card-content>
<div fxLayout="row wrap" class="content">
<div fxFlex="50%" class="header">
<div class="layout-row-wrap">
<div class="flex-50 header">
{{ 'labels.inputs.Name' | translate }}
</div>
<div fxFlex="50%">
<div class="flex-50">
{{ cashierData.staffName }}
</div>
<div fxFlex="50%" class="header">
<div class="flex-50 header">
{{ 'labels.inputs.Teller' | translate }}
</div>
<div fxFlex="50%">
<div class="flex-50">
{{ cashierData.tellerName }}
</div>
<div fxFlex="50%" class="header" *ngIf="cashierData.description !== ''">
<div class="flex-50 header" *ngIf="cashierData.description !== ''">
{{ 'labels.inputs.Description' | translate }}
</div>
<div fxFlex="50%" *ngIf="cashierData.description !== ''">
<div class="flex-50" *ngIf="cashierData.description !== ''">
{{ cashierData.description }}
</div>
<div fxFlex="50%" class="header">
<div class="flex-50 header">
{{ 'labels.inputs.Start Date' | translate }}
</div>
<div fxFlex="50%">
<div class="flex-50">
{{ cashierData.startDate | dateFormat }}
</div>
<div fxFlex="50%" class="header">
<div class="flex-50 header">
{{ 'labels.inputs.End Date' | translate }}
</div>
<div fxFlex="50%">
<div class="flex-50">
{{ cashierData.endDate | dateFormat }}
</div>
<div fxFlex="50%" class="header">
<div class="flex-50 header">
{{ 'labels.inputs.Full Day/Time' | translate }}
</div>
<div fxFlex="50%">
<div class="flex-50">
{{ cashierData.isFullDay }}
</div>
</div>
</mat-card-content>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<mat-card-actions class="layout-row align-center gap-5px responsive-column">
<button type="button" color="primary" mat-raised-button [routerLink]="['..']">
{{ 'labels.buttons.Back' | translate }}
</button>
@@ -1,6 +1,6 @@
/** Angular Imports */
import { Injectable } from '@angular/core';
import { Resolve, ActivatedRouteSnapshot } from '@angular/router';
import { ActivatedRouteSnapshot } from '@angular/router';
/** rxjs Imports */
import { Observable } from 'rxjs';
@@ -12,7 +12,7 @@ import { OrganizationService } from 'app/organization/organization.service';
* Cashier data resolver.
*/
@Injectable()
export class CashierResolver implements Resolve<Object> {
export class CashierResolver {
/**
* @param {OrganizationService} organizationService Organization service.
*/
@@ -1,6 +1,6 @@
/** Angular Imports */
import { Injectable } from '@angular/core';
import { Resolve, ActivatedRouteSnapshot } from '@angular/router';
import { ActivatedRouteSnapshot } from '@angular/router';
/** rxjs Imports */
import { Observable } from 'rxjs';
@@ -12,7 +12,7 @@ import { OrganizationService } from 'app/organization/organization.service';
* Cashiers data resolver.
*/
@Injectable()
export class CashiersResolver implements Resolve<Object> {
export class CashiersResolver {
/**
* @param {OrganizationService} organizationService Organization service.
*/
@@ -1,6 +1,6 @@
/** Angular Imports */
import { Injectable } from '@angular/core';
import { Resolve, ActivatedRouteSnapshot } from '@angular/router';
import { ActivatedRouteSnapshot } from '@angular/router';
/** rxjs Imports */
import { Observable } from 'rxjs';
@@ -12,7 +12,7 @@ import { OrganizationService } from 'app/organization/organization.service';
* Cashier Template resolver.
*/
@Injectable()
export class EditCashierResolver implements Resolve<Object> {
export class EditCashierResolver {
/**
* @param {OrganizationService} organizationService Organization service.
*/
@@ -1,6 +1,6 @@
/** Angular Imports */
import { Injectable } from '@angular/core';
import { Resolve, ActivatedRouteSnapshot } from '@angular/router';
import { ActivatedRouteSnapshot } from '@angular/router';
/** rxjs Imports */
import { Observable } from 'rxjs';
@@ -12,7 +12,7 @@ import { OrganizationService } from 'app/organization/organization.service';
* Cashier transaction data resolver.
*/
@Injectable()
export class CashierTransactionTemplateResolver implements Resolve<Object> {
export class CashierTransactionTemplateResolver {
/**
* @param {OrganizationService} organizationService Organization service.
*/
@@ -1,6 +1,6 @@
/** Angular Imports */
import { Injectable } from '@angular/core';
import { Resolve, ActivatedRouteSnapshot } from '@angular/router';
import { ActivatedRouteSnapshot } from '@angular/router';
/** rxjs Imports */
import { Observable } from 'rxjs';
@@ -12,7 +12,7 @@ import { OrganizationService } from 'app/organization/organization.service';
* Teller data resolver.
*/
@Injectable()
export class TellerResolver implements Resolve<Object> {
export class TellerResolver {
/**
* @param {OrganizationService} organizationService Organization service.
*/
@@ -1,6 +1,5 @@
/** Angular Imports */
import { Injectable } from '@angular/core';
import { Resolve } from '@angular/router';
/** rxjs Imports */
import { Observable } from 'rxjs';
@@ -12,7 +11,7 @@ import { OrganizationService } from '../../organization.service';
* Tellers data resolver.
*/
@Injectable()
export class TellersResolver implements Resolve<Object> {
export class TellersResolver {
/**
* @param {OrganizationService} organizationService Organization service.
*/
@@ -2,7 +2,7 @@
<mat-card>
<form [formGroup]="tellerForm" (ngSubmit)="submit()">
<mat-card-content>
<div fxLayout="column">
<div class="layout-column">
<mat-form-field>
<mat-label>{{ 'labels.inputs.Teller Name' | translate }}</mat-label>
<input matInput required formControlName="name" />
@@ -80,7 +80,7 @@
</div>
</mat-card-content>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<mat-card-actions class="layout-row align-center gap-5px responsive-column">
<button type="button" mat-raised-button [routerLink]="['../']">
{{ 'labels.buttons.Cancel' | translate }}
</button>
@@ -2,7 +2,7 @@
<mat-card>
<form [formGroup]="tellerForm" (ngSubmit)="submit()">
<mat-card-content>
<div fxLayout="column">
<div class="layout-column">
<mat-form-field>
<mat-label>{{ 'labels.inputs.Teller Name' | translate }}</mat-label>
<input matInput required formControlName="name" />
@@ -76,7 +76,7 @@
</div>
</mat-card-content>
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
<mat-card-actions class="layout-row align-center gap-5px responsive-column">
<button type="button" mat-raised-button [routerLink]="['../']">
{{ 'labels.buttons.Cancel' | translate }}
</button>
@@ -1,4 +1,4 @@
<div class="container m-b-20" fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px">
<div class="container m-b-20 layout-row align-end gap-20px">
<button mat-raised-button color="primary" [routerLink]="['create']" *mifosxHasPermission="'CREATE_TELLER'">
<fa-icon icon="plus" class="m-r-10"></fa-icon>
{{ 'labels.buttons.Create Teller' | translate }}
@@ -6,8 +6,8 @@
</div>
<div class="container">
<div fxLayout="row" fxLayoutGap="20px">
<mat-form-field fxFlex>
<div class="layout-row gap-20px">
<mat-form-field class="flex-fill">
<mat-label>{{ 'labels.inputs.Filter' | translate }}</mat-label>
<input matInput (keyup)="applyFilter($event.target.value)" />
</mat-form-field>
@@ -1,4 +1,4 @@
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column" class="container m-b-20">
<div class="layout-row align-end gap-2px responsive-column container m-b-20">
<button mat-raised-button color="primary" [routerLink]="['edit']" *mifosxHasPermission="'UPDATE_TELLER'">
<fa-icon icon="edit" class="m-r-10"></fa-icon>
{{ 'labels.buttons.Edit' | translate }}
@@ -12,52 +12,52 @@
<div class="container">
<mat-card>
<mat-card-content>
<div fxLayout="row wrap" class="content">
<div fxFlex="50%" class="mat-body-strong">
<div class="layout-row-wrap">
<div class="flex-50 mat-body-strong">
{{ 'labels.inputs.Teller Name' | translate }}
</div>
<div fxFlex="50%">
<div class="flex-50">
{{ tellerData.name }}
</div>
<div fxFlex="50%" class="mat-body-strong">
<div class="flex-50 mat-body-strong">
{{ 'labels.inputs.Office' | translate }}
</div>
<div fxFlex="50%">
<div class="flex-50">
{{ tellerData.officeName }}
</div>
<div fxFlex="50%" class="mat-body-strong" *ngIf="tellerData.description">
<div class="flex-50 mat-body-strong" *ngIf="tellerData.description">
{{ 'labels.inputs.Description' | translate }}
</div>
<div fxFlex="50%" *ngIf="tellerData.description">
<div class="flex-50" *ngIf="tellerData.description">
{{ tellerData.description }}
</div>
<div fxFlex="50%" class="mat-body-strong">
<div class="flex-50 mat-body-strong">
{{ 'labels.inputs.Start Date' | translate }}
</div>
<div fxFlex="50%">
<div class="flex-50">
{{ tellerData.startDate | dateFormat }}
</div>
<div fxFlex="50%" class="mat-body-strong" *ngIf="tellerData.endDate">
<div class="flex-50 mat-body-strong" *ngIf="tellerData.endDate">
{{ 'labels.inputs.End Date' | translate }}
</div>
<div fxFlex="50%" *ngIf="tellerData.endDate">
<div class="flex-50" *ngIf="tellerData.endDate">
{{ tellerData.endDate | dateFormat }}
</div>
<div fxFlex="50%" class="mat-body-strong">
<div class="flex-50 mat-body-strong">
{{ 'labels.inputs.Status' | translate }}
</div>
<div fxFlex="50%">
<div class="flex-50">
{{ tellerData.status | titlecase }}
</div>
</div>

Some files were not shown because too many files have changed in this diff Show More