154 lines
5.6 KiB
HTML
154 lines
5.6 KiB
HTML
<div class="container">
|
|
<div class="mb-5 row">
|
|
<div class="col">
|
|
<mat-card class="mb-3">
|
|
<mat-card-content>
|
|
<div class="d-flex my-3">
|
|
<div class="w-50" i18n>User Count</div>
|
|
<div class="w-50">{{ userCount }}</div>
|
|
</div>
|
|
<div class="d-flex my-3">
|
|
<div class="w-50" i18n>Transaction Count</div>
|
|
<div class="w-50">
|
|
<ng-container *ngIf="transactionCount">
|
|
{{ transactionCount }} ({{ transactionCount / userCount | number
|
|
: '1.2-2' }} <span i18n>per User</span>)
|
|
</ng-container>
|
|
</div>
|
|
</div>
|
|
<div class="d-flex my-3">
|
|
<div class="w-50" i18n>Data Gathering</div>
|
|
<div class="w-50">
|
|
<div>
|
|
<ng-container *ngIf="lastDataGathering"
|
|
>{{ lastDataGathering }}</ng-container
|
|
>
|
|
<ng-container *ngIf="dataGatheringInProgress" i18n
|
|
>In Progress ({{ dataGatheringProgress | percent : '1.2-2'
|
|
}})</ng-container
|
|
>
|
|
</div>
|
|
<div class="mt-2 overflow-hidden">
|
|
<div class="mb-2">
|
|
<button
|
|
color="accent"
|
|
mat-flat-button
|
|
(click)="onFlushCache()"
|
|
>
|
|
<ion-icon
|
|
class="mr-1"
|
|
name="close-circle-outline"
|
|
></ion-icon>
|
|
<span i18n>Reset Data Gathering</span>
|
|
</button>
|
|
</div>
|
|
<div class="mb-2">
|
|
<button
|
|
color="warn"
|
|
mat-flat-button
|
|
[disabled]="dataGatheringInProgress"
|
|
(click)="onGatherMax()"
|
|
>
|
|
<ion-icon class="mr-1" name="warning-outline"></ion-icon>
|
|
<span i18n>Gather All Data</span>
|
|
</button>
|
|
</div>
|
|
<div>
|
|
<button
|
|
class="mb-2 mr-2"
|
|
color="accent"
|
|
mat-flat-button
|
|
[disabled]="dataGatheringInProgress"
|
|
(click)="onGatherProfileData()"
|
|
>
|
|
<ion-icon
|
|
class="mr-1"
|
|
name="cloud-download-outline"
|
|
></ion-icon>
|
|
<span i18n>Gather Profile Data</span>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="align-items-start d-flex my-3">
|
|
<div class="w-50" i18n>Exchange Rates</div>
|
|
<div class="w-50">
|
|
<table>
|
|
<tr *ngFor="let exchangeRate of exchangeRates">
|
|
<td class="d-flex">
|
|
<gf-value
|
|
[locale]="user?.settings?.locale"
|
|
[value]="1"
|
|
></gf-value>
|
|
</td>
|
|
<td class="pl-1">{{ exchangeRate.label1 }}</td>
|
|
<td class="px-1">=</td>
|
|
<td class="d-flex justify-content-end">
|
|
<gf-value
|
|
[locale]="user?.settings?.locale"
|
|
[precision]="4"
|
|
[value]="exchangeRate.value"
|
|
></gf-value>
|
|
</td>
|
|
<td class="pl-1">{{ exchangeRate.label2 }}</td>
|
|
<td>
|
|
<button
|
|
*ngIf="customCurrencies.includes(exchangeRate.label2)"
|
|
class="mini-icon mx-1 no-min-width px-2"
|
|
mat-button
|
|
[disabled]="dataGatheringInProgress"
|
|
(click)="onDeleteCurrency(exchangeRate.label2)"
|
|
>
|
|
<ion-icon name="trash-outline"></ion-icon>
|
|
</button>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<div class="mt-2">
|
|
<button
|
|
color="primary"
|
|
mat-flat-button
|
|
[disabled]="dataGatheringInProgress"
|
|
(click)="onAddCurrency()"
|
|
>
|
|
<ion-icon class="mr-1" name="add-outline"></ion-icon>
|
|
<span i18n>Add Currency</span>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div *ngIf="hasPermissionForSystemMessage" class="d-flex my-3">
|
|
<div class="w-50" i18n>System Message</div>
|
|
<div class="w-50">
|
|
<div *ngIf="info.systemMessage">
|
|
<span>{{ info.systemMessage }}</span>
|
|
<button
|
|
class="mini-icon mx-1 no-min-width px-2"
|
|
mat-button
|
|
[disabled]="dataGatheringInProgress"
|
|
(click)="onDeleteSystemMessage()"
|
|
>
|
|
<ion-icon name="trash-outline"></ion-icon>
|
|
</button>
|
|
</div>
|
|
<button
|
|
*ngIf="!info.systemMessage"
|
|
color="accent"
|
|
mat-flat-button
|
|
(click)="onSetSystemMessage()"
|
|
>
|
|
<ion-icon
|
|
class="mr-1"
|
|
name="information-circle-outline"
|
|
></ion-icon>
|
|
<span i18n>Set System Message</span>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</mat-card-content>
|
|
</mat-card>
|
|
</div>
|
|
</div>
|
|
</div>
|