diff --git a/src/app/pages/transactions/conversion-details/conversion-details.component.html b/src/app/pages/transactions/conversion-details/conversion-details.component.html index b3dc4ba..516ca71 100644 --- a/src/app/pages/transactions/conversion-details/conversion-details.component.html +++ b/src/app/pages/transactions/conversion-details/conversion-details.component.html @@ -4,8 +4,11 @@ CONVERSION DETAILS
-

Exchange:

-
Trader Address: {{conversion.trader}}

+

Exchange:

+

Trader: {{conversion.user?.vcard.fn}}

+

Trader Address: {{conversion.trader}}

+ +

Source Token:

@@ -20,7 +23,7 @@

Symbol: {{conversion.sourceToken.symbol}}

  • -

    Amount: {{conversion.fromValue | currency: conversion.sourceToken.name + ' ' }}

    +

    Amount: {{conversion.sourceToken.symbol + ' ' + conversion.fromValue}}

  • @@ -37,9 +40,15 @@

    Symbol: {{conversion.destinationToken.symbol}}

  • -

    Amount: {{conversion.toValue | currency: conversion.destinationToken.name + ' ' }}

    +

    Amount: {{conversion.destinationToken.symbol + ' ' + conversion.toValue}}

  • +
    + +
    +
    + +
    diff --git a/src/app/pages/transactions/transaction-details/transaction-details.component.html b/src/app/pages/transactions/transaction-details/transaction-details.component.html index 0f63e77..dbc24ac 100644 --- a/src/app/pages/transactions/transaction-details/transaction-details.component.html +++ b/src/app/pages/transactions/transaction-details/transaction-details.component.html @@ -9,13 +9,17 @@

    Exchange:

    Token:

    @@ -47,9 +51,15 @@

    Success: {{transaction.tx.success}}

  • -

    Timestamp: {{transaction.tx.timestamp}}

    +

    Timestamp: {{transaction.tx.timestamp | date}}

  • +
    + +
    +
    + +
    diff --git a/src/app/pages/transactions/transactions.component.html b/src/app/pages/transactions/transactions.component.html index 7c1e46c..4613d99 100644 --- a/src/app/pages/transactions/transactions.component.html +++ b/src/app/pages/transactions/transactions.component.html @@ -11,83 +11,179 @@
    -
    + Transfers -
    +
    + -
    - - - - - - - - - - - - - - - - - - - - - - - - - -
    SenderRecipientValue
    {{transaction.from}}{{transaction.to}}{{transaction.value | currency: transaction.token.name + ' '}} -
    SenderRecipientValue
    + +
    + + TRANSFER TYPE + + ALL TRANSFERS + PAYMENTS + EXCHANGE + DISBURSEMENTS + RECLAMATION + + + +
    + +
    +

    {{transactionSelection.selected.length}} selected

    + + + TRANSACTION STATUS + + -- SELECT -- + COMPLETE + REJECT + + +
    + + + Filter + + search + + + + + Sender + {{transaction.sender?.vcard.fn}} + + + + Recipient + {{transaction.recipient?.vcard.fn}} + + + + Token + {{transaction.token.name}} + + + + Value + {{transaction.token.symbol + ' ' + transaction.value}} + + + + Created + {{transaction.tx.timestamp | date}} + + + + View Transaction + + + + + + + + + + + + + + + + + + + + + +
    -
    + Conversions -
    +
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Initial TokenInitial ValueFinal TokenFinal ValueTrader
    {{conversion.sourceToken.symbol}}{{conversion.fromValue | currency: conversion.sourceToken.name + ' '}}{{conversion.destinationToken.symbol}}{{conversion.toValue | currency: conversion.destinationToken.name + ' '}}{{conversion.trader}} -
    Initial TokenInitial ValueFinal TokenFinal ValueTrader
    -
    + + Filter + + search + + + + + Initial Token + {{conversion.sourceToken.name}} + + + + Initial Value + {{conversion.sourceToken.symbol + ' ' + conversion.fromValue}} + + + + Final Token + {{conversion.destinationToken.name}} + + + + Final Value + {{conversion.destinationToken.symbol + ' ' + conversion.toValue}} + + + + Trader + {{conversion.user?.vcard.fn}} + + + + Created + {{conversion.tx.timestamp | date}} + + + + View Conversion + + + + + + + + + + + + + + + + + + + + +
    diff --git a/src/app/pages/transactions/transactions.component.spec.ts b/src/app/pages/transactions/transactions.component.spec.ts index 0b9c390..c7c7f04 100644 --- a/src/app/pages/transactions/transactions.component.spec.ts +++ b/src/app/pages/transactions/transactions.component.spec.ts @@ -1,16 +1,35 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { TransactionsComponent } from './transactions.component'; +import {HttpClient} from '@angular/common/http'; +import {HttpClientTestingModule, HttpTestingController} from '@angular/common/http/testing'; +import {FooterStubComponent, SidebarStubComponent, TopbarStubComponent} from '../../../testing'; +import {TransactionsModule} from './transactions.module'; +import {AppModule} from '../../app.module'; describe('TransactionsComponent', () => { let component: TransactionsComponent; let fixture: ComponentFixture; + let httpClient: HttpClient; + let httpTestingController: HttpTestingController; beforeEach(async () => { await TestBed.configureTestingModule({ - declarations: [ TransactionsComponent ] + declarations: [ + TransactionsComponent, + FooterStubComponent, + SidebarStubComponent, + TopbarStubComponent + ], + imports: [ + AppModule, + HttpClientTestingModule, + TransactionsModule + ] }) .compileComponents(); + httpClient = TestBed.inject(HttpClient); + httpTestingController = TestBed.inject(HttpTestingController); }); beforeEach(() => { diff --git a/src/app/pages/transactions/transactions.component.ts b/src/app/pages/transactions/transactions.component.ts index c284630..4a21a29 100644 --- a/src/app/pages/transactions/transactions.component.ts +++ b/src/app/pages/transactions/transactions.component.ts @@ -1,38 +1,51 @@ -import {Component, OnDestroy, OnInit} from '@angular/core'; -import {TransactionService} from '../../_services/transaction.service'; +import {AfterViewInit, Component, OnInit, ViewChild} from '@angular/core'; +import {BlockSyncService, TransactionService} from '../../_services'; import {Conversion, Transaction} from '../../_models'; -import {Subject} from 'rxjs'; +import {MatTableDataSource} from '@angular/material/table'; +import {SelectionModel} from '@angular/cdk/collections'; +import {MatPaginator} from '@angular/material/paginator'; +import {MatSort} from '@angular/material/sort'; @Component({ selector: 'app-transactions', templateUrl: './transactions.component.html', styleUrls: ['./transactions.component.scss'] }) -export class TransactionsComponent implements OnInit, OnDestroy { - dtOptions: DataTables.Settings = {}; - dtTrigger: Subject = new Subject(); - transactions: Transaction[] = []; - conversions: Conversion[] = []; +export class TransactionsComponent implements OnInit, AfterViewInit { + transactionDataSource: MatTableDataSource; + conversionDataSource: MatTableDataSource; + transactionDisplayedColumns = ['sender', 'recipient', 'token', 'value', 'created', 'view', 'select']; + conversionDisplayedColumns = ['initialToken', 'initialValue', 'finalToken', 'finalValue', 'trader', 'created', 'view', 'select']; + initialSelection = []; + allowMultiSelect = true; + transactionSelection: SelectionModel; + conversionSelection: SelectionModel; transaction: Transaction; conversion: Conversion; - constructor(private transactionService: TransactionService) { } + @ViewChild(MatPaginator) paginator: MatPaginator; + @ViewChild(MatSort) sort: MatSort; + + constructor( + private transactionService: TransactionService, + private blockSyncService: BlockSyncService + ) { + this.blockSyncService.blockSync(); + } ngOnInit(): void { - this.dtOptions = { - pagingType: 'full_numbers', - pageLength: 5, - lengthMenu: [5, 10, 25, 50, 100], - processing: true - }; - - this.transactions = this.transactionService.transactions; - this.conversions = this.transactionService.conversions; - this.dtTrigger.next(); - } - - ngOnDestroy(): void { - this.dtTrigger.unsubscribe(); + this.transactionService.transactionsSubject.subscribe(transactions => { + this.transactionDataSource = new MatTableDataSource(transactions); + this.transactionDataSource.paginator = this.paginator; + this.transactionDataSource.sort = this.sort; + }); + this.transactionService.conversionsSubject.subscribe(conversions => { + this.conversionDataSource = new MatTableDataSource(this.transactionService.conversions); + this.conversionDataSource.paginator = this.paginator; + this.conversionDataSource.sort = this.sort; + }); + this.transactionSelection = new SelectionModel(this.allowMultiSelect, this.initialSelection); + this.conversionSelection = new SelectionModel(this.allowMultiSelect, this.initialSelection); } viewTransaction(transaction): void { @@ -42,4 +55,25 @@ export class TransactionsComponent implements OnInit, OnDestroy { viewConversion(conversion): void { this.conversion = conversion; } + + ngAfterViewInit(): void { + this.transactionDataSource.paginator = this.paginator; + this.transactionDataSource.sort = this.sort; + this.conversionDataSource.paginator = this.paginator; + this.conversionDataSource.sort = this.sort; + } + + isAllSelected(selection, dataSource): boolean { + const numSelected = selection.selected.length; + const numRows = dataSource.data.length; + return numSelected === numRows; + } + + masterToggle(selection, dataSource): void { + this.isAllSelected(selection, dataSource) ? selection.clear() : dataSource.data.forEach(row => selection.select(row)); + } + + doFilter(value: string, dataSource): void { + dataSource.filter = value.trim().toLocaleLowerCase(); + } } diff --git a/src/app/pages/transactions/transactions.module.ts b/src/app/pages/transactions/transactions.module.ts index 70b9764..b6f209d 100644 --- a/src/app/pages/transactions/transactions.module.ts +++ b/src/app/pages/transactions/transactions.module.ts @@ -7,15 +7,38 @@ import { TransactionDetailsComponent } from './transaction-details/transaction-d import {DataTablesModule} from 'angular-datatables'; import {SharedModule} from '../../shared/shared.module'; import { ConversionDetailsComponent } from './conversion-details/conversion-details.component'; +import {MatTableModule} from '@angular/material/table'; +import {MatCheckboxModule} from '@angular/material/checkbox'; +import {MatPaginatorModule} from '@angular/material/paginator'; +import {MatSortModule} from '@angular/material/sort'; +import {MatFormFieldModule} from '@angular/material/form-field'; +import {MatInputModule} from '@angular/material/input'; +import {MatButtonModule} from '@angular/material/button'; +import {MatIconModule} from '@angular/material/icon'; +import {MatSelectModule} from '@angular/material/select'; +import {MatCardModule} from '@angular/material/card'; @NgModule({ declarations: [TransactionsComponent, TransactionDetailsComponent, ConversionDetailsComponent], + exports: [ + TransactionDetailsComponent + ], imports: [ CommonModule, TransactionsRoutingModule, DataTablesModule, - SharedModule + SharedModule, + MatTableModule, + MatCheckboxModule, + MatPaginatorModule, + MatSortModule, + MatFormFieldModule, + MatInputModule, + MatButtonModule, + MatIconModule, + MatSelectModule, + MatCardModule ] }) export class TransactionsModule { }