<!doctype html> <html class="no-js" lang=""> <head> <meta charset="utf-8"> <meta http-equiv="x-ua-compatible" content="ie=edge"> <title>CICADA</title> <meta name="description" content=""> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="icon" type="image/x-icon" href="../images/favicon.ico"> <link rel="stylesheet" href="../styles/style.css"> </head> <body> <div class="navbar navbar-default navbar-fixed-top visible-xs"> <a href="../" class="navbar-brand">CICADA</a> <button type="button" class="btn btn-default btn-menu ion-ios-menu" id="btn-menu"></button> </div> <div class="xs-menu menu" id="mobile-menu"> <div id="book-search-input" role="search"><input type="text" placeholder="Type to search"></div> <compodoc-menu></compodoc-menu> </div> <div class="container-fluid main"> <div class="row main"> <div class="hidden-xs menu"> <compodoc-menu mode="normal"></compodoc-menu> </div> <!-- START CONTENT --> <div class="content component"> <div class="content-data"> <ol class="breadcrumb"> <li>Components</li> <li>AccountDetailsComponent</li> </ol> <ul class="nav nav-tabs" role="tablist"> <li class="active"> <a href="#info" role="tab" id="info-tab" data-toggle="tab" data-link="info">Info</a> </li> <li > <a href="#source" role="tab" id="source-tab" data-toggle="tab" data-link="source">Source</a> </li> <li > <a href="#templateData" role="tab" id="templateData-tab" data-toggle="tab" data-link="template">Template</a> </li> <li > <a href="#styleData" role="tab" id="styleData-tab" data-toggle="tab" data-link="style">Styles</a> </li> <li > <a href="#tree" role="tab" id="tree-tab" data-toggle="tab" data-link="dom-tree">DOM Tree</a> </li> </ul> <div class="tab-content"> <div class="tab-pane fade active in" id="c-info"><p class="comment"> <h3>File</h3> </p> <p class="comment"> <code>src/app/pages/accounts/account-details/account-details.component.ts</code> </p> <p class="comment"> <h3>Implements</h3> </p> <p class="comment"> <code><a href="https://angular.io/api/core/OnInit" target="_blank" >OnInit</a></code> </p> <section> <h3>Metadata</h3> <table class="table table-sm table-hover"> <tbody> <tr> <td class="col-md-3">changeDetection</td> <td class="col-md-9"><code>ChangeDetectionStrategy.OnPush</code></td> </tr> <tr> <td class="col-md-3">selector</td> <td class="col-md-9"><code>app-account-details</code></td> </tr> <tr> <td class="col-md-3">styleUrls</td> <td class="col-md-9"><code>./account-details.component.scss</code></td> </tr> <tr> <td class="col-md-3">templateUrl</td> <td class="col-md-9"><code>./account-details.component.html</code></td> </tr> </tbody> </table> </section> <section> <h3 id="index">Index</h3> <table class="table table-sm table-bordered index-table"> <tbody> <tr> <td class="col-md-4"> <h6><b>Properties</b></h6> </td> </tr> <tr> <td class="col-md-4"> <ul class="index-list"> <li> <a href="#account">account</a> </li> <li> <a href="#accountAddress">accountAddress</a> </li> <li> <a href="#accountInfoForm">accountInfoForm</a> </li> <li> <a href="#accounts">accounts</a> </li> <li> <a href="#accountStatus">accountStatus</a> </li> <li> <a href="#accountsType">accountsType</a> </li> <li> <a href="#accountTypes">accountTypes</a> </li> <li> <a href="#area">area</a> </li> <li> <a href="#areaNames">areaNames</a> </li> <li> <a href="#areaType">areaType</a> </li> <li> <a href="#areaTypes">areaTypes</a> </li> <li> <a href="#bloxbergLink">bloxbergLink</a> </li> <li> <a href="#categories">categories</a> </li> <li> <a href="#category">category</a> </li> <li> <a href="#genders">genders</a> </li> <li> <a href="#matcher">matcher</a> </li> <li> <a href="#submitted">submitted</a> </li> <li> <a href="#tokenSymbol">tokenSymbol</a> </li> <li> <a href="#transaction">transaction</a> </li> <li> <a href="#transactions">transactions</a> </li> <li> <a href="#transactionsDataSource">transactionsDataSource</a> </li> <li> <a href="#transactionsDefaultPageSize">transactionsDefaultPageSize</a> </li> <li> <a href="#transactionsDisplayedColumns">transactionsDisplayedColumns</a> </li> <li> <a href="#transactionsPageSizeOptions">transactionsPageSizeOptions</a> </li> <li> <a href="#transactionsType">transactionsType</a> </li> <li> <a href="#transactionsTypes">transactionsTypes</a> </li> <li> <a href="#transactionTablePaginator">transactionTablePaginator</a> </li> <li> <a href="#transactionTableSort">transactionTableSort</a> </li> <li> <a href="#userDataSource">userDataSource</a> </li> <li> <a href="#userDisplayedColumns">userDisplayedColumns</a> </li> <li> <a href="#usersDefaultPageSize">usersDefaultPageSize</a> </li> <li> <a href="#usersPageSizeOptions">usersPageSizeOptions</a> </li> <li> <a href="#userTablePaginator">userTablePaginator</a> </li> <li> <a href="#userTableSort">userTableSort</a> </li> </ul> </td> </tr> <tr> <td class="col-md-4"> <h6><b>Methods</b></h6> </td> </tr> <tr> <td class="col-md-4"> <ul class="index-list"> <li> <a href="#copyAddress">copyAddress</a> </li> <li> <a href="#doTransactionFilter">doTransactionFilter</a> </li> <li> <a href="#doUserFilter">doUserFilter</a> </li> <li> <a href="#downloadCsv">downloadCsv</a> </li> <li> <a href="#filterAccounts">filterAccounts</a> </li> <li> <a href="#filterTransactions">filterTransactions</a> </li> <li> <span class="modifier">Async</span> <a href="#ngOnInit">ngOnInit</a> </li> <li> <a href="#resetPin">resetPin</a> </li> <li> <span class="modifier">Async</span> <a href="#saveInfo">saveInfo</a> </li> <li> <a href="#viewAccount">viewAccount</a> </li> <li> <a href="#viewTransaction">viewTransaction</a> </li> </ul> </td> </tr> <tr> <td class="col-md-4"> <h6><b>Accessors</b></h6> </td> </tr> <tr> <td class="col-md-4"> <ul class="index-list"> <li> <a href="#accountInfoFormStub">accountInfoFormStub</a> </li> </ul> </td> </tr> </tbody> </table> </section> <section> <h3 id="constructor">Constructor</h3> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <code>constructor(formBuilder: <a href="https://angular.io/api/forms/FormBuilder" target="_blank">FormBuilder</a>, locationService: <a href="../injectables/LocationService.html">LocationService</a>, transactionService: <a href="../injectables/TransactionService.html">TransactionService</a>, userService: <a href="../injectables/UserService.html">UserService</a>, route: <a href="https://angular.io/api/router/ActivatedRoute" target="_blank">ActivatedRoute</a>, router: <a href="https://angular.io/api/router/Router" target="_blank">Router</a>, tokenService: <a href="../injectables/TokenService.html">TokenService</a>, loggingService: <a href="../injectables/LoggingService.html">LoggingService</a>, blockSyncService: <a href="../injectables/BlockSyncService.html">BlockSyncService</a>, cdr: <a href="https://angular.io/api/core/ChangeDetectorRef" target="_blank">ChangeDetectorRef</a>, snackBar: MatSnackBar)</code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="70" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:70</a></div> </td> </tr> <tr> <td class="col-md-4"> <div> <b>Parameters :</b> <table class="params"> <thead> <tr> <td>Name</td> <td>Type</td> <td>Optional</td> </tr> </thead> <tbody> <tr> <td>formBuilder</td> <td> <code><a href="https://angular.io/api/forms/FormBuilder" target="_blank" >FormBuilder</a></code> </td> <td> No </td> </tr> <tr> <td>locationService</td> <td> <code><a href="../injectables/LocationService.html" target="_self" >LocationService</a></code> </td> <td> No </td> </tr> <tr> <td>transactionService</td> <td> <code><a href="../injectables/TransactionService.html" target="_self" >TransactionService</a></code> </td> <td> No </td> </tr> <tr> <td>userService</td> <td> <code><a href="../injectables/UserService.html" target="_self" >UserService</a></code> </td> <td> No </td> </tr> <tr> <td>route</td> <td> <code><a href="https://angular.io/api/router/ActivatedRoute" target="_blank" >ActivatedRoute</a></code> </td> <td> No </td> </tr> <tr> <td>router</td> <td> <code><a href="https://angular.io/api/router/Router" target="_blank" >Router</a></code> </td> <td> No </td> </tr> <tr> <td>tokenService</td> <td> <code><a href="../injectables/TokenService.html" target="_self" >TokenService</a></code> </td> <td> No </td> </tr> <tr> <td>loggingService</td> <td> <code><a href="../injectables/LoggingService.html" target="_self" >LoggingService</a></code> </td> <td> No </td> </tr> <tr> <td>blockSyncService</td> <td> <code><a href="../injectables/BlockSyncService.html" target="_self" >BlockSyncService</a></code> </td> <td> No </td> </tr> <tr> <td>cdr</td> <td> <code><a href="https://angular.io/api/core/ChangeDetectorRef" target="_blank" >ChangeDetectorRef</a></code> </td> <td> No </td> </tr> <tr> <td>snackBar</td> <td> <code>MatSnackBar</code> </td> <td> No </td> </tr> </tbody> </table> </div> </td> </tr> </tbody> </table> </section> <section> <h3 id="methods"> Methods </h3> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="copyAddress"></a> <span class="name"> <b> copyAddress </b> <a href="#copyAddress"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <code>copyAddress()</code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="287" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:287</a></div> </td> </tr> <tr> <td class="col-md-4"> <div class="io-description"> <b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code> </div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="doTransactionFilter"></a> <span class="name"> <b> doTransactionFilter </b> <a href="#doTransactionFilter"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <code>doTransactionFilter(value: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>)</code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="202" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:202</a></div> </td> </tr> <tr> <td class="col-md-4"> <div class="io-description"> <b>Parameters :</b> <table class="params"> <thead> <tr> <td>Name</td> <td>Type</td> <td>Optional</td> </tr> </thead> <tbody> <tr> <td>value</td> <td> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code> </td> <td> No </td> </tr> </tbody> </table> </div> <div> </div> <div class="io-description"> <b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code> </div> <div class="io-description"> </div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="doUserFilter"></a> <span class="name"> <b> doUserFilter </b> <a href="#doUserFilter"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <code>doUserFilter(value: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>)</code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="206" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:206</a></div> </td> </tr> <tr> <td class="col-md-4"> <div class="io-description"> <b>Parameters :</b> <table class="params"> <thead> <tr> <td>Name</td> <td>Type</td> <td>Optional</td> </tr> </thead> <tbody> <tr> <td>value</td> <td> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code> </td> <td> No </td> </tr> </tbody> </table> </div> <div> </div> <div class="io-description"> <b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code> </div> <div class="io-description"> </div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="downloadCsv"></a> <span class="name"> <b> downloadCsv </b> <a href="#downloadCsv"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <code>downloadCsv(data: <a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank">any</a>, filename: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>)</code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="283" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:283</a></div> </td> </tr> <tr> <td class="col-md-4"> <div class="io-description"> <b>Parameters :</b> <table class="params"> <thead> <tr> <td>Name</td> <td>Type</td> <td>Optional</td> </tr> </thead> <tbody> <tr> <td>data</td> <td> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code> </td> <td> No </td> </tr> <tr> <td>filename</td> <td> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code> </td> <td> No </td> </tr> </tbody> </table> </div> <div> </div> <div class="io-description"> <b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code> </div> <div class="io-description"> </div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="filterAccounts"></a> <span class="name"> <b> filterAccounts </b> <a href="#filterAccounts"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <code>filterAccounts()</code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="245" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:245</a></div> </td> </tr> <tr> <td class="col-md-4"> <div class="io-description"> <b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code> </div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="filterTransactions"></a> <span class="name"> <b> filterTransactions </b> <a href="#filterTransactions"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <code>filterTransactions()</code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="258" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:258</a></div> </td> </tr> <tr> <td class="col-md-4"> <div class="io-description"> <b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code> </div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="ngOnInit"></a> <span class="name"> <b> <span class="modifier">Async</span> ngOnInit </b> <a href="#ngOnInit"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <span class="modifier-icon icon ion-ios-reset"></span> <code>ngOnInit()</code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="92" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:92</a></div> </td> </tr> <tr> <td class="col-md-4"> <div class="io-description"> <b>Returns : </b> <code>Promise<void></code> </div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="resetPin"></a> <span class="name"> <b> resetPin </b> <a href="#resetPin"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <code>resetPin()</code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="271" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:271</a></div> </td> </tr> <tr> <td class="col-md-4"> <div class="io-description"> <b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code> </div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="saveInfo"></a> <span class="name"> <b> <span class="modifier">Async</span> saveInfo </b> <a href="#saveInfo"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <span class="modifier-icon icon ion-ios-reset"></span> <code>saveInfo()</code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="224" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:224</a></div> </td> </tr> <tr> <td class="col-md-4"> <div class="io-description"> <b>Returns : </b> <code>Promise<void></code> </div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="viewAccount"></a> <span class="name"> <b> viewAccount </b> <a href="#viewAccount"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <code>viewAccount(account)</code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="214" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:214</a></div> </td> </tr> <tr> <td class="col-md-4"> <div class="io-description"> <b>Parameters :</b> <table class="params"> <thead> <tr> <td>Name</td> <td>Optional</td> </tr> </thead> <tbody> <tr> <td>account</td> <td> No </td> </tr> </tbody> </table> </div> <div> </div> <div class="io-description"> <b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code> </div> <div class="io-description"> </div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="viewTransaction"></a> <span class="name"> <b> viewTransaction </b> <a href="#viewTransaction"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <code>viewTransaction(transaction)</code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="210" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:210</a></div> </td> </tr> <tr> <td class="col-md-4"> <div class="io-description"> <b>Parameters :</b> <table class="params"> <thead> <tr> <td>Name</td> <td>Optional</td> </tr> </thead> <tbody> <tr> <td>transaction</td> <td> No </td> </tr> </tbody> </table> </div> <div> </div> <div class="io-description"> <b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code> </div> <div class="io-description"> </div> </td> </tr> </tbody> </table> </section> <section> <h3 id="inputs"> Properties </h3> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="account"></a> <span class="name"> <b> account</b> <a href="#account"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <i>Type : </i> <code><a href="../interfaces/AccountDetails.html" target="_self" >AccountDetails</a></code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="50" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:50</a></div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="accountAddress"></a> <span class="name"> <b> accountAddress</b> <a href="#accountAddress"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="51" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:51</a></div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="accountInfoForm"></a> <span class="name"> <b> accountInfoForm</b> <a href="#accountInfoForm"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <i>Type : </i> <code><a href="https://angular.io/api/forms/FormGroup" target="_blank" >FormGroup</a></code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="49" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:49</a></div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="accounts"></a> <span class="name"> <b> accounts</b> <a href="#accounts"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <i>Type : </i> <code><a href="../interfaces/AccountDetails.html" target="_self" >Array<AccountDetails></a></code> </td> </tr> <tr> <td class="col-md-4"> <i>Default value : </i><code>[]</code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="53" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:53</a></div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="accountStatus"></a> <span class="name"> <b> accountStatus</b> <a href="#accountStatus"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <i>Type : </i> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="52" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:52</a></div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="accountsType"></a> <span class="name"> <b> accountsType</b> <a href="#accountsType"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code> </td> </tr> <tr> <td class="col-md-4"> <i>Default value : </i><code>'all'</code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="54" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:54</a></div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="accountTypes"></a> <span class="name"> <b> accountTypes</b> <a href="#accountTypes"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <i>Type : </i> <code>Array<string></code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="61" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:61</a></div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="area"></a> <span class="name"> <b> area</b> <a href="#area"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="69" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:69</a></div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="areaNames"></a> <span class="name"> <b> areaNames</b> <a href="#areaNames"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <i>Type : </i> <code>Array<string></code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="56" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:56</a></div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="areaType"></a> <span class="name"> <b> areaType</b> <a href="#areaType"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="70" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:70</a></div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="areaTypes"></a> <span class="name"> <b> areaTypes</b> <a href="#areaTypes"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <i>Type : </i> <code>Array<string></code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="57" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:57</a></div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="bloxbergLink"></a> <span class="name"> <b> bloxbergLink</b> <a href="#bloxbergLink"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="66" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:66</a></div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="categories"></a> <span class="name"> <b> categories</b> <a href="#categories"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <i>Type : </i> <code>Array<string></code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="55" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:55</a></div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="category"></a> <span class="name"> <b> category</b> <a href="#category"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="68" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:68</a></div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="genders"></a> <span class="name"> <b> genders</b> <a href="#genders"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <i>Type : </i> <code>Array<string></code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="63" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:63</a></div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="matcher"></a> <span class="name"> <b> matcher</b> <a href="#matcher"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <i>Type : </i> <code><a href="../classes/CustomErrorStateMatcher.html" target="_self" >CustomErrorStateMatcher</a></code> </td> </tr> <tr> <td class="col-md-4"> <i>Default value : </i><code>new CustomErrorStateMatcher()</code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="64" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:64</a></div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="submitted"></a> <span class="name"> <b> submitted</b> <a href="#submitted"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/boolean" target="_blank" >boolean</a></code> </td> </tr> <tr> <td class="col-md-4"> <i>Default value : </i><code>false</code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="65" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:65</a></div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="tokenSymbol"></a> <span class="name"> <b> tokenSymbol</b> <a href="#tokenSymbol"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="67" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:67</a></div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="transaction"></a> <span class="name"> <b> transaction</b> <a href="#transaction"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <i>Type : </i> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="58" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:58</a></div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="transactions"></a> <span class="name"> <b> transactions</b> <a href="#transactions"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <i>Type : </i> <code><a href="../interfaces/Transaction.html" target="_self" >Array<Transaction></a></code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="59" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:59</a></div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="transactionsDataSource"></a> <span class="name"> <b> transactionsDataSource</b> <a href="#transactionsDataSource"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <i>Type : </i> <code>MatTableDataSource<any></code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="35" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:35</a></div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="transactionsDefaultPageSize"></a> <span class="name"> <b> transactionsDefaultPageSize</b> <a href="#transactionsDefaultPageSize"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/number" target="_blank" >number</a></code> </td> </tr> <tr> <td class="col-md-4"> <i>Default value : </i><code>10</code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="37" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:37</a></div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="transactionsDisplayedColumns"></a> <span class="name"> <b> transactionsDisplayedColumns</b> <a href="#transactionsDisplayedColumns"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <i>Type : </i> <code>Array<string></code> </td> </tr> <tr> <td class="col-md-4"> <i>Default value : </i><code>['sender', 'recipient', 'value', 'created', 'type']</code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="36" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:36</a></div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="transactionsPageSizeOptions"></a> <span class="name"> <b> transactionsPageSizeOptions</b> <a href="#transactionsPageSizeOptions"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <i>Type : </i> <code>Array<number></code> </td> </tr> <tr> <td class="col-md-4"> <i>Default value : </i><code>[10, 20, 50, 100]</code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="38" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:38</a></div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="transactionsType"></a> <span class="name"> <b> transactionsType</b> <a href="#transactionsType"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code> </td> </tr> <tr> <td class="col-md-4"> <i>Default value : </i><code>'all'</code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="60" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:60</a></div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="transactionsTypes"></a> <span class="name"> <b> transactionsTypes</b> <a href="#transactionsTypes"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <i>Type : </i> <code>Array<string></code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="62" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:62</a></div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="transactionTablePaginator"></a> <span class="name"> <b> transactionTablePaginator</b> <a href="#transactionTablePaginator"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <i>Type : </i> <code>MatPaginator</code> </td> </tr> <tr> <td class="col-md-4"> <b>Decorators : </b> <br /> <code> @ViewChild('TransactionTablePaginator', {static: true})<br /> </code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="39" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:39</a></div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="transactionTableSort"></a> <span class="name"> <b> transactionTableSort</b> <a href="#transactionTableSort"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <i>Type : </i> <code>MatSort</code> </td> </tr> <tr> <td class="col-md-4"> <b>Decorators : </b> <br /> <code> @ViewChild('TransactionTableSort', {static: true})<br /> </code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="40" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:40</a></div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="userDataSource"></a> <span class="name"> <b> userDataSource</b> <a href="#userDataSource"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <i>Type : </i> <code>MatTableDataSource<any></code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="42" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:42</a></div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="userDisplayedColumns"></a> <span class="name"> <b> userDisplayedColumns</b> <a href="#userDisplayedColumns"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <i>Type : </i> <code>Array<string></code> </td> </tr> <tr> <td class="col-md-4"> <i>Default value : </i><code>['name', 'phone', 'created', 'balance', 'location']</code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="43" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:43</a></div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="usersDefaultPageSize"></a> <span class="name"> <b> usersDefaultPageSize</b> <a href="#usersDefaultPageSize"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/number" target="_blank" >number</a></code> </td> </tr> <tr> <td class="col-md-4"> <i>Default value : </i><code>10</code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="44" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:44</a></div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="usersPageSizeOptions"></a> <span class="name"> <b> usersPageSizeOptions</b> <a href="#usersPageSizeOptions"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <i>Type : </i> <code>Array<number></code> </td> </tr> <tr> <td class="col-md-4"> <i>Default value : </i><code>[10, 20, 50, 100]</code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="45" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:45</a></div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="userTablePaginator"></a> <span class="name"> <b> userTablePaginator</b> <a href="#userTablePaginator"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <i>Type : </i> <code>MatPaginator</code> </td> </tr> <tr> <td class="col-md-4"> <b>Decorators : </b> <br /> <code> @ViewChild('UserTablePaginator', {static: true})<br /> </code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="46" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:46</a></div> </td> </tr> </tbody> </table> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="userTableSort"></a> <span class="name"> <b> userTableSort</b> <a href="#userTableSort"><span class="icon ion-ios-link"></span></a> </span> </td> </tr> <tr> <td class="col-md-4"> <i>Type : </i> <code>MatSort</code> </td> </tr> <tr> <td class="col-md-4"> <b>Decorators : </b> <br /> <code> @ViewChild('UserTableSort', {static: true})<br /> </code> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="47" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:47</a></div> </td> </tr> </tbody> </table> </section> <section> <h3 id="accessors"> Accessors </h3> <table class="table table-sm table-bordered"> <tbody> <tr> <td class="col-md-4"> <a name="accountInfoFormStub"></a> <span class="name"><b>accountInfoFormStub</b><a href="#accountInfoFormStub"><span class="icon ion-ios-link"></span></a></span> </td> </tr> <tr> <td class="col-md-4"> <span class="accessor"><b>get</b><code>accountInfoFormStub()</code></span> </td> </tr> <tr> <td class="col-md-4"> <div class="io-line">Defined in <a href="" data-line="220" class="link-to-prism">src/app/pages/accounts/account-details/account-details.component.ts:220</a></div> </td> </tr> </tbody> </table> </section> </div> <div class="tab-pane fade tab-source-code" id="c-source"> <pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit, ViewChild, } from '@angular/core'; import { MatTableDataSource } from '@angular/material/table'; import { MatPaginator } from '@angular/material/paginator'; import { MatSort } from '@angular/material/sort'; import { BlockSyncService, LocationService, LoggingService, TokenService, TransactionService, UserService, } from '@app/_services'; import { ActivatedRoute, Params, Router } from '@angular/router'; import { first } from 'rxjs/operators'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { copyToClipboard, CustomErrorStateMatcher, exportCsv } from '@app/_helpers'; import { MatSnackBar } from '@angular/material/snack-bar'; import { add0x, strip0x } from '@src/assets/js/ethtx/dist/hex'; import { environment } from '@src/environments/environment'; import { AccountDetails, Transaction } from '@app/_models'; @Component({ selector: 'app-account-details', templateUrl: './account-details.component.html', styleUrls: ['./account-details.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, }) export class AccountDetailsComponent implements OnInit { transactionsDataSource: MatTableDataSource<any>; transactionsDisplayedColumns: Array<string> = ['sender', 'recipient', 'value', 'created', 'type']; transactionsDefaultPageSize: number = 10; transactionsPageSizeOptions: Array<number> = [10, 20, 50, 100]; @ViewChild('TransactionTablePaginator', { static: true }) transactionTablePaginator: MatPaginator; @ViewChild('TransactionTableSort', { static: true }) transactionTableSort: MatSort; userDataSource: MatTableDataSource<any>; userDisplayedColumns: Array<string> = ['name', 'phone', 'created', 'balance', 'location']; usersDefaultPageSize: number = 10; usersPageSizeOptions: Array<number> = [10, 20, 50, 100]; @ViewChild('UserTablePaginator', { static: true }) userTablePaginator: MatPaginator; @ViewChild('UserTableSort', { static: true }) userTableSort: MatSort; accountInfoForm: FormGroup; account: AccountDetails; accountAddress: string; accountStatus: any; accounts: Array<AccountDetails> = []; accountsType: string = 'all'; categories: Array<string>; areaNames: Array<string>; areaTypes: Array<string>; transaction: any; transactions: Array<Transaction>; transactionsType: string = 'all'; accountTypes: Array<string>; transactionsTypes: Array<string>; genders: Array<string>; matcher: CustomErrorStateMatcher = new CustomErrorStateMatcher(); submitted: boolean = false; bloxbergLink: string; tokenSymbol: string; category: string; area: string; areaType: string; constructor( private formBuilder: FormBuilder, private locationService: LocationService, private transactionService: TransactionService, private userService: UserService, private route: ActivatedRoute, private router: Router, private tokenService: TokenService, private loggingService: LoggingService, private blockSyncService: BlockSyncService, private cdr: ChangeDetectorRef, private snackBar: MatSnackBar ) { this.route.paramMap.subscribe((params: Params) => { this.accountAddress = add0x(params.get('id')); this.bloxbergLink = 'https://blockexplorer.bloxberg.org/address/' + this.accountAddress + '/transactions'; }); } async ngOnInit(): Promise<void> { this.accountInfoForm = this.formBuilder.group({ firstName: ['', Validators.required], lastName: ['', Validators.required], phoneNumber: ['', Validators.required], age: [''], type: ['', Validators.required], bio: ['', Validators.required], gender: ['', Validators.required], businessCategory: ['', Validators.required], userLocation: ['', Validators.required], location: ['', Validators.required], locationType: ['', Validators.required], }); await this.blockSyncService.init(); await this.tokenService.init(); await this.transactionService.init(); await this.userService.init(); await this.blockSyncService.blockSync(this.accountAddress); this.userService.resetAccountsList(); (await this.userService.getAccountByAddress(this.accountAddress, 100)).subscribe( async (res) => { if (res !== undefined) { this.account = res; this.cdr.detectChanges(); this.loggingService.sendInfoLevelMessage(this.account); this.locationService.areaNamesSubject.subscribe((response) => { this.area = this.locationService.getAreaNameByLocation( this.account.location.area_name, response ); this.cdr.detectChanges(); this.locationService.areaTypesSubject.subscribe((result) => { this.areaType = this.locationService.getAreaTypeByArea(this.area, result); this.cdr.detectChanges(); }); }); this.userService.categoriesSubject.subscribe((result) => { this.category = this.userService.getCategoryByProduct(this.account.products[0], result); this.cdr.detectChanges(); }); const fullName = this.account.vcard?.fn[0].value.split(' '); this.accountInfoForm.patchValue({ firstName: fullName[0].split(',')[0], lastName: fullName.slice(1).join(' '), phoneNumber: this.account.vcard?.tel[0].value, age: this.account.age, type: this.account.type, bio: this.account.products, gender: this.account.gender, businessCategory: this.account.category || this.category || 'other', userLocation: this.account.location.area_name, location: this.account.location.area || this.area || 'other', locationType: this.account.location.area_type || this.areaType || 'other', }); this.userService .getAccountStatus(this.account.vcard?.tel[0].value) .pipe(first()) .subscribe((response) => (this.accountStatus = response.status)); } else { alert('Account not found!'); } } ); this.userService.accountsSubject.subscribe((accounts) => { this.userDataSource = new MatTableDataSource<any>(accounts); this.userDataSource.paginator = this.userTablePaginator; this.userDataSource.sort = this.userTableSort; this.accounts = accounts; this.cdr.detectChanges(); }); this.transactionService.transactionsSubject.subscribe((transactions) => { this.transactionsDataSource = new MatTableDataSource<any>(transactions); this.transactionsDataSource.paginator = this.transactionTablePaginator; this.transactionsDataSource.sort = this.transactionTableSort; this.transactions = transactions; this.cdr.detectChanges(); }); this.userService.getCategories(); this.userService.categoriesSubject.subscribe((res) => { this.categories = Object.keys(res); }); this.locationService.getAreaNames(); this.locationService.areaNamesSubject.subscribe((res) => { this.areaNames = Object.keys(res); }); this.locationService.getAreaTypes(); this.locationService.areaTypesSubject.subscribe((res) => { this.areaTypes = Object.keys(res); }); this.userService .getAccountTypes() .pipe(first()) .subscribe((res) => (this.accountTypes = res)); this.userService .getTransactionTypes() .pipe(first()) .subscribe((res) => (this.transactionsTypes = res)); this.userService .getGenders() .pipe(first()) .subscribe((res) => (this.genders = res)); this.tokenService.load.subscribe(async (status: boolean) => { if (status) { this.tokenSymbol = await this.tokenService.getTokenSymbol(); } }); } doTransactionFilter(value: string): void { this.transactionsDataSource.filter = value.trim().toLocaleLowerCase(); } doUserFilter(value: string): void { this.userDataSource.filter = value.trim().toLocaleLowerCase(); } viewTransaction(transaction): void { this.transaction = transaction; } viewAccount(account): void { this.router.navigateByUrl( `/accounts/${strip0x(account.identities.evm[`bloxberg:${environment.bloxbergChainId}`][0])}` ); } get accountInfoFormStub(): any { return this.accountInfoForm.controls; } async saveInfo(): Promise<void> { this.submitted = true; if (this.accountInfoForm.invalid || !confirm(`Change user's profile information?`)) { return; } const accountKey = await this.userService.changeAccountInfo( this.accountAddress, this.accountInfoFormStub.firstName.value + ', ' + this.accountInfoFormStub.lastName.value, this.accountInfoFormStub.phoneNumber.value, this.accountInfoFormStub.age.value, this.accountInfoFormStub.type.value, this.accountInfoFormStub.bio.value, this.accountInfoFormStub.gender.value, this.accountInfoFormStub.businessCategory.value, this.accountInfoFormStub.userLocation.value, this.accountInfoFormStub.location.value, this.accountInfoFormStub.locationType.value ); this.submitted = false; } filterAccounts(): void { if (this.accountsType === 'all') { this.userService.accountsSubject.subscribe((accounts) => { this.userDataSource.data = accounts; this.accounts = accounts; }); } else { this.userDataSource.data = this.accounts.filter( (account) => account.type === this.accountsType ); } } filterTransactions(): void { if (this.transactionsType === 'all') { this.transactionService.transactionsSubject.subscribe((transactions) => { this.transactionsDataSource.data = transactions; this.transactions = transactions; }); } else { this.transactionsDataSource.data = this.transactions.filter( (transaction) => transaction.type + 's' === this.transactionsType ); } } resetPin(): void { if (!confirm(`Reset user's pin?`)) { return; } this.userService .resetPin(this.account.vcard.tel[0].value) .pipe(first()) .subscribe((res) => { this.loggingService.sendInfoLevelMessage(`Response: ${res}`); }); } downloadCsv(data: any, filename: string): void { exportCsv(data, filename); } copyAddress(): void { if (copyToClipboard(this.accountAddress)) { this.snackBar.open(this.accountAddress + ' copied successfully!', 'Close', { duration: 3000, }); } } } </code></pre> </div> <div class="tab-pane fade " id="c-templateData"> <pre class="line-numbers"><code class="language-html"><!-- 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 *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"> <span class="sr-only">Loading...</span> </div> <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"> <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> </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> </div> </div> <div *ngIf="account" class="card mt-3 mb-3"> <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 > </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 > </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 > </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-option *ngFor="let accountType of accountTypes" [value]="accountType"> {{ accountType | uppercase }} </mat-option> </mat-select> <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> GENDER: </mat-label> <mat-select id="gender" [(value)]="account.gender" formControlName="gender" [errorStateMatcher]="matcher" > <mat-option *ngFor="let gender of genders" [value]="gender"> {{ gender | uppercase }} </mat-option> </mat-select> <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>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 > </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 > </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)]="category" formControlName="businessCategory" [errorStateMatcher]="matcher" > <mat-option *ngFor="let category of categories" [value]="category"> {{ category | titlecase }} </mat-option> </mat-select> <mat-error *ngIf="submitted && accountInfoFormStub.businessCategory.errors"> Category is required. </mat-error> </mat-form-field> </div> <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" /> <mat-error *ngIf="submitted && accountInfoFormStub.userLocation.errors"> User 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: </mat-label> <mat-select id="location" [(value)]="area" formControlName="location" [errorStateMatcher]="matcher" > <mat-option *ngFor="let area of areaNames" [value]="area"> {{ area | uppercase }} </mat-option> </mat-select> <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)]="areaType" formControlName="locationType" [errorStateMatcher]="matcher" > <mat-option *ngFor="let type of areaTypes" [value]="type"> {{ type | uppercase }} </mat-option> </mat-select> <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-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" > 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" > SAVE DETAILS </button> </div> </div> </form> </div> </div> <div class="card mb-3"> <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> <thead class="thead-dark"> <tr> <th scope="col">NAME</th> <th scope="col">BALANCE</th> <th scope="col">CREATED</th> <th scope="col">STATUS</th> </tr> </thead> <tbody> <tr> <td>{{ account?.vcard?.fn[0].value || accountAddress }}</td> <td>{{ account?.balance | tokenRatio }} {{ tokenSymbol | uppercase }}</td> <td>{{ account?.date_registered | unixDate }}</td> <td> <span class="badge badge-success badge-pill"> {{ accountStatus }} </span> </td> </tr> </tbody> </table> </div> </div> </div> <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> <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-option value="all">ALL TRANSFERS</mat-option> <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> </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" /> <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 > <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> </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> </ng-container> <ng-container matColumnDef="value"> <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 > </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> </ng-container> <ng-container matColumnDef="type"> <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> </td> </ng-container> <tr mat-header-row *matHeaderRowDef="transactionsDisplayedColumns"></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> </div> </div> </mat-tab> <mat-tab label="Users"> <div class="card mt-1"> <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" (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" /> <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 > <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 }} {{ 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> </ng-container> <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> </div> </div> </mat-tab> </mat-tab-group> </div> <app-footer appMenuSelection></app-footer> </div> <!-- ============================================================== --> <!-- End Page content --> <!-- ============================================================== --> </div> </code></pre> </div> <div class="tab-pane fade " id="c-styleData"> <p class="comment"> <code>./account-details.component.scss</code> </p> <pre class="line-numbers"><code class="language-scss"></code></pre> </div> <div class="tab-pane fade " id="c-tree"> <div id="tree-container"></div> <div class="tree-legend"> <div class="title"> <b>Legend</b> </div> <div> <div class="color htmlelement"></div><span>Html element</span> </div> <div> <div class="color component"></div><span>Component</span> </div> <div> <div class="color directive"></div><span>Html element with directive</span> </div> </div> </div> </div> <script src="../js/libs/vis.min.js"></script> <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 *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"> <span class="sr-only">Loading...</span> </div> <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"> <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> </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> </div> </div> <div *ngIf="account" class="card mt-3 mb-3"> <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 > </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 > </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 > </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-option *ngFor="let accountType of accountTypes" [value]="accountType"> {{ accountType | uppercase }} </mat-option> </mat-select> <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> GENDER: </mat-label> <mat-select id="gender" [(value)]="account.gender" formControlName="gender" [errorStateMatcher]="matcher" > <mat-option *ngFor="let gender of genders" [value]="gender"> {{ gender | uppercase }} </mat-option> </mat-select> <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>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 > </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 > </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)]="category" formControlName="businessCategory" [errorStateMatcher]="matcher" > <mat-option *ngFor="let category of categories" [value]="category"> {{ category | titlecase }} </mat-option> </mat-select> <mat-error *ngIf="submitted && accountInfoFormStub.businessCategory.errors"> Category is required. </mat-error> </mat-form-field> </div> <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" /> <mat-error *ngIf="submitted && accountInfoFormStub.userLocation.errors"> User 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: </mat-label> <mat-select id="location" [(value)]="area" formControlName="location" [errorStateMatcher]="matcher" > <mat-option *ngFor="let area of areaNames" [value]="area"> {{ area | uppercase }} </mat-option> </mat-select> <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)]="areaType" formControlName="locationType" [errorStateMatcher]="matcher" > <mat-option *ngFor="let type of areaTypes" [value]="type"> {{ type | uppercase }} </mat-option> </mat-select> <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-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" > 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" > SAVE DETAILS </button> </div> </div> </form> </div> </div> <div class="card mb-3"> <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> <thead class="thead-dark"> <tr> <th scope="col">NAME</th> <th scope="col">BALANCE</th> <th scope="col">CREATED</th> <th scope="col">STATUS</th> </tr> </thead> <tbody> <tr> <td>{{ account?.vcard?.fn[0].value || accountAddress }}</td> <td>{{ account?.balance | tokenRatio }} {{ tokenSymbol | uppercase }}</td> <td>{{ account?.date_registered | unixDate }}</td> <td> <span class="badge badge-success badge-pill"> {{ accountStatus }} </span> </td> </tr> </tbody> </table> </div> </div> </div> <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> <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-option value="all">ALL TRANSFERS</mat-option> <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> </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" /> <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 > <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> </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> </ng-container> <ng-container matColumnDef="value"> <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 > </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> </ng-container> <ng-container matColumnDef="type"> <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> </td> </ng-container> <tr mat-header-row *matHeaderRowDef="transactionsDisplayedColumns"></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> </div> </div> </mat-tab> <mat-tab label="Users"> <div class="card mt-1"> <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" (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" /> <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 > <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 }} {{ 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> </ng-container> <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> </div> </div> </mat-tab> </mat-tab-group> </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': 'AccountDetailsComponent'}; </script> <script src="../js/tree.js"></script> </div><div class="search-results"> <div class="has-results"> <h1 class="search-results-title"><span class='search-results-count'></span> result-matching "<span class='search-query'></span>"</h1> <ul class="search-results-list"></ul> </div> <div class="no-results"> <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1> </div> </div> </div> <!-- END CONTENT --> </div> </div> <script> var COMPODOC_CURRENT_PAGE_DEPTH = 1; var COMPODOC_CURRENT_PAGE_CONTEXT = 'component'; var COMPODOC_CURRENT_PAGE_URL = 'AccountDetailsComponent.html'; var MAX_SEARCH_RESULTS = 15; </script> <script src="../js/libs/custom-elements.min.js"></script> <script src="../js/libs/lit-html.js"></script> <!-- Required to polyfill modern browsers as code is ES5 for IE... --> <script src="../js/libs/custom-elements-es5-adapter.js" charset="utf-8" defer></script> <script src="../js/menu-wc.js" defer></script> <script src="../js/libs/bootstrap-native.js"></script> <script src="../js/libs/es6-shim.min.js"></script> <script src="../js/libs/EventDispatcher.js"></script> <script src="../js/libs/promise.min.js"></script> <script src="../js/libs/zepto.min.js"></script> <script src="../js/compodoc.js"></script> <script src="../js/tabs.js"></script> <script src="../js/menu.js"></script> <script src="../js/libs/clipboard.min.js"></script> <script src="../js/libs/prism.js"></script> <script src="../js/sourceCode.js"></script> <script src="../js/search/search.js"></script> <script src="../js/search/lunr.min.js"></script> <script src="../js/search/search-lunr.js"></script> <script src="../js/search/search_index.js"></script> <script src="../js/lazy-load-graphs.js"></script> </body> </html>