build: Use prettier for html
Stop ignoring html files in prettier and fix existing issues.
This commit is contained in:
+10
-12
@@ -1,35 +1,33 @@
|
||||
<div class="container m-b-20" fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px">
|
||||
<button mat-raised-button color="primary" [routerLink]="['create']" *mifosxHasPermission="'ADD_PREFERENCES'">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Create Preference' | translate}}
|
||||
{{ 'labels.buttons.Create Preference' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<div fxLayout="row">
|
||||
<mat-form-field fxFlex>
|
||||
<mat-label>{{'labels.inputs.Filter' | translate }}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)">
|
||||
<mat-label>{{ 'labels.inputs.Filter' | translate }}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)" />
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
<div class="mat-elevation-z8">
|
||||
|
||||
<table mat-table [dataSource]="dataSource" matSort>
|
||||
|
||||
<ng-container matColumnDef="accountType">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Account Number Preferences' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let accountNumberPreference"> {{ accountNumberPreference.accountType.value | translateKey:'catalogs' }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>
|
||||
{{ 'labels.inputs.Account Number Preferences' | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let accountNumberPreference">
|
||||
{{ accountNumberPreference.accountType.value | translateKey: 'catalogs' }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;" [routerLink]="[row.id]" class="select-row"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns" [routerLink]="[row.id]" class="select-row"></tr>
|
||||
</table>
|
||||
|
||||
<mat-paginator [pageSizeOptions]="[10, 25, 50, 100]" showFirstLastButtons></mat-paginator>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
+21
-18
@@ -1,45 +1,48 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<form [formGroup]="accountNumberPreferenceForm" (ngSubmit)="submit()">
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="column">
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.Account Type' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Account Type' | translate }}</mat-label>
|
||||
<mat-select required formControlName="accountType">
|
||||
<mat-option *ngFor="let accountType of accountNumberPreferencesTemplateData.accountTypeOptions" [value]="accountType.id">
|
||||
{{ accountType.value | translateKey:'catalogs' }}
|
||||
<mat-option
|
||||
*ngFor="let accountType of accountNumberPreferencesTemplateData.accountTypeOptions"
|
||||
[value]="accountType.id"
|
||||
>
|
||||
{{ accountType.value | translateKey: 'catalogs' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="accountNumberPreferenceForm.controls.accountType.hasError('required')">
|
||||
{{'labels.inputs.Account Type' | translate}} {{ "labels.commons.is" | translate}} <strong>{{ "labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Account Type' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.Prefix Field' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Prefix Field' | translate }}</mat-label>
|
||||
<mat-select formControlName="prefixType">
|
||||
<mat-option *ngFor="let prefixType of prefixTypeData" [value]="prefixType.id">
|
||||
{{ prefixType.value}}
|
||||
{{ prefixType.value }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">{{'labels.buttons.Cancel' | translate}}</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!accountNumberPreferenceForm.valid" *mifosxHasPermission="'CREATE_ACCOUNTNUMBERFORMAT'">{{'labels.buttons.Submit' | translate}}</button>
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
[disabled]="!accountNumberPreferenceForm.valid"
|
||||
*mifosxHasPermission="'CREATE_ACCOUNTNUMBERFORMAT'"
|
||||
>
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</mat-card-actions>
|
||||
|
||||
</form>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
+20
-18
@@ -1,46 +1,48 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<form [formGroup]="accountNumberPreferenceForm" (ngSubmit)="submit()">
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="column">
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.Account Type' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Account Type' | translate }}</mat-label>
|
||||
<mat-select required formControlName="accountType">
|
||||
<mat-option *ngFor="let accountType of accountNumberPreferencesTemplateData.accountTypeOptions" [value]="accountType.id">
|
||||
{{ accountType.value | translateKey:'catalogs' }}
|
||||
<mat-option
|
||||
*ngFor="let accountType of accountNumberPreferencesTemplateData.accountTypeOptions"
|
||||
[value]="accountType.id"
|
||||
>
|
||||
{{ accountType.value | translateKey: 'catalogs' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="accountNumberPreferenceForm.controls.accountType.hasError('required')">
|
||||
{{'labels.inputs.Account Type' | translate}} {{ "labels.commons.is" | translate}} <strong>{{ "labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Account Type' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.Prefix Field' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Prefix Field' | translate }}</mat-label>
|
||||
<mat-select formControlName="prefixType">
|
||||
<mat-option *ngFor="let prefixType of prefixTypeData" [value]="prefixType.id">
|
||||
{{ prefixType.value }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">{{'labels.buttons.Cancel' | translate}}</button>
|
||||
<button mat-raised-button color="primary"
|
||||
[disabled]="!accountNumberPreferenceForm.valid || accountNumberPreferenceForm.pristine" *mifosxHasPermission="'UPDATE_ACCOUNTNUMBERFORMAT'">{{'labels.buttons.Submit' | translate}}</button>
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
[disabled]="!accountNumberPreferenceForm.valid || accountNumberPreferenceForm.pristine"
|
||||
*mifosxHasPermission="'UPDATE_ACCOUNTNUMBERFORMAT'"
|
||||
>
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</mat-card-actions>
|
||||
|
||||
</form>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
+5
-15
@@ -1,45 +1,35 @@
|
||||
<div class="container m-b-20" fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px">
|
||||
|
||||
<button mat-raised-button color="primary" [routerLink]="['edit']" *mifosxHasPermission="'UPDATE_ACCOUNTNUMBERFORMAT'">
|
||||
<fa-icon icon="edit" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Edit' | translate}}
|
||||
{{ 'labels.buttons.Edit' | translate }}
|
||||
</button>
|
||||
|
||||
<button mat-raised-button color="warn" (click)="delete()" *mifosxHasPermission="'DELETE_ACCOUNTNUMBERFORMAT'">
|
||||
<fa-icon icon="trash" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Delete' | translate}}
|
||||
{{ 'labels.buttons.Delete' | translate }}
|
||||
</button>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="row wrap" class="content">
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{'labels.inputs.Account Type' | translate}}
|
||||
{{ 'labels.inputs.Account Type' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
{{ accountNumberPreferenceData.accountType.value | translateKey:'catalogs' }}
|
||||
{{ accountNumberPreferenceData.accountType.value | translateKey: 'catalogs' }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong" *ngIf="accountNumberPreferenceData.prefixType">
|
||||
{{'labels.inputs.Prefix Type' | translate}}
|
||||
{{ 'labels.inputs.Prefix Type' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" *ngIf="accountNumberPreferenceData.prefixType">
|
||||
{{ accountNumberPreferenceData.prefixType.value }}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,80 +1,92 @@
|
||||
<div class="container m-b-20" fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px">
|
||||
<button mat-raised-button color="primary" (click)="downloadCSV()">
|
||||
<fa-icon icon="file" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Download CSV' | translate}}
|
||||
{{ 'labels.buttons.Download CSV' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="container" fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Resource ID' | translate}}</mat-label>
|
||||
<input matInput [formControl]="resourceId">
|
||||
<mat-label>{{ 'labels.inputs.Resource ID' | translate }}</mat-label>
|
||||
<input matInput [formControl]="resourceId" />
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Status' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Status' | translate }}</mat-label>
|
||||
<mat-select [formControl]="processingResult" (selectionChange)="applyFilter($event.value, 'processingResult')">
|
||||
<mat-option *ngFor="let processingResult of auditTrailSearchTemplateData.processingResults" [value]="processingResult.id">
|
||||
<mat-option
|
||||
*ngFor="let processingResult of auditTrailSearchTemplateData.processingResults"
|
||||
[value]="processingResult.id"
|
||||
>
|
||||
{{ processingResult.processingResult }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.User' | translate}}</mat-label>
|
||||
<input matInput [formControl]="user" [matAutocomplete]="userNameAutocomplete">
|
||||
<mat-label>{{ 'labels.inputs.User' | translate }}</mat-label>
|
||||
<input matInput [formControl]="user" [matAutocomplete]="userNameAutocomplete" />
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Action' | translate}}</mat-label>
|
||||
<input matInput [formControl]="actionName" [matAutocomplete]="actionNameAutocomplete">
|
||||
<mat-label>{{ 'labels.inputs.Action' | translate }}</mat-label>
|
||||
<input matInput [formControl]="actionName" [matAutocomplete]="actionNameAutocomplete" />
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Entity' | translate}}</mat-label>
|
||||
<input matInput [formControl]="entityName" [matAutocomplete]="entityNameAutocomplete">
|
||||
<mat-label>{{ 'labels.inputs.Entity' | translate }}</mat-label>
|
||||
<input matInput [formControl]="entityName" [matAutocomplete]="entityNameAutocomplete" />
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Checker' | translate}}</mat-label>
|
||||
<input matInput [formControl]="checker" [matAutocomplete]="checkerAutocomplete">
|
||||
<mat-label>{{ 'labels.inputs.Checker' | translate }}</mat-label>
|
||||
<input matInput [formControl]="checker" [matAutocomplete]="checkerAutocomplete" />
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%" (click)="fromDatePicker.open()">
|
||||
<mat-label>{{'labels.inputs.Maker From Date' | translate}}</mat-label>
|
||||
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="fromDatePicker" [formControl]="fromDate">
|
||||
<mat-label>{{ 'labels.inputs.Maker From Date' | translate }}</mat-label>
|
||||
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="fromDatePicker" [formControl]="fromDate" />
|
||||
<mat-datepicker-toggle matSuffix [for]="fromDatePicker"></mat-datepicker-toggle>
|
||||
<mat-datepicker #fromDatePicker></mat-datepicker>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%" (click)="toDatePicker.open()">
|
||||
<mat-label>{{'labels.inputs.Maker To Date' | translate}}</mat-label>
|
||||
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="toDatePicker" [formControl]="toDate">
|
||||
<mat-label>{{ 'labels.inputs.Maker To Date' | translate }}</mat-label>
|
||||
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="toDatePicker" [formControl]="toDate" />
|
||||
<mat-datepicker-toggle matSuffix [for]="toDatePicker"></mat-datepicker-toggle>
|
||||
<mat-datepicker #toDatePicker></mat-datepicker>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%" (click)="checkedFromDatePicker.open()">
|
||||
<mat-label>{{'labels.inputs.Checker From Date' | translate}}</mat-label>
|
||||
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="checkedFromDatePicker"
|
||||
[formControl]="checkedFromDate">
|
||||
<mat-label>{{ 'labels.inputs.Checker From Date' | translate }}</mat-label>
|
||||
<input
|
||||
matInput
|
||||
[min]="minDate"
|
||||
[max]="maxDate"
|
||||
[matDatepicker]="checkedFromDatePicker"
|
||||
[formControl]="checkedFromDate"
|
||||
/>
|
||||
<mat-datepicker-toggle matSuffix [for]="checkedFromDatePicker"></mat-datepicker-toggle>
|
||||
<mat-datepicker #checkedFromDatePicker></mat-datepicker>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%" (click)="checkedToDatePicker.open()">
|
||||
<mat-label>{{'labels.inputs.Checked To Date' | translate}}</mat-label>
|
||||
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="checkedToDatePicker" [formControl]="checkedToDate">
|
||||
<mat-label>{{ 'labels.inputs.Checked To Date' | translate }}</mat-label>
|
||||
<input
|
||||
matInput
|
||||
[min]="minDate"
|
||||
[max]="maxDate"
|
||||
[matDatepicker]="checkedToDatePicker"
|
||||
[formControl]="checkedToDate"
|
||||
/>
|
||||
<mat-datepicker-toggle matSuffix [for]="checkedToDatePicker"></mat-datepicker-toggle>
|
||||
<mat-datepicker #checkedToDatePicker></mat-datepicker>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Autocomplete data -->
|
||||
<mat-autocomplete autoActiveFirstOption #userNameAutocomplete="matAutocomplete" [displayWith]="displayUserName">
|
||||
<mat-option *ngFor="let user of filteredUserData | async " [value]="{ id: user.id, name: user.username }">
|
||||
<mat-option *ngFor="let user of filteredUserData | async" [value]="{ id: user.id, name: user.username }">
|
||||
{{ user.username }}
|
||||
</mat-option>
|
||||
</mat-autocomplete>
|
||||
@@ -92,71 +104,71 @@
|
||||
</mat-autocomplete>
|
||||
|
||||
<mat-autocomplete autoActiveFirstOption #checkerAutocomplete="matAutocomplete" [displayWith]="displayUserName">
|
||||
<mat-option *ngFor="let user of filteredCheckerData | async " [value]="{ id: user.id, name: user.username }">
|
||||
<mat-option *ngFor="let user of filteredCheckerData | async" [value]="{ id: user.id, name: user.username }">
|
||||
{{ user.username }}
|
||||
</mat-option>
|
||||
</mat-autocomplete>
|
||||
|
||||
<div class="container mat-elevation-z8 table-container">
|
||||
|
||||
<table mat-table [dataSource]="dataSource" matSort>
|
||||
|
||||
<ng-container matColumnDef="id">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Trail ID' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let auditTrail"> {{ auditTrail.id }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Trail ID' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let auditTrail">{{ auditTrail.id }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="resourceId">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Resource ID' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let auditTrail"> {{ auditTrail.resourceId }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Resource ID' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let auditTrail">{{ auditTrail.resourceId }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="processingResult">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Status' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let auditTrail"> {{ auditTrail.processingResult }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Status' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let auditTrail">{{ auditTrail.processingResult }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="maker">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header > {{'labels.inputs.Made By' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let auditTrail"> {{ auditTrail.maker }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Made By' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let auditTrail">{{ auditTrail.maker }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actionName">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Action' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let auditTrail"> {{ auditTrail.actionName }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Action' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let auditTrail">{{ auditTrail.actionName }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="entityName">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Entity' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let auditTrail"> {{ auditTrail.entityName }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Entity' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let auditTrail">{{ auditTrail.entityName }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="officeName">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Office' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let auditTrail"> {{ auditTrail.officeName }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Office' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let auditTrail">{{ auditTrail.officeName }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="madeOnDate">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Made Date' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let auditTrail"> {{ auditTrail.madeOnDate | dateFormat }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Made Date' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let auditTrail">{{ auditTrail.madeOnDate | dateFormat }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="checker">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header > {{'labels.inputs.Checker' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let auditTrail"> {{ auditTrail.checker }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Checker' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let auditTrail">{{ auditTrail.checker }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="checkedOnDate">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Checked Date' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let auditTrail"> {{ auditTrail.checkedOnDate | dateFormat }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Checked Date' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let auditTrail">{{ auditTrail.checkedOnDate | dateFormat }}</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;" [routerLink]="[row.id]" class="select-row">
|
||||
</tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns" [routerLink]="[row.id]" class="select-row"></tr>
|
||||
</table>
|
||||
|
||||
<mat-paginator [length]="dataSource?.records$ | async" [pageSize]="10" [pageSizeOptions]="[10, 25, 50, 100]"
|
||||
showFirstLastButtons></mat-paginator>
|
||||
|
||||
<mat-paginator
|
||||
[length]="dataSource?.records$ | async"
|
||||
[pageSize]="10"
|
||||
[pageSizeOptions]="[10, 25, 50, 100]"
|
||||
showFirstLastButtons
|
||||
></mat-paginator>
|
||||
</div>
|
||||
|
||||
@@ -1,15 +1,10 @@
|
||||
<div class="container" fxLayout="row" fxLayoutAlign="space-between" fxLayoutGap.lt-md="4%" fxLayout.lt-md="column">
|
||||
|
||||
<div class="container" fxLayout="row" fxLayoutAlign="space-between" fxLayoutGap.lt-md="4%" fxLayout.lt-md="column">
|
||||
<div fxFlex="46%">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="row wrap" class="content">
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{'labels.inputs.ID' | translate}}
|
||||
{{ 'labels.inputs.ID' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
@@ -17,7 +12,7 @@
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{'labels.inputs.Status' | translate}}
|
||||
{{ 'labels.inputs.Status' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
@@ -25,7 +20,7 @@
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{'labels.inputs.User' | translate}}
|
||||
{{ 'labels.inputs.User' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
@@ -33,7 +28,7 @@
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{'labels.inputs.Action' | translate}}
|
||||
{{ 'labels.inputs.Action' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
@@ -41,7 +36,7 @@
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{'labels.inputs.Entity' | translate}}
|
||||
{{ 'labels.inputs.Entity' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
@@ -49,7 +44,7 @@
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{'labels.inputs.Resource ID' | translate}}
|
||||
{{ 'labels.inputs.Resource ID' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
@@ -57,15 +52,15 @@
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{'labels.inputs.Date' | translate}}
|
||||
{{ 'labels.inputs.Date' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
{{ auditTrailData.madeOnDate | dateFormat }}
|
||||
{{ auditTrailData.madeOnDate | dateFormat }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong" *ngIf="auditTrailData.officeName">
|
||||
{{'labels.inputs.Office' | translate}}
|
||||
{{ 'labels.inputs.Office' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" *ngIf="auditTrailData.officeName">
|
||||
@@ -73,7 +68,7 @@
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong" *ngIf="auditTrailData.savingsAccountNo">
|
||||
{{'labels.inputs.Savings Account No' | translate}}
|
||||
{{ 'labels.inputs.Savings Account No' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" *ngIf="auditTrailData.savingsAccountNo">
|
||||
@@ -81,40 +76,33 @@
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong" *ngIf="auditTrailData.groupLevelName">
|
||||
{{'labels.inputs.Group Level' | translate}}
|
||||
{{ 'labels.inputs.Group Level' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" *ngIf="auditTrailData.groupLevelName">
|
||||
{{ auditTrailData.groupLevelName }}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxFlex="46%">
|
||||
|
||||
<table mat-table [dataSource]="dataSource" matSort>
|
||||
|
||||
<ng-container matColumnDef="command">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Command' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let auditTrailCommand"> {{ auditTrailCommand.command }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Command' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let auditTrailCommand">{{ auditTrailCommand.command }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="commandValue">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Command Value' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let auditTrailCommand" class="column-value-wrapper"> {{ auditTrailCommand.commandValue }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Command Value' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let auditTrailCommand" class="column-value-wrapper">
|
||||
{{ auditTrailCommand.commandValue }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -2,68 +2,114 @@
|
||||
<div #buttonCreateCode>
|
||||
<button mat-raised-button color="primary" [routerLink]="['create']" *mifosxHasPermission="'CREATE_CODE'">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Create Code' | translate}}
|
||||
{{ 'labels.buttons.Create Code' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<div #filter fxLayout="row">
|
||||
<mat-form-field fxFlex>
|
||||
<mat-label>{{'labels.inputs.Filter' | translate }}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)">
|
||||
<mat-label>{{ 'labels.inputs.Filter' | translate }}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)" />
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
<div #tableCodes class="mat-elevation-z8">
|
||||
<table mat-table [dataSource]="dataSource" matSort>
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Code Name' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let code"> {{ code.name }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Code Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let code">{{ code.name }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="systemDefined">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.System Defined' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.System Defined' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let code">
|
||||
<fa-icon *ngIf="code.systemDefined" icon="check-circle" size="lg" class="system-defined" matTooltip="{{ 'tooltips.Yes' | translate}}" matTooltipPosition="right"></fa-icon>
|
||||
<fa-icon *ngIf="!code.systemDefined" icon="times-circle" size="lg" class="not-system-defined" matTooltip="{{ 'tooltips.No' | translate}}" matTooltipPosition="right"></fa-icon>
|
||||
<fa-icon
|
||||
*ngIf="code.systemDefined"
|
||||
icon="check-circle"
|
||||
size="lg"
|
||||
class="system-defined"
|
||||
matTooltip="{{ 'tooltips.Yes' | translate }}"
|
||||
matTooltipPosition="right"
|
||||
></fa-icon>
|
||||
<fa-icon
|
||||
*ngIf="!code.systemDefined"
|
||||
icon="times-circle"
|
||||
size="lg"
|
||||
class="not-system-defined"
|
||||
matTooltip="{{ 'tooltips.No' | translate }}"
|
||||
matTooltipPosition="right"
|
||||
></fa-icon>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;" [routerLink]="[row.id]" class="select-row"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns" [routerLink]="[row.id]" class="select-row"></tr>
|
||||
</table>
|
||||
|
||||
<mat-paginator [pageSizeOptions]="[10, 25, 50, 100]" showFirstLastButtons></mat-paginator>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<ng-template #templateButtonCreateCode let-popover="popover">
|
||||
<h2>{{'labels.heading.Manage Codes' | translate}}</h2>
|
||||
<p class="mw300">{{'labels.text.To create additional codes.' | translate}}</p>
|
||||
<h2>{{ 'labels.heading.Manage Codes' | translate }}</h2>
|
||||
<p class="mw300">{{ 'labels.text.To create additional codes.' | translate }}</p>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<button mat-raised-button color="warn" (click)="popover.close();configurationWizardService.closeConfigWizard()">{{'labels.buttons.Close' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();previousStep();">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();showPopover(templateFilter, filter, 'bottom', true);">{{'labels.buttons.Next' | translate}}</button>
|
||||
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
|
||||
{{ 'labels.buttons.Close' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); previousStep()">
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="popover.close(); showPopover(templateFilter, filter, 'bottom', true)"
|
||||
>
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #templateFilter let-popover="popover">
|
||||
<h4>{{'labels.heading.Search bar to filter codes' | translate}}</h4>
|
||||
<h4>{{ 'labels.heading.Search bar to filter codes' | translate }}</h4>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<button mat-raised-button color="warn" (click)="popover.close();configurationWizardService.closeConfigWizard()">{{'labels.buttons.Close' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();showPopover(templateButtonCreateCode, buttonCreateCode, 'bottom', true);">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();showPopover(templateTableCodes, tableCodes, 'top', true);">{{'labels.buttons.Next' | translate}}</button>
|
||||
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
|
||||
{{ 'labels.buttons.Close' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="popover.close(); showPopover(templateButtonCreateCode, buttonCreateCode, 'bottom', true)"
|
||||
>
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="popover.close(); showPopover(templateTableCodes, tableCodes, 'top', true)"
|
||||
>
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #templateTableCodes let-popover="popover">
|
||||
<h4>{{'labels.heading.List of all codes in the Mifos system' | translate}}</h4>
|
||||
<h4>{{ 'labels.heading.List of all codes in the Mifos system' | translate }}</h4>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<button mat-raised-button color="warn" (click)="popover.close();configurationWizardService.closeConfigWizard()">{{'labels.buttons.Close' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();showPopover(templateFilter, filter, 'bottom', true);">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();nextStep()">{{'labels.buttons.Next' | translate}}</button>
|
||||
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
|
||||
{{ 'labels.buttons.Close' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="popover.close(); showPopover(templateFilter, filter, 'bottom', true)"
|
||||
>
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); nextStep()">
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
@@ -1,43 +1,52 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<form [formGroup]="codeForm" (ngSubmit)="submit()">
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div #codeFormRef fxLayout="column">
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.Code Name' | translate}}</mat-label>
|
||||
<input matInput required formControlName="name">
|
||||
<mat-error *ngIf="codeForm.controls.name.hasError('required')">
|
||||
{{'labels.inputs.Code Name' | translate}} {{ "labels.commons.is" | translate}} <strong>{{ "labels.commons.required" | translate}}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
<div #codeFormRef fxLayout="column">
|
||||
<mat-form-field>
|
||||
<mat-label>{{ 'labels.inputs.Code Name' | translate }}</mat-label>
|
||||
<input matInput required formControlName="name" />
|
||||
<mat-error *ngIf="codeForm.controls.name.hasError('required')">
|
||||
{{ 'labels.inputs.Code Name' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
</div>
|
||||
</mat-card-content>
|
||||
|
||||
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">{{'labels.buttons.Cancel' | translate}}</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!codeForm.valid" *mifosxHasPermission="'CREATE_CODE'">{{'labels.buttons.Submit' | translate}}</button>
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!codeForm.valid" *mifosxHasPermission="'CREATE_CODE'">
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</mat-card-actions>
|
||||
|
||||
</form>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
<ng-template #templateCodeFormRef let-data let-popover="popover">
|
||||
<h2>{{'labels.heading.Create Code' | translate}}</h2>
|
||||
<p class="mw400">{{'labels.text.To create code,create' | translate}}<br> {{'labels.text.For more details click' | translate}}: <a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/67895350/Manage+Codes" target="_blank">{{'labels.inputs.Manage Codes' | translate}}</a></p>
|
||||
<h2>{{ 'labels.heading.Create Code' | translate }}</h2>
|
||||
<p class="mw400">
|
||||
{{ 'labels.text.To create code,create' | translate }}<br />
|
||||
{{ 'labels.text.For more details click' | translate }}:
|
||||
<a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/67895350/Manage+Codes" target="_blank">{{
|
||||
'labels.inputs.Manage Codes' | translate
|
||||
}}</a>
|
||||
</p>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<button mat-raised-button color="warn" (click)="popover.close();configurationWizardService.closeConfigWizard()">{{'labels.buttons.Close' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close()">{{'labels.buttons.Create Code' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();previousStep()">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();nextStep()">{{'labels.buttons.Next' | translate}}</button>
|
||||
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
|
||||
{{ 'labels.buttons.Close' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close()">
|
||||
{{ 'labels.buttons.Create Code' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); previousStep()">
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); nextStep()">
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
@@ -1,32 +1,32 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<form [formGroup]="codeForm" (ngSubmit)="submit()">
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="column">
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.Code Name' | translate}}</mat-label>
|
||||
<input matInput required formControlName="name">
|
||||
<mat-error *ngIf="codeForm.controls.name.hasError('required')">
|
||||
{{'labels.inputs.Code Name' | translate}} {{ "labels.commons.is" | translate}} <strong>{{ "labels.commons.required" | translate}}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="column">
|
||||
<mat-form-field>
|
||||
<mat-label>{{ 'labels.inputs.Code Name' | translate }}</mat-label>
|
||||
<input matInput required formControlName="name" />
|
||||
<mat-error *ngIf="codeForm.controls.name.hasError('required')">
|
||||
{{ 'labels.inputs.Code Name' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
</div>
|
||||
</mat-card-content>
|
||||
|
||||
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">{{'labels.buttons.Cancel' | translate}}</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!codeForm.valid || codeForm.pristine" *mifosxHasPermission="'UPDATE_CODE'">{{'labels.buttons.Submit' | translate}}</button>
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
[disabled]="!codeForm.valid || codeForm.pristine"
|
||||
*mifosxHasPermission="'UPDATE_CODE'"
|
||||
>
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</mat-card-actions>
|
||||
|
||||
</form>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,94 +1,113 @@
|
||||
<div class="container m-b-20" fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px" fxLayout.xs="column">
|
||||
|
||||
<button mat-raised-button color="primary" (click)="addCodeValueRow()" *mifosxHasPermission="'CREATE_CODEVALUE'">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Add Code Value' | translate}}
|
||||
{{ 'labels.buttons.Add Code Value' | translate }}
|
||||
</button>
|
||||
|
||||
<span *ngIf="!codeData.systemDefined">
|
||||
<button mat-raised-button color="primary" [routerLink]="['edit']" *mifosxHasPermission="'UPDATE_CODE'">
|
||||
<fa-icon icon="edit" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Edit Code' | translate}}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" [routerLink]="['edit']" *mifosxHasPermission="'UPDATE_CODE'">
|
||||
<fa-icon icon="edit" class="m-r-10"></fa-icon>
|
||||
{{ 'labels.buttons.Edit Code' | translate }}
|
||||
</button>
|
||||
</span>
|
||||
|
||||
<span *ngIf="!codeData.systemDefined">
|
||||
<button mat-raised-button color="warn" (click)="delete()" *mifosxHasPermission="'DELETE_CODEVALUE'">
|
||||
<fa-icon icon="trash" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Delete Code' | translate}}
|
||||
{{ 'labels.buttons.Delete Code' | translate }}
|
||||
</button>
|
||||
</span>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<mat-card-title>{{ codeData.name }}</mat-card-title>
|
||||
|
||||
<form [formGroup]="codeValuesForm">
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div formArrayName="codeValues" *ngFor="let codeValue of codeValues.controls; let i = index;">
|
||||
|
||||
<div formArrayName="codeValues" *ngFor="let codeValue of codeValues.controls; let i = index">
|
||||
<div fxFlexFill fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column" [formGroupName]="i">
|
||||
|
||||
<mat-form-field fxFlex="20%">
|
||||
<mat-label>{{'labels.inputs.name' | translate}}</mat-label>
|
||||
<input required matInput formControlName="name">
|
||||
<mat-label>{{ 'labels.inputs.name' | translate }}</mat-label>
|
||||
<input required matInput formControlName="name" />
|
||||
<mat-error *ngIf="codeValues.at(i).controls.name.hasError('required')">
|
||||
{{'labels.inputs.name' | translate}} {{ "labels.commons.is" | translate}} <strong>{{ "labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.name' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="22%">
|
||||
<mat-label>{{'labels.inputs.Description' | translate}}</mat-label>
|
||||
<input matInput formControlName="description">
|
||||
<mat-label>{{ 'labels.inputs.Description' | translate }}</mat-label>
|
||||
<input matInput formControlName="description" />
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="18%">
|
||||
<mat-label>{{'labels.inputs.Position' | translate}}</mat-label>
|
||||
<input required matInput formControlName="position" type="number">
|
||||
<mat-label>{{ 'labels.inputs.Position' | translate }}</mat-label>
|
||||
<input required matInput formControlName="position" type="number" />
|
||||
<mat-error *ngIf="codeValues.at(i).controls.position.hasError('required')">
|
||||
{{'labels.inputs.name' | translate}} {{ "labels.commons.is" | translate}} <strong>{{ "labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.name' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<div class="active-wrapper" fxFlex="8%">
|
||||
<mat-checkbox formControlName="isActive" class="active">{{'labels.inputs.Active' | translate}}</mat-checkbox>
|
||||
<mat-checkbox formControlName="isActive" class="active">{{
|
||||
'labels.inputs.Active' | translate
|
||||
}}</mat-checkbox>
|
||||
</div>
|
||||
|
||||
<div fxLayoutGap="2%" fxFlex="22%" class="options-wrapper">
|
||||
<span *ngIf="codeValueRowStatus[i] === 'edit'">
|
||||
<button mat-stroked-button color="primary" [disabled]="codeValues.at(i).pristine" (click)="updateCodeValue(i)"
|
||||
*mifosxHasPermission="'UPDATE_CODEVALUE'">
|
||||
{{'labels.buttons.Submit' | translate}}
|
||||
<button
|
||||
mat-stroked-button
|
||||
color="primary"
|
||||
[disabled]="codeValues.at(i).pristine"
|
||||
(click)="updateCodeValue(i)"
|
||||
*mifosxHasPermission="'UPDATE_CODEVALUE'"
|
||||
>
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</span>
|
||||
<button mat-button *ngIf="codeValueRowStatus[i] === 'edit'" (click)="disableRow(i)">
|
||||
{{'labels.buttons.Cancel' | translate}}
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button mat-icon-button color="primary" [disabled]="!codeValuesForm.get('codeValues').at(i).valid" *ngIf="codeValueRowStatus[i] === 'new'" matTooltip="{{ 'tooltips.Add' | translate}}" matTooltipPosition="above" (click)="addCodeValue(i)">
|
||||
<button
|
||||
mat-icon-button
|
||||
color="primary"
|
||||
[disabled]="!codeValuesForm.get('codeValues').at(i).valid"
|
||||
*ngIf="codeValueRowStatus[i] === 'new'"
|
||||
matTooltip="{{ 'tooltips.Add' | translate }}"
|
||||
matTooltipPosition="above"
|
||||
(click)="addCodeValue(i)"
|
||||
>
|
||||
<fa-icon icon="plus" size="lg"></fa-icon>
|
||||
</button>
|
||||
<button type="button" color="primary" *ngIf="codeValueRowStatus[i] === 'disabled'" mat-icon-button matTooltip="{{ 'tooltips.Edit' | translate}}" matTooltipPosition="above" (click)="enableRow(i)">
|
||||
<button
|
||||
type="button"
|
||||
color="primary"
|
||||
*ngIf="codeValueRowStatus[i] === 'disabled'"
|
||||
mat-icon-button
|
||||
matTooltip="{{ 'tooltips.Edit' | translate }}"
|
||||
matTooltipPosition="above"
|
||||
(click)="enableRow(i)"
|
||||
>
|
||||
<fa-icon icon="edit" size="lg"></fa-icon>
|
||||
</button>
|
||||
<button type="button" color="warn" mat-icon-button matTooltip="{{ 'tooltips.Delete' | translate}}" *mifosxHasPermission="'DELETE_CODEVALUE'" matTooltipPosition="above" (click)="codeValueRowStatus[i] === 'new' ? removeNewCodeValue(i) : deleteCodeValue(i)">
|
||||
<button
|
||||
type="button"
|
||||
color="warn"
|
||||
mat-icon-button
|
||||
matTooltip="{{ 'tooltips.Delete' | translate }}"
|
||||
*mifosxHasPermission="'DELETE_CODEVALUE'"
|
||||
matTooltipPosition="above"
|
||||
(click)="codeValueRowStatus[i] === 'new' ? removeNewCodeValue(i) : deleteCodeValue(i)"
|
||||
>
|
||||
<fa-icon icon="trash" size="lg"></fa-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
</form>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,53 +1,70 @@
|
||||
<div class="container space">
|
||||
|
||||
<div class="mat-elevation-z8">
|
||||
<div *ngIf="!isBusinessDateEnabled">
|
||||
<p>{{'labels.text.Business Date functionality is not enabled' | translate}}: <code>{{configurationName}}</code></p>
|
||||
<p>
|
||||
{{ 'labels.text.Business Date functionality is not enabled' | translate }}: <code>{{ configurationName }}</code>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div *ngIf="isBusinessDateEnabled">
|
||||
|
||||
<mat-card>
|
||||
<form [formGroup]="businessDateForm">
|
||||
<mat-card-content>
|
||||
<div fxFlexFill fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column" class="space">
|
||||
<div fxFlex="50%">
|
||||
<span fxFlex="40%" class="date-type">{{'labels.inputs.User date format' | translate}}: </span>
|
||||
<span fxFlex="60%" class="date-value">{{userDateFormat}}</span>
|
||||
<span fxFlex="40%" class="date-type">{{ 'labels.inputs.User date format' | translate }}: </span>
|
||||
<span fxFlex="60%" class="date-value">{{ userDateFormat }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Business Date -->
|
||||
<div fxFlexFill fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<div fxFlex="50%" *ngIf="!isEditInProgress">
|
||||
<span fxFlex="40%" class="date-type">{{'labels.inputs.Business Date' | translate}}: </span>
|
||||
<span fxFlex="60%" class="date-value">{{businessDate | dateFormat}}</span>
|
||||
<span fxFlex="40%" class="date-type">{{ 'labels.inputs.Business Date' | translate }}: </span>
|
||||
<span fxFlex="60%" class="date-value">{{ businessDate | dateFormat }}</span>
|
||||
</div>
|
||||
|
||||
<mat-form-field (click)="businessDatePicker.open()" *ngIf="isEditInProgress && (dateIndex === 0)">
|
||||
<mat-label>{{'labels.inputs.Business Date' | translate}}</mat-label>
|
||||
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="businessDatePicker"
|
||||
formControlName="businessDate">
|
||||
<mat-datepicker-toggle matSuffix [for]="businessDatePicker">
|
||||
</mat-datepicker-toggle>
|
||||
<mat-form-field (click)="businessDatePicker.open()" *ngIf="isEditInProgress && dateIndex === 0">
|
||||
<mat-label>{{ 'labels.inputs.Business Date' | translate }}</mat-label>
|
||||
<input
|
||||
matInput
|
||||
[min]="minDate"
|
||||
[max]="maxDate"
|
||||
[matDatepicker]="businessDatePicker"
|
||||
formControlName="businessDate"
|
||||
/>
|
||||
<mat-datepicker-toggle matSuffix [for]="businessDatePicker"> </mat-datepicker-toggle>
|
||||
<mat-datepicker #businessDatePicker></mat-datepicker>
|
||||
<mat-error *ngIf="businessDateForm.controls.businessDate.hasError('required')">
|
||||
{{'labels.inputs.Business Date' | translate}} {{ "labels.commons.is" | translate}} <strong>{{ "labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Business Date' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<div fxLayoutGap="2%" fxFlex="22%" class="options-wrapper">
|
||||
<span *ngIf="isEditInProgress && (dateIndex === 0)">
|
||||
<button mat-raised-button color="primary" [disabled]="businessDateForm.pristine" (click)="submit()"
|
||||
*mifosxHasPermission="'UPDATE_BUSINESSDATE'">
|
||||
{{'labels.buttons.Submit' | translate}}
|
||||
<span *ngIf="isEditInProgress && dateIndex === 0">
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
[disabled]="businessDateForm.pristine"
|
||||
(click)="submit()"
|
||||
*mifosxHasPermission="'UPDATE_BUSINESSDATE'"
|
||||
>
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button (click)="editInProgressToggle(0)">
|
||||
{{'labels.buttons.Cancel' | translate}}
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
</span>
|
||||
<button type="button" color="primary" *ngIf="!isEditInProgress" mat-icon-button matTooltip="{{ 'tooltips.Edit the Business Date' | translate}}"
|
||||
matTooltipPosition="above" (click)="editInProgressToggle(0)">
|
||||
<button
|
||||
type="button"
|
||||
color="primary"
|
||||
*ngIf="!isEditInProgress"
|
||||
mat-icon-button
|
||||
matTooltip="{{ 'tooltips.Edit the Business Date' | translate }}"
|
||||
matTooltipPosition="above"
|
||||
(click)="editInProgressToggle(0)"
|
||||
>
|
||||
<fa-icon icon="edit" size="lg"></fa-icon>
|
||||
</button>
|
||||
</div>
|
||||
@@ -56,34 +73,51 @@
|
||||
<!-- COB Date -->
|
||||
<div fxFlexFill fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<div fxFlex="50%" *ngIf="!isEditInProgress">
|
||||
<span fxFlex="40%" class="date-type">{{'labels.inputs.COB Date' | translate}}: </span>
|
||||
<span fxFlex="60%" class="date-value">{{cobDate | dateFormat}}</span>
|
||||
<span fxFlex="40%" class="date-type">{{ 'labels.inputs.COB Date' | translate }}: </span>
|
||||
<span fxFlex="60%" class="date-value">{{ cobDate | dateFormat }}</span>
|
||||
</div>
|
||||
|
||||
<mat-form-field (click)="cobDatePicker.open()" *ngIf="isEditInProgress && (dateIndex === 1)">
|
||||
<mat-label>{{'labels.inputs.COB Date' | translate}}</mat-label>
|
||||
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="cobDatePicker"
|
||||
formControlName="businessDate">
|
||||
<mat-datepicker-toggle matSuffix [for]="cobDatePicker">
|
||||
</mat-datepicker-toggle>
|
||||
<mat-form-field (click)="cobDatePicker.open()" *ngIf="isEditInProgress && dateIndex === 1">
|
||||
<mat-label>{{ 'labels.inputs.COB Date' | translate }}</mat-label>
|
||||
<input
|
||||
matInput
|
||||
[min]="minDate"
|
||||
[max]="maxDate"
|
||||
[matDatepicker]="cobDatePicker"
|
||||
formControlName="businessDate"
|
||||
/>
|
||||
<mat-datepicker-toggle matSuffix [for]="cobDatePicker"> </mat-datepicker-toggle>
|
||||
<mat-datepicker #cobDatePicker></mat-datepicker>
|
||||
<mat-error *ngIf="businessDateForm.controls.cobDate.hasError('required')">
|
||||
{{'labels.inputs.COB Date' | translate}} {{ "labels.commons.is" | translate}} <strong>{{ "labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.COB Date' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<div fxLayoutGap="4%" fxFlex="22%" class="options-wrapper">
|
||||
<span *ngIf="isEditInProgress && (dateIndex === 1)">
|
||||
<button mat-stroked-button color="primary" [disabled]="businessDateForm.pristine" (click)="submit()"
|
||||
*mifosxHasPermission="'UPDATE_BUSINESSDATE'">
|
||||
{{'labels.buttons.Submit' | translate}}
|
||||
<span *ngIf="isEditInProgress && dateIndex === 1">
|
||||
<button
|
||||
mat-stroked-button
|
||||
color="primary"
|
||||
[disabled]="businessDateForm.pristine"
|
||||
(click)="submit()"
|
||||
*mifosxHasPermission="'UPDATE_BUSINESSDATE'"
|
||||
>
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</span>
|
||||
<button mat-button *ngIf="isEditInProgress && (dateIndex === 1)" (click)="editInProgressToggle(1)">
|
||||
{{'labels.buttons.Cancel' | translate}}
|
||||
<button mat-button *ngIf="isEditInProgress && dateIndex === 1" (click)="editInProgressToggle(1)">
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button type="button" color="primary" *ngIf="!isEditInProgress" mat-icon-button matTooltip="{{ 'tooltips.Edit the COB Date' | translate}}"
|
||||
matTooltipPosition="above" (click)="editInProgressToggle(1)">
|
||||
<button
|
||||
type="button"
|
||||
color="primary"
|
||||
*ngIf="!isEditInProgress"
|
||||
mat-icon-button
|
||||
matTooltip="{{ 'tooltips.Edit the COB Date' | translate }}"
|
||||
matTooltipPosition="above"
|
||||
(click)="editInProgressToggle(1)"
|
||||
>
|
||||
<fa-icon icon="edit" size="lg"></fa-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
<mat-card class="configurations-card">
|
||||
<mat-card-content>
|
||||
<mat-tab-group #tabGroup mat-align-tabs="center">
|
||||
<mat-tab label="{{'labels.inputs.Global Configurations' | translate}}">
|
||||
<mat-tab label="{{ 'labels.inputs.Global Configurations' | translate }}">
|
||||
<mifosx-global-configurations-tab></mifosx-global-configurations-tab>
|
||||
</mat-tab>
|
||||
<mat-tab label="{{'labels.inputs.Business Date' | translate}}" *ngIf="isBusinessDateEnabled">
|
||||
<mat-tab label="{{ 'labels.inputs.Business Date' | translate }}" *ngIf="isBusinessDateEnabled">
|
||||
<mifosx-business-date-tab></mifosx-business-date-tab>
|
||||
</mat-tab>
|
||||
</mat-tab-group>
|
||||
|
||||
</mat-card-content>
|
||||
</mat-card>
|
||||
|
||||
+20
-21
@@ -1,52 +1,51 @@
|
||||
<div class="container space">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<form [formGroup]="configurationForm" (ngSubmit)="submit()">
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="column">
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.Configuration Name' | translate}}</mat-label>
|
||||
<input matInput required formControlName="name">
|
||||
<mat-label>{{ 'labels.inputs.Configuration Name' | translate }}</mat-label>
|
||||
<input matInput required formControlName="name" />
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.Description' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Description' | translate }}</mat-label>
|
||||
<textarea matInput formControlName="description" cdkTextareaAutosize cdkAutosizeMinRows="2"></textarea>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.Number Value' | translate}}</mat-label>
|
||||
<input matInput type="number" formControlName="value">
|
||||
<mat-label>{{ 'labels.inputs.Number Value' | translate }}</mat-label>
|
||||
<input matInput type="number" formControlName="value" />
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.String Value' | translate}}</mat-label>
|
||||
<input matInput formControlName="stringValue">
|
||||
<mat-label>{{ 'labels.inputs.String Value' | translate }}</mat-label>
|
||||
<input matInput formControlName="stringValue" />
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%" (click)="configurationDatePicker.open()">
|
||||
<mat-label>{{'labels.inputs.Date Value' | translate}}</mat-label>
|
||||
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="configurationDatePicker" formControlName="dateValue">
|
||||
<mat-label>{{ 'labels.inputs.Date Value' | translate }}</mat-label>
|
||||
<input
|
||||
matInput
|
||||
[min]="minDate"
|
||||
[max]="maxDate"
|
||||
[matDatepicker]="configurationDatePicker"
|
||||
formControlName="dateValue"
|
||||
/>
|
||||
<mat-datepicker-toggle matSuffix [for]="configurationDatePicker"></mat-datepicker-toggle>
|
||||
<mat-datepicker #configurationDatePicker></mat-datepicker>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
|
||||
<button type="button" mat-raised-button [routerLink]="['../..']"> {{'labels.buttons.Cancel' | translate}} </button>
|
||||
<button type="button" mat-raised-button [routerLink]="['../..']">
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" [disabled]="configurationForm.pristine || !configurationForm.valid">
|
||||
{{'labels.buttons.Submit' | translate}} </button>
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</mat-card-actions>
|
||||
|
||||
</form>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
+60
-31
@@ -1,52 +1,59 @@
|
||||
<div class="container">
|
||||
|
||||
<div #filter fxLayout="row">
|
||||
<mat-form-field fxFlex>
|
||||
<mat-label>{{'labels.inputs.Filter' | translate }}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)">
|
||||
<mat-label>{{ 'labels.inputs.Filter' | translate }}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)" />
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
<div #configurationsTable class="mat-elevation-z8">
|
||||
|
||||
<table mat-table [dataSource]="dataSource" matSort>
|
||||
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.name' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let configuration"> {{ configuration.name }}
|
||||
<fa-icon *ngIf="configuration.description" icon="question-circle" matTooltip="{{ configuration.description | translate }}" matTooltipPosition="right"></fa-icon>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let configuration">
|
||||
{{ configuration.name }}
|
||||
<fa-icon
|
||||
*ngIf="configuration.description"
|
||||
icon="question-circle"
|
||||
matTooltip="{{ configuration.description | translate }}"
|
||||
matTooltipPosition="right"
|
||||
></fa-icon>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="enabled">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Status' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Status' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let configuration">
|
||||
<mat-slide-toggle [(ngModel)]="configuration.enabled" name="{{configuration.name}}" (click)="toggleStatus(configuration)">
|
||||
<mat-slide-toggle
|
||||
[(ngModel)]="configuration.enabled"
|
||||
name="{{ configuration.name }}"
|
||||
(click)="toggleStatus(configuration)"
|
||||
>
|
||||
<div [className]="configuration.enabled ? 'enabled' : 'disabled'">
|
||||
<span *ngIf="configuration.enabled">{{'labels.inputs.Enabled' | translate}}</span>
|
||||
<span *ngIf="!configuration.enabled">{{'labels.inputs.Disabled' | translate}}</span>
|
||||
<span *ngIf="configuration.enabled">{{ 'labels.inputs.Enabled' | translate }}</span>
|
||||
<span *ngIf="!configuration.enabled">{{ 'labels.inputs.Disabled' | translate }}</span>
|
||||
</div>
|
||||
</mat-slide-toggle>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="value">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Value' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let configuration"> {{ configuration.value }}</td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Value' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let configuration">{{ configuration.value }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="stringValue">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.String Value' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let configuration"> {{ configuration.stringValue }}</td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.String Value' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let configuration">{{ configuration.stringValue }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="dateValue">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Date Value' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let configuration"> {{ configuration.dateValue | dateFormat }}</td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Date Value' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let configuration">{{ configuration.dateValue | dateFormat }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="edit">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Actions' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Actions' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let configuration">
|
||||
<button mat-button color="primary" [routerLink]="[configuration.id, 'edit']">
|
||||
<fa-icon icon="edit"></fa-icon>
|
||||
@@ -55,30 +62,52 @@
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
<mat-paginator [pageSizeOptions]="[10, 25, 50, 100]" showFirstLastButtons></mat-paginator>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<ng-template #templateFilter let-data let-popover="popover">
|
||||
<h4>{{'labels.heading.Search bar to filter configurations' | translate}}</h4>
|
||||
<h4>{{ 'labels.heading.Search bar to filter configurations' | translate }}</h4>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<button mat-raised-button color="warn" (click)="popover.close();configurationWizardService.closeConfigWizard()">{{'labels.buttons.Close' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();previousStep()">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();showPopover(templateConfigurationsTable, configurationsTable, 'top', true)">{{'labels.buttons.Next' | translate}}</button>
|
||||
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
|
||||
{{ 'labels.buttons.Close' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); previousStep()">
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="popover.close(); showPopover(templateConfigurationsTable, configurationsTable, 'top', true)"
|
||||
>
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #templateConfigurationsTable let-data let-popover="popover">
|
||||
<h4 class="mw300">{{'labels.heading.Global Configuration options' | translate}}: <a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/67895362/Global+Configuration" target="_blank">{{'labels.inputs.Global Configurations' | translate}}</a></h4>
|
||||
<h4 class="mw300">
|
||||
{{ 'labels.heading.Global Configuration options' | translate }}:
|
||||
<a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/67895362/Global+Configuration" target="_blank">{{
|
||||
'labels.inputs.Global Configurations' | translate
|
||||
}}</a>
|
||||
</h4>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<button mat-raised-button color="warn" (click)="popover.close();configurationWizardService.closeConfigWizard()">{{'labels.buttons.Close' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();showPopover(templateFilter, filter, 'bottom', true)">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();nextStep()">{{'labels.buttons.Next' | translate}}</button>
|
||||
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
|
||||
{{ 'labels.buttons.Close' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="popover.close(); showPopover(templateFilter, filter, 'bottom', true)"
|
||||
>
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); nextStep()">
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
+59
-29
@@ -1,24 +1,28 @@
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column" class="container m-b-20">
|
||||
|
||||
<div #buttonEdit class="in-block">
|
||||
<button mat-raised-button color="primary" (click)="editTask(); backupCheckValues();" *mifosxHasPermission="'UPDATE_PERMISSION'">
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="editTask(); backupCheckValues()"
|
||||
*mifosxHasPermission="'UPDATE_PERMISSION'"
|
||||
>
|
||||
<fa-icon icon="edit" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Edit' | translate}}
|
||||
{{ 'labels.buttons.Edit' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<ng-container>
|
||||
|
||||
<div fxLayout="row">
|
||||
|
||||
<div #mcTable fxFlex="30" fxLayout="column">
|
||||
<mat-list>
|
||||
<mat-list-item [ngClass]="selectedItem === grouping ? 'active' : 'inactive'" *ngFor="let grouping of groupings" (click)="showPermissions(grouping)">
|
||||
<mat-list-item
|
||||
[ngClass]="selectedItem === grouping ? 'active' : 'inactive'"
|
||||
*ngFor="let grouping of groupings"
|
||||
(click)="showPermissions(grouping)"
|
||||
>
|
||||
<span class="grouping-name">
|
||||
{{ formatName(grouping) }}
|
||||
</span>
|
||||
@@ -30,49 +34,75 @@
|
||||
|
||||
<div fxFlex="70" fxLayout="column" class="list-permission">
|
||||
<form [formGroup]="formGroup" (submit)="submit()">
|
||||
|
||||
<div *ngFor="let permission of permissions.permissions" class="display-permissions">
|
||||
<div formArrayName="roster">
|
||||
<div [formGroupName]="permission.id">
|
||||
<mat-checkbox name="cp" id="{{ permission.code }}" formControlName="selected">
|
||||
<div formArrayName="roster">
|
||||
<div [formGroupName]="permission.id">
|
||||
<mat-checkbox name="cp" id="{{ permission.code }}" formControlName="selected">
|
||||
{{ permissionName(permission.code) }}
|
||||
</mat-checkbox>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</ng-container>
|
||||
|
||||
<div fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px" *ngIf="!isDisabled">
|
||||
<mat-card-actions>
|
||||
<button type="button" mat-raised-button (click)="cancel(); restoreCheckboxes();">{{'labels.buttons.Cancel' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="submit()" *mifosxHasPermission="'UPDATE_PERMISSION'">{{'labels.buttons.Submit' | translate}}</button>
|
||||
<button type="button" mat-raised-button (click)="cancel(); restoreCheckboxes()">
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="submit()" *mifosxHasPermission="'UPDATE_PERMISSION'">
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</mat-card-actions>
|
||||
</div>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
<ng-template #templateButtonEdit let-popover="popover">
|
||||
<h2>{{'labels.heading.Edit' | translate}}</h2>
|
||||
<p class="mw300">{{'labels.text.To add or remove a task from the Maker-Checker list' | translate}}</p>
|
||||
<h2>{{ 'labels.heading.Edit' | translate }}</h2>
|
||||
<p class="mw300">{{ 'labels.text.To add or remove a task from the Maker-Checker list' | translate }}</p>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<button mat-raised-button color="warn" (click)="popover.close();configurationWizardService.closeConfigWizard()">{{'labels.buttons.Close' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();previousStep()">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();showPopover(templateMcTable,mcTable,'top', true);">{{'labels.buttons.Next' | translate}}</button>
|
||||
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
|
||||
{{ 'labels.buttons.Close' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); previousStep()">
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="popover.close(); showPopover(templateMcTable, mcTable, 'top', true)"
|
||||
>
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #templateMcTable let-popover="popover">
|
||||
<h4 class="mw300">{{'labels.heading.List of all maker checker tasks' | translate}}: <a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/67895359/Configure+Maker-Checker+Tasks" target="_blank">{{'labels.inputs.Configure Maker-Checker Tasks' | translate}}</a></h4>
|
||||
<h4 class="mw300">
|
||||
{{ 'labels.heading.List of all maker checker tasks' | translate }}:
|
||||
<a
|
||||
href="https://mifosforge.jira.com/wiki/spaces/docs/pages/67895359/Configure+Maker-Checker+Tasks"
|
||||
target="_blank"
|
||||
>{{ 'labels.inputs.Configure Maker-Checker Tasks' | translate }}</a
|
||||
>
|
||||
</h4>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<button mat-raised-button color="warn" (click)="popover.close();configurationWizardService.closeConfigWizard()">{{'labels.buttons.Close' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();showPopover(templateButtonEdit,buttonEdit,'bottom', true);">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();nextStep()">{{'labels.buttons.Next' | translate}}</button>
|
||||
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
|
||||
{{ 'labels.buttons.Close' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="popover.close(); showPopover(templateButtonEdit, buttonEdit, 'bottom', true)"
|
||||
>
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); nextStep()">
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
@@ -1,79 +1,87 @@
|
||||
<div class="container">
|
||||
|
||||
<div class="mat-elevation-z8">
|
||||
<table mat-table [dataSource]="datasource">
|
||||
<ng-container matColumnDef="entitymapping">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Mapping Between Entities' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Mapping Between Entities' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let mappingType" (click)="showFilters(mappingType.id)">
|
||||
<span *ngIf="mappingType.mappingTypes === 'office_access_to_loan_products'">
|
||||
{{'labels.inputs.Offices Loan Products' | translate}}
|
||||
{{ 'labels.inputs.Offices Loan Products' | translate }}
|
||||
</span>
|
||||
<span *ngIf="mappingType.mappingTypes === 'office_access_to_savings_products'">
|
||||
{{'labels.inputs.Offices Savings Products' | translate}}
|
||||
{{ 'labels.inputs.Offices Savings Products' | translate }}
|
||||
</span>
|
||||
<span *ngIf="mappingType.mappingTypes === 'office_access_to_fees/charges'">
|
||||
{{'labels.inputs.Offices Charges/Fees' | translate}}
|
||||
{{ 'labels.inputs.Offices Charges/Fees' | translate }}
|
||||
</span>
|
||||
<span *ngIf="mappingType.mappingTypes === 'role_access_to_loan_products'">
|
||||
{{'labels.inputs.Roles Loan Products' | translate}}
|
||||
{{ 'labels.inputs.Roles Loan Products' | translate }}
|
||||
</span>
|
||||
<span *ngIf="mappingType.mappingTypes === 'role_access_to_savings_products'">
|
||||
{{'labels.inputs.Roles Savings Products' | translate}}
|
||||
{{ 'labels.inputs.Roles Savings Products' | translate }}
|
||||
</span>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;" class="select-row"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns" class="select-row"></tr>
|
||||
</table>
|
||||
|
||||
<!---------------- SHOW FILTERING OPTION ----------->
|
||||
<ng-container *ngIf="selectedMappingType > 0">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<form [formGroup]="filterPreferenceForm" (ngSubmit)="showFilteredData()">
|
||||
<mat-card-title> {{firstMappingEntity| translateKey:'inputs'}} {{'labels.text.access to' | translate}} {{secondMappingEntity | translateKey:'text'}} </mat-card-title>
|
||||
<mat-card-title>
|
||||
{{ firstMappingEntity | translateKey: 'inputs' }} {{ 'labels.text.access to' | translate }}
|
||||
{{ secondMappingEntity | translateKey: 'text' }}
|
||||
</mat-card-title>
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="row" fxLayoutAlign="space-evenly center">
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{firstMappingEntity | translateKey:'inputs'}}</mat-label>
|
||||
<mat-label>{{ firstMappingEntity | translateKey: 'inputs' }}</mat-label>
|
||||
<mat-select required formControlName="mappingFirstParamId">
|
||||
<mat-option [value]="0">
|
||||
{{'labels.inputs.All' | translate}}
|
||||
{{ 'labels.inputs.All' | translate }}
|
||||
</mat-option>
|
||||
<mat-option *ngFor="let firstEntity of firstEntityData" [value]="firstEntity.id">
|
||||
{{ firstEntity.name }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="filterPreferenceForm.controls.mappingFirstParamId.hasError('required')">
|
||||
{{firstMappingEntity | translateKey:'inputs'}} {{ "labels.commons.is" | translate}} <strong>{{ "labels.commons.required" | translate}}</strong>
|
||||
{{ firstMappingEntity | translateKey: 'inputs' }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{secondMappingEntity | translateKey:'text'}}</mat-label>
|
||||
<mat-label>{{ secondMappingEntity | translateKey: 'text' }}</mat-label>
|
||||
<mat-select required formControlName="mappingSecondParamId">
|
||||
<mat-option [value]="0">
|
||||
{{'labels.inputs.All' | translate}}
|
||||
{{ 'labels.inputs.All' | translate }}
|
||||
</mat-option>
|
||||
<mat-option *ngFor="let secondEntity of secondEntityData" [value]="secondEntity.id">
|
||||
{{ secondEntity.name }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="filterPreferenceForm.controls.mappingSecondParamId.hasError('required')">
|
||||
{{secondMappingEntity | translateKey:'text'}} {{ "labels.commons.is" | translate}} <strong>{{ "labels.commons.required" | translate}}</strong>
|
||||
{{ secondMappingEntity | translateKey: 'text' }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
|
||||
<button mat-raised-button color="primary" [disabled]="!filterPreferenceForm.valid">{{'labels.buttons.Submit' | translate}}</button>
|
||||
<button *ngIf="hasClickedFilters" mat-raised-button color="primary" (click)="showAddScreen(selectedMappingType)">{{'labels.buttons.Add' | translate}}</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!filterPreferenceForm.valid">
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
<button
|
||||
*ngIf="hasClickedFilters"
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="showAddScreen(selectedMappingType)"
|
||||
>
|
||||
{{ 'labels.buttons.Add' | translate }}
|
||||
</button>
|
||||
</mat-card-actions>
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
</form>
|
||||
|
||||
@@ -82,54 +90,66 @@
|
||||
<div>
|
||||
<table mat-table [dataSource]="entityMappingsListData">
|
||||
<ng-container matColumnDef="fromentity">
|
||||
<th mat-header-cell *matHeaderCellDef> {{firstMappingEntity | translateKey:'inputs'}} </th>
|
||||
<td mat-cell *matCellDef="let listdata"> {{ listdata.fromEntity }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ firstMappingEntity | translateKey: 'inputs' }}</th>
|
||||
<td mat-cell *matCellDef="let listdata">{{ listdata.fromEntity }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="toentity">
|
||||
<th mat-header-cell *matHeaderCellDef> {{secondMappingEntity | translateKey:'text'}} </th>
|
||||
<td mat-cell *matCellDef="let listdata"> {{ listdata.toEntity }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ secondMappingEntity | translateKey: 'text' }}</th>
|
||||
<td mat-cell *matCellDef="let listdata">{{ listdata.toEntity }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="startdate">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.Start Date' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let listdata"> {{ listdata.startDate | dateFormat }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Start Date' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let listdata">{{ listdata.startDate | dateFormat }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="enddate">
|
||||
<th mat-header-cell *matHeaderCellDef> {{'labels.inputs.End Date' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let listdata"> {{ listdata.endDate | dateFormat }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.End Date' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let listdata">{{ listdata.endDate | dateFormat }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="edit">
|
||||
<th mat-header-cell *matHeaderCellDef> </th>
|
||||
<th mat-header-cell *matHeaderCellDef></th>
|
||||
<td mat-cell *matCellDef="let listdata">
|
||||
<button type="button" color="primary" mat-icon-button matTooltip="{{ 'tooltips.Edit' | translate}}" matTooltipPosition="above" *mifosxHasPermission="'UPDATE_ENTITYMAPPING'"
|
||||
(click)="showEditScreen(listdata.mapId, selectedMappingType)">
|
||||
<button
|
||||
type="button"
|
||||
color="primary"
|
||||
mat-icon-button
|
||||
matTooltip="{{ 'tooltips.Edit' | translate }}"
|
||||
matTooltipPosition="above"
|
||||
*mifosxHasPermission="'UPDATE_ENTITYMAPPING'"
|
||||
(click)="showEditScreen(listdata.mapId, selectedMappingType)"
|
||||
>
|
||||
<fa-icon icon="edit" size="lg"></fa-icon>
|
||||
</button>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="delete">
|
||||
<th mat-header-cell *matHeaderCellDef> </th>
|
||||
<th mat-header-cell *matHeaderCellDef></th>
|
||||
<td mat-cell *matCellDef="let listdata">
|
||||
<button type="button" color="warn" mat-icon-button matTooltip="{{ 'tooltips.Delete' | translate}}" matTooltipPosition="above" *mifosxHasPermission="'DELETE_ENTITYMAPPING'"
|
||||
(click)="delete(listdata.mapId)">
|
||||
<button
|
||||
type="button"
|
||||
color="warn"
|
||||
mat-icon-button
|
||||
matTooltip="{{ 'tooltips.Delete' | translate }}"
|
||||
matTooltipPosition="above"
|
||||
*mifosxHasPermission="'DELETE_ENTITYMAPPING'"
|
||||
(click)="delete(listdata.mapId)"
|
||||
>
|
||||
<fa-icon icon="trash" size="lg"></fa-icon>
|
||||
</button>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="entityMappingListColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: entityMappingListColumns;" class="select-row"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: entityMappingListColumns" class="select-row"></tr>
|
||||
</table>
|
||||
<mat-paginator [pageSizeOptions]="[10, 25, 50, 100]" showFirstLastButtons></mat-paginator>
|
||||
</div>
|
||||
</ng-container>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</ng-container>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,27 +1,23 @@
|
||||
<div class="container m-b-20" fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px">
|
||||
<button mat-raised-button color="primary" [routerLink]="['edit']">
|
||||
<fa-icon icon="edit" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Edit' | translate}}
|
||||
{{ 'labels.buttons.Edit' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="container mat-elevation-z8">
|
||||
|
||||
<table mat-table [dataSource]="dataSource" matSort>
|
||||
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.name' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let configuration"> {{ configuration.name | translateKey:'inputs' }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let configuration">{{ configuration.name | translateKey: 'inputs' }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="value">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Value' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let configuration"> {{ getConfigurationValue(configuration) }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Value' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let configuration">{{ getConfigurationValue(configuration) }}</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
+38
-25
@@ -1,58 +1,71 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<form [formGroup]="amazonS3ConfigurationForm" (ngSubmit)="submit()">
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="column">
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.S3 Bucket Name' | translate}}</mat-label>
|
||||
<input matInput required formControlName="s3_bucket_name">
|
||||
<mat-label>{{ 'labels.inputs.S3 Bucket Name' | translate }}</mat-label>
|
||||
<input matInput required formControlName="s3_bucket_name" />
|
||||
<mat-error *ngIf="amazonS3ConfigurationForm.controls.s3_bucket_name.hasError('required')">
|
||||
{{'labels.inputs.S3 Bucket Name' | translate}} {{ "labels.commons.is" | translate}} <strong>{{ "labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.S3 Bucket Name' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.S3 Access Key' | translate}}</mat-label>
|
||||
<input matInput required type="{{ accessKeyInputType }}" formControlName="s3_access_key">
|
||||
<button mat-button *ngIf="amazonS3ConfigurationForm.controls.s3_access_key.value" matSuffix mat-icon-button
|
||||
(mousedown)="accessKeyInputType = 'text'" (mouseup)="accessKeyInputType = 'password'">
|
||||
<mat-label>{{ 'labels.inputs.S3 Access Key' | translate }}</mat-label>
|
||||
<input matInput required type="{{ accessKeyInputType }}" formControlName="s3_access_key" />
|
||||
<button
|
||||
mat-button
|
||||
*ngIf="amazonS3ConfigurationForm.controls.s3_access_key.value"
|
||||
matSuffix
|
||||
mat-icon-button
|
||||
(mousedown)="accessKeyInputType = 'text'"
|
||||
(mouseup)="accessKeyInputType = 'password'"
|
||||
>
|
||||
<fa-icon *ngIf="accessKeyInputType === 'password'" icon="eye"></fa-icon>
|
||||
<fa-icon *ngIf="accessKeyInputType === 'text'" icon="eye-slash"></fa-icon>
|
||||
</button>
|
||||
<mat-error *ngIf="amazonS3ConfigurationForm.controls.s3_access_key.hasError('required')">
|
||||
{{'labels.inputs.S3 Access Key' | translate}} {{ "labels.commons.is" | translate}} <strong>{{ "labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.S3 Access Key' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.S3 Secret Key' | translate}}</mat-label>
|
||||
<input matInput required type="{{ secretKeyInputType }}" formControlName="s3_secret_key">
|
||||
<button mat-button *ngIf="amazonS3ConfigurationForm.controls.s3_secret_key.value" matSuffix mat-icon-button
|
||||
(mousedown)="secretKeyInputType = 'text'" (mouseup)="secretKeyInputType = 'password'">
|
||||
<mat-label>{{ 'labels.inputs.S3 Secret Key' | translate }}</mat-label>
|
||||
<input matInput required type="{{ secretKeyInputType }}" formControlName="s3_secret_key" />
|
||||
<button
|
||||
mat-button
|
||||
*ngIf="amazonS3ConfigurationForm.controls.s3_secret_key.value"
|
||||
matSuffix
|
||||
mat-icon-button
|
||||
(mousedown)="secretKeyInputType = 'text'"
|
||||
(mouseup)="secretKeyInputType = 'password'"
|
||||
>
|
||||
<fa-icon *ngIf="secretKeyInputType === 'password'" icon="eye"></fa-icon>
|
||||
<fa-icon *ngIf="secretKeyInputType === 'text'" icon="eye-slash"></fa-icon>
|
||||
</button>
|
||||
<mat-error *ngIf="amazonS3ConfigurationForm.controls.s3_secret_key.hasError('required')">
|
||||
{{'labels.inputs.S3 Secret Key' | translate}} {{ "labels.commons.is" | translate}} <strong>{{ "labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.S3 Secret Key' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">{{'labels.buttons.Cancel' | translate}}</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!amazonS3ConfigurationForm.valid || amazonS3ConfigurationForm.pristine">{{'labels.buttons.Submit' | translate}}</button>
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
[disabled]="!amazonS3ConfigurationForm.valid || amazonS3ConfigurationForm.pristine"
|
||||
>
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</mat-card-actions>
|
||||
|
||||
</form>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,81 +1,91 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<form [formGroup]="emailConfigurationForm" (ngSubmit)="submit()">
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="column">
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.Username' | translate}}</mat-label>
|
||||
<input matInput required formControlName="username">
|
||||
<mat-label>{{ 'labels.inputs.Username' | translate }}</mat-label>
|
||||
<input matInput required formControlName="username" />
|
||||
<mat-error *ngIf="emailConfigurationForm.controls.username.hasError('required')">
|
||||
{{'labels.inputs.Username' | translate}} {{ "labels.commons.is" | translate}} <strong>{{ "labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Username' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.Password' | translate}}</mat-label>
|
||||
<input matInput required type="{{ passwordInputType }}" formControlName="password">
|
||||
<button mat-button *ngIf="emailConfigurationForm.controls.password.value" matSuffix mat-icon-button
|
||||
(mousedown)="passwordInputType = 'text'" (mouseup)="passwordInputType = 'password'">
|
||||
<mat-label>{{ 'labels.inputs.Password' | translate }}</mat-label>
|
||||
<input matInput required type="{{ passwordInputType }}" formControlName="password" />
|
||||
<button
|
||||
mat-button
|
||||
*ngIf="emailConfigurationForm.controls.password.value"
|
||||
matSuffix
|
||||
mat-icon-button
|
||||
(mousedown)="passwordInputType = 'text'"
|
||||
(mouseup)="passwordInputType = 'password'"
|
||||
>
|
||||
<fa-icon *ngIf="passwordInputType === 'password'" icon="eye"></fa-icon>
|
||||
<fa-icon *ngIf="passwordInputType === 'text'" icon="eye-slash"></fa-icon>
|
||||
</button>
|
||||
<mat-error *ngIf="emailConfigurationForm.controls.password.hasError('required')">
|
||||
{{'labels.inputs.Password' | translate}} {{ "labels.commons.is" | translate}} <strong>{{ "labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Password' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.Host' | translate}}</mat-label>
|
||||
<input matInput required formControlName="host">
|
||||
<mat-label>{{ 'labels.inputs.Host' | translate }}</mat-label>
|
||||
<input matInput required formControlName="host" />
|
||||
<mat-error *ngIf="emailConfigurationForm.controls.host.hasError('required')">
|
||||
{{'labels.inputs.Host' | translate}} {{ "labels.commons.is" | translate}} <strong>{{ "labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Host' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.Port' | translate}}</mat-label>
|
||||
<input matInput type="number" required formControlName="port">
|
||||
<mat-label>{{ 'labels.inputs.Port' | translate }}</mat-label>
|
||||
<input matInput type="number" required formControlName="port" />
|
||||
<mat-error *ngIf="emailConfigurationForm.controls.port.hasError('required')">
|
||||
{{'labels.inputs.Port' | translate}} {{ "labels.commons.is" | translate}} <strong>{{ "labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Port' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-checkbox fxFlex="48%" labelPosition="before" formControlName="useTLS" class="margin-v">
|
||||
{{'labels.inputs.Use TLS' | translate}}?
|
||||
{{ 'labels.inputs.Use TLS' | translate }}?
|
||||
</mat-checkbox>
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.From Email' | translate}}</mat-label>
|
||||
<input matInput type="email" required formControlName="fromEmail">
|
||||
<mat-label>{{ 'labels.inputs.From Email' | translate }}</mat-label>
|
||||
<input matInput type="email" required formControlName="fromEmail" />
|
||||
<mat-error *ngIf="emailConfigurationForm.controls.fromEmail.hasError('required')">
|
||||
{{'labels.inputs.From Email' | translate}} {{ "labels.commons.is" | translate}} <strong>{{ "labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.From Email' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.From Name' | translate}}</mat-label>
|
||||
<input matInput required formControlName="fromName">
|
||||
<mat-label>{{ 'labels.inputs.From Name' | translate }}</mat-label>
|
||||
<input matInput required formControlName="fromName" />
|
||||
<mat-error *ngIf="emailConfigurationForm.controls.fromName.hasError('required')">
|
||||
{{'labels.inputs.From Name' | translate}} {{ "labels.commons.is" | translate}} <strong>{{ "labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.From Name' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">{{'labels.buttons.Cancel' | translate}}</button>
|
||||
<button mat-raised-button color="primary"
|
||||
[disabled]="!emailConfigurationForm.valid || emailConfigurationForm.pristine">{{'labels.buttons.Submit' | translate}}</button>
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
[disabled]="!emailConfigurationForm.valid || emailConfigurationForm.pristine"
|
||||
>
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</mat-card-actions>
|
||||
|
||||
</form>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,27 +1,23 @@
|
||||
<div class="container m-b-20" fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px">
|
||||
<button mat-raised-button color="primary" [routerLink]="['edit']">
|
||||
<fa-icon icon="edit" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Edit' | translate}}
|
||||
{{ 'labels.buttons.Edit' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="container mat-elevation-z8">
|
||||
|
||||
<table mat-table [dataSource]="dataSource" matSort>
|
||||
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.name' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let configuration"> {{ configuration.name | translateKey:'text' }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let configuration">{{ configuration.name | translateKey: 'text' }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="value">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Value' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let configuration"> {{ configuration.value }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Value' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let configuration">{{ configuration.value }}</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,67 +1,63 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<div fxLayout="row" fxLayout.lt-md="column" fxLayoutGap="20px">
|
||||
|
||||
<div fxFlex="50%">
|
||||
|
||||
<mat-nav-list>
|
||||
|
||||
<mat-list-item>
|
||||
<mat-icon matListIcon [routerLink]="['amazon-s3']">
|
||||
<fa-icon icon="cloud" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<h4 matLine [routerLink]="['amazon-s3']">{{'labels.heading.S3 Amazon External Service' | translate}}</h4>
|
||||
<h4 matLine [routerLink]="['amazon-s3']">{{ 'labels.heading.S3 Amazon External Service' | 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 [routerLink]="['amazon-s3']" *ngIf="arrowBooleans[0]">{{'labels.text.S3 Amazon Service Configuration' | translate}}</p>
|
||||
<p matLine [routerLink]="['amazon-s3']" *ngIf="arrowBooleans[0]">
|
||||
{{ 'labels.text.S3 Amazon Service Configuration' | translate }}
|
||||
</p>
|
||||
</mat-list-item>
|
||||
|
||||
<mat-list-item>
|
||||
<mat-icon matListIcon [routerLink]="['sms']">
|
||||
<fa-icon icon="comment-alt" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<h4 matLine [routerLink]="['sms']">{{'labels.heading.SMS External Service' | translate}}</h4>
|
||||
<h4 matLine [routerLink]="['sms']">{{ 'labels.heading.SMS External Service' | 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 [routerLink]="['sms']" *ngIf="arrowBooleans[1]">{{'labels.text.SMS Service Configuration' | translate}}</p>
|
||||
<p matLine [routerLink]="['sms']" *ngIf="arrowBooleans[1]">
|
||||
{{ 'labels.text.SMS Service Configuration' | translate }}
|
||||
</p>
|
||||
</mat-list-item>
|
||||
|
||||
</mat-nav-list>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
|
||||
<mat-nav-list>
|
||||
|
||||
<mat-list-item>
|
||||
<mat-icon matListIcon [routerLink]="['email']">
|
||||
<fa-icon icon="envelope" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<h4 matLine [routerLink]="['email']">{{'labels.heading.Email External Service' | translate}}</h4>
|
||||
<h4 matLine [routerLink]="['email']">{{ 'labels.heading.Email External Service' | 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 [routerLink]="['email']" *ngIf="arrowBooleans[2]">{{'labels.text.Email Service Configuration' | translate}}</p>
|
||||
<p matLine [routerLink]="['email']" *ngIf="arrowBooleans[2]">
|
||||
{{ 'labels.text.Email Service Configuration' | translate }}
|
||||
</p>
|
||||
</mat-list-item>
|
||||
|
||||
<mat-list-item>
|
||||
<mat-icon matListIcon [routerLink]="['notification']">
|
||||
<fa-icon icon="bell" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<h4 matLine [routerLink]="['notification']"> {{'labels.heading.Notification External Service' | translate}}</h4>
|
||||
<h4 matLine [routerLink]="['notification']">
|
||||
{{ 'labels.heading.Notification External Service' | 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 [routerLink]="['notification']" *ngIf="arrowBooleans[3]">{{'labels.text.Notification Service Configuration' | translate}}</p>
|
||||
<p matLine [routerLink]="['notification']" *ngIf="arrowBooleans[3]">
|
||||
{{ 'labels.text.Notification Service Configuration' | translate }}
|
||||
</p>
|
||||
</mat-list-item>
|
||||
|
||||
</mat-nav-list>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
+22
-21
@@ -1,48 +1,49 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<form [formGroup]="notificationConfigurationForm" (ngSubmit)="submit()">
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="column">
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.Server Key' | translate}}</mat-label>
|
||||
<input matInput required formControlName="server_key">
|
||||
<mat-label>{{ 'labels.inputs.Server Key' | translate }}</mat-label>
|
||||
<input matInput required formControlName="server_key" />
|
||||
<mat-error *ngIf="notificationConfigurationForm.controls.server_key.hasError('required')">
|
||||
{{'labels.inputs.Server Key' | translate}} {{ "labels.commons.is" | translate}} <strong>{{ "labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Server Key' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.GCM End Point' | translate}}</mat-label>
|
||||
<input matInput required formControlName="gcm_end_point">
|
||||
<mat-label>{{ 'labels.inputs.GCM End Point' | translate }}</mat-label>
|
||||
<input matInput required formControlName="gcm_end_point" />
|
||||
<mat-error *ngIf="notificationConfigurationForm.controls.gcm_end_point.hasError('required')">
|
||||
{{'labels.inputs.GCM End Point' | translate}} {{ "labels.commons.is" | translate}} <strong>{{ "labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.GCM End Point' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.FCM End Point' | translate}}</mat-label>
|
||||
<input matInput required formControlName="fcm_end_point">
|
||||
<mat-label>{{ 'labels.inputs.FCM End Point' | translate }}</mat-label>
|
||||
<input matInput required formControlName="fcm_end_point" />
|
||||
<mat-error *ngIf="notificationConfigurationForm.controls.fcm_end_point.hasError('required')">
|
||||
{{'labels.inputs.FCM End Point' | translate}} {{ "labels.commons.is" | translate}} <strong>{{ "labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.FCM End Point' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">{{'labels.buttons.Cancel' | translate}}</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!notificationConfigurationForm.valid || notificationConfigurationForm.pristine">{{'labels.buttons.Submit' | translate}}</button>
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
[disabled]="!notificationConfigurationForm.valid || notificationConfigurationForm.pristine"
|
||||
>
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</mat-card-actions>
|
||||
|
||||
</form>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,27 +1,23 @@
|
||||
<div class="container m-b-20" fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px">
|
||||
<button mat-raised-button color="primary" [routerLink]="['edit']">
|
||||
<fa-icon icon="edit" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Edit' | translate}}
|
||||
{{ 'labels.buttons.Edit' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="container mat-elevation-z8">
|
||||
|
||||
<table mat-table [dataSource]="dataSource" matSort>
|
||||
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.name' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let configuration"> {{ configuration.name | translateKey:'text' }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let configuration">{{ configuration.name | translateKey: 'text' }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="value">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Value' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let configuration"> {{ getConfigurationValue(configuration) }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Value' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let configuration">{{ getConfigurationValue(configuration) }}</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,56 +1,58 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<form [formGroup]="smsConfigurationForm" (ngSubmit)="submit()">
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="column">
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.Host Name' | translate}}</mat-label>
|
||||
<input matInput required formControlName="host_name">
|
||||
<mat-label>{{ 'labels.inputs.Host Name' | translate }}</mat-label>
|
||||
<input matInput required formControlName="host_name" />
|
||||
<mat-error *ngIf="smsConfigurationForm.controls.host_name.hasError('required')">
|
||||
{{'labels.inputs.Host Name' | translate}} {{ "labels.commons.is" | translate}} <strong>{{ "labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Host Name' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.Port Number' | translate}}</mat-label>
|
||||
<input matInput required formControlName="port_number">
|
||||
<mat-label>{{ 'labels.inputs.Port Number' | translate }}</mat-label>
|
||||
<input matInput required formControlName="port_number" />
|
||||
<mat-error *ngIf="smsConfigurationForm.controls.port_number.hasError('required')">
|
||||
{{'labels.inputs.Port Number' | translate}} {{ "labels.commons.is" | translate}} <strong>{{ "labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.Port Number' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.End Point' | translate}}</mat-label>
|
||||
<input matInput required formControlName="end_point">
|
||||
<mat-label>{{ 'labels.inputs.End Point' | translate }}</mat-label>
|
||||
<input matInput required formControlName="end_point" />
|
||||
<mat-error *ngIf="smsConfigurationForm.controls.end_point.hasError('required')">
|
||||
{{'labels.inputs.End Point' | translate}} {{ "labels.commons.is" | translate}} <strong>{{ "labels.commons.required" | translate}}</strong>
|
||||
{{ 'labels.inputs.End Point' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.Tenant App Key' | translate}}</mat-label>
|
||||
<input matInput required formControlName="tenant_app_key">
|
||||
<mat-error *ngIf="smsConfigurationForm.controls.tenant_app_key.hasError('required')">
|
||||
{{'labels.inputs.Tenant App Key' | translate}} {{ "labels.commons.is" | translate}} <strong>{{ "labels.commons.required" | translate}}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-label>{{ 'labels.inputs.Tenant App Key' | translate }}</mat-label>
|
||||
<input matInput required formControlName="tenant_app_key" />
|
||||
<mat-error *ngIf="smsConfigurationForm.controls.tenant_app_key.hasError('required')">
|
||||
{{ 'labels.inputs.Tenant App Key' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">{{'labels.buttons.Cancel' | translate}}</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!smsConfigurationForm.valid || smsConfigurationForm.pristine">{{'labels.buttons.Submit' | translate}}</button>
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
[disabled]="!smsConfigurationForm.valid || smsConfigurationForm.pristine"
|
||||
>
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</mat-card-actions>
|
||||
|
||||
</form>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,27 +1,23 @@
|
||||
<div class="container m-b-20" fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px">
|
||||
<button mat-raised-button color="primary" [routerLink]="['edit']">
|
||||
<fa-icon icon="edit" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Edit' | translate}}
|
||||
{{ 'labels.buttons.Edit' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="container mat-elevation-z8">
|
||||
|
||||
<table mat-table [dataSource]="dataSource" matSort>
|
||||
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.name' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let configuration"> {{ configuration.name | translateKey:'text' }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let configuration">{{ configuration.name | translateKey: 'text' }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="value">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Value' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let configuration"> {{ configuration.value }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Value' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let configuration">{{ configuration.value }}</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,35 +1,36 @@
|
||||
<h1 mat-dialog-title>{{ data.columnName ? ('labels.buttons.Edit' | translate) : ('labels.buttons.Add' | translate) }} {{'labels.inputs.Column' | translate }}</h1>
|
||||
<h1 mat-dialog-title>
|
||||
{{ data.columnName ? ('labels.buttons.Edit' | translate) : ('labels.buttons.Add' | translate) }}
|
||||
{{ 'labels.inputs.Column' | translate }}
|
||||
</h1>
|
||||
|
||||
<mat-dialog-content>
|
||||
|
||||
<form [formGroup]="columnForm">
|
||||
|
||||
<div fxLayout="column">
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.Column Name' | translate }}</mat-label>
|
||||
<input matInput required formControlName="name">
|
||||
<mat-label>{{ 'labels.inputs.Column Name' | translate }}</mat-label>
|
||||
<input matInput required formControlName="name" />
|
||||
<mat-error *ngIf="columnForm.controls.name.hasError('required')">
|
||||
{{'labels.inputs.Column Name' | translate }} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Column Name' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.Column Type' | translate }}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Column Type' | translate }}</mat-label>
|
||||
<mat-select required formControlName="type">
|
||||
<mat-option *ngFor="let columnType of columnTypeData" [value]="columnType.value">
|
||||
{{ columnType.displayValue | translateKey:'inputs' }}
|
||||
{{ columnType.displayValue | translateKey: 'inputs' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field *ngIf="columnForm.value.type === 'String'">
|
||||
<mat-label> {{'labels.inputs.Column Length' | translate }}</mat-label>
|
||||
<input matInput required type="number" formControlName="length">
|
||||
<mat-label> {{ 'labels.inputs.Column Length' | translate }}</mat-label>
|
||||
<input matInput required type="number" formControlName="length" />
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field *ngIf="columnForm.value.type === 'Dropdown'">
|
||||
<mat-label> {{'labels.inputs.Column Code' | translate }}</mat-label>
|
||||
<mat-label> {{ 'labels.inputs.Column Code' | translate }}</mat-label>
|
||||
<mat-select required formControlName="code">
|
||||
<mat-option *ngFor="let columnCode of data.columnCodes" [value]="columnCode.name">
|
||||
{{ columnCode.name }}
|
||||
@@ -38,25 +39,29 @@
|
||||
</mat-form-field>
|
||||
|
||||
<div>
|
||||
<mat-checkbox labelPosition="after" formControlName="mandatory">{{'labels.text.Mandatory' | translate}}</mat-checkbox>
|
||||
<mat-checkbox labelPosition="after" formControlName="mandatory">{{
|
||||
'labels.text.Mandatory' | translate
|
||||
}}</mat-checkbox>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<mat-checkbox labelPosition="after" formControlName="unique">{{'labels.inputs.Unique' | translate}}</mat-checkbox>
|
||||
<mat-checkbox labelPosition="after" formControlName="unique">{{
|
||||
'labels.inputs.Unique' | translate
|
||||
}}</mat-checkbox>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<mat-checkbox labelPosition="after" formControlName="indexed">{{'labels.inputs.Indexed' | translate}}</mat-checkbox>
|
||||
<mat-checkbox labelPosition="after" formControlName="indexed">{{
|
||||
'labels.inputs.Indexed' | translate
|
||||
}}</mat-checkbox>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
</mat-dialog-content>
|
||||
|
||||
<mat-dialog-actions align="end">
|
||||
<button mat-button mat-dialog-close>{{'labels.buttons.Cancel' | translate }}</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!columnForm.valid || columnForm.pristine"
|
||||
(click)="submit()">{{'labels.buttons.Submit' | translate }}</button>
|
||||
<button mat-button mat-dialog-close>{{ 'labels.buttons.Cancel' | translate }}</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!columnForm.valid || columnForm.pristine" (click)="submit()">
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</mat-dialog-actions>
|
||||
|
||||
+117
-64
@@ -1,38 +1,35 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<form #dataTableFormRef [formGroup]="dataTableForm" (ngSubmit)="submit()">
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<mat-form-field fxFlex="40%">
|
||||
<mat-label>{{'labels.inputs.Data Table Name' | translate}}</mat-label>
|
||||
<input matInput required formControlName="datatableName">
|
||||
<mat-label>{{ 'labels.inputs.Data Table Name' | translate }}</mat-label>
|
||||
<input matInput required formControlName="datatableName" />
|
||||
<mat-error *ngIf="dataTableForm.controls.datatableName.hasError('required')">
|
||||
{{'labels.inputs.Data Table Name' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Data Table Name' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="20%">
|
||||
<mat-label>{{'labels.inputs.Entity Type' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Entity Type' | translate }}</mat-label>
|
||||
<mat-select required formControlName="apptableName">
|
||||
<mat-option *ngFor="let appTable of appTableData" [value]="appTable.value">
|
||||
{{ appTable.displayValue | translateKey:'inputs'}}
|
||||
{{ appTable.displayValue | translateKey: 'inputs' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="dataTableForm.controls.apptableName.hasError('required')">
|
||||
{{'labels.inputs.Application Table Name' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Application Table Name' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="20%" *ngIf="showEntitySubType">
|
||||
<mat-label>{{'labels.inputs.Entity SubType' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Entity SubType' | translate }}</mat-label>
|
||||
<mat-select formControlName="entitySubType">
|
||||
<mat-option *ngFor="let entitySubType of entitySubTypeData" [value]="entitySubType.value">
|
||||
{{ entitySubType.displayValue | translateKey:'inputs' }}
|
||||
{{ entitySubType.displayValue | translateKey: 'inputs' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
@@ -41,88 +38,133 @@
|
||||
<mat-label>{{ 'labels.inputs.Savings SubType' | translate }}</mat-label>
|
||||
<mat-select formControlName="entitySubType">
|
||||
<mat-option *ngFor="let savingsSubType of savingsSubTypeData" [value]="savingsSubType.value">
|
||||
{{ savingsSubType.displayValue | translateKey:'inputs'}}
|
||||
{{ savingsSubType.displayValue | translateKey: 'inputs' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
|
||||
<div fxFlex="14%" class="multi-row-wrapper">
|
||||
<mat-checkbox labelPosition="before" formControlName="multiRow" class="multi-row">{{'labels.inputs.Multi Row' | translate }}</mat-checkbox>
|
||||
<mat-checkbox labelPosition="before" formControlName="multiRow" class="multi-row">{{
|
||||
'labels.inputs.Multi Row' | translate
|
||||
}}</mat-checkbox>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<br>
|
||||
<br />
|
||||
|
||||
<div fxLayout="row wrap" fxLayoutGap="60%" fxLayout.lt-md="column">
|
||||
|
||||
<p fxFlex="20%" class="mat-title">{{'labels.inputs.Columns' | translate}}</p>
|
||||
<p fxFlex="20%" class="mat-title">{{ 'labels.inputs.Columns' | translate }}</p>
|
||||
|
||||
<button mat-raised-button fxFlex="20%" type="button" color="primary" (click)="addColumn()">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Add' | translate}} {{'labels.inputs.Columns' | translate}}
|
||||
{{ 'labels.buttons.Add' | translate }} {{ 'labels.inputs.Columns' | translate }}
|
||||
</button>
|
||||
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<br />
|
||||
|
||||
<table mat-table [dataSource]="dataSource" matSort>
|
||||
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{ 'labels.inputs.Name' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let column"> {{ column.columnName }}
|
||||
<fa-icon *ngIf="column.isColumnPrimaryKey" icon="check-circle" size="lg" class="column-mandatory"
|
||||
matTooltip="{{ 'tooltips.Primary Key' | translate}}" matTooltipPosition="right"></fa-icon>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let column">
|
||||
{{ column.columnName }}
|
||||
<fa-icon
|
||||
*ngIf="column.isColumnPrimaryKey"
|
||||
icon="check-circle"
|
||||
size="lg"
|
||||
class="column-mandatory"
|
||||
matTooltip="{{ 'tooltips.Primary Key' | translate }}"
|
||||
matTooltipPosition="right"
|
||||
></fa-icon>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="type">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Type' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let column"> {{ column.columnDisplayType }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let column">{{ column.columnDisplayType }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="length">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Length' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let column"> {{ column.columnLength }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Length' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let column">{{ column.columnLength }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="code">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{ 'labels.inputs.Code' | translate }} </th>
|
||||
<td mat-cell *matCellDef="let column"> {{ column.columnCode }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Code' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let column">{{ column.columnCode }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="mandatory">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.text.Mandatory' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.text.Mandatory' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let column" class="left">
|
||||
<fa-icon *ngIf="!column.isColumnNullable" icon="check-circle" size="lg" class="column-mandatory"
|
||||
matTooltip="{{ 'tooltips.Yes' | translate }}" matTooltipPosition="right"></fa-icon>
|
||||
<fa-icon *ngIf="column.isColumnNullable" icon="times-circle" size="lg" class="not-column-mandatory"
|
||||
matTooltip="{{ 'tooltips.No' | translate }}" matTooltipPosition="right"></fa-icon>
|
||||
<fa-icon
|
||||
*ngIf="!column.isColumnNullable"
|
||||
icon="check-circle"
|
||||
size="lg"
|
||||
class="column-mandatory"
|
||||
matTooltip="{{ 'tooltips.Yes' | translate }}"
|
||||
matTooltipPosition="right"
|
||||
></fa-icon>
|
||||
<fa-icon
|
||||
*ngIf="column.isColumnNullable"
|
||||
icon="times-circle"
|
||||
size="lg"
|
||||
class="not-column-mandatory"
|
||||
matTooltip="{{ 'tooltips.No' | translate }}"
|
||||
matTooltipPosition="right"
|
||||
></fa-icon>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="unique">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header class="center"> {{'labels.inputs.Unique' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header class="center">
|
||||
{{ 'labels.inputs.Unique' | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let column">
|
||||
<fa-icon *ngIf="column.isColumnUnique" icon="check-circle" size="lg" class="column-mandatory"
|
||||
matTooltip="{{ 'tooltips.Yes' | translate }}" matTooltipPosition="right"></fa-icon>
|
||||
<fa-icon *ngIf="!column.isColumnUnique" icon="times-circle" size="lg" class="not-column-mandatory"
|
||||
matTooltip="{{ 'tooltips.No' | translate }}" unique="right"></fa-icon>
|
||||
<fa-icon
|
||||
*ngIf="column.isColumnUnique"
|
||||
icon="check-circle"
|
||||
size="lg"
|
||||
class="column-mandatory"
|
||||
matTooltip="{{ 'tooltips.Yes' | translate }}"
|
||||
matTooltipPosition="right"
|
||||
></fa-icon>
|
||||
<fa-icon
|
||||
*ngIf="!column.isColumnUnique"
|
||||
icon="times-circle"
|
||||
size="lg"
|
||||
class="not-column-mandatory"
|
||||
matTooltip="{{ 'tooltips.No' | translate }}"
|
||||
unique="right"
|
||||
></fa-icon>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="indexed">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header class="center"> {{'labels.inputs.Indexed' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header class="center">
|
||||
{{ 'labels.inputs.Indexed' | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let column">
|
||||
<fa-icon *ngIf="column.isColumnIndexed" icon="check-circle" size="lg" class="column-mandatory"
|
||||
matTooltip="{{ 'tooltips.Yes' | translate }}" matTooltipPosition="right"></fa-icon>
|
||||
<fa-icon *ngIf="!column.isColumnIndexed" icon="times-circle" size="lg" class="not-column-mandatory"
|
||||
matTooltip="{{ 'tooltips.No' | translate }}" matTooltipPosition="right"></fa-icon>
|
||||
<fa-icon
|
||||
*ngIf="column.isColumnIndexed"
|
||||
icon="check-circle"
|
||||
size="lg"
|
||||
class="column-mandatory"
|
||||
matTooltip="{{ 'tooltips.Yes' | translate }}"
|
||||
matTooltipPosition="right"
|
||||
></fa-icon>
|
||||
<fa-icon
|
||||
*ngIf="!column.isColumnIndexed"
|
||||
icon="times-circle"
|
||||
size="lg"
|
||||
class="not-column-mandatory"
|
||||
matTooltip="{{ 'tooltips.No' | translate }}"
|
||||
matTooltipPosition="right"
|
||||
></fa-icon>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{ 'labels.inputs.Actions' | translate }} </th>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Actions' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let column" fxLayoutGap="15%">
|
||||
<button type="button" color="primary" mat-icon-button (click)="editColumn(column)">
|
||||
<fa-icon icon="edit" size="lg"></fa-icon>
|
||||
@@ -134,33 +176,44 @@
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
<mat-paginator [pageSizeOptions]="[10, 25, 50, 100]" showFirstLastButtons></mat-paginator>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">{{'labels.buttons.Cancel' | translate }}</button>
|
||||
<button mat-raised-button color="primary"
|
||||
[disabled]="!dataTableForm.valid || columnData.length === 0">{{'labels.buttons.Submit' | translate }}</button>
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!dataTableForm.valid || columnData.length === 0">
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</mat-card-actions>
|
||||
|
||||
</form>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
<ng-template #templateDataTableFormRef let-popover="popover">
|
||||
<h2>{{'labels.buttons.Create Datatable' | translate }}</h2>
|
||||
<p class="mw400">{{'labels.text.Filling Details' | translate }} <a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/52592760/Manage+Data+Tables" target="_blank">{{'labels.inputs.Manage Datatables' | translate}}</a></p>
|
||||
<h2>{{ 'labels.buttons.Create Datatable' | translate }}</h2>
|
||||
<p class="mw400">
|
||||
{{ 'labels.text.Filling Details' | translate }}
|
||||
<a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/52592760/Manage+Data+Tables" target="_blank">{{
|
||||
'labels.inputs.Manage Datatables' | translate
|
||||
}}</a>
|
||||
</p>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<button mat-raised-button color="warn" (click)="popover.close();configurationWizardService.closeConfigWizard()">{{'labels.buttons.Close' | translate }}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();">{{'labels.buttons.Create Datatable' | translate }}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();previousStep()">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();nextStep()">{{'labels.buttons.Next' | translate }}</button>
|
||||
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
|
||||
{{ 'labels.buttons.Close' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close()">
|
||||
{{ 'labels.buttons.Create Datatable' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); previousStep()">
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); nextStep()">
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
@@ -1,109 +1,154 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<form [formGroup]="dataTableForm" (ngSubmit)="submit()">
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<mat-form-field fxFlex="40%">
|
||||
<mat-label>{{'labels.inputs.Data Table Name' | translate}}</mat-label>
|
||||
<input matInput required formControlName="datatableName">
|
||||
<mat-label>{{ 'labels.inputs.Data Table Name' | translate }}</mat-label>
|
||||
<input matInput required formControlName="datatableName" />
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="20%">
|
||||
<mat-label>{{'labels.inputs.Application Table Name' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Application Table Name' | translate }}</mat-label>
|
||||
<mat-select required formControlName="apptableName">
|
||||
<mat-option *ngFor="let appTable of appTableData" [value]="appTable.value">
|
||||
{{ appTable.displayValue | translateKey:'inputs'}}
|
||||
{{ appTable.displayValue | translateKey: 'inputs' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="dataTableForm.controls.apptableName.hasError('required')">
|
||||
{{'labels.inputs.Application Table Name' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Application Table Name' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="20%" *ngIf="showEntitySubType">
|
||||
<mat-label>{{'labels.inputs.Entity SubType' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Entity SubType' | translate }}</mat-label>
|
||||
<mat-select formControlName="entitySubType">
|
||||
<mat-option *ngFor="let entitySubType of entitySubTypeData" [value]="entitySubType.value">
|
||||
{{ entitySubType.displayValue | translateKey:'inputs'}}
|
||||
{{ entitySubType.displayValue | translateKey: 'inputs' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<br />
|
||||
|
||||
<div fxLayout="row wrap" fxLayoutGap="60%" fxLayout.lt-md="column">
|
||||
|
||||
<p fxFlex="20%" class="mat-title">{{'labels.inputs.Columns' | translate}}</p>
|
||||
<p fxFlex="20%" class="mat-title">{{ 'labels.inputs.Columns' | translate }}</p>
|
||||
|
||||
<button mat-raised-button fxFlex="20%" type="button" color="primary" (click)="addColumn()">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Add' | translate}} {{'labels.inputs.Columns' | translate}}
|
||||
{{ 'labels.buttons.Add' | translate }} {{ 'labels.inputs.Columns' | translate }}
|
||||
</button>
|
||||
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<br />
|
||||
|
||||
<table mat-table [dataSource]="dataSource" matSort>
|
||||
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header class="center"> {{ 'labels.inputs.Name' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let column"> {{ column.columnName }}</td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header class="center">
|
||||
{{ 'labels.inputs.Name' | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let column">{{ column.columnName }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="type">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header class="center"> {{'labels.inputs.Type' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let column"> {{ column.columnDisplayType }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header class="center">
|
||||
{{ 'labels.inputs.Type' | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let column">{{ column.columnDisplayType }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="length">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header class="center"> {{'labels.inputs.Length' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let column"> {{ column.columnLength }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header class="center">
|
||||
{{ 'labels.inputs.Length' | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let column">{{ column.columnLength }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="code">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header class="center"> {{ 'labels.inputs.Code' | translate }} </th>
|
||||
<td mat-cell *matCellDef="let column"> {{ column.columnCode }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header class="center">
|
||||
{{ 'labels.inputs.Code' | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let column">{{ column.columnCode }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="mandatory">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header class="center"> {{'labels.text.Mandatory' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header class="center">
|
||||
{{ 'labels.text.Mandatory' | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let column">
|
||||
<fa-icon *ngIf="!column.isColumnNullable" icon="check-circle" size="lg" class="column-mandatory"
|
||||
matTooltip="{{ 'tooltips.Yes' | translate }}" matTooltipPosition="right"></fa-icon>
|
||||
<fa-icon *ngIf="column.isColumnNullable" icon="times-circle" size="lg" class="not-column-mandatory"
|
||||
matTooltip="{{ 'tooltips.No' | translate }}" matTooltipPosition="right"></fa-icon>
|
||||
<fa-icon
|
||||
*ngIf="!column.isColumnNullable"
|
||||
icon="check-circle"
|
||||
size="lg"
|
||||
class="column-mandatory"
|
||||
matTooltip="{{ 'tooltips.Yes' | translate }}"
|
||||
matTooltipPosition="right"
|
||||
></fa-icon>
|
||||
<fa-icon
|
||||
*ngIf="column.isColumnNullable"
|
||||
icon="times-circle"
|
||||
size="lg"
|
||||
class="not-column-mandatory"
|
||||
matTooltip="{{ 'tooltips.No' | translate }}"
|
||||
matTooltipPosition="right"
|
||||
></fa-icon>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="unique">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header class="center"> {{'labels.inputs.Unique' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header class="center">
|
||||
{{ 'labels.inputs.Unique' | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let column">
|
||||
<fa-icon *ngIf="column.isColumnUnique" icon="check-circle" size="lg" class="column-mandatory"
|
||||
matTooltip="{{ 'tooltips.Yes' | translate }}" matTooltipPosition="right"></fa-icon>
|
||||
<fa-icon *ngIf="!column.isColumnUnique" icon="times-circle" size="lg" class="not-column-mandatory"
|
||||
matTooltip="{{ 'tooltips.No' | translate }}" unique="right"></fa-icon>
|
||||
<fa-icon
|
||||
*ngIf="column.isColumnUnique"
|
||||
icon="check-circle"
|
||||
size="lg"
|
||||
class="column-mandatory"
|
||||
matTooltip="{{ 'tooltips.Yes' | translate }}"
|
||||
matTooltipPosition="right"
|
||||
></fa-icon>
|
||||
<fa-icon
|
||||
*ngIf="!column.isColumnUnique"
|
||||
icon="times-circle"
|
||||
size="lg"
|
||||
class="not-column-mandatory"
|
||||
matTooltip="{{ 'tooltips.No' | translate }}"
|
||||
unique="right"
|
||||
></fa-icon>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="indexed">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header class="center"> {{'labels.inputs.Indexed' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header class="center">
|
||||
{{ 'labels.inputs.Indexed' | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let column">
|
||||
<fa-icon *ngIf="column.isColumnIndexed" icon="check-circle" size="lg" class="column-mandatory"
|
||||
matTooltip="{{ 'tooltips.Yes' | translate }}" matTooltipPosition="right"></fa-icon>
|
||||
<fa-icon *ngIf="!column.isColumnIndexed" icon="times-circle" size="lg" class="not-column-mandatory"
|
||||
matTooltip="{{ 'tooltips.No' | translate }}" matTooltipPosition="right"></fa-icon>
|
||||
<fa-icon
|
||||
*ngIf="column.isColumnIndexed"
|
||||
icon="check-circle"
|
||||
size="lg"
|
||||
class="column-mandatory"
|
||||
matTooltip="{{ 'tooltips.Yes' | translate }}"
|
||||
matTooltipPosition="right"
|
||||
></fa-icon>
|
||||
<fa-icon
|
||||
*ngIf="!column.isColumnIndexed"
|
||||
icon="times-circle"
|
||||
size="lg"
|
||||
class="not-column-mandatory"
|
||||
matTooltip="{{ 'tooltips.No' | translate }}"
|
||||
matTooltipPosition="right"
|
||||
></fa-icon>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header class="center"> {{ 'labels.inputs.Actions' | translate }} </th>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header class="center">
|
||||
{{ 'labels.inputs.Actions' | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let column" fxLayoutGap="15%" class="center">
|
||||
<button type="button" color="primary" mat-icon-button (click)="editColumn(column)" *ngIf="!column.system">
|
||||
<fa-icon icon="edit" size="lg"></fa-icon>
|
||||
@@ -115,22 +160,20 @@
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
<mat-paginator [pageSizeOptions]="[10, 25]" showFirstLastButtons></mat-paginator>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">{{'labels.buttons.Cancel' | translate }}</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!isFormEdited"
|
||||
*mifosxHasPermission="'UPDATE_DATATABLE'">{{'labels.buttons.Submit' | translate }}</button>
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!isFormEdited" *mifosxHasPermission="'UPDATE_DATATABLE'">
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</mat-card-actions>
|
||||
|
||||
</form>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -2,73 +2,106 @@
|
||||
<div #createDatatableRef class="in-block">
|
||||
<button mat-raised-button color="primary" [routerLink]="['create']" *mifosxHasPermission="'CREATE_DATATABLE'">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Create Data Table' | translate}}
|
||||
{{ 'labels.buttons.Create Data Table' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<div #filter fxLayout="row" fxLayoutGap="20px">
|
||||
<mat-form-field fxFlex>
|
||||
<mat-label>{{'labels.inputs.Filter' | translate}}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)">
|
||||
<mat-label>{{ 'labels.inputs.Filter' | translate }}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)" />
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
<div #datatablesList class="mat-elevation-z8">
|
||||
|
||||
<table mat-table [dataSource]="dataSource" matSort>
|
||||
|
||||
<ng-container matColumnDef="registeredTableName">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Data Table Name' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let dataTable"> {{ dataTable.registeredTableName }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Data Table Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let dataTable">{{ dataTable.registeredTableName }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="applicationTableName">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Associated With' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let dataTable"> {{ dataTable.applicationTableName }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Associated With' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let dataTable">{{ dataTable.applicationTableName }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="entitySubType">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Sub Type' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let dataTable"> {{ dataTable.entitySubType }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Sub Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let dataTable">{{ dataTable.entitySubType }}</td>
|
||||
</ng-container>
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;" [routerLink]="[row.registeredTableName]" class="select-row"></tr>
|
||||
|
||||
<tr
|
||||
mat-row
|
||||
*matRowDef="let row; columns: displayedColumns"
|
||||
[routerLink]="[row.registeredTableName]"
|
||||
class="select-row"
|
||||
></tr>
|
||||
</table>
|
||||
|
||||
<mat-paginator [pageSizeOptions]="[10, 25, 50, 100]" showFirstLastButtons></mat-paginator>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<ng-template #templateCreateDatatableRef let-popover="popover">
|
||||
<h2>{{'labels.buttons.Create Data Table' | translate}}</h2>
|
||||
<p class="mw300">{{'labels.text.Launch a page that create new data table' | translate}}</p>
|
||||
<h2>{{ 'labels.buttons.Create Data Table' | translate }}</h2>
|
||||
<p class="mw300">{{ 'labels.text.Launch a page that create new data table' | translate }}</p>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<button mat-raised-button color="warn" (click)="popover.close();configurationWizardService.closeConfigWizard()">{{'labels.buttons.Close' | translate }}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();previousStep();">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();showPopover(templateFilter,filter,'bottom', true);">{{'labels.buttons.Next' | translate }}</button>
|
||||
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
|
||||
{{ 'labels.buttons.Close' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); previousStep()">
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="popover.close(); showPopover(templateFilter, filter, 'bottom', true)"
|
||||
>
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #templateFilter let-popover="popover">
|
||||
<h4>{{'labels.heading.Search bar to filter datatables' | translate}}</h4>
|
||||
<h4>{{ 'labels.heading.Search bar to filter datatables' | translate }}</h4>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<button mat-raised-button color="warn" (click)="popover.close();configurationWizardService.closeConfigWizard()">{{'labels.buttons.Close' | translate }}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();showPopover(templateCreateDatatableRef,createDatatableRef,'bottom', true);">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();showPopover(templateDatatablesList,datatablesList,'top', true);">{{'labels.buttons.Next' | translate }}</button>
|
||||
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
|
||||
{{ 'labels.buttons.Close' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="popover.close(); showPopover(templateCreateDatatableRef, createDatatableRef, 'bottom', true)"
|
||||
>
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="popover.close(); showPopover(templateDatatablesList, datatablesList, 'top', true)"
|
||||
>
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #templateDatatablesList let-popover="popover">
|
||||
<h4>{{'labels.heading.List of all currently available data tables' | translate}}</h4>
|
||||
<h4>{{ 'labels.heading.List of all currently available data tables' | translate }}</h4>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<button mat-raised-button color="warn" (click)="popover.close();configurationWizardService.closeConfigWizard()">{{ 'labels.buttons.Close' | translate }}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();showPopover(templateFilter,filter,'bottom', true);">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();nextStep();">{{'labels.buttons.Next' | translate }}</button>
|
||||
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
|
||||
{{ 'labels.buttons.Close' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="popover.close(); showPopover(templateFilter, filter, 'bottom', true)"
|
||||
>
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); nextStep()">
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
@@ -1,97 +1,126 @@
|
||||
<div class="container m-b-20" fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px">
|
||||
|
||||
<button mat-raised-button color="primary" [routerLink]="['edit']" *mifosxHasPermission="'UPDATE_DATATABLE'">
|
||||
<fa-icon icon="edit" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Edit' | translate }}
|
||||
{{ 'labels.buttons.Edit' | translate }}
|
||||
</button>
|
||||
|
||||
<button mat-raised-button color="warn" (click)="delete()" *mifosxHasPermission="'DELETE_DATATABLE'">
|
||||
<fa-icon icon="trash" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Delete' | translate }}
|
||||
{{ 'labels.buttons.Delete' | translate }}
|
||||
</button>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="container m-b-15" fxLayoutAlign="start">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="row wrap" fxLayout.lt-md="column" fxLayoutGap="12px">
|
||||
<div class="mat-body-strong">
|
||||
{{'labels.inputs.Associated With' | translate}}
|
||||
{{ 'labels.inputs.Associated With' | translate }}
|
||||
</div>
|
||||
<div>
|
||||
{{ dataTableData.applicationTableName }}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="container mat-elevation-z8">
|
||||
|
||||
<table mat-table [dataSource]="dataSource" matSort>
|
||||
|
||||
<ng-container matColumnDef="columnName">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header class="center"> {{'labels.inputs.Field Name' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let dataTableColumn"> {{ dataTableColumn.columnName }}</td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header class="center">
|
||||
{{ 'labels.inputs.Field Name' | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let dataTableColumn">{{ dataTableColumn.columnName }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="columnDisplayType">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header class="center"> {{'labels.inputs.Type' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let dataTable"> {{ dataTable.columnDisplayType }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header class="center">{{ 'labels.inputs.Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let dataTable">{{ dataTable.columnDisplayType }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="columnLength">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header class="center"> {{'labels.inputs.Length' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let dataTable"> {{ dataTable.columnLength }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header class="center">{{ 'labels.inputs.Length' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let dataTable">{{ dataTable.columnLength }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="columnCode">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header class="center"> {{ 'labels.inputs.Code' | translate }} </th>
|
||||
<td mat-cell *matCellDef="let dataTable"> {{ dataTable.columnCode }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header class="center">{{ 'labels.inputs.Code' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let dataTable">{{ dataTable.columnCode }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="isColumnNullable">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header class="center"> {{'labels.text.Mandatory' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header class="center">
|
||||
{{ 'labels.text.Mandatory' | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let dataTable">
|
||||
<fa-icon *ngIf="!dataTable.isColumnNullable" icon="check-circle" size="lg" class="column-mandatory"
|
||||
matTooltip="{{ 'tooltips.Yes' | translate }}" matTooltipPosition="right"></fa-icon>
|
||||
<fa-icon *ngIf="dataTable.isColumnNullable" icon="times-circle" size="lg" class="not-column-mandatory"
|
||||
matTooltip="{{ 'tooltips.No' | translate }}" matTooltipPosition="right"></fa-icon>
|
||||
<fa-icon
|
||||
*ngIf="!dataTable.isColumnNullable"
|
||||
icon="check-circle"
|
||||
size="lg"
|
||||
class="column-mandatory"
|
||||
matTooltip="{{ 'tooltips.Yes' | translate }}"
|
||||
matTooltipPosition="right"
|
||||
></fa-icon>
|
||||
<fa-icon
|
||||
*ngIf="dataTable.isColumnNullable"
|
||||
icon="times-circle"
|
||||
size="lg"
|
||||
class="not-column-mandatory"
|
||||
matTooltip="{{ 'tooltips.No' | translate }}"
|
||||
matTooltipPosition="right"
|
||||
></fa-icon>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="isColumnUnique">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header class="center"> {{'labels.inputs.Unique' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header class="center">{{ 'labels.inputs.Unique' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let dataTable">
|
||||
<fa-icon *ngIf="dataTable.isColumnUnique" icon="check-circle" size="lg" class="column-mandatory"
|
||||
matTooltip="{{ 'tooltips.Yes' | translate }}" matTooltipPosition="right"></fa-icon>
|
||||
<fa-icon *ngIf="!dataTable.isColumnUnique" icon="times-circle" size="lg" class="not-column-mandatory"
|
||||
matTooltip="{{ 'tooltips.No' | translate }}" matTooltipPosition="right"></fa-icon>
|
||||
<fa-icon
|
||||
*ngIf="dataTable.isColumnUnique"
|
||||
icon="check-circle"
|
||||
size="lg"
|
||||
class="column-mandatory"
|
||||
matTooltip="{{ 'tooltips.Yes' | translate }}"
|
||||
matTooltipPosition="right"
|
||||
></fa-icon>
|
||||
<fa-icon
|
||||
*ngIf="!dataTable.isColumnUnique"
|
||||
icon="times-circle"
|
||||
size="lg"
|
||||
class="not-column-mandatory"
|
||||
matTooltip="{{ 'tooltips.No' | translate }}"
|
||||
matTooltipPosition="right"
|
||||
></fa-icon>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="isColumnIndexed">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header class="center"> {{'labels.inputs.Indexed' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header class="center">
|
||||
{{ 'labels.inputs.Indexed' | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let dataTable">
|
||||
<fa-icon *ngIf="dataTable.isColumnIndexed" icon="check-circle" size="lg" class="column-mandatory"
|
||||
matTooltip="{{ 'tooltips.Yes' | translate }}" matTooltipPosition="right"></fa-icon>
|
||||
<fa-icon *ngIf="!dataTable.isColumnIndexed" icon="times-circle" size="lg" class="not-column-mandatory"
|
||||
matTooltip="{{ 'tooltips.No' | translate }}" matTooltipPosition="right"></fa-icon>
|
||||
<fa-icon
|
||||
*ngIf="dataTable.isColumnIndexed"
|
||||
icon="check-circle"
|
||||
size="lg"
|
||||
class="column-mandatory"
|
||||
matTooltip="{{ 'tooltips.Yes' | translate }}"
|
||||
matTooltipPosition="right"
|
||||
></fa-icon>
|
||||
<fa-icon
|
||||
*ngIf="!dataTable.isColumnIndexed"
|
||||
icon="times-circle"
|
||||
size="lg"
|
||||
class="not-column-mandatory"
|
||||
matTooltip="{{ 'tooltips.No' | translate }}"
|
||||
matTooltipPosition="right"
|
||||
></fa-icon>
|
||||
</td>
|
||||
</ng-container>
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
<mat-paginator [pageSizeOptions]="[10, 25, 50, 100]" showFirstLastButtons></mat-paginator>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,46 +1,46 @@
|
||||
<div class="container">
|
||||
|
||||
<div #filter fxLayout="row">
|
||||
<mat-form-field fxFlex>
|
||||
<mat-label>{{'labels.inputs.Filter' | translate}}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)">
|
||||
<mat-label>{{ 'labels.inputs.Filter' | translate }}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)" />
|
||||
</mat-form-field>
|
||||
|
||||
<div class="action-button" fxLayoutGap="25px">
|
||||
<button mat-raised-button color="primary" (click)="applyChanges()"
|
||||
[disabled]="!existAnyUpdate" *mifosxHasPermission="'UPDATE_EXTERNAL_EVENT_CONFIGURATION'">
|
||||
{{"labels.buttons.Apply Changes" | translate}}
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="applyChanges()"
|
||||
[disabled]="!existAnyUpdate"
|
||||
*mifosxHasPermission="'UPDATE_EXTERNAL_EVENT_CONFIGURATION'"
|
||||
>
|
||||
{{ 'labels.buttons.Apply Changes' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div #eventsTable class="mat-elevation-z8 table-container">
|
||||
|
||||
<table mat-table [dataSource]="dataSource" matSort>
|
||||
|
||||
<ng-container matColumnDef="eventType">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Event Type" | translate}} </th>
|
||||
<td mat-cell *matCellDef="let event"> {{ event.type | translateKey:'text'}} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Event Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let event">{{ event.type | translateKey: 'text' }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="status">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Status" | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Status' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let event">
|
||||
<mat-slide-toggle [(ngModel)]="event.enabled" name="{{event.type}}" (click)="toggleStatus(event)">
|
||||
<mat-slide-toggle [(ngModel)]="event.enabled" name="{{ event.type }}" (click)="toggleStatus(event)">
|
||||
<div [className]="event.enabled ? 'enabled' : 'disabled'">
|
||||
<span *ngIf="event.enabled">{{'labels.inputs.Enabled' | translate}}</span>
|
||||
<span *ngIf="!event.enabled">{{'labels.inputs.Disabled' | translate}}</span>
|
||||
<span *ngIf="event.enabled">{{ 'labels.inputs.Enabled' | translate }}</span>
|
||||
<span *ngIf="!event.enabled">{{ 'labels.inputs.Disabled' | translate }}</span>
|
||||
</div>
|
||||
</mat-slide-toggle>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;" class="select-row"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns" class="select-row"></tr>
|
||||
</table>
|
||||
|
||||
<mat-paginator [pageSizeOptions]="[10, 25, 50, 100]" showFirstLastButtons></mat-paginator>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,20 +1,18 @@
|
||||
<h1 mat-dialog-title>{{"labels.buttons.Add Event" | translate}}</h1>
|
||||
<h1 mat-dialog-title>{{ 'labels.buttons.Add Event' | translate }}</h1>
|
||||
|
||||
<mat-dialog-content>
|
||||
|
||||
<form [formGroup]="eventForm">
|
||||
|
||||
<div fxLayout="column">
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{ 'labels.inputs.Select Grouping' | translate }}</mat-label>
|
||||
<mat-select required formControlName="grouping">
|
||||
<mat-option *ngFor="let grouping of data.groupings" [value]="grouping.name">
|
||||
{{ grouping.name | translateKey:'catalogs' }}
|
||||
{{ grouping.name | translateKey: 'catalogs' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="eventForm.controls.grouping.hasError('required')">
|
||||
{{ 'labels.inputs.Grouping' | translate }} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Grouping' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
@@ -26,7 +24,8 @@
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="eventForm.controls.entity.hasError('required')">
|
||||
{{ 'labels.inputs.Entity' | translate }} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Entity' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
@@ -38,18 +37,17 @@
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="eventForm.controls.action.hasError('required')">
|
||||
{{'labels.inputs.Action' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Action' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
</mat-dialog-content>
|
||||
|
||||
<mat-dialog-actions align="end">
|
||||
<button mat-button mat-dialog-close>{{'labels.buttons.Cancel' | translate}}</button>
|
||||
<button mat-raised-button color="primary"
|
||||
[disabled]="!eventForm.valid || eventForm.pristine" (click)="submit()">{{'labels.buttons.Submit' | translate}}</button>
|
||||
<button mat-button mat-dialog-close>{{ 'labels.buttons.Cancel' | translate }}</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!eventForm.valid || eventForm.pristine" (click)="submit()">
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</mat-dialog-actions>
|
||||
|
||||
@@ -1,159 +1,158 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<form [formGroup]="hookForm" (ngSubmit)="submit()">
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="row wrap" fxLayout.lt-md="column" fxLayoutGap="4%">
|
||||
|
||||
<mat-form-field fxFlex="40%">
|
||||
<mat-label>{{"labels.inputs.Hook Template" | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Hook Template' | translate }}</mat-label>
|
||||
<mat-select required formControlName="name">
|
||||
<mat-option *ngFor="let hookTemplate of hooksTemplateData.templates" [value]="hookTemplate.name">
|
||||
{{ hookTemplate.name | translateKey:'text' }}
|
||||
{{ hookTemplate.name | translateKey: 'text' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="hookForm.controls.name.hasError('required')">
|
||||
{{"labels.inputs.Hook Template" | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Hook Template' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="40%">
|
||||
<mat-label>{{"labels.inputs.Display Name" | translate}}</mat-label>
|
||||
<input matInput required formControlName="displayName">
|
||||
<mat-label>{{ 'labels.inputs.Display Name' | translate }}</mat-label>
|
||||
<input matInput required formControlName="displayName" />
|
||||
<mat-error *ngIf="hookForm.controls.displayName.hasError('required')">
|
||||
{{"labels.inputs.Display Name" | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Display Name' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<div class="is-active-wrapper">
|
||||
<mat-checkbox class="is-active" fxFlex="10%" labelPosition="before" formControlName="isActive">
|
||||
{{'labels.inputs.Is Active' | translate}}?
|
||||
{{ 'labels.inputs.Is Active' | translate }}?
|
||||
</mat-checkbox>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="row wrap" fxLayout.lt-md="column" fxLayoutGap="4%">
|
||||
|
||||
<mat-form-field fxFlex="48%" *ngIf="hookForm.controls.name.value === 'Web'">
|
||||
<mat-label>{{'labels.inputs.Content Type' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Content Type' | translate }}</mat-label>
|
||||
<mat-select required formControlName="contentType">
|
||||
<mat-option [value]="'json'">
|
||||
{{'labels.inputs.json' | translate}}
|
||||
{{ 'labels.inputs.json' | translate }}
|
||||
</mat-option>
|
||||
<mat-option [value]="'form'">
|
||||
{{'labels.inputs.form' | translate}}
|
||||
{{ 'labels.inputs.form' | translate }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="hookForm.controls.contentType.hasError('required')">
|
||||
{{'labels.inputs.Content Type' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Content Type' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%" *ngIf="hookForm.controls.name.value === 'SMS Bridge'">
|
||||
<mat-label>{{'labels.inputs.Phone Number' | translate}}</mat-label>
|
||||
<input matInput type="tel" #input maxlength="10" required formControlName="phoneNumber">
|
||||
<mat-hint align="end">{{input.value?.length || 0}}/10</mat-hint>
|
||||
<mat-label>{{ 'labels.inputs.Phone Number' | translate }}</mat-label>
|
||||
<input matInput type="tel" #input maxlength="10" required formControlName="phoneNumber" />
|
||||
<mat-hint align="end">{{ input.value?.length || 0 }}/10</mat-hint>
|
||||
<mat-error *ngIf="hookForm.controls.phoneNumber.hasError('required')">
|
||||
{{'labels.inputs.Payload URL' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Payload URL' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Payload URL' | translate}}</mat-label>
|
||||
<input matInput required formControlName="payloadUrl">
|
||||
<mat-label>{{ 'labels.inputs.Payload URL' | translate }}</mat-label>
|
||||
<input matInput required formControlName="payloadUrl" />
|
||||
<mat-error *ngIf="hookForm.controls.payloadUrl.hasError('required')">
|
||||
{{'labels.inputs.Payload URL' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Payload URL' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="row wrap" fxLayout.lt-md="column" fxLayoutGap="4%"
|
||||
*ngIf="hookForm.controls.name.value === 'SMS Bridge'">
|
||||
|
||||
<div
|
||||
fxLayout="row wrap"
|
||||
fxLayout.lt-md="column"
|
||||
fxLayoutGap="4%"
|
||||
*ngIf="hookForm.controls.name.value === 'SMS Bridge'"
|
||||
>
|
||||
<mat-form-field fxFlex="30%">
|
||||
<mat-label>{{'labels.inputs.SMS Provider' | translate}}</mat-label>
|
||||
<input matInput required formControlName="smsProvider">
|
||||
<mat-label>{{ 'labels.inputs.SMS Provider' | translate }}</mat-label>
|
||||
<input matInput required formControlName="smsProvider" />
|
||||
<mat-error *ngIf="hookForm.controls.smsProvider.hasError('required')">
|
||||
{{'labels.inputs.SMS Provider' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.SMS Provider' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="30%">
|
||||
<mat-label>{{'labels.inputs.SMS Provider Account ID' | translate}}</mat-label>
|
||||
<input matInput required formControlName="smsProviderAccountId">
|
||||
<mat-label>{{ 'labels.inputs.SMS Provider Account ID' | translate }}</mat-label>
|
||||
<input matInput required formControlName="smsProviderAccountId" />
|
||||
<mat-error *ngIf="hookForm.controls.smsProviderAccountId.hasError('required')">
|
||||
{{'labels.inputs.SMS Provider Account ID' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.SMS Provider Account ID' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="30%">
|
||||
<mat-label>{{'labels.inputs.SMS Provider Token' | translate}}</mat-label>
|
||||
<input matInput required formControlName="smsProviderToken">
|
||||
<mat-label>{{ 'labels.inputs.SMS Provider Token' | translate }}</mat-label>
|
||||
<input matInput required formControlName="smsProviderToken" />
|
||||
<mat-error *ngIf="hookForm.controls.smsProviderToken.hasError('required')">
|
||||
{{'labels.inputs.SMS Provider Token' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.SMS Provider Token' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<br />
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<br>
|
||||
<br />
|
||||
|
||||
<div fxLayout="row wrap" fxLayoutGap="60%" fxLayout.lt-md="column">
|
||||
|
||||
<p fxFlex="20%" class="mat-title">{{'labels.inputs.Events' | translate}}</p>
|
||||
<p fxFlex="20%" class="mat-title">{{ 'labels.inputs.Events' | translate }}</p>
|
||||
|
||||
<button mat-raised-button fxFlex="20%" type="button" color="primary" (click)="addEvent()">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Add' | translate}} {{'labels.inputs.Events' | translate}}
|
||||
{{ 'labels.buttons.Add' | translate }} {{ 'labels.inputs.Events' | translate }}
|
||||
</button>
|
||||
|
||||
</div>
|
||||
|
||||
<table mat-table [dataSource]="dataSource" matSort>
|
||||
|
||||
<ng-container matColumnDef="entityName">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Entity Name' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let event"> {{ event.entityName }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Entity Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let event">{{ event.entityName }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actionName">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{ 'labels.inputs.Action' | translate }} {{ 'labels.inputs.Name' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let event"> {{ event.actionName }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>
|
||||
{{ 'labels.inputs.Action' | translate }} {{ 'labels.inputs.Name' | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let event">{{ event.actionName }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Actions' | translate }} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Actions' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let i = index" fxLayoutGap="15%">
|
||||
<button type="button" fxFlex="8%" color="warn" mat-icon-button
|
||||
(click)="deleteEvent(i)">
|
||||
<button type="button" fxFlex="8%" color="warn" mat-icon-button (click)="deleteEvent(i)">
|
||||
<fa-icon icon="trash" size="lg"></fa-icon>
|
||||
</button>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">{{ 'labels.buttons.Cancel' | translate}}</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!hookForm.valid" *mifosxHasPermission="'CREATE_HOOK'">{{ 'labels.buttons.Submit' | translate}}</button>
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!hookForm.valid" *mifosxHasPermission="'CREATE_HOOK'">
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</mat-card-actions>
|
||||
|
||||
</form>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,159 +1,161 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<form [formGroup]="hookForm" (ngSubmit)="submit()">
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="row wrap" fxLayout.lt-md="column" fxLayoutGap="4%">
|
||||
|
||||
<mat-form-field fxFlex="40%">
|
||||
<mat-label>{{"labels.inputs.Hook Template" | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Hook Template' | translate }}</mat-label>
|
||||
<mat-select required formControlName="name">
|
||||
<mat-option *ngFor="let hookTemplate of hooksTemplateData.templates" [value]="hookTemplate.name">
|
||||
{{ hookTemplate.name | translateKey:'text'}}
|
||||
{{ hookTemplate.name | translateKey: 'text' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="hookForm.controls.name.hasError('required')">
|
||||
{{"labels.inputs.Hook Template" | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Hook Template' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="40%">
|
||||
<mat-label>{{"labels.inputs.Display Name" | translate}}</mat-label>
|
||||
<input matInput required formControlName="displayName">
|
||||
<mat-label>{{ 'labels.inputs.Display Name' | translate }}</mat-label>
|
||||
<input matInput required formControlName="displayName" />
|
||||
<mat-error *ngIf="hookForm.controls.displayName.hasError('required')">
|
||||
{{"labels.inputs.Display Name" | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Display Name' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<div class="is-active-wrapper">
|
||||
<mat-checkbox class="is-active" fxFlex="10%" labelPosition="before" formControlName="isActive">
|
||||
{{'labels.inputs.Is Active' | translate}}?
|
||||
{{ 'labels.inputs.Is Active' | translate }}?
|
||||
</mat-checkbox>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="row wrap" fxLayout.lt-md="column" fxLayoutGap="4%">
|
||||
|
||||
<mat-form-field fxFlex="48%" *ngIf="hookForm.controls.name.value === 'Web'">
|
||||
<mat-label>{{'labels.inputs.Content Type' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Content Type' | translate }}</mat-label>
|
||||
<mat-select required formControlName="contentType">
|
||||
<mat-option [value]="'json'">
|
||||
{{'labels.inputs.json' | translate}}
|
||||
{{ 'labels.inputs.json' | translate }}
|
||||
</mat-option>
|
||||
<mat-option [value]="'form'">
|
||||
{{'labels.inputs.form' | translate}}
|
||||
{{ 'labels.inputs.form' | translate }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="hookForm.controls.contentType.hasError('required')">
|
||||
{{'labels.inputs.Content Type' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Content Type' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%" *ngIf="hookForm.controls.name.value === 'SMS Bridge'">
|
||||
<mat-label>{{'labels.inputs.Phone Number' | translate}}</mat-label>
|
||||
<input matInput type="tel" #input maxlength="10" required formControlName="phoneNumber">
|
||||
<mat-hint align="end">{{input.value?.length || 0}}/10</mat-hint>
|
||||
<mat-label>{{ 'labels.inputs.Phone Number' | translate }}</mat-label>
|
||||
<input matInput type="tel" #input maxlength="10" required formControlName="phoneNumber" />
|
||||
<mat-hint align="end">{{ input.value?.length || 0 }}/10</mat-hint>
|
||||
<mat-error *ngIf="hookForm.controls.phoneNumber.hasError('required')">
|
||||
{{'labels.inputs.Payload URL' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Payload URL' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Payload URL' | translate}}</mat-label>
|
||||
<input matInput required formControlName="payloadUrl">
|
||||
<mat-label>{{ 'labels.inputs.Payload URL' | translate }}</mat-label>
|
||||
<input matInput required formControlName="payloadUrl" />
|
||||
<mat-error *ngIf="hookForm.controls.payloadUrl.hasError('required')">
|
||||
{{'labels.inputs.Payload URL' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Payload URL' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="row wrap" fxLayout.lt-md="column" fxLayoutGap="4%"
|
||||
*ngIf="hookForm.controls.name.value === 'SMS Bridge'">
|
||||
|
||||
<div
|
||||
fxLayout="row wrap"
|
||||
fxLayout.lt-md="column"
|
||||
fxLayoutGap="4%"
|
||||
*ngIf="hookForm.controls.name.value === 'SMS Bridge'"
|
||||
>
|
||||
<mat-form-field fxFlex="30%">
|
||||
<mat-label>{{'labels.inputs.SMS Provider' | translate}}</mat-label>
|
||||
<input matInput required formControlName="smsProvider">
|
||||
<mat-label>{{ 'labels.inputs.SMS Provider' | translate }}</mat-label>
|
||||
<input matInput required formControlName="smsProvider" />
|
||||
<mat-error *ngIf="hookForm.controls.smsProvider.hasError('required')">
|
||||
{{'labels.inputs.SMS Provider' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.SMS Provider' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="30%">
|
||||
<mat-label>{{'labels.inputs.SMS Provider Account ID' | translate}}</mat-label>
|
||||
<input matInput required formControlName="smsProviderAccountId">
|
||||
<mat-label>{{ 'labels.inputs.SMS Provider Account ID' | translate }}</mat-label>
|
||||
<input matInput required formControlName="smsProviderAccountId" />
|
||||
<mat-error *ngIf="hookForm.controls.smsProviderAccountId.hasError('required')">
|
||||
{{'labels.inputs.SMS Provider Account ID' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.SMS Provider Account ID' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="30%">
|
||||
<mat-label>{{'labels.inputs.SMS Provider Token' | translate}}</mat-label>
|
||||
<input matInput required formControlName="smsProviderToken">
|
||||
<mat-label>{{ 'labels.inputs.SMS Provider Token' | translate }}</mat-label>
|
||||
<input matInput required formControlName="smsProviderToken" />
|
||||
<mat-error *ngIf="hookForm.controls.smsProviderToken.hasError('required')">
|
||||
{{'labels.inputs.SMS Provider Token' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.SMS Provider Token' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<br />
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<br>
|
||||
<br />
|
||||
|
||||
<div fxLayout="row wrap" fxLayoutGap="60%" fxLayout.lt-md="column">
|
||||
|
||||
<p fxFlex="20%" class="mat-title">{{'labels.inputs.Events' | translate}}</p>
|
||||
<p fxFlex="20%" class="mat-title">{{ 'labels.inputs.Events' | translate }}</p>
|
||||
|
||||
<button mat-raised-button fxFlex="20%" type="button" color="primary" (click)="addEvent()">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Add' | translate}} {{'labels.inputs.Events' | translate}}
|
||||
{{ 'labels.buttons.Add' | translate }} {{ 'labels.inputs.Events' | translate }}
|
||||
</button>
|
||||
|
||||
</div>
|
||||
|
||||
<table mat-table [dataSource]="dataSource" matSort>
|
||||
|
||||
<ng-container matColumnDef="entityName">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Entity Name' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let event"> {{ event.entityName }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Entity Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let event">{{ event.entityName }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actionName">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{ 'labels.inputs.Action' | translate }} {{ 'labels.inputs.Name' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let event"> {{ event.actionName }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>
|
||||
{{ 'labels.inputs.Action' | translate }} {{ 'labels.inputs.Name' | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let event">{{ event.actionName }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Actions' | translate }} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Actions' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let i = index">
|
||||
<button type="button" color="warn" mat-icon-button
|
||||
(click)="deleteEvent(i)">
|
||||
<button type="button" color="warn" mat-icon-button (click)="deleteEvent(i)">
|
||||
<fa-icon icon="trash" size="lg"></fa-icon>
|
||||
</button>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">{{ 'labels.inputs.Cancel' | translate}}</button>
|
||||
<button mat-raised-button color="primary" [disabled]="(!hookForm.valid || hookForm.pristine) && !eventsDataChanged" *mifosxHasPermission="'UPDATE_HOOK'">{{ 'labels.inputs.Submit' | translate}}</button>
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">{{ 'labels.inputs.Cancel' | translate }}</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
[disabled]="(!hookForm.valid || hookForm.pristine) && !eventsDataChanged"
|
||||
*mifosxHasPermission="'UPDATE_HOOK'"
|
||||
>
|
||||
{{ 'labels.inputs.Submit' | translate }}
|
||||
</button>
|
||||
</mat-card-actions>
|
||||
|
||||
</form>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,49 +1,50 @@
|
||||
<div class="container m-b-20" fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px">
|
||||
<button mat-raised-button color="primary" [routerLink]="['create']" *mifosxHasPermission="'CREATE_HOOK'">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{"labels.buttons.Create Hook" | translate}}
|
||||
{{ 'labels.buttons.Create Hook' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<div fxLayout="row" fxLayoutGap="20px">
|
||||
<mat-form-field fxFlex>
|
||||
<mat-label>{{'labels.inputs.Filter' | translate}}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)">
|
||||
<mat-label>{{ 'labels.inputs.Filter' | translate }}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)" />
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
<div class="mat-elevation-z8">
|
||||
|
||||
<table mat-table [dataSource]="dataSource" matSort>
|
||||
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Hook Template" | translate}} </th>
|
||||
<td mat-cell *matCellDef="let hook"> {{ hook.name | translateKey:'text' }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Hook Template' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let hook">{{ hook.name | translateKey: 'text' }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="displayName">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{"labels.inputs.Hook Name" | translate}} </th>
|
||||
<td mat-cell *matCellDef="let hook"> {{ hook.displayName }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Hook Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let hook">{{ hook.displayName }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="isActive">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{ 'labels.inputs.Status' | translate }} </th>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Status' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let hook">
|
||||
<div [className]="hook.isActive === true ? 'true' : 'false'">
|
||||
<fa-icon matTooltip="{{ hook.isActive === true ? ( 'labels.inputs.Active' | translate ) : ('labels.catalogs.Inactive' | translate) }}" matTooltipPosition="right" icon="circle" size="lg"></fa-icon>
|
||||
<fa-icon
|
||||
matTooltip="{{
|
||||
hook.isActive === true ? ('labels.inputs.Active' | translate) : ('labels.catalogs.Inactive' | translate)
|
||||
}}"
|
||||
matTooltipPosition="right"
|
||||
icon="circle"
|
||||
size="lg"
|
||||
></fa-icon>
|
||||
</div>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;" [routerLink]="[row.id]" class="select-row"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns" [routerLink]="[row.id]" class="select-row"></tr>
|
||||
</table>
|
||||
|
||||
<mat-paginator [pageSizeOptions]="[10, 25, 50, 100]" showFirstLastButtons></mat-paginator>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,84 +1,62 @@
|
||||
<div class="container m-b-20" fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px">
|
||||
|
||||
<button mat-raised-button color="primary" [routerLink]="['edit']" *mifosxHasPermission="'UPDATE_HOOK'">
|
||||
<fa-icon icon="edit" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Edit' | translate }}
|
||||
{{ 'labels.buttons.Edit' | translate }}
|
||||
</button>
|
||||
|
||||
<button mat-raised-button color="warn" (click)="delete()" *mifosxHasPermission="'DELETE_HOOK'">
|
||||
<fa-icon icon="trash" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Delete' | translate }}
|
||||
{{ 'labels.buttons.Delete' | translate }}
|
||||
</button>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="row wrap" class="content">
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{ 'labels.inputs.Hook Name' | translate}}:
|
||||
</div>
|
||||
<div fxFlex="50%" class="mat-body-strong">{{ 'labels.inputs.Hook Name' | translate }}:</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
{{ hookData.displayName }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{ 'labels.inputs.Status' | translate }}:
|
||||
</div>
|
||||
<div fxFlex="50%" class="mat-body-strong">{{ 'labels.inputs.Status' | translate }}:</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
{{ hookData.isActive ? ( 'labels.inputs.Active' | translate ) : ('labels.catalogs.Inactive' | translate) }}
|
||||
{{ hookData.isActive ? ('labels.inputs.Active' | translate) : ('labels.catalogs.Inactive' | translate) }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{'labels.inputs.Activation Date' | translate}}:
|
||||
</div>
|
||||
<div fxFlex="50%" class="mat-body-strong">{{ 'labels.inputs.Activation Date' | translate }}:</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
{{ hookData.createdAt | dateFormat }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{'labels.inputs.Updated on' | translate}}:
|
||||
</div>
|
||||
<div fxFlex="50%" class="mat-body-strong">{{ 'labels.inputs.Updated on' | translate }}:</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
{{ hookData.updatedAt | dateFormat }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{'labels.inputs.Events' | translate}}:
|
||||
</div>
|
||||
<div fxFlex="50%" class="mat-body-strong">{{ 'labels.inputs.Events' | translate }}:</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
|
||||
<mat-label *ngFor="let event of hookData.events">
|
||||
|
||||
{{ event.actionName + ' - ' + event.entityName }}
|
||||
|
||||
<br>
|
||||
|
||||
<br />
|
||||
</mat-label>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong" *ngIf="hookData.name === 'Web'">
|
||||
{{'labels.inputs.Content Type' | translate}}:
|
||||
{{ 'labels.inputs.Content Type' | translate }}:
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" *ngIf="hookData.name === 'Web'">
|
||||
{{ hookData.config[0].fieldValue }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{'labels.inputs.Payload URL' | translate}}:
|
||||
</div>
|
||||
<div fxFlex="50%" class="mat-body-strong">{{ 'labels.inputs.Payload URL' | translate }}:</div>
|
||||
|
||||
<div fxFlex="50%" *ngIf="hookData.name === 'Web'">
|
||||
{{ hookData.config[1].fieldValue }}
|
||||
@@ -89,7 +67,7 @@
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong" *ngIf="hookData.name === 'SMS Bridge'">
|
||||
{{'labels.inputs.Phone Number' | translate}}:
|
||||
{{ 'labels.inputs.Phone Number' | translate }}:
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" *ngIf="hookData.name === 'SMS Bridge'">
|
||||
@@ -105,7 +83,7 @@
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong" *ngIf="hookData.name === 'SMS Bridge'">
|
||||
{{'labels.inputs.SMS Provider Account ID' | translate}}:
|
||||
{{ 'labels.inputs.SMS Provider Account ID' | translate }}:
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" *ngIf="hookData.name === 'SMS Bridge'">
|
||||
@@ -113,17 +91,13 @@
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong" *ngIf="hookData.name === 'SMS Bridge'">
|
||||
{{'labels.inputs.SMS Provider Token' | translate}}:
|
||||
{{ 'labels.inputs.SMS Provider Token' | translate }}:
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" *ngIf="hookData.name === 'SMS Bridge'">
|
||||
{{ hookData.config[4].fieldValue }}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
<div class="container m-b-20 space-top" fxLayout="row" fxLayoutGap="20px">
|
||||
<div #cobCatchUpStatus>
|
||||
<h2 class="no-m">{{'labels.heading.COB Catch-Up is' | translate}}:<span class="m-l-20 m-r-20">{{ isCatchUpRunning ? ( 'labels.catalogs.Running' | translate ) : ('labels.catalogs.Inactive' | translate)}}</span>
|
||||
<h2 class="no-m">
|
||||
{{ 'labels.heading.COB Catch-Up is' | translate }}:<span class="m-l-20 m-r-20">{{
|
||||
isCatchUpRunning ? ('labels.catalogs.Running' | translate) : ('labels.catalogs.Inactive' | translate)
|
||||
}}</span>
|
||||
</h2>
|
||||
</div>
|
||||
<button mat-raised-button class="activate" (click)="runCatchUp()" *ngIf="!isCatchUpRunning">
|
||||
<fa-icon icon="times-circle" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Run Catch-Up' | translate}}
|
||||
{{ 'labels.buttons.Run Catch-Up' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -1,81 +1,100 @@
|
||||
<div class="tab-container mat-typography" *ngIf="loans && loans.length > 0">
|
||||
|
||||
<div fxLayout="row" fxLayoutAlign="start center">
|
||||
<div class="search-box" fxFlex="40%">
|
||||
<mat-form-field fxFlex="90%">
|
||||
<input matInput placeholder="Filter by loan Id or error" (keyup)="applyFilter($event.target.value)">
|
||||
<input matInput placeholder="Filter by loan Id or error" (keyup)="applyFilter($event.target.value)" />
|
||||
</mat-form-field>
|
||||
</div>
|
||||
<div fxFlex="60%" *ngIf="allowRunInlineJob">
|
||||
<button mat-raised-button color="success" *mifosxHasPermission="'EXECUTE_INLINE_JOB'" (click)="runInlineCOB()">
|
||||
<fa-icon icon="play" class="m-r-10"></fa-icon>{{'Start inline COB' | translate}}
|
||||
<fa-icon icon="play" class="m-r-10"></fa-icon>{{ 'Start inline COB' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<table mat-table [dataSource]="dataSource">
|
||||
|
||||
<ng-container matColumnDef="select">
|
||||
<th mat-header-cell *matHeaderCellDef>
|
||||
<mat-checkbox (change)="$event ? masterToggle() : null" [checked]="selection.hasValue() && isAllSelected()"
|
||||
[indeterminate]="selection.hasValue() && !isAllSelected()" [aria-label]="checkboxLabel()">
|
||||
<mat-checkbox
|
||||
(change)="$event ? masterToggle() : null"
|
||||
[checked]="selection.hasValue() && isAllSelected()"
|
||||
[indeterminate]="selection.hasValue() && !isAllSelected()"
|
||||
[aria-label]="checkboxLabel()"
|
||||
>
|
||||
</mat-checkbox>
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let row">
|
||||
<mat-checkbox (click)="$event.stopPropagation()" (change)="$event ? selection.toggle(row) : null"
|
||||
[checked]="selection.isSelected(row)" [aria-label]="checkboxLabel(row)">
|
||||
<mat-checkbox
|
||||
(click)="$event.stopPropagation()"
|
||||
(change)="$event ? selection.toggle(row) : null"
|
||||
[checked]="selection.isSelected(row)"
|
||||
[aria-label]="checkboxLabel(row)"
|
||||
>
|
||||
</mat-checkbox>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="loanId">
|
||||
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Loan Id" | translate}} </th>
|
||||
<td mat-cell *matCellDef="let loan" class="view-details"> {{loan.loanId}} </td>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Loan Id' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let loan" class="view-details">{{ loan.loanId }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="lockPlacedOn">
|
||||
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Lock Placed On" | translate}} </th>
|
||||
<td mat-cell *matCellDef="let loan" class="view-details"> {{loan.lockPlacedOn | datetimeFormat}} </td>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Lock Placed On' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let loan" class="view-details">{{ loan.lockPlacedOn | datetimeFormat }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="lockOwner">
|
||||
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Lock Owner" | translate}} </th>
|
||||
<td mat-cell *matCellDef="let loan" class="view-details"> {{loan.lockOwner}} </td>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Lock Owner' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let loan" class="view-details">{{ loan.lockOwner }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="error">
|
||||
<th mat-header-cell *matHeaderCellDef> {{"labels.inputs.Error" | translate}} </th>
|
||||
<td mat-cell *matCellDef="let loan" class="view-details"> {{loan.error}} </td>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Error' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let loan" class="view-details">{{ loan.error }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="details">
|
||||
<th mat-header-cell *matHeaderCellDef> {{"labels.heading.Details" | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.heading.Details' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let loan" class="view-details">
|
||||
<button mat-icon-button class="error-log" matTooltip="{{ 'tooltips.Error details' | translate}}" (click)="showDetails(loan)" matTooltipPosition="left">
|
||||
<button
|
||||
mat-icon-button
|
||||
class="error-log"
|
||||
matTooltip="{{ 'tooltips.Error details' | translate }}"
|
||||
(click)="showDetails(loan)"
|
||||
matTooltipPosition="left"
|
||||
>
|
||||
<fa-icon icon="exclamation-circle" size="lg"></fa-icon>
|
||||
</button>
|
||||
<button mat-icon-button matTooltip="{{ 'tooltips.View Loan Account' | translate}}" (click)="viewLoanAccount(loan)" matTooltipPosition="right">
|
||||
<button
|
||||
mat-icon-button
|
||||
matTooltip="{{ 'tooltips.View Loan Account' | translate }}"
|
||||
(click)="viewLoanAccount(loan)"
|
||||
matTooltipPosition="right"
|
||||
>
|
||||
<fa-icon icon="eye" size="lg"></fa-icon>
|
||||
</button>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;" (click)="selection.toggle(row)">
|
||||
</tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns" (click)="selection.toggle(row)"></tr>
|
||||
</table>
|
||||
|
||||
<mat-paginator [hidden]="!showPaginator" [pageSizeOptions]="[100, 500, 1000, 5000]" [pageSize]="pageSize"
|
||||
[pageIndex]="currentPage" showFirstLastButtons (page)="changePaging($event)">
|
||||
<mat-paginator
|
||||
[hidden]="!showPaginator"
|
||||
[pageSizeOptions]="[100, 500, 1000, 5000]"
|
||||
[pageSize]="pageSize"
|
||||
[pageIndex]="currentPage"
|
||||
showFirstLastButtons
|
||||
(page)="changePaging($event)"
|
||||
>
|
||||
</mat-paginator>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="alert" *ngIf="loans && loans.length === 0">
|
||||
|
||||
<div class="message">
|
||||
<i class="fa fa-exclamation-circle alert-check"></i>
|
||||
{{"labels.text.No loan locked available" | translate}}.
|
||||
{{ 'labels.text.No loan locked available' | translate }}.
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,16 +1,15 @@
|
||||
<mat-card class="container-card">
|
||||
<mat-card-content>
|
||||
<mat-tab-group #tabGroup mat-align-tabs="center" (selectedTabChange)="onJobTabChange($event)">
|
||||
<mat-tab label="{{title('Scheduler Jobs')}}">
|
||||
<mat-tab label="{{ title('Scheduler Jobs') }}">
|
||||
<mifosx-manage-scheduler-jobs></mifosx-manage-scheduler-jobs>
|
||||
</mat-tab>
|
||||
<mat-tab label="{{title('Workflow Jobs')}}">
|
||||
<mat-tab label="{{ title('Workflow Jobs') }}">
|
||||
<mifosx-workflow-jobs></mifosx-workflow-jobs>
|
||||
</mat-tab>
|
||||
<mat-tab label="{{title('COB')}}">
|
||||
<mat-tab label="{{ title('COB') }}">
|
||||
<mifosx-cob-workflow [isCatchUpRunning]="isCatchUpRunning"></mifosx-cob-workflow>
|
||||
</mat-tab>
|
||||
</mat-tab-group>
|
||||
|
||||
</mat-card-content>
|
||||
</mat-card>
|
||||
|
||||
+9
-9
@@ -1,13 +1,13 @@
|
||||
<h1 mat-dialog-title>{{'labels.buttons.Edit Job Custom Parameters' | translate}}</h1>
|
||||
<h1 mat-dialog-title>{{ 'labels.buttons.Edit Job Custom Parameters' | translate }}</h1>
|
||||
|
||||
<mat-dialog-content>
|
||||
<div class="jobs-container">
|
||||
<div *ngFor="let job of selectedJobs">
|
||||
<mifosx-custom-parameters-table
|
||||
[displayName]="job.displayName"
|
||||
[jobId]="job.jobId"
|
||||
[jobParameters]="job.jobParameters"
|
||||
(retrieveData)="runSelectedJobs($event)"
|
||||
[displayName]="job.displayName"
|
||||
[jobId]="job.jobId"
|
||||
[jobParameters]="job.jobParameters"
|
||||
(retrieveData)="runSelectedJobs($event)"
|
||||
>
|
||||
</mifosx-custom-parameters-table>
|
||||
</div>
|
||||
@@ -15,17 +15,17 @@
|
||||
</mat-dialog-content>
|
||||
|
||||
<mat-list>
|
||||
<mat-list-item *ngFor="let message of messages" class="message" [ngClass]="{'green' : message.status}">
|
||||
{{message.message}}
|
||||
<mat-list-item *ngFor="let message of messages" class="message" [ngClass]="{ green: message.status }">
|
||||
{{ message.message }}
|
||||
</mat-list-item>
|
||||
</mat-list>
|
||||
|
||||
<mat-dialog-actions>
|
||||
<button mat-raised-button color="primary" (click)="runSelectedJobs()">
|
||||
<fa-icon icon="play" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Run Selected Jobs' | translate}}
|
||||
{{ 'labels.buttons.Run Selected Jobs' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="warn" [mat-dialog-close]="{ show: 0 }">
|
||||
{{'labels.buttons.Close Custom Parameters' | translate}}
|
||||
{{ 'labels.buttons.Close Custom Parameters' | translate }}
|
||||
</button>
|
||||
</mat-dialog-actions>
|
||||
|
||||
+28
-9
@@ -1,20 +1,34 @@
|
||||
<div>
|
||||
<h2>{{'labels.inputs.Job' | translate}}: {{ displayName }}</h2>
|
||||
<h2>{{ 'labels.inputs.Job' | translate }}: {{ displayName }}</h2>
|
||||
<table mat-table [dataSource]="updatedJobParameters">
|
||||
<ng-container matColumnDef="parameterName">
|
||||
<th mat-header-cell *matHeaderCellDef>{{'labels.inputs.Parameter' | translate}} {{'labels.inputs.Name' | translate}}</th>
|
||||
<th mat-header-cell *matHeaderCellDef>
|
||||
{{ 'labels.inputs.Parameter' | translate }} {{ 'labels.inputs.Name' | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let element; index as i">
|
||||
<mat-form-field>
|
||||
<input matInput type="text" [placeholder]="('labels.inputs.Parameter' | translate) + ' ' + ('labels.inputs.Name' | translate)" [(ngModel)]="element.parameterName" />
|
||||
<input
|
||||
matInput
|
||||
type="text"
|
||||
[placeholder]="('labels.inputs.Parameter' | translate) + ' ' + ('labels.inputs.Name' | translate)"
|
||||
[(ngModel)]="element.parameterName"
|
||||
/>
|
||||
</mat-form-field>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="parameterValue">
|
||||
<th mat-header-cell *matHeaderCellDef>{{'labels.inputs.Parameter' | translate}} {{'labels.inputs.Value' | translate}}</th>
|
||||
<th mat-header-cell *matHeaderCellDef>
|
||||
{{ 'labels.inputs.Parameter' | translate }} {{ 'labels.inputs.Value' | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let element; index as i">
|
||||
<mat-form-field>
|
||||
<input matInput type="text" [placeholder]="('labels.inputs.Parameter' | translate) + ' ' + ('labels.inputs.Value' | translate)" [(ngModel)]="element.parameterValue" />
|
||||
<input
|
||||
matInput
|
||||
type="text"
|
||||
[placeholder]="('labels.inputs.Parameter' | translate) + ' ' + ('labels.inputs.Value' | translate)"
|
||||
[(ngModel)]="element.parameterValue"
|
||||
/>
|
||||
</mat-form-field>
|
||||
</td>
|
||||
</ng-container>
|
||||
@@ -22,9 +36,14 @@
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef></th>
|
||||
<td mat-cell *matCellDef="let row; let rowIndex = index">
|
||||
<button type="button" mat-icon-button color="warn"
|
||||
(click)="deleteParameter(rowIndex)" [matTooltip]="('labels.buttons.Delete' | translate)"
|
||||
matTooltipPosition="left">
|
||||
<button
|
||||
type="button"
|
||||
mat-icon-button
|
||||
color="warn"
|
||||
(click)="deleteParameter(rowIndex)"
|
||||
[matTooltip]="'labels.buttons.Delete' | translate"
|
||||
matTooltipPosition="left"
|
||||
>
|
||||
<fa-icon icon="trash"></fa-icon>
|
||||
</button>
|
||||
</td>
|
||||
@@ -36,6 +55,6 @@
|
||||
|
||||
<button mat-button (click)="addParameter()">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Add' | translate}} {{'labels.inputs.Parameter' | translate}}
|
||||
{{ 'labels.buttons.Add' | translate }} {{ 'labels.inputs.Parameter' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
+20
-19
@@ -1,44 +1,45 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<form [formGroup]="jobForm" (ngSubmit)="submit()">
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="column">
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.Job Name' | translate}}</mat-label>
|
||||
<input matInput required formControlName="displayName">
|
||||
<mat-label>{{ 'labels.inputs.Job Name' | translate }}</mat-label>
|
||||
<input matInput required formControlName="displayName" />
|
||||
<mat-error *ngIf="jobForm.controls.displayName.hasError('required')">
|
||||
{{'labels.inputs.Job Name' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Job Name' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.Cron Expression' | translate}}</mat-label>
|
||||
<input matInput required formControlName="cronExpression">
|
||||
<mat-label>{{ 'labels.inputs.Cron Expression' | translate }}</mat-label>
|
||||
<input matInput required formControlName="cronExpression" />
|
||||
<mat-error *ngIf="jobForm.controls.cronExpression.hasError('required')">
|
||||
{{'labels.inputs.Cron Expression' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Cron Expression' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-checkbox labelPosition="before" formControlName="active">
|
||||
{{'labels.inputs.Is job active' | translate}}?
|
||||
{{ 'labels.inputs.Is job active' | translate }}?
|
||||
</mat-checkbox>
|
||||
|
||||
</div>
|
||||
|
||||
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">{{'labels.buttons.Cancel' | translate}}</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!jobForm.valid" *mifosxHasPermission="'UPDATE_SCHEDULER'">{{'labels.buttons.Submit' | translate}}</button>
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
[disabled]="!jobForm.valid"
|
||||
*mifosxHasPermission="'UPDATE_SCHEDULER'"
|
||||
>
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</mat-card-actions>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
</form>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
+25
-23
@@ -1,27 +1,29 @@
|
||||
<h2 mat-dialog-title><span class="m-r-10">{{'labels.inputs.Job Name' | translate}}:</span>{{job.displayName}}</h2>
|
||||
<h2 mat-dialog-title>
|
||||
<span class="m-r-10">{{ 'labels.inputs.Job Name' | translate }}:</span>{{ job.displayName }}
|
||||
</h2>
|
||||
<mat-dialog-content>
|
||||
<table class="m-b-5">
|
||||
<tbody>
|
||||
<tr class="m-b-20">
|
||||
<td class="header">{{'labels.inputs.Start Time' | translate}}</td>
|
||||
<td>{{job.lastRunHistory.jobRunStartTime | datetimeFormat}}</td>
|
||||
<td class="header">{{'labels.inputs.End Time' | translate}}</td>
|
||||
<td>{{job.lastRunHistory.jobRunEndTime | datetimeFormat}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4" class="message">
|
||||
<div #content class="note-field" [class.show]="show" [class.note-text]="content.scrollHeight > 18">
|
||||
<span>{{job.lastRunHistory.jobRunErrorLog}}</span>
|
||||
</div>
|
||||
<button mat-flat-button *ngIf="content.scrollHeight > 18" class="show-button" (click)="show = !show">
|
||||
{{ buttonLabel() }}
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="m-b-5">
|
||||
<tbody>
|
||||
<tr class="m-b-20">
|
||||
<td class="header">{{ 'labels.inputs.Start Time' | translate }}</td>
|
||||
<td>{{ job.lastRunHistory.jobRunStartTime | datetimeFormat }}</td>
|
||||
<td class="header">{{ 'labels.inputs.End Time' | translate }}</td>
|
||||
<td>{{ job.lastRunHistory.jobRunEndTime | datetimeFormat }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4" class="message">
|
||||
<div #content class="note-field" [class.show]="show" [class.note-text]="content.scrollHeight > 18">
|
||||
<span>{{ job.lastRunHistory.jobRunErrorLog }}</span>
|
||||
</div>
|
||||
<button mat-flat-button *ngIf="content.scrollHeight > 18" class="show-button" (click)="show = !show">
|
||||
{{ buttonLabel() }}
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</mat-dialog-content>
|
||||
|
||||
<mat-dialog-actions align="center">
|
||||
<button mat-raised-button mat-dialog-close>{{"labels.buttons.Close" | translate}}</button>
|
||||
</mat-dialog-actions>
|
||||
<button mat-raised-button mat-dialog-close>{{ 'labels.buttons.Close' | translate }}</button>
|
||||
</mat-dialog-actions>
|
||||
|
||||
@@ -1,182 +1,230 @@
|
||||
<div class="container m-b-20 space-top" fxLayout="row" fxLayoutGap="20px">
|
||||
<div #schedulerStatus>
|
||||
<h2 class="no-m">{{'labels.heading.Scheduler Status' | translate}}:<span class="m-l-20 m-r-20">{{ schedulerActive ?
|
||||
( 'labels.inputs.Active' | translate ) : ('labels.catalogs.Inactive' | translate) }}</span>
|
||||
<h2 class="no-m">
|
||||
{{ 'labels.heading.Scheduler Status' | translate }}:<span class="m-l-20 m-r-20">{{
|
||||
schedulerActive ? ('labels.inputs.Active' | translate) : ('labels.catalogs.Inactive' | translate)
|
||||
}}</span>
|
||||
</h2>
|
||||
</div>
|
||||
<button mat-raised-button class="suspend" (click)="suspendScheduler()" *ngIf="schedulerActive">
|
||||
<fa-icon icon="times-circle" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Suspend' | translate}}
|
||||
{{ 'labels.buttons.Suspend' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button class="activate" (click)="activateScheduler()" *ngIf="!schedulerActive">
|
||||
<fa-icon icon="times-circle" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Activate' | translate}}
|
||||
{{ 'labels.buttons.Activate' | translate }}
|
||||
</button>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<div #filter fxLayout="row" fxLayoutGap="20px">
|
||||
<mat-form-field fxFlex>
|
||||
<mat-label>{{'labels.inputs.Filter' | translate}}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)">
|
||||
<mat-label>{{ 'labels.inputs.Filter' | translate }}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)" />
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
<div class="space-top" fxLayout="row" fxLayoutGap="20px">
|
||||
<button mat-raised-button color="primary" (click)="openRunSelectedJobsDialog()" [disabled]="!isAnyJobSelected()">
|
||||
<fa-icon icon="play" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Run Selected Jobs' | translate}}
|
||||
{{ 'labels.buttons.Run Selected Jobs' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="openCustomParametersDialog()" [disabled]="!isAnyJobSelected()">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Add Custom Parameters' | translate}}
|
||||
{{ 'labels.buttons.Add Custom Parameters' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="refresh()">
|
||||
<fa-icon icon="sync" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Refresh' | translate}}
|
||||
{{ 'labels.buttons.Refresh' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div #jobsTable class="mat-elevation-z8 space-top">
|
||||
|
||||
<table mat-table [dataSource]="dataSource" matSort>
|
||||
|
||||
<ng-container matColumnDef="select">
|
||||
<th mat-header-cell *matHeaderCellDef>
|
||||
<mat-checkbox class="m-r-10" (change)="$event ? masterToggle() : null"
|
||||
<mat-checkbox
|
||||
class="m-r-10"
|
||||
(change)="$event ? masterToggle() : null"
|
||||
[checked]="selection.hasValue() && isAllSelected()"
|
||||
[indeterminate]="selection.hasValue() && !isAllSelected()">
|
||||
[indeterminate]="selection.hasValue() && !isAllSelected()"
|
||||
>
|
||||
</mat-checkbox>
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let row">
|
||||
<mat-checkbox class="m-r-10" *ngIf="!row.currentlyRunning && row.active" (click)="$event.stopPropagation()"
|
||||
(change)="$event ? selection.toggle(row) : null" [checked]="selection.isSelected(row)">
|
||||
<mat-checkbox
|
||||
class="m-r-10"
|
||||
*ngIf="!row.currentlyRunning && row.active"
|
||||
(click)="$event.stopPropagation()"
|
||||
(change)="$event ? selection.toggle(row) : null"
|
||||
[checked]="selection.isSelected(row)"
|
||||
>
|
||||
</mat-checkbox>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="displayName">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Name' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let job" [routerLink]="[job.jobId]"> {{ job.displayName }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let job" [routerLink]="[job.jobId]">{{ job.displayName }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="active">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Active' | translate}}</th>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Active' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let job" class="center">
|
||||
<div [className]="job.active === true ? 'currently-running' : 'not-currently-running'">
|
||||
<fa-icon matTooltip="{{ job.active === true | yesNo }}" matTooltipPosition="right" icon="circle"
|
||||
size="lg"></fa-icon>
|
||||
<fa-icon
|
||||
matTooltip="{{ job.active === true | yesNo }}"
|
||||
matTooltipPosition="right"
|
||||
icon="circle"
|
||||
size="lg"
|
||||
></fa-icon>
|
||||
</div>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="previousRunTime">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Previous Run' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Previous Run' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let job">
|
||||
<div *ngIf="job.lastRunHistory">
|
||||
<fa-icon *ngIf="job.lastRunHistory.status === 'success'" class="success"
|
||||
[matTooltip]="('tooltips.Successful' | translate)" matTooltipPosition="right" icon="check-circle"
|
||||
size="lg"></fa-icon>
|
||||
<fa-icon *ngIf="!(job.lastRunHistory.status === 'success')" class="fail"
|
||||
[matTooltip]="('tooltips.Failed' | translate)" matTooltipPosition="right" icon="times-circle"
|
||||
size="lg"></fa-icon>
|
||||
<fa-icon
|
||||
*ngIf="job.lastRunHistory.status === 'success'"
|
||||
class="success"
|
||||
[matTooltip]="'tooltips.Successful' | translate"
|
||||
matTooltipPosition="right"
|
||||
icon="check-circle"
|
||||
size="lg"
|
||||
></fa-icon>
|
||||
<fa-icon
|
||||
*ngIf="!(job.lastRunHistory.status === 'success')"
|
||||
class="fail"
|
||||
[matTooltip]="'tooltips.Failed' | translate"
|
||||
matTooltipPosition="right"
|
||||
icon="times-circle"
|
||||
size="lg"
|
||||
></fa-icon>
|
||||
<span *ngIf="job.lastRunHistory" class="m-l-5">
|
||||
{{ job.lastRunHistory.jobRunStartTime | datetimeFormat}}</span>
|
||||
{{ job.lastRunHistory.jobRunStartTime | datetimeFormat }}</span
|
||||
>
|
||||
</div>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="nextRunTime">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Next Run' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let job"> {{ job.nextRunTime | datetimeFormat }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Next Run' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let job">{{ job.nextRunTime | datetimeFormat }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="currentlyRunning">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Currently Running' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Currently Running' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let job" class="center">
|
||||
<div [className]="job.currentlyRunning === true ? 'currently-running' : 'not-currently-running'">
|
||||
<fa-icon matTooltip="{{ job.currentlyRunning === true | yesNo }}" matTooltipPosition="right" icon="circle"
|
||||
size="lg"></fa-icon>
|
||||
<fa-icon
|
||||
matTooltip="{{ job.currentlyRunning === true | yesNo }}"
|
||||
matTooltipPosition="right"
|
||||
icon="circle"
|
||||
size="lg"
|
||||
></fa-icon>
|
||||
</div>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="errorLog">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Error Log' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Error Log' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let job" class="center">
|
||||
<button mat-icon-button class="errorlog" (click)="showErrorLog(job)"
|
||||
<button
|
||||
mat-icon-button
|
||||
class="errorlog"
|
||||
(click)="showErrorLog(job)"
|
||||
*ngIf="!(job.lastRunHistory && job.lastRunHistory.status === 'success')"
|
||||
matTooltip="{{'labels.inputs.Error Log' | translate}}" matTooltipPosition="right">
|
||||
matTooltip="{{ 'labels.inputs.Error Log' | translate }}"
|
||||
matTooltipPosition="right"
|
||||
>
|
||||
<fa-icon icon="exclamation-circle" size="lg"></fa-icon>
|
||||
</button>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;" class="select-row"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns" class="select-row"></tr>
|
||||
</table>
|
||||
|
||||
<mat-paginator [pageSizeOptions]="[50, 100]" showFirstLastButtons></mat-paginator>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="container space-top" fxLayout="row" fxLayoutGap="20px">
|
||||
<button mat-raised-button color="primary" (click)="openRunSelectedJobsDialog()" [disabled]="!isAnyJobSelected()">
|
||||
<fa-icon icon="play" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Run Selected Jobs' | translate}}
|
||||
{{ 'labels.buttons.Run Selected Jobs' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="refresh()">
|
||||
<fa-icon icon="sync" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Refresh' | translate}}
|
||||
{{ 'labels.buttons.Refresh' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<ng-template #templateSchedulerStatus let-data let-popover="popover">
|
||||
<h4>{{'labels.heading.Scheduler status' | translate}}.</h4>
|
||||
<h4>{{ 'labels.heading.Scheduler status' | translate }}.</h4>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<button mat-raised-button color="warn"
|
||||
(click)="popover.close();configurationWizardService.closeConfigWizard()">{{'labels.buttons.Close' |
|
||||
translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();previousStep()">{{'labels.buttons.Back' |
|
||||
translate}}</button>
|
||||
<button mat-raised-button color="primary"
|
||||
(click)="popover.close();showPopover(templateFilter, filter, 'bottom', true)">{{'labels.buttons.Next' |
|
||||
translate}}</button>
|
||||
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
|
||||
{{ 'labels.buttons.Close' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); previousStep()">
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="popover.close(); showPopover(templateFilter, filter, 'bottom', true)"
|
||||
>
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #templateFilter let-data let-popover="popover">
|
||||
<h4>{{'labels.heading.Search bar to filter jobs' | translate }}.</h4>
|
||||
<h4>{{ 'labels.heading.Search bar to filter jobs' | translate }}.</h4>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<button mat-raised-button color="warn"
|
||||
(click)="popover.close();configurationWizardService.closeConfigWizard()">{{'labels.buttons.Close' |
|
||||
translate}}</button>
|
||||
<button mat-raised-button color="primary"
|
||||
(click)="popover.close();showPopover(templateSchedulerStatus,schedulerStatus, 'bottom', true)">{{'labels.buttons.Back'
|
||||
| translate}}</button>
|
||||
<button mat-raised-button color="primary"
|
||||
(click)="popover.close();showPopover(templateJobsTable,jobsTable, 'top', true)">{{'labels.buttons.Next' |
|
||||
translate}}</button>
|
||||
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
|
||||
{{ 'labels.buttons.Close' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="popover.close(); showPopover(templateSchedulerStatus, schedulerStatus, 'bottom', true)"
|
||||
>
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="popover.close(); showPopover(templateJobsTable, jobsTable, 'top', true)"
|
||||
>
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #templateJobsTable let-data let-popover="popover">
|
||||
<h4>{{'labels.heading.List of all scheduled batch jobs' | translate }} <a
|
||||
href="https://mifosforge.jira.com/wiki/spaces/docs/pages/67895356/Manage+Scheduler+Jobs"
|
||||
target="_blank">{{'labels.heading.Schedular Jobs' | translate}}</a></h4>
|
||||
<h4>
|
||||
{{ 'labels.heading.List of all scheduled batch jobs' | translate }}
|
||||
<a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/67895356/Manage+Scheduler+Jobs" target="_blank">{{
|
||||
'labels.heading.Schedular Jobs' | translate
|
||||
}}</a>
|
||||
</h4>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<button mat-raised-button color="warn"
|
||||
(click)="popover.close();configurationWizardService.closeConfigWizard()">{{'labels.buttons.Close' |
|
||||
translate}}</button>
|
||||
<button mat-raised-button color="primary"
|
||||
(click)="popover.close();showPopover(templateFilter, filter, 'bottom', true)">{{'labels.buttons.Back' |
|
||||
translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();nextStep()">{{'labels.buttons.Next' |
|
||||
translate}}</button>
|
||||
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
|
||||
{{ 'labels.buttons.Close' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="popover.close(); showPopover(templateFilter, filter, 'bottom', true)"
|
||||
>
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); nextStep()">
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
</ng-template>
|
||||
|
||||
+16
-16
@@ -1,23 +1,23 @@
|
||||
<h1 mat-dialog-title>{{'labels.heading.Selected Jobs' | translate}}:</h1>
|
||||
<h1 mat-dialog-title>{{ 'labels.heading.Selected Jobs' | translate }}:</h1>
|
||||
|
||||
<mat-dialog-content>
|
||||
<div class="jobs-container">
|
||||
<mifosx-run-selected-jobs-table [selectedJobs]="selectedJobs" (confirmedJobs)="runSelectedJobs()">
|
||||
</mifosx-run-selected-jobs-table>
|
||||
</div>
|
||||
<div class="jobs-container">
|
||||
<mifosx-run-selected-jobs-table [selectedJobs]="selectedJobs" (confirmedJobs)="runSelectedJobs()">
|
||||
</mifosx-run-selected-jobs-table>
|
||||
</div>
|
||||
</mat-dialog-content>
|
||||
|
||||
<mat-list>
|
||||
<mat-list-item *ngFor="let message of messages" class="message" ngClass]="{'green' : message.status}">
|
||||
{{message.message}}
|
||||
</mat-list-item>
|
||||
<mat-list-item *ngFor="let message of messages" class="message" ngClass]="{'green' : message.status}">
|
||||
{{ message.message }}
|
||||
</mat-list-item>
|
||||
</mat-list>
|
||||
<mat-dialog-actions>
|
||||
<button mat-raised-button color="primary" (click)="runSelectedJobs()">
|
||||
<fa-icon icon="play" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Confirm' | translate}}
|
||||
</button>
|
||||
<button mat-raised-button color="warn" [mat-dialog-close]="{ show: 0 }">
|
||||
{{'labels.buttons.Cancel' | translate}}
|
||||
</button>
|
||||
</mat-dialog-actions>
|
||||
<button mat-raised-button color="primary" (click)="runSelectedJobs()">
|
||||
<fa-icon icon="play" class="m-r-10"></fa-icon>
|
||||
{{ 'labels.buttons.Confirm' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="warn" [mat-dialog-close]="{ show: 0 }">
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
</mat-dialog-actions>
|
||||
|
||||
+24
-20
@@ -1,23 +1,27 @@
|
||||
<div>
|
||||
<table mat-table [dataSource]="selectedJobs">
|
||||
<ng-container matColumnDef="displayName">
|
||||
<th mat-header-cell *matHeaderCellDef>{{'labels.inputs.Display Name' |
|
||||
translate}}</th>
|
||||
<td mat-cell *matCellDef="let element; index as i">{{ element.displayName
|
||||
}}</td>
|
||||
</ng-container>
|
||||
<table mat-table [dataSource]="selectedJobs">
|
||||
<ng-container matColumnDef="displayName">
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Display Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let element; index as i">{{ element.displayName }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef></th>
|
||||
<td mat-cell *matCellDef="let row; let rowIndex = index">
|
||||
<button type="button" mat-icon-button color="warn" (click)="removeJobFromSelection(rowIndex)"
|
||||
matTooltip="Delete" matTooltipPosition="left">
|
||||
<fa-icon icon="trash"></fa-icon>
|
||||
</button>
|
||||
</td>
|
||||
</ng-container>
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef></th>
|
||||
<td mat-cell *matCellDef="let row; let rowIndex = index">
|
||||
<button
|
||||
type="button"
|
||||
mat-icon-button
|
||||
color="warn"
|
||||
(click)="removeJobFromSelection(rowIndex)"
|
||||
matTooltip="Delete"
|
||||
matTooltipPosition="left"
|
||||
>
|
||||
<fa-icon icon="trash"></fa-icon>
|
||||
</button>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="columnsToDisplay" class="first-row"></tr>
|
||||
<tr mat-row *matRowDef="let selectedJobs; columns: columnsToDisplay"></tr>
|
||||
</table>
|
||||
</div>
|
||||
<tr mat-header-row *matHeaderRowDef="columnsToDisplay" class="first-row"></tr>
|
||||
<tr mat-row *matRowDef="let selectedJobs; columns: columnsToDisplay"></tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
+38
-22
@@ -1,65 +1,81 @@
|
||||
<div class="container">
|
||||
|
||||
<div fxLayout="row" fxLayoutGap="20px">
|
||||
|
||||
<mat-form-field fxFlex>
|
||||
<mat-label>{{'labels.inputs.Filter By Version' | translate}}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)">
|
||||
<mat-label>{{ 'labels.inputs.Filter By Version' | translate }}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)" />
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
<div class="mat-elevation-z8">
|
||||
|
||||
<table mat-table [dataSource]="dataSource" matSort>
|
||||
|
||||
<ng-container matColumnDef="version" >
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Version' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let jobHistoryData"> {{ jobHistoryData.version }} </td>
|
||||
<ng-container matColumnDef="version">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Version' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let jobHistoryData">{{ jobHistoryData.version }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="run_start_time">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Start Time' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Start Time' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let jobHistoryData">{{ jobHistoryData.jobRunStartTime | datetimeFormat }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="run_end_time">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.End Time' | translate}}End time </th>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.End Time' | translate }}End time</th>
|
||||
<td mat-cell *matCellDef="let jobHistoryData">{{ jobHistoryData.jobRunEndTime | datetimeFormat }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="status">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{ 'labels.inputs.Status' | translate }} </th>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Status' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let jobHistoryData">
|
||||
<fa-icon *ngIf="jobHistoryData.status === 'success'" class="success" matTooltip="{{ 'tooltips.Successful' | translate}}" matTooltipPosition="right" icon="check-circle" size="lg"></fa-icon>
|
||||
<fa-icon *ngIf="!(jobHistoryData.status === 'success')" class="fail" matTooltip="{{ 'tooltips.Failed' | translate}}" matTooltipPosition="right" icon="times-circle" size="lg"></fa-icon>
|
||||
<fa-icon
|
||||
*ngIf="jobHistoryData.status === 'success'"
|
||||
class="success"
|
||||
matTooltip="{{ 'tooltips.Successful' | translate }}"
|
||||
matTooltipPosition="right"
|
||||
icon="check-circle"
|
||||
size="lg"
|
||||
></fa-icon>
|
||||
<fa-icon
|
||||
*ngIf="!(jobHistoryData.status === 'success')"
|
||||
class="fail"
|
||||
matTooltip="{{ 'tooltips.Failed' | translate }}"
|
||||
matTooltipPosition="right"
|
||||
icon="times-circle"
|
||||
size="lg"
|
||||
></fa-icon>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="run_type">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{ 'labels.inputs.Run Type' | translate }} </th>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Run Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let jobHistoryData">{{ jobHistoryData.triggerType }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="error_log">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{ 'labels.inputs.Error Log' | translate }} </th>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Error Log' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let jobHistoryData">
|
||||
<button mat-icon-button class="errorlog" *ngIf="!(jobHistoryData.status === 'success')" matTooltip="{{ 'tooltips.Error Log' | translate}}" matTooltipPosition="right" (click)="openError(jobHistoryData.version)">
|
||||
<button
|
||||
mat-icon-button
|
||||
class="errorlog"
|
||||
*ngIf="!(jobHistoryData.status === 'success')"
|
||||
matTooltip="{{ 'tooltips.Error Log' | translate }}"
|
||||
matTooltipPosition="right"
|
||||
(click)="openError(jobHistoryData.version)"
|
||||
>
|
||||
<fa-icon icon="exclamation-circle" size="lg"></fa-icon>
|
||||
</button>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;" class="select-row"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns" class="select-row"></tr>
|
||||
</table>
|
||||
|
||||
<mat-paginator [pageSizeOptions]="[10, 25, 50, 100]" showFirstLastButtons></mat-paginator>
|
||||
|
||||
<div fxLayout="row" fxLayoutAlign="center" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<button type="button" color="primary" mat-raised-button [routerLink]="['../']">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button type="button" color="primary" mat-raised-button [routerLink]="['../']">
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
+12
-18
@@ -1,23 +1,19 @@
|
||||
<div class="container m-b-20" fxLayout="row" fxLayout.lt-md="column" fxLayoutAlign="end" fxLayoutGap="2%">
|
||||
<button mat-raised-button color="primary" [routerLink]="['edit']">
|
||||
<fa-icon icon="edit" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Edit' | translate }}
|
||||
{{ 'labels.buttons.Edit' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" [routerLink]="['viewhistory']">
|
||||
{{'labels.buttons.View History' | translate }}
|
||||
{{ 'labels.buttons.View History' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="row wrap" class="content">
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{'labels.inputs.Job Name' | translate}}
|
||||
{{ 'labels.inputs.Job Name' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
@@ -25,39 +21,37 @@
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{'labels.inputs.Cron Expression' | translate}}
|
||||
{{ 'labels.inputs.Cron Expression' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
{{ jobData.cronExpression }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{'labels.inputs.Is Active Job' | translate}}?
|
||||
</div>
|
||||
<div fxFlex="50%" class="mat-body-strong">{{ 'labels.inputs.Is Active Job' | translate }}?</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
{{ jobData.active | yesNo }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{'labels.inputs.Follow' | translate}}
|
||||
{{ 'labels.inputs.Follow' | translate }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
<a href="http://www.cronmaker.com/"> {{'labels.text.Click Here To Generate Cron Expression' | translate}} </a>
|
||||
<a href="http://www.cronmaker.com/">
|
||||
{{ 'labels.text.Click Here To Generate Cron Expression' | translate }}
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
<mat-card-actions>
|
||||
<div fxLayout="row" fxLayoutAlign="center" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<button type="button" color="primary" mat-raised-button [routerLink]="['../']">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button type="button" color="primary" mat-raised-button [routerLink]="['../']">
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</mat-card-actions>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
+23
-8
@@ -1,5 +1,14 @@
|
||||
<ngx-graph [view]="diagramSize" [links]="links" [nodes]="nodes" [curve]="curve" [layout]="layout"
|
||||
[nodeHeight]="100" [layoutSettings]="layoutSettings" [enableZoom]="true" [center$]="center$">
|
||||
<ngx-graph
|
||||
[view]="diagramSize"
|
||||
[links]="links"
|
||||
[nodes]="nodes"
|
||||
[curve]="curve"
|
||||
[layout]="layout"
|
||||
[nodeHeight]="100"
|
||||
[layoutSettings]="layoutSettings"
|
||||
[enableZoom]="true"
|
||||
[center$]="center$"
|
||||
>
|
||||
<ng-template #defsTemplate>
|
||||
<svg:marker id="arrow" viewBox="0 -5 10 10" refX="8" refY="0" markerWidth="4" markerHeight="4" orient="auto">
|
||||
<svg:path d="M0,-5L10,0L0,5" class="arrow-head" />
|
||||
@@ -21,17 +30,23 @@
|
||||
<svg:g class="edge">
|
||||
<svg:path class="line" stroke-width="2" marker-end="url(#arrow)"></svg:path>
|
||||
<svg:text class="edge-label" text-anchor="middle">
|
||||
<textPath class="text-path" [attr.href]="'#' + link.id" [style.dominant-baseline]="link.dominantBaseline"
|
||||
startOffset="50%">
|
||||
<textPath
|
||||
class="text-path"
|
||||
[attr.href]="'#' + link.id"
|
||||
[style.dominant-baseline]="link.dominantBaseline"
|
||||
startOffset="50%"
|
||||
>
|
||||
{{ link.label }}
|
||||
</textPath>
|
||||
</svg:text>
|
||||
</svg:g>
|
||||
<svg:g class="link-midpoint" *ngIf="link.midPoint"
|
||||
[attr.transform]="'translate(' + link.midPoint.x + ',' + link.midPoint.y + ')'">
|
||||
<svg:g
|
||||
class="link-midpoint"
|
||||
*ngIf="link.midPoint"
|
||||
[attr.transform]="'translate(' + link.midPoint.x + ',' + link.midPoint.y + ')'"
|
||||
>
|
||||
<ellipse rx="30" ry="10" />
|
||||
<svg:text alignment-baseline="central">{{ link.data.linkText | translateKey:'text' }}</svg:text>
|
||||
<svg:text alignment-baseline="central">{{ link.data.linkText | translateKey: 'text' }}</svg:text>
|
||||
</svg:g>
|
||||
</ng-template>
|
||||
|
||||
</ngx-graph>
|
||||
|
||||
@@ -1,62 +1,76 @@
|
||||
<div class="container space-top" fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<mat-form-field fxFlex="31%">
|
||||
<mat-label>{{'labels.inputs.Job Name' | translate}}</mat-label>
|
||||
<mat-label>{{ 'labels.inputs.Job Name' | translate }}</mat-label>
|
||||
<mat-select [formControl]="jobName" (selectionChange)="getWorkflowJobSteps($event.value)">
|
||||
<mat-option *ngFor="let job of jobNameOptions" [value]="job">
|
||||
{{ job | translateKey:'catalogs' }}
|
||||
{{ job | translateKey: 'catalogs' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
|
||||
<div class="action-button" fxLayoutGap="25px" *ngIf="jobStepName">
|
||||
<button mat-raised-button color="primary" (click)="addJobStep()">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>{{ 'labels.buttons.Link Job Step' | translate}}
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>{{ 'labels.buttons.Link Job Step' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="mat-elevation-z8 container" *ngIf="jobStepsData.length > 0">
|
||||
|
||||
<table mat-table [dataSource]="jobStepsData" #table cdkDropList [cdkDropListData]="jobStepsData"
|
||||
(cdkDropListDropped)="dropTable($event)">
|
||||
|
||||
<table
|
||||
mat-table
|
||||
[dataSource]="jobStepsData"
|
||||
#table
|
||||
cdkDropList
|
||||
[cdkDropListData]="jobStepsData"
|
||||
(cdkDropListDropped)="dropTable($event)"
|
||||
>
|
||||
<ng-container matColumnDef="stepName">
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Step Name' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let jobStep"> {{ jobStep.stepName }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Step Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let jobStep">{{ jobStep.stepName }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="stepOrder">
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Order' | translate }} </th>
|
||||
<td mat-cell *matCellDef="let jobStep"> {{ jobStep.order }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Order' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let jobStep">{{ jobStep.order }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef> {{ "labels.inputs.Actions" | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Actions' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let row; let rowIndex = index">
|
||||
<button type="button" mat-icon-button color="warn" (click)="removeJobStep(rowIndex)" matTooltip="{{ 'tooltips.Delete' | translate}}"
|
||||
matTooltipPosition="left">
|
||||
<button
|
||||
type="button"
|
||||
mat-icon-button
|
||||
color="warn"
|
||||
(click)="removeJobStep(rowIndex)"
|
||||
matTooltip="{{ 'tooltips.Delete' | translate }}"
|
||||
matTooltipPosition="left"
|
||||
>
|
||||
<fa-icon icon="trash"></fa-icon>
|
||||
</button>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row cdkDrag [cdkDragData]="row" *matRowDef="let row; columns: displayedColumns;"></tr>
|
||||
<tr mat-row cdkDrag [cdkDragData]="row" *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div *ngIf="stepOrderHasChanged" fxLayout="row" class="container margin-t space-top" fxLayout.xs="column"
|
||||
fxLayoutAlign="center" fxLayoutGap="2%">
|
||||
<div
|
||||
*ngIf="stepOrderHasChanged"
|
||||
fxLayout="row"
|
||||
class="container margin-t space-top"
|
||||
fxLayout.xs="column"
|
||||
fxLayoutAlign="center"
|
||||
fxLayoutGap="2%"
|
||||
>
|
||||
<button mat-raised-button [routerLink]="['../']">
|
||||
{{"labels.buttons.Cancel" | translate}}
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="saveChanges()">
|
||||
{{"labels.buttons.Apply Changes" | translate}}
|
||||
{{ 'labels.buttons.Apply Changes' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="container space-top" *ngIf="jobStepsData.length > 0 && !stepOrderHasChanged">
|
||||
<mifosx-workflow-diagram [jobStepsData]="jobStepsData"></mifosx-workflow-diagram>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,54 +1,52 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<form [formGroup]="reportForm" (ngSubmit)="submit()">
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="row wrap" fxLayout.lt-md="column" fxLayoutGap="4%">
|
||||
|
||||
<mat-form-field fxFlex="30%">
|
||||
<mat-label>{{ 'labels.inputs.Report Name' | translate }}</mat-label>
|
||||
<input matInput required formControlName="reportName">
|
||||
<input matInput required formControlName="reportName" />
|
||||
<mat-error *ngIf="reportForm.controls.reportName.hasError('required')">
|
||||
{{ 'labels.inputs.Report Name' | translate }} {{'labels.commons.is' | translate }} <strong>{{'labels.commons.required' | translate }}</strong>
|
||||
{{ 'labels.inputs.Report Name' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="30%">
|
||||
<mat-label>{{ 'labels.inputs.Report Type' | translate }}</mat-label>
|
||||
<mat-select required formControlName="reportType">
|
||||
<mat-option *ngFor="let allowedReportType of reportTemplateData.allowedReportTypes"
|
||||
[value]="allowedReportType">
|
||||
{{ allowedReportType | translateKey:'text' }}
|
||||
<mat-option
|
||||
*ngFor="let allowedReportType of reportTemplateData.allowedReportTypes"
|
||||
[value]="allowedReportType"
|
||||
>
|
||||
{{ allowedReportType | translateKey: 'text' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="reportForm.controls.reportType.hasError('required')">
|
||||
{{ 'labels.inputs.Report Type' | translate }} {{'labels.commons.is' | translate }} <strong>{{'labels.commons.required' | translate }}</strong>
|
||||
{{ 'labels.inputs.Report Type' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="30%">
|
||||
<mat-label>{{ 'labels.inputs.Report Sub Type' | translate }}</mat-label>
|
||||
<mat-select formControlName="reportSubType">
|
||||
<mat-option *ngFor="let allowedReportSubType of reportTemplateData.allowedReportSubTypes"
|
||||
[value]="allowedReportSubType">
|
||||
{{ allowedReportSubType | translateKey:'text' }}
|
||||
<mat-option
|
||||
*ngFor="let allowedReportSubType of reportTemplateData.allowedReportSubTypes"
|
||||
[value]="allowedReportSubType"
|
||||
>
|
||||
{{ allowedReportSubType | translateKey: 'text' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="row wrap" fxLayout.lt-md="column" fxLayoutGap="4%">
|
||||
|
||||
<mat-form-field fxFlex="40%">
|
||||
<mat-label>{{ 'labels.inputs.Report Category' | translate }}</mat-label>
|
||||
<mat-select formControlName="reportCategory">
|
||||
<mat-option *ngFor="let reportCategoryType of reportCategoryTypeOptions"
|
||||
[value]="reportCategoryType">
|
||||
{{ reportCategoryType | translateKey:'catalogs' }}
|
||||
<mat-option *ngFor="let reportCategoryType of reportCategoryTypeOptions" [value]="reportCategoryType">
|
||||
{{ reportCategoryType | translateKey: 'catalogs' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
@@ -58,11 +56,9 @@
|
||||
{{ 'labels.inputs.User Report (UI)' | translate }}
|
||||
</mat-checkbox>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="column">
|
||||
|
||||
<mat-form-field fxFlex="98%">
|
||||
<mat-label>{{ 'labels.inputs.Description' | translate }}</mat-label>
|
||||
<textarea matInput formControlName="description" cdkTextareaAutosize cdkAutosizeMinRows="2"></textarea>
|
||||
@@ -70,69 +66,88 @@
|
||||
|
||||
<mat-form-field fxFlex="98%">
|
||||
<mat-label>{{ 'labels.inputs.SQL' | translate }}</mat-label>
|
||||
<textarea matInput required formControlName="reportSql" cdkTextareaAutosize cdkAutosizeMinRows="6"></textarea>
|
||||
<textarea
|
||||
matInput
|
||||
required
|
||||
formControlName="reportSql"
|
||||
cdkTextareaAutosize
|
||||
cdkAutosizeMinRows="6"
|
||||
></textarea>
|
||||
<mat-error *ngIf="reportForm.controls.reportSql.hasError('required')">
|
||||
{{ 'labels.inputs.SQL' | translate }} {{'labels.commons.is' | translate }} <strong>{{'labels.commons.required' | translate }}</strong>
|
||||
{{ 'labels.inputs.SQL' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<br />
|
||||
|
||||
<div fxLayout="row wrap" fxLayoutGap="60%" fxLayout.lt-md="column">
|
||||
|
||||
<p fxFlex="20%" class="mat-title">{{ 'labels.inputs.Report Parameters' | translate }}</p>
|
||||
|
||||
<button mat-raised-button fxFlex="20%" type="button" color="primary" (click)="addReportParameter()">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>{{ 'labels.buttons.Add Report Parameter' | translate }}
|
||||
</button>
|
||||
|
||||
</div>
|
||||
|
||||
<table mat-table [dataSource]="dataSource" matSort>
|
||||
|
||||
<ng-container matColumnDef="parameterName">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.buttons.Parameters' | translate }} </th>
|
||||
<td mat-cell *matCellDef="let reportParameter"> {{ reportParameter.parameterName }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.buttons.Parameters' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let reportParameter">{{ reportParameter.parameterName }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="parameterNamePassed">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Parameter Name Passed to Pentaho' | translate }} </th>
|
||||
<td mat-cell *matCellDef="let reportParameter"> {{ reportParameter.reportParameterName }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>
|
||||
{{ 'labels.inputs.Parameter Name Passed to Pentaho' | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let reportParameter">{{ reportParameter.reportParameterName }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Actions' | translate }} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Actions' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let reportParameter" fxLayoutGap="15%">
|
||||
<button type="button" fxFlex="8%" color="primary" mat-icon-button
|
||||
(click)="editReportParameter(reportParameter)">
|
||||
<button
|
||||
type="button"
|
||||
fxFlex="8%"
|
||||
color="primary"
|
||||
mat-icon-button
|
||||
(click)="editReportParameter(reportParameter)"
|
||||
>
|
||||
<fa-icon icon="edit" size="lg"></fa-icon>
|
||||
</button>
|
||||
<button type="button" fxFlex="8%" color="warn" mat-icon-button
|
||||
(click)="deleteReportParameter(reportParameter)">
|
||||
<button
|
||||
type="button"
|
||||
fxFlex="8%"
|
||||
color="warn"
|
||||
mat-icon-button
|
||||
(click)="deleteReportParameter(reportParameter)"
|
||||
>
|
||||
<fa-icon icon="trash" size="lg"></fa-icon>
|
||||
</button>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
<mat-paginator [pageSizeOptions]="[10, 25, 50, 100]" showFirstLastButtons></mat-paginator>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">{{'labels.buttons.Cancel' | translate}}</button>
|
||||
<button mat-raised-button type="submit" color="primary"
|
||||
[disabled]="!reportForm.valid && reportParametersData.length === 0" *mifosxHasPermission="'CREATE_REPORT'">{{'labels.buttons.Submit' | translate }}</button>
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
type="submit"
|
||||
color="primary"
|
||||
[disabled]="!reportForm.valid && reportParametersData.length === 0"
|
||||
*mifosxHasPermission="'CREATE_REPORT'"
|
||||
>
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</mat-card-actions>
|
||||
|
||||
</form>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,18 +1,14 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<form [formGroup]="reportForm" (ngSubmit)="submit()">
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="row wrap" fxLayout.lt-md="column" fxLayoutGap="4%">
|
||||
|
||||
<mat-form-field fxFlex="30%">
|
||||
<mat-label>{{ 'labels.inputs.Report Name' | translate }}</mat-label>
|
||||
<input matInput required formControlName="reportName">
|
||||
<input matInput required formControlName="reportName" />
|
||||
<mat-error *ngIf="reportForm.controls.reportName.hasError('required')">
|
||||
{{ 'labels.inputs.Report Name' | translate }} {{'labels.commons.is' | translate }} <strong>{{'labels.commons.required' | translate }}</strong>
|
||||
{{ 'labels.inputs.Report Name' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
@@ -20,34 +16,34 @@
|
||||
<mat-label>{{ 'labels.inputs.Report Type' | translate }}</mat-label>
|
||||
<mat-select required formControlName="reportType">
|
||||
<mat-option *ngFor="let allowedReportType of reportData.allowedReportTypes" [value]="allowedReportType">
|
||||
{{ allowedReportType | translateKey:'text'}}
|
||||
{{ allowedReportType | translateKey: 'text' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="reportForm.controls.reportType.hasError('required')">
|
||||
{{ 'labels.inputs.Report Type' | translate }} {{'labels.commons.is' | translate }} <strong>{{'labels.commons.required' | translate }}</strong>
|
||||
{{ 'labels.inputs.Report Type' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="30%">
|
||||
<mat-label>{{ 'labels.inputs.Report Sub Type' | translate }}</mat-label>
|
||||
<mat-select formControlName="reportSubType">
|
||||
<mat-option *ngFor="let allowedReportSubType of reportData.allowedReportSubTypes"
|
||||
[value]="allowedReportSubType">
|
||||
{{ allowedReportSubType | translateKey:'text'}}
|
||||
<mat-option
|
||||
*ngFor="let allowedReportSubType of reportData.allowedReportSubTypes"
|
||||
[value]="allowedReportSubType"
|
||||
>
|
||||
{{ allowedReportSubType | translateKey: 'text' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="row wrap" fxLayout.lt-md="column" fxLayoutGap="4%">
|
||||
|
||||
<mat-form-field fxFlex="40%">
|
||||
<mat-label>{{ 'labels.inputs.Report Category' | translate }}</mat-label>
|
||||
<mat-select formControlName="reportCategory">
|
||||
<mat-option *ngFor="let reportCategoryType of reportCategoryTypeOptions"
|
||||
[value]="reportCategoryType">
|
||||
{{ reportCategoryType | translateKey:'catalogs' }}
|
||||
<mat-option *ngFor="let reportCategoryType of reportCategoryTypeOptions" [value]="reportCategoryType">
|
||||
{{ reportCategoryType | translateKey: 'catalogs' }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
@@ -57,11 +53,9 @@
|
||||
{{ 'labels.inputs.User Report (UI)' | translate }}
|
||||
</mat-checkbox>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="column">
|
||||
|
||||
<mat-form-field fxFlex="98%">
|
||||
<mat-label>{{ 'labels.inputs.Description' | translate }}</mat-label>
|
||||
<textarea matInput formControlName="description" cdkTextareaAutosize cdkAutosizeMinRows="2"></textarea>
|
||||
@@ -69,71 +63,97 @@
|
||||
|
||||
<mat-form-field fxFlex="98%">
|
||||
<mat-label> {{ 'labels.inputs.SQL' | translate }}</mat-label>
|
||||
<textarea matInput required formControlName="reportSql" cdkTextareaAutosize cdkAutosizeMinRows="6"></textarea>
|
||||
<textarea
|
||||
matInput
|
||||
required
|
||||
formControlName="reportSql"
|
||||
cdkTextareaAutosize
|
||||
cdkAutosizeMinRows="6"
|
||||
></textarea>
|
||||
<mat-error *ngIf="reportForm.controls.reportSql.hasError('required')">
|
||||
{{ 'labels.inputs.SQL' | translate }} {{'labels.commons.is' | translate }} <strong>{{'labels.commons.required' | translate }}</strong>
|
||||
{{ 'labels.inputs.SQL' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<br />
|
||||
|
||||
<div fxLayout="row wrap" fxLayoutGap="60%" fxLayout.lt-md="column">
|
||||
|
||||
<p fxFlex="20%" class="mat-title">{{ 'labels.inputs.Report Parameters' | translate }}</p>
|
||||
|
||||
<button mat-raised-button fxFlex="20%" type="button" *ngIf="!reportData.coreReport" color="primary"
|
||||
(click)="addReportParameter()">
|
||||
<button
|
||||
mat-raised-button
|
||||
fxFlex="20%"
|
||||
type="button"
|
||||
*ngIf="!reportData.coreReport"
|
||||
color="primary"
|
||||
(click)="addReportParameter()"
|
||||
>
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{ 'labels.buttons.Add Report Parameter' | translate }}
|
||||
</button>
|
||||
|
||||
</div>
|
||||
|
||||
<table mat-table [dataSource]="dataSource" matSort>
|
||||
|
||||
<ng-container matColumnDef="parameterName">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.buttons.Parameters' | translate }} </th>
|
||||
<td mat-cell *matCellDef="let reportParameter"> {{ reportParameter.parameterName }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.buttons.Parameters' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let reportParameter">{{ reportParameter.parameterName }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="parameterNamePassed">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Parameter Name Passed to Pentaho' | translate }} </th>
|
||||
<td mat-cell *matCellDef="let reportParameter"> {{ reportParameter.reportParameterName }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>
|
||||
{{ 'labels.inputs.Parameter Name Passed to Pentaho' | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let reportParameter">{{ reportParameter.reportParameterName }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef> {{ 'labels.inputs.Actions' | translate }} </th>
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Actions' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let reportParameter" fxLayoutGap="15%">
|
||||
<button *ngIf="!reportData.coreReport" type="button" fxFlex="8%" color="primary" mat-icon-button
|
||||
(click)="editReportParameter(reportParameter)">
|
||||
<button
|
||||
*ngIf="!reportData.coreReport"
|
||||
type="button"
|
||||
fxFlex="8%"
|
||||
color="primary"
|
||||
mat-icon-button
|
||||
(click)="editReportParameter(reportParameter)"
|
||||
>
|
||||
<fa-icon icon="edit" size="lg"></fa-icon>
|
||||
</button>
|
||||
<button *ngIf="!reportData.coreReport" type="button" fxFlex="8%" color="warn" mat-icon-button
|
||||
(click)="deleteReportParameter(reportParameter)">
|
||||
<button
|
||||
*ngIf="!reportData.coreReport"
|
||||
type="button"
|
||||
fxFlex="8%"
|
||||
color="warn"
|
||||
mat-icon-button
|
||||
(click)="deleteReportParameter(reportParameter)"
|
||||
>
|
||||
<fa-icon icon="trash" size="lg"></fa-icon>
|
||||
</button>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
</table>
|
||||
|
||||
<mat-paginator [pageSizeOptions]="[10, 25, 50, 100]" showFirstLastButtons></mat-paginator>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">{{'labels.buttons.Cancel' | translate}}</button>
|
||||
<button mat-raised-button color="primary"
|
||||
[disabled]="(!reportForm.valid || reportForm.pristine) && !isReportParametersChanged" *mifosxHasPermission="'UPDATE_REPORT'">{{'labels.buttons.Submit' | translate }}</button>
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
[disabled]="(!reportForm.valid || reportForm.pristine) && !isReportParametersChanged"
|
||||
*mifosxHasPermission="'UPDATE_REPORT'"
|
||||
>
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</mat-card-actions>
|
||||
|
||||
</form>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,99 +1,157 @@
|
||||
<div class="container m-b-20" fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px">
|
||||
<div #buttonCreateReport class="in-block">
|
||||
<button mat-raised-button color="primary" [routerLink]="['create']" *mifosxHasPermission="'CREATE_REPORT'">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{ 'labels.buttons.Create Report' | translate }}
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{ 'labels.buttons.Create Report' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div #filter fxLayout="row">
|
||||
<mat-form-field fxFlex>
|
||||
<mat-label>{{ 'labels.inputs.Filter' | translate }}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)" />
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
<div #filter fxLayout="row">
|
||||
<mat-form-field fxFlex>
|
||||
<mat-label>{{'labels.inputs.Filter' | translate}}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)">
|
||||
</mat-form-field>
|
||||
</div>
|
||||
<div #reportsTable class="mat-elevation-z8 table-container">
|
||||
<table mat-table [dataSource]="dataSource" matSort>
|
||||
<ng-container matColumnDef="reportName">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Report Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let report">{{ report.reportName }}</td>
|
||||
</ng-container>
|
||||
|
||||
<div #reportsTable class="mat-elevation-z8 table-container">
|
||||
<ng-container matColumnDef="reportType">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Report Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let report">{{ report.reportType | translateKey: 'text' }}</td>
|
||||
</ng-container>
|
||||
|
||||
<table mat-table [dataSource]="dataSource" matSort>
|
||||
<ng-container matColumnDef="reportSubType">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Report Sub Type' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let report">{{ report.reportSubType | translateKey: 'text' }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="reportName">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{ 'labels.inputs.Report Name' | translate }} </th>
|
||||
<td mat-cell *matCellDef="let report"> {{ report.reportName }} </td>
|
||||
</ng-container>
|
||||
<ng-container matColumnDef="reportCategory">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Report Category' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let report">{{ report.reportCategory | translateKey: 'catalogs' }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="reportType">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{ 'labels.inputs.Report Type' | translate }} </th>
|
||||
<td mat-cell *matCellDef="let report"> {{ report.reportType | translateKey:'text'}} </td>
|
||||
</ng-container>
|
||||
<ng-container matColumnDef="coreReport">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Core Report' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let report">
|
||||
<fa-icon
|
||||
*ngIf="report.coreReport"
|
||||
icon="check-circle"
|
||||
size="lg"
|
||||
class="true"
|
||||
[matTooltip]="'tooltips.Yes' | translate"
|
||||
matTooltipPosition="right"
|
||||
></fa-icon>
|
||||
<fa-icon
|
||||
*ngIf="!report.coreReport"
|
||||
icon="times-circle"
|
||||
size="lg"
|
||||
class="false"
|
||||
[matTooltip]="'tooltips.No' | translate"
|
||||
matTooltipPosition="right"
|
||||
></fa-icon>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="reportSubType">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{ 'labels.inputs.Report Sub Type' | translate }} </th>
|
||||
<td mat-cell *matCellDef="let report"> {{ report.reportSubType | translateKey:'text'}} </td>
|
||||
</ng-container>
|
||||
<ng-container matColumnDef="userReport">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.User Report' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let report">
|
||||
<fa-icon
|
||||
*ngIf="report.useReport"
|
||||
icon="check-circle"
|
||||
size="lg"
|
||||
class="true"
|
||||
[matTooltip]="'tooltips.Yes' | translate"
|
||||
matTooltipPosition="right"
|
||||
></fa-icon>
|
||||
<fa-icon
|
||||
*ngIf="!report.useReport"
|
||||
icon="times-circle"
|
||||
size="lg"
|
||||
class="false"
|
||||
[matTooltip]="'tooltips.No' | translate"
|
||||
matTooltipPosition="right"
|
||||
></fa-icon>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="reportCategory">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{ 'labels.inputs.Report Category' | translate }} </th>
|
||||
<td mat-cell *matCellDef="let report"> {{ report.reportCategory | translateKey:'catalogs' }} </td>
|
||||
</ng-container>
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns" [routerLink]="[row.id]" class="select-row"></tr>
|
||||
</table>
|
||||
|
||||
<ng-container matColumnDef="coreReport">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{ 'labels.inputs.Core Report' | translate }} </th>
|
||||
<td mat-cell *matCellDef="let report">
|
||||
<fa-icon *ngIf="report.coreReport" icon="check-circle" size="lg" class="true" [matTooltip]="('tooltips.Yes' | translate)"
|
||||
matTooltipPosition="right"></fa-icon>
|
||||
<fa-icon *ngIf="!report.coreReport" icon="times-circle" size="lg" class="false" [matTooltip]="('tooltips.No' | translate)"
|
||||
matTooltipPosition="right"></fa-icon>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="userReport">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{ 'labels.inputs.User Report' | translate }} </th>
|
||||
<td mat-cell *matCellDef="let report">
|
||||
<fa-icon *ngIf="report.useReport" icon="check-circle" size="lg" class="true" [matTooltip]="('tooltips.Yes' | translate)"
|
||||
matTooltipPosition="right"></fa-icon>
|
||||
<fa-icon *ngIf="!report.useReport" icon="times-circle" size="lg" class="false" [matTooltip]="('tooltips.No' | translate)"
|
||||
matTooltipPosition="right"></fa-icon>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;" [routerLink]="[row.id]"
|
||||
class="select-row"></tr>
|
||||
</table>
|
||||
|
||||
<mat-paginator [pageSizeOptions]="[10, 25, 50, 100]" showFirstLastButtons></mat-paginator>
|
||||
|
||||
</div>
|
||||
<mat-paginator [pageSizeOptions]="[10, 25, 50, 100]" showFirstLastButtons></mat-paginator>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<ng-template #templateButtonCreateReport let-popover="popover">
|
||||
<h2>{{ 'labels.buttons.Create Report' | translate }}</h2>
|
||||
<p class="mw300">{{ 'labels.text.Create new report' | translate }}</p>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<button mat-raised-button color="warn" (click)="popover.close();configurationWizardService.closeConfigWizard()">{{'labels.buttons.Close' | translate }}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();previousStep()">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();showPopover(templateFilter,filter, 'bottom', true)">{{'labels.buttons.Next' | translate }}</button>
|
||||
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
|
||||
{{ 'labels.buttons.Close' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); previousStep()">
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="popover.close(); showPopover(templateFilter, filter, 'bottom', true)"
|
||||
>
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #templateFilter let-popover="popover">
|
||||
<h4>{{ 'labels.heading.Filter reports by name' | translate }}</h4>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<button mat-raised-button color="warn" (click)="popover.close();configurationWizardService.closeConfigWizard()">{{'labels.buttons.Close' | translate }}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();showPopover(templateButtonCreateReport, buttonCreateReport, 'bottom', true)">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();showPopover(templateReportsTable,reportsTable, 'top', true)">{{'labels.buttons.Next' | translate }}</button>
|
||||
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
|
||||
{{ 'labels.buttons.Close' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="popover.close(); showPopover(templateButtonCreateReport, buttonCreateReport, 'bottom', true)"
|
||||
>
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="popover.close(); showPopover(templateReportsTable, reportsTable, 'top', true)"
|
||||
>
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #templateReportsTable let-popover="popover">
|
||||
<h4 class="mw300">{{ 'labels.heading.List of all currently available reports' | translate }}: <a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/67895354/Manage+Reports" target="_blank">{{'labels.heading.Manage Reports' | translate}}</a></h4>
|
||||
<h4 class="mw300">
|
||||
{{ 'labels.heading.List of all currently available reports' | translate }}:
|
||||
<a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/67895354/Manage+Reports" target="_blank">{{
|
||||
'labels.heading.Manage Reports' | translate
|
||||
}}</a>
|
||||
</h4>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<button mat-raised-button color="warn" (click)="popover.close();configurationWizardService.closeConfigWizard()">{{'labels.buttons.Close' | translate }}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();showPopover(templateFilter,filter, 'bottom', true)">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();nextStep()">{{'labels.buttons.Next' | translate }}</button>
|
||||
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
|
||||
{{ 'labels.buttons.Close' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="popover.close(); showPopover(templateFilter, filter, 'bottom', true)"
|
||||
>
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); nextStep()">
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
+17
-13
@@ -1,11 +1,11 @@
|
||||
<h1 mat-dialog-title>{{ data.parameterName ? ('labels.buttons.Edit' | translate) : ('labels.buttons.Add' | translate) }} {{'labels.heading.Report Parameter' | translate }}</h1>
|
||||
<h1 mat-dialog-title>
|
||||
{{ data.parameterName ? ('labels.buttons.Edit' | translate) : ('labels.buttons.Add' | translate) }}
|
||||
{{ 'labels.heading.Report Parameter' | translate }}
|
||||
</h1>
|
||||
|
||||
<mat-dialog-content>
|
||||
|
||||
<form [formGroup]="reportParameterForm">
|
||||
|
||||
<div fxLayout="column">
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{ 'labels.inputs.Select allowed parameter' | translate }}</mat-label>
|
||||
<mat-select required formControlName="parameterName">
|
||||
@@ -14,23 +14,27 @@
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="reportParameterForm.controls.parameterName.hasError('required')">
|
||||
{{ 'labels.inputs.Report Parameters' | translate }} {{'labels.commons.is' | translate }} <strong>{{'labels.commons.required' | translate }}</strong>
|
||||
{{ 'labels.inputs.Report Parameters' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{'labels.inputs.Parameter Name Passed to Pentaho' | translate }}</mat-label>
|
||||
<input matInput formControlName="reportParameterName">
|
||||
<mat-label>{{ 'labels.inputs.Parameter Name Passed to Pentaho' | translate }}</mat-label>
|
||||
<input matInput formControlName="reportParameterName" />
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
</mat-dialog-content>
|
||||
|
||||
<mat-dialog-actions align="end">
|
||||
<button mat-button mat-dialog-close>{{'labels.buttons.Cancel' | translate}}</button>
|
||||
<button mat-raised-button color="primary"
|
||||
[disabled]="!reportParameterForm.valid || reportParameterForm.pristine" (click)="submit()">{{'labels.buttons.Submit' | translate }}</button>
|
||||
<button mat-button mat-dialog-close>{{ 'labels.buttons.Cancel' | translate }}</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
[disabled]="!reportParameterForm.valid || reportParameterForm.pristine"
|
||||
(click)="submit()"
|
||||
>
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</mat-dialog-actions>
|
||||
|
||||
@@ -1,35 +1,27 @@
|
||||
<div class="container m-b-20" fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px">
|
||||
|
||||
<button mat-raised-button color="primary" [routerLink]="['edit']" *mifosxHasPermission="'UPDATE_REPORT'">
|
||||
<fa-icon icon="edit" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Edit' | translate }}
|
||||
{{ 'labels.buttons.Edit' | translate }}
|
||||
</button>
|
||||
|
||||
<span *ngIf="!reportData.coreReport">
|
||||
<button mat-raised-button color="warn" (click)="delete()" *mifosxHasPermission="'DELETE_REPORT'">
|
||||
<fa-icon icon="trash" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Delete' | translate }}
|
||||
{{ 'labels.buttons.Delete' | translate }}
|
||||
</button>
|
||||
</span>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<mat-card-title>{{ reportData.reportName }}</mat-card-title>
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="row wrap" class="content">
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{ 'labels.inputs.Report Type' | translate }}:
|
||||
</div>
|
||||
<div fxFlex="50%" class="mat-body-strong">{{ 'labels.inputs.Report Type' | translate }}:</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
{{ reportData.reportType | translateKey:'text' }}
|
||||
{{ reportData.reportType | translateKey: 'text' }}
|
||||
</div>
|
||||
|
||||
<div *ngIf="reportData.reportSubType" fxFlex="50%" class="mat-body-strong">
|
||||
@@ -37,37 +29,27 @@
|
||||
</div>
|
||||
|
||||
<div *ngIf="reportData.reportSubType" fxFlex="50%">
|
||||
{{ reportData.reportSubType | translateKey:'text' }}
|
||||
{{ reportData.reportSubType | translateKey: 'text' }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{ 'labels.inputs.Report Category' | translate }}:
|
||||
</div>
|
||||
<div fxFlex="50%" class="mat-body-strong">{{ 'labels.inputs.Report Category' | translate }}:</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
{{ reportData.reportCategory | translateKey:'catalogs' }}
|
||||
{{ reportData.reportCategory | translateKey: 'catalogs' }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{ 'labels.inputs.Core Report' | translate }}:
|
||||
</div>
|
||||
<div fxFlex="50%" class="mat-body-strong">{{ 'labels.inputs.Core Report' | translate }}:</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
{{ reportData.coreReport | yesNo }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%" class="mat-body-strong">
|
||||
{{ 'labels.inputs.User Report' | translate }}:
|
||||
</div>
|
||||
<div fxFlex="50%" class="mat-body-strong">{{ 'labels.inputs.User Report' | translate }}:</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
{{ reportData.useReport | yesNo }}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,39 +1,37 @@
|
||||
<div class="container">
|
||||
|
||||
<form [formGroup]="surveyForm" (ngSubmit)="submit()">
|
||||
|
||||
<div fxLayout="column" fxLayoutGap="4%">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Key' | translate}}</mat-label>
|
||||
<input matInput maxlength="32" required formControlName="key">
|
||||
<mat-label>{{ 'labels.inputs.Key' | translate }}</mat-label>
|
||||
<input matInput maxlength="32" required formControlName="key" />
|
||||
<mat-error *ngIf="surveyForm.controls.key.hasError('required')">
|
||||
{{'labels.inputs.Key' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Key' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Name' | translate}}</mat-label>
|
||||
<input matInput maxlength="255" required formControlName="name">
|
||||
<mat-label>{{ 'labels.inputs.Name' | translate }}</mat-label>
|
||||
<input matInput maxlength="255" required formControlName="name" />
|
||||
<mat-error *ngIf="surveyForm.controls.name.hasError('required')">
|
||||
{{'labels.inputs.Name' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Name' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{ 'labels.inputs.Country Code' | translate }}</mat-label>
|
||||
<input matInput maxlength="2" required formControlName="countryCode">
|
||||
<input matInput maxlength="2" required formControlName="countryCode" />
|
||||
<mat-error *ngIf="surveyForm.controls.countryCode.hasError('required')">
|
||||
{{ 'labels.inputs.Country Code' | translate }} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Country Code' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
<mat-error *ngIf="surveyForm.controls.countryCode.hasError('pattern')">
|
||||
{{ 'labels.inputs.Country Code' | translate }} <strong>{{ 'labels.commons.must consist of 2 alphabetic characters' | translate }}</strong>
|
||||
{{ 'labels.inputs.Country Code' | translate }}
|
||||
<strong>{{ 'labels.commons.must consist of 2 alphabetic characters' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
@@ -42,48 +40,80 @@
|
||||
<textarea matInput formControlName="description" cdkTextareaAutosize cdkAutosizeMinRows="2"></textarea>
|
||||
</mat-form-field>
|
||||
|
||||
<div fxFlexFill fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px" *ngIf="!questionDatas.length">
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">{{'labels.buttons.Cancel' | translate}}</button>
|
||||
<button type="button" mat-raised-button color="primary" [disabled]="!(this.surveyForm.get('key').valid && this.surveyForm.get('name').valid && this.surveyForm.get('countryCode').valid)" (click)="addQuestion()">
|
||||
{{'labels.buttons.Proceed' | translate}}
|
||||
<div
|
||||
fxFlexFill
|
||||
fxLayout="row"
|
||||
fxLayout.xs="column"
|
||||
fxLayoutAlign="center"
|
||||
fxLayoutGap="5px"
|
||||
*ngIf="!questionDatas.length"
|
||||
>
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
[disabled]="
|
||||
!(
|
||||
this.surveyForm.get('key').valid &&
|
||||
this.surveyForm.get('name').valid &&
|
||||
this.surveyForm.get('countryCode').valid
|
||||
)
|
||||
"
|
||||
(click)="addQuestion()"
|
||||
>
|
||||
{{ 'labels.buttons.Proceed' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
</mat-card>
|
||||
|
||||
<div cdkDropList (cdkDropListDropped)="dropQuestion($event)" fxLayout="column" fxLayoutGap="4%">
|
||||
|
||||
<mat-card cdkDrag cdkDragLockAxis="y" formArrayName="questionDatas" *ngFor="let question of questionDatas.controls; let questionIndex = index; last as isLast">
|
||||
|
||||
<mat-card
|
||||
cdkDrag
|
||||
cdkDragLockAxis="y"
|
||||
formArrayName="questionDatas"
|
||||
*ngFor="let question of questionDatas.controls; let questionIndex = index; last as isLast"
|
||||
>
|
||||
<mat-card-content>
|
||||
|
||||
<div fxFlexFill fxLayoutGap="2%" fxLayout.lt-md="column" fxLayout="row wrap" [formGroupName]="questionIndex">
|
||||
|
||||
<div
|
||||
fxFlexFill
|
||||
fxLayoutGap="2%"
|
||||
fxLayout.lt-md="column"
|
||||
fxLayout="row wrap"
|
||||
[formGroupName]="questionIndex"
|
||||
>
|
||||
<div fxFlex="98%" fxLayout="row wrap" fxLayoutGap="2%" fxLayoutAlign="space-between center">
|
||||
<h2 class="mat-h2">{{'labels.heading.Question' | translate}} {{ questionIndex + 1 }}</h2>
|
||||
<button mat-raised-button color="warn" (click)="removeQuestion(questionIndex)" [disabled]="questionDatas.controls.length === 1">
|
||||
<h2 class="mat-h2">{{ 'labels.heading.Question' | translate }} {{ questionIndex + 1 }}</h2>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="warn"
|
||||
(click)="removeQuestion(questionIndex)"
|
||||
[disabled]="questionDatas.controls.length === 1"
|
||||
>
|
||||
<fa-icon icon="trash" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Delete' | translate }} {{'labels.heading.Question' | translate}}
|
||||
{{ 'labels.buttons.Delete' | translate }} {{ 'labels.heading.Question' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Key' | translate}}</mat-label>
|
||||
<input matInput maxlength="32" required formControlName="key">
|
||||
<mat-label>{{ 'labels.inputs.Key' | translate }}</mat-label>
|
||||
<input matInput maxlength="32" required formControlName="key" />
|
||||
<mat-error *ngIf="question.controls.key.hasError('required')">
|
||||
{{'labels.inputs.Key' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Key' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48">
|
||||
<mat-label>{{'labels.inputs.Text' | translate}}</mat-label>
|
||||
<input matInput maxlength="255" required formControlName="text">
|
||||
<mat-label>{{ 'labels.inputs.Text' | translate }}</mat-label>
|
||||
<input matInput maxlength="255" required formControlName="text" />
|
||||
<mat-error *ngIf="question.controls.text.hasError('required')">
|
||||
{{'labels.inputs.Text' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Text' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
@@ -95,75 +125,95 @@
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<div fxFlex="98%" fxLayout="row" fxLayoutAlign="space-between center">
|
||||
<h4 class="mat-h4">{{'labels.heading.Options' | translate}}</h4>
|
||||
<h4 class="mat-h4">{{ 'labels.heading.Options' | translate }}</h4>
|
||||
<button type="button" mat-raised-button color="primary" (click)="addResponse(questionIndex)">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Add' | translate}} {{'labels.inputs.Option' | translate}}
|
||||
{{ 'labels.buttons.Add' | translate }} {{ 'labels.inputs.Option' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div cdkDropList (cdkDropListDropped)="dropResponse($event, questionIndex)" fxFlexFill fxLayout="row wrap" fxLayoutGap="2%">
|
||||
|
||||
<div cdkDrag cdkDragLockAxis="y" fxFlexFill fxLayout="row wrap" fxLayoutGap="2%" formArrayName="responseDatas" *ngFor="let response of getResponseDatas(questionIndex).controls; let responseIndex = index;">
|
||||
|
||||
<div
|
||||
cdkDropList
|
||||
(cdkDropListDropped)="dropResponse($event, questionIndex)"
|
||||
fxFlexFill
|
||||
fxLayout="row wrap"
|
||||
fxLayoutGap="2%"
|
||||
>
|
||||
<div
|
||||
cdkDrag
|
||||
cdkDragLockAxis="y"
|
||||
fxFlexFill
|
||||
fxLayout="row wrap"
|
||||
fxLayoutGap="2%"
|
||||
formArrayName="responseDatas"
|
||||
*ngFor="let response of getResponseDatas(questionIndex).controls; let responseIndex = index"
|
||||
>
|
||||
<div fxFlexFill fxLayout="row wrap" fxLayoutGap="2%" [formGroupName]="responseIndex">
|
||||
|
||||
<mat-form-field fxFlex="43%">
|
||||
<mat-label>{{'labels.inputs.Text' | translate}}</mat-label>
|
||||
<input matInput required formControlName="text">
|
||||
<mat-label>{{ 'labels.inputs.Text' | translate }}</mat-label>
|
||||
<input matInput required formControlName="text" />
|
||||
<mat-error *ngIf="response.controls.text.hasError('required')">
|
||||
{{'labels.inputs.Text' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Text' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="43%">
|
||||
<mat-label>{{'labels.inputs.Value' | translate}}</mat-label>
|
||||
<input matInput required formControlName="value">
|
||||
<mat-label>{{ 'labels.inputs.Value' | translate }}</mat-label>
|
||||
<input matInput required formControlName="value" />
|
||||
<mat-error *ngIf="response.controls.value.hasError('required')">
|
||||
{{'labels.inputs.Value' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Value' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
<mat-error *ngIf="response.controls.value.hasError('pattern')">
|
||||
{{'labels.inputs.Value' | translate}} <strong>{{'labels.commons.must be an integer between -9999 and 9999' | translate}}</strong>
|
||||
{{ 'labels.inputs.Value' | translate }}
|
||||
<strong>{{ 'labels.commons.must be an integer between -9999 and 9999' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<div fxFlex="8%">
|
||||
<div class="delete-wrapper">
|
||||
<button type="button" color="warn" mat-icon-button [matTooltip]="('labels.buttons.Delete' | translate)" matTooltipPosition="above" (click)="removeResponse(getResponseDatas(questionIndex), responseIndex)" [disabled]="getResponseDatas(questionIndex).controls.length === 1">
|
||||
<button
|
||||
type="button"
|
||||
color="warn"
|
||||
mat-icon-button
|
||||
[matTooltip]="'labels.buttons.Delete' | translate"
|
||||
matTooltipPosition="above"
|
||||
(click)="removeResponse(getResponseDatas(questionIndex), responseIndex)"
|
||||
[disabled]="getResponseDatas(questionIndex).controls.length === 1"
|
||||
>
|
||||
<fa-icon icon="trash" size="lg"></fa-icon>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
<div>
|
||||
|
||||
<mat-card-actions *ngIf="isLast" fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
|
||||
<button type="button" mat-raised-button (click)="cancelSurvey()">{{'labels.buttons.Cancel' | translate}}</button>
|
||||
<button type="button" mat-raised-button color="primary"(click)="addQuestion()">
|
||||
<mat-card-actions
|
||||
*ngIf="isLast"
|
||||
fxLayout="row"
|
||||
fxLayout.xs="column"
|
||||
fxLayoutAlign="center"
|
||||
fxLayoutGap="5px"
|
||||
>
|
||||
<button type="button" mat-raised-button (click)="cancelSurvey()">
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button type="button" mat-raised-button color="primary" (click)="addQuestion()">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Add' | translate}} {{'labels.heading.Question' | translate}}
|
||||
{{ 'labels.buttons.Add' | translate }} {{ 'labels.heading.Question' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!surveyForm.valid">
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!surveyForm.valid">{{'labels.buttons.Submit' | translate}}</button>
|
||||
</mat-card-actions>
|
||||
|
||||
</div>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,39 +1,91 @@
|
||||
<div class="container">
|
||||
<form [formGroup]="surveyForm" (ngSubmit)="submit()">
|
||||
<div fxLayout="column" fxLayoutGap="4%">
|
||||
<mat-card>
|
||||
<mat-card-content>
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{ 'labels.inputs.Key' | translate }}</mat-label>
|
||||
<input matInput maxlength="32" required formControlName="key" />
|
||||
<mat-error *ngIf="surveyForm.controls.key.hasError('required')">
|
||||
{{ 'labels.inputs.Key' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<form [formGroup]="surveyForm" (ngSubmit)="submit()">
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{ 'labels.inputs.Name' | translate }}</mat-label>
|
||||
<input matInput maxlength="255" required formControlName="name" />
|
||||
<mat-error *ngIf="surveyForm.controls.name.hasError('required')">
|
||||
{{ 'labels.inputs.Name' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<div fxLayout="column" fxLayoutGap="4%">
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{ 'labels.inputs.Country Code' | translate }} </mat-label>
|
||||
<input matInput maxlength="2" required formControlName="countryCode" />
|
||||
<mat-error *ngIf="surveyForm.controls.countryCode.hasError('required')">
|
||||
{{ 'labels.inputs.Country Code' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
<mat-error *ngIf="surveyForm.controls.countryCode.hasError('pattern')">
|
||||
{{ 'labels.inputs.Country Code' | translate }}
|
||||
<strong>{{ 'labels.commons.must consist of 2 alphabetic characters' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-card>
|
||||
<mat-form-field fxFlex="98%">
|
||||
<mat-label>{{ 'labels.inputs.Description' | translate }}</mat-label>
|
||||
<textarea matInput formControlName="description" cdkTextareaAutosize cdkAutosizeMinRows="2"></textarea>
|
||||
</mat-form-field>
|
||||
</div>
|
||||
</mat-card-content>
|
||||
</mat-card>
|
||||
|
||||
<div cdkDropList (cdkDropListDropped)="dropQuestion($event)" fxLayout="column" fxLayoutGap="4%">
|
||||
<mat-card
|
||||
cdkDrag
|
||||
cdkDragLockAxis="y"
|
||||
formArrayName="questionDatas"
|
||||
*ngFor="let question of questionDatas.controls; let questionIndex = index; last as isLast"
|
||||
>
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="row wrap" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<div
|
||||
fxFlexFill
|
||||
fxLayoutGap="2%"
|
||||
fxLayout.lt-md="column"
|
||||
fxLayout="row wrap"
|
||||
[formGroupName]="questionIndex"
|
||||
>
|
||||
<div fxFlex="98%" fxLayout="row wrap" fxLayoutGap="2%" fxLayoutAlign="space-between center">
|
||||
<h2 class="mat-h2">{{ 'labels.heading.Question' | translate }} {{ questionIndex + 1 }}</h2>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="warn"
|
||||
(click)="removeQuestion(questionIndex)"
|
||||
[disabled]="questionDatas.controls.length === 1"
|
||||
>
|
||||
<fa-icon icon="trash" class="m-r-10"></fa-icon>
|
||||
{{ 'labels.buttons.Delete' | translate }} {{ 'labels.heading.Question' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Key' | translate}}</mat-label>
|
||||
<input matInput maxlength="32" required formControlName="key">
|
||||
<mat-error *ngIf="surveyForm.controls.key.hasError('required')">
|
||||
{{'labels.inputs.Key' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' |translate}}</strong>
|
||||
<mat-label>{{ 'labels.inputs.Key' | translate }}</mat-label>
|
||||
<input matInput maxlength="32" required formControlName="key" />
|
||||
<mat-error *ngIf="question.get('key').hasError('required')">
|
||||
{{ 'labels.inputs.Key' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Name' | translate}}</mat-label>
|
||||
<input matInput maxlength="255" required formControlName="name">
|
||||
<mat-error *ngIf="surveyForm.controls.name.hasError('required')">
|
||||
{{'labels.inputs.Name' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{ 'labels.inputs.Country Code' | translate }} </mat-label>
|
||||
<input matInput maxlength="2" required formControlName="countryCode">
|
||||
<mat-error *ngIf="surveyForm.controls.countryCode.hasError('required')">
|
||||
{{ 'labels.inputs.Country Code' | translate }} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
</mat-error>
|
||||
<mat-error *ngIf="surveyForm.controls.countryCode.hasError('pattern')">
|
||||
{{ 'labels.inputs.Country Code' | translate }} <strong>{{ 'labels.commons.must consist of 2 alphabetic characters' | translate }}</strong>
|
||||
<mat-form-field fxFlex="48">
|
||||
<mat-label>{{ 'labels.inputs.Text' | translate }}</mat-label>
|
||||
<input matInput maxlength="255" required formControlName="text" />
|
||||
<mat-error *ngIf="question.get('text').hasError('required')">
|
||||
{{ 'labels.inputs.Text' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
@@ -42,121 +94,98 @@
|
||||
<textarea matInput formControlName="description" cdkTextareaAutosize cdkAutosizeMinRows="2"></textarea>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
</mat-card>
|
||||
|
||||
<div cdkDropList (cdkDropListDropped)="dropQuestion($event)" fxLayout="column" fxLayoutGap="4%">
|
||||
|
||||
<mat-card cdkDrag cdkDragLockAxis="y" formArrayName="questionDatas" *ngFor="let question of questionDatas.controls; let questionIndex = index; last as isLast">
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxFlexFill fxLayoutGap="2%" fxLayout.lt-md="column" fxLayout="row wrap" [formGroupName]="questionIndex">
|
||||
|
||||
<div fxFlex="98%" fxLayout="row wrap" fxLayoutGap="2%" fxLayoutAlign="space-between center">
|
||||
<h2 class="mat-h2">{{'labels.heading.Question' | translate}} {{ questionIndex + 1 }}</h2>
|
||||
<button mat-raised-button color="warn" (click)="removeQuestion(questionIndex)" [disabled]="questionDatas.controls.length === 1">
|
||||
<fa-icon icon="trash" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Delete' | translate }} {{'labels.heading.Question' | translate}}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<mat-form-field fxFlex="48%">
|
||||
<mat-label>{{'labels.inputs.Key' | translate}}</mat-label>
|
||||
<input matInput maxlength="32" required formControlName="key">
|
||||
<mat-error *ngIf="question.get('key').hasError('required')">
|
||||
{{'labels.inputs.Key' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="48">
|
||||
<mat-label>{{'labels.inputs.Text' | translate}}</mat-label>
|
||||
<input matInput maxlength="255" required formControlName="text">
|
||||
<mat-error *ngIf="question.get('text').hasError('required')">
|
||||
{{'labels.inputs.Text' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="98%">
|
||||
<mat-label>{{ 'labels.inputs.Description' | translate }}</mat-label>
|
||||
<textarea matInput formControlName="description" cdkTextareaAutosize cdkAutosizeMinRows="2"></textarea>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<div fxFlex="98%" fxLayout="row" fxLayoutAlign="space-between center">
|
||||
<h4 class="mat-h4">{{'labels.heading.Options' | translate}}</h4>
|
||||
<button type="button" mat-raised-button color="primary" (click)="addResponse(questionIndex)">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Add' | translate}} {{'labels.inputs.Option' | translate}}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div cdkDropList (cdkDropListDropped)="dropResponse($event, questionIndex)" fxFlexFill fxLayout="row wrap" fxLayoutGap="2%">
|
||||
|
||||
<div cdkDrag cdkDragLockAxis="y" fxFlexFill fxLayout="row wrap" fxLayoutGap="2%" formArrayName="responseDatas" *ngFor="let response of getResponseDatas(questionIndex).controls; let responseIndex = index;">
|
||||
|
||||
<div fxFlexFill fxLayout="row wrap" fxLayoutGap="2%" [formGroupName]="responseIndex">
|
||||
|
||||
<mat-form-field fxFlex="43%">
|
||||
<mat-label>{{'labels.inputs.Text' | translate}}</mat-label>
|
||||
<input matInput required formControlName="text">
|
||||
<mat-error *ngIf="response.get('text').hasError('required')">
|
||||
{{'labels.inputs.Text' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field fxFlex="43%">
|
||||
<mat-label>{{'labels.inputs.Value' | translate}}</mat-label>
|
||||
<input matInput required formControlName="value">
|
||||
<mat-error *ngIf="response.get('value').hasError('required')">
|
||||
{{'labels.inputs.Value' | translate}} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
</mat-error>
|
||||
<mat-error *ngIf="response.get('value').hasError('pattern')">
|
||||
{{'labels.inputs.Value' | translate}}<strong>{{'labels.commons.must be an integer between -9999 and 9999' | translate}}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<div fxFlex="8%">
|
||||
<div class="delete-wrapper">
|
||||
<button type="button" color="warn" mat-icon-button [matTooltip]="('labels.buttons.Delete' | translate)" matTooltipPosition="above" (click)="removeResponse(getResponseDatas(questionIndex), responseIndex)" [disabled]="getResponseDatas(questionIndex).controls.length === 1">
|
||||
<fa-icon icon="trash" size="lg"></fa-icon>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
|
||||
<div fxFlex="98%" fxLayout="row" fxLayoutAlign="space-between center">
|
||||
<h4 class="mat-h4">{{ 'labels.heading.Options' | translate }}</h4>
|
||||
<button type="button" mat-raised-button color="primary" (click)="addResponse(questionIndex)">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{ 'labels.buttons.Add' | translate }} {{ 'labels.inputs.Option' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
<div
|
||||
cdkDropList
|
||||
(cdkDropListDropped)="dropResponse($event, questionIndex)"
|
||||
fxFlexFill
|
||||
fxLayout="row wrap"
|
||||
fxLayoutGap="2%"
|
||||
>
|
||||
<div
|
||||
cdkDrag
|
||||
cdkDragLockAxis="y"
|
||||
fxFlexFill
|
||||
fxLayout="row wrap"
|
||||
fxLayoutGap="2%"
|
||||
formArrayName="responseDatas"
|
||||
*ngFor="let response of getResponseDatas(questionIndex).controls; let responseIndex = index"
|
||||
>
|
||||
<div fxFlexFill fxLayout="row wrap" fxLayoutGap="2%" [formGroupName]="responseIndex">
|
||||
<mat-form-field fxFlex="43%">
|
||||
<mat-label>{{ 'labels.inputs.Text' | translate }}</mat-label>
|
||||
<input matInput required formControlName="text" />
|
||||
<mat-error *ngIf="response.get('text').hasError('required')">
|
||||
{{ 'labels.inputs.Text' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<div>
|
||||
|
||||
<mat-card-actions *ngIf="isLast" fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
|
||||
<button type="button" mat-raised-button (click)="cancelSurvey()">{{'labels.buttons.Cancel' | translate}}</button>
|
||||
<button type="button" mat-raised-button color="primary" (click)="addQuestion()">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Add' | translate}} {{'labels.heading.Question' | translate}}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!surveyForm.valid">{{'labels.text.Edit Survey' | translate}}</button>
|
||||
</mat-card-actions>
|
||||
<mat-form-field fxFlex="43%">
|
||||
<mat-label>{{ 'labels.inputs.Value' | translate }}</mat-label>
|
||||
<input matInput required formControlName="value" />
|
||||
<mat-error *ngIf="response.get('value').hasError('required')">
|
||||
{{ 'labels.inputs.Value' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
<mat-error *ngIf="response.get('value').hasError('pattern')">
|
||||
{{ 'labels.inputs.Value' | translate
|
||||
}}<strong>{{ 'labels.commons.must be an integer between -9999 and 9999' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
<div fxFlex="8%">
|
||||
<div class="delete-wrapper">
|
||||
<button
|
||||
type="button"
|
||||
color="warn"
|
||||
mat-icon-button
|
||||
[matTooltip]="'labels.buttons.Delete' | translate"
|
||||
matTooltipPosition="above"
|
||||
(click)="removeResponse(getResponseDatas(questionIndex), responseIndex)"
|
||||
[disabled]="getResponseDatas(questionIndex).controls.length === 1"
|
||||
>
|
||||
<fa-icon icon="trash" size="lg"></fa-icon>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</mat-card-content>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<mat-card-actions
|
||||
*ngIf="isLast"
|
||||
fxLayout="row"
|
||||
fxLayout.xs="column"
|
||||
fxLayoutAlign="center"
|
||||
fxLayoutGap="5px"
|
||||
>
|
||||
<button type="button" mat-raised-button (click)="cancelSurvey()">
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button type="button" mat-raised-button color="primary" (click)="addQuestion()">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{ 'labels.buttons.Add' | translate }} {{ 'labels.heading.Question' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!surveyForm.valid">
|
||||
{{ 'labels.text.Edit Survey' | translate }}
|
||||
</button>
|
||||
</mat-card-actions>
|
||||
</div>
|
||||
</mat-card>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
@@ -1,71 +1,84 @@
|
||||
<div class="container m-b-20" fxLayout="row" fxLayoutAlign="end" fxLayoutGap="20px">
|
||||
<button mat-raised-button color="primary" [routerLink]="['create']">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Create Surveys' | translate}}
|
||||
{{ 'labels.buttons.Create Surveys' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<div fxLayout="row">
|
||||
<mat-form-field fxFlex>
|
||||
<mat-label>{{'labels.inputs.Filter' | translate}}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)">
|
||||
<mat-label>{{ 'labels.inputs.Filter' | translate }}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)" />
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
<div class="mat-elevation-z8">
|
||||
|
||||
<table mat-table [dataSource]="dataSource" matSort>
|
||||
|
||||
<ng-container matColumnDef="key">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Key' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let survey"> {{ survey.key }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Key' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let survey">{{ survey.key }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Name' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let survey"> {{ survey.name }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let survey">{{ survey.name }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="description">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{ 'labels.inputs.Description' | translate }} </th>
|
||||
<td mat-cell *matCellDef="let survey"> {{ survey.description }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Description' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let survey">{{ survey.description }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="countryCode">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{ 'labels.inputs.Country Code' | translate }} </th>
|
||||
<td mat-cell *matCellDef="let survey"> {{ survey.countryCode }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Country Code' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let survey">{{ survey.countryCode }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="status">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{ 'labels.inputs.Status' | translate }} </th>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Status' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let survey">
|
||||
<div [className]="isActive(survey.validFrom, survey.validTo) ? 'enabled' : 'disabled'">
|
||||
<fa-icon matTooltip="{{ !isActive(survey.validFrom, survey.validTo) ? ('labels.inputs.Disabled' | translate) : ('labels.inputs.Enabled' | translate) }}" matTooltipPosition="right" icon="circle" size="lg"></fa-icon>
|
||||
</div>
|
||||
<div [className]="isActive(survey.validFrom, survey.validTo) ? 'enabled' : 'disabled'">
|
||||
<fa-icon
|
||||
matTooltip="{{
|
||||
!isActive(survey.validFrom, survey.validTo)
|
||||
? ('labels.inputs.Disabled' | translate)
|
||||
: ('labels.inputs.Enabled' | translate)
|
||||
}}"
|
||||
matTooltipPosition="right"
|
||||
icon="circle"
|
||||
size="lg"
|
||||
></fa-icon>
|
||||
</div>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="action">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Action' | translate}} </th>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Action' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let survey">
|
||||
<button mat-button *ngIf="!isActive(survey.validFrom, survey.validTo)" color="accent" (click)="activate(survey); $event.stopPropagation();">
|
||||
<fa-icon icon="lock-open" class="m-r-10"></fa-icon>{{'labels.buttons.Activate' | translate }}
|
||||
<button
|
||||
mat-button
|
||||
*ngIf="!isActive(survey.validFrom, survey.validTo)"
|
||||
color="accent"
|
||||
(click)="activate(survey); $event.stopPropagation()"
|
||||
>
|
||||
<fa-icon icon="lock-open" class="m-r-10"></fa-icon>{{ 'labels.buttons.Activate' | translate }}
|
||||
</button>
|
||||
<button mat-button *ngIf="isActive(survey.validFrom, survey.validTo)" color="warn" (click)="deactivate(survey); $event.stopPropagation();">
|
||||
<fa-icon icon="lock" class="m-r-10"></fa-icon>{{'labels.buttons.Deactivate' | translate}}
|
||||
<button
|
||||
mat-button
|
||||
*ngIf="isActive(survey.validFrom, survey.validTo)"
|
||||
color="warn"
|
||||
(click)="deactivate(survey); $event.stopPropagation()"
|
||||
>
|
||||
<fa-icon icon="lock" class="m-r-10"></fa-icon>{{ 'labels.buttons.Deactivate' | translate }}
|
||||
</button>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let survey; columns: displayedColumns;" [routerLink]="[survey.id]" class="select-row"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let survey; columns: displayedColumns" [routerLink]="[survey.id]" class="select-row"></tr>
|
||||
</table>
|
||||
|
||||
<mat-paginator [pageSizeOptions]="[10, 25, 50, 100]" showFirstLastButtons></mat-paginator>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,33 +1,32 @@
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column" class="container m-b-20">
|
||||
<button mat-raised-button color="primary" *mifosxHasPermission="'UPDATE_REPORT'" (click)="onEdit()">
|
||||
<fa-icon icon="edit" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Edit' | translate }}
|
||||
{{ 'labels.buttons.Edit' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="container m-b-20">
|
||||
<mat-card>
|
||||
<mat-card-header fxLayout="column">
|
||||
<mat-card-title>{{'labels.buttons.Survey' | translate }}</mat-card-title>
|
||||
<mat-card-title>{{ 'labels.buttons.Survey' | translate }}</mat-card-title>
|
||||
<mat-divider [inset]="true"></mat-divider>
|
||||
</mat-card-header>
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="row wrap" class="content">
|
||||
<div fxFlex="40%" fxFlex.lt-md="50%" class="header">
|
||||
<b>{{'labels.inputs.Key' | translate}}:</b>
|
||||
<b>{{ 'labels.inputs.Key' | translate }}:</b>
|
||||
</div>
|
||||
|
||||
<div fxFlex="60%" fxFlex.lt-md="50%">
|
||||
{{surveyData.key}}
|
||||
{{ surveyData.key }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="40%" fxFlex.lt-md="50%" class="header">
|
||||
<b>{{'labels.inputs.Name' | translate}}:</b>
|
||||
<b>{{ 'labels.inputs.Name' | translate }}:</b>
|
||||
</div>
|
||||
|
||||
<div fxFlex="60%" fxFlex.lt-md="50%">
|
||||
{{surveyData.name}}
|
||||
{{ surveyData.name }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="40%" fxFlex.lt-md="50%" class="header">
|
||||
@@ -35,7 +34,7 @@
|
||||
</div>
|
||||
|
||||
<div fxFlex="60%" fxFlex.lt-md="50%">
|
||||
{{surveyData.countryCode}}
|
||||
{{ surveyData.countryCode }}
|
||||
</div>
|
||||
|
||||
<div fxFlex="40%" fxFlex.lt-md="50%" class="header">
|
||||
@@ -43,15 +42,11 @@
|
||||
</div>
|
||||
|
||||
<div fxFlex="60%" fxFlex.lt-md="50%">
|
||||
{{surveyData.description}}
|
||||
{{ surveyData.description }}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="container m-b-20">
|
||||
@@ -64,21 +59,21 @@
|
||||
<div class="survey_questions" *ngFor="let questionData of surveyData.questionDatas; index as i">
|
||||
<mat-card>
|
||||
<mat-card-content>
|
||||
<div>{{'labels.heading.Question' | translate}}: {{i+1}}</div>
|
||||
<div>{{ 'labels.heading.Question' | translate }}: {{ i + 1 }}</div>
|
||||
<div fxLayout="row" id="key_text">
|
||||
<div fxFlex="25%" fxFlex.lt-md="50%" class="header">
|
||||
<b>{{'labels.inputs.Key' | translate}}:</b>
|
||||
<b>{{ 'labels.inputs.Key' | translate }}:</b>
|
||||
</div>
|
||||
|
||||
<div fxFlex="40%" fxFlex.lt-md="50%">
|
||||
{{questionData.key}}
|
||||
{{ questionData.key }}
|
||||
</div>
|
||||
<div fxFlex="40%" fxFlex.lt-md="50%" class="header">
|
||||
<b>{{'labels.inputs.Text' | translate}}:</b>
|
||||
<b>{{ 'labels.inputs.Text' | translate }}:</b>
|
||||
</div>
|
||||
|
||||
<div fxFlex="40%" fxFlex.lt-md="50%">
|
||||
{{questionData.text}}
|
||||
{{ questionData.text }}
|
||||
</div>
|
||||
</div>
|
||||
<div fxLayout="row" id="description">
|
||||
@@ -87,18 +82,20 @@
|
||||
</div>
|
||||
|
||||
<div fxFlex="40%" fxFlex.lt-md="50%">
|
||||
{{questionData.description}}
|
||||
{{ questionData.description }}
|
||||
</div>
|
||||
</div>
|
||||
<div fxLayout="column" id="questionaire">
|
||||
<div><b>{{'labels.inputs.Option' | translate}}: </b></div>
|
||||
<div>
|
||||
<b>{{ 'labels.inputs.Option' | translate }}: </b>
|
||||
</div>
|
||||
<table id="response">
|
||||
<tr>
|
||||
<th *ngFor="let column of displayedColumns">{{column | titlecase}}</th>
|
||||
<th *ngFor="let column of displayedColumns">{{ column | titlecase }}</th>
|
||||
</tr>
|
||||
<tr *ngFor="let row of questionData.responseDatas">
|
||||
<td *ngFor="let column of displayedColumns">
|
||||
{{row[column]}}
|
||||
{{ row[column] }}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@@ -1,18 +1,14 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<form [formGroup]="roleForm" (ngSubmit)="submit()">
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="column">
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{ 'labels.inputs.Name' | translate }}</mat-label>
|
||||
<input matInput required formControlName="name">
|
||||
<input matInput required formControlName="name" />
|
||||
<mat-error *ngIf="roleForm.controls.name.hasError('required')">
|
||||
{{ 'labels.inputs.Role Name' | translate }} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Role Name' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
@@ -20,21 +16,21 @@
|
||||
<mat-label>{{ 'labels.inputs.Description' | translate }}</mat-label>
|
||||
<textarea matInput required formControlName="description"></textarea>
|
||||
<mat-error *ngIf="roleForm.controls.description.hasError('required')">
|
||||
{{ 'labels.inputs.Role Description' | translate }} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
{{ 'labels.inputs.Role Description' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
</mat-card-content>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">{{'labels.buttons.Cancel' | translate}}</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!roleForm.valid">{{'labels.buttons.Submit' | translate}}</button>
|
||||
</mat-card-actions>
|
||||
|
||||
</form>
|
||||
|
||||
</mat-card>
|
||||
|
||||
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
|
||||
<button type="button" mat-raised-button [routerLink]="['../']">
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!roleForm.valid">
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</mat-card-actions>
|
||||
</form>
|
||||
</mat-card>
|
||||
</div>
|
||||
|
||||
@@ -1,37 +1,32 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<form [formGroup]="roleForm" (ngSubmit)="submit()">
|
||||
|
||||
<mat-card-content>
|
||||
<div fxLayout="column">
|
||||
<mat-form-field>
|
||||
<mat-label>{{ 'labels.inputs.Role Name' | translate }}</mat-label>
|
||||
<input matInput disabled formControlName="name" />
|
||||
</mat-form-field>
|
||||
|
||||
<div fxLayout="column">
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{ 'labels.inputs.Role Name' | translate }}</mat-label>
|
||||
<input matInput disabled formControlName="name">
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{ 'labels.inputs.Role Description' | translate }}</mat-label>
|
||||
<input matInput required formControlName="description">
|
||||
<mat-error *ngIf="roleForm.controls.description.hasError('required')">
|
||||
{{ 'labels.inputs.Description' | translate }} {{'labels.commons.is' | translate}} <strong>{{'labels.commons.required' | translate}}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
|
||||
</div>
|
||||
|
||||
<mat-form-field>
|
||||
<mat-label>{{ 'labels.inputs.Role Description' | translate }}</mat-label>
|
||||
<input matInput required formControlName="description" />
|
||||
<mat-error *ngIf="roleForm.controls.description.hasError('required')">
|
||||
{{ 'labels.inputs.Description' | translate }} {{ 'labels.commons.is' | translate }}
|
||||
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
</div>
|
||||
</mat-card-content>
|
||||
|
||||
<mat-card-actions fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px">
|
||||
<button type="button" mat-raised-button [routerLink]="['../../']">{{'labels.buttons.Cancel' | translate}}</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!roleForm.valid || roleForm.pristine">{{'labels.buttons.Submit' | translate}}</button>
|
||||
<button type="button" mat-raised-button [routerLink]="['../../']">
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!roleForm.valid || roleForm.pristine">
|
||||
{{ 'labels.buttons.Submit' | translate }}
|
||||
</button>
|
||||
</mat-card-actions>
|
||||
|
||||
</form>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -2,87 +2,135 @@
|
||||
<div #buttonAddRole class="in-block">
|
||||
<button mat-raised-button color="primary">
|
||||
<fa-icon icon="plus" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Add Role' | translate}}
|
||||
{{ 'labels.buttons.Add Role' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<div #filter fxLayout="row" fxLayoutGap="20px">
|
||||
<mat-form-field fxFlex>
|
||||
<mat-label>{{'labels.inputs.Filter' | translate}}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)">
|
||||
<mat-label>{{ 'labels.inputs.Filter' | translate }}</mat-label>
|
||||
<input matInput (keyup)="applyFilter($event.target.value)" />
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
<div #tableRolesandPermissions class="mat-elevation-z8">
|
||||
|
||||
<table mat-table [dataSource]="dataSource" matSort>
|
||||
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{'labels.inputs.Name' | translate}} </th>
|
||||
<td mat-cell *matCellDef="let role"> {{ role.name }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Name' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let role">{{ role.name }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="description">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{ 'labels.inputs.Description' | translate }} </th>
|
||||
<td mat-cell *matCellDef="let role"> {{ role.description }} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Description' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let role">{{ role.description }}</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="disabled">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{ 'labels.inputs.Status' | translate }} </th>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'labels.inputs.Status' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let role">
|
||||
<div [className]="role.disabled === true ? 'false' : 'true'">
|
||||
<fa-icon [matTooltip]="role.disabled === true ? (('labels.inputs.Disabled' | translate)) : (('labels.inputs.Enabled' | translate))" matTooltipPosition="right" icon="circle" size="lg"></fa-icon>
|
||||
<fa-icon
|
||||
[matTooltip]="
|
||||
role.disabled === true ? ('labels.inputs.Disabled' | translate) : ('labels.inputs.Enabled' | translate)
|
||||
"
|
||||
matTooltipPosition="right"
|
||||
icon="circle"
|
||||
size="lg"
|
||||
></fa-icon>
|
||||
</div>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Actions' | translate }}</th>
|
||||
<td mat-cell *matCellDef="let role;" >
|
||||
<button *ngIf="role.name !== 'Super user'" mat-icon-button color="primary" (click)="routeEdit($event)" [routerLink]="[role.id, 'edit']">
|
||||
<fa-icon icon="edit"> {{'labels.buttons.Edit' | translate }} </fa-icon>
|
||||
<td mat-cell *matCellDef="let role">
|
||||
<button
|
||||
*ngIf="role.name !== 'Super user'"
|
||||
mat-icon-button
|
||||
color="primary"
|
||||
(click)="routeEdit($event)"
|
||||
[routerLink]="[role.id, 'edit']"
|
||||
>
|
||||
<fa-icon icon="edit"> {{ 'labels.buttons.Edit' | translate }} </fa-icon>
|
||||
</button>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;" [routerLink]="[row.id]" class="select-row"></tr>
|
||||
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns" [routerLink]="[row.id]" class="select-row"></tr>
|
||||
</table>
|
||||
|
||||
<mat-paginator [pageSizeOptions]="[10, 25, 50, 100]" showFirstLastButtons></mat-paginator>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<ng-template #templateButtonAddRole let-popover="popover">
|
||||
<h2>{{'labels.buttons.Add Role' | translate}}</h2>
|
||||
<p class="mw300">{{'labels.text.To create a new role' | translate}}.</p>
|
||||
<h2>{{ 'labels.buttons.Add Role' | translate }}</h2>
|
||||
<p class="mw300">{{ 'labels.text.To create a new role' | translate }}.</p>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<button mat-raised-button color="warn" (click)="popover.close();configurationWizardService.closeConfigWizard()">{{'labels.buttons.Close' | translate }}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();previousStep();">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();showPopover(templateFilter, filter, 'bottom', true);">{{'labels.buttons.Next' | translate }}</button>
|
||||
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
|
||||
{{ 'labels.buttons.Close' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); previousStep()">
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="popover.close(); showPopover(templateFilter, filter, 'bottom', true)"
|
||||
>
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #templateFilter let-popover="popover">
|
||||
<h4>{{'labels.heading.Search bar to filter roles' | translate }}.</h4>
|
||||
<h4>{{ 'labels.heading.Search bar to filter roles' | translate }}.</h4>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<button mat-raised-button color="warn" (click)="popover.close();configurationWizardService.closeConfigWizard()">{{'labels.buttons.Close' | translate }}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();showPopover(templateButtonAddRole, buttonAddRole, 'bottom', true)">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();showPopover(templateTableRolesandPermissions, tableRolesandPermissions, 'top', true)">{{'labels.buttons.Next' | translate }}</button>
|
||||
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
|
||||
{{ 'labels.buttons.Close' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="popover.close(); showPopover(templateButtonAddRole, buttonAddRole, 'bottom', true)"
|
||||
>
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="popover.close(); showPopover(templateTableRolesandPermissions, tableRolesandPermissions, 'top', true)"
|
||||
>
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #templateTableRolesandPermissions let-popover="popover">
|
||||
<h4 class="mw300">{{'labels.heading.List of roles defined within the organization' | translate}}: <a href="https://mifosforge.jira.com/wiki/spaces/docs/pages/67895364/Manage+Roles+and+Permissions" target="_blank">{{'labels.inputs.Manage Roles and Permission' | translate}}</a></h4>
|
||||
<h4 class="mw300">
|
||||
{{ 'labels.heading.List of roles defined within the organization' | translate }}:
|
||||
<a
|
||||
href="https://mifosforge.jira.com/wiki/spaces/docs/pages/67895364/Manage+Roles+and+Permissions"
|
||||
target="_blank"
|
||||
>{{ 'labels.inputs.Manage Roles and Permission' | translate }}</a
|
||||
>
|
||||
</h4>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<button mat-raised-button color="warn" (click)="popover.close();configurationWizardService.closeConfigWizard()">{{'labels.buttons.Close' | translate }}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();showPopover(templateFilter, filter, 'bottom', true);">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();nextStep()">{{'labels.buttons.Next' | translate }}</button>
|
||||
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
|
||||
{{ 'labels.buttons.Close' | translate }}
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="popover.close(); showPopover(templateFilter, filter, 'bottom', true)"
|
||||
>
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); nextStep()">
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
@@ -1,36 +1,53 @@
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column" class="container m-b-20">
|
||||
<button mat-raised-button color="primary" (click)="editRoles(); backupCheckValues();" [disabled]="rolePermissionService.name === 'Super user'">
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="editRoles(); backupCheckValues()"
|
||||
[disabled]="rolePermissionService.name === 'Super user'"
|
||||
>
|
||||
<fa-icon icon="edit" class="m-r-10"></fa-icon>
|
||||
{{ 'labels.text.Edit Role' | translate }}
|
||||
</button>
|
||||
|
||||
<button *ngIf="!isRoleEnable(rolePermissionService.disabled)" mat-raised-button color="danger" (click)="disableRolesConfirmation()" [disabled]="rolePermissionService.name === 'Super user'">
|
||||
<button
|
||||
*ngIf="!isRoleEnable(rolePermissionService.disabled)"
|
||||
mat-raised-button
|
||||
color="danger"
|
||||
(click)="disableRolesConfirmation()"
|
||||
[disabled]="rolePermissionService.name === 'Super user'"
|
||||
>
|
||||
<fa-icon icon="lock" class="m-r-10"></fa-icon>
|
||||
{{ 'labels.buttons.Disable' | translate }} {{ 'labels.inputs.Role' | translate }}
|
||||
</button>
|
||||
|
||||
<button *ngIf="isRoleEnable(rolePermissionService.disabled)" mat-raised-button color="primary" (click)="enableRolesConfirmation()" [disabled]="rolePermissionService.name === 'Super user'">
|
||||
<button
|
||||
*ngIf="isRoleEnable(rolePermissionService.disabled)"
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
(click)="enableRolesConfirmation()"
|
||||
[disabled]="rolePermissionService.name === 'Super user'"
|
||||
>
|
||||
<fa-icon icon="lock-open" class="m-r-10"></fa-icon>
|
||||
{{ 'labels.buttons.Enable' | translate }} {{ 'labels.inputs.Role' | translate }}
|
||||
</button>
|
||||
|
||||
<button mat-raised-button color="warn" (click)="deleteRole()" [disabled]="rolePermissionService.name === 'Super user'">
|
||||
<button
|
||||
mat-raised-button
|
||||
color="warn"
|
||||
(click)="deleteRole()"
|
||||
[disabled]="rolePermissionService.name === 'Super user'"
|
||||
>
|
||||
<fa-icon icon="trash" class="m-r-10"></fa-icon>
|
||||
{{'labels.buttons.Delete' | translate }} {{ 'labels.inputs.Role' | translate }}
|
||||
{{ 'labels.buttons.Delete' | translate }} {{ 'labels.inputs.Role' | translate }}
|
||||
</button>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="container m-b-20">
|
||||
|
||||
<mat-card class="mat-elevation-z8">
|
||||
|
||||
<mat-card-content>
|
||||
|
||||
<div fxLayout="row wrap" class="content">
|
||||
|
||||
<div fxFlex="40%" fxFlex.lt-md="50%" class="header">
|
||||
<b>{{'labels.inputs.Name' | translate}}:</b>
|
||||
<b>{{ 'labels.inputs.Name' | translate }}:</b>
|
||||
</div>
|
||||
|
||||
<div fxFlex="60%" fxFlex.lt-md="50%">
|
||||
@@ -44,77 +61,79 @@
|
||||
<div fxFlex="60%" fxFlex.lt-md="50%">
|
||||
{{ rolePermissionService.description }}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</mat-card-content>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="mat-elevation-z8 container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<ng-container>
|
||||
|
||||
<div fxLayout="row" class="permissionSelected">
|
||||
<div fxFlex="75">
|
||||
<h3>
|
||||
{{'labels.buttons.Permissions' | translate }}: <strong>{{ formatName(previousGrouping) }}</strong>
|
||||
{{ 'labels.buttons.Permissions' | translate }}: <strong>{{ formatName(previousGrouping) }}</strong>
|
||||
</h3>
|
||||
</div>
|
||||
|
||||
<div fxFlex= "25" fxLayout="row" fxLayout.xs="column" fxLayoutAlign="end" fxLayoutGap="5px" *ngIf="!isDisabled" class="selectDeselect">
|
||||
<button mat-raised-button color="primary" (click)="selectAll()">{{'labels.buttons.Select All' | translate }}</button>
|
||||
<button mat-raised-button color="default" (click)="deselectAll()">{{'labels.buttons.Deselect All' | translate }}</button>
|
||||
<div
|
||||
fxFlex="25"
|
||||
fxLayout="row"
|
||||
fxLayout.xs="column"
|
||||
fxLayoutAlign="end"
|
||||
fxLayoutGap="5px"
|
||||
*ngIf="!isDisabled"
|
||||
class="selectDeselect"
|
||||
>
|
||||
<button mat-raised-button color="primary" (click)="selectAll()">
|
||||
{{ 'labels.buttons.Select All' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="default" (click)="deselectAll()">
|
||||
{{ 'labels.buttons.Deselect All' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxLayout="row">
|
||||
|
||||
<div fxFlex="30" fxLayout="column">
|
||||
<mat-list>
|
||||
<mat-list-item [ngClass]="selectedItem === grouping ? 'active' : 'inactive'" *ngFor="let grouping of groupings" (click)="showPermissions(grouping)">
|
||||
<mat-list-item
|
||||
[ngClass]="selectedItem === grouping ? 'active' : 'inactive'"
|
||||
*ngFor="let grouping of groupings"
|
||||
(click)="showPermissions(grouping)"
|
||||
>
|
||||
<span class="groupingName">
|
||||
{{ formatName(grouping) }}
|
||||
</span>
|
||||
</mat-list-item>
|
||||
</mat-list>
|
||||
|
||||
</div>
|
||||
|
||||
<mat-divider [vertical]="true"></mat-divider>
|
||||
|
||||
<div fxFlex="70" fxLayout="column" class="listPermission">
|
||||
|
||||
<form [formGroup]="formGroup" (submit)="submit()">
|
||||
|
||||
<div *ngFor="let permission of permissions.permissions" class="displayPermissions">
|
||||
<div formArrayName="roster">
|
||||
<div [formGroupName]="permission.id">
|
||||
<mat-checkbox name="cp" id="{{ permission.code }}" formControlName="selected">
|
||||
<div formArrayName="roster">
|
||||
<div [formGroupName]="permission.id">
|
||||
<mat-checkbox name="cp" id="{{ permission.code }}" formControlName="selected">
|
||||
{{ permissionName(permission.code) }}
|
||||
</mat-checkbox>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</ng-container>
|
||||
|
||||
<div fxLayout="row" fxLayout.xs="column" fxLayoutAlign="center" fxLayoutGap="5px" *ngIf="!isDisabled">
|
||||
<mat-card-actions>
|
||||
<button type="button" mat-raised-button (click)="cancel(); restoreCheckboxes();">{{'labels.buttons.Cancel' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="submit()">{{'labels.buttons.Submit' | translate}}</button>
|
||||
<button type="button" mat-raised-button (click)="cancel(); restoreCheckboxes()">
|
||||
{{ 'labels.buttons.Cancel' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="submit()">{{ 'labels.buttons.Submit' | translate }}</button>
|
||||
</mat-card-actions>
|
||||
</div>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,22 +1,19 @@
|
||||
<div class="container">
|
||||
|
||||
<mat-card>
|
||||
|
||||
<div fxLayout="row" fxLayout.lt-md="column" fxLayoutGap="20px">
|
||||
|
||||
<div fxFlex="50%">
|
||||
|
||||
<mat-nav-list>
|
||||
|
||||
<div #datatables>
|
||||
<mat-list-item>
|
||||
<mat-icon matListIcon [routerLink]="['data-tables']">
|
||||
<fa-icon icon="table" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<h4 matLine [routerLink]="['data-tables']">{{'labels.heading.Manage Data tables' | translate}}</h4>
|
||||
<h4 matLine [routerLink]="['data-tables']">{{ 'labels.heading.Manage Data tables' | 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]="['data-tables']">{{'labels.text.Add new extra fields to any entity' | translate}}</p>
|
||||
<p matLine *ngIf="arrowBooleans[0]" [routerLink]="['data-tables']">
|
||||
{{ 'labels.text.Add new extra fields to any entity' | translate }}
|
||||
</p>
|
||||
</mat-list-item>
|
||||
</div>
|
||||
|
||||
@@ -25,10 +22,12 @@
|
||||
<mat-icon matListIcon [routerLink]="['codes']">
|
||||
<fa-icon icon="list-ul" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<h4 matLine [routerLink]="['codes']">{{'labels.heading.Manage Codes' | translate}}</h4>
|
||||
<h4 matLine [routerLink]="['codes']">{{ 'labels.heading.Manage Codes' | 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]="['codes']">{{'labels.text.Codes are used to define drop down values' | translate}}</p>
|
||||
<p matLine *ngIf="arrowBooleans[1]" [routerLink]="['codes']">
|
||||
{{ 'labels.text.Codes are used to define drop down values' | translate }}
|
||||
</p>
|
||||
</mat-list-item>
|
||||
</div>
|
||||
|
||||
@@ -37,10 +36,14 @@
|
||||
<mat-icon matListIcon [routerLink]="['roles-and-permissions']">
|
||||
<fa-icon icon="key" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<h4 matLine [routerLink]="['roles-and-permissions']">{{'labels.heading.Manage Roles and Permissions' | translate}}</h4>
|
||||
<h4 matLine [routerLink]="['roles-and-permissions']">
|
||||
{{ 'labels.heading.Manage Roles and Permissions' | 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]="['roles-and-permissions']">{{'labels.text.Define or modify roles and associated permissions' | translate}}</p>
|
||||
<p matLine *ngIf="arrowBooleans[2]" [routerLink]="['roles-and-permissions']">
|
||||
{{ 'labels.text.Define or modify roles and associated permissions' | translate }}
|
||||
</p>
|
||||
</mat-list-item>
|
||||
</div>
|
||||
|
||||
@@ -49,10 +52,14 @@
|
||||
<mat-icon matListIcon [routerLink]="['configure-mc-tasks']">
|
||||
<fa-icon icon="sitemap" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<h4 matLine [routerLink]="['configure-mc-tasks']">{{'labels.heading.Configure Maker Checker Tasks' | translate}}</h4>
|
||||
<h4 matLine [routerLink]="['configure-mc-tasks']">
|
||||
{{ 'labels.heading.Configure Maker Checker Tasks' | 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]="['configure-mc-tasks']">{{'labels.text.Define or modify Maker Checker tasks' | translate}}</p>
|
||||
<p matLine *ngIf="arrowBooleans[3]" [routerLink]="['configure-mc-tasks']">
|
||||
{{ 'labels.text.Define or modify Maker Checker tasks' | translate }}
|
||||
</p>
|
||||
</mat-list-item>
|
||||
</div>
|
||||
|
||||
@@ -60,196 +67,257 @@
|
||||
<mat-icon matListIcon [routerLink]="['hooks']">
|
||||
<fa-icon icon="anchor" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<h4 matLine [routerLink]="['hooks']">{{'labels.heading.Manage Hooks' | translate}}</h4>
|
||||
<h4 matLine [routerLink]="['hooks']">{{ 'labels.heading.Manage Hooks' | 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]="['hooks']">{{'labels.text.Define Hooks' | translate}}</p>
|
||||
<p matLine *ngIf="arrowBooleans[4]" [routerLink]="['hooks']">
|
||||
{{ 'labels.text.Define Hooks' | translate }}
|
||||
</p>
|
||||
</mat-list-item>
|
||||
|
||||
<mat-list-item>
|
||||
<mat-icon matListIcon [routerLink]="['entity-to-entity-mapping']">
|
||||
<fa-icon icon="road" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<h4 matLine [routerLink]="['entity-to-entity-mapping']">{{'labels.heading.Entity to Entity Mapping' | translate}}</h4>
|
||||
<h4 matLine [routerLink]="['entity-to-entity-mapping']">
|
||||
{{ 'labels.heading.Entity to Entity 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]="['entity-to-entity-mapping']">{{'labels.text.Define or modify entity to entity mappings' | translate}}</p>
|
||||
<p matLine *ngIf="arrowBooleans[5]" [routerLink]="['entity-to-entity-mapping']">
|
||||
{{ 'labels.text.Define or modify entity to entity mappings' | translate }}
|
||||
</p>
|
||||
</mat-list-item>
|
||||
|
||||
<mat-list-item>
|
||||
<mat-icon matListIcon [routerLink]="['surveys']">
|
||||
<fa-icon icon="file-alt" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<h4 matLine [routerLink]="['surveys']">{{'labels.heading.Manage Surveys' | translate}}</h4>
|
||||
<h4 matLine [routerLink]="['surveys']">{{ 'labels.heading.Manage Surveys' | 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]="['surveys']">{{'labels.text.Manage your Services' | translate}}</p>
|
||||
<p matLine *ngIf="arrowBooleans[6]" [routerLink]="['surveys']">
|
||||
{{ 'labels.text.Manage your Services' | translate }}
|
||||
</p>
|
||||
</mat-list-item>
|
||||
|
||||
<mat-list-item *mifosxHasPermission="'READ_EXTERNAL_EVENT_CONFIGURATION'">
|
||||
<mat-list-item *mifosxHasPermission="'READ_EXTERNAL_EVENT_CONFIGURATION'">
|
||||
<mat-icon matListIcon [routerLink]="['external-events']">
|
||||
<fa-icon icon="anchor" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<h4 matLine [routerLink]="['external-events']">{{'labels.heading.Manage External Events' | translate}}</h4>
|
||||
<h4 matLine [routerLink]="['external-events']">
|
||||
{{ 'labels.heading.Manage External Events' | 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]="['external-events']">{{'labels.text.External Events configuration, to enable or disable' | translate}}</p>
|
||||
<p matLine *ngIf="arrowBooleans[7]" [routerLink]="['external-events']">
|
||||
{{ 'labels.text.External Events configuration, to enable or disable' | translate }}
|
||||
</p>
|
||||
</mat-list-item>
|
||||
|
||||
</mat-nav-list>
|
||||
|
||||
</div>
|
||||
|
||||
<div fxFlex="50%">
|
||||
|
||||
<mat-nav-list>
|
||||
|
||||
<mat-list-item>
|
||||
<mat-icon matListIcon [routerLink]="['audit-trails']">
|
||||
<fa-icon icon="money-check" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<h4 matLine [routerLink]="['audit-trails']">{{'labels.heading.Audit Trails' | translate}}</h4>
|
||||
<h4 matLine [routerLink]="['audit-trails']">{{ 'labels.heading.Audit Trails' | 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]="['audit-trails']">{{'labels.text.Audit logs of all the activities' | translate}}</p>
|
||||
<p matLine *ngIf="arrowBooleans[8]" [routerLink]="['audit-trails']">
|
||||
{{ 'labels.text.Audit logs of all the activities' | translate }}
|
||||
</p>
|
||||
</mat-list-item>
|
||||
|
||||
<mat-list-item>
|
||||
<mat-icon matListIcon [routerLink]="['reports']">
|
||||
<fa-icon icon="file-word" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<h4 matLine [routerLink]="['reports']">{{'labels.heading.Manage Reports' | translate}}</h4>
|
||||
<h4 matLine [routerLink]="['reports']">{{ 'labels.heading.Manage Reports' | 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]="['reports']">{{'labels.text.Add new report and classify reports' | translate}}</p>
|
||||
<p matLine *ngIf="arrowBooleans[9]" [routerLink]="['reports']">
|
||||
{{ 'labels.text.Add new report and classify reports' | translate }}
|
||||
</p>
|
||||
</mat-list-item>
|
||||
|
||||
<mat-list-item>
|
||||
<mat-icon matListIcon [routerLink]="['manage-jobs']">
|
||||
<fa-icon icon="clock" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<h4 matLine [routerLink]="['manage-jobs']">{{'labels.heading.Manage Jobs' | translate}}</h4>
|
||||
<h4 matLine [routerLink]="['manage-jobs']">{{ 'labels.heading.Manage Jobs' | 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-jobs']">{{'labels.text.Manage Schedule and Workflow jobs, modify jobs' | translate}}</p>
|
||||
<p matLine *ngIf="arrowBooleans[10]" [routerLink]="['manage-jobs']">
|
||||
{{ 'labels.text.Manage Schedule and Workflow jobs, modify jobs' | translate }}
|
||||
</p>
|
||||
</mat-list-item>
|
||||
|
||||
<mat-list-item>
|
||||
<mat-icon matListIcon [routerLink]="['configurations']">
|
||||
<fa-icon icon="cogs" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<h4 matLine [routerLink]="['configurations']">{{'labels.heading.Configurations' | translate}}</h4>
|
||||
<h4 matLine [routerLink]="['configurations']">{{ 'labels.heading.Configurations' | 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]="['configurations']">{{'labels.text.Global configurations, Cache and Business Date' | translate}}</p>
|
||||
<p matLine *ngIf="arrowBooleans[11]" [routerLink]="['configurations']">
|
||||
{{ 'labels.text.Global configurations, Cache and Business Date' | translate }}
|
||||
</p>
|
||||
</mat-list-item>
|
||||
|
||||
<mat-list-item>
|
||||
<mat-icon matListIcon [routerLink]="['account-number-preferences']">
|
||||
<fa-icon icon="key" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<h4 matLine [routerLink]="['account-number-preferences']">{{'labels.heading.Account Number Preferences' | translate}}</h4>
|
||||
<h4 matLine [routerLink]="['account-number-preferences']">
|
||||
{{ 'labels.heading.Account Number Preferences' | 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]="['account-number-preferences']">{{'labels.text.Preferences for generating account numbers for client' | translate}}</p>
|
||||
<p matLine *ngIf="arrowBooleans[12]" [routerLink]="['account-number-preferences']">
|
||||
{{ 'labels.text.Preferences for generating account numbers for client' | translate }}
|
||||
</p>
|
||||
</mat-list-item>
|
||||
|
||||
<mat-list-item>
|
||||
<mat-icon matListIcon [routerLink]="['external-services']">
|
||||
<fa-icon icon="cog" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<h4 matLine [routerLink]="['external-services']">{{'labels.heading.External Services' | translate}}</h4>
|
||||
<h4 matLine [routerLink]="['external-services']">{{ 'labels.heading.External Services' | 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]="['external-services']">{{'labels.text.External Services Configuration' | translate}}</p>
|
||||
<p matLine *ngIf="arrowBooleans[13]" [routerLink]="['external-services']">
|
||||
{{ 'labels.text.External Services Configuration' | translate }}
|
||||
</p>
|
||||
</mat-list-item>
|
||||
|
||||
<mat-list-item>
|
||||
<mat-icon matListIcon>
|
||||
<fa-icon icon="key" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<h4 matLine>{{'labels.heading.Two-Factor Configuration' | translate}}</h4>
|
||||
<h4 matLine>{{ 'labels.heading.Two-Factor Configuration' | 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]">{{'labels.text.Two-factor authentication configuration' | translate}}</p>
|
||||
<p matLine *ngIf="arrowBooleans[14]">
|
||||
{{ 'labels.text.Two-factor authentication configuration' | translate }}
|
||||
</p>
|
||||
</mat-list-item>
|
||||
|
||||
</mat-nav-list>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</mat-card>
|
||||
|
||||
</div>
|
||||
|
||||
<ng-template #templateDatatables let-popover="popover">
|
||||
<h2>{{'labels.heading.Manage Data Tables' | translate}}</h2>
|
||||
<p class="mw300">{{'labels.text.Mifos X data-tables allow the user to add custom fields' | translate}}</p>
|
||||
<h2>{{ 'labels.heading.Manage Data Tables' | translate }}</h2>
|
||||
<p class="mw300">{{ 'labels.text.Mifos X data-tables allow the user to add custom fields' | translate }}</p>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<button mat-raised-button color="warn" (click)="popover.close();configurationWizardService.closeConfigWizard()">{{'labels.buttons.Close' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();previousStepDatatables()">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();nextStepDatatables()">{{'labels.buttons.Next' | translate}}</button>
|
||||
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
|
||||
{{ 'labels.buttons.Close' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); previousStepDatatables()">
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); nextStepDatatables()">
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #templateCodes let-popover="popover">
|
||||
<h2>{{'labels.heading.Manage Codes' | translate}}</h2>
|
||||
<p class="mw300">{{'labels.text.Selection you can create new drop-downs and edit' | translate}}</p>
|
||||
<h2>{{ 'labels.heading.Manage Codes' | translate }}</h2>
|
||||
<p class="mw300">{{ 'labels.text.Selection you can create new drop-downs and edit' | translate }}</p>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<button mat-raised-button color="warn" (click)="popover.close();configurationWizardService.closeConfigWizard()">{{'labels.buttons.Close' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();previousStepCodes()">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();nextStepCodes()">{{'labels.buttons.Next' | translate}}</button>
|
||||
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
|
||||
{{ 'labels.buttons.Close' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); previousStepCodes()">
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); nextStepCodes()">
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #templateRolesandPermission let-popover="popover">
|
||||
<h2>{{'labels.heading.Manage Roles and Permissions' | translate}}</h2>
|
||||
<p class="mw300">{{'labels.text.Roles and Permissions allow the administrator to control access' | translate}}</p>
|
||||
<h2>{{ 'labels.heading.Manage Roles and Permissions' | translate }}</h2>
|
||||
<p class="mw300">{{ 'labels.text.Roles and Permissions allow the administrator to control access' | translate }}</p>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<button mat-raised-button color="warn" (click)="popover.close();configurationWizardService.closeConfigWizard()">{{'labels.buttons.Close' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();previousStepRolesandPermission()">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();nextStepRolesandPermission()">{{'labels.buttons.Next' | translate}}</button>
|
||||
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
|
||||
{{ 'labels.buttons.Close' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); previousStepRolesandPermission()">
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); nextStepRolesandPermission()">
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #templateMakerCheckerTable let-popover="popover">
|
||||
<h2>{{'labels.heading.Configure Maker-Checker Tasks' | translate}}</h2>
|
||||
<p class="mw300">{{'labels.text.“Maker-Checker” principle requires every tasks' | translate}}</p>
|
||||
<h2>{{ 'labels.heading.Configure Maker-Checker Tasks' | translate }}</h2>
|
||||
<p class="mw300">{{ 'labels.text.“Maker-Checker” principle requires every tasks' | translate }}</p>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<button mat-raised-button color="warn" (click)="popover.close();configurationWizardService.closeConfigWizard()">{{'labels.buttons.Close' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();previousStepMakerCheckerTable()">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();nextStepMakerCheckerTable()">{{'labels.buttons.Next' | translate}}</button>
|
||||
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
|
||||
{{ 'labels.buttons.Close' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); previousStepMakerCheckerTable()">
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); nextStepMakerCheckerTable()">
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #templateConfigurations let-popover="popover">
|
||||
<h2>{{'labels.heading.Configuration' | translate}}</h2>
|
||||
<p class="mw300">{{'labels.text.Configurations page allows you to further customize' | translate}}</p>
|
||||
<h2>{{ 'labels.heading.Configuration' | translate }}</h2>
|
||||
<p class="mw300">{{ 'labels.text.Configurations page allows you to further customize' | translate }}</p>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<button mat-raised-button color="warn" (click)="popover.close();configurationWizardService.closeConfigWizard()">{{'labels.buttons.Close' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();previousStepConfigurations()">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();nextStepConfigurations()">{{'labels.buttons.Next' | translate}}</button>
|
||||
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
|
||||
{{ 'labels.buttons.Close' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); previousStepConfigurations()">
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); nextStepConfigurations()">
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #templateSchedulerJobs let-popover="popover">
|
||||
<h2>{{'labels.heading.Manage Scheduler Jobs' | translate}}</h2>
|
||||
<p class="mw300">{{'labels.text.Scheduler Jobs can set batch jobs' | translate}}</p>
|
||||
<h2>{{ 'labels.heading.Manage Scheduler Jobs' | translate }}</h2>
|
||||
<p class="mw300">{{ 'labels.text.Scheduler Jobs can set batch jobs' | translate }}</p>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<button mat-raised-button color="warn" (click)="popover.close();configurationWizardService.closeConfigWizard()">{{'labels.buttons.Close' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();previousStepSchedulerJobs()">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();nextStepSchedulerJobs()">{{'labels.buttons.Next' | translate}}</button>
|
||||
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
|
||||
{{ 'labels.buttons.Close' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); previousStepSchedulerJobs()">
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); nextStepSchedulerJobs()">
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #templateManageReports let-popover="popover">
|
||||
<h2>{{'labels.heading.Manage Reports' | translate}}</h2>
|
||||
<p class="mw300">{{'labels.text.Add customized reports and edit core reports' | translate}}</p>
|
||||
<h2>{{ 'labels.heading.Manage Reports' | translate }}</h2>
|
||||
<p class="mw300">{{ 'labels.text.Add customized reports and edit core reports' | translate }}</p>
|
||||
<div fxLayout="row" fxLayoutAlign="end" fxLayoutGap="2%" fxLayout.lt-md="column">
|
||||
<button mat-raised-button color="warn" (click)="popover.close();configurationWizardService.closeConfigWizard()">{{'labels.buttons.Close' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();previousStepManageReports()">{{'labels.buttons.Back' | translate}}</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close();nextStepManageReports()">{{'labels.buttons.Next' | translate}}</button>
|
||||
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
|
||||
{{ 'labels.buttons.Close' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); previousStepManageReports()">
|
||||
{{ 'labels.buttons.Back' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="popover.close(); nextStepManageReports()">
|
||||
{{ 'labels.buttons.Next' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
Reference in New Issue
Block a user