Add precommit hooks
1
.gitignore
vendored
@ -40,6 +40,7 @@ npm-debug.log
|
||||
yarn-error.log
|
||||
testem.log
|
||||
/typings
|
||||
/.husky
|
||||
|
||||
# System Files
|
||||
.DS_Store
|
||||
|
1
.husky/.gitignore
vendored
@ -1 +0,0 @@
|
||||
_
|
@ -1,30 +0,0 @@
|
||||
#!/bin/sh
|
||||
if [ -z "$husky_skip_init" ]; then
|
||||
debug () {
|
||||
[ "$HUSKY_DEBUG" = "1" ] && echo "husky (debug) - $1"
|
||||
}
|
||||
|
||||
readonly hook_name="$(basename "$0")"
|
||||
debug "starting $hook_name..."
|
||||
|
||||
if [ "$HUSKY" = "0" ]; then
|
||||
debug "HUSKY env variable is set to 0, skipping hook"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ -f ~/.huskyrc ]; then
|
||||
debug "sourcing ~/.huskyrc"
|
||||
. ~/.huskyrc
|
||||
fi
|
||||
|
||||
export readonly husky_skip_init=1
|
||||
sh -e "$0" "$@"
|
||||
exitCode="$?"
|
||||
|
||||
if [ $exitCode != 0 ]; then
|
||||
echo "husky - $hook_name hook exited with code $exitCode (error)"
|
||||
exit $exitCode
|
||||
fi
|
||||
|
||||
exit 0
|
||||
fi
|
@ -186,7 +186,7 @@
|
||||
getBySymbol(symbol: string): any {
|
||||
return {
|
||||
name: 'Reserve',
|
||||
symbol: 'RSV'
|
||||
symbol: 'RSV',
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@ -352,7 +352,7 @@
|
||||
|
||||
|
||||
<div class="tab-pane fade tab-source-code" id="c-source">
|
||||
<pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import {Observable, of} from 'rxjs';
|
||||
<pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import { Observable, of } from 'rxjs';
|
||||
|
||||
export class TransactionServiceStub {
|
||||
setTransaction(transaction: any, cacheSize: number): void {}
|
||||
|
@ -153,13 +153,19 @@
|
||||
{ id: 3, user: 'Will', role: 'superadmin', action: 'Reclaim RSV 1000', approval: true },
|
||||
{ id: 4, user: 'Vivian', role: 'enroller', action: 'Complete user profile', approval: true },
|
||||
{ id: 5, user: 'Jack', role: 'enroller', action: 'Reclaim RSV 200', approval: false },
|
||||
{ id: 6, user: 'Patience', role: 'enroller', action: 'Change user information', approval: false }
|
||||
{
|
||||
id: 6,
|
||||
user: 'Patience',
|
||||
role: 'enroller',
|
||||
action: 'Change user information',
|
||||
approval: false,
|
||||
},
|
||||
]</code>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="12" class="link-to-prism">src/testing/user-service-stub.ts:12</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="72" class="link-to-prism">src/testing/user-service-stub.ts:72</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -187,11 +193,71 @@
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<i>Default value : </i><code>[
|
||||
{id: 1, name: 'John Doe', phone: '+25412345678', address: '0xc86ff893ac40d3950b4d5f94a9b837258b0a9865', type: 'user', created: '08/16/2020', balance: '12987', failedPinAttempts: 1, status: 'approved', bio: 'Bodaboda', gender: 'male'},
|
||||
{id: 2, name: 'Jane Buck', phone: '+25412341234', address: '0xc86ff893ac40d3950b4d5f94a9b837258b0a9865', type: 'vendor', created: '04/02/2020', balance: '56281', failedPinAttempts: 0, status: 'approved', bio: 'Groceries', gender: 'female'},
|
||||
{id: 3, name: 'Mc Donald', phone: '+25498765432', address: '0xc86ff893ac40d3950b4d5f94a9b837258b0a9865', type: 'group', created: '11/16/2020', balance: '450', failedPinAttempts: 2, status: 'unapproved', bio: 'Food', gender: 'male'},
|
||||
{id: 4, name: 'Hera Cles', phone: '+25498769876', address: '0xc86ff893ac40d3950b4d5f94a9b837258b0a9865', type: 'user', created: '05/28/2020', balance: '5621', failedPinAttempts: 3, status: 'approved', bio: 'Shop', gender: 'female'},
|
||||
{id: 5, name: 'Silver Fia', phone: '+25462518374', address: '0xc86ff893ac40d3950b4d5f94a9b837258b0a9865', type: 'token agent', created: '10/10/2020', balance: '817', failedPinAttempts: 0, status: 'unapproved', bio: 'Electronics', gender: 'male'},
|
||||
{
|
||||
id: 1,
|
||||
name: 'John Doe',
|
||||
phone: '+25412345678',
|
||||
address: '0xc86ff893ac40d3950b4d5f94a9b837258b0a9865',
|
||||
type: 'user',
|
||||
created: '08/16/2020',
|
||||
balance: '12987',
|
||||
failedPinAttempts: 1,
|
||||
status: 'approved',
|
||||
bio: 'Bodaboda',
|
||||
gender: 'male',
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
name: 'Jane Buck',
|
||||
phone: '+25412341234',
|
||||
address: '0xc86ff893ac40d3950b4d5f94a9b837258b0a9865',
|
||||
type: 'vendor',
|
||||
created: '04/02/2020',
|
||||
balance: '56281',
|
||||
failedPinAttempts: 0,
|
||||
status: 'approved',
|
||||
bio: 'Groceries',
|
||||
gender: 'female',
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
name: 'Mc Donald',
|
||||
phone: '+25498765432',
|
||||
address: '0xc86ff893ac40d3950b4d5f94a9b837258b0a9865',
|
||||
type: 'group',
|
||||
created: '11/16/2020',
|
||||
balance: '450',
|
||||
failedPinAttempts: 2,
|
||||
status: 'unapproved',
|
||||
bio: 'Food',
|
||||
gender: 'male',
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
name: 'Hera Cles',
|
||||
phone: '+25498769876',
|
||||
address: '0xc86ff893ac40d3950b4d5f94a9b837258b0a9865',
|
||||
type: 'user',
|
||||
created: '05/28/2020',
|
||||
balance: '5621',
|
||||
failedPinAttempts: 3,
|
||||
status: 'approved',
|
||||
bio: 'Shop',
|
||||
gender: 'female',
|
||||
},
|
||||
{
|
||||
id: 5,
|
||||
name: 'Silver Fia',
|
||||
phone: '+25462518374',
|
||||
address: '0xc86ff893ac40d3950b4d5f94a9b837258b0a9865',
|
||||
type: 'token agent',
|
||||
created: '10/10/2020',
|
||||
balance: '817',
|
||||
failedPinAttempts: 0,
|
||||
status: 'unapproved',
|
||||
bio: 'Electronics',
|
||||
gender: 'male',
|
||||
},
|
||||
]</code>
|
||||
</td>
|
||||
</tr>
|
||||
@ -233,8 +299,8 @@
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="71"
|
||||
class="link-to-prism">src/testing/user-service-stub.ts:71</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="134"
|
||||
class="link-to-prism">src/testing/user-service-stub.ts:134</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -303,8 +369,8 @@
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="61"
|
||||
class="link-to-prism">src/testing/user-service-stub.ts:61</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="124"
|
||||
class="link-to-prism">src/testing/user-service-stub.ts:124</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -373,8 +439,8 @@
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="37"
|
||||
class="link-to-prism">src/testing/user-service-stub.ts:37</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="103"
|
||||
class="link-to-prism">src/testing/user-service-stub.ts:103</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -443,8 +509,8 @@
|
||||
|
||||
<tr>
|
||||
<td class="col-md-4">
|
||||
<div class="io-line">Defined in <a href="" data-line="21"
|
||||
class="link-to-prism">src/testing/user-service-stub.ts:21</a></div>
|
||||
<div class="io-line">Defined in <a href="" data-line="87"
|
||||
class="link-to-prism">src/testing/user-service-stub.ts:87</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -501,15 +567,75 @@
|
||||
|
||||
|
||||
<div class="tab-pane fade tab-source-code" id="c-source">
|
||||
<pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import {Observable, of} from 'rxjs';
|
||||
<pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import { Observable, of } from 'rxjs';
|
||||
|
||||
export class UserServiceStub {
|
||||
users = [
|
||||
{id: 1, name: 'John Doe', phone: '+25412345678', address: '0xc86ff893ac40d3950b4d5f94a9b837258b0a9865', type: 'user', created: '08/16/2020', balance: '12987', failedPinAttempts: 1, status: 'approved', bio: 'Bodaboda', gender: 'male'},
|
||||
{id: 2, name: 'Jane Buck', phone: '+25412341234', address: '0xc86ff893ac40d3950b4d5f94a9b837258b0a9865', type: 'vendor', created: '04/02/2020', balance: '56281', failedPinAttempts: 0, status: 'approved', bio: 'Groceries', gender: 'female'},
|
||||
{id: 3, name: 'Mc Donald', phone: '+25498765432', address: '0xc86ff893ac40d3950b4d5f94a9b837258b0a9865', type: 'group', created: '11/16/2020', balance: '450', failedPinAttempts: 2, status: 'unapproved', bio: 'Food', gender: 'male'},
|
||||
{id: 4, name: 'Hera Cles', phone: '+25498769876', address: '0xc86ff893ac40d3950b4d5f94a9b837258b0a9865', type: 'user', created: '05/28/2020', balance: '5621', failedPinAttempts: 3, status: 'approved', bio: 'Shop', gender: 'female'},
|
||||
{id: 5, name: 'Silver Fia', phone: '+25462518374', address: '0xc86ff893ac40d3950b4d5f94a9b837258b0a9865', type: 'token agent', created: '10/10/2020', balance: '817', failedPinAttempts: 0, status: 'unapproved', bio: 'Electronics', gender: 'male'},
|
||||
{
|
||||
id: 1,
|
||||
name: 'John Doe',
|
||||
phone: '+25412345678',
|
||||
address: '0xc86ff893ac40d3950b4d5f94a9b837258b0a9865',
|
||||
type: 'user',
|
||||
created: '08/16/2020',
|
||||
balance: '12987',
|
||||
failedPinAttempts: 1,
|
||||
status: 'approved',
|
||||
bio: 'Bodaboda',
|
||||
gender: 'male',
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
name: 'Jane Buck',
|
||||
phone: '+25412341234',
|
||||
address: '0xc86ff893ac40d3950b4d5f94a9b837258b0a9865',
|
||||
type: 'vendor',
|
||||
created: '04/02/2020',
|
||||
balance: '56281',
|
||||
failedPinAttempts: 0,
|
||||
status: 'approved',
|
||||
bio: 'Groceries',
|
||||
gender: 'female',
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
name: 'Mc Donald',
|
||||
phone: '+25498765432',
|
||||
address: '0xc86ff893ac40d3950b4d5f94a9b837258b0a9865',
|
||||
type: 'group',
|
||||
created: '11/16/2020',
|
||||
balance: '450',
|
||||
failedPinAttempts: 2,
|
||||
status: 'unapproved',
|
||||
bio: 'Food',
|
||||
gender: 'male',
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
name: 'Hera Cles',
|
||||
phone: '+25498769876',
|
||||
address: '0xc86ff893ac40d3950b4d5f94a9b837258b0a9865',
|
||||
type: 'user',
|
||||
created: '05/28/2020',
|
||||
balance: '5621',
|
||||
failedPinAttempts: 3,
|
||||
status: 'approved',
|
||||
bio: 'Shop',
|
||||
gender: 'female',
|
||||
},
|
||||
{
|
||||
id: 5,
|
||||
name: 'Silver Fia',
|
||||
phone: '+25462518374',
|
||||
address: '0xc86ff893ac40d3950b4d5f94a9b837258b0a9865',
|
||||
type: 'token agent',
|
||||
created: '10/10/2020',
|
||||
balance: '817',
|
||||
failedPinAttempts: 0,
|
||||
status: 'unapproved',
|
||||
bio: 'Electronics',
|
||||
gender: 'male',
|
||||
},
|
||||
];
|
||||
|
||||
actions = [
|
||||
@ -518,7 +644,13 @@ export class UserServiceStub {
|
||||
{ id: 3, user: 'Will', role: 'superadmin', action: 'Reclaim RSV 1000', approval: true },
|
||||
{ id: 4, user: 'Vivian', role: 'enroller', action: 'Complete user profile', approval: true },
|
||||
{ id: 5, user: 'Jack', role: 'enroller', action: 'Reclaim RSV 200', approval: false },
|
||||
{ id: 6, user: 'Patience', role: 'enroller', action: 'Change user information', approval: false }
|
||||
{
|
||||
id: 6,
|
||||
user: 'Patience',
|
||||
role: 'enroller',
|
||||
action: 'Change user information',
|
||||
approval: false,
|
||||
},
|
||||
];
|
||||
|
||||
getUserById(id: string): any {
|
||||
@ -533,7 +665,7 @@ export class UserServiceStub {
|
||||
failedPinAttempts: 1,
|
||||
status: 'approved',
|
||||
bio: 'Bodaboda',
|
||||
gender: 'male'
|
||||
gender: 'male',
|
||||
};
|
||||
}
|
||||
|
||||
@ -544,20 +676,17 @@ export class UserServiceStub {
|
||||
key: {
|
||||
ethereum: [
|
||||
'0x51d3c8e2e421604e2b644117a362d589c5434739',
|
||||
'0x9D7c284907acbd4a0cE2dDD0AA69147A921a573D'
|
||||
]
|
||||
'0x9D7c284907acbd4a0cE2dDD0AA69147A921a573D',
|
||||
],
|
||||
},
|
||||
location: {
|
||||
external: {},
|
||||
latitude: '22.430670',
|
||||
longitude: '151.002995'
|
||||
longitude: '151.002995',
|
||||
},
|
||||
selling: [
|
||||
'environment',
|
||||
'health',
|
||||
'transport'
|
||||
],
|
||||
vcard: 'QkVHSU46VkNBUkQNClZFUlNJT046My4wDQpFTUFJTDphYXJuZXNlbkBob3RtYWlsLmNvbQ0KRk46S3VydMKgS3JhbmpjDQpOOktyYW5qYztLdXJ0Ozs7DQpURUw7VFlQPUNFTEw6NjkyNTAzMzQ5ODE5Ng0KRU5EOlZDQVJEDQo='
|
||||
selling: ['environment', 'health', 'transport'],
|
||||
vcard:
|
||||
'QkVHSU46VkNBUkQNClZFUlNJT046My4wDQpFTUFJTDphYXJuZXNlbkBob3RtYWlsLmNvbQ0KRk46S3VydMKgS3JhbmpjDQpOOktyYW5qYztLdXJ0Ozs7DQpURUw7VFlQPUNFTEw6NjkyNTAzMzQ5ODE5Ng0KRU5EOlZDQVJEDQo=',
|
||||
});
|
||||
}
|
||||
|
||||
@ -567,7 +696,7 @@ export class UserServiceStub {
|
||||
user: 'Tom',
|
||||
role: 'enroller',
|
||||
action: 'Disburse RSV 100',
|
||||
approval: false
|
||||
approval: false,
|
||||
};
|
||||
}
|
||||
|
||||
@ -577,7 +706,7 @@ export class UserServiceStub {
|
||||
user: 'Tom',
|
||||
role: 'enroller',
|
||||
action: 'Disburse RSV 100',
|
||||
approval: true
|
||||
approval: true,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@ -983,33 +983,61 @@ export class AccountSearchComponent implements OnInit {
|
||||
</ol>
|
||||
</nav>
|
||||
<div class="card">
|
||||
<mat-card-title class="card-header">
|
||||
Accounts
|
||||
</mat-card-title>
|
||||
<mat-card-title class="card-header"> Accounts </mat-card-title>
|
||||
<div class="card-body">
|
||||
<mat-tab-group>
|
||||
<mat-tab label="Phone Number">
|
||||
<form [formGroup]="phoneSearchForm" (ngSubmit)="onPhoneSearch()">
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label> Search </mat-label>
|
||||
<input matInput type="text" placeholder="Search by phone number" formControlName="phoneNumber" [errorStateMatcher]="matcher">
|
||||
<mat-error *ngIf="phoneSearchSubmitted && phoneSearchFormStub.phoneNumber.errors">Phone Number is required.</mat-error>
|
||||
<input
|
||||
matInput
|
||||
type="text"
|
||||
placeholder="Search by phone number"
|
||||
formControlName="phoneNumber"
|
||||
[errorStateMatcher]="matcher"
|
||||
/>
|
||||
<mat-error *ngIf="phoneSearchSubmitted && phoneSearchFormStub.phoneNumber.errors"
|
||||
>Phone Number is required.</mat-error
|
||||
>
|
||||
<mat-icon matSuffix>phone</mat-icon>
|
||||
<mat-hint>Phone Number</mat-hint>
|
||||
</mat-form-field>
|
||||
<button mat-raised-button color="primary" type="submit" class="btn btn-outline-primary ml-3"> SEARCH </button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
type="submit"
|
||||
class="btn btn-outline-primary ml-3"
|
||||
>
|
||||
SEARCH
|
||||
</button>
|
||||
</form>
|
||||
</mat-tab>
|
||||
<mat-tab label="Account Address">
|
||||
<form [formGroup]="addressSearchForm" (ngSubmit)="onAddressSearch()">
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label> Search </mat-label>
|
||||
<input matInput type="text" placeholder="Search by account address" formControlName="address" [errorStateMatcher]="matcher">
|
||||
<mat-error *ngIf="addressSearchSubmitted && addressSearchFormStub.address.errors">Account Address is required.</mat-error>
|
||||
<input
|
||||
matInput
|
||||
type="text"
|
||||
placeholder="Search by account address"
|
||||
formControlName="address"
|
||||
[errorStateMatcher]="matcher"
|
||||
/>
|
||||
<mat-error *ngIf="addressSearchSubmitted && addressSearchFormStub.address.errors"
|
||||
>Account Address is required.</mat-error
|
||||
>
|
||||
<mat-icon matSuffix>view_in_ar</mat-icon>
|
||||
<mat-hint>Account Address</mat-hint>
|
||||
</mat-form-field>
|
||||
<button mat-raised-button color="primary" type="submit" class="btn btn-outline-primary ml-3"> SEARCH </button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
type="submit"
|
||||
class="btn btn-outline-primary ml-3"
|
||||
>
|
||||
SEARCH
|
||||
</button>
|
||||
</form>
|
||||
</mat-tab>
|
||||
</mat-tab-group>
|
||||
@ -1057,7 +1085,7 @@ export class AccountSearchComponent implements OnInit {
|
||||
<script src="../js/libs/htmlparser.js"></script>
|
||||
<script src="../js/libs/deep-iterator.js"></script>
|
||||
<script>
|
||||
var COMPONENT_TEMPLATE = '<div><!-- Begin page --><div class="wrapper"> <app-sidebar></app-sidebar> <!-- ============================================================== --> <!-- Start Page Content here --> <!-- ============================================================== --> <div id="content"> <app-topbar></app-topbar> <!-- Start Content--> <div class="container-fluid" appMenuSelection> <nav aria-label="breadcrumb"> <ol class="breadcrumb"> <li class="breadcrumb-item"><a routerLink="/home">Home</a></li> <li class="breadcrumb-item"><a routerLink="/accounts">Accounts</a></li> <li class="breadcrumb-item active" aria-current="page">Search</li> </ol> </nav> <div class="card"> <mat-card-title class="card-header"> Accounts </mat-card-title> <div class="card-body"> <mat-tab-group> <mat-tab label="Phone Number"> <form [formGroup]="phoneSearchForm" (ngSubmit)="onPhoneSearch()"> <mat-form-field appearance="outline"> <mat-label> Search </mat-label> <input matInput type="text" placeholder="Search by phone number" formControlName="phoneNumber" [errorStateMatcher]="matcher"> <mat-error *ngIf="phoneSearchSubmitted && phoneSearchFormStub.phoneNumber.errors">Phone Number is required.</mat-error> <mat-icon matSuffix>phone</mat-icon> <mat-hint>Phone Number</mat-hint> </mat-form-field> <button mat-raised-button color="primary" type="submit" class="btn btn-outline-primary ml-3"> SEARCH </button> </form> </mat-tab> <mat-tab label="Account Address"> <form [formGroup]="addressSearchForm" (ngSubmit)="onAddressSearch()"> <mat-form-field appearance="outline"> <mat-label> Search </mat-label> <input matInput type="text" placeholder="Search by account address" formControlName="address" [errorStateMatcher]="matcher"> <mat-error *ngIf="addressSearchSubmitted && addressSearchFormStub.address.errors">Account Address is required.</mat-error> <mat-icon matSuffix>view_in_ar</mat-icon> <mat-hint>Account Address</mat-hint> </mat-form-field> <button mat-raised-button color="primary" type="submit" class="btn btn-outline-primary ml-3"> SEARCH </button> </form> </mat-tab> </mat-tab-group> </div> </div> </div> <app-footer appMenuSelection></app-footer> </div> <!-- ============================================================== --> <!-- End Page content --> <!-- ============================================================== --></div></div>'
|
||||
var COMPONENT_TEMPLATE = '<div><!-- Begin page --><div class="wrapper"> <app-sidebar></app-sidebar> <!-- ============================================================== --> <!-- Start Page Content here --> <!-- ============================================================== --> <div id="content"> <app-topbar></app-topbar> <!-- Start Content--> <div class="container-fluid" appMenuSelection> <nav aria-label="breadcrumb"> <ol class="breadcrumb"> <li class="breadcrumb-item"><a routerLink="/home">Home</a></li> <li class="breadcrumb-item"><a routerLink="/accounts">Accounts</a></li> <li class="breadcrumb-item active" aria-current="page">Search</li> </ol> </nav> <div class="card"> <mat-card-title class="card-header"> Accounts </mat-card-title> <div class="card-body"> <mat-tab-group> <mat-tab label="Phone Number"> <form [formGroup]="phoneSearchForm" (ngSubmit)="onPhoneSearch()"> <mat-form-field appearance="outline"> <mat-label> Search </mat-label> <input matInput type="text" placeholder="Search by phone number" formControlName="phoneNumber" [errorStateMatcher]="matcher" /> <mat-error *ngIf="phoneSearchSubmitted && phoneSearchFormStub.phoneNumber.errors" >Phone Number is required.</mat-error > <mat-icon matSuffix>phone</mat-icon> <mat-hint>Phone Number</mat-hint> </mat-form-field> <button mat-raised-button color="primary" type="submit" class="btn btn-outline-primary ml-3" > SEARCH </button> </form> </mat-tab> <mat-tab label="Account Address"> <form [formGroup]="addressSearchForm" (ngSubmit)="onAddressSearch()"> <mat-form-field appearance="outline"> <mat-label> Search </mat-label> <input matInput type="text" placeholder="Search by account address" formControlName="address" [errorStateMatcher]="matcher" /> <mat-error *ngIf="addressSearchSubmitted && addressSearchFormStub.address.errors" >Account Address is required.</mat-error > <mat-icon matSuffix>view_in_ar</mat-icon> <mat-hint>Account Address</mat-hint> </mat-form-field> <button mat-raised-button color="primary" type="submit" class="btn btn-outline-primary ml-3" > SEARCH </button> </form> </mat-tab> </mat-tab-group> </div> </div> </div> <app-footer appMenuSelection></app-footer> </div> <!-- ============================================================== --> <!-- End Page content --> <!-- ============================================================== --></div></div>'
|
||||
var COMPONENTS = [{'name': 'AccountDetailsComponent', 'selector': 'app-account-details'},{'name': 'AccountsComponent', 'selector': 'app-accounts'},{'name': 'AccountSearchComponent', 'selector': 'app-account-search'},{'name': 'AdminComponent', 'selector': 'app-admin'},{'name': 'AppComponent', 'selector': 'app-root'},{'name': 'AuthComponent', 'selector': 'app-auth'},{'name': 'CreateAccountComponent', 'selector': 'app-create-account'},{'name': 'ErrorDialogComponent', 'selector': 'app-error-dialog'},{'name': 'FooterComponent', 'selector': 'app-footer'},{'name': 'FooterStubComponent', 'selector': 'app-footer'},{'name': 'NetworkStatusComponent', 'selector': 'app-network-status'},{'name': 'OrganizationComponent', 'selector': 'app-organization'},{'name': 'PagesComponent', 'selector': 'app-pages'},{'name': 'SettingsComponent', 'selector': 'app-settings'},{'name': 'SidebarComponent', 'selector': 'app-sidebar'},{'name': 'SidebarStubComponent', 'selector': 'app-sidebar'},{'name': 'TokenDetailsComponent', 'selector': 'app-token-details'},{'name': 'TokensComponent', 'selector': 'app-tokens'},{'name': 'TopbarComponent', 'selector': 'app-topbar'},{'name': 'TopbarStubComponent', 'selector': 'app-topbar'},{'name': 'TransactionDetailsComponent', 'selector': 'app-transaction-details'},{'name': 'TransactionsComponent', 'selector': 'app-transactions'}];
|
||||
var DIRECTIVES = [{'name': 'MenuSelectionDirective', 'selector': '[appMenuSelection]'},{'name': 'MenuToggleDirective', 'selector': '[appMenuToggle]'},{'name': 'PasswordToggleDirective', 'selector': '[appPasswordToggle]'},{'name': 'RouterLinkDirectiveStub', 'selector': '[appRouterLink]'}];
|
||||
var ACTUAL_COMPONENT = {'name': 'AccountSearchComponent'};
|
||||
|
@ -992,63 +992,99 @@ export class AccountsComponent implements OnInit {
|
||||
</ol>
|
||||
</nav>
|
||||
<div class="card">
|
||||
<mat-card-title class="card-header">
|
||||
Accounts
|
||||
</mat-card-title>
|
||||
<mat-card-title class="card-header"> Accounts </mat-card-title>
|
||||
<div class="card-body">
|
||||
<div class="row card-header">
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label> ACCOUNT TYPE </mat-label>
|
||||
<mat-select id="typeSelect" [(value)]="accountsType" (selectionChange)="filterAccounts()">
|
||||
<mat-select
|
||||
id="typeSelect"
|
||||
[(value)]="accountsType"
|
||||
(selectionChange)="filterAccounts()"
|
||||
>
|
||||
<mat-option value="all">ALL</mat-option>
|
||||
<mat-option *ngFor="let accountType of accountTypes" [value]="accountType">
|
||||
{{accountType | uppercase}}
|
||||
{{ accountType | uppercase }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
<button mat-raised-button color="primary" type="button" class="btn btn-outline-primary ml-auto mr-2" routerLink="/accounts/search"> SEARCH </button>
|
||||
<button mat-raised-button color="primary" type="button" class="btn btn-outline-primary mr-2" (click)="downloadCsv()"> EXPORT </button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
type="button"
|
||||
class="btn btn-outline-primary ml-auto mr-2"
|
||||
routerLink="/accounts/search"
|
||||
>
|
||||
SEARCH
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
type="button"
|
||||
class="btn btn-outline-primary mr-2"
|
||||
(click)="downloadCsv()"
|
||||
>
|
||||
EXPORT
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label> Filter </mat-label>
|
||||
<input matInput type="text" (keyup)="doFilter($event.target.value)" placeholder="Filter">
|
||||
<input
|
||||
matInput
|
||||
type="text"
|
||||
(keyup)="doFilter($event.target.value)"
|
||||
placeholder="Filter"
|
||||
/>
|
||||
<mat-icon matSuffix>search</mat-icon>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-table class="mat-elevation-z10" [dataSource]="dataSource" matSort matSortActive="created"
|
||||
matSortDirection="desc" matSortDisableClear>
|
||||
|
||||
<mat-table
|
||||
class="mat-elevation-z10"
|
||||
[dataSource]="dataSource"
|
||||
matSort
|
||||
matSortActive="created"
|
||||
matSortDirection="desc"
|
||||
matSortDisableClear
|
||||
>
|
||||
<ng-container matColumnDef="name">
|
||||
<mat-header-cell *matHeaderCellDef mat-sort-header> NAME </mat-header-cell>
|
||||
<mat-cell *matCellDef="let user"> {{user?.vcard.fn[0].value}} </mat-cell>
|
||||
<mat-cell *matCellDef="let user"> {{ user?.vcard.fn[0].value }} </mat-cell>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="phone">
|
||||
<mat-header-cell *matHeaderCellDef mat-sort-header> PHONE NUMBER </mat-header-cell>
|
||||
<mat-cell *matCellDef="let user"> {{user?.vcard.tel[0].value}} </mat-cell>
|
||||
<mat-cell *matCellDef="let user"> {{ user?.vcard.tel[0].value }} </mat-cell>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="created">
|
||||
<mat-header-cell *matHeaderCellDef mat-sort-header> CREATED </mat-header-cell>
|
||||
<mat-cell *matCellDef="let user"> {{user?.date_registered | unixDate}} </mat-cell>
|
||||
<mat-cell *matCellDef="let user"> {{ user?.date_registered | unixDate }} </mat-cell>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="balance">
|
||||
<mat-header-cell *matHeaderCellDef mat-sort-header> BALANCE </mat-header-cell>
|
||||
<mat-cell *matCellDef="let user"> {{user?.balance | tokenRatio}} </mat-cell>
|
||||
<mat-cell *matCellDef="let user"> {{ user?.balance | tokenRatio }} </mat-cell>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="location">
|
||||
<mat-header-cell *matHeaderCellDef mat-sort-header> LOCATION </mat-header-cell>
|
||||
<mat-cell *matCellDef="let user"> {{user?.location.area_name}} </mat-cell>
|
||||
<mat-cell *matCellDef="let user"> {{ user?.location.area_name }} </mat-cell>
|
||||
</ng-container>
|
||||
|
||||
<mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row>
|
||||
<mat-row *matRowDef="let account; columns: displayedColumns" (click)="viewAccount(account)" matRipple></mat-row>
|
||||
<mat-row
|
||||
*matRowDef="let account; columns: displayedColumns"
|
||||
(click)="viewAccount(account)"
|
||||
matRipple
|
||||
></mat-row>
|
||||
</mat-table>
|
||||
|
||||
<mat-paginator [pageSize]="defaultPageSize" [pageSizeOptions]="pageSizeOptions" showFirstLastButtons></mat-paginator>
|
||||
<mat-paginator
|
||||
[pageSize]="defaultPageSize"
|
||||
[pageSizeOptions]="pageSizeOptions"
|
||||
showFirstLastButtons
|
||||
></mat-paginator>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -1093,7 +1129,7 @@ export class AccountsComponent implements OnInit {
|
||||
<script src="../js/libs/htmlparser.js"></script>
|
||||
<script src="../js/libs/deep-iterator.js"></script>
|
||||
<script>
|
||||
var COMPONENT_TEMPLATE = '<div><!-- Begin page --><div class="wrapper"> <app-sidebar></app-sidebar> <!-- ============================================================== --> <!-- Start Page Content here --> <!-- ============================================================== --> <div id="content"> <app-topbar></app-topbar> <!-- Start Content--> <div class="container-fluid" appMenuSelection> <nav aria-label="breadcrumb"> <ol class="breadcrumb"> <li class="breadcrumb-item"><a routerLink="/home">Home</a></li> <li class="breadcrumb-item active" aria-current="page">Accounts</li> </ol> </nav> <div class="card"> <mat-card-title class="card-header"> Accounts </mat-card-title> <div class="card-body"> <div class="row card-header"> <mat-form-field appearance="outline"> <mat-label> ACCOUNT TYPE </mat-label> <mat-select id="typeSelect" [(value)]="accountsType" (selectionChange)="filterAccounts()"> <mat-option value="all">ALL</mat-option> <mat-option *ngFor="let accountType of accountTypes" [value]="accountType"> {{accountType | uppercase}} </mat-option> </mat-select> </mat-form-field> <button mat-raised-button color="primary" type="button" class="btn btn-outline-primary ml-auto mr-2" routerLink="/accounts/search"> SEARCH </button> <button mat-raised-button color="primary" type="button" class="btn btn-outline-primary mr-2" (click)="downloadCsv()"> EXPORT </button> </div> <mat-form-field appearance="outline"> <mat-label> Filter </mat-label> <input matInput type="text" (keyup)="doFilter($event.target.value)" placeholder="Filter"> <mat-icon matSuffix>search</mat-icon> </mat-form-field> <mat-table class="mat-elevation-z10" [dataSource]="dataSource" matSort matSortActive="created" matSortDirection="desc" matSortDisableClear> <ng-container matColumnDef="name"> <mat-header-cell *matHeaderCellDef mat-sort-header> NAME </mat-header-cell> <mat-cell *matCellDef="let user"> {{user?.vcard.fn[0].value}} </mat-cell> </ng-container> <ng-container matColumnDef="phone"> <mat-header-cell *matHeaderCellDef mat-sort-header> PHONE NUMBER </mat-header-cell> <mat-cell *matCellDef="let user"> {{user?.vcard.tel[0].value}} </mat-cell> </ng-container> <ng-container matColumnDef="created"> <mat-header-cell *matHeaderCellDef mat-sort-header> CREATED </mat-header-cell> <mat-cell *matCellDef="let user"> {{user?.date_registered | unixDate}} </mat-cell> </ng-container> <ng-container matColumnDef="balance"> <mat-header-cell *matHeaderCellDef mat-sort-header> BALANCE </mat-header-cell> <mat-cell *matCellDef="let user"> {{user?.balance | tokenRatio}} </mat-cell> </ng-container> <ng-container matColumnDef="location"> <mat-header-cell *matHeaderCellDef mat-sort-header> LOCATION </mat-header-cell> <mat-cell *matCellDef="let user"> {{user?.location.area_name}} </mat-cell> </ng-container> <mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row> <mat-row *matRowDef="let account; columns: displayedColumns" (click)="viewAccount(account)" matRipple></mat-row> </mat-table> <mat-paginator [pageSize]="defaultPageSize" [pageSizeOptions]="pageSizeOptions" showFirstLastButtons></mat-paginator> </div> </div> </div> <app-footer appMenuSelection></app-footer> </div> <!-- ============================================================== --> <!-- End Page content --> <!-- ============================================================== --></div></div>'
|
||||
var COMPONENT_TEMPLATE = '<div><!-- Begin page --><div class="wrapper"> <app-sidebar></app-sidebar> <!-- ============================================================== --> <!-- Start Page Content here --> <!-- ============================================================== --> <div id="content"> <app-topbar></app-topbar> <!-- Start Content--> <div class="container-fluid" appMenuSelection> <nav aria-label="breadcrumb"> <ol class="breadcrumb"> <li class="breadcrumb-item"><a routerLink="/home">Home</a></li> <li class="breadcrumb-item active" aria-current="page">Accounts</li> </ol> </nav> <div class="card"> <mat-card-title class="card-header"> Accounts </mat-card-title> <div class="card-body"> <div class="row card-header"> <mat-form-field appearance="outline"> <mat-label> ACCOUNT TYPE </mat-label> <mat-select id="typeSelect" [(value)]="accountsType" (selectionChange)="filterAccounts()" > <mat-option value="all">ALL</mat-option> <mat-option *ngFor="let accountType of accountTypes" [value]="accountType"> {{ accountType | uppercase }} </mat-option> </mat-select> </mat-form-field> <button mat-raised-button color="primary" type="button" class="btn btn-outline-primary ml-auto mr-2" routerLink="/accounts/search" > SEARCH </button> <button mat-raised-button color="primary" type="button" class="btn btn-outline-primary mr-2" (click)="downloadCsv()" > EXPORT </button> </div> <mat-form-field appearance="outline"> <mat-label> Filter </mat-label> <input matInput type="text" (keyup)="doFilter($event.target.value)" placeholder="Filter" /> <mat-icon matSuffix>search</mat-icon> </mat-form-field> <mat-table class="mat-elevation-z10" [dataSource]="dataSource" matSort matSortActive="created" matSortDirection="desc" matSortDisableClear > <ng-container matColumnDef="name"> <mat-header-cell *matHeaderCellDef mat-sort-header> NAME </mat-header-cell> <mat-cell *matCellDef="let user"> {{ user?.vcard.fn[0].value }} </mat-cell> </ng-container> <ng-container matColumnDef="phone"> <mat-header-cell *matHeaderCellDef mat-sort-header> PHONE NUMBER </mat-header-cell> <mat-cell *matCellDef="let user"> {{ user?.vcard.tel[0].value }} </mat-cell> </ng-container> <ng-container matColumnDef="created"> <mat-header-cell *matHeaderCellDef mat-sort-header> CREATED </mat-header-cell> <mat-cell *matCellDef="let user"> {{ user?.date_registered | unixDate }} </mat-cell> </ng-container> <ng-container matColumnDef="balance"> <mat-header-cell *matHeaderCellDef mat-sort-header> BALANCE </mat-header-cell> <mat-cell *matCellDef="let user"> {{ user?.balance | tokenRatio }} </mat-cell> </ng-container> <ng-container matColumnDef="location"> <mat-header-cell *matHeaderCellDef mat-sort-header> LOCATION </mat-header-cell> <mat-cell *matCellDef="let user"> {{ user?.location.area_name }} </mat-cell> </ng-container> <mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row> <mat-row *matRowDef="let account; columns: displayedColumns" (click)="viewAccount(account)" matRipple ></mat-row> </mat-table> <mat-paginator [pageSize]="defaultPageSize" [pageSizeOptions]="pageSizeOptions" showFirstLastButtons ></mat-paginator> </div> </div> </div> <app-footer appMenuSelection></app-footer> </div> <!-- ============================================================== --> <!-- End Page content --> <!-- ============================================================== --></div></div>'
|
||||
var COMPONENTS = [{'name': 'AccountDetailsComponent', 'selector': 'app-account-details'},{'name': 'AccountsComponent', 'selector': 'app-accounts'},{'name': 'AccountSearchComponent', 'selector': 'app-account-search'},{'name': 'AdminComponent', 'selector': 'app-admin'},{'name': 'AppComponent', 'selector': 'app-root'},{'name': 'AuthComponent', 'selector': 'app-auth'},{'name': 'CreateAccountComponent', 'selector': 'app-create-account'},{'name': 'ErrorDialogComponent', 'selector': 'app-error-dialog'},{'name': 'FooterComponent', 'selector': 'app-footer'},{'name': 'FooterStubComponent', 'selector': 'app-footer'},{'name': 'NetworkStatusComponent', 'selector': 'app-network-status'},{'name': 'OrganizationComponent', 'selector': 'app-organization'},{'name': 'PagesComponent', 'selector': 'app-pages'},{'name': 'SettingsComponent', 'selector': 'app-settings'},{'name': 'SidebarComponent', 'selector': 'app-sidebar'},{'name': 'SidebarStubComponent', 'selector': 'app-sidebar'},{'name': 'TokenDetailsComponent', 'selector': 'app-token-details'},{'name': 'TokensComponent', 'selector': 'app-tokens'},{'name': 'TopbarComponent', 'selector': 'app-topbar'},{'name': 'TopbarStubComponent', 'selector': 'app-topbar'},{'name': 'TransactionDetailsComponent', 'selector': 'app-transaction-details'},{'name': 'TransactionsComponent', 'selector': 'app-transactions'}];
|
||||
var DIRECTIVES = [{'name': 'MenuSelectionDirective', 'selector': '[appMenuSelection]'},{'name': 'MenuToggleDirective', 'selector': '[appMenuToggle]'},{'name': 'PasswordToggleDirective', 'selector': '[appPasswordToggle]'},{'name': 'RouterLinkDirectiveStub', 'selector': '[appRouterLink]'}];
|
||||
var ACTUAL_COMPONENT = {'name': 'AccountsComponent'};
|
||||
|
@ -785,19 +785,24 @@ export class AuthComponent implements OnInit {
|
||||
</a>
|
||||
</mat-card-title>
|
||||
<div id="one" style="display: block" class="card-body p-4">
|
||||
|
||||
<div class="text-center w-75 m-auto">
|
||||
<h4 class="text-dark-50 text-center font-weight-bold">Add Private Key</h4>
|
||||
</div>
|
||||
|
||||
<form [formGroup]="keyForm" (ngSubmit)="onSubmit()">
|
||||
|
||||
<mat-form-field appearance="outline" class="full-width">
|
||||
<mat-label>Private Key</mat-label>
|
||||
<textarea matInput style="height: 30rem" formControlName="key" placeholder="Enter your private key..."
|
||||
[errorStateMatcher]="matcher"></textarea>
|
||||
<textarea
|
||||
matInput
|
||||
style="height: 30rem"
|
||||
formControlName="key"
|
||||
placeholder="Enter your private key..."
|
||||
[errorStateMatcher]="matcher"
|
||||
></textarea>
|
||||
<div *ngIf="submitted && keyFormStub.key.errors" class="invalid-feedback">
|
||||
<mat-error *ngIf="keyFormStub.key.errors.required">Private Key is required.</mat-error>
|
||||
<mat-error *ngIf="keyFormStub.key.errors.required"
|
||||
>Private Key is required.</mat-error
|
||||
>
|
||||
</div>
|
||||
</mat-form-field>
|
||||
|
||||
@ -805,20 +810,24 @@ export class AuthComponent implements OnInit {
|
||||
<span *ngIf="loading" class="spinner-border spinner-border-sm mr-1"></span>
|
||||
Add Key
|
||||
</button>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
<div id="two" style="display: none" class="card-body p-4 align-items-center">
|
||||
|
||||
<div class="text-center w-75 m-auto">
|
||||
<h4 id="state" class="text-dark-50 text-center font-weight-bold"></h4>
|
||||
<button mat-raised-button matRipple color="primary" type="submit" (click)="login()"> Login </button>
|
||||
<button mat-raised-button matRipple color="primary" type="submit" (click)="login()">
|
||||
Login
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="row mt-3">
|
||||
<div class="col-12 text-center">
|
||||
<p class="text-muted">Change private key? <a (click)="switchWindows()" class="text-muted ml-1"><b>Enter private key</b></a></p>
|
||||
</div> <!-- end col-->
|
||||
<p class="text-muted">
|
||||
Change private key?
|
||||
<a (click)="switchWindows()" class="text-muted ml-1"><b>Enter private key</b></a>
|
||||
</p>
|
||||
</div>
|
||||
<!-- end col-->
|
||||
</div>
|
||||
<!-- end row -->
|
||||
</div>
|
||||
@ -861,7 +870,7 @@ export class AuthComponent implements OnInit {
|
||||
<script src="../js/libs/htmlparser.js"></script>
|
||||
<script src="../js/libs/deep-iterator.js"></script>
|
||||
<script>
|
||||
var COMPONENT_TEMPLATE = '<div><app-network-status></app-network-status><div class="container"> <div class="row justify-content-center mt-5 mb-5"> <div class="col-lg-6 col-md-8 col-sm-10"> <div class="card"> <mat-card-title class="card-header pt-4 pb-4 text-center background-dark"> <a routerLink="/"> <h1 class="text-white">CICADA</h1> </a> </mat-card-title> <div id="one" style="display: block" class="card-body p-4"> <div class="text-center w-75 m-auto"> <h4 class="text-dark-50 text-center font-weight-bold">Add Private Key</h4> </div> <form [formGroup]="keyForm" (ngSubmit)="onSubmit()"> <mat-form-field appearance="outline" class="full-width"> <mat-label>Private Key</mat-label> <textarea matInput style="height: 30rem" formControlName="key" placeholder="Enter your private key..." [errorStateMatcher]="matcher"></textarea> <div *ngIf="submitted && keyFormStub.key.errors" class="invalid-feedback"> <mat-error *ngIf="keyFormStub.key.errors.required">Private Key is required.</mat-error> </div> </mat-form-field> <button mat-raised-button matRipple color="primary" type="submit" [disabled]="loading"> <span *ngIf="loading" class="spinner-border spinner-border-sm mr-1"></span> Add Key </button> </form> </div> <div id="two" style="display: none" class="card-body p-4 align-items-center"> <div class="text-center w-75 m-auto"> <h4 id="state" class="text-dark-50 text-center font-weight-bold"></h4> <button mat-raised-button matRipple color="primary" type="submit" (click)="login()"> Login </button> </div> <div class="row mt-3"> <div class="col-12 text-center"> <p class="text-muted">Change private key? <a (click)="switchWindows()" class="text-muted ml-1"><b>Enter private key</b></a></p> </div> <!-- end col--> </div> <!-- end row --> </div> </div> </div> </div></div></div>'
|
||||
var COMPONENT_TEMPLATE = '<div><app-network-status></app-network-status><div class="container"> <div class="row justify-content-center mt-5 mb-5"> <div class="col-lg-6 col-md-8 col-sm-10"> <div class="card"> <mat-card-title class="card-header pt-4 pb-4 text-center background-dark"> <a routerLink="/"> <h1 class="text-white">CICADA</h1> </a> </mat-card-title> <div id="one" style="display: block" class="card-body p-4"> <div class="text-center w-75 m-auto"> <h4 class="text-dark-50 text-center font-weight-bold">Add Private Key</h4> </div> <form [formGroup]="keyForm" (ngSubmit)="onSubmit()"> <mat-form-field appearance="outline" class="full-width"> <mat-label>Private Key</mat-label> <textarea matInput style="height: 30rem" formControlName="key" placeholder="Enter your private key..." [errorStateMatcher]="matcher" ></textarea> <div *ngIf="submitted && keyFormStub.key.errors" class="invalid-feedback"> <mat-error *ngIf="keyFormStub.key.errors.required" >Private Key is required.</mat-error > </div> </mat-form-field> <button mat-raised-button matRipple color="primary" type="submit" [disabled]="loading"> <span *ngIf="loading" class="spinner-border spinner-border-sm mr-1"></span> Add Key </button> </form> </div> <div id="two" style="display: none" class="card-body p-4 align-items-center"> <div class="text-center w-75 m-auto"> <h4 id="state" class="text-dark-50 text-center font-weight-bold"></h4> <button mat-raised-button matRipple color="primary" type="submit" (click)="login()"> Login </button> </div> <div class="row mt-3"> <div class="col-12 text-center"> <p class="text-muted"> Change private key? <a (click)="switchWindows()" class="text-muted ml-1"><b>Enter private key</b></a> </p> </div> <!-- end col--> </div> <!-- end row --> </div> </div> </div> </div></div></div>'
|
||||
var COMPONENTS = [{'name': 'AccountDetailsComponent', 'selector': 'app-account-details'},{'name': 'AccountsComponent', 'selector': 'app-accounts'},{'name': 'AccountSearchComponent', 'selector': 'app-account-search'},{'name': 'AdminComponent', 'selector': 'app-admin'},{'name': 'AppComponent', 'selector': 'app-root'},{'name': 'AuthComponent', 'selector': 'app-auth'},{'name': 'CreateAccountComponent', 'selector': 'app-create-account'},{'name': 'ErrorDialogComponent', 'selector': 'app-error-dialog'},{'name': 'FooterComponent', 'selector': 'app-footer'},{'name': 'FooterStubComponent', 'selector': 'app-footer'},{'name': 'NetworkStatusComponent', 'selector': 'app-network-status'},{'name': 'OrganizationComponent', 'selector': 'app-organization'},{'name': 'PagesComponent', 'selector': 'app-pages'},{'name': 'SettingsComponent', 'selector': 'app-settings'},{'name': 'SidebarComponent', 'selector': 'app-sidebar'},{'name': 'SidebarStubComponent', 'selector': 'app-sidebar'},{'name': 'TokenDetailsComponent', 'selector': 'app-token-details'},{'name': 'TokensComponent', 'selector': 'app-tokens'},{'name': 'TopbarComponent', 'selector': 'app-topbar'},{'name': 'TopbarStubComponent', 'selector': 'app-topbar'},{'name': 'TransactionDetailsComponent', 'selector': 'app-transaction-details'},{'name': 'TransactionsComponent', 'selector': 'app-transactions'}];
|
||||
var DIRECTIVES = [{'name': 'MenuSelectionDirective', 'selector': '[appMenuSelection]'},{'name': 'MenuToggleDirective', 'selector': '[appMenuToggle]'},{'name': 'PasswordToggleDirective', 'selector': '[appPasswordToggle]'},{'name': 'RouterLinkDirectiveStub', 'selector': '[appRouterLink]'}];
|
||||
var ACTUAL_COMPONENT = {'name': 'AuthComponent'};
|
||||
|
@ -264,12 +264,8 @@ export class ErrorDialogComponent {
|
||||
<div class="tab-pane fade " id="c-templateData">
|
||||
<pre class="line-numbers"><code class="language-html"><div>
|
||||
<div>
|
||||
<p>
|
||||
Message: {{ data.message }}
|
||||
</p>
|
||||
<p *ngIf="data.status">
|
||||
Status: {{ data?.status }}
|
||||
</p>
|
||||
<p>Message: {{ data.message }}</p>
|
||||
<p *ngIf="data.status">Status: {{ data?.status }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</code></pre>
|
||||
@ -307,7 +303,7 @@ export class ErrorDialogComponent {
|
||||
<script src="../js/libs/htmlparser.js"></script>
|
||||
<script src="../js/libs/deep-iterator.js"></script>
|
||||
<script>
|
||||
var COMPONENT_TEMPLATE = '<div><div> <div> <p> Message: {{ data.message }} </p> <p *ngIf="data.status"> Status: {{ data?.status }} </p> </div></div></div>'
|
||||
var COMPONENT_TEMPLATE = '<div><div> <div> <p>Message: {{ data.message }}</p> <p *ngIf="data.status">Status: {{ data?.status }}</p> </div></div></div>'
|
||||
var COMPONENTS = [{'name': 'AccountDetailsComponent', 'selector': 'app-account-details'},{'name': 'AccountsComponent', 'selector': 'app-accounts'},{'name': 'AccountSearchComponent', 'selector': 'app-account-search'},{'name': 'AdminComponent', 'selector': 'app-admin'},{'name': 'AppComponent', 'selector': 'app-root'},{'name': 'AuthComponent', 'selector': 'app-auth'},{'name': 'CreateAccountComponent', 'selector': 'app-create-account'},{'name': 'ErrorDialogComponent', 'selector': 'app-error-dialog'},{'name': 'FooterComponent', 'selector': 'app-footer'},{'name': 'FooterStubComponent', 'selector': 'app-footer'},{'name': 'NetworkStatusComponent', 'selector': 'app-network-status'},{'name': 'OrganizationComponent', 'selector': 'app-organization'},{'name': 'PagesComponent', 'selector': 'app-pages'},{'name': 'SettingsComponent', 'selector': 'app-settings'},{'name': 'SidebarComponent', 'selector': 'app-sidebar'},{'name': 'SidebarStubComponent', 'selector': 'app-sidebar'},{'name': 'TokenDetailsComponent', 'selector': 'app-token-details'},{'name': 'TokensComponent', 'selector': 'app-tokens'},{'name': 'TopbarComponent', 'selector': 'app-topbar'},{'name': 'TopbarStubComponent', 'selector': 'app-topbar'},{'name': 'TransactionDetailsComponent', 'selector': 'app-transaction-details'},{'name': 'TransactionsComponent', 'selector': 'app-transactions'}];
|
||||
var DIRECTIVES = [{'name': 'MenuSelectionDirective', 'selector': '[appMenuSelection]'},{'name': 'MenuToggleDirective', 'selector': '[appMenuToggle]'},{'name': 'PasswordToggleDirective', 'selector': '[appPasswordToggle]'},{'name': 'RouterLinkDirectiveStub', 'selector': '[appRouterLink]'}];
|
||||
var ACTUAL_COMPONENT = {'name': 'ErrorDialogComponent'};
|
||||
|
@ -288,10 +288,12 @@ export class FooterComponent implements OnInit {
|
||||
<div class="tab-pane fade " id="c-templateData">
|
||||
<pre class="line-numbers"><code class="language-html"><!-- Footer Start -->
|
||||
<footer class="footer">
|
||||
<a target="blank" title="GPL-3" href="https://www.gnu.org/licenses/gpl-3.0.en.html"> Copyleft </a> 🄯.
|
||||
<a target="blank" title="GPL-3" href="https://www.gnu.org/licenses/gpl-3.0.en.html"> Copyleft </a>
|
||||
🄯.
|
||||
{{ currentYear }}
|
||||
<a target="blank" title="Gitlab@GrassrootsEconomics" href="https://gitlab.com/grassrootseconomics"><u> Grassroots Economics </u></a>
|
||||
|
||||
<a target="blank" title="Gitlab@GrassrootsEconomics" href="https://gitlab.com/grassrootseconomics"
|
||||
><u> Grassroots Economics </u></a
|
||||
>
|
||||
</footer>
|
||||
<!-- end Footer -->
|
||||
</code></pre>
|
||||
@ -329,7 +331,7 @@ export class FooterComponent implements OnInit {
|
||||
<script src="../js/libs/htmlparser.js"></script>
|
||||
<script src="../js/libs/deep-iterator.js"></script>
|
||||
<script>
|
||||
var COMPONENT_TEMPLATE = '<div><!-- Footer Start --><footer class="footer"> <a target="blank" title="GPL-3" href="https://www.gnu.org/licenses/gpl-3.0.en.html"> Copyleft </a> 🄯. {{ currentYear }} <a target="blank" title="Gitlab@GrassrootsEconomics" href="https://gitlab.com/grassrootseconomics"><u> Grassroots Economics </u></a></footer><!-- end Footer --></div>'
|
||||
var COMPONENT_TEMPLATE = '<div><!-- Footer Start --><footer class="footer"> <a target="blank" title="GPL-3" href="https://www.gnu.org/licenses/gpl-3.0.en.html"> Copyleft </a> 🄯. {{ currentYear }} <a target="blank" title="Gitlab@GrassrootsEconomics" href="https://gitlab.com/grassrootseconomics" ><u> Grassroots Economics </u></a ></footer><!-- end Footer --></div>'
|
||||
var COMPONENTS = [{'name': 'AccountDetailsComponent', 'selector': 'app-account-details'},{'name': 'AccountsComponent', 'selector': 'app-accounts'},{'name': 'AccountSearchComponent', 'selector': 'app-account-search'},{'name': 'AdminComponent', 'selector': 'app-admin'},{'name': 'AppComponent', 'selector': 'app-root'},{'name': 'AuthComponent', 'selector': 'app-auth'},{'name': 'CreateAccountComponent', 'selector': 'app-create-account'},{'name': 'ErrorDialogComponent', 'selector': 'app-error-dialog'},{'name': 'FooterComponent', 'selector': 'app-footer'},{'name': 'FooterStubComponent', 'selector': 'app-footer'},{'name': 'NetworkStatusComponent', 'selector': 'app-network-status'},{'name': 'OrganizationComponent', 'selector': 'app-organization'},{'name': 'PagesComponent', 'selector': 'app-pages'},{'name': 'SettingsComponent', 'selector': 'app-settings'},{'name': 'SidebarComponent', 'selector': 'app-sidebar'},{'name': 'SidebarStubComponent', 'selector': 'app-sidebar'},{'name': 'TokenDetailsComponent', 'selector': 'app-token-details'},{'name': 'TokensComponent', 'selector': 'app-tokens'},{'name': 'TopbarComponent', 'selector': 'app-topbar'},{'name': 'TopbarStubComponent', 'selector': 'app-topbar'},{'name': 'TransactionDetailsComponent', 'selector': 'app-transaction-details'},{'name': 'TransactionsComponent', 'selector': 'app-transactions'}];
|
||||
var DIRECTIVES = [{'name': 'MenuSelectionDirective', 'selector': '[appMenuSelection]'},{'name': 'MenuToggleDirective', 'selector': '[appMenuToggle]'},{'name': 'PasswordToggleDirective', 'selector': '[appPasswordToggle]'},{'name': 'RouterLinkDirectiveStub', 'selector': '[appRouterLink]'}];
|
||||
var ACTUAL_COMPONENT = {'name': 'FooterComponent'};
|
||||
|
@ -109,15 +109,15 @@
|
||||
|
||||
|
||||
<div class="tab-pane fade tab-source-code" id="c-source">
|
||||
<pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import {Component} from '@angular/core';
|
||||
<pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import { Component } from '@angular/core';
|
||||
|
||||
@Component({selector: 'app-sidebar', template: ''})
|
||||
@Component({ selector: 'app-sidebar', template: '' })
|
||||
export class SidebarStubComponent {}
|
||||
|
||||
@Component({selector: 'app-topbar', template: ''})
|
||||
@Component({ selector: 'app-topbar', template: '' })
|
||||
export class TopbarStubComponent {}
|
||||
|
||||
@Component({selector: 'app-footer', template: ''})
|
||||
@Component({ selector: 'app-footer', template: '' })
|
||||
export class FooterStubComponent {}
|
||||
</code></pre>
|
||||
</div>
|
||||
|
@ -379,14 +379,14 @@ export class NetworkStatusComponent implements OnInit {
|
||||
<div class="tab-pane fade " id="c-templateData">
|
||||
<pre class="line-numbers"><code class="language-html"><nav class="navbar navbar-dark background-dark">
|
||||
<h1 class="navbar-brand">
|
||||
<div *ngIf="noInternetConnection; then offlineBlock else onlineBlock"></div>
|
||||
<div *ngIf="noInternetConnection; then offlineBlock; else onlineBlock"></div>
|
||||
<ng-template #offlineBlock>
|
||||
<strong style="color: red;">OFFLINE </strong>
|
||||
<img width="20rem" src="assets/images/no-wifi.svg" alt="Internet Disconnected">
|
||||
<strong style="color: red">OFFLINE </strong>
|
||||
<img width="20rem" src="assets/images/no-wifi.svg" alt="Internet Disconnected" />
|
||||
</ng-template>
|
||||
<ng-template #onlineBlock>
|
||||
<strong style="color: lawngreen;">ONLINE </strong>
|
||||
<img width="20rem" src="assets/images/wifi.svg" alt="Internet Connected">
|
||||
<strong style="color: lawngreen">ONLINE </strong>
|
||||
<img width="20rem" src="assets/images/wifi.svg" alt="Internet Connected" />
|
||||
</ng-template>
|
||||
</h1>
|
||||
</nav>
|
||||
@ -425,7 +425,7 @@ export class NetworkStatusComponent implements OnInit {
|
||||
<script src="../js/libs/htmlparser.js"></script>
|
||||
<script src="../js/libs/deep-iterator.js"></script>
|
||||
<script>
|
||||
var COMPONENT_TEMPLATE = '<div><nav class="navbar navbar-dark background-dark"> <h1 class="navbar-brand"> <div *ngIf="noInternetConnection; then offlineBlock else onlineBlock"></div> <ng-template #offlineBlock> <strong style="color: red;">OFFLINE </strong> <img width="20rem" src="assets/images/no-wifi.svg" alt="Internet Disconnected"> </ng-template> <ng-template #onlineBlock> <strong style="color: lawngreen;">ONLINE </strong> <img width="20rem" src="assets/images/wifi.svg" alt="Internet Connected"> </ng-template> </h1></nav></div>'
|
||||
var COMPONENT_TEMPLATE = '<div><nav class="navbar navbar-dark background-dark"> <h1 class="navbar-brand"> <div *ngIf="noInternetConnection; then offlineBlock; else onlineBlock"></div> <ng-template #offlineBlock> <strong style="color: red">OFFLINE </strong> <img width="20rem" src="assets/images/no-wifi.svg" alt="Internet Disconnected" /> </ng-template> <ng-template #onlineBlock> <strong style="color: lawngreen">ONLINE </strong> <img width="20rem" src="assets/images/wifi.svg" alt="Internet Connected" /> </ng-template> </h1></nav></div>'
|
||||
var COMPONENTS = [{'name': 'AccountDetailsComponent', 'selector': 'app-account-details'},{'name': 'AccountsComponent', 'selector': 'app-accounts'},{'name': 'AccountSearchComponent', 'selector': 'app-account-search'},{'name': 'AdminComponent', 'selector': 'app-admin'},{'name': 'AppComponent', 'selector': 'app-root'},{'name': 'AuthComponent', 'selector': 'app-auth'},{'name': 'CreateAccountComponent', 'selector': 'app-create-account'},{'name': 'ErrorDialogComponent', 'selector': 'app-error-dialog'},{'name': 'FooterComponent', 'selector': 'app-footer'},{'name': 'FooterStubComponent', 'selector': 'app-footer'},{'name': 'NetworkStatusComponent', 'selector': 'app-network-status'},{'name': 'OrganizationComponent', 'selector': 'app-organization'},{'name': 'PagesComponent', 'selector': 'app-pages'},{'name': 'SettingsComponent', 'selector': 'app-settings'},{'name': 'SidebarComponent', 'selector': 'app-sidebar'},{'name': 'SidebarStubComponent', 'selector': 'app-sidebar'},{'name': 'TokenDetailsComponent', 'selector': 'app-token-details'},{'name': 'TokensComponent', 'selector': 'app-tokens'},{'name': 'TopbarComponent', 'selector': 'app-topbar'},{'name': 'TopbarStubComponent', 'selector': 'app-topbar'},{'name': 'TransactionDetailsComponent', 'selector': 'app-transaction-details'},{'name': 'TransactionsComponent', 'selector': 'app-transactions'}];
|
||||
var DIRECTIVES = [{'name': 'MenuSelectionDirective', 'selector': '[appMenuSelection]'},{'name': 'MenuToggleDirective', 'selector': '[appMenuToggle]'},{'name': 'PasswordToggleDirective', 'selector': '[appPasswordToggle]'},{'name': 'RouterLinkDirectiveStub', 'selector': '[appRouterLink]'}];
|
||||
var ACTUAL_COMPONENT = {'name': 'NetworkStatusComponent'};
|
||||
|
@ -521,19 +521,31 @@ export class OrganizationComponent implements OnInit {
|
||||
<form [formGroup]="organizationForm" (ngSubmit)="onSubmit()">
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label>Default Disbursement *</mat-label>
|
||||
<input matInput type="text" id="amount" placeholder="Amount" formControlName="disbursement"
|
||||
[errorStateMatcher]="matcher">
|
||||
<input
|
||||
matInput
|
||||
type="text"
|
||||
id="amount"
|
||||
placeholder="Amount"
|
||||
formControlName="disbursement"
|
||||
[errorStateMatcher]="matcher"
|
||||
/>
|
||||
<span matSuffix>RCU</span>
|
||||
<mat-error *ngIf="submitted && organizationFormStub.disbursement.errors">
|
||||
Default Disbursement is required.
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
<div class="form-group form-check">
|
||||
<mat-checkbox id="transferCard" formControlName="transfer">Require Transfer Card *</mat-checkbox>
|
||||
<mat-checkbox id="transferCard" formControlName="transfer"
|
||||
>Require Transfer Card *</mat-checkbox
|
||||
>
|
||||
</div>
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label>Default Country Code *</mat-label>
|
||||
<mat-select id="countryCode" formControlName="countryCode" [errorStateMatcher]="matcher">
|
||||
<mat-select
|
||||
id="countryCode"
|
||||
formControlName="countryCode"
|
||||
[errorStateMatcher]="matcher"
|
||||
>
|
||||
<mat-option value="KE">KE Kenya</mat-option>
|
||||
<mat-option value="US">US United States</mat-option>
|
||||
<mat-option value="ETH">ETH Ethiopia</mat-option>
|
||||
@ -542,9 +554,11 @@ export class OrganizationComponent implements OnInit {
|
||||
</mat-select>
|
||||
<mat-error *ngIf="submitted && organizationFormStub.countryCode.errors">
|
||||
Country Code is required.
|
||||
</mat-error>
|
||||
</mat-form-field><br>
|
||||
<button mat-raised-button color="primary" type="submit" class="btn btn-primary">Submit</button>
|
||||
</mat-error> </mat-form-field
|
||||
><br />
|
||||
<button mat-raised-button color="primary" type="submit" class="btn btn-primary">
|
||||
Submit
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@ -591,7 +605,7 @@ export class OrganizationComponent implements OnInit {
|
||||
<script src="../js/libs/htmlparser.js"></script>
|
||||
<script src="../js/libs/deep-iterator.js"></script>
|
||||
<script>
|
||||
var COMPONENT_TEMPLATE = '<div><!-- Begin page --><div class="wrapper"> <app-sidebar></app-sidebar> <!-- ============================================================== --> <!-- Start Page Content here --> <!-- ============================================================== --> <div id="content"> <app-topbar></app-topbar> <!-- Start Content--> <div class="container-fluid" appMenuSelection> <nav aria-label="breadcrumb"> <ol class="breadcrumb"> <li class="breadcrumb-item"><a routerLink="/home">Home</a></li> <li class="breadcrumb-item"><a routerLink="/settings">Settings</a></li> <li class="breadcrumb-item active" aria-current="page">Organization Settings</li> </ol> </nav> <div class="col-md-6 center-body"> <div class="card"> <mat-card-title class="card-header text-center"> DEFAULT ORGANISATION SETTINGS </mat-card-title> <div class="card-body"> <form [formGroup]="organizationForm" (ngSubmit)="onSubmit()"> <mat-form-field appearance="outline"> <mat-label>Default Disbursement *</mat-label> <input matInput type="text" id="amount" placeholder="Amount" formControlName="disbursement" [errorStateMatcher]="matcher"> <span matSuffix>RCU</span> <mat-error *ngIf="submitted && organizationFormStub.disbursement.errors"> Default Disbursement is required. </mat-error> </mat-form-field> <div class="form-group form-check"> <mat-checkbox id="transferCard" formControlName="transfer">Require Transfer Card *</mat-checkbox> </div> <mat-form-field appearance="outline"> <mat-label>Default Country Code *</mat-label> <mat-select id="countryCode" formControlName="countryCode" [errorStateMatcher]="matcher"> <mat-option value="KE">KE Kenya</mat-option> <mat-option value="US">US United States</mat-option> <mat-option value="ETH">ETH Ethiopia</mat-option> <mat-option value="GER">GER Germany</mat-option> <mat-option value="UG">UG Uganda</mat-option> </mat-select> <mat-error *ngIf="submitted && organizationFormStub.countryCode.errors"> Country Code is required. </mat-error> </mat-form-field><br> <button mat-raised-button color="primary" type="submit" class="btn btn-primary">Submit</button> </form> </div> </div> </div> </div> <app-footer appMenuSelection></app-footer> </div> <!-- ============================================================== --> <!-- End Page content --> <!-- ============================================================== --></div></div>'
|
||||
var COMPONENT_TEMPLATE = '<div><!-- Begin page --><div class="wrapper"> <app-sidebar></app-sidebar> <!-- ============================================================== --> <!-- Start Page Content here --> <!-- ============================================================== --> <div id="content"> <app-topbar></app-topbar> <!-- Start Content--> <div class="container-fluid" appMenuSelection> <nav aria-label="breadcrumb"> <ol class="breadcrumb"> <li class="breadcrumb-item"><a routerLink="/home">Home</a></li> <li class="breadcrumb-item"><a routerLink="/settings">Settings</a></li> <li class="breadcrumb-item active" aria-current="page">Organization Settings</li> </ol> </nav> <div class="col-md-6 center-body"> <div class="card"> <mat-card-title class="card-header text-center"> DEFAULT ORGANISATION SETTINGS </mat-card-title> <div class="card-body"> <form [formGroup]="organizationForm" (ngSubmit)="onSubmit()"> <mat-form-field appearance="outline"> <mat-label>Default Disbursement *</mat-label> <input matInput type="text" id="amount" placeholder="Amount" formControlName="disbursement" [errorStateMatcher]="matcher" /> <span matSuffix>RCU</span> <mat-error *ngIf="submitted && organizationFormStub.disbursement.errors"> Default Disbursement is required. </mat-error> </mat-form-field> <div class="form-group form-check"> <mat-checkbox id="transferCard" formControlName="transfer" >Require Transfer Card *</mat-checkbox > </div> <mat-form-field appearance="outline"> <mat-label>Default Country Code *</mat-label> <mat-select id="countryCode" formControlName="countryCode" [errorStateMatcher]="matcher" > <mat-option value="KE">KE Kenya</mat-option> <mat-option value="US">US United States</mat-option> <mat-option value="ETH">ETH Ethiopia</mat-option> <mat-option value="GER">GER Germany</mat-option> <mat-option value="UG">UG Uganda</mat-option> </mat-select> <mat-error *ngIf="submitted && organizationFormStub.countryCode.errors"> Country Code is required. </mat-error> </mat-form-field ><br /> <button mat-raised-button color="primary" type="submit" class="btn btn-primary"> Submit </button> </form> </div> </div> </div> </div> <app-footer appMenuSelection></app-footer> </div> <!-- ============================================================== --> <!-- End Page content --> <!-- ============================================================== --></div></div>'
|
||||
var COMPONENTS = [{'name': 'AccountDetailsComponent', 'selector': 'app-account-details'},{'name': 'AccountsComponent', 'selector': 'app-accounts'},{'name': 'AccountSearchComponent', 'selector': 'app-account-search'},{'name': 'AdminComponent', 'selector': 'app-admin'},{'name': 'AppComponent', 'selector': 'app-root'},{'name': 'AuthComponent', 'selector': 'app-auth'},{'name': 'CreateAccountComponent', 'selector': 'app-create-account'},{'name': 'ErrorDialogComponent', 'selector': 'app-error-dialog'},{'name': 'FooterComponent', 'selector': 'app-footer'},{'name': 'FooterStubComponent', 'selector': 'app-footer'},{'name': 'NetworkStatusComponent', 'selector': 'app-network-status'},{'name': 'OrganizationComponent', 'selector': 'app-organization'},{'name': 'PagesComponent', 'selector': 'app-pages'},{'name': 'SettingsComponent', 'selector': 'app-settings'},{'name': 'SidebarComponent', 'selector': 'app-sidebar'},{'name': 'SidebarStubComponent', 'selector': 'app-sidebar'},{'name': 'TokenDetailsComponent', 'selector': 'app-token-details'},{'name': 'TokensComponent', 'selector': 'app-tokens'},{'name': 'TopbarComponent', 'selector': 'app-topbar'},{'name': 'TopbarStubComponent', 'selector': 'app-topbar'},{'name': 'TransactionDetailsComponent', 'selector': 'app-transaction-details'},{'name': 'TransactionsComponent', 'selector': 'app-transactions'}];
|
||||
var DIRECTIVES = [{'name': 'MenuSelectionDirective', 'selector': '[appMenuSelection]'},{'name': 'MenuToggleDirective', 'selector': '[appMenuToggle]'},{'name': 'PasswordToggleDirective', 'selector': '[appPasswordToggle]'},{'name': 'RouterLinkDirectiveStub', 'selector': '[appRouterLink]'}];
|
||||
var ACTUAL_COMPONENT = {'name': 'OrganizationComponent'};
|
||||
|
@ -245,10 +245,16 @@ export class PagesComponent {
|
||||
</ol>
|
||||
</nav>
|
||||
<div class="embed-responsive embed-responsive-16by9">
|
||||
<iframe class="embed-responsive-item" [src]="url | safe" allow="fullscreen" loading="lazy"
|
||||
title="Community inclusion currencies dashboard" referrerpolicy="no-referrer">
|
||||
<iframe
|
||||
class="embed-responsive-item"
|
||||
[src]="url | safe"
|
||||
allow="fullscreen"
|
||||
loading="lazy"
|
||||
title="Community inclusion currencies dashboard"
|
||||
referrerpolicy="no-referrer"
|
||||
>
|
||||
<p>
|
||||
<a href="{{url}}"> Your browser does not support iframes. </a>
|
||||
<a href="{{ url }}"> Your browser does not support iframes. </a>
|
||||
</p>
|
||||
</iframe>
|
||||
</div>
|
||||
@ -294,7 +300,7 @@ export class PagesComponent {
|
||||
<script src="../js/libs/htmlparser.js"></script>
|
||||
<script src="../js/libs/deep-iterator.js"></script>
|
||||
<script>
|
||||
var COMPONENT_TEMPLATE = '<div><!-- Begin page --><div class="wrapper"> <app-sidebar></app-sidebar> <!-- ============================================================== --> <!-- Start Page Content here --> <!-- ============================================================== --> <div id="content"> <app-topbar></app-topbar> <!-- Start Content--> <div class="container-fluid" appMenuSelection> <nav aria-label="breadcrumb"> <ol class="breadcrumb"> <li class="breadcrumb-item active" aria-current="page">Home</li> </ol> </nav> <div class="embed-responsive embed-responsive-16by9"> <iframe class="embed-responsive-item" [src]="url | safe" allow="fullscreen" loading="lazy" title="Community inclusion currencies dashboard" referrerpolicy="no-referrer"> <p> <a href="{{url}}"> Your browser does not support iframes. </a> </p> </iframe> </div> </div> <app-footer appMenuSelection></app-footer> </div> <!-- ============================================================== --> <!-- End Page content --> <!-- ============================================================== --></div></div>'
|
||||
var COMPONENT_TEMPLATE = '<div><!-- Begin page --><div class="wrapper"> <app-sidebar></app-sidebar> <!-- ============================================================== --> <!-- Start Page Content here --> <!-- ============================================================== --> <div id="content"> <app-topbar></app-topbar> <!-- Start Content--> <div class="container-fluid" appMenuSelection> <nav aria-label="breadcrumb"> <ol class="breadcrumb"> <li class="breadcrumb-item active" aria-current="page">Home</li> </ol> </nav> <div class="embed-responsive embed-responsive-16by9"> <iframe class="embed-responsive-item" [src]="url | safe" allow="fullscreen" loading="lazy" title="Community inclusion currencies dashboard" referrerpolicy="no-referrer" > <p> <a href="{{ url }}"> Your browser does not support iframes. </a> </p> </iframe> </div> </div> <app-footer appMenuSelection></app-footer> </div> <!-- ============================================================== --> <!-- End Page content --> <!-- ============================================================== --></div></div>'
|
||||
var COMPONENTS = [{'name': 'AccountDetailsComponent', 'selector': 'app-account-details'},{'name': 'AccountsComponent', 'selector': 'app-accounts'},{'name': 'AccountSearchComponent', 'selector': 'app-account-search'},{'name': 'AdminComponent', 'selector': 'app-admin'},{'name': 'AppComponent', 'selector': 'app-root'},{'name': 'AuthComponent', 'selector': 'app-auth'},{'name': 'CreateAccountComponent', 'selector': 'app-create-account'},{'name': 'ErrorDialogComponent', 'selector': 'app-error-dialog'},{'name': 'FooterComponent', 'selector': 'app-footer'},{'name': 'FooterStubComponent', 'selector': 'app-footer'},{'name': 'NetworkStatusComponent', 'selector': 'app-network-status'},{'name': 'OrganizationComponent', 'selector': 'app-organization'},{'name': 'PagesComponent', 'selector': 'app-pages'},{'name': 'SettingsComponent', 'selector': 'app-settings'},{'name': 'SidebarComponent', 'selector': 'app-sidebar'},{'name': 'SidebarStubComponent', 'selector': 'app-sidebar'},{'name': 'TokenDetailsComponent', 'selector': 'app-token-details'},{'name': 'TokensComponent', 'selector': 'app-tokens'},{'name': 'TopbarComponent', 'selector': 'app-topbar'},{'name': 'TopbarStubComponent', 'selector': 'app-topbar'},{'name': 'TransactionDetailsComponent', 'selector': 'app-transaction-details'},{'name': 'TransactionsComponent', 'selector': 'app-transactions'}];
|
||||
var DIRECTIVES = [{'name': 'MenuSelectionDirective', 'selector': '[appMenuSelection]'},{'name': 'MenuToggleDirective', 'selector': '[appMenuToggle]'},{'name': 'PasswordToggleDirective', 'selector': '[appPasswordToggle]'},{'name': 'RouterLinkDirectiveStub', 'selector': '[appRouterLink]'}];
|
||||
var ACTUAL_COMPONENT = {'name': 'PagesComponent'};
|
||||
|
@ -736,16 +736,14 @@ export class SettingsComponent implements OnInit {
|
||||
<div class="row">
|
||||
<div class="col-md-6 mb-2">
|
||||
<div class="card">
|
||||
<mat-card-title class="card-header text-center">
|
||||
SETTINGS
|
||||
</mat-card-title>
|
||||
<mat-card-title class="card-header text-center"> SETTINGS </mat-card-title>
|
||||
<div class="card-body">
|
||||
<h4>CICADA Admin Credentials</h4>
|
||||
<span><strong>UserId: </strong> {{ userInfo?.userid }} </span><br>
|
||||
<span><strong>Username: </strong> {{ userInfo?.name }} </span><br>
|
||||
<span><strong>UserId: </strong> {{ userInfo?.userid }} </span><br />
|
||||
<span><strong>Username: </strong> {{ userInfo?.name }} </span><br />
|
||||
<span><strong>Email: </strong> {{ userInfo?.email }} </span>
|
||||
</div>
|
||||
<hr>
|
||||
<hr />
|
||||
<div class="card-body">
|
||||
<h4>Organization Settings</h4>
|
||||
<a routerLink="/settings/organization"><i>Update your organization settings</i></a>
|
||||
@ -754,21 +752,27 @@ export class SettingsComponent implements OnInit {
|
||||
</div>
|
||||
<div class="col-md-6 mb-2">
|
||||
<div class="card">
|
||||
<mat-card-title class="card-header text-center">
|
||||
ACCOUNT MANAGEMENT
|
||||
</mat-card-title>
|
||||
<mat-card-title class="card-header text-center"> ACCOUNT MANAGEMENT </mat-card-title>
|
||||
<div class="card-body">
|
||||
<h4>Change Password</h4>
|
||||
<a routerLink="/settings"><i>Change your account password</i></a>
|
||||
</div>
|
||||
<hr>
|
||||
<hr />
|
||||
<div class="card-body">
|
||||
<h4>Two-step authentication</h4>
|
||||
<a routerLink="/settings"><i>Secure your account with two step verification</i></a>
|
||||
</div>
|
||||
<hr>
|
||||
<hr />
|
||||
<div class="card-body">
|
||||
<button mat-raised-button color="primary" type="button" class="btn btn-outline-primary" (click)="logout()"> LOGOUT ADMIN </button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
type="button"
|
||||
class="btn btn-outline-primary"
|
||||
(click)="logout()"
|
||||
>
|
||||
LOGOUT ADMIN
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -777,39 +781,60 @@ export class SettingsComponent implements OnInit {
|
||||
<mat-card-title class="card-header">
|
||||
<div class="row">
|
||||
TRUSTED USERS
|
||||
<button mat-raised-button color="primary" type="button" class="btn btn-outline-primary ml-auto mr-2" (click)="downloadCsv()"> EXPORT </button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
type="button"
|
||||
class="btn btn-outline-primary ml-auto mr-2"
|
||||
(click)="downloadCsv()"
|
||||
>
|
||||
EXPORT
|
||||
</button>
|
||||
</div>
|
||||
</mat-card-title>
|
||||
<div class="card-body">
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label> Filter </mat-label>
|
||||
<input matInput type="text" (keyup)="doFilter($event.target.value)" placeholder="Filter">
|
||||
<input
|
||||
matInput
|
||||
type="text"
|
||||
(keyup)="doFilter($event.target.value)"
|
||||
placeholder="Filter"
|
||||
/>
|
||||
<mat-icon matSuffix>search</mat-icon>
|
||||
</mat-form-field>
|
||||
<mat-table class="mat-elevation-z10" [dataSource]="dataSource" matSort matSortActive="name"
|
||||
matSortDirection="asc" matSortDisableClear>
|
||||
|
||||
<mat-table
|
||||
class="mat-elevation-z10"
|
||||
[dataSource]="dataSource"
|
||||
matSort
|
||||
matSortActive="name"
|
||||
matSortDirection="asc"
|
||||
matSortDisableClear
|
||||
>
|
||||
<ng-container matColumnDef="name">
|
||||
<mat-header-cell *matHeaderCellDef mat-sort-header> NAME </mat-header-cell>
|
||||
<mat-cell *matCellDef="let user"> {{user.name}} </mat-cell>
|
||||
<mat-cell *matCellDef="let user"> {{ user.name }} </mat-cell>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="email">
|
||||
<mat-header-cell *matHeaderCellDef mat-sort-header> EMAIL </mat-header-cell>
|
||||
<mat-cell *matCellDef="let user"> {{user.email}} </mat-cell>
|
||||
<mat-cell *matCellDef="let user"> {{ user.email }} </mat-cell>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="userId">
|
||||
<mat-header-cell *matHeaderCellDef mat-sort-header> USER ID </mat-header-cell>
|
||||
<mat-cell *matCellDef="let user"> {{user.userid}} </mat-cell>
|
||||
<mat-cell *matCellDef="let user"> {{ user.userid }} </mat-cell>
|
||||
</ng-container>
|
||||
|
||||
<mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row>
|
||||
<mat-row *matRowDef="let user; columns: displayedColumns"></mat-row>
|
||||
</mat-table>
|
||||
|
||||
<mat-paginator [pageSize]="5" [pageSizeOptions]="[5, 10, 20, 50, 100]" showFirstLastButtons></mat-paginator>
|
||||
|
||||
<mat-paginator
|
||||
[pageSize]="5"
|
||||
[pageSizeOptions]="[5, 10, 20, 50, 100]"
|
||||
showFirstLastButtons
|
||||
></mat-paginator>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -856,7 +881,7 @@ export class SettingsComponent implements OnInit {
|
||||
<script src="../js/libs/htmlparser.js"></script>
|
||||
<script src="../js/libs/deep-iterator.js"></script>
|
||||
<script>
|
||||
var COMPONENT_TEMPLATE = '<div><!-- Begin page --><div class="wrapper"> <app-sidebar></app-sidebar> <!-- ============================================================== --> <!-- Start Page Content here --> <!-- ============================================================== --> <div id="content"> <app-topbar></app-topbar> <!-- Start Content--> <div class="container-fluid" appMenuSelection> <nav aria-label="breadcrumb"> <ol class="breadcrumb"> <li class="breadcrumb-item"><a routerLink="/home">Home</a></li> <li class="breadcrumb-item active" aria-current="page">Settings</li> </ol> </nav> <div class="row"> <div class="col-md-6 mb-2"> <div class="card"> <mat-card-title class="card-header text-center"> SETTINGS </mat-card-title> <div class="card-body"> <h4>CICADA Admin Credentials</h4> <span><strong>UserId: </strong> {{ userInfo?.userid }} </span><br> <span><strong>Username: </strong> {{ userInfo?.name }} </span><br> <span><strong>Email: </strong> {{ userInfo?.email }} </span> </div> <hr> <div class="card-body"> <h4>Organization Settings</h4> <a routerLink="/settings/organization"><i>Update your organization settings</i></a> </div> </div> </div> <div class="col-md-6 mb-2"> <div class="card"> <mat-card-title class="card-header text-center"> ACCOUNT MANAGEMENT </mat-card-title> <div class="card-body"> <h4>Change Password</h4> <a routerLink="/settings"><i>Change your account password</i></a> </div> <hr> <div class="card-body"> <h4>Two-step authentication</h4> <a routerLink="/settings"><i>Secure your account with two step verification</i></a> </div> <hr> <div class="card-body"> <button mat-raised-button color="primary" type="button" class="btn btn-outline-primary" (click)="logout()"> LOGOUT ADMIN </button> </div> </div> </div> <div class="col-12"> <div class="card mb-3"> <mat-card-title class="card-header"> <div class="row"> TRUSTED USERS <button mat-raised-button color="primary" type="button" class="btn btn-outline-primary ml-auto mr-2" (click)="downloadCsv()"> EXPORT </button> </div> </mat-card-title> <div class="card-body"> <mat-form-field appearance="outline"> <mat-label> Filter </mat-label> <input matInput type="text" (keyup)="doFilter($event.target.value)" placeholder="Filter"> <mat-icon matSuffix>search</mat-icon> </mat-form-field> <mat-table class="mat-elevation-z10" [dataSource]="dataSource" matSort matSortActive="name" matSortDirection="asc" matSortDisableClear> <ng-container matColumnDef="name"> <mat-header-cell *matHeaderCellDef mat-sort-header> NAME </mat-header-cell> <mat-cell *matCellDef="let user"> {{user.name}} </mat-cell> </ng-container> <ng-container matColumnDef="email"> <mat-header-cell *matHeaderCellDef mat-sort-header> EMAIL </mat-header-cell> <mat-cell *matCellDef="let user"> {{user.email}} </mat-cell> </ng-container> <ng-container matColumnDef="userId"> <mat-header-cell *matHeaderCellDef mat-sort-header> USER ID </mat-header-cell> <mat-cell *matCellDef="let user"> {{user.userid}} </mat-cell> </ng-container> <mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row> <mat-row *matRowDef="let user; columns: displayedColumns"></mat-row> </mat-table> <mat-paginator [pageSize]="5" [pageSizeOptions]="[5, 10, 20, 50, 100]" showFirstLastButtons></mat-paginator> </div> </div> </div> </div> </div> <app-footer appMenuSelection></app-footer> </div> <!-- ============================================================== --> <!-- End Page content --> <!-- ============================================================== --></div></div>'
|
||||
var COMPONENT_TEMPLATE = '<div><!-- Begin page --><div class="wrapper"> <app-sidebar></app-sidebar> <!-- ============================================================== --> <!-- Start Page Content here --> <!-- ============================================================== --> <div id="content"> <app-topbar></app-topbar> <!-- Start Content--> <div class="container-fluid" appMenuSelection> <nav aria-label="breadcrumb"> <ol class="breadcrumb"> <li class="breadcrumb-item"><a routerLink="/home">Home</a></li> <li class="breadcrumb-item active" aria-current="page">Settings</li> </ol> </nav> <div class="row"> <div class="col-md-6 mb-2"> <div class="card"> <mat-card-title class="card-header text-center"> SETTINGS </mat-card-title> <div class="card-body"> <h4>CICADA Admin Credentials</h4> <span><strong>UserId: </strong> {{ userInfo?.userid }} </span><br /> <span><strong>Username: </strong> {{ userInfo?.name }} </span><br /> <span><strong>Email: </strong> {{ userInfo?.email }} </span> </div> <hr /> <div class="card-body"> <h4>Organization Settings</h4> <a routerLink="/settings/organization"><i>Update your organization settings</i></a> </div> </div> </div> <div class="col-md-6 mb-2"> <div class="card"> <mat-card-title class="card-header text-center"> ACCOUNT MANAGEMENT </mat-card-title> <div class="card-body"> <h4>Change Password</h4> <a routerLink="/settings"><i>Change your account password</i></a> </div> <hr /> <div class="card-body"> <h4>Two-step authentication</h4> <a routerLink="/settings"><i>Secure your account with two step verification</i></a> </div> <hr /> <div class="card-body"> <button mat-raised-button color="primary" type="button" class="btn btn-outline-primary" (click)="logout()" > LOGOUT ADMIN </button> </div> </div> </div> <div class="col-12"> <div class="card mb-3"> <mat-card-title class="card-header"> <div class="row"> TRUSTED USERS <button mat-raised-button color="primary" type="button" class="btn btn-outline-primary ml-auto mr-2" (click)="downloadCsv()" > EXPORT </button> </div> </mat-card-title> <div class="card-body"> <mat-form-field appearance="outline"> <mat-label> Filter </mat-label> <input matInput type="text" (keyup)="doFilter($event.target.value)" placeholder="Filter" /> <mat-icon matSuffix>search</mat-icon> </mat-form-field> <mat-table class="mat-elevation-z10" [dataSource]="dataSource" matSort matSortActive="name" matSortDirection="asc" matSortDisableClear > <ng-container matColumnDef="name"> <mat-header-cell *matHeaderCellDef mat-sort-header> NAME </mat-header-cell> <mat-cell *matCellDef="let user"> {{ user.name }} </mat-cell> </ng-container> <ng-container matColumnDef="email"> <mat-header-cell *matHeaderCellDef mat-sort-header> EMAIL </mat-header-cell> <mat-cell *matCellDef="let user"> {{ user.email }} </mat-cell> </ng-container> <ng-container matColumnDef="userId"> <mat-header-cell *matHeaderCellDef mat-sort-header> USER ID </mat-header-cell> <mat-cell *matCellDef="let user"> {{ user.userid }} </mat-cell> </ng-container> <mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row> <mat-row *matRowDef="let user; columns: displayedColumns"></mat-row> </mat-table> <mat-paginator [pageSize]="5" [pageSizeOptions]="[5, 10, 20, 50, 100]" showFirstLastButtons ></mat-paginator> </div> </div> </div> </div> </div> <app-footer appMenuSelection></app-footer> </div> <!-- ============================================================== --> <!-- End Page content --> <!-- ============================================================== --></div></div>'
|
||||
var COMPONENTS = [{'name': 'AccountDetailsComponent', 'selector': 'app-account-details'},{'name': 'AccountsComponent', 'selector': 'app-accounts'},{'name': 'AccountSearchComponent', 'selector': 'app-account-search'},{'name': 'AdminComponent', 'selector': 'app-admin'},{'name': 'AppComponent', 'selector': 'app-root'},{'name': 'AuthComponent', 'selector': 'app-auth'},{'name': 'CreateAccountComponent', 'selector': 'app-create-account'},{'name': 'ErrorDialogComponent', 'selector': 'app-error-dialog'},{'name': 'FooterComponent', 'selector': 'app-footer'},{'name': 'FooterStubComponent', 'selector': 'app-footer'},{'name': 'NetworkStatusComponent', 'selector': 'app-network-status'},{'name': 'OrganizationComponent', 'selector': 'app-organization'},{'name': 'PagesComponent', 'selector': 'app-pages'},{'name': 'SettingsComponent', 'selector': 'app-settings'},{'name': 'SidebarComponent', 'selector': 'app-sidebar'},{'name': 'SidebarStubComponent', 'selector': 'app-sidebar'},{'name': 'TokenDetailsComponent', 'selector': 'app-token-details'},{'name': 'TokensComponent', 'selector': 'app-tokens'},{'name': 'TopbarComponent', 'selector': 'app-topbar'},{'name': 'TopbarStubComponent', 'selector': 'app-topbar'},{'name': 'TransactionDetailsComponent', 'selector': 'app-transaction-details'},{'name': 'TransactionsComponent', 'selector': 'app-transactions'}];
|
||||
var DIRECTIVES = [{'name': 'MenuSelectionDirective', 'selector': '[appMenuSelection]'},{'name': 'MenuToggleDirective', 'selector': '[appMenuToggle]'},{'name': 'PasswordToggleDirective', 'selector': '[appPasswordToggle]'},{'name': 'RouterLinkDirectiveStub', 'selector': '[appRouterLink]'}];
|
||||
var ACTUAL_COMPONENT = {'name': 'SettingsComponent'};
|
||||
|
@ -243,10 +243,9 @@ export class SidebarComponent implements OnInit {
|
||||
<div id="sidebar">
|
||||
<app-network-status></app-network-status>
|
||||
<nav>
|
||||
|
||||
<div class="sidebar-header">
|
||||
<h3>
|
||||
<img class="full-width" src="assets/images/CIC-Logo-white.png" alt="CIC Admin Dashboard">
|
||||
<img class="full-width" src="assets/images/CIC-Logo-white.png" alt="CIC Admin Dashboard" />
|
||||
</h3>
|
||||
<strong>CICADA</strong>
|
||||
</div>
|
||||
@ -327,7 +326,7 @@ export class SidebarComponent implements OnInit {
|
||||
<script src="../js/libs/htmlparser.js"></script>
|
||||
<script src="../js/libs/deep-iterator.js"></script>
|
||||
<script>
|
||||
var COMPONENT_TEMPLATE = '<div><!-- ========== Left Sidebar Start ========== --><div id="sidebar"> <app-network-status></app-network-status> <nav> <div class="sidebar-header"> <h3> <img class="full-width" src="assets/images/CIC-Logo-white.png" alt="CIC Admin Dashboard"> </h3> <strong>CICADA</strong> </div> <ul class="list-unstyled components"> <li> <a routerLink="/home" routerLinkActive="active" appMenuSelection> <i class="fa fa-home"></i> <span> Dashboard </span> </a> </li> <li> <a routerLink="/accounts" routerLinkActive="active" appMenuSelection> <i class="fa fa-users"></i> <span> Accounts </span> </a> </li> <li> <a routerLink="/tx" routerLinkActive="active" appMenuSelection> <i class="fa fa-exchange"></i> <span> Transactions </span> </a> </li> <li> <a routerLink="/tokens" routerLinkActive="active" appMenuSelection> <i class="fa fa-money"></i> <span> Tokens </span> </a> </li> <li> <a routerLink="/settings" routerLinkActive="active" appMenuSelection> <i class="fa fa-cog"></i> <span> Settings </span> </a> </li> <li> <a routerLink="/admin" routerLinkActive="active" appMenuSelection> <i class="fa fa-user-secret"></i> <span> Admin </span> </a> </li> </ul> </nav></div><!-- Left Sidebar End --></div>'
|
||||
var COMPONENT_TEMPLATE = '<div><!-- ========== Left Sidebar Start ========== --><div id="sidebar"> <app-network-status></app-network-status> <nav> <div class="sidebar-header"> <h3> <img class="full-width" src="assets/images/CIC-Logo-white.png" alt="CIC Admin Dashboard" /> </h3> <strong>CICADA</strong> </div> <ul class="list-unstyled components"> <li> <a routerLink="/home" routerLinkActive="active" appMenuSelection> <i class="fa fa-home"></i> <span> Dashboard </span> </a> </li> <li> <a routerLink="/accounts" routerLinkActive="active" appMenuSelection> <i class="fa fa-users"></i> <span> Accounts </span> </a> </li> <li> <a routerLink="/tx" routerLinkActive="active" appMenuSelection> <i class="fa fa-exchange"></i> <span> Transactions </span> </a> </li> <li> <a routerLink="/tokens" routerLinkActive="active" appMenuSelection> <i class="fa fa-money"></i> <span> Tokens </span> </a> </li> <li> <a routerLink="/settings" routerLinkActive="active" appMenuSelection> <i class="fa fa-cog"></i> <span> Settings </span> </a> </li> <li> <a routerLink="/admin" routerLinkActive="active" appMenuSelection> <i class="fa fa-user-secret"></i> <span> Admin </span> </a> </li> </ul> </nav></div><!-- Left Sidebar End --></div>'
|
||||
var COMPONENTS = [{'name': 'AccountDetailsComponent', 'selector': 'app-account-details'},{'name': 'AccountsComponent', 'selector': 'app-accounts'},{'name': 'AccountSearchComponent', 'selector': 'app-account-search'},{'name': 'AdminComponent', 'selector': 'app-admin'},{'name': 'AppComponent', 'selector': 'app-root'},{'name': 'AuthComponent', 'selector': 'app-auth'},{'name': 'CreateAccountComponent', 'selector': 'app-create-account'},{'name': 'ErrorDialogComponent', 'selector': 'app-error-dialog'},{'name': 'FooterComponent', 'selector': 'app-footer'},{'name': 'FooterStubComponent', 'selector': 'app-footer'},{'name': 'NetworkStatusComponent', 'selector': 'app-network-status'},{'name': 'OrganizationComponent', 'selector': 'app-organization'},{'name': 'PagesComponent', 'selector': 'app-pages'},{'name': 'SettingsComponent', 'selector': 'app-settings'},{'name': 'SidebarComponent', 'selector': 'app-sidebar'},{'name': 'SidebarStubComponent', 'selector': 'app-sidebar'},{'name': 'TokenDetailsComponent', 'selector': 'app-token-details'},{'name': 'TokensComponent', 'selector': 'app-tokens'},{'name': 'TopbarComponent', 'selector': 'app-topbar'},{'name': 'TopbarStubComponent', 'selector': 'app-topbar'},{'name': 'TransactionDetailsComponent', 'selector': 'app-transaction-details'},{'name': 'TransactionsComponent', 'selector': 'app-transactions'}];
|
||||
var DIRECTIVES = [{'name': 'MenuSelectionDirective', 'selector': '[appMenuSelection]'},{'name': 'MenuToggleDirective', 'selector': '[appMenuToggle]'},{'name': 'PasswordToggleDirective', 'selector': '[appPasswordToggle]'},{'name': 'RouterLinkDirectiveStub', 'selector': '[appRouterLink]'}];
|
||||
var ACTUAL_COMPONENT = {'name': 'SidebarComponent'};
|
||||
|
@ -109,15 +109,15 @@
|
||||
|
||||
|
||||
<div class="tab-pane fade tab-source-code" id="c-source">
|
||||
<pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import {Component} from '@angular/core';
|
||||
<pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import { Component } from '@angular/core';
|
||||
|
||||
@Component({selector: 'app-sidebar', template: ''})
|
||||
@Component({ selector: 'app-sidebar', template: '' })
|
||||
export class SidebarStubComponent {}
|
||||
|
||||
@Component({selector: 'app-topbar', template: ''})
|
||||
@Component({ selector: 'app-topbar', template: '' })
|
||||
export class TopbarStubComponent {}
|
||||
|
||||
@Component({selector: 'app-footer', template: ''})
|
||||
@Component({ selector: 'app-footer', template: '' })
|
||||
export class FooterStubComponent {}
|
||||
</code></pre>
|
||||
</div>
|
||||
|
@ -377,32 +377,43 @@ export class TokenDetailsComponent implements OnInit {
|
||||
<mat-card-title class="card-header">
|
||||
<div class="row">
|
||||
TOKEN DETAILS
|
||||
<button mat-raised-button type="button" class="btn btn-outline-secondary ml-auto mr-2" (click)="close()"> CLOSE </button>
|
||||
<button
|
||||
mat-raised-button
|
||||
type="button"
|
||||
class="btn btn-outline-secondary ml-auto mr-2"
|
||||
(click)="close()"
|
||||
>
|
||||
CLOSE
|
||||
</button>
|
||||
</div>
|
||||
</mat-card-title>
|
||||
<div class="card-body">
|
||||
<div>
|
||||
<span><strong>Name:</strong> {{token?.name}}</span>
|
||||
<span><strong>Name:</strong> {{ token?.name }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span><strong>Symbol:</strong> {{token?.symbol}}</span>
|
||||
<span><strong>Symbol:</strong> {{ token?.symbol }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span><strong>Address:</strong> {{token?.address}}</span>
|
||||
<span><strong>Address:</strong> {{ token?.address }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span><strong>Details:</strong> A community inclusive currency for trading among lower to middle income societies.</span>
|
||||
<span
|
||||
><strong>Details:</strong> A community inclusive currency for trading among lower to
|
||||
middle income societies.</span
|
||||
>
|
||||
</div>
|
||||
<div>
|
||||
<span><strong>Supply:</strong> {{token?.supply | tokenRatio}}</span>
|
||||
</div><br>
|
||||
<span><strong>Supply:</strong> {{ token?.supply | tokenRatio }}</span>
|
||||
</div>
|
||||
<br />
|
||||
<div>
|
||||
<h2>Reserve</h2>
|
||||
<div>
|
||||
<span><strong>Weight:</strong> {{token?.reserveRatio}}</span>
|
||||
<span><strong>Weight:</strong> {{ token?.reserveRatio }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span><strong>Owner:</strong> {{token?.owner}}</span>
|
||||
<span><strong>Owner:</strong> {{ token?.owner }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -443,7 +454,7 @@ export class TokenDetailsComponent implements OnInit {
|
||||
<script src="../js/libs/htmlparser.js"></script>
|
||||
<script src="../js/libs/deep-iterator.js"></script>
|
||||
<script>
|
||||
var COMPONENT_TEMPLATE = '<div><div *ngIf="token" class="mb-3 mt-1"> <div class="card text-center"> <mat-card-title class="card-header"> <div class="row"> TOKEN DETAILS <button mat-raised-button type="button" class="btn btn-outline-secondary ml-auto mr-2" (click)="close()"> CLOSE </button> </div> </mat-card-title> <div class="card-body"> <div> <span><strong>Name:</strong> {{token?.name}}</span> </div> <div> <span><strong>Symbol:</strong> {{token?.symbol}}</span> </div> <div> <span><strong>Address:</strong> {{token?.address}}</span> </div> <div> <span><strong>Details:</strong> A community inclusive currency for trading among lower to middle income societies.</span> </div> <div> <span><strong>Supply:</strong> {{token?.supply | tokenRatio}}</span> </div><br> <div> <h2>Reserve</h2> <div> <span><strong>Weight:</strong> {{token?.reserveRatio}}</span> </div> <div> <span><strong>Owner:</strong> {{token?.owner}}</span> </div> </div> </div> </div></div></div>'
|
||||
var COMPONENT_TEMPLATE = '<div><div *ngIf="token" class="mb-3 mt-1"> <div class="card text-center"> <mat-card-title class="card-header"> <div class="row"> TOKEN DETAILS <button mat-raised-button type="button" class="btn btn-outline-secondary ml-auto mr-2" (click)="close()" > CLOSE </button> </div> </mat-card-title> <div class="card-body"> <div> <span><strong>Name:</strong> {{ token?.name }}</span> </div> <div> <span><strong>Symbol:</strong> {{ token?.symbol }}</span> </div> <div> <span><strong>Address:</strong> {{ token?.address }}</span> </div> <div> <span ><strong>Details:</strong> A community inclusive currency for trading among lower to middle income societies.</span > </div> <div> <span><strong>Supply:</strong> {{ token?.supply | tokenRatio }}</span> </div> <br /> <div> <h2>Reserve</h2> <div> <span><strong>Weight:</strong> {{ token?.reserveRatio }}</span> </div> <div> <span><strong>Owner:</strong> {{ token?.owner }}</span> </div> </div> </div> </div></div></div>'
|
||||
var COMPONENTS = [{'name': 'AccountDetailsComponent', 'selector': 'app-account-details'},{'name': 'AccountsComponent', 'selector': 'app-accounts'},{'name': 'AccountSearchComponent', 'selector': 'app-account-search'},{'name': 'AdminComponent', 'selector': 'app-admin'},{'name': 'AppComponent', 'selector': 'app-root'},{'name': 'AuthComponent', 'selector': 'app-auth'},{'name': 'CreateAccountComponent', 'selector': 'app-create-account'},{'name': 'ErrorDialogComponent', 'selector': 'app-error-dialog'},{'name': 'FooterComponent', 'selector': 'app-footer'},{'name': 'FooterStubComponent', 'selector': 'app-footer'},{'name': 'NetworkStatusComponent', 'selector': 'app-network-status'},{'name': 'OrganizationComponent', 'selector': 'app-organization'},{'name': 'PagesComponent', 'selector': 'app-pages'},{'name': 'SettingsComponent', 'selector': 'app-settings'},{'name': 'SidebarComponent', 'selector': 'app-sidebar'},{'name': 'SidebarStubComponent', 'selector': 'app-sidebar'},{'name': 'TokenDetailsComponent', 'selector': 'app-token-details'},{'name': 'TokensComponent', 'selector': 'app-tokens'},{'name': 'TopbarComponent', 'selector': 'app-topbar'},{'name': 'TopbarStubComponent', 'selector': 'app-topbar'},{'name': 'TransactionDetailsComponent', 'selector': 'app-transaction-details'},{'name': 'TransactionsComponent', 'selector': 'app-transactions'}];
|
||||
var DIRECTIVES = [{'name': 'MenuSelectionDirective', 'selector': '[appMenuSelection]'},{'name': 'MenuToggleDirective', 'selector': '[appMenuToggle]'},{'name': 'PasswordToggleDirective', 'selector': '[appPasswordToggle]'},{'name': 'RouterLinkDirectiveStub', 'selector': '[appRouterLink]'}];
|
||||
var ACTUAL_COMPONENT = {'name': 'TokenDetailsComponent'};
|
||||
|
@ -766,45 +766,71 @@ export class TokensComponent implements OnInit {
|
||||
<mat-card-title class="card-header">
|
||||
<div class="row">
|
||||
Tokens
|
||||
<button mat-raised-button color="primary" type="button" class="btn btn-outline-primary ml-auto mr-2" (click)="downloadCsv()"> EXPORT </button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
type="button"
|
||||
class="btn btn-outline-primary ml-auto mr-2"
|
||||
(click)="downloadCsv()"
|
||||
>
|
||||
EXPORT
|
||||
</button>
|
||||
</div>
|
||||
</mat-card-title>
|
||||
<div class="card-body">
|
||||
|
||||
<app-token-details [token]="token" (closeWindow)="token = $event"></app-token-details>
|
||||
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label> Filter </mat-label>
|
||||
<input matInput type="text" (keyup)="doFilter($event.target.value)" placeholder="Filter">
|
||||
<input
|
||||
matInput
|
||||
type="text"
|
||||
(keyup)="doFilter($event.target.value)"
|
||||
placeholder="Filter"
|
||||
/>
|
||||
<mat-icon matSuffix>search</mat-icon>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-table class="mat-elevation-z10 table-responsive" [dataSource]="dataSource" matSort matSortDirection="asc" matSortDisableClear>
|
||||
<mat-table
|
||||
class="mat-elevation-z10 table-responsive"
|
||||
[dataSource]="dataSource"
|
||||
matSort
|
||||
matSortDirection="asc"
|
||||
matSortDisableClear
|
||||
>
|
||||
<ng-container matColumnDef="name">
|
||||
<mat-header-cell *matHeaderCellDef mat-sort-header> Name </mat-header-cell>
|
||||
<mat-cell *matCellDef="let token"> {{token.name}} </mat-cell>
|
||||
<mat-cell *matCellDef="let token"> {{ token.name }} </mat-cell>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="symbol">
|
||||
<mat-header-cell *matHeaderCellDef mat-sort-header> Symbol </mat-header-cell>
|
||||
<mat-cell *matCellDef="let token"> {{token.symbol}} </mat-cell>
|
||||
<mat-cell *matCellDef="let token"> {{ token.symbol }} </mat-cell>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="address">
|
||||
<mat-header-cell *matHeaderCellDef mat-sort-header> Address </mat-header-cell>
|
||||
<mat-cell *matCellDef="let token"> {{token.address}} </mat-cell>
|
||||
<mat-cell *matCellDef="let token"> {{ token.address }} </mat-cell>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="supply">
|
||||
<mat-header-cell *matHeaderCellDef mat-sort-header> Supply </mat-header-cell>
|
||||
<mat-cell *matCellDef="let token"> {{token.supply | tokenRatio}} </mat-cell>
|
||||
<mat-cell *matCellDef="let token"> {{ token.supply | tokenRatio }} </mat-cell>
|
||||
</ng-container>
|
||||
|
||||
<mat-header-row *matHeaderRowDef="columnsToDisplay"></mat-header-row>
|
||||
<mat-row *matRowDef="let token; columns: columnsToDisplay" (click)="viewToken(token)" matRipple></mat-row>
|
||||
<mat-row
|
||||
*matRowDef="let token; columns: columnsToDisplay"
|
||||
(click)="viewToken(token)"
|
||||
matRipple
|
||||
></mat-row>
|
||||
</mat-table>
|
||||
|
||||
<mat-paginator [pageSize]="5" [pageSizeOptions]="[5, 10, 25, 100]" showFirstLastButtons></mat-paginator>
|
||||
<mat-paginator
|
||||
[pageSize]="5"
|
||||
[pageSizeOptions]="[5, 10, 25, 100]"
|
||||
showFirstLastButtons
|
||||
></mat-paginator>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -814,7 +840,6 @@ export class TokensComponent implements OnInit {
|
||||
<!-- End Page content -->
|
||||
<!-- ============================================================== -->
|
||||
</div>
|
||||
|
||||
</code></pre>
|
||||
</div>
|
||||
|
||||
@ -850,7 +875,7 @@ export class TokensComponent implements OnInit {
|
||||
<script src="../js/libs/htmlparser.js"></script>
|
||||
<script src="../js/libs/deep-iterator.js"></script>
|
||||
<script>
|
||||
var COMPONENT_TEMPLATE = '<div><!-- Begin page --><div class="wrapper"> <app-sidebar></app-sidebar> <!-- ============================================================== --> <!-- Start Page Content here --> <!-- ============================================================== --> <div id="content"> <app-topbar></app-topbar> <!-- Start Content--> <div class="container-fluid" appMenuSelection> <nav aria-label="breadcrumb"> <ol class="breadcrumb"> <li class="breadcrumb-item"><a routerLink="/home">Home</a></li> <li class="breadcrumb-item active" aria-current="page">Tokens</li> </ol> </nav> <div class="card"> <mat-card-title class="card-header"> <div class="row"> Tokens <button mat-raised-button color="primary" type="button" class="btn btn-outline-primary ml-auto mr-2" (click)="downloadCsv()"> EXPORT </button> </div> </mat-card-title> <div class="card-body"> <app-token-details [token]="token" (closeWindow)="token = $event"></app-token-details> <mat-form-field appearance="outline"> <mat-label> Filter </mat-label> <input matInput type="text" (keyup)="doFilter($event.target.value)" placeholder="Filter"> <mat-icon matSuffix>search</mat-icon> </mat-form-field> <mat-table class="mat-elevation-z10 table-responsive" [dataSource]="dataSource" matSort matSortDirection="asc" matSortDisableClear> <ng-container matColumnDef="name"> <mat-header-cell *matHeaderCellDef mat-sort-header> Name </mat-header-cell> <mat-cell *matCellDef="let token"> {{token.name}} </mat-cell> </ng-container> <ng-container matColumnDef="symbol"> <mat-header-cell *matHeaderCellDef mat-sort-header> Symbol </mat-header-cell> <mat-cell *matCellDef="let token"> {{token.symbol}} </mat-cell> </ng-container> <ng-container matColumnDef="address"> <mat-header-cell *matHeaderCellDef mat-sort-header> Address </mat-header-cell> <mat-cell *matCellDef="let token"> {{token.address}} </mat-cell> </ng-container> <ng-container matColumnDef="supply"> <mat-header-cell *matHeaderCellDef mat-sort-header> Supply </mat-header-cell> <mat-cell *matCellDef="let token"> {{token.supply | tokenRatio}} </mat-cell> </ng-container> <mat-header-row *matHeaderRowDef="columnsToDisplay"></mat-header-row> <mat-row *matRowDef="let token; columns: columnsToDisplay" (click)="viewToken(token)" matRipple></mat-row> </mat-table> <mat-paginator [pageSize]="5" [pageSizeOptions]="[5, 10, 25, 100]" showFirstLastButtons></mat-paginator> </div> </div> </div> <app-footer appMenuSelection></app-footer> </div> <!-- ============================================================== --> <!-- End Page content --> <!-- ============================================================== --></div></div>'
|
||||
var COMPONENT_TEMPLATE = '<div><!-- Begin page --><div class="wrapper"> <app-sidebar></app-sidebar> <!-- ============================================================== --> <!-- Start Page Content here --> <!-- ============================================================== --> <div id="content"> <app-topbar></app-topbar> <!-- Start Content--> <div class="container-fluid" appMenuSelection> <nav aria-label="breadcrumb"> <ol class="breadcrumb"> <li class="breadcrumb-item"><a routerLink="/home">Home</a></li> <li class="breadcrumb-item active" aria-current="page">Tokens</li> </ol> </nav> <div class="card"> <mat-card-title class="card-header"> <div class="row"> Tokens <button mat-raised-button color="primary" type="button" class="btn btn-outline-primary ml-auto mr-2" (click)="downloadCsv()" > EXPORT </button> </div> </mat-card-title> <div class="card-body"> <app-token-details [token]="token" (closeWindow)="token = $event"></app-token-details> <mat-form-field appearance="outline"> <mat-label> Filter </mat-label> <input matInput type="text" (keyup)="doFilter($event.target.value)" placeholder="Filter" /> <mat-icon matSuffix>search</mat-icon> </mat-form-field> <mat-table class="mat-elevation-z10 table-responsive" [dataSource]="dataSource" matSort matSortDirection="asc" matSortDisableClear > <ng-container matColumnDef="name"> <mat-header-cell *matHeaderCellDef mat-sort-header> Name </mat-header-cell> <mat-cell *matCellDef="let token"> {{ token.name }} </mat-cell> </ng-container> <ng-container matColumnDef="symbol"> <mat-header-cell *matHeaderCellDef mat-sort-header> Symbol </mat-header-cell> <mat-cell *matCellDef="let token"> {{ token.symbol }} </mat-cell> </ng-container> <ng-container matColumnDef="address"> <mat-header-cell *matHeaderCellDef mat-sort-header> Address </mat-header-cell> <mat-cell *matCellDef="let token"> {{ token.address }} </mat-cell> </ng-container> <ng-container matColumnDef="supply"> <mat-header-cell *matHeaderCellDef mat-sort-header> Supply </mat-header-cell> <mat-cell *matCellDef="let token"> {{ token.supply | tokenRatio }} </mat-cell> </ng-container> <mat-header-row *matHeaderRowDef="columnsToDisplay"></mat-header-row> <mat-row *matRowDef="let token; columns: columnsToDisplay" (click)="viewToken(token)" matRipple ></mat-row> </mat-table> <mat-paginator [pageSize]="5" [pageSizeOptions]="[5, 10, 25, 100]" showFirstLastButtons ></mat-paginator> </div> </div> </div> <app-footer appMenuSelection></app-footer> </div> <!-- ============================================================== --> <!-- End Page content --> <!-- ============================================================== --></div></div>'
|
||||
var COMPONENTS = [{'name': 'AccountDetailsComponent', 'selector': 'app-account-details'},{'name': 'AccountsComponent', 'selector': 'app-accounts'},{'name': 'AccountSearchComponent', 'selector': 'app-account-search'},{'name': 'AdminComponent', 'selector': 'app-admin'},{'name': 'AppComponent', 'selector': 'app-root'},{'name': 'AuthComponent', 'selector': 'app-auth'},{'name': 'CreateAccountComponent', 'selector': 'app-create-account'},{'name': 'ErrorDialogComponent', 'selector': 'app-error-dialog'},{'name': 'FooterComponent', 'selector': 'app-footer'},{'name': 'FooterStubComponent', 'selector': 'app-footer'},{'name': 'NetworkStatusComponent', 'selector': 'app-network-status'},{'name': 'OrganizationComponent', 'selector': 'app-organization'},{'name': 'PagesComponent', 'selector': 'app-pages'},{'name': 'SettingsComponent', 'selector': 'app-settings'},{'name': 'SidebarComponent', 'selector': 'app-sidebar'},{'name': 'SidebarStubComponent', 'selector': 'app-sidebar'},{'name': 'TokenDetailsComponent', 'selector': 'app-token-details'},{'name': 'TokensComponent', 'selector': 'app-tokens'},{'name': 'TopbarComponent', 'selector': 'app-topbar'},{'name': 'TopbarStubComponent', 'selector': 'app-topbar'},{'name': 'TransactionDetailsComponent', 'selector': 'app-transaction-details'},{'name': 'TransactionsComponent', 'selector': 'app-transactions'}];
|
||||
var DIRECTIVES = [{'name': 'MenuSelectionDirective', 'selector': '[appMenuSelection]'},{'name': 'MenuToggleDirective', 'selector': '[appMenuToggle]'},{'name': 'PasswordToggleDirective', 'selector': '[appPasswordToggle]'},{'name': 'RouterLinkDirectiveStub', 'selector': '[appRouterLink]'}];
|
||||
var ACTUAL_COMPONENT = {'name': 'TokensComponent'};
|
||||
|
@ -242,7 +242,13 @@ export class TopbarComponent implements OnInit {
|
||||
<pre class="line-numbers"><code class="language-html"><!-- Topbar Start -->
|
||||
<nav class="navbar navbar-expand-lg navbar-light bg-light sticky-top">
|
||||
<div class="container-fluid">
|
||||
<button type="button" id="sidebarCollapse" class="navbar-btn menutoggle" aria-label="Sidebar toggle" appMenuToggle>
|
||||
<button
|
||||
type="button"
|
||||
id="sidebarCollapse"
|
||||
class="navbar-btn menutoggle"
|
||||
aria-label="Sidebar toggle"
|
||||
appMenuToggle
|
||||
>
|
||||
<span></span>
|
||||
<span></span>
|
||||
<span></span>
|
||||
@ -285,7 +291,7 @@ export class TopbarComponent implements OnInit {
|
||||
<script src="../js/libs/htmlparser.js"></script>
|
||||
<script src="../js/libs/deep-iterator.js"></script>
|
||||
<script>
|
||||
var COMPONENT_TEMPLATE = '<div><!-- Topbar Start --><nav class="navbar navbar-expand-lg navbar-light bg-light sticky-top"> <div class="container-fluid"> <button type="button" id="sidebarCollapse" class="navbar-btn menutoggle" aria-label="Sidebar toggle" appMenuToggle> <span></span> <span></span> <span></span> </button> </div></nav><!-- end Topbar --></div>'
|
||||
var COMPONENT_TEMPLATE = '<div><!-- Topbar Start --><nav class="navbar navbar-expand-lg navbar-light bg-light sticky-top"> <div class="container-fluid"> <button type="button" id="sidebarCollapse" class="navbar-btn menutoggle" aria-label="Sidebar toggle" appMenuToggle > <span></span> <span></span> <span></span> </button> </div></nav><!-- end Topbar --></div>'
|
||||
var COMPONENTS = [{'name': 'AccountDetailsComponent', 'selector': 'app-account-details'},{'name': 'AccountsComponent', 'selector': 'app-accounts'},{'name': 'AccountSearchComponent', 'selector': 'app-account-search'},{'name': 'AdminComponent', 'selector': 'app-admin'},{'name': 'AppComponent', 'selector': 'app-root'},{'name': 'AuthComponent', 'selector': 'app-auth'},{'name': 'CreateAccountComponent', 'selector': 'app-create-account'},{'name': 'ErrorDialogComponent', 'selector': 'app-error-dialog'},{'name': 'FooterComponent', 'selector': 'app-footer'},{'name': 'FooterStubComponent', 'selector': 'app-footer'},{'name': 'NetworkStatusComponent', 'selector': 'app-network-status'},{'name': 'OrganizationComponent', 'selector': 'app-organization'},{'name': 'PagesComponent', 'selector': 'app-pages'},{'name': 'SettingsComponent', 'selector': 'app-settings'},{'name': 'SidebarComponent', 'selector': 'app-sidebar'},{'name': 'SidebarStubComponent', 'selector': 'app-sidebar'},{'name': 'TokenDetailsComponent', 'selector': 'app-token-details'},{'name': 'TokensComponent', 'selector': 'app-tokens'},{'name': 'TopbarComponent', 'selector': 'app-topbar'},{'name': 'TopbarStubComponent', 'selector': 'app-topbar'},{'name': 'TransactionDetailsComponent', 'selector': 'app-transaction-details'},{'name': 'TransactionsComponent', 'selector': 'app-transactions'}];
|
||||
var DIRECTIVES = [{'name': 'MenuSelectionDirective', 'selector': '[appMenuSelection]'},{'name': 'MenuToggleDirective', 'selector': '[appMenuToggle]'},{'name': 'PasswordToggleDirective', 'selector': '[appPasswordToggle]'},{'name': 'RouterLinkDirectiveStub', 'selector': '[appRouterLink]'}];
|
||||
var ACTUAL_COMPONENT = {'name': 'TopbarComponent'};
|
||||
|
@ -109,15 +109,15 @@
|
||||
|
||||
|
||||
<div class="tab-pane fade tab-source-code" id="c-source">
|
||||
<pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import {Component} from '@angular/core';
|
||||
<pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import { Component } from '@angular/core';
|
||||
|
||||
@Component({selector: 'app-sidebar', template: ''})
|
||||
@Component({ selector: 'app-sidebar', template: '' })
|
||||
export class SidebarStubComponent {}
|
||||
|
||||
@Component({selector: 'app-topbar', template: ''})
|
||||
@Component({ selector: 'app-topbar', template: '' })
|
||||
export class TopbarStubComponent {}
|
||||
|
||||
@Component({selector: 'app-footer', template: ''})
|
||||
@Component({ selector: 'app-footer', template: '' })
|
||||
export class FooterStubComponent {}
|
||||
</code></pre>
|
||||
</div>
|
||||
|
@ -235,10 +235,10 @@
|
||||
|
||||
|
||||
<div class="tab-pane fade tab-source-code" id="c-source">
|
||||
<pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import {Directive, HostListener, Input} from '@angular/core';
|
||||
<pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import { Directive, HostListener, Input } from '@angular/core';
|
||||
|
||||
@Directive({
|
||||
selector: '[appRouterLink]'
|
||||
selector: '[appRouterLink]',
|
||||
})
|
||||
// tslint:disable-next-line:directive-class-suffix
|
||||
export class RouterLinkDirectiveStub {
|
||||
|
@ -1719,11 +1719,10 @@
|
||||
logLevel: NgxLoggerLevel.ERROR,
|
||||
serverLogLevel: NgxLoggerLevel.OFF,
|
||||
loggingUrl: '',
|
||||
cicAuthUrl: 'https://meta-auth.dev.grassrootseconomics.net',
|
||||
cicMetaUrl: 'https://meta-auth.dev.grassrootseconomics.net',
|
||||
cicMetaUrl: 'https://meta.dev.grassrootseconomics.net',
|
||||
publicKeysUrl: 'https://dev.grassrootseconomics.net/.well-known/publickeys/',
|
||||
cicCacheUrl: 'http://localhost:63313',
|
||||
web3Provider: 'ws://localhost:63546',
|
||||
cicCacheUrl: 'https://cache.dev.grassrootseconomics.net',
|
||||
web3Provider: 'wss://bloxberg-ws.dev.grassrootseconomics.net',
|
||||
cicUssdUrl: 'https://user.dev.grassrootseconomics.net',
|
||||
registryAddress: '0xea6225212005e86a4490018ded4bf37f3e772161',
|
||||
trustedDeclaratorAddress: '0xEb3907eCad74a0013c259D5874AE7f22DcBcC95C',
|
||||
@ -1763,7 +1762,6 @@
|
||||
logLevel: NgxLoggerLevel.ERROR,
|
||||
serverLogLevel: NgxLoggerLevel.OFF,
|
||||
loggingUrl: '',
|
||||
cicAuthUrl: 'https://meta-auth.dev.grassrootseconomics.net',
|
||||
cicMetaUrl: 'https://meta.dev.grassrootseconomics.net',
|
||||
publicKeysUrl: 'https://dev.grassrootseconomics.net/.well-known/publickeys/',
|
||||
cicCacheUrl: 'https://cache.dev.grassrootseconomics.net',
|
||||
|
@ -65,14 +65,14 @@
|
||||
<title>cluster_AppModule</title>
|
||||
<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="8,-70 8,-268 1186,-268 1186,-70 8,-70"/>
|
||||
</g>
|
||||
<g id="clust6" class="cluster">
|
||||
<title>cluster_AppModule_bootstrap</title>
|
||||
<polygon fill="none" stroke="black" points="447,-208 447,-260 571,-260 571,-208 447,-208"/>
|
||||
</g>
|
||||
<g id="clust7" class="cluster">
|
||||
<title>cluster_AppModule_providers</title>
|
||||
<polygon fill="none" stroke="black" points="415,-78 415,-130 1178,-130 1178,-78 415,-78"/>
|
||||
</g>
|
||||
<g id="clust6" class="cluster">
|
||||
<title>cluster_AppModule_bootstrap</title>
|
||||
<polygon fill="none" stroke="black" points="447,-208 447,-260 571,-260 571,-208 447,-208"/>
|
||||
</g>
|
||||
<g id="clust4" class="cluster">
|
||||
<title>cluster_AppModule_imports</title>
|
||||
<polygon fill="none" stroke="black" points="146,-78 146,-130 407,-130 407,-78 146,-78"/>
|
||||
|
@ -24,14 +24,14 @@
|
||||
<title>cluster_AppModule</title>
|
||||
<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="8,-70 8,-268 1186,-268 1186,-70 8,-70"/>
|
||||
</g>
|
||||
<g id="clust6" class="cluster">
|
||||
<title>cluster_AppModule_bootstrap</title>
|
||||
<polygon fill="none" stroke="black" points="447,-208 447,-260 571,-260 571,-208 447,-208"/>
|
||||
</g>
|
||||
<g id="clust7" class="cluster">
|
||||
<title>cluster_AppModule_providers</title>
|
||||
<polygon fill="none" stroke="black" points="415,-78 415,-130 1178,-130 1178,-78 415,-78"/>
|
||||
</g>
|
||||
<g id="clust6" class="cluster">
|
||||
<title>cluster_AppModule_bootstrap</title>
|
||||
<polygon fill="none" stroke="black" points="447,-208 447,-260 571,-260 571,-208 447,-208"/>
|
||||
</g>
|
||||
<g id="clust4" class="cluster">
|
||||
<title>cluster_AppModule_imports</title>
|
||||
<polygon fill="none" stroke="black" points="146,-78 146,-130 407,-130 407,-78 146,-78"/>
|
||||
|
Before Width: | Height: | Size: 7.9 KiB After Width: | Height: | Size: 7.9 KiB |
@ -65,67 +65,67 @@
|
||||
<title>cluster_SettingsModule</title>
|
||||
<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="8,-70 8,-195 628,-195 628,-70 8,-70"/>
|
||||
</g>
|
||||
<g id="clust5" class="cluster">
|
||||
<title>cluster_SettingsModule_imports</title>
|
||||
<polygon fill="none" stroke="black" points="338,-78 338,-130 620,-130 620,-78 338,-78"/>
|
||||
</g>
|
||||
<g id="clust2" class="cluster">
|
||||
<title>cluster_SettingsModule_declarations</title>
|
||||
<polygon fill="none" stroke="black" points="16,-78 16,-130 330,-130 330,-78 16,-78"/>
|
||||
<polygon fill="none" stroke="black" points="306,-78 306,-130 620,-130 620,-78 306,-78"/>
|
||||
</g>
|
||||
<g id="clust5" class="cluster">
|
||||
<title>cluster_SettingsModule_imports</title>
|
||||
<polygon fill="none" stroke="black" points="16,-78 16,-130 298,-130 298,-78 16,-78"/>
|
||||
</g>
|
||||
<!-- OrganizationComponent -->
|
||||
<g id="node1" class="node">
|
||||
<title>OrganizationComponent</title>
|
||||
<polygon fill="#ffffb3" stroke="black" points="322.42,-122 167.58,-122 167.58,-86 322.42,-86 322.42,-122"/>
|
||||
<text text-anchor="middle" x="245" y="-99.8" font-family="Times,serif" font-size="14.00">OrganizationComponent</text>
|
||||
<polygon fill="#ffffb3" stroke="black" points="612.42,-122 457.58,-122 457.58,-86 612.42,-86 612.42,-122"/>
|
||||
<text text-anchor="middle" x="535" y="-99.8" font-family="Times,serif" font-size="14.00">OrganizationComponent</text>
|
||||
</g>
|
||||
<!-- SettingsModule -->
|
||||
<g id="node3" class="node">
|
||||
<title>SettingsModule</title>
|
||||
<polygon fill="#8dd3c7" stroke="black" points="372.16,-187 369.16,-191 348.16,-191 345.16,-187 267.84,-187 267.84,-151 372.16,-151 372.16,-187"/>
|
||||
<text text-anchor="middle" x="320" y="-164.8" font-family="Times,serif" font-size="14.00">SettingsModule</text>
|
||||
<polygon fill="#8dd3c7" stroke="black" points="348.16,-187 345.16,-191 324.16,-191 321.16,-187 243.84,-187 243.84,-151 348.16,-151 348.16,-187"/>
|
||||
<text text-anchor="middle" x="296" y="-164.8" font-family="Times,serif" font-size="14.00">SettingsModule</text>
|
||||
</g>
|
||||
<!-- OrganizationComponent->SettingsModule -->
|
||||
<g id="edge1" class="edge">
|
||||
<title>OrganizationComponent->SettingsModule</title>
|
||||
<path fill="none" stroke="black" d="M294.94,-122.11C294.94,-122.11 294.94,-140.99 294.94,-140.99"/>
|
||||
<polygon fill="black" stroke="black" points="291.44,-140.99 294.94,-150.99 298.44,-140.99 291.44,-140.99"/>
|
||||
<path fill="none" stroke="black" d="M535,-122.11C535,-141.34 535,-169 535,-169 535,-169 358.45,-169 358.45,-169"/>
|
||||
<polygon fill="black" stroke="black" points="358.45,-165.5 348.45,-169 358.45,-172.5 358.45,-165.5"/>
|
||||
</g>
|
||||
<!-- SettingsComponent -->
|
||||
<g id="node2" class="node">
|
||||
<title>SettingsComponent</title>
|
||||
<polygon fill="#ffffb3" stroke="black" points="150.45,-122 23.55,-122 23.55,-86 150.45,-86 150.45,-122"/>
|
||||
<text text-anchor="middle" x="87" y="-99.8" font-family="Times,serif" font-size="14.00">SettingsComponent</text>
|
||||
<polygon fill="#ffffb3" stroke="black" points="440.45,-122 313.55,-122 313.55,-86 440.45,-86 440.45,-122"/>
|
||||
<text text-anchor="middle" x="377" y="-99.8" font-family="Times,serif" font-size="14.00">SettingsComponent</text>
|
||||
</g>
|
||||
<!-- SettingsComponent->SettingsModule -->
|
||||
<g id="edge2" class="edge">
|
||||
<title>SettingsComponent->SettingsModule</title>
|
||||
<path fill="none" stroke="black" d="M87,-122.11C87,-141.34 87,-169 87,-169 87,-169 257.71,-169 257.71,-169"/>
|
||||
<polygon fill="black" stroke="black" points="257.71,-172.5 267.71,-169 257.71,-165.5 257.71,-172.5"/>
|
||||
<path fill="none" stroke="black" d="M331.05,-122.11C331.05,-122.11 331.05,-140.99 331.05,-140.99"/>
|
||||
<polygon fill="black" stroke="black" points="327.55,-140.99 331.05,-150.99 334.55,-140.99 327.55,-140.99"/>
|
||||
</g>
|
||||
<!-- SettingsRoutingModule -->
|
||||
<g id="node4" class="node">
|
||||
<title>SettingsRoutingModule</title>
|
||||
<polygon fill="#8dd3c7" stroke="black" points="611.78,-122 608.78,-126 587.78,-126 584.78,-122 462.22,-122 462.22,-86 611.78,-86 611.78,-122"/>
|
||||
<text text-anchor="middle" x="537" y="-99.8" font-family="Times,serif" font-size="14.00">SettingsRoutingModule</text>
|
||||
<polygon fill="#8dd3c7" stroke="black" points="289.78,-122 286.78,-126 265.78,-126 262.78,-122 140.22,-122 140.22,-86 289.78,-86 289.78,-122"/>
|
||||
<text text-anchor="middle" x="215" y="-99.8" font-family="Times,serif" font-size="14.00">SettingsRoutingModule</text>
|
||||
</g>
|
||||
<!-- SettingsRoutingModule->SettingsModule -->
|
||||
<g id="edge3" class="edge">
|
||||
<title>SettingsRoutingModule->SettingsModule</title>
|
||||
<path fill="none" stroke="black" d="M537,-122.11C537,-141.34 537,-169 537,-169 537,-169 382.25,-169 382.25,-169"/>
|
||||
<polygon fill="black" stroke="black" points="382.25,-165.5 372.25,-169 382.25,-172.5 382.25,-165.5"/>
|
||||
<path fill="none" stroke="black" d="M266.78,-122.11C266.78,-122.11 266.78,-140.99 266.78,-140.99"/>
|
||||
<polygon fill="black" stroke="black" points="263.28,-140.99 266.78,-150.99 270.28,-140.99 263.28,-140.99"/>
|
||||
</g>
|
||||
<!-- SharedModule -->
|
||||
<g id="node5" class="node">
|
||||
<title>SharedModule</title>
|
||||
<polygon fill="#8dd3c7" stroke="black" points="444.42,-122 441.42,-126 420.42,-126 417.42,-122 345.58,-122 345.58,-86 444.42,-86 444.42,-122"/>
|
||||
<text text-anchor="middle" x="395" y="-99.8" font-family="Times,serif" font-size="14.00">SharedModule</text>
|
||||
<polygon fill="#8dd3c7" stroke="black" points="122.42,-122 119.42,-126 98.42,-126 95.42,-122 23.58,-122 23.58,-86 122.42,-86 122.42,-122"/>
|
||||
<text text-anchor="middle" x="73" y="-99.8" font-family="Times,serif" font-size="14.00">SharedModule</text>
|
||||
</g>
|
||||
<!-- SharedModule->SettingsModule -->
|
||||
<g id="edge4" class="edge">
|
||||
<title>SharedModule->SettingsModule</title>
|
||||
<path fill="none" stroke="black" d="M359.06,-122.11C359.06,-122.11 359.06,-140.99 359.06,-140.99"/>
|
||||
<polygon fill="black" stroke="black" points="355.56,-140.99 359.06,-150.99 362.56,-140.99 355.56,-140.99"/>
|
||||
<path fill="none" stroke="black" d="M73,-122.11C73,-141.34 73,-169 73,-169 73,-169 233.72,-169 233.72,-169"/>
|
||||
<polygon fill="black" stroke="black" points="233.72,-172.5 243.72,-169 233.72,-165.5 233.72,-172.5"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
@ -24,67 +24,67 @@
|
||||
<title>cluster_SettingsModule</title>
|
||||
<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="8,-70 8,-195 628,-195 628,-70 8,-70"/>
|
||||
</g>
|
||||
<g id="clust5" class="cluster">
|
||||
<title>cluster_SettingsModule_imports</title>
|
||||
<polygon fill="none" stroke="black" points="338,-78 338,-130 620,-130 620,-78 338,-78"/>
|
||||
</g>
|
||||
<g id="clust2" class="cluster">
|
||||
<title>cluster_SettingsModule_declarations</title>
|
||||
<polygon fill="none" stroke="black" points="16,-78 16,-130 330,-130 330,-78 16,-78"/>
|
||||
<polygon fill="none" stroke="black" points="306,-78 306,-130 620,-130 620,-78 306,-78"/>
|
||||
</g>
|
||||
<g id="clust5" class="cluster">
|
||||
<title>cluster_SettingsModule_imports</title>
|
||||
<polygon fill="none" stroke="black" points="16,-78 16,-130 298,-130 298,-78 16,-78"/>
|
||||
</g>
|
||||
<!-- OrganizationComponent -->
|
||||
<g id="node1" class="node">
|
||||
<title>OrganizationComponent</title>
|
||||
<polygon fill="#ffffb3" stroke="black" points="322.42,-122 167.58,-122 167.58,-86 322.42,-86 322.42,-122"/>
|
||||
<text text-anchor="middle" x="245" y="-99.8" font-family="Times,serif" font-size="14.00">OrganizationComponent</text>
|
||||
<polygon fill="#ffffb3" stroke="black" points="612.42,-122 457.58,-122 457.58,-86 612.42,-86 612.42,-122"/>
|
||||
<text text-anchor="middle" x="535" y="-99.8" font-family="Times,serif" font-size="14.00">OrganizationComponent</text>
|
||||
</g>
|
||||
<!-- SettingsModule -->
|
||||
<g id="node3" class="node">
|
||||
<title>SettingsModule</title>
|
||||
<polygon fill="#8dd3c7" stroke="black" points="372.16,-187 369.16,-191 348.16,-191 345.16,-187 267.84,-187 267.84,-151 372.16,-151 372.16,-187"/>
|
||||
<text text-anchor="middle" x="320" y="-164.8" font-family="Times,serif" font-size="14.00">SettingsModule</text>
|
||||
<polygon fill="#8dd3c7" stroke="black" points="348.16,-187 345.16,-191 324.16,-191 321.16,-187 243.84,-187 243.84,-151 348.16,-151 348.16,-187"/>
|
||||
<text text-anchor="middle" x="296" y="-164.8" font-family="Times,serif" font-size="14.00">SettingsModule</text>
|
||||
</g>
|
||||
<!-- OrganizationComponent->SettingsModule -->
|
||||
<g id="edge1" class="edge">
|
||||
<title>OrganizationComponent->SettingsModule</title>
|
||||
<path fill="none" stroke="black" d="M294.94,-122.11C294.94,-122.11 294.94,-140.99 294.94,-140.99"/>
|
||||
<polygon fill="black" stroke="black" points="291.44,-140.99 294.94,-150.99 298.44,-140.99 291.44,-140.99"/>
|
||||
<path fill="none" stroke="black" d="M535,-122.11C535,-141.34 535,-169 535,-169 535,-169 358.45,-169 358.45,-169"/>
|
||||
<polygon fill="black" stroke="black" points="358.45,-165.5 348.45,-169 358.45,-172.5 358.45,-165.5"/>
|
||||
</g>
|
||||
<!-- SettingsComponent -->
|
||||
<g id="node2" class="node">
|
||||
<title>SettingsComponent</title>
|
||||
<polygon fill="#ffffb3" stroke="black" points="150.45,-122 23.55,-122 23.55,-86 150.45,-86 150.45,-122"/>
|
||||
<text text-anchor="middle" x="87" y="-99.8" font-family="Times,serif" font-size="14.00">SettingsComponent</text>
|
||||
<polygon fill="#ffffb3" stroke="black" points="440.45,-122 313.55,-122 313.55,-86 440.45,-86 440.45,-122"/>
|
||||
<text text-anchor="middle" x="377" y="-99.8" font-family="Times,serif" font-size="14.00">SettingsComponent</text>
|
||||
</g>
|
||||
<!-- SettingsComponent->SettingsModule -->
|
||||
<g id="edge2" class="edge">
|
||||
<title>SettingsComponent->SettingsModule</title>
|
||||
<path fill="none" stroke="black" d="M87,-122.11C87,-141.34 87,-169 87,-169 87,-169 257.71,-169 257.71,-169"/>
|
||||
<polygon fill="black" stroke="black" points="257.71,-172.5 267.71,-169 257.71,-165.5 257.71,-172.5"/>
|
||||
<path fill="none" stroke="black" d="M331.05,-122.11C331.05,-122.11 331.05,-140.99 331.05,-140.99"/>
|
||||
<polygon fill="black" stroke="black" points="327.55,-140.99 331.05,-150.99 334.55,-140.99 327.55,-140.99"/>
|
||||
</g>
|
||||
<!-- SettingsRoutingModule -->
|
||||
<g id="node4" class="node">
|
||||
<title>SettingsRoutingModule</title>
|
||||
<polygon fill="#8dd3c7" stroke="black" points="611.78,-122 608.78,-126 587.78,-126 584.78,-122 462.22,-122 462.22,-86 611.78,-86 611.78,-122"/>
|
||||
<text text-anchor="middle" x="537" y="-99.8" font-family="Times,serif" font-size="14.00">SettingsRoutingModule</text>
|
||||
<polygon fill="#8dd3c7" stroke="black" points="289.78,-122 286.78,-126 265.78,-126 262.78,-122 140.22,-122 140.22,-86 289.78,-86 289.78,-122"/>
|
||||
<text text-anchor="middle" x="215" y="-99.8" font-family="Times,serif" font-size="14.00">SettingsRoutingModule</text>
|
||||
</g>
|
||||
<!-- SettingsRoutingModule->SettingsModule -->
|
||||
<g id="edge3" class="edge">
|
||||
<title>SettingsRoutingModule->SettingsModule</title>
|
||||
<path fill="none" stroke="black" d="M537,-122.11C537,-141.34 537,-169 537,-169 537,-169 382.25,-169 382.25,-169"/>
|
||||
<polygon fill="black" stroke="black" points="382.25,-165.5 372.25,-169 382.25,-172.5 382.25,-165.5"/>
|
||||
<path fill="none" stroke="black" d="M266.78,-122.11C266.78,-122.11 266.78,-140.99 266.78,-140.99"/>
|
||||
<polygon fill="black" stroke="black" points="263.28,-140.99 266.78,-150.99 270.28,-140.99 263.28,-140.99"/>
|
||||
</g>
|
||||
<!-- SharedModule -->
|
||||
<g id="node5" class="node">
|
||||
<title>SharedModule</title>
|
||||
<polygon fill="#8dd3c7" stroke="black" points="444.42,-122 441.42,-126 420.42,-126 417.42,-122 345.58,-122 345.58,-86 444.42,-86 444.42,-122"/>
|
||||
<text text-anchor="middle" x="395" y="-99.8" font-family="Times,serif" font-size="14.00">SharedModule</text>
|
||||
<polygon fill="#8dd3c7" stroke="black" points="122.42,-122 119.42,-126 98.42,-126 95.42,-122 23.58,-122 23.58,-86 122.42,-86 122.42,-122"/>
|
||||
<text text-anchor="middle" x="73" y="-99.8" font-family="Times,serif" font-size="14.00">SharedModule</text>
|
||||
</g>
|
||||
<!-- SharedModule->SettingsModule -->
|
||||
<g id="edge4" class="edge">
|
||||
<title>SharedModule->SettingsModule</title>
|
||||
<path fill="none" stroke="black" d="M359.06,-122.11C359.06,-122.11 359.06,-140.99 359.06,-140.99"/>
|
||||
<polygon fill="black" stroke="black" points="355.56,-140.99 359.06,-150.99 362.56,-140.99 355.56,-140.99"/>
|
||||
<path fill="none" stroke="black" d="M73,-122.11C73,-141.34 73,-169 73,-169 73,-169 233.72,-169 233.72,-169"/>
|
||||
<polygon fill="black" stroke="black" points="233.72,-172.5 243.72,-169 233.72,-165.5 233.72,-172.5"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 5.3 KiB |
@ -65,14 +65,14 @@
|
||||
<title>cluster_SharedModule</title>
|
||||
<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="8,-70 8,-268 1440,-268 1440,-70 8,-70"/>
|
||||
</g>
|
||||
<g id="clust2" class="cluster">
|
||||
<title>cluster_SharedModule_declarations</title>
|
||||
<polygon fill="none" stroke="black" points="16,-78 16,-130 1432,-130 1432,-78 16,-78"/>
|
||||
</g>
|
||||
<g id="clust14" class="cluster">
|
||||
<title>cluster_SharedModule_exports</title>
|
||||
<polygon fill="none" stroke="black" points="126,-208 126,-260 1245,-260 1245,-208 126,-208"/>
|
||||
</g>
|
||||
<g id="clust2" class="cluster">
|
||||
<title>cluster_SharedModule_declarations</title>
|
||||
<polygon fill="none" stroke="black" points="16,-78 16,-130 1432,-130 1432,-78 16,-78"/>
|
||||
</g>
|
||||
<!-- ErrorDialogComponent -->
|
||||
<g id="node1" class="node">
|
||||
<title>ErrorDialogComponent</title>
|
||||
|
@ -24,14 +24,14 @@
|
||||
<title>cluster_SharedModule</title>
|
||||
<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="8,-70 8,-268 1440,-268 1440,-70 8,-70"/>
|
||||
</g>
|
||||
<g id="clust2" class="cluster">
|
||||
<title>cluster_SharedModule_declarations</title>
|
||||
<polygon fill="none" stroke="black" points="16,-78 16,-130 1432,-130 1432,-78 16,-78"/>
|
||||
</g>
|
||||
<g id="clust14" class="cluster">
|
||||
<title>cluster_SharedModule_exports</title>
|
||||
<polygon fill="none" stroke="black" points="126,-208 126,-260 1245,-260 1245,-208 126,-208"/>
|
||||
</g>
|
||||
<g id="clust2" class="cluster">
|
||||
<title>cluster_SharedModule_declarations</title>
|
||||
<polygon fill="none" stroke="black" points="16,-78 16,-130 1432,-130 1432,-78 16,-78"/>
|
||||
</g>
|
||||
<!-- ErrorDialogComponent -->
|
||||
<g id="node1" class="node">
|
||||
<title>ErrorDialogComponent</title>
|
||||
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
@ -65,83 +65,83 @@
|
||||
<title>cluster_TransactionsModule</title>
|
||||
<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="8,-70 8,-268 714,-268 714,-70 8,-70"/>
|
||||
</g>
|
||||
<g id="clust5" class="cluster">
|
||||
<title>cluster_TransactionsModule_imports</title>
|
||||
<polygon fill="none" stroke="black" points="398,-78 398,-130 706,-130 706,-78 398,-78"/>
|
||||
</g>
|
||||
<g id="clust6" class="cluster">
|
||||
<title>cluster_TransactionsModule_exports</title>
|
||||
<polygon fill="none" stroke="black" points="238,-208 238,-260 444,-260 444,-208 238,-208"/>
|
||||
<polygon fill="none" stroke="black" points="288,-208 288,-260 494,-260 494,-208 288,-208"/>
|
||||
</g>
|
||||
<g id="clust2" class="cluster">
|
||||
<title>cluster_TransactionsModule_declarations</title>
|
||||
<polygon fill="none" stroke="black" points="332,-78 332,-130 706,-130 706,-78 332,-78"/>
|
||||
</g>
|
||||
<g id="clust5" class="cluster">
|
||||
<title>cluster_TransactionsModule_imports</title>
|
||||
<polygon fill="none" stroke="black" points="16,-78 16,-130 324,-130 324,-78 16,-78"/>
|
||||
<polygon fill="none" stroke="black" points="16,-78 16,-130 390,-130 390,-78 16,-78"/>
|
||||
</g>
|
||||
<!-- TransactionDetailsComponent -->
|
||||
<g id="node1" class="node">
|
||||
<title>TransactionDetailsComponent</title>
|
||||
<polygon fill="#ffffb3" stroke="black" points="697.57,-122 510.43,-122 510.43,-86 697.57,-86 697.57,-122"/>
|
||||
<text text-anchor="middle" x="604" y="-99.8" font-family="Times,serif" font-size="14.00">TransactionDetailsComponent</text>
|
||||
<polygon fill="#ffffb3" stroke="black" points="381.57,-122 194.43,-122 194.43,-86 381.57,-86 381.57,-122"/>
|
||||
<text text-anchor="middle" x="288" y="-99.8" font-family="Times,serif" font-size="14.00">TransactionDetailsComponent</text>
|
||||
</g>
|
||||
<!-- TransactionsModule -->
|
||||
<g id="node3" class="node">
|
||||
<title>TransactionsModule</title>
|
||||
<polygon fill="#8dd3c7" stroke="black" points="406.58,-187 403.58,-191 382.58,-191 379.58,-187 275.42,-187 275.42,-151 406.58,-151 406.58,-187"/>
|
||||
<text text-anchor="middle" x="341" y="-164.8" font-family="Times,serif" font-size="14.00">TransactionsModule</text>
|
||||
<polygon fill="#8dd3c7" stroke="black" points="456.58,-187 453.58,-191 432.58,-191 429.58,-187 325.42,-187 325.42,-151 456.58,-151 456.58,-187"/>
|
||||
<text text-anchor="middle" x="391" y="-164.8" font-family="Times,serif" font-size="14.00">TransactionsModule</text>
|
||||
</g>
|
||||
<!-- TransactionDetailsComponent->TransactionsModule -->
|
||||
<g id="edge1" class="edge">
|
||||
<title>TransactionDetailsComponent->TransactionsModule</title>
|
||||
<path fill="none" stroke="black" d="M604,-122.11C604,-141.34 604,-169 604,-169 604,-169 416.69,-169 416.69,-169"/>
|
||||
<polygon fill="black" stroke="black" points="416.69,-165.5 406.69,-169 416.69,-172.5 416.69,-165.5"/>
|
||||
<path fill="none" stroke="black" d="M353.5,-122.11C353.5,-122.11 353.5,-140.99 353.5,-140.99"/>
|
||||
<polygon fill="black" stroke="black" points="350,-140.99 353.5,-150.99 357,-140.99 350,-140.99"/>
|
||||
</g>
|
||||
<!-- TransactionsComponent -->
|
||||
<g id="node2" class="node">
|
||||
<title>TransactionsComponent</title>
|
||||
<polygon fill="#ffffb3" stroke="black" points="492.36,-122 339.64,-122 339.64,-86 492.36,-86 492.36,-122"/>
|
||||
<text text-anchor="middle" x="416" y="-99.8" font-family="Times,serif" font-size="14.00">TransactionsComponent</text>
|
||||
<polygon fill="#ffffb3" stroke="black" points="176.36,-122 23.64,-122 23.64,-86 176.36,-86 176.36,-122"/>
|
||||
<text text-anchor="middle" x="100" y="-99.8" font-family="Times,serif" font-size="14.00">TransactionsComponent</text>
|
||||
</g>
|
||||
<!-- TransactionsComponent->TransactionsModule -->
|
||||
<g id="edge2" class="edge">
|
||||
<title>TransactionsComponent->TransactionsModule</title>
|
||||
<path fill="none" stroke="black" d="M373.05,-122.11C373.05,-122.11 373.05,-140.99 373.05,-140.99"/>
|
||||
<polygon fill="black" stroke="black" points="369.55,-140.99 373.05,-150.99 376.55,-140.99 369.55,-140.99"/>
|
||||
<path fill="none" stroke="black" d="M100,-122.11C100,-141.34 100,-169 100,-169 100,-169 315.33,-169 315.33,-169"/>
|
||||
<polygon fill="black" stroke="black" points="315.33,-172.5 325.33,-169 315.33,-165.5 315.33,-172.5"/>
|
||||
</g>
|
||||
<!-- TransactionDetailsComponent -->
|
||||
<g id="node6" class="node">
|
||||
<title>TransactionDetailsComponent </title>
|
||||
<polygon fill="#fb8072" stroke="black" points="436.07,-252 245.93,-252 245.93,-216 436.07,-216 436.07,-252"/>
|
||||
<text text-anchor="middle" x="341" y="-229.8" font-family="Times,serif" font-size="14.00">TransactionDetailsComponent </text>
|
||||
<polygon fill="#fb8072" stroke="black" points="486.07,-252 295.93,-252 295.93,-216 486.07,-216 486.07,-252"/>
|
||||
<text text-anchor="middle" x="391" y="-229.8" font-family="Times,serif" font-size="14.00">TransactionDetailsComponent </text>
|
||||
</g>
|
||||
<!-- TransactionsModule->TransactionDetailsComponent -->
|
||||
<g id="edge5" class="edge">
|
||||
<title>TransactionsModule->TransactionDetailsComponent </title>
|
||||
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M341,-187.11C341,-187.11 341,-205.99 341,-205.99"/>
|
||||
<polygon fill="black" stroke="black" points="337.5,-205.99 341,-215.99 344.5,-205.99 337.5,-205.99"/>
|
||||
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M391,-187.11C391,-187.11 391,-205.99 391,-205.99"/>
|
||||
<polygon fill="black" stroke="black" points="387.5,-205.99 391,-215.99 394.5,-205.99 387.5,-205.99"/>
|
||||
</g>
|
||||
<!-- SharedModule -->
|
||||
<g id="node4" class="node">
|
||||
<title>SharedModule</title>
|
||||
<polygon fill="#8dd3c7" stroke="black" points="316.42,-122 313.42,-126 292.42,-126 289.42,-122 217.58,-122 217.58,-86 316.42,-86 316.42,-122"/>
|
||||
<text text-anchor="middle" x="267" y="-99.8" font-family="Times,serif" font-size="14.00">SharedModule</text>
|
||||
<polygon fill="#8dd3c7" stroke="black" points="698.42,-122 695.42,-126 674.42,-126 671.42,-122 599.58,-122 599.58,-86 698.42,-86 698.42,-122"/>
|
||||
<text text-anchor="middle" x="649" y="-99.8" font-family="Times,serif" font-size="14.00">SharedModule</text>
|
||||
</g>
|
||||
<!-- SharedModule->TransactionsModule -->
|
||||
<g id="edge3" class="edge">
|
||||
<title>SharedModule->TransactionsModule</title>
|
||||
<path fill="none" stroke="black" d="M295.84,-122.11C295.84,-122.11 295.84,-140.99 295.84,-140.99"/>
|
||||
<polygon fill="black" stroke="black" points="292.34,-140.99 295.84,-150.99 299.34,-140.99 292.34,-140.99"/>
|
||||
<path fill="none" stroke="black" d="M649,-122.11C649,-141.34 649,-169 649,-169 649,-169 466.77,-169 466.77,-169"/>
|
||||
<polygon fill="black" stroke="black" points="466.77,-165.5 456.77,-169 466.77,-172.5 466.77,-165.5"/>
|
||||
</g>
|
||||
<!-- TransactionsRoutingModule -->
|
||||
<g id="node5" class="node">
|
||||
<title>TransactionsRoutingModule</title>
|
||||
<polygon fill="#8dd3c7" stroke="black" points="200.2,-122 197.2,-126 176.2,-126 173.2,-122 23.8,-122 23.8,-86 200.2,-86 200.2,-122"/>
|
||||
<text text-anchor="middle" x="112" y="-99.8" font-family="Times,serif" font-size="14.00">TransactionsRoutingModule</text>
|
||||
<polygon fill="#8dd3c7" stroke="black" points="582.2,-122 579.2,-126 558.2,-126 555.2,-122 405.8,-122 405.8,-86 582.2,-86 582.2,-122"/>
|
||||
<text text-anchor="middle" x="494" y="-99.8" font-family="Times,serif" font-size="14.00">TransactionsRoutingModule</text>
|
||||
</g>
|
||||
<!-- TransactionsRoutingModule->TransactionsModule -->
|
||||
<g id="edge4" class="edge">
|
||||
<title>TransactionsRoutingModule->TransactionsModule</title>
|
||||
<path fill="none" stroke="black" d="M112,-122.11C112,-141.34 112,-169 112,-169 112,-169 265.38,-169 265.38,-169"/>
|
||||
<polygon fill="black" stroke="black" points="265.38,-172.5 275.38,-169 265.38,-165.5 265.38,-172.5"/>
|
||||
<path fill="none" stroke="black" d="M431.22,-122.11C431.22,-122.11 431.22,-140.99 431.22,-140.99"/>
|
||||
<polygon fill="black" stroke="black" points="427.72,-140.99 431.22,-150.99 434.72,-140.99 427.72,-140.99"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
@ -24,83 +24,83 @@
|
||||
<title>cluster_TransactionsModule</title>
|
||||
<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="8,-70 8,-268 714,-268 714,-70 8,-70"/>
|
||||
</g>
|
||||
<g id="clust5" class="cluster">
|
||||
<title>cluster_TransactionsModule_imports</title>
|
||||
<polygon fill="none" stroke="black" points="398,-78 398,-130 706,-130 706,-78 398,-78"/>
|
||||
</g>
|
||||
<g id="clust6" class="cluster">
|
||||
<title>cluster_TransactionsModule_exports</title>
|
||||
<polygon fill="none" stroke="black" points="238,-208 238,-260 444,-260 444,-208 238,-208"/>
|
||||
<polygon fill="none" stroke="black" points="288,-208 288,-260 494,-260 494,-208 288,-208"/>
|
||||
</g>
|
||||
<g id="clust2" class="cluster">
|
||||
<title>cluster_TransactionsModule_declarations</title>
|
||||
<polygon fill="none" stroke="black" points="332,-78 332,-130 706,-130 706,-78 332,-78"/>
|
||||
</g>
|
||||
<g id="clust5" class="cluster">
|
||||
<title>cluster_TransactionsModule_imports</title>
|
||||
<polygon fill="none" stroke="black" points="16,-78 16,-130 324,-130 324,-78 16,-78"/>
|
||||
<polygon fill="none" stroke="black" points="16,-78 16,-130 390,-130 390,-78 16,-78"/>
|
||||
</g>
|
||||
<!-- TransactionDetailsComponent -->
|
||||
<g id="node1" class="node">
|
||||
<title>TransactionDetailsComponent</title>
|
||||
<polygon fill="#ffffb3" stroke="black" points="697.57,-122 510.43,-122 510.43,-86 697.57,-86 697.57,-122"/>
|
||||
<text text-anchor="middle" x="604" y="-99.8" font-family="Times,serif" font-size="14.00">TransactionDetailsComponent</text>
|
||||
<polygon fill="#ffffb3" stroke="black" points="381.57,-122 194.43,-122 194.43,-86 381.57,-86 381.57,-122"/>
|
||||
<text text-anchor="middle" x="288" y="-99.8" font-family="Times,serif" font-size="14.00">TransactionDetailsComponent</text>
|
||||
</g>
|
||||
<!-- TransactionsModule -->
|
||||
<g id="node3" class="node">
|
||||
<title>TransactionsModule</title>
|
||||
<polygon fill="#8dd3c7" stroke="black" points="406.58,-187 403.58,-191 382.58,-191 379.58,-187 275.42,-187 275.42,-151 406.58,-151 406.58,-187"/>
|
||||
<text text-anchor="middle" x="341" y="-164.8" font-family="Times,serif" font-size="14.00">TransactionsModule</text>
|
||||
<polygon fill="#8dd3c7" stroke="black" points="456.58,-187 453.58,-191 432.58,-191 429.58,-187 325.42,-187 325.42,-151 456.58,-151 456.58,-187"/>
|
||||
<text text-anchor="middle" x="391" y="-164.8" font-family="Times,serif" font-size="14.00">TransactionsModule</text>
|
||||
</g>
|
||||
<!-- TransactionDetailsComponent->TransactionsModule -->
|
||||
<g id="edge1" class="edge">
|
||||
<title>TransactionDetailsComponent->TransactionsModule</title>
|
||||
<path fill="none" stroke="black" d="M604,-122.11C604,-141.34 604,-169 604,-169 604,-169 416.69,-169 416.69,-169"/>
|
||||
<polygon fill="black" stroke="black" points="416.69,-165.5 406.69,-169 416.69,-172.5 416.69,-165.5"/>
|
||||
<path fill="none" stroke="black" d="M353.5,-122.11C353.5,-122.11 353.5,-140.99 353.5,-140.99"/>
|
||||
<polygon fill="black" stroke="black" points="350,-140.99 353.5,-150.99 357,-140.99 350,-140.99"/>
|
||||
</g>
|
||||
<!-- TransactionsComponent -->
|
||||
<g id="node2" class="node">
|
||||
<title>TransactionsComponent</title>
|
||||
<polygon fill="#ffffb3" stroke="black" points="492.36,-122 339.64,-122 339.64,-86 492.36,-86 492.36,-122"/>
|
||||
<text text-anchor="middle" x="416" y="-99.8" font-family="Times,serif" font-size="14.00">TransactionsComponent</text>
|
||||
<polygon fill="#ffffb3" stroke="black" points="176.36,-122 23.64,-122 23.64,-86 176.36,-86 176.36,-122"/>
|
||||
<text text-anchor="middle" x="100" y="-99.8" font-family="Times,serif" font-size="14.00">TransactionsComponent</text>
|
||||
</g>
|
||||
<!-- TransactionsComponent->TransactionsModule -->
|
||||
<g id="edge2" class="edge">
|
||||
<title>TransactionsComponent->TransactionsModule</title>
|
||||
<path fill="none" stroke="black" d="M373.05,-122.11C373.05,-122.11 373.05,-140.99 373.05,-140.99"/>
|
||||
<polygon fill="black" stroke="black" points="369.55,-140.99 373.05,-150.99 376.55,-140.99 369.55,-140.99"/>
|
||||
<path fill="none" stroke="black" d="M100,-122.11C100,-141.34 100,-169 100,-169 100,-169 315.33,-169 315.33,-169"/>
|
||||
<polygon fill="black" stroke="black" points="315.33,-172.5 325.33,-169 315.33,-165.5 315.33,-172.5"/>
|
||||
</g>
|
||||
<!-- TransactionDetailsComponent -->
|
||||
<g id="node6" class="node">
|
||||
<title>TransactionDetailsComponent </title>
|
||||
<polygon fill="#fb8072" stroke="black" points="436.07,-252 245.93,-252 245.93,-216 436.07,-216 436.07,-252"/>
|
||||
<text text-anchor="middle" x="341" y="-229.8" font-family="Times,serif" font-size="14.00">TransactionDetailsComponent </text>
|
||||
<polygon fill="#fb8072" stroke="black" points="486.07,-252 295.93,-252 295.93,-216 486.07,-216 486.07,-252"/>
|
||||
<text text-anchor="middle" x="391" y="-229.8" font-family="Times,serif" font-size="14.00">TransactionDetailsComponent </text>
|
||||
</g>
|
||||
<!-- TransactionsModule->TransactionDetailsComponent -->
|
||||
<g id="edge5" class="edge">
|
||||
<title>TransactionsModule->TransactionDetailsComponent </title>
|
||||
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M341,-187.11C341,-187.11 341,-205.99 341,-205.99"/>
|
||||
<polygon fill="black" stroke="black" points="337.5,-205.99 341,-215.99 344.5,-205.99 337.5,-205.99"/>
|
||||
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M391,-187.11C391,-187.11 391,-205.99 391,-205.99"/>
|
||||
<polygon fill="black" stroke="black" points="387.5,-205.99 391,-215.99 394.5,-205.99 387.5,-205.99"/>
|
||||
</g>
|
||||
<!-- SharedModule -->
|
||||
<g id="node4" class="node">
|
||||
<title>SharedModule</title>
|
||||
<polygon fill="#8dd3c7" stroke="black" points="316.42,-122 313.42,-126 292.42,-126 289.42,-122 217.58,-122 217.58,-86 316.42,-86 316.42,-122"/>
|
||||
<text text-anchor="middle" x="267" y="-99.8" font-family="Times,serif" font-size="14.00">SharedModule</text>
|
||||
<polygon fill="#8dd3c7" stroke="black" points="698.42,-122 695.42,-126 674.42,-126 671.42,-122 599.58,-122 599.58,-86 698.42,-86 698.42,-122"/>
|
||||
<text text-anchor="middle" x="649" y="-99.8" font-family="Times,serif" font-size="14.00">SharedModule</text>
|
||||
</g>
|
||||
<!-- SharedModule->TransactionsModule -->
|
||||
<g id="edge3" class="edge">
|
||||
<title>SharedModule->TransactionsModule</title>
|
||||
<path fill="none" stroke="black" d="M295.84,-122.11C295.84,-122.11 295.84,-140.99 295.84,-140.99"/>
|
||||
<polygon fill="black" stroke="black" points="292.34,-140.99 295.84,-150.99 299.34,-140.99 292.34,-140.99"/>
|
||||
<path fill="none" stroke="black" d="M649,-122.11C649,-141.34 649,-169 649,-169 649,-169 466.77,-169 466.77,-169"/>
|
||||
<polygon fill="black" stroke="black" points="466.77,-165.5 456.77,-169 466.77,-172.5 466.77,-165.5"/>
|
||||
</g>
|
||||
<!-- TransactionsRoutingModule -->
|
||||
<g id="node5" class="node">
|
||||
<title>TransactionsRoutingModule</title>
|
||||
<polygon fill="#8dd3c7" stroke="black" points="200.2,-122 197.2,-126 176.2,-126 173.2,-122 23.8,-122 23.8,-86 200.2,-86 200.2,-122"/>
|
||||
<text text-anchor="middle" x="112" y="-99.8" font-family="Times,serif" font-size="14.00">TransactionsRoutingModule</text>
|
||||
<polygon fill="#8dd3c7" stroke="black" points="582.2,-122 579.2,-126 558.2,-126 555.2,-122 405.8,-122 405.8,-86 582.2,-86 582.2,-122"/>
|
||||
<text text-anchor="middle" x="494" y="-99.8" font-family="Times,serif" font-size="14.00">TransactionsRoutingModule</text>
|
||||
</g>
|
||||
<!-- TransactionsRoutingModule->TransactionsModule -->
|
||||
<g id="edge4" class="edge">
|
||||
<title>TransactionsRoutingModule->TransactionsModule</title>
|
||||
<path fill="none" stroke="black" d="M112,-122.11C112,-141.34 112,-169 112,-169 112,-169 265.38,-169 265.38,-169"/>
|
||||
<polygon fill="black" stroke="black" points="265.38,-172.5 275.38,-169 265.38,-165.5 265.38,-172.5"/>
|
||||
<path fill="none" stroke="black" d="M431.22,-122.11C431.22,-122.11 431.22,-140.99 431.22,-140.99"/>
|
||||
<polygon fill="black" stroke="black" points="427.72,-140.99 431.22,-150.99 434.72,-140.99 427.72,-140.99"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 6.3 KiB |
@ -130,7 +130,7 @@
|
||||
<div class="tsd-signature tsd-kind-icon">actions<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">{ </span>action<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span>approval<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">; </span>id<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">; </span>role<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span>user<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> }</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol"> = ...</span></div>
|
||||
<aside class="tsd-sources">
|
||||
<ul>
|
||||
<li>Defined in src/testing/user-service-stub.ts:12</li>
|
||||
<li>Defined in src/testing/user-service-stub.ts:72</li>
|
||||
</ul>
|
||||
</aside>
|
||||
</section>
|
||||
@ -157,7 +157,7 @@
|
||||
<li class="tsd-description">
|
||||
<aside class="tsd-sources">
|
||||
<ul>
|
||||
<li>Defined in src/testing/user-service-stub.ts:71</li>
|
||||
<li>Defined in src/testing/user-service-stub.ts:134</li>
|
||||
</ul>
|
||||
</aside>
|
||||
<h4 class="tsd-parameters-title">Parameters</h4>
|
||||
@ -180,7 +180,7 @@
|
||||
<li class="tsd-description">
|
||||
<aside class="tsd-sources">
|
||||
<ul>
|
||||
<li>Defined in src/testing/user-service-stub.ts:61</li>
|
||||
<li>Defined in src/testing/user-service-stub.ts:124</li>
|
||||
</ul>
|
||||
</aside>
|
||||
<h4 class="tsd-parameters-title">Parameters</h4>
|
||||
@ -203,7 +203,7 @@
|
||||
<li class="tsd-description">
|
||||
<aside class="tsd-sources">
|
||||
<ul>
|
||||
<li>Defined in src/testing/user-service-stub.ts:37</li>
|
||||
<li>Defined in src/testing/user-service-stub.ts:103</li>
|
||||
</ul>
|
||||
</aside>
|
||||
<h4 class="tsd-parameters-title">Parameters</h4>
|
||||
@ -226,7 +226,7 @@
|
||||
<li class="tsd-description">
|
||||
<aside class="tsd-sources">
|
||||
<ul>
|
||||
<li>Defined in src/testing/user-service-stub.ts:21</li>
|
||||
<li>Defined in src/testing/user-service-stub.ts:87</li>
|
||||
</ul>
|
||||
</aside>
|
||||
<h4 class="tsd-parameters-title">Parameters</h4>
|
||||
|
@ -83,7 +83,7 @@
|
||||
<section class="tsd-panel tsd-member tsd-kind-variable tsd-parent-kind-module">
|
||||
<a name="environment" class="tsd-anchor"></a>
|
||||
<h3><span class="tsd-flag ts-flagConst">Const</span> environment</h3>
|
||||
<div class="tsd-signature tsd-kind-icon">environment<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">{ </span>bloxbergChainId<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">; </span>cicAuthUrl<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span>cicCacheUrl<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span>cicMetaUrl<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span>cicUssdUrl<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span>logLevel<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">NgxLoggerLevel</span><span class="tsd-signature-symbol">; </span>loggingUrl<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span>production<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">; </span>publicKeysUrl<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span>registryAddress<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span>serverLogLevel<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">NgxLoggerLevel</span><span class="tsd-signature-symbol">; </span>trustedDeclaratorAddress<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span>web3Provider<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> }</span><span class="tsd-signature-symbol"> = ...</span></div>
|
||||
<div class="tsd-signature tsd-kind-icon">environment<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">{ </span>bloxbergChainId<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">; </span>cicCacheUrl<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span>cicMetaUrl<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span>cicUssdUrl<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span>logLevel<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">NgxLoggerLevel</span><span class="tsd-signature-symbol">; </span>loggingUrl<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span>production<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">; </span>publicKeysUrl<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span>registryAddress<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span>serverLogLevel<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">NgxLoggerLevel</span><span class="tsd-signature-symbol">; </span>trustedDeclaratorAddress<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span>web3Provider<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> }</span><span class="tsd-signature-symbol"> = ...</span></div>
|
||||
<aside class="tsd-sources">
|
||||
<ul>
|
||||
<li>Defined in src/environments/environment.dev.ts:3</li>
|
||||
@ -95,9 +95,6 @@
|
||||
<li class="tsd-parameter">
|
||||
<h5>bloxberg<wbr>Chain<wbr>Id<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span></h5>
|
||||
</li>
|
||||
<li class="tsd-parameter">
|
||||
<h5>cic<wbr>Auth<wbr>Url<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span></h5>
|
||||
</li>
|
||||
<li class="tsd-parameter">
|
||||
<h5>cic<wbr>Cache<wbr>Url<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span></h5>
|
||||
</li>
|
||||
|
@ -83,7 +83,7 @@
|
||||
<section class="tsd-panel tsd-member tsd-kind-variable tsd-parent-kind-module">
|
||||
<a name="environment" class="tsd-anchor"></a>
|
||||
<h3><span class="tsd-flag ts-flagConst">Const</span> environment</h3>
|
||||
<div class="tsd-signature tsd-kind-icon">environment<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">{ </span>bloxbergChainId<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">; </span>cicAuthUrl<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span>cicCacheUrl<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span>cicMetaUrl<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span>cicUssdUrl<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span>logLevel<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">NgxLoggerLevel</span><span class="tsd-signature-symbol">; </span>loggingUrl<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span>production<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">; </span>publicKeysUrl<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span>registryAddress<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span>serverLogLevel<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">NgxLoggerLevel</span><span class="tsd-signature-symbol">; </span>trustedDeclaratorAddress<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span>web3Provider<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> }</span><span class="tsd-signature-symbol"> = ...</span></div>
|
||||
<div class="tsd-signature tsd-kind-icon">environment<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">{ </span>bloxbergChainId<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">; </span>cicCacheUrl<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span>cicMetaUrl<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span>cicUssdUrl<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span>logLevel<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">NgxLoggerLevel</span><span class="tsd-signature-symbol">; </span>loggingUrl<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span>production<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">; </span>publicKeysUrl<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span>registryAddress<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span>serverLogLevel<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">NgxLoggerLevel</span><span class="tsd-signature-symbol">; </span>trustedDeclaratorAddress<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span>web3Provider<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> }</span><span class="tsd-signature-symbol"> = ...</span></div>
|
||||
<aside class="tsd-sources">
|
||||
<ul>
|
||||
<li>Defined in src/environments/environment.prod.ts:3</li>
|
||||
@ -95,9 +95,6 @@
|
||||
<li class="tsd-parameter">
|
||||
<h5>bloxberg<wbr>Chain<wbr>Id<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span></h5>
|
||||
</li>
|
||||
<li class="tsd-parameter">
|
||||
<h5>cic<wbr>Auth<wbr>Url<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span></h5>
|
||||
</li>
|
||||
<li class="tsd-parameter">
|
||||
<h5>cic<wbr>Cache<wbr>Url<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span></h5>
|
||||
</li>
|
||||
|
23332
package-lock.json
generated
18
package.json
@ -10,8 +10,8 @@
|
||||
"build:prod": "ng build --prod",
|
||||
"start:pwa": "npm run build:prod && http-server -p 4200 dist/cic-staff-client",
|
||||
"test": "ng test",
|
||||
"format:check": "prettier --config ./.prettierrc --list-different \"src/{app,environments,assets}/**/*.{ts,js,json,css,scss}\"",
|
||||
"format:refactor": "prettier --config ./.prettierrc --write \"src/{app,environments,assets}/**/*.{ts,js,json,css,scss}\"",
|
||||
"format:check": "prettier --config ./.prettierrc --list-different src/**/*.{ts,js,json,css,scss,html}",
|
||||
"format:refactor": "prettier --config ./.prettierrc --write src/**/*.{ts,js,json,css,scss,html}",
|
||||
"format:fix": "pretty-quick --staged",
|
||||
"format:lint": "npm run format:refactor && npm run lint",
|
||||
"lint": "ng lint",
|
||||
@ -73,7 +73,8 @@
|
||||
"karma-jasmine": "~4.0.0",
|
||||
"karma-jasmine-html-reporter": "^1.5.0",
|
||||
"karma-junit-reporter": "^2.0.1",
|
||||
"prettier": "^2.3.0",
|
||||
"lint-staged": "^11.0.0",
|
||||
"prettier": "^2.3.1",
|
||||
"pretty-quick": "^3.1.0",
|
||||
"protractor": "~7.0.0",
|
||||
"secp256k1": "^4.0.2",
|
||||
@ -86,9 +87,18 @@
|
||||
"typescript": "~4.0.2",
|
||||
"yargs": "^13.3.2"
|
||||
},
|
||||
"lint-staged": {
|
||||
"src/**/*.{js,ts,scss,md,html,json}": [
|
||||
"prettier --write",
|
||||
"git add"
|
||||
],
|
||||
"*.scss": [
|
||||
"stylelint src/**/*.scss"
|
||||
]
|
||||
},
|
||||
"husky": {
|
||||
"hooks": {
|
||||
"pre-commit": "pretty-quick --staged & ng lint"
|
||||
"pre-commit": "npx pretty-quick --staged && npm run format:lint && npx lint-staged"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -9,19 +9,24 @@
|
||||
</a>
|
||||
</mat-card-title>
|
||||
<div id="one" style="display: block" class="card-body p-4">
|
||||
|
||||
<div class="text-center w-75 m-auto">
|
||||
<h4 class="text-dark-50 text-center font-weight-bold">Add Private Key</h4>
|
||||
</div>
|
||||
|
||||
<form [formGroup]="keyForm" (ngSubmit)="onSubmit()">
|
||||
|
||||
<mat-form-field appearance="outline" class="full-width">
|
||||
<mat-label>Private Key</mat-label>
|
||||
<textarea matInput style="height: 30rem" formControlName="key" placeholder="Enter your private key..."
|
||||
[errorStateMatcher]="matcher"></textarea>
|
||||
<textarea
|
||||
matInput
|
||||
style="height: 30rem"
|
||||
formControlName="key"
|
||||
placeholder="Enter your private key..."
|
||||
[errorStateMatcher]="matcher"
|
||||
></textarea>
|
||||
<div *ngIf="submitted && keyFormStub.key.errors" class="invalid-feedback">
|
||||
<mat-error *ngIf="keyFormStub.key.errors.required">Private Key is required.</mat-error>
|
||||
<mat-error *ngIf="keyFormStub.key.errors.required"
|
||||
>Private Key is required.</mat-error
|
||||
>
|
||||
</div>
|
||||
</mat-form-field>
|
||||
|
||||
@ -29,20 +34,24 @@
|
||||
<span *ngIf="loading" class="spinner-border spinner-border-sm mr-1"></span>
|
||||
Add Key
|
||||
</button>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
<div id="two" style="display: none" class="card-body p-4 align-items-center">
|
||||
|
||||
<div class="text-center w-75 m-auto">
|
||||
<h4 id="state" class="text-dark-50 text-center font-weight-bold"></h4>
|
||||
<button mat-raised-button matRipple color="primary" type="submit" (click)="login()"> Login </button>
|
||||
<button mat-raised-button matRipple color="primary" type="submit" (click)="login()">
|
||||
Login
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="row mt-3">
|
||||
<div class="col-12 text-center">
|
||||
<p class="text-muted">Change private key? <a (click)="switchWindows()" class="text-muted ml-1"><b>Enter private key</b></a></p>
|
||||
</div> <!-- end col-->
|
||||
<p class="text-muted">
|
||||
Change private key?
|
||||
<a (click)="switchWindows()" class="text-muted ml-1"><b>Enter private key</b></a>
|
||||
</p>
|
||||
</div>
|
||||
<!-- end col-->
|
||||
</div>
|
||||
<!-- end row -->
|
||||
</div>
|
||||
|
@ -14,30 +14,44 @@
|
||||
<ol class="breadcrumb">
|
||||
<li class="breadcrumb-item"><a routerLink="/home">Home</a></li>
|
||||
<li class="breadcrumb-item"><a routerLink="/accounts">Accounts</a></li>
|
||||
<li *ngIf="account" class="breadcrumb-item active" aria-current="page">{{account?.vcard?.fn[0].value}}</li>
|
||||
<li *ngIf="account" class="breadcrumb-item active" aria-current="page">
|
||||
{{ account?.vcard?.fn[0].value }}
|
||||
</li>
|
||||
</ol>
|
||||
</nav>
|
||||
<div *ngIf="!account" class="text-center">
|
||||
<div class="spinner-grow text-primary m-1" role="status" style="width: 3rem; height: 3rem;">
|
||||
<div class="spinner-grow text-primary m-1" role="status" style="width: 3rem; height: 3rem">
|
||||
<span class="sr-only">Loading...</span>
|
||||
</div>
|
||||
<div class="spinner-grow text-primary m-1" role="status" style="width: 3rem; height: 3rem;">
|
||||
<div class="spinner-grow text-primary m-1" role="status" style="width: 3rem; height: 3rem">
|
||||
<span class="sr-only">Loading...</span>
|
||||
</div>
|
||||
<div class="spinner-grow text-primary m-1" role="status" style="width: 3rem; height: 3rem;">
|
||||
<div class="spinner-grow text-primary m-1" role="status" style="width: 3rem; height: 3rem">
|
||||
<span class="sr-only">Loading...</span>
|
||||
</div>
|
||||
</div>
|
||||
<div *ngIf="account" class="card mb-3">
|
||||
<div class="row card-body">
|
||||
<h3>
|
||||
<strong> {{account?.vcard?.fn[0].value}} </strong>
|
||||
<strong> {{ account?.vcard?.fn[0].value }} </strong>
|
||||
</h3>
|
||||
<span class="ml-auto"><strong>Balance:</strong> {{account?.balance | tokenRatio}} {{ tokenSymbol | uppercase }}</span>
|
||||
<span class="ml-2"><strong>Created:</strong> {{account?.date_registered | unixDate}}</span>
|
||||
<span class="ml-2"><strong>Address:</strong>
|
||||
<a href="{{bloxbergLink}}" target="_blank"> {{accountAddress}} </a>
|
||||
<img src="assets/images/checklist.svg" class="ml-2" height="20rem" (click)="copyAddress()" alt="Copy">
|
||||
<span class="ml-auto"
|
||||
><strong>Balance:</strong> {{ account?.balance | tokenRatio }}
|
||||
{{ tokenSymbol | uppercase }}</span
|
||||
>
|
||||
<span class="ml-2"
|
||||
><strong>Created:</strong> {{ account?.date_registered | unixDate }}</span
|
||||
>
|
||||
<span class="ml-2"
|
||||
><strong>Address:</strong>
|
||||
<a href="{{ bloxbergLink }}" target="_blank"> {{ accountAddress }} </a>
|
||||
<img
|
||||
src="assets/images/checklist.svg"
|
||||
class="ml-2"
|
||||
height="20rem"
|
||||
(click)="copyAddress()"
|
||||
alt="Copy"
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
@ -45,85 +59,145 @@
|
||||
<div class="card-body">
|
||||
<form [formGroup]="accountInfoForm" (ngSubmit)="saveInfo()">
|
||||
<div class="row form-inline">
|
||||
|
||||
<div class="col-md-6 col-lg-4">
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label>First Name: *</mat-label>
|
||||
<input matInput type="text" id="firstName" placeholder="{{account?.vcard?.fn[0].value.split(' ')[0]}}"
|
||||
value="{{account?.vcard?.fn[0].value.split(' ')[0]}}" formControlName="firstName" [errorStateMatcher]="matcher">
|
||||
<mat-error *ngIf="submitted && accountInfoFormStub.firstName.errors">First Name is required.</mat-error>
|
||||
<input
|
||||
matInput
|
||||
type="text"
|
||||
id="firstName"
|
||||
placeholder="{{ account?.vcard?.fn[0].value.split(' ')[0] }}"
|
||||
value="{{ account?.vcard?.fn[0].value.split(' ')[0] }}"
|
||||
formControlName="firstName"
|
||||
[errorStateMatcher]="matcher"
|
||||
/>
|
||||
<mat-error *ngIf="submitted && accountInfoFormStub.firstName.errors"
|
||||
>First Name is required.</mat-error
|
||||
>
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 col-lg-4">
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label>Last Name(s): *</mat-label>
|
||||
<input matInput type="text" id="lastName" placeholder="{{account?.vcard?.fn[0].value.split(' ').slice(1).join(' ')}}"
|
||||
value="{{account?.vcard?.fn[0].value.split(' ').slice(1).join(' ')}}" formControlName="lastName" [errorStateMatcher]="matcher">
|
||||
<mat-error *ngIf="submitted && accountInfoFormStub.lastName.errors">Last Name is required.</mat-error>
|
||||
<input
|
||||
matInput
|
||||
type="text"
|
||||
id="lastName"
|
||||
placeholder="{{ account?.vcard?.fn[0].value.split(' ').slice(1).join(' ') }}"
|
||||
value="{{ account?.vcard?.fn[0].value.split(' ').slice(1).join(' ') }}"
|
||||
formControlName="lastName"
|
||||
[errorStateMatcher]="matcher"
|
||||
/>
|
||||
<mat-error *ngIf="submitted && accountInfoFormStub.lastName.errors"
|
||||
>Last Name is required.</mat-error
|
||||
>
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 col-lg-4">
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label>Phone Number: </mat-label>
|
||||
<input matInput type="text" id="phoneNumber" placeholder="{{account?.vcard?.tel[0].value}}"
|
||||
value="{{account?.vcard?.tel[0].value}}" formControlName="phoneNumber" [errorStateMatcher]="matcher">
|
||||
<mat-error *ngIf="submitted && accountInfoFormStub.phoneNumber.errors">Phone Number is required.</mat-error>
|
||||
<input
|
||||
matInput
|
||||
type="text"
|
||||
id="phoneNumber"
|
||||
placeholder="{{ account?.vcard?.tel[0].value }}"
|
||||
value="{{ account?.vcard?.tel[0].value }}"
|
||||
formControlName="phoneNumber"
|
||||
[errorStateMatcher]="matcher"
|
||||
/>
|
||||
<mat-error *ngIf="submitted && accountInfoFormStub.phoneNumber.errors"
|
||||
>Phone Number is required.</mat-error
|
||||
>
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 col-lg-4">
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label>Age: </mat-label>
|
||||
<input matInput type="text" id="age" placeholder="{{account?.age}}"
|
||||
value="{{account?.age}}" formControlName="age" [errorStateMatcher]="matcher">
|
||||
<mat-error *ngIf="submitted && accountInfoFormStub.age.errors">Age is required.</mat-error>
|
||||
<input
|
||||
matInput
|
||||
type="text"
|
||||
id="age"
|
||||
placeholder="{{ account?.age }}"
|
||||
value="{{ account?.age }}"
|
||||
formControlName="age"
|
||||
[errorStateMatcher]="matcher"
|
||||
/>
|
||||
<mat-error *ngIf="submitted && accountInfoFormStub.age.errors"
|
||||
>Age is required.</mat-error
|
||||
>
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 col-lg-4">
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label> ACCOUNT TYPE: </mat-label>
|
||||
<mat-select id="accountType" [(value)]="account.type" formControlName="type"
|
||||
[errorStateMatcher]="matcher">
|
||||
<mat-select
|
||||
id="accountType"
|
||||
[(value)]="account.type"
|
||||
formControlName="type"
|
||||
[errorStateMatcher]="matcher"
|
||||
>
|
||||
<mat-option *ngFor="let accountType of accountTypes" [value]="accountType">
|
||||
{{accountType | uppercase}}
|
||||
{{ accountType | uppercase }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="submitted && accountInfoFormStub.type.errors">Type is required.</mat-error>
|
||||
<mat-error *ngIf="submitted && accountInfoFormStub.type.errors"
|
||||
>Type is required.</mat-error
|
||||
>
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 col-lg-4">
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label>Bio: </mat-label>
|
||||
<input matInput type="text" id="bio" placeholder="{{account?.products}}" value="{{account?.products}}"
|
||||
formControlName="bio" [errorStateMatcher]="matcher">
|
||||
<mat-error *ngIf="submitted && accountInfoFormStub.bio.errors">Bio is required.</mat-error>
|
||||
<input
|
||||
matInput
|
||||
type="text"
|
||||
id="bio"
|
||||
placeholder="{{ account?.products }}"
|
||||
value="{{ account?.products }}"
|
||||
formControlName="bio"
|
||||
[errorStateMatcher]="matcher"
|
||||
/>
|
||||
<mat-error *ngIf="submitted && accountInfoFormStub.bio.errors"
|
||||
>Bio is required.</mat-error
|
||||
>
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 col-lg-4">
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label> GENDER: </mat-label>
|
||||
<mat-select id="gender" [(value)]="account.gender" formControlName="gender"
|
||||
[errorStateMatcher]="matcher">
|
||||
<mat-select
|
||||
id="gender"
|
||||
[(value)]="account.gender"
|
||||
formControlName="gender"
|
||||
[errorStateMatcher]="matcher"
|
||||
>
|
||||
<mat-option *ngFor="let gender of genders" [value]="gender">
|
||||
{{gender | uppercase}}
|
||||
{{ gender | uppercase }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="submitted && accountInfoFormStub.gender.errors">Gender is required.</mat-error>
|
||||
<mat-error *ngIf="submitted && accountInfoFormStub.gender.errors"
|
||||
>Gender is required.</mat-error
|
||||
>
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 col-lg-4">
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label> BUSINESS CATEGORY: </mat-label>
|
||||
<mat-select id="businessCategory" [(value)]="account.category" formControlName="businessCategory"
|
||||
[errorStateMatcher]="matcher">
|
||||
<mat-select
|
||||
id="businessCategory"
|
||||
[(value)]="account.category"
|
||||
formControlName="businessCategory"
|
||||
[errorStateMatcher]="matcher"
|
||||
>
|
||||
<mat-option *ngFor="let category of categories" [value]="category">
|
||||
{{category | titlecase}}
|
||||
{{ category | titlecase }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="submitted && accountInfoFormStub.businessCategory.errors">
|
||||
@ -135,9 +209,15 @@
|
||||
<div class="col-md-6 col-lg-4">
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label>User Location: </mat-label>
|
||||
<input matInput type="text" id="userLocation" placeholder="{{account?.location.area_name}}"
|
||||
value="{{account?.location.area_name}}" formControlName="userLocation"
|
||||
[errorStateMatcher]="matcher">
|
||||
<input
|
||||
matInput
|
||||
type="text"
|
||||
id="userLocation"
|
||||
placeholder="{{ account?.location.area_name }}"
|
||||
value="{{ account?.location.area_name }}"
|
||||
formControlName="userLocation"
|
||||
[errorStateMatcher]="matcher"
|
||||
/>
|
||||
<mat-error *ngIf="submitted && accountInfoFormStub.userLocation.errors">
|
||||
User Location is required.
|
||||
</mat-error>
|
||||
@ -147,50 +227,82 @@
|
||||
<div class="col-md-6 col-lg-4">
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label> LOCATION: </mat-label>
|
||||
<mat-select id="location" [(value)]="account.location.area" formControlName="location"
|
||||
[errorStateMatcher]="matcher">
|
||||
<mat-select
|
||||
id="location"
|
||||
[(value)]="account.location.area"
|
||||
formControlName="location"
|
||||
[errorStateMatcher]="matcher"
|
||||
>
|
||||
<mat-option *ngFor="let area of areaNames" [value]="area">
|
||||
{{area | uppercase}}
|
||||
{{ area | uppercase }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="submitted && accountInfoFormStub.location.errors">Location is required.</mat-error>
|
||||
<mat-error *ngIf="submitted && accountInfoFormStub.location.errors"
|
||||
>Location is required.</mat-error
|
||||
>
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 col-lg-4">
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label> LOCATION TYPE: </mat-label>
|
||||
<mat-select id="locationType" [(value)]="account.location.area_type" formControlName="locationType"
|
||||
[errorStateMatcher]="matcher">
|
||||
<mat-select
|
||||
id="locationType"
|
||||
[(value)]="account.location.area_type"
|
||||
formControlName="locationType"
|
||||
[errorStateMatcher]="matcher"
|
||||
>
|
||||
<mat-option *ngFor="let type of areaTypes" [value]="type">
|
||||
{{type | uppercase}}
|
||||
{{ type | uppercase }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="submitted && accountInfoFormStub.locationType.errors">Location Type is required.</mat-error>
|
||||
<mat-error *ngIf="submitted && accountInfoFormStub.locationType.errors"
|
||||
>Location Type is required.</mat-error
|
||||
>
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 col-lg-4">
|
||||
<button mat-raised-button color="primary" type="button" class="btn btn-outline-primary mb-3">
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
type="button"
|
||||
class="btn btn-outline-primary mb-3"
|
||||
>
|
||||
Add User KYC
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 col-lg-4">
|
||||
<button mat-raised-button color="primary" type="button" class="btn btn-outline-success mb-3"
|
||||
(click)="resetPin()">
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
type="button"
|
||||
class="btn btn-outline-success mb-3"
|
||||
(click)="resetPin()"
|
||||
>
|
||||
Reset Pin
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 col-lg-4">
|
||||
<button mat-raised-button color="warn" type="button" class="btn btn-outline-danger mb-3">
|
||||
<button
|
||||
mat-raised-button
|
||||
color="warn"
|
||||
type="button"
|
||||
class="btn btn-outline-danger mb-3"
|
||||
>
|
||||
Delete User
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 col-lg-4">
|
||||
<button mat-raised-button color="primary" type="submit" class="btn btn-outline-primary">
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
type="submit"
|
||||
class="btn btn-outline-primary"
|
||||
>
|
||||
SAVE DETAILS
|
||||
</button>
|
||||
</div>
|
||||
@ -200,13 +312,13 @@
|
||||
</div>
|
||||
|
||||
<div class="card mb-3">
|
||||
<mat-card-title class="card-header">
|
||||
USER
|
||||
</mat-card-title>
|
||||
<mat-card-title class="card-header"> USER </mat-card-title>
|
||||
<div class="card-body">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-striped table-bordered table-hover">
|
||||
<caption> 1 user </caption>
|
||||
<caption>
|
||||
1 user
|
||||
</caption>
|
||||
<thead class="thead-dark">
|
||||
<tr>
|
||||
<th scope="col">NAME</th>
|
||||
@ -217,12 +329,12 @@
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>{{account?.vcard?.fn[0].value}}</td>
|
||||
<td>{{account?.balance | tokenRatio}} {{ tokenSymbol | uppercase }}</td>
|
||||
<td>{{account?.date_registered | unixDate}}</td>
|
||||
<td>{{ account?.vcard?.fn[0].value }}</td>
|
||||
<td>{{ account?.balance | tokenRatio }} {{ tokenSymbol | uppercase }}</td>
|
||||
<td>{{ account?.date_registered | unixDate }}</td>
|
||||
<td>
|
||||
<span class="badge badge-success badge-pill">
|
||||
{{accountStatus}}
|
||||
{{ accountStatus }}
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
@ -234,135 +346,216 @@
|
||||
|
||||
<mat-tab-group *ngIf="account" dynamicHeight mat-align-tabs="start">
|
||||
<mat-tab label="Transactions">
|
||||
<app-transaction-details [transaction]="transaction" (closeWindow)="transaction = $event"></app-transaction-details>
|
||||
<app-transaction-details
|
||||
[transaction]="transaction"
|
||||
(closeWindow)="transaction = $event"
|
||||
></app-transaction-details>
|
||||
<div class="card mt-1">
|
||||
<div class="card-header">
|
||||
<div class="row">
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label> TRANSACTION TYPE </mat-label>
|
||||
<mat-select id="transferSelect" [(value)]="transactionsType" (selectionChange)="filterTransactions()">
|
||||
<mat-select
|
||||
id="transferSelect"
|
||||
[(value)]="transactionsType"
|
||||
(selectionChange)="filterTransactions()"
|
||||
>
|
||||
<mat-option value="all">ALL TRANSFERS</mat-option>
|
||||
<mat-option *ngFor="let transactionType of transactionsTypes" [value]="transactionType">
|
||||
{{transactionType | uppercase}}
|
||||
<mat-option
|
||||
*ngFor="let transactionType of transactionsTypes"
|
||||
[value]="transactionType"
|
||||
>
|
||||
{{ transactionType | uppercase }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
<button mat-raised-button color="primary" type="button" class="btn btn-outline-primary ml-auto mr-2" (click)="downloadCsv(transactions, 'transactions')"> EXPORT </button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
type="button"
|
||||
class="btn btn-outline-primary ml-auto mr-2"
|
||||
(click)="downloadCsv(transactions, 'transactions')"
|
||||
>
|
||||
EXPORT
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label> Filter </mat-label>
|
||||
<input matInput type="text" (keyup)="doTransactionFilter($event.target.value)" placeholder="Filter">
|
||||
<input
|
||||
matInput
|
||||
type="text"
|
||||
(keyup)="doTransactionFilter($event.target.value)"
|
||||
placeholder="Filter"
|
||||
/>
|
||||
<mat-icon matSuffix>search</mat-icon>
|
||||
</mat-form-field>
|
||||
|
||||
<table mat-table class="mat-elevation-z10" [dataSource]="transactionsDataSource" matSort matSortActive="created"
|
||||
#TransactionTableSort="matSort" matSortDirection="asc" matSortDisableClear>
|
||||
|
||||
<table
|
||||
mat-table
|
||||
class="mat-elevation-z10"
|
||||
[dataSource]="transactionsDataSource"
|
||||
matSort
|
||||
matSortActive="created"
|
||||
#TransactionTableSort="matSort"
|
||||
matSortDirection="asc"
|
||||
matSortDisableClear
|
||||
>
|
||||
<ng-container matColumnDef="sender">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> Sender </th>
|
||||
<td mat-cell *matCellDef="let transaction"> {{transaction?.sender?.vcard.fn[0].value || transaction.from}} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>Sender</th>
|
||||
<td mat-cell *matCellDef="let transaction">
|
||||
{{ transaction?.sender?.vcard.fn[0].value || transaction.from }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="recipient">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> Recipient </th>
|
||||
<td mat-cell *matCellDef="let transaction"> {{transaction?.recipient?.vcard.fn[0].value || transaction.to}} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>Recipient</th>
|
||||
<td mat-cell *matCellDef="let transaction">
|
||||
{{ transaction?.recipient?.vcard.fn[0].value || transaction.to }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="value">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> Value </th>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>Value</th>
|
||||
<td mat-cell *matCellDef="let transaction">
|
||||
<span *ngIf="transaction.type == 'transaction'">{{transaction?.value | tokenRatio}} {{ tokenSymbol | uppercase }}</span>
|
||||
<span *ngIf="transaction.type == 'conversion'">{{transaction?.toValue | tokenRatio}} {{ tokenSymbol | uppercase }}</span>
|
||||
<span *ngIf="transaction.type == 'transaction'"
|
||||
>{{ transaction?.value | tokenRatio }} {{ tokenSymbol | uppercase }}</span
|
||||
>
|
||||
<span *ngIf="transaction.type == 'conversion'"
|
||||
>{{ transaction?.toValue | tokenRatio }} {{ tokenSymbol | uppercase }}</span
|
||||
>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="created">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> Created </th>
|
||||
<td mat-cell *matCellDef="let transaction"> {{transaction?.tx.timestamp | unixDate}} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>Created</th>
|
||||
<td mat-cell *matCellDef="let transaction">
|
||||
{{ transaction?.tx.timestamp | unixDate }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="type">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> TYPE </th>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>TYPE</th>
|
||||
<td mat-cell *matCellDef="let transaction">
|
||||
<span class="badge badge-success badge-pill"> {{transaction?.type}} </span>
|
||||
<span class="badge badge-success badge-pill"> {{ transaction?.type }} </span>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="transactionsDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let transaction; columns: transactionsDisplayedColumns" matRipple
|
||||
(click)="viewTransaction(transaction)"></tr>
|
||||
<tr
|
||||
mat-row
|
||||
*matRowDef="let transaction; columns: transactionsDisplayedColumns"
|
||||
matRipple
|
||||
(click)="viewTransaction(transaction)"
|
||||
></tr>
|
||||
</table>
|
||||
|
||||
<mat-paginator #TransactionTablePaginator="matPaginator" [pageSize]="transactionsDefaultPageSize"
|
||||
[pageSizeOptions]="transactionsPageSizeOptions" showFirstLastButtons></mat-paginator>
|
||||
|
||||
<mat-paginator
|
||||
#TransactionTablePaginator="matPaginator"
|
||||
[pageSize]="transactionsDefaultPageSize"
|
||||
[pageSizeOptions]="transactionsPageSizeOptions"
|
||||
showFirstLastButtons
|
||||
></mat-paginator>
|
||||
</div>
|
||||
</div>
|
||||
</mat-tab>
|
||||
|
||||
<mat-tab label="Users">
|
||||
<div class="card mt-1">
|
||||
<mat-card-title class="card-header">
|
||||
Accounts
|
||||
</mat-card-title>
|
||||
<mat-card-title class="card-header"> Accounts </mat-card-title>
|
||||
<div class="card-body">
|
||||
<div class="row card-header">
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label> ACCOUNT TYPE </mat-label>
|
||||
<mat-select id="typeSelect" [(value)]="accountsType" (selectionChange)="filterAccounts()">
|
||||
<mat-select
|
||||
id="typeSelect"
|
||||
[(value)]="accountsType"
|
||||
(selectionChange)="filterAccounts()"
|
||||
>
|
||||
<mat-option value="all">ALL</mat-option>
|
||||
<mat-option *ngFor="let accountType of accountTypes" [value]="accountType">
|
||||
{{accountType | uppercase}}
|
||||
{{ accountType | uppercase }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
<button mat-raised-button color="primary" type="button" class="btn btn-outline-primary ml-auto mr-2" (click)="downloadCsv(accounts, 'accounts')"> EXPORT </button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
type="button"
|
||||
class="btn btn-outline-primary ml-auto mr-2"
|
||||
(click)="downloadCsv(accounts, 'accounts')"
|
||||
>
|
||||
EXPORT
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label> Filter </mat-label>
|
||||
<input matInput type="text" (keyup)="doUserFilter($event.target.value)" placeholder="Filter">
|
||||
<input
|
||||
matInput
|
||||
type="text"
|
||||
(keyup)="doUserFilter($event.target.value)"
|
||||
placeholder="Filter"
|
||||
/>
|
||||
<mat-icon matSuffix>search</mat-icon>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-table class="mat-elevation-z10" [dataSource]="userDataSource" matSort #UserTableSort="matSort"
|
||||
matSortActive="created" matSortDirection="desc" matSortDisableClear>
|
||||
|
||||
<mat-table
|
||||
class="mat-elevation-z10"
|
||||
[dataSource]="userDataSource"
|
||||
matSort
|
||||
#UserTableSort="matSort"
|
||||
matSortActive="created"
|
||||
matSortDirection="desc"
|
||||
matSortDisableClear
|
||||
>
|
||||
<ng-container matColumnDef="name">
|
||||
<mat-header-cell *matHeaderCellDef mat-sort-header> NAME </mat-header-cell>
|
||||
<mat-cell *matCellDef="let user"> {{user?.vcard.fn[0].value}} </mat-cell>
|
||||
<mat-cell *matCellDef="let user"> {{ user?.vcard.fn[0].value }} </mat-cell>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="phone">
|
||||
<mat-header-cell *matHeaderCellDef mat-sort-header> PHONE NUMBER </mat-header-cell>
|
||||
<mat-cell *matCellDef="let user"> {{user?.vcard.tel[0].value}} </mat-cell>
|
||||
<mat-header-cell *matHeaderCellDef mat-sort-header>
|
||||
PHONE NUMBER
|
||||
</mat-header-cell>
|
||||
<mat-cell *matCellDef="let user"> {{ user?.vcard.tel[0].value }} </mat-cell>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="created">
|
||||
<mat-header-cell *matHeaderCellDef mat-sort-header> CREATED </mat-header-cell>
|
||||
<mat-cell *matCellDef="let user"> {{user?.date_registered | unixDate}} </mat-cell>
|
||||
<mat-cell *matCellDef="let user">
|
||||
{{ user?.date_registered | unixDate }}
|
||||
</mat-cell>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="balance">
|
||||
<mat-header-cell *matHeaderCellDef mat-sort-header> BALANCE </mat-header-cell>
|
||||
<mat-cell *matCellDef="let user"> {{user?.balance | tokenRatio}} {{tokenSymbol | uppercase}} </mat-cell>
|
||||
<mat-cell *matCellDef="let user">
|
||||
{{ user?.balance | tokenRatio }} {{ tokenSymbol | uppercase }}
|
||||
</mat-cell>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="location">
|
||||
<mat-header-cell *matHeaderCellDef mat-sort-header> LOCATION </mat-header-cell>
|
||||
<mat-cell *matCellDef="let user"> {{user?.location.area_name}} </mat-cell>
|
||||
<mat-cell *matCellDef="let user"> {{ user?.location.area_name }} </mat-cell>
|
||||
</ng-container>
|
||||
|
||||
<mat-header-row *matHeaderRowDef=userDisplayedColumns></mat-header-row>
|
||||
<mat-row *matRowDef="let account; columns: userDisplayedColumns" (click)="viewAccount(account)"
|
||||
matRipple></mat-row>
|
||||
<mat-header-row *matHeaderRowDef="userDisplayedColumns"></mat-header-row>
|
||||
<mat-row
|
||||
*matRowDef="let account; columns: userDisplayedColumns"
|
||||
(click)="viewAccount(account)"
|
||||
matRipple
|
||||
></mat-row>
|
||||
</mat-table>
|
||||
|
||||
<mat-paginator #UserTablePaginator="matPaginator" [pageSize]="usersDefaultPageSize"
|
||||
[pageSizeOptions]="usersPageSizeOptions" showFirstLastButtons></mat-paginator>
|
||||
<mat-paginator
|
||||
#UserTablePaginator="matPaginator"
|
||||
[pageSize]="usersDefaultPageSize"
|
||||
[pageSizeOptions]="usersPageSizeOptions"
|
||||
showFirstLastButtons
|
||||
></mat-paginator>
|
||||
</div>
|
||||
</div>
|
||||
</mat-tab>
|
||||
|
@ -18,33 +18,61 @@
|
||||
</ol>
|
||||
</nav>
|
||||
<div class="card">
|
||||
<mat-card-title class="card-header">
|
||||
Accounts
|
||||
</mat-card-title>
|
||||
<mat-card-title class="card-header"> Accounts </mat-card-title>
|
||||
<div class="card-body">
|
||||
<mat-tab-group>
|
||||
<mat-tab label="Phone Number">
|
||||
<form [formGroup]="phoneSearchForm" (ngSubmit)="onPhoneSearch()">
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label> Search </mat-label>
|
||||
<input matInput type="text" placeholder="Search by phone number" formControlName="phoneNumber" [errorStateMatcher]="matcher">
|
||||
<mat-error *ngIf="phoneSearchSubmitted && phoneSearchFormStub.phoneNumber.errors">Phone Number is required.</mat-error>
|
||||
<input
|
||||
matInput
|
||||
type="text"
|
||||
placeholder="Search by phone number"
|
||||
formControlName="phoneNumber"
|
||||
[errorStateMatcher]="matcher"
|
||||
/>
|
||||
<mat-error *ngIf="phoneSearchSubmitted && phoneSearchFormStub.phoneNumber.errors"
|
||||
>Phone Number is required.</mat-error
|
||||
>
|
||||
<mat-icon matSuffix>phone</mat-icon>
|
||||
<mat-hint>Phone Number</mat-hint>
|
||||
</mat-form-field>
|
||||
<button mat-raised-button color="primary" type="submit" class="btn btn-outline-primary ml-3"> SEARCH </button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
type="submit"
|
||||
class="btn btn-outline-primary ml-3"
|
||||
>
|
||||
SEARCH
|
||||
</button>
|
||||
</form>
|
||||
</mat-tab>
|
||||
<mat-tab label="Account Address">
|
||||
<form [formGroup]="addressSearchForm" (ngSubmit)="onAddressSearch()">
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label> Search </mat-label>
|
||||
<input matInput type="text" placeholder="Search by account address" formControlName="address" [errorStateMatcher]="matcher">
|
||||
<mat-error *ngIf="addressSearchSubmitted && addressSearchFormStub.address.errors">Account Address is required.</mat-error>
|
||||
<input
|
||||
matInput
|
||||
type="text"
|
||||
placeholder="Search by account address"
|
||||
formControlName="address"
|
||||
[errorStateMatcher]="matcher"
|
||||
/>
|
||||
<mat-error *ngIf="addressSearchSubmitted && addressSearchFormStub.address.errors"
|
||||
>Account Address is required.</mat-error
|
||||
>
|
||||
<mat-icon matSuffix>view_in_ar</mat-icon>
|
||||
<mat-hint>Account Address</mat-hint>
|
||||
</mat-form-field>
|
||||
<button mat-raised-button color="primary" type="submit" class="btn btn-outline-primary ml-3"> SEARCH </button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
type="submit"
|
||||
class="btn btn-outline-primary ml-3"
|
||||
>
|
||||
SEARCH
|
||||
</button>
|
||||
</form>
|
||||
</mat-tab>
|
||||
</mat-tab-group>
|
||||
|
@ -17,63 +17,99 @@
|
||||
</ol>
|
||||
</nav>
|
||||
<div class="card">
|
||||
<mat-card-title class="card-header">
|
||||
Accounts
|
||||
</mat-card-title>
|
||||
<mat-card-title class="card-header"> Accounts </mat-card-title>
|
||||
<div class="card-body">
|
||||
<div class="row card-header">
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label> ACCOUNT TYPE </mat-label>
|
||||
<mat-select id="typeSelect" [(value)]="accountsType" (selectionChange)="filterAccounts()">
|
||||
<mat-select
|
||||
id="typeSelect"
|
||||
[(value)]="accountsType"
|
||||
(selectionChange)="filterAccounts()"
|
||||
>
|
||||
<mat-option value="all">ALL</mat-option>
|
||||
<mat-option *ngFor="let accountType of accountTypes" [value]="accountType">
|
||||
{{accountType | uppercase}}
|
||||
{{ accountType | uppercase }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
<button mat-raised-button color="primary" type="button" class="btn btn-outline-primary ml-auto mr-2" routerLink="/accounts/search"> SEARCH </button>
|
||||
<button mat-raised-button color="primary" type="button" class="btn btn-outline-primary mr-2" (click)="downloadCsv()"> EXPORT </button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
type="button"
|
||||
class="btn btn-outline-primary ml-auto mr-2"
|
||||
routerLink="/accounts/search"
|
||||
>
|
||||
SEARCH
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
type="button"
|
||||
class="btn btn-outline-primary mr-2"
|
||||
(click)="downloadCsv()"
|
||||
>
|
||||
EXPORT
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label> Filter </mat-label>
|
||||
<input matInput type="text" (keyup)="doFilter($event.target.value)" placeholder="Filter">
|
||||
<input
|
||||
matInput
|
||||
type="text"
|
||||
(keyup)="doFilter($event.target.value)"
|
||||
placeholder="Filter"
|
||||
/>
|
||||
<mat-icon matSuffix>search</mat-icon>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-table class="mat-elevation-z10" [dataSource]="dataSource" matSort matSortActive="created"
|
||||
matSortDirection="desc" matSortDisableClear>
|
||||
|
||||
<mat-table
|
||||
class="mat-elevation-z10"
|
||||
[dataSource]="dataSource"
|
||||
matSort
|
||||
matSortActive="created"
|
||||
matSortDirection="desc"
|
||||
matSortDisableClear
|
||||
>
|
||||
<ng-container matColumnDef="name">
|
||||
<mat-header-cell *matHeaderCellDef mat-sort-header> NAME </mat-header-cell>
|
||||
<mat-cell *matCellDef="let user"> {{user?.vcard.fn[0].value}} </mat-cell>
|
||||
<mat-cell *matCellDef="let user"> {{ user?.vcard.fn[0].value }} </mat-cell>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="phone">
|
||||
<mat-header-cell *matHeaderCellDef mat-sort-header> PHONE NUMBER </mat-header-cell>
|
||||
<mat-cell *matCellDef="let user"> {{user?.vcard.tel[0].value}} </mat-cell>
|
||||
<mat-cell *matCellDef="let user"> {{ user?.vcard.tel[0].value }} </mat-cell>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="created">
|
||||
<mat-header-cell *matHeaderCellDef mat-sort-header> CREATED </mat-header-cell>
|
||||
<mat-cell *matCellDef="let user"> {{user?.date_registered | unixDate}} </mat-cell>
|
||||
<mat-cell *matCellDef="let user"> {{ user?.date_registered | unixDate }} </mat-cell>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="balance">
|
||||
<mat-header-cell *matHeaderCellDef mat-sort-header> BALANCE </mat-header-cell>
|
||||
<mat-cell *matCellDef="let user"> {{user?.balance | tokenRatio}} </mat-cell>
|
||||
<mat-cell *matCellDef="let user"> {{ user?.balance | tokenRatio }} </mat-cell>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="location">
|
||||
<mat-header-cell *matHeaderCellDef mat-sort-header> LOCATION </mat-header-cell>
|
||||
<mat-cell *matCellDef="let user"> {{user?.location.area_name}} </mat-cell>
|
||||
<mat-cell *matCellDef="let user"> {{ user?.location.area_name }} </mat-cell>
|
||||
</ng-container>
|
||||
|
||||
<mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row>
|
||||
<mat-row *matRowDef="let account; columns: displayedColumns" (click)="viewAccount(account)" matRipple></mat-row>
|
||||
<mat-row
|
||||
*matRowDef="let account; columns: displayedColumns"
|
||||
(click)="viewAccount(account)"
|
||||
matRipple
|
||||
></mat-row>
|
||||
</mat-table>
|
||||
|
||||
<mat-paginator [pageSize]="defaultPageSize" [pageSizeOptions]="pageSizeOptions" showFirstLastButtons></mat-paginator>
|
||||
<mat-paginator
|
||||
[pageSize]="defaultPageSize"
|
||||
[pageSizeOptions]="pageSizeOptions"
|
||||
showFirstLastButtons
|
||||
></mat-paginator>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -18,61 +18,110 @@
|
||||
</ol>
|
||||
</nav>
|
||||
<div class="card">
|
||||
<mat-card-title class="card-header text-center">
|
||||
CREATE A USER ACCOUNT
|
||||
</mat-card-title>
|
||||
<mat-card-title class="card-header text-center"> CREATE A USER ACCOUNT </mat-card-title>
|
||||
<div class="card-body">
|
||||
<form class="row form-inline" [formGroup]="createForm" (ngSubmit)="onSubmit()">
|
||||
<div class="col-md-6 col-lg-4">
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label>Account Type: </mat-label>
|
||||
<mat-select id="accountType" formControlName="accountType" [errorStateMatcher]="matcher">
|
||||
<mat-select
|
||||
id="accountType"
|
||||
formControlName="accountType"
|
||||
[errorStateMatcher]="matcher"
|
||||
>
|
||||
<mat-option *ngFor="let accountType of accountTypes" [value]="accountType">
|
||||
{{accountType | uppercase}}
|
||||
{{ accountType | uppercase }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="submitted && createFormStub.accountType.errors">Account type is required.</mat-error>
|
||||
</mat-form-field><br>
|
||||
<mat-error *ngIf="submitted && createFormStub.accountType.errors"
|
||||
>Account type is required.</mat-error
|
||||
> </mat-form-field
|
||||
><br />
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 col-lg-4">
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label>ID Number: </mat-label>
|
||||
<input matInput type="text" id="idNumber" placeholder="ID Number" formControlName="idNumber" [errorStateMatcher]="matcher">
|
||||
<mat-error *ngIf="submitted && createFormStub.idNumber.errors">ID Number is required.</mat-error>
|
||||
<input
|
||||
matInput
|
||||
type="text"
|
||||
id="idNumber"
|
||||
placeholder="ID Number"
|
||||
formControlName="idNumber"
|
||||
[errorStateMatcher]="matcher"
|
||||
/>
|
||||
<mat-error *ngIf="submitted && createFormStub.idNumber.errors"
|
||||
>ID Number is required.</mat-error
|
||||
>
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 col-lg-4">
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label>Phone Number: </mat-label>
|
||||
<input matInput type="text" id="phoneNumber" placeholder="Phone Number" formControlName="phoneNumber" [errorStateMatcher]="matcher">
|
||||
<mat-error *ngIf="submitted && createFormStub.phoneNumber.errors">Phone Number is required.</mat-error>
|
||||
</mat-form-field><br>
|
||||
<input
|
||||
matInput
|
||||
type="text"
|
||||
id="phoneNumber"
|
||||
placeholder="Phone Number"
|
||||
formControlName="phoneNumber"
|
||||
[errorStateMatcher]="matcher"
|
||||
/>
|
||||
<mat-error *ngIf="submitted && createFormStub.phoneNumber.errors"
|
||||
>Phone Number is required.</mat-error
|
||||
> </mat-form-field
|
||||
><br />
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 col-lg-4">
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label>Given Name(s):* </mat-label>
|
||||
<input matInput type="text" id="givenNames" placeholder="Given Names" formControlName="givenName" [errorStateMatcher]="matcher">
|
||||
<mat-error *ngIf="submitted && createFormStub.givenName.errors">Given Names are required.</mat-error>
|
||||
</mat-form-field><br>
|
||||
<input
|
||||
matInput
|
||||
type="text"
|
||||
id="givenNames"
|
||||
placeholder="Given Names"
|
||||
formControlName="givenName"
|
||||
[errorStateMatcher]="matcher"
|
||||
/>
|
||||
<mat-error *ngIf="submitted && createFormStub.givenName.errors"
|
||||
>Given Names are required.</mat-error
|
||||
> </mat-form-field
|
||||
><br />
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 col-lg-4">
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label>Family/Surname: </mat-label>
|
||||
<input matInput type="text" id="surname" placeholder="Surname" formControlName="surname" [errorStateMatcher]="matcher">
|
||||
<mat-error *ngIf="submitted && createFormStub.surname.errors">Surname is required.</mat-error>
|
||||
</mat-form-field><br>
|
||||
<input
|
||||
matInput
|
||||
type="text"
|
||||
id="surname"
|
||||
placeholder="Surname"
|
||||
formControlName="surname"
|
||||
[errorStateMatcher]="matcher"
|
||||
/>
|
||||
<mat-error *ngIf="submitted && createFormStub.surname.errors"
|
||||
>Surname is required.</mat-error
|
||||
> </mat-form-field
|
||||
><br />
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 col-lg-4">
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label>Directory Entry: </mat-label>
|
||||
<input matInput type="text" id="directoryEntry" placeholder="Directory Entry" formControlName="directoryEntry" [errorStateMatcher]="matcher">
|
||||
<mat-error *ngIf="submitted && createFormStub.directoryEntry.errors">Directory Entry is required.</mat-error>
|
||||
</mat-form-field><br>
|
||||
<input
|
||||
matInput
|
||||
type="text"
|
||||
id="directoryEntry"
|
||||
placeholder="Directory Entry"
|
||||
formControlName="directoryEntry"
|
||||
[errorStateMatcher]="matcher"
|
||||
/>
|
||||
<mat-error *ngIf="submitted && createFormStub.directoryEntry.errors"
|
||||
>Directory Entry is required.</mat-error
|
||||
> </mat-form-field
|
||||
><br />
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 col-lg-4">
|
||||
@ -80,11 +129,13 @@
|
||||
<mat-label>Location: </mat-label>
|
||||
<mat-select id="location" formControlName="location" [errorStateMatcher]="matcher">
|
||||
<mat-option *ngFor="let area of areaNames" [value]="area">
|
||||
{{area | uppercase}}
|
||||
{{ area | uppercase }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="submitted && createFormStub.location.errors">Location is required.</mat-error>
|
||||
</mat-form-field><br>
|
||||
<mat-error *ngIf="submitted && createFormStub.location.errors"
|
||||
>Location is required.</mat-error
|
||||
> </mat-form-field
|
||||
><br />
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 col-lg-4">
|
||||
@ -92,34 +143,59 @@
|
||||
<mat-label>Gender: </mat-label>
|
||||
<mat-select id="gender" formControlName="gender" [errorStateMatcher]="matcher">
|
||||
<mat-option *ngFor="let gender of genders" [value]="gender">
|
||||
{{gender | uppercase}}
|
||||
{{ gender | uppercase }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="submitted && createFormStub.gender.errors">Gender is required.</mat-error>
|
||||
</mat-form-field><br>
|
||||
<mat-error *ngIf="submitted && createFormStub.gender.errors"
|
||||
>Gender is required.</mat-error
|
||||
> </mat-form-field
|
||||
><br />
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 col-lg-4">
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label>Referrer Phone Number: </mat-label>
|
||||
<input matInput type="text" id="referredBy" placeholder="Reffered By" formControlName="referrer" [errorStateMatcher]="matcher">
|
||||
<mat-error *ngIf="submitted && createFormStub.referrer.errors">Referrer is required.</mat-error>
|
||||
</mat-form-field><br>
|
||||
<input
|
||||
matInput
|
||||
type="text"
|
||||
id="referredBy"
|
||||
placeholder="Reffered By"
|
||||
formControlName="referrer"
|
||||
[errorStateMatcher]="matcher"
|
||||
/>
|
||||
<mat-error *ngIf="submitted && createFormStub.referrer.errors"
|
||||
>Referrer is required.</mat-error
|
||||
> </mat-form-field
|
||||
><br />
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 col-lg-4">
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label>Business Category: </mat-label>
|
||||
<mat-select id="businessCategory" formControlName="businessCategory" [errorStateMatcher]="matcher">
|
||||
<mat-select
|
||||
id="businessCategory"
|
||||
formControlName="businessCategory"
|
||||
[errorStateMatcher]="matcher"
|
||||
>
|
||||
<mat-option *ngFor="let category of categories" [value]="category">
|
||||
{{category | titlecase}}
|
||||
{{ category | titlecase }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
<mat-error *ngIf="submitted && createFormStub.businessCategory.errors">Business Category is required.</mat-error>
|
||||
<mat-error *ngIf="submitted && createFormStub.businessCategory.errors"
|
||||
>Business Category is required.</mat-error
|
||||
>
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
<button mat-raised-button color="primary" type="submit" class="btn btn-outline-primary ml-3" (click)="onSubmit()">Submit</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
type="submit"
|
||||
class="btn btn-outline-primary ml-3"
|
||||
(click)="onSubmit()"
|
||||
>
|
||||
Submit
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -20,19 +20,30 @@
|
||||
<mat-card-title class="card-header">
|
||||
<div class="row">
|
||||
Actions
|
||||
<button mat-raised-button color="primary" type="button" class="btn btn-outline-primary ml-auto mr-2" (click)="downloadCsv()"> EXPORT </button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
type="button"
|
||||
class="btn btn-outline-primary ml-auto mr-2"
|
||||
(click)="downloadCsv()"
|
||||
>
|
||||
EXPORT
|
||||
</button>
|
||||
</div>
|
||||
</mat-card-title>
|
||||
<div class="card-body">
|
||||
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label> Filter </mat-label>
|
||||
<input matInput type="text" (keyup)="doFilter($event.target.value)" placeholder="Filter">
|
||||
<input
|
||||
matInput
|
||||
type="text"
|
||||
(keyup)="doFilter($event.target.value)"
|
||||
placeholder="Filter"
|
||||
/>
|
||||
<mat-icon matSuffix>search</mat-icon>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-table class="mat-elevation-z10" [dataSource]="dataSource" multiTemplateDataRows>
|
||||
|
||||
<!-- Expand Column -->
|
||||
<ng-container matColumnDef="expand">
|
||||
<mat-header-cell *matHeaderCellDef> Expand </mat-header-cell>
|
||||
@ -44,32 +55,52 @@
|
||||
|
||||
<ng-container matColumnDef="user">
|
||||
<mat-header-cell *matHeaderCellDef> NAME </mat-header-cell>
|
||||
<mat-cell *matCellDef="let action"> {{action.user}} </mat-cell>
|
||||
<mat-cell *matCellDef="let action"> {{ action.user }} </mat-cell>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="role">
|
||||
<mat-header-cell *matHeaderCellDef> ROLE </mat-header-cell>
|
||||
<mat-cell *matCellDef="let action"> {{action.role}} </mat-cell>
|
||||
<mat-cell *matCellDef="let action"> {{ action.role }} </mat-cell>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="action">
|
||||
<mat-header-cell *matHeaderCellDef> ACTION </mat-header-cell>
|
||||
<mat-cell *matCellDef="let action"> {{action.action}} </mat-cell>
|
||||
<mat-cell *matCellDef="let action"> {{ action.action }} </mat-cell>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="status">
|
||||
<mat-header-cell *matHeaderCellDef> STATUS </mat-header-cell>
|
||||
<mat-cell *matCellDef="let action">
|
||||
<span *ngIf="action.approval == true" class="badge badge-success badge-pill"> {{approvalStatus(action.approval)}} </span>
|
||||
<span *ngIf="action.approval == false" class="badge badge-danger badge-pill"> {{approvalStatus(action.approval)}} </span>
|
||||
<span *ngIf="action.approval == true" class="badge badge-success badge-pill">
|
||||
{{ approvalStatus(action.approval) }}
|
||||
</span>
|
||||
<span *ngIf="action.approval == false" class="badge badge-danger badge-pill">
|
||||
{{ approvalStatus(action.approval) }}
|
||||
</span>
|
||||
</mat-cell>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="approve">
|
||||
<mat-header-cell *matHeaderCellDef> APPROVE </mat-header-cell>
|
||||
<mat-cell *matCellDef="let action">
|
||||
<button mat-raised-button color="primary" *ngIf="!action.approval" class="btn btn-outline-success" (click)="approveAction(action)"> Approve </button>
|
||||
<button mat-raised-button color="warn" *ngIf="action.approval" class="btn btn-outline-danger" (click)="disapproveAction(action)"> Disapprove </button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
*ngIf="!action.approval"
|
||||
class="btn btn-outline-success"
|
||||
(click)="approveAction(action)"
|
||||
>
|
||||
Approve
|
||||
</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="warn"
|
||||
*ngIf="action.approval"
|
||||
class="btn btn-outline-danger"
|
||||
(click)="disapproveAction(action)"
|
||||
>
|
||||
Disapprove
|
||||
</button>
|
||||
</mat-cell>
|
||||
</ng-container>
|
||||
|
||||
@ -77,22 +108,37 @@
|
||||
<ng-container matColumnDef="expandedDetail">
|
||||
<mat-cell *matCellDef="let action">
|
||||
<div>
|
||||
<span><strong>Staff Name:</strong> {{action.user}}</span><br>
|
||||
<span><strong>Role:</strong> {{action.role}}</span><br>
|
||||
<span><strong>Action Details:</strong> {{action.action}}</span><br>
|
||||
<span><strong>Approval Status:</strong> {{action.approval}}</span><br>
|
||||
<span><strong>Staff Name:</strong> {{ action.user }}</span
|
||||
><br />
|
||||
<span><strong>Role:</strong> {{ action.role }}</span
|
||||
><br />
|
||||
<span><strong>Action Details:</strong> {{ action.action }}</span
|
||||
><br />
|
||||
<span><strong>Approval Status:</strong> {{ action.approval }}</span
|
||||
><br />
|
||||
</div>
|
||||
</mat-cell>
|
||||
</ng-container>
|
||||
|
||||
<mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row>
|
||||
<mat-row *matRowDef="let row; columns: displayedColumns;" matRipple class="element-row"
|
||||
[class.expanded]="row.isExpanded"></mat-row>
|
||||
<mat-row *matRowDef="let row; columns: ['expandedDetail'];"
|
||||
[@detailExpand]="row.isExpanded == true ? 'expanded': 'collapsed'" style="overflow: hidden"></mat-row>
|
||||
<mat-row
|
||||
*matRowDef="let row; columns: displayedColumns"
|
||||
matRipple
|
||||
class="element-row"
|
||||
[class.expanded]="row.isExpanded"
|
||||
></mat-row>
|
||||
<mat-row
|
||||
*matRowDef="let row; columns: ['expandedDetail']"
|
||||
[@detailExpand]="row.isExpanded == true ? 'expanded' : 'collapsed'"
|
||||
style="overflow: hidden"
|
||||
></mat-row>
|
||||
</mat-table>
|
||||
|
||||
<mat-paginator [pageSize]="10" [pageSizeOptions]="[10, 20, 50, 100]" showFirstLastButtons></mat-paginator>
|
||||
<mat-paginator
|
||||
[pageSize]="10"
|
||||
[pageSizeOptions]="[10, 20, 50, 100]"
|
||||
showFirstLastButtons
|
||||
></mat-paginator>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -102,4 +148,3 @@
|
||||
<!-- End Page content -->
|
||||
<!-- ============================================================== -->
|
||||
</div>
|
||||
|
||||
|
@ -16,10 +16,16 @@
|
||||
</ol>
|
||||
</nav>
|
||||
<div class="embed-responsive embed-responsive-16by9">
|
||||
<iframe class="embed-responsive-item" [src]="url | safe" allow="fullscreen" loading="lazy"
|
||||
title="Community inclusion currencies dashboard" referrerpolicy="no-referrer">
|
||||
<iframe
|
||||
class="embed-responsive-item"
|
||||
[src]="url | safe"
|
||||
allow="fullscreen"
|
||||
loading="lazy"
|
||||
title="Community inclusion currencies dashboard"
|
||||
referrerpolicy="no-referrer"
|
||||
>
|
||||
<p>
|
||||
<a href="{{url}}"> Your browser does not support iframes. </a>
|
||||
<a href="{{ url }}"> Your browser does not support iframes. </a>
|
||||
</p>
|
||||
</iframe>
|
||||
</div>
|
||||
|
@ -26,19 +26,31 @@
|
||||
<form [formGroup]="organizationForm" (ngSubmit)="onSubmit()">
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label>Default Disbursement *</mat-label>
|
||||
<input matInput type="text" id="amount" placeholder="Amount" formControlName="disbursement"
|
||||
[errorStateMatcher]="matcher">
|
||||
<input
|
||||
matInput
|
||||
type="text"
|
||||
id="amount"
|
||||
placeholder="Amount"
|
||||
formControlName="disbursement"
|
||||
[errorStateMatcher]="matcher"
|
||||
/>
|
||||
<span matSuffix>RCU</span>
|
||||
<mat-error *ngIf="submitted && organizationFormStub.disbursement.errors">
|
||||
Default Disbursement is required.
|
||||
</mat-error>
|
||||
</mat-form-field>
|
||||
<div class="form-group form-check">
|
||||
<mat-checkbox id="transferCard" formControlName="transfer">Require Transfer Card *</mat-checkbox>
|
||||
<mat-checkbox id="transferCard" formControlName="transfer"
|
||||
>Require Transfer Card *</mat-checkbox
|
||||
>
|
||||
</div>
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label>Default Country Code *</mat-label>
|
||||
<mat-select id="countryCode" formControlName="countryCode" [errorStateMatcher]="matcher">
|
||||
<mat-select
|
||||
id="countryCode"
|
||||
formControlName="countryCode"
|
||||
[errorStateMatcher]="matcher"
|
||||
>
|
||||
<mat-option value="KE">KE Kenya</mat-option>
|
||||
<mat-option value="US">US United States</mat-option>
|
||||
<mat-option value="ETH">ETH Ethiopia</mat-option>
|
||||
@ -47,9 +59,11 @@
|
||||
</mat-select>
|
||||
<mat-error *ngIf="submitted && organizationFormStub.countryCode.errors">
|
||||
Country Code is required.
|
||||
</mat-error>
|
||||
</mat-form-field><br>
|
||||
<button mat-raised-button color="primary" type="submit" class="btn btn-primary">Submit</button>
|
||||
</mat-error> </mat-form-field
|
||||
><br />
|
||||
<button mat-raised-button color="primary" type="submit" class="btn btn-primary">
|
||||
Submit
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -19,16 +19,14 @@
|
||||
<div class="row">
|
||||
<div class="col-md-6 mb-2">
|
||||
<div class="card">
|
||||
<mat-card-title class="card-header text-center">
|
||||
SETTINGS
|
||||
</mat-card-title>
|
||||
<mat-card-title class="card-header text-center"> SETTINGS </mat-card-title>
|
||||
<div class="card-body">
|
||||
<h4>CICADA Admin Credentials</h4>
|
||||
<span><strong>UserId: </strong> {{ userInfo?.userid }} </span><br>
|
||||
<span><strong>Username: </strong> {{ userInfo?.name }} </span><br>
|
||||
<span><strong>UserId: </strong> {{ userInfo?.userid }} </span><br />
|
||||
<span><strong>Username: </strong> {{ userInfo?.name }} </span><br />
|
||||
<span><strong>Email: </strong> {{ userInfo?.email }} </span>
|
||||
</div>
|
||||
<hr>
|
||||
<hr />
|
||||
<div class="card-body">
|
||||
<h4>Organization Settings</h4>
|
||||
<a routerLink="/settings/organization"><i>Update your organization settings</i></a>
|
||||
@ -37,21 +35,27 @@
|
||||
</div>
|
||||
<div class="col-md-6 mb-2">
|
||||
<div class="card">
|
||||
<mat-card-title class="card-header text-center">
|
||||
ACCOUNT MANAGEMENT
|
||||
</mat-card-title>
|
||||
<mat-card-title class="card-header text-center"> ACCOUNT MANAGEMENT </mat-card-title>
|
||||
<div class="card-body">
|
||||
<h4>Change Password</h4>
|
||||
<a routerLink="/settings"><i>Change your account password</i></a>
|
||||
</div>
|
||||
<hr>
|
||||
<hr />
|
||||
<div class="card-body">
|
||||
<h4>Two-step authentication</h4>
|
||||
<a routerLink="/settings"><i>Secure your account with two step verification</i></a>
|
||||
</div>
|
||||
<hr>
|
||||
<hr />
|
||||
<div class="card-body">
|
||||
<button mat-raised-button color="primary" type="button" class="btn btn-outline-primary" (click)="logout()"> LOGOUT ADMIN </button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
type="button"
|
||||
class="btn btn-outline-primary"
|
||||
(click)="logout()"
|
||||
>
|
||||
LOGOUT ADMIN
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -60,39 +64,60 @@
|
||||
<mat-card-title class="card-header">
|
||||
<div class="row">
|
||||
TRUSTED USERS
|
||||
<button mat-raised-button color="primary" type="button" class="btn btn-outline-primary ml-auto mr-2" (click)="downloadCsv()"> EXPORT </button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
type="button"
|
||||
class="btn btn-outline-primary ml-auto mr-2"
|
||||
(click)="downloadCsv()"
|
||||
>
|
||||
EXPORT
|
||||
</button>
|
||||
</div>
|
||||
</mat-card-title>
|
||||
<div class="card-body">
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label> Filter </mat-label>
|
||||
<input matInput type="text" (keyup)="doFilter($event.target.value)" placeholder="Filter">
|
||||
<input
|
||||
matInput
|
||||
type="text"
|
||||
(keyup)="doFilter($event.target.value)"
|
||||
placeholder="Filter"
|
||||
/>
|
||||
<mat-icon matSuffix>search</mat-icon>
|
||||
</mat-form-field>
|
||||
<mat-table class="mat-elevation-z10" [dataSource]="dataSource" matSort matSortActive="name"
|
||||
matSortDirection="asc" matSortDisableClear>
|
||||
|
||||
<mat-table
|
||||
class="mat-elevation-z10"
|
||||
[dataSource]="dataSource"
|
||||
matSort
|
||||
matSortActive="name"
|
||||
matSortDirection="asc"
|
||||
matSortDisableClear
|
||||
>
|
||||
<ng-container matColumnDef="name">
|
||||
<mat-header-cell *matHeaderCellDef mat-sort-header> NAME </mat-header-cell>
|
||||
<mat-cell *matCellDef="let user"> {{user.name}} </mat-cell>
|
||||
<mat-cell *matCellDef="let user"> {{ user.name }} </mat-cell>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="email">
|
||||
<mat-header-cell *matHeaderCellDef mat-sort-header> EMAIL </mat-header-cell>
|
||||
<mat-cell *matCellDef="let user"> {{user.email}} </mat-cell>
|
||||
<mat-cell *matCellDef="let user"> {{ user.email }} </mat-cell>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="userId">
|
||||
<mat-header-cell *matHeaderCellDef mat-sort-header> USER ID </mat-header-cell>
|
||||
<mat-cell *matCellDef="let user"> {{user.userid}} </mat-cell>
|
||||
<mat-cell *matCellDef="let user"> {{ user.userid }} </mat-cell>
|
||||
</ng-container>
|
||||
|
||||
<mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row>
|
||||
<mat-row *matRowDef="let user; columns: displayedColumns"></mat-row>
|
||||
</mat-table>
|
||||
|
||||
<mat-paginator [pageSize]="5" [pageSizeOptions]="[5, 10, 20, 50, 100]" showFirstLastButtons></mat-paginator>
|
||||
|
||||
<mat-paginator
|
||||
[pageSize]="5"
|
||||
[pageSizeOptions]="[5, 10, 20, 50, 100]"
|
||||
showFirstLastButtons
|
||||
></mat-paginator>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -3,32 +3,43 @@
|
||||
<mat-card-title class="card-header">
|
||||
<div class="row">
|
||||
TOKEN DETAILS
|
||||
<button mat-raised-button type="button" class="btn btn-outline-secondary ml-auto mr-2" (click)="close()"> CLOSE </button>
|
||||
<button
|
||||
mat-raised-button
|
||||
type="button"
|
||||
class="btn btn-outline-secondary ml-auto mr-2"
|
||||
(click)="close()"
|
||||
>
|
||||
CLOSE
|
||||
</button>
|
||||
</div>
|
||||
</mat-card-title>
|
||||
<div class="card-body">
|
||||
<div>
|
||||
<span><strong>Name:</strong> {{token?.name}}</span>
|
||||
<span><strong>Name:</strong> {{ token?.name }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span><strong>Symbol:</strong> {{token?.symbol}}</span>
|
||||
<span><strong>Symbol:</strong> {{ token?.symbol }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span><strong>Address:</strong> {{token?.address}}</span>
|
||||
<span><strong>Address:</strong> {{ token?.address }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span><strong>Details:</strong> A community inclusive currency for trading among lower to middle income societies.</span>
|
||||
<span
|
||||
><strong>Details:</strong> A community inclusive currency for trading among lower to
|
||||
middle income societies.</span
|
||||
>
|
||||
</div>
|
||||
<div>
|
||||
<span><strong>Supply:</strong> {{token?.supply | tokenRatio}}</span>
|
||||
</div><br>
|
||||
<span><strong>Supply:</strong> {{ token?.supply | tokenRatio }}</span>
|
||||
</div>
|
||||
<br />
|
||||
<div>
|
||||
<h2>Reserve</h2>
|
||||
<div>
|
||||
<span><strong>Weight:</strong> {{token?.reserveRatio}}</span>
|
||||
<span><strong>Weight:</strong> {{ token?.reserveRatio }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span><strong>Owner:</strong> {{token?.owner}}</span>
|
||||
<span><strong>Owner:</strong> {{ token?.owner }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -20,45 +20,71 @@
|
||||
<mat-card-title class="card-header">
|
||||
<div class="row">
|
||||
Tokens
|
||||
<button mat-raised-button color="primary" type="button" class="btn btn-outline-primary ml-auto mr-2" (click)="downloadCsv()"> EXPORT </button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
type="button"
|
||||
class="btn btn-outline-primary ml-auto mr-2"
|
||||
(click)="downloadCsv()"
|
||||
>
|
||||
EXPORT
|
||||
</button>
|
||||
</div>
|
||||
</mat-card-title>
|
||||
<div class="card-body">
|
||||
|
||||
<app-token-details [token]="token" (closeWindow)="token = $event"></app-token-details>
|
||||
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label> Filter </mat-label>
|
||||
<input matInput type="text" (keyup)="doFilter($event.target.value)" placeholder="Filter">
|
||||
<input
|
||||
matInput
|
||||
type="text"
|
||||
(keyup)="doFilter($event.target.value)"
|
||||
placeholder="Filter"
|
||||
/>
|
||||
<mat-icon matSuffix>search</mat-icon>
|
||||
</mat-form-field>
|
||||
|
||||
<mat-table class="mat-elevation-z10 table-responsive" [dataSource]="dataSource" matSort matSortDirection="asc" matSortDisableClear>
|
||||
<mat-table
|
||||
class="mat-elevation-z10 table-responsive"
|
||||
[dataSource]="dataSource"
|
||||
matSort
|
||||
matSortDirection="asc"
|
||||
matSortDisableClear
|
||||
>
|
||||
<ng-container matColumnDef="name">
|
||||
<mat-header-cell *matHeaderCellDef mat-sort-header> Name </mat-header-cell>
|
||||
<mat-cell *matCellDef="let token"> {{token.name}} </mat-cell>
|
||||
<mat-cell *matCellDef="let token"> {{ token.name }} </mat-cell>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="symbol">
|
||||
<mat-header-cell *matHeaderCellDef mat-sort-header> Symbol </mat-header-cell>
|
||||
<mat-cell *matCellDef="let token"> {{token.symbol}} </mat-cell>
|
||||
<mat-cell *matCellDef="let token"> {{ token.symbol }} </mat-cell>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="address">
|
||||
<mat-header-cell *matHeaderCellDef mat-sort-header> Address </mat-header-cell>
|
||||
<mat-cell *matCellDef="let token"> {{token.address}} </mat-cell>
|
||||
<mat-cell *matCellDef="let token"> {{ token.address }} </mat-cell>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="supply">
|
||||
<mat-header-cell *matHeaderCellDef mat-sort-header> Supply </mat-header-cell>
|
||||
<mat-cell *matCellDef="let token"> {{token.supply | tokenRatio}} </mat-cell>
|
||||
<mat-cell *matCellDef="let token"> {{ token.supply | tokenRatio }} </mat-cell>
|
||||
</ng-container>
|
||||
|
||||
<mat-header-row *matHeaderRowDef="columnsToDisplay"></mat-header-row>
|
||||
<mat-row *matRowDef="let token; columns: columnsToDisplay" (click)="viewToken(token)" matRipple></mat-row>
|
||||
<mat-row
|
||||
*matRowDef="let token; columns: columnsToDisplay"
|
||||
(click)="viewToken(token)"
|
||||
matRipple
|
||||
></mat-row>
|
||||
</mat-table>
|
||||
|
||||
<mat-paginator [pageSize]="5" [pageSizeOptions]="[5, 10, 25, 100]" showFirstLastButtons></mat-paginator>
|
||||
<mat-paginator
|
||||
[pageSize]="5"
|
||||
[pageSizeOptions]="[5, 10, 25, 100]"
|
||||
showFirstLastButtons
|
||||
></mat-paginator>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -68,4 +94,3 @@
|
||||
<!-- End Page content -->
|
||||
<!-- ============================================================== -->
|
||||
</div>
|
||||
|
||||
|
@ -3,43 +3,86 @@
|
||||
<mat-card-title class="card-header">
|
||||
<div class="row">
|
||||
TRANSACTION DETAILS
|
||||
<button mat-raised-button type="button" class="btn btn-outline-secondary ml-auto mr-2" (click)="close()"> CLOSE </button>
|
||||
<button
|
||||
mat-raised-button
|
||||
type="button"
|
||||
class="btn btn-outline-secondary ml-auto mr-2"
|
||||
(click)="close()"
|
||||
>
|
||||
CLOSE
|
||||
</button>
|
||||
</div>
|
||||
</mat-card-title>
|
||||
<div *ngIf="transaction.type == 'transaction'" class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<h4>Exchange: </h4>
|
||||
<h4>Exchange:</h4>
|
||||
<ul class="list-group list-group-flush">
|
||||
<li class="list-group-item">
|
||||
<span>Sender: {{transaction.sender?.vcard.fn[0].value}}</span><br><br>
|
||||
<span>Sender: {{ transaction.sender?.vcard.fn[0].value }}</span
|
||||
><br /><br />
|
||||
<span>
|
||||
Sender Address:
|
||||
<a href="{{senderBloxbergLink}}" target="_blank"> {{transaction.from}} </a>
|
||||
<img src="assets/images/checklist.svg" class="ml-2" height="20rem" (click)="copyAddress(transaction.from)" alt="Copy">
|
||||
</span><br><br>
|
||||
<button mat-raised-button color="primary" class="btn btn-outline-info" (click)="viewSender()">View Sender</button>
|
||||
<a href="{{ senderBloxbergLink }}" target="_blank"> {{ transaction.from }} </a>
|
||||
<img
|
||||
src="assets/images/checklist.svg"
|
||||
class="ml-2"
|
||||
height="20rem"
|
||||
(click)="copyAddress(transaction.from)"
|
||||
alt="Copy"
|
||||
/> </span
|
||||
><br /><br />
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
class="btn btn-outline-info"
|
||||
(click)="viewSender()"
|
||||
>
|
||||
View Sender
|
||||
</button>
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
<span>Recipient: {{transaction.recipient?.vcard.fn[0].value}}</span><br><br>
|
||||
<span>Recipient: {{ transaction.recipient?.vcard.fn[0].value }}</span
|
||||
><br /><br />
|
||||
<span>
|
||||
Recipient Address:
|
||||
<a href="{{recipientBloxbergLink}}" target="_blank"> {{transaction.to}} </a>
|
||||
<img src="assets/images/checklist.svg" class="ml-2" height="20rem" (click)="copyAddress(transaction.to)" alt="Copy">
|
||||
</span><br><br>
|
||||
<button mat-raised-button color="primary" class="btn btn-outline-info" (click)="viewRecipient()">View Recipient</button>
|
||||
<a href="{{ recipientBloxbergLink }}" target="_blank"> {{ transaction.to }} </a>
|
||||
<img
|
||||
src="assets/images/checklist.svg"
|
||||
class="ml-2"
|
||||
height="20rem"
|
||||
(click)="copyAddress(transaction.to)"
|
||||
alt="Copy"
|
||||
/> </span
|
||||
><br /><br />
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
class="btn btn-outline-info"
|
||||
(click)="viewRecipient()"
|
||||
>
|
||||
View Recipient
|
||||
</button>
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
<span>Amount: {{transaction.value | tokenRatio}} {{ tokenSymbol | uppercase }}</span>
|
||||
<span
|
||||
>Amount: {{ transaction.value | tokenRatio }} {{ tokenSymbol | uppercase }}</span
|
||||
>
|
||||
</li>
|
||||
</ul>
|
||||
<h4 class="mt-2">Token: </h4>
|
||||
<h4 class="mt-2">Token:</h4>
|
||||
<ul class="list-group list-group-flush">
|
||||
<li class="list-group-item">
|
||||
<span>
|
||||
Address:
|
||||
{{transaction.token._address}}
|
||||
<img src="assets/images/checklist.svg" class="ml-2" height="20rem" (click)="copyAddress(transaction.token._address)" alt="Copy">
|
||||
{{ transaction.token._address }}
|
||||
<img
|
||||
src="assets/images/checklist.svg"
|
||||
class="ml-2"
|
||||
height="20rem"
|
||||
(click)="copyAddress(transaction.token._address)"
|
||||
alt="Copy"
|
||||
/>
|
||||
</span>
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
@ -51,97 +94,140 @@
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<h4>Transaction: </h4>
|
||||
<h4>Transaction:</h4>
|
||||
<ul class="list-group list-group-flush">
|
||||
<li class="list-group-item">
|
||||
<span>Block: {{transaction.tx.block}}</span>
|
||||
<span>Block: {{ transaction.tx.block }}</span>
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
<span>Index: {{transaction.tx.txIndex}}</span>
|
||||
<span>Index: {{ transaction.tx.txIndex }}</span>
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
<span>Hash: {{transaction.tx.txHash}}</span>
|
||||
<span>Hash: {{ transaction.tx.txHash }}</span>
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
<span>Success: {{transaction.tx.success}}</span>
|
||||
<span>Success: {{ transaction.tx.success }}</span>
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
<span>Timestamp: {{transaction.tx.timestamp | unixDate}}</span>
|
||||
<span>Timestamp: {{ transaction.tx.timestamp | unixDate }}</span>
|
||||
</li>
|
||||
</ul><br>
|
||||
</ul>
|
||||
<br />
|
||||
<div class="mb-3">
|
||||
<button mat-raised-button color="primary" type="button" class="btn btn-outline-success">Resend SMS</button>
|
||||
<button mat-raised-button color="primary" type="button" class="btn btn-outline-success">
|
||||
Resend SMS
|
||||
</button>
|
||||
</div>
|
||||
<div>
|
||||
<button mat-raised-button color="warn" type="button" class="btn btn-outline-danger">Reverse Transaction</button>
|
||||
<button mat-raised-button color="warn" type="button" class="btn btn-outline-danger">
|
||||
Reverse Transaction
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div *ngIf="transaction.type == 'conversion'" class="card-body">
|
||||
<h3>Exchange: </h3>
|
||||
<h3>Exchange:</h3>
|
||||
<ul class="list-group list-group-flush">
|
||||
<li class="list-group-item">
|
||||
<span><strong>Trader: {{transaction.sender?.vcard.fn[0].value}}</strong></span>
|
||||
<span
|
||||
><strong>Trader: {{ transaction.sender?.vcard.fn[0].value }}</strong></span
|
||||
>
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
<span>
|
||||
Trader Address:
|
||||
<a href="{{traderBloxbergLink}}" target="_blank"> {{transaction.trader}} </a>
|
||||
<img src="assets/images/checklist.svg" class="ml-2" height="20rem" (click)="copyAddress(transaction.trader)" alt="Copy">
|
||||
<a href="{{ traderBloxbergLink }}" target="_blank"> {{ transaction.trader }} </a>
|
||||
<img
|
||||
src="assets/images/checklist.svg"
|
||||
class="ml-2"
|
||||
height="20rem"
|
||||
(click)="copyAddress(transaction.trader)"
|
||||
alt="Copy"
|
||||
/>
|
||||
</span>
|
||||
</li>
|
||||
</ul>
|
||||
<button mat-raised-button color="primary" class="btn btn-outline-info" (click)="viewTrader()">View Trader</button>
|
||||
<br><br>
|
||||
<button mat-raised-button color="primary" class="btn btn-outline-info" (click)="viewTrader()">
|
||||
View Trader
|
||||
</button>
|
||||
<br /><br />
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<h4>Source Token: </h4>
|
||||
<h4>Source Token:</h4>
|
||||
<ul class="list-group list-group-flush">
|
||||
<li class="list-group-item">
|
||||
<span>
|
||||
Address:
|
||||
{{transaction.sourceToken.address}}
|
||||
<img src="assets/images/checklist.svg" class="ml-2" height="20rem" (click)="copyAddress(transaction.sourceToken.address)" alt="Copy">
|
||||
{{ transaction.sourceToken.address }}
|
||||
<img
|
||||
src="assets/images/checklist.svg"
|
||||
class="ml-2"
|
||||
height="20rem"
|
||||
(click)="copyAddress(transaction.sourceToken.address)"
|
||||
alt="Copy"
|
||||
/>
|
||||
</span>
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
<span>Name: {{transaction.sourceToken.name}}</span>
|
||||
<span>Name: {{ transaction.sourceToken.name }}</span>
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
<span>Symbol: {{transaction.sourceToken.symbol | uppercase}}</span>
|
||||
<span>Symbol: {{ transaction.sourceToken.symbol | uppercase }}</span>
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
<span>Amount: {{transaction.fromValue}} {{transaction.sourceToken.symbol | uppercase}}</span>
|
||||
<span
|
||||
>Amount: {{ transaction.fromValue }}
|
||||
{{ transaction.sourceToken.symbol | uppercase }}</span
|
||||
>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<h4>Destination Token: </h4>
|
||||
<h4>Destination Token:</h4>
|
||||
<ul class="list-group list-group-flush">
|
||||
<li class="list-group-item">
|
||||
<span>
|
||||
Address:
|
||||
{{transaction.destinationToken.address}}
|
||||
<img src="assets/images/checklist.svg" class="ml-2" height="20rem" (click)="copyAddress(transaction.destinationToken.address)" alt="Copy">
|
||||
{{ transaction.destinationToken.address }}
|
||||
<img
|
||||
src="assets/images/checklist.svg"
|
||||
class="ml-2"
|
||||
height="20rem"
|
||||
(click)="copyAddress(transaction.destinationToken.address)"
|
||||
alt="Copy"
|
||||
/>
|
||||
</span>
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
<span>Name: {{transaction.destinationToken.name}}</span>
|
||||
<span>Name: {{ transaction.destinationToken.name }}</span>
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
<span>Symbol: {{transaction.destinationToken.symbol | uppercase}}</span>
|
||||
<span>Symbol: {{ transaction.destinationToken.symbol | uppercase }}</span>
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
<span>Amount: {{transaction.toValue}} {{transaction.destinationToken.symbol | uppercase}}</span>
|
||||
<span
|
||||
>Amount: {{ transaction.toValue }}
|
||||
{{ transaction.destinationToken.symbol | uppercase }}</span
|
||||
>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<button mat-raised-button color="primary" type="button" class="btn btn-outline-success">Resend SMS</button>
|
||||
<button mat-raised-button color="primary" type="button" class="btn btn-outline-success">
|
||||
Resend SMS
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<button mat-raised-button color="warn" type="button" class="btn btn-outline-danger ml-2" (click)="reverseTransaction()">Reverse Transaction</button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="warn"
|
||||
type="button"
|
||||
class="btn btn-outline-danger ml-2"
|
||||
(click)="reverseTransaction()"
|
||||
>
|
||||
Reverse Transaction
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -17,71 +17,114 @@
|
||||
</ol>
|
||||
</nav>
|
||||
<div class="card">
|
||||
<mat-card-title class="card-header">
|
||||
Transfers
|
||||
</mat-card-title>
|
||||
<mat-card-title class="card-header"> Transfers </mat-card-title>
|
||||
<div class="card-body">
|
||||
|
||||
<app-transaction-details [transaction]="transaction" (closeWindow)="transaction = $event"></app-transaction-details>
|
||||
<app-transaction-details
|
||||
[transaction]="transaction"
|
||||
(closeWindow)="transaction = $event"
|
||||
></app-transaction-details>
|
||||
|
||||
<div class="row card-header">
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label> TRANSFER TYPE </mat-label>
|
||||
<mat-select id="typeSelect" [(value)]="transactionsType" (selectionChange)="filterTransactions()">
|
||||
<mat-select
|
||||
id="typeSelect"
|
||||
[(value)]="transactionsType"
|
||||
(selectionChange)="filterTransactions()"
|
||||
>
|
||||
<mat-option value="all">ALL TRANSFERS</mat-option>
|
||||
<mat-option *ngFor="let transactionType of transactionsTypes" [value]="transactionType">
|
||||
{{transactionType | uppercase}}
|
||||
<mat-option
|
||||
*ngFor="let transactionType of transactionsTypes"
|
||||
[value]="transactionType"
|
||||
>
|
||||
{{ transactionType | uppercase }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
<button mat-raised-button color="primary" type="button" class="btn btn-outline-primary ml-auto mr-2" (click)="downloadCsv()"> EXPORT </button>
|
||||
<button
|
||||
mat-raised-button
|
||||
color="primary"
|
||||
type="button"
|
||||
class="btn btn-outline-primary ml-auto mr-2"
|
||||
(click)="downloadCsv()"
|
||||
>
|
||||
EXPORT
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<mat-form-field appearance="outline">
|
||||
<mat-label> Filter </mat-label>
|
||||
<input matInput type="text" (keyup)="doFilter($event.target.value, transactionDataSource)" placeholder="Filter">
|
||||
<input
|
||||
matInput
|
||||
type="text"
|
||||
(keyup)="doFilter($event.target.value, transactionDataSource)"
|
||||
placeholder="Filter"
|
||||
/>
|
||||
<mat-icon matSuffix>search</mat-icon>
|
||||
</mat-form-field>
|
||||
|
||||
<table mat-table class="mat-elevation-z10" [dataSource]="transactionDataSource" matSort matSortActive="created"
|
||||
matSortDirection="desc" matSortDisableClear>
|
||||
|
||||
<table
|
||||
mat-table
|
||||
class="mat-elevation-z10"
|
||||
[dataSource]="transactionDataSource"
|
||||
matSort
|
||||
matSortActive="created"
|
||||
matSortDirection="desc"
|
||||
matSortDisableClear
|
||||
>
|
||||
<ng-container matColumnDef="sender">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> Sender </th>
|
||||
<td mat-cell *matCellDef="let transaction"> {{transaction?.sender?.vcard.fn[0].value || transaction.from}} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>Sender</th>
|
||||
<td mat-cell *matCellDef="let transaction">
|
||||
{{ transaction?.sender?.vcard.fn[0].value || transaction.from }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="recipient">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> Recipient </th>
|
||||
<td mat-cell *matCellDef="let transaction"> {{transaction?.recipient?.vcard.fn[0].value || transaction.to}} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>Recipient</th>
|
||||
<td mat-cell *matCellDef="let transaction">
|
||||
{{ transaction?.recipient?.vcard.fn[0].value || transaction.to }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="value">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> Value </th>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>Value</th>
|
||||
<td mat-cell *matCellDef="let transaction">
|
||||
<span *ngIf="transaction.type == 'transaction'">{{transaction?.value | tokenRatio}} {{ tokenSymbol | uppercase }}</span>
|
||||
<span *ngIf="transaction.type == 'conversion'">{{transaction?.toValue | tokenRatio}} {{ tokenSymbol | uppercase }}</span>
|
||||
<span *ngIf="transaction.type == 'transaction'"
|
||||
>{{ transaction?.value | tokenRatio }} {{ tokenSymbol | uppercase }}</span
|
||||
>
|
||||
<span *ngIf="transaction.type == 'conversion'"
|
||||
>{{ transaction?.toValue | tokenRatio }} {{ tokenSymbol | uppercase }}</span
|
||||
>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="created">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> Created </th>
|
||||
<td mat-cell *matCellDef="let transaction"> {{transaction?.tx.timestamp | unixDate}} </td>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>Created</th>
|
||||
<td mat-cell *matCellDef="let transaction">
|
||||
{{ transaction?.tx.timestamp | unixDate }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="type">
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> TYPE </th>
|
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>TYPE</th>
|
||||
<td mat-cell *matCellDef="let transaction">
|
||||
<span class="badge badge-success badge-pill"> {{transaction?.type}} </span>
|
||||
<span class="badge badge-success badge-pill"> {{ transaction?.type }} </span>
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="transactionDisplayedColumns"></tr>
|
||||
<tr mat-row *matRowDef="let transaction; columns: transactionDisplayedColumns;" (click)="viewTransaction(transaction)"></tr>
|
||||
<tr
|
||||
mat-row
|
||||
*matRowDef="let transaction; columns: transactionDisplayedColumns"
|
||||
(click)="viewTransaction(transaction)"
|
||||
></tr>
|
||||
</table>
|
||||
|
||||
<mat-paginator [pageSize]="defaultPageSize" [pageSizeOptions]="pageSizeOptions" showFirstLastButtons></mat-paginator>
|
||||
|
||||
<mat-paginator
|
||||
[pageSize]="defaultPageSize"
|
||||
[pageSizeOptions]="pageSizeOptions"
|
||||
showFirstLastButtons
|
||||
></mat-paginator>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -91,5 +134,3 @@
|
||||
<!-- End Page content -->
|
||||
<!-- ============================================================== -->
|
||||
</div>
|
||||
|
||||
|
||||
|
@ -1,10 +1,6 @@
|
||||
<div>
|
||||
<div>
|
||||
<p>
|
||||
Message: {{ data.message }}
|
||||
</p>
|
||||
<p *ngIf="data.status">
|
||||
Status: {{ data?.status }}
|
||||
</p>
|
||||
<p>Message: {{ data.message }}</p>
|
||||
<p *ngIf="data.status">Status: {{ data?.status }}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -1,8 +1,10 @@
|
||||
<!-- Footer Start -->
|
||||
<footer class="footer">
|
||||
<a target="blank" title="GPL-3" href="https://www.gnu.org/licenses/gpl-3.0.en.html"> Copyleft </a> 🄯.
|
||||
<a target="blank" title="GPL-3" href="https://www.gnu.org/licenses/gpl-3.0.en.html"> Copyleft </a>
|
||||
🄯.
|
||||
{{ currentYear }}
|
||||
<a target="blank" title="Gitlab@GrassrootsEconomics" href="https://gitlab.com/grassrootseconomics"><u> Grassroots Economics </u></a>
|
||||
|
||||
<a target="blank" title="Gitlab@GrassrootsEconomics" href="https://gitlab.com/grassrootseconomics"
|
||||
><u> Grassroots Economics </u></a
|
||||
>
|
||||
</footer>
|
||||
<!-- end Footer -->
|
||||
|
@ -1,13 +1,13 @@
|
||||
<nav class="navbar navbar-dark background-dark">
|
||||
<h1 class="navbar-brand">
|
||||
<div *ngIf="noInternetConnection; then offlineBlock else onlineBlock"></div>
|
||||
<div *ngIf="noInternetConnection; then offlineBlock; else onlineBlock"></div>
|
||||
<ng-template #offlineBlock>
|
||||
<strong style="color: red;">OFFLINE </strong>
|
||||
<img width="20rem" src="assets/images/no-wifi.svg" alt="Internet Disconnected">
|
||||
<strong style="color: red">OFFLINE </strong>
|
||||
<img width="20rem" src="assets/images/no-wifi.svg" alt="Internet Disconnected" />
|
||||
</ng-template>
|
||||
<ng-template #onlineBlock>
|
||||
<strong style="color: lawngreen;">ONLINE </strong>
|
||||
<img width="20rem" src="assets/images/wifi.svg" alt="Internet Connected">
|
||||
<strong style="color: lawngreen">ONLINE </strong>
|
||||
<img width="20rem" src="assets/images/wifi.svg" alt="Internet Connected" />
|
||||
</ng-template>
|
||||
</h1>
|
||||
</nav>
|
||||
|
@ -2,10 +2,9 @@
|
||||
<div id="sidebar">
|
||||
<app-network-status></app-network-status>
|
||||
<nav>
|
||||
|
||||
<div class="sidebar-header">
|
||||
<h3>
|
||||
<img class="full-width" src="assets/images/CIC-Logo-white.png" alt="CIC Admin Dashboard">
|
||||
<img class="full-width" src="assets/images/CIC-Logo-white.png" alt="CIC Admin Dashboard" />
|
||||
</h3>
|
||||
<strong>CICADA</strong>
|
||||
</div>
|
||||
|
@ -1,7 +1,13 @@
|
||||
<!-- Topbar Start -->
|
||||
<nav class="navbar navbar-expand-lg navbar-light bg-light sticky-top">
|
||||
<div class="container-fluid">
|
||||
<button type="button" id="sidebarCollapse" class="navbar-btn menutoggle" aria-label="Sidebar toggle" appMenuToggle>
|
||||
<button
|
||||
type="button"
|
||||
id="sidebarCollapse"
|
||||
class="navbar-btn menutoggle"
|
||||
aria-label="Sidebar toggle"
|
||||
appMenuToggle
|
||||
>
|
||||
<span></span>
|
||||
<span></span>
|
||||
<span></span>
|
||||
|
231
src/index.html
@ -1,52 +1,187 @@
|
||||
<!doctype html>
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>CICADA</title>
|
||||
<base href="/">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta content="A fully featured admin client for managing users and transactions in the CIC network." name="description"/>
|
||||
<meta content="Spencer Ofwiti" name="author"/>
|
||||
<link rel="icon" type="image/x-icon" href="assets/icons/manifest-icon-512.png">
|
||||
<link rel="apple-touch-icon" href="assets/icons/apple-icon-180.png">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-2048-2732.jpg" media="(device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
|
||||
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-2732-2048.jpg" media="(device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
|
||||
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-1668-2388.jpg" media="(device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
|
||||
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-2388-1668.jpg" media="(device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
|
||||
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-1536-2048.jpg" media="(device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
|
||||
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-2048-1536.jpg" media="(device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
|
||||
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-1668-2224.jpg" media="(device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
|
||||
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-2224-1668.jpg" media="(device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
|
||||
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-1620-2160.jpg" media="(device-width: 810px) and (device-height: 1080px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
|
||||
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-2160-1620.jpg" media="(device-width: 810px) and (device-height: 1080px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
|
||||
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-1284-2778.jpg" media="(device-width: 428px) and (device-height: 926px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
|
||||
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-2778-1284.jpg" media="(device-width: 428px) and (device-height: 926px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
|
||||
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-1170-2532.jpg" media="(device-width: 390px) and (device-height: 844px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
|
||||
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-2532-1170.jpg" media="(device-width: 390px) and (device-height: 844px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
|
||||
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-1125-2436.jpg" media="(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
|
||||
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-2436-1125.jpg" media="(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
|
||||
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-1242-2688.jpg" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
|
||||
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-2688-1242.jpg" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
|
||||
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-828-1792.jpg" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
|
||||
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-1792-828.jpg" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
|
||||
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-1242-2208.jpg" media="(device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
|
||||
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-2208-1242.jpg" media="(device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
|
||||
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-750-1334.jpg" media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
|
||||
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-1334-750.jpg" media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
|
||||
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-640-1136.jpg" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
|
||||
<link rel="apple-touch-startup-image" href="assets/icons/apple-splash-1136-640.jpg" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css" integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
|
||||
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
|
||||
<link rel="manifest" href="manifest.webmanifest">
|
||||
<meta name="theme-color" content="#313a46">
|
||||
</head>
|
||||
<body class="mat-typography">
|
||||
<base href="/" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta
|
||||
content="A fully featured admin client for managing users and transactions in the CIC network."
|
||||
name="description"
|
||||
/>
|
||||
<meta content="Spencer Ofwiti" name="author" />
|
||||
<link rel="icon" type="image/x-icon" href="assets/icons/manifest-icon-512.png" />
|
||||
<link rel="apple-touch-icon" href="assets/icons/apple-icon-180.png" />
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
href="assets/icons/apple-splash-2048-2732.jpg"
|
||||
media="(device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
|
||||
/>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
href="assets/icons/apple-splash-2732-2048.jpg"
|
||||
media="(device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"
|
||||
/>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
href="assets/icons/apple-splash-1668-2388.jpg"
|
||||
media="(device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
|
||||
/>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
href="assets/icons/apple-splash-2388-1668.jpg"
|
||||
media="(device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"
|
||||
/>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
href="assets/icons/apple-splash-1536-2048.jpg"
|
||||
media="(device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
|
||||
/>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
href="assets/icons/apple-splash-2048-1536.jpg"
|
||||
media="(device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"
|
||||
/>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
href="assets/icons/apple-splash-1668-2224.jpg"
|
||||
media="(device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
|
||||
/>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
href="assets/icons/apple-splash-2224-1668.jpg"
|
||||
media="(device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"
|
||||
/>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
href="assets/icons/apple-splash-1620-2160.jpg"
|
||||
media="(device-width: 810px) and (device-height: 1080px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
|
||||
/>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
href="assets/icons/apple-splash-2160-1620.jpg"
|
||||
media="(device-width: 810px) and (device-height: 1080px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"
|
||||
/>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
href="assets/icons/apple-splash-1284-2778.jpg"
|
||||
media="(device-width: 428px) and (device-height: 926px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"
|
||||
/>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
href="assets/icons/apple-splash-2778-1284.jpg"
|
||||
media="(device-width: 428px) and (device-height: 926px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"
|
||||
/>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
href="assets/icons/apple-splash-1170-2532.jpg"
|
||||
media="(device-width: 390px) and (device-height: 844px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"
|
||||
/>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
href="assets/icons/apple-splash-2532-1170.jpg"
|
||||
media="(device-width: 390px) and (device-height: 844px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"
|
||||
/>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
href="assets/icons/apple-splash-1125-2436.jpg"
|
||||
media="(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"
|
||||
/>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
href="assets/icons/apple-splash-2436-1125.jpg"
|
||||
media="(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"
|
||||
/>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
href="assets/icons/apple-splash-1242-2688.jpg"
|
||||
media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"
|
||||
/>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
href="assets/icons/apple-splash-2688-1242.jpg"
|
||||
media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"
|
||||
/>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
href="assets/icons/apple-splash-828-1792.jpg"
|
||||
media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
|
||||
/>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
href="assets/icons/apple-splash-1792-828.jpg"
|
||||
media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"
|
||||
/>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
href="assets/icons/apple-splash-1242-2208.jpg"
|
||||
media="(device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"
|
||||
/>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
href="assets/icons/apple-splash-2208-1242.jpg"
|
||||
media="(device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"
|
||||
/>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
href="assets/icons/apple-splash-750-1334.jpg"
|
||||
media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
|
||||
/>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
href="assets/icons/apple-splash-1334-750.jpg"
|
||||
media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"
|
||||
/>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
href="assets/icons/apple-splash-640-1136.jpg"
|
||||
media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
|
||||
/>
|
||||
<link
|
||||
rel="apple-touch-startup-image"
|
||||
href="assets/icons/apple-splash-1136-640.jpg"
|
||||
media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"
|
||||
/>
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css"
|
||||
integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2"
|
||||
crossorigin="anonymous"
|
||||
/>
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"
|
||||
integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN"
|
||||
crossorigin="anonymous"
|
||||
/>
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css?family=Roboto:300,400,500&display=swap"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet" />
|
||||
<link rel="manifest" href="manifest.webmanifest" />
|
||||
<meta name="theme-color" content="#313a46" />
|
||||
</head>
|
||||
<body class="mat-typography">
|
||||
<app-root></app-root>
|
||||
<script async src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
|
||||
<script async src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" crossorigin="anonymous"></script>
|
||||
<script async src="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/js/bootstrap.min.js" integrity="sha384-w1Q4orYjBQndcko6MimVbzY0tgp4pWB4lZ7lr30WKz0vr/aWKhXdBNmNb5D92v7s" crossorigin="anonymous"></script>
|
||||
</body>
|
||||
<script
|
||||
async
|
||||
src="https://code.jquery.com/jquery-3.5.1.slim.min.js"
|
||||
integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj"
|
||||
crossorigin="anonymous"
|
||||
></script>
|
||||
<script
|
||||
async
|
||||
src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"
|
||||
integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN"
|
||||
crossorigin="anonymous"
|
||||
></script>
|
||||
<script
|
||||
async
|
||||
src="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/js/bootstrap.min.js"
|
||||
integrity="sha384-w1Q4orYjBQndcko6MimVbzY0tgp4pWB4lZ7lr30WKz0vr/aWKhXdBNmNb5D92v7s"
|
||||
crossorigin="anonymous"
|
||||
></script>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -8,5 +8,6 @@ if (environment.production) {
|
||||
enableProdMode();
|
||||
}
|
||||
|
||||
platformBrowserDynamic().bootstrapModule(AppModule)
|
||||
.catch(err => console.error(err));
|
||||
platformBrowserDynamic()
|
||||
.bootstrapModule(AppModule)
|
||||
.catch((err) => console.error(err));
|
||||
|
@ -57,7 +57,6 @@
|
||||
*/
|
||||
import 'zone.js/dist/zone'; // Included with Angular CLI.
|
||||
|
||||
|
||||
/***************************************************************************************************
|
||||
* APPLICATION IMPORTS
|
||||
*/
|
||||
|
116
src/styles.scss
@ -6,11 +6,13 @@
|
||||
/* Visual */
|
||||
/* Misc */
|
||||
}
|
||||
@import "~bootstrap/dist/css/bootstrap.css";
|
||||
@import "https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap";
|
||||
@import '~bootstrap/dist/css/bootstrap.css';
|
||||
@import 'https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap';
|
||||
|
||||
html,
|
||||
body { height: 100%; }
|
||||
body {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
@ -35,7 +37,7 @@ a:hover,
|
||||
a:focus {
|
||||
text-decoration: none;
|
||||
color: inherit;
|
||||
transition: all .3s;
|
||||
transition: all 0.3s;
|
||||
}
|
||||
|
||||
.wrapper {
|
||||
@ -50,15 +52,19 @@ a:focus {
|
||||
|
||||
ul ul a {
|
||||
padding-left: 30px;
|
||||
font-size: .9em;
|
||||
font-size: 0.9em;
|
||||
background: #6d7fcc;
|
||||
}
|
||||
|
||||
.full-width,
|
||||
table { width: 100%; }
|
||||
table {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
li.breadcrumb-item.active,
|
||||
footer.footer { color: black; }
|
||||
footer.footer {
|
||||
color: black;
|
||||
}
|
||||
|
||||
.clipboard {
|
||||
position: absolute;
|
||||
@ -91,9 +97,13 @@ footer.footer { color: black; }
|
||||
}
|
||||
|
||||
#sidebar .sidebar-header strong,
|
||||
#sidebar.active .sidebar-header h3 { display: none; }
|
||||
#sidebar.active .sidebar-header h3 {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#sidebar.active .sidebar-header strong { display: block; }
|
||||
#sidebar.active .sidebar-header strong {
|
||||
display: block;
|
||||
}
|
||||
|
||||
#sidebar ul li a {
|
||||
display: block;
|
||||
@ -104,11 +114,13 @@ footer.footer { color: black; }
|
||||
}
|
||||
|
||||
#sidebar ul li a.active,
|
||||
#sidebar.active ul li a.active { background: #000; }
|
||||
#sidebar.active ul li a.active {
|
||||
background: #000;
|
||||
}
|
||||
|
||||
#sidebar.active ul li a {
|
||||
padding: 20px 10px;
|
||||
font-size: .85em;
|
||||
font-size: 0.85em;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
@ -119,7 +131,9 @@ footer.footer { color: black; }
|
||||
font-size: 1.8em;
|
||||
}
|
||||
|
||||
#sidebar.active ul li a { padding: 10px; }
|
||||
#sidebar.active ul li a {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
#sidebar.active .dropdown-toggle::after {
|
||||
top: auto;
|
||||
@ -146,12 +160,14 @@ footer.footer { color: black; }
|
||||
}
|
||||
|
||||
#sidebar ul li.active > a,
|
||||
a[aria-expanded="true"] {
|
||||
a[aria-expanded='true'] {
|
||||
color: #fff;
|
||||
background: #313a46;
|
||||
}
|
||||
|
||||
a[data-toggle="collapse"] { position: relative; }
|
||||
a[data-toggle='collapse'] {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.dropdown-toggle::after {
|
||||
position: absolute;
|
||||
@ -170,7 +186,9 @@ a[data-toggle="collapse"] { position: relative; }
|
||||
#sidebar,
|
||||
#sidebar.active,
|
||||
#content,
|
||||
#content.active { transition: all .3s cubic-bezier(.945, .020, .270, .665); }
|
||||
#content.active {
|
||||
transition: all 0.3s cubic-bezier(0.945, 0.02, 0.27, 0.665);
|
||||
}
|
||||
|
||||
#sidebarCollapse {
|
||||
width: 40px;
|
||||
@ -184,14 +202,20 @@ a[data-toggle="collapse"] { position: relative; }
|
||||
height: 2px;
|
||||
margin: 0 auto;
|
||||
background: #555;
|
||||
transition: all .8s cubic-bezier(.810, -.330, .345, 1.375);
|
||||
transition: all 0.8s cubic-bezier(0.81, -0.33, 0.345, 1.375);
|
||||
}
|
||||
|
||||
#sidebarCollapse span:first-of-type { transform: rotate(45deg) translate(2px, 2px); }
|
||||
#sidebarCollapse span:first-of-type {
|
||||
transform: rotate(45deg) translate(2px, 2px);
|
||||
}
|
||||
|
||||
#sidebarCollapse span:nth-of-type(2) { opacity: 0; }
|
||||
#sidebarCollapse span:nth-of-type(2) {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
#sidebarCollapse span:last-of-type { transform: rotate(-45deg) translate(1px, -1px); }
|
||||
#sidebarCollapse span:last-of-type {
|
||||
transform: rotate(-45deg) translate(1px, -1px);
|
||||
}
|
||||
|
||||
#sidebarCollapse.active span {
|
||||
margin: 5px auto;
|
||||
@ -205,11 +229,17 @@ a[data-toggle="collapse"] { position: relative; }
|
||||
color: #98a6ad;
|
||||
}
|
||||
|
||||
.mat-column-select { overflow: initial; }
|
||||
.mat-column-select {
|
||||
overflow: initial;
|
||||
}
|
||||
|
||||
button { height: 2.5rem; }
|
||||
button {
|
||||
height: 2.5rem;
|
||||
}
|
||||
|
||||
.badge-pill { width: 5rem; }
|
||||
.badge-pill {
|
||||
width: 5rem;
|
||||
}
|
||||
|
||||
.mat-column {
|
||||
word-wrap: break-word;
|
||||
@ -246,14 +276,18 @@ button { height: 2.5rem; }
|
||||
}
|
||||
|
||||
#sidebar .sidebar-header strong,
|
||||
#sidebar.active .sidebar-header h3 { display: none; }
|
||||
#sidebar.active .sidebar-header h3 {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#sidebar.active .sidebar-header strong,
|
||||
#sidebar.active ul li a i { display: block; }
|
||||
#sidebar.active ul li a i {
|
||||
display: block;
|
||||
}
|
||||
|
||||
#sidebar.active ul li a {
|
||||
padding: 20px 10px;
|
||||
font-size: .85em;
|
||||
font-size: 0.85em;
|
||||
}
|
||||
|
||||
#sidebar.active ul li a i {
|
||||
@ -262,7 +296,9 @@ button { height: 2.5rem; }
|
||||
font-size: 1.8em;
|
||||
}
|
||||
|
||||
#sidebar.active ul ul a { padding: 10px; }
|
||||
#sidebar.active ul ul a {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.dropdown-toggle::after {
|
||||
top: auto;
|
||||
@ -279,15 +315,21 @@ button { height: 2.5rem; }
|
||||
height: 100vh;
|
||||
}
|
||||
|
||||
#content .menutoggle { margin-left: 250px; }
|
||||
#content .menutoggle {
|
||||
margin-left: 250px;
|
||||
}
|
||||
|
||||
#sidebar,
|
||||
#content,
|
||||
#content.active,
|
||||
#content.active .menutoggle { margin-left: 0; }
|
||||
#content.active .menutoggle {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
#content .menutoggle,
|
||||
#content.active .menutoggle { transition: all .3s cubic-bezier(.945, .020, .270, .665); }
|
||||
#content.active .menutoggle {
|
||||
transition: all 0.3s cubic-bezier(0.945, 0.02, 0.27, 0.665);
|
||||
}
|
||||
|
||||
#sidebarCollapse span:first-of-type,
|
||||
#sidebarCollapse span:nth-of-type(2),
|
||||
@ -297,11 +339,19 @@ button { height: 2.5rem; }
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
#sidebarCollapse.active span { margin: 0 auto; }
|
||||
#sidebarCollapse.active span {
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
#sidebarCollapse.active span:first-of-type { transform: rotate(45deg) translate(2px, 2px); }
|
||||
#sidebarCollapse.active span:first-of-type {
|
||||
transform: rotate(45deg) translate(2px, 2px);
|
||||
}
|
||||
|
||||
#sidebarCollapse.active span:nth-of-type(2) { opacity: 0; }
|
||||
#sidebarCollapse.active span:nth-of-type(2) {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
#sidebarCollapse.active span:last-of-type { transform: rotate(-45deg) translate(1px, -1px); }
|
||||
#sidebarCollapse.active span:last-of-type {
|
||||
transform: rotate(-45deg) translate(1px, -1px);
|
||||
}
|
||||
}
|
||||
|
13
src/test.ts
@ -4,21 +4,22 @@ import 'zone.js/dist/zone-testing';
|
||||
import { getTestBed } from '@angular/core/testing';
|
||||
import {
|
||||
BrowserDynamicTestingModule,
|
||||
platformBrowserDynamicTesting
|
||||
platformBrowserDynamicTesting,
|
||||
} from '@angular/platform-browser-dynamic/testing';
|
||||
|
||||
declare const require: {
|
||||
context(path: string, deep?: boolean, filter?: RegExp): {
|
||||
context(
|
||||
path: string,
|
||||
deep?: boolean,
|
||||
filter?: RegExp
|
||||
): {
|
||||
keys(): string[];
|
||||
<T>(id: string): T;
|
||||
};
|
||||
};
|
||||
|
||||
// First, initialize the Angular testing environment.
|
||||
getTestBed().initTestEnvironment(
|
||||
BrowserDynamicTestingModule,
|
||||
platformBrowserDynamicTesting()
|
||||
);
|
||||
getTestBed().initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting());
|
||||
// Then we find all the tests.
|
||||
const context = require.context('./', true, /\.spec\.ts$/);
|
||||
// And load the modules.
|
||||
|
@ -1,7 +1,7 @@
|
||||
import {Directive, HostListener, Input} from '@angular/core';
|
||||
import { Directive, HostListener, Input } from '@angular/core';
|
||||
|
||||
@Directive({
|
||||
selector: '[appRouterLink]'
|
||||
selector: '[appRouterLink]',
|
||||
})
|
||||
// tslint:disable-next-line:directive-class-suffix
|
||||
export class RouterLinkDirectiveStub {
|
||||
|
@ -1,10 +1,10 @@
|
||||
import {Component} from '@angular/core';
|
||||
import { Component } from '@angular/core';
|
||||
|
||||
@Component({selector: 'app-sidebar', template: ''})
|
||||
@Component({ selector: 'app-sidebar', template: '' })
|
||||
export class SidebarStubComponent {}
|
||||
|
||||
@Component({selector: 'app-topbar', template: ''})
|
||||
@Component({ selector: 'app-topbar', template: '' })
|
||||
export class TopbarStubComponent {}
|
||||
|
||||
@Component({selector: 'app-footer', template: ''})
|
||||
@Component({ selector: 'app-footer', template: '' })
|
||||
export class FooterStubComponent {}
|
||||
|
@ -2,7 +2,7 @@ export class TokenServiceStub {
|
||||
getBySymbol(symbol: string): any {
|
||||
return {
|
||||
name: 'Reserve',
|
||||
symbol: 'RSV'
|
||||
symbol: 'RSV',
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
import {Observable, of} from 'rxjs';
|
||||
import { Observable, of } from 'rxjs';
|
||||
|
||||
export class TransactionServiceStub {
|
||||
setTransaction(transaction: any, cacheSize: number): void {}
|
||||
|
@ -1,12 +1,72 @@
|
||||
import {Observable, of} from 'rxjs';
|
||||
import { Observable, of } from 'rxjs';
|
||||
|
||||
export class UserServiceStub {
|
||||
users = [
|
||||
{id: 1, name: 'John Doe', phone: '+25412345678', address: '0xc86ff893ac40d3950b4d5f94a9b837258b0a9865', type: 'user', created: '08/16/2020', balance: '12987', failedPinAttempts: 1, status: 'approved', bio: 'Bodaboda', gender: 'male'},
|
||||
{id: 2, name: 'Jane Buck', phone: '+25412341234', address: '0xc86ff893ac40d3950b4d5f94a9b837258b0a9865', type: 'vendor', created: '04/02/2020', balance: '56281', failedPinAttempts: 0, status: 'approved', bio: 'Groceries', gender: 'female'},
|
||||
{id: 3, name: 'Mc Donald', phone: '+25498765432', address: '0xc86ff893ac40d3950b4d5f94a9b837258b0a9865', type: 'group', created: '11/16/2020', balance: '450', failedPinAttempts: 2, status: 'unapproved', bio: 'Food', gender: 'male'},
|
||||
{id: 4, name: 'Hera Cles', phone: '+25498769876', address: '0xc86ff893ac40d3950b4d5f94a9b837258b0a9865', type: 'user', created: '05/28/2020', balance: '5621', failedPinAttempts: 3, status: 'approved', bio: 'Shop', gender: 'female'},
|
||||
{id: 5, name: 'Silver Fia', phone: '+25462518374', address: '0xc86ff893ac40d3950b4d5f94a9b837258b0a9865', type: 'token agent', created: '10/10/2020', balance: '817', failedPinAttempts: 0, status: 'unapproved', bio: 'Electronics', gender: 'male'},
|
||||
{
|
||||
id: 1,
|
||||
name: 'John Doe',
|
||||
phone: '+25412345678',
|
||||
address: '0xc86ff893ac40d3950b4d5f94a9b837258b0a9865',
|
||||
type: 'user',
|
||||
created: '08/16/2020',
|
||||
balance: '12987',
|
||||
failedPinAttempts: 1,
|
||||
status: 'approved',
|
||||
bio: 'Bodaboda',
|
||||
gender: 'male',
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
name: 'Jane Buck',
|
||||
phone: '+25412341234',
|
||||
address: '0xc86ff893ac40d3950b4d5f94a9b837258b0a9865',
|
||||
type: 'vendor',
|
||||
created: '04/02/2020',
|
||||
balance: '56281',
|
||||
failedPinAttempts: 0,
|
||||
status: 'approved',
|
||||
bio: 'Groceries',
|
||||
gender: 'female',
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
name: 'Mc Donald',
|
||||
phone: '+25498765432',
|
||||
address: '0xc86ff893ac40d3950b4d5f94a9b837258b0a9865',
|
||||
type: 'group',
|
||||
created: '11/16/2020',
|
||||
balance: '450',
|
||||
failedPinAttempts: 2,
|
||||
status: 'unapproved',
|
||||
bio: 'Food',
|
||||
gender: 'male',
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
name: 'Hera Cles',
|
||||
phone: '+25498769876',
|
||||
address: '0xc86ff893ac40d3950b4d5f94a9b837258b0a9865',
|
||||
type: 'user',
|
||||
created: '05/28/2020',
|
||||
balance: '5621',
|
||||
failedPinAttempts: 3,
|
||||
status: 'approved',
|
||||
bio: 'Shop',
|
||||
gender: 'female',
|
||||
},
|
||||
{
|
||||
id: 5,
|
||||
name: 'Silver Fia',
|
||||
phone: '+25462518374',
|
||||
address: '0xc86ff893ac40d3950b4d5f94a9b837258b0a9865',
|
||||
type: 'token agent',
|
||||
created: '10/10/2020',
|
||||
balance: '817',
|
||||
failedPinAttempts: 0,
|
||||
status: 'unapproved',
|
||||
bio: 'Electronics',
|
||||
gender: 'male',
|
||||
},
|
||||
];
|
||||
|
||||
actions = [
|
||||
@ -15,7 +75,13 @@ export class UserServiceStub {
|
||||
{ id: 3, user: 'Will', role: 'superadmin', action: 'Reclaim RSV 1000', approval: true },
|
||||
{ id: 4, user: 'Vivian', role: 'enroller', action: 'Complete user profile', approval: true },
|
||||
{ id: 5, user: 'Jack', role: 'enroller', action: 'Reclaim RSV 200', approval: false },
|
||||
{ id: 6, user: 'Patience', role: 'enroller', action: 'Change user information', approval: false }
|
||||
{
|
||||
id: 6,
|
||||
user: 'Patience',
|
||||
role: 'enroller',
|
||||
action: 'Change user information',
|
||||
approval: false,
|
||||
},
|
||||
];
|
||||
|
||||
getUserById(id: string): any {
|
||||
@ -30,7 +96,7 @@ export class UserServiceStub {
|
||||
failedPinAttempts: 1,
|
||||
status: 'approved',
|
||||
bio: 'Bodaboda',
|
||||
gender: 'male'
|
||||
gender: 'male',
|
||||
};
|
||||
}
|
||||
|
||||
@ -41,20 +107,17 @@ export class UserServiceStub {
|
||||
key: {
|
||||
ethereum: [
|
||||
'0x51d3c8e2e421604e2b644117a362d589c5434739',
|
||||
'0x9D7c284907acbd4a0cE2dDD0AA69147A921a573D'
|
||||
]
|
||||
'0x9D7c284907acbd4a0cE2dDD0AA69147A921a573D',
|
||||
],
|
||||
},
|
||||
location: {
|
||||
external: {},
|
||||
latitude: '22.430670',
|
||||
longitude: '151.002995'
|
||||
longitude: '151.002995',
|
||||
},
|
||||
selling: [
|
||||
'environment',
|
||||
'health',
|
||||
'transport'
|
||||
],
|
||||
vcard: 'QkVHSU46VkNBUkQNClZFUlNJT046My4wDQpFTUFJTDphYXJuZXNlbkBob3RtYWlsLmNvbQ0KRk46S3VydMKgS3JhbmpjDQpOOktyYW5qYztLdXJ0Ozs7DQpURUw7VFlQPUNFTEw6NjkyNTAzMzQ5ODE5Ng0KRU5EOlZDQVJEDQo='
|
||||
selling: ['environment', 'health', 'transport'],
|
||||
vcard:
|
||||
'QkVHSU46VkNBUkQNClZFUlNJT046My4wDQpFTUFJTDphYXJuZXNlbkBob3RtYWlsLmNvbQ0KRk46S3VydMKgS3JhbmpjDQpOOktyYW5qYztLdXJ0Ozs7DQpURUw7VFlQPUNFTEw6NjkyNTAzMzQ5ODE5Ng0KRU5EOlZDQVJEDQo=',
|
||||
});
|
||||
}
|
||||
|
||||
@ -64,7 +127,7 @@ export class UserServiceStub {
|
||||
user: 'Tom',
|
||||
role: 'enroller',
|
||||
action: 'Disburse RSV 100',
|
||||
approval: false
|
||||
approval: false,
|
||||
};
|
||||
}
|
||||
|
||||
@ -74,7 +137,7 @@ export class UserServiceStub {
|
||||
user: 'Tom',
|
||||
role: 'enroller',
|
||||
action: 'Disburse RSV 100',
|
||||
approval: true
|
||||
approval: true,
|
||||
};
|
||||
}
|
||||
}
|
||||
|