|
|
|
@ -8,6 +8,7 @@ import {
|
|
|
|
|
Output,
|
|
|
|
|
ViewChild
|
|
|
|
|
} from '@angular/core';
|
|
|
|
|
import { SelectionModel } from '@angular/cdk/collections';
|
|
|
|
|
import { MatPaginator, PageEvent } from '@angular/material/paginator';
|
|
|
|
|
import { MatSort } from '@angular/material/sort';
|
|
|
|
|
import { MatTableDataSource } from '@angular/material/table';
|
|
|
|
@ -41,6 +42,7 @@ export class ActivitiesTableComponent implements OnChanges, OnDestroy {
|
|
|
|
|
@Input() locale: string;
|
|
|
|
|
@Input() pageSize = DEFAULT_PAGE_SIZE;
|
|
|
|
|
@Input() showActions: boolean;
|
|
|
|
|
@Input() showCheckbox = false;
|
|
|
|
|
@Input() showNameColumn = true;
|
|
|
|
|
|
|
|
|
|
@Output() activityDeleted = new EventEmitter<string>();
|
|
|
|
@ -49,6 +51,7 @@ export class ActivitiesTableComponent implements OnChanges, OnDestroy {
|
|
|
|
|
@Output() export = new EventEmitter<string[]>();
|
|
|
|
|
@Output() exportDrafts = new EventEmitter<string[]>();
|
|
|
|
|
@Output() import = new EventEmitter<void>();
|
|
|
|
|
@Output() selectedActivities = new EventEmitter<Activity[]>();
|
|
|
|
|
|
|
|
|
|
@ViewChild(MatPaginator) paginator: MatPaginator;
|
|
|
|
|
@ViewChild(MatSort) sort: MatSort;
|
|
|
|
@ -67,6 +70,7 @@ export class ActivitiesTableComponent implements OnChanges, OnDestroy {
|
|
|
|
|
public placeholder = '';
|
|
|
|
|
public routeQueryParams: Subscription;
|
|
|
|
|
public searchKeywords: string[] = [];
|
|
|
|
|
public selectedRows = new SelectionModel<Activity>(true, []);
|
|
|
|
|
public totalFees: number;
|
|
|
|
|
public totalValue: number;
|
|
|
|
|
|
|
|
|
@ -81,8 +85,15 @@ export class ActivitiesTableComponent implements OnChanges, OnDestroy {
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public areAllRowsSelected() {
|
|
|
|
|
const numSelectedRows = this.selectedRows.selected.length;
|
|
|
|
|
const numTotalRows = this.dataSource.data.length;
|
|
|
|
|
return numSelectedRows === numTotalRows;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public ngOnChanges() {
|
|
|
|
|
this.displayedColumns = [
|
|
|
|
|
'select',
|
|
|
|
|
'count',
|
|
|
|
|
'date',
|
|
|
|
|
'type',
|
|
|
|
@ -98,6 +109,16 @@ export class ActivitiesTableComponent implements OnChanges, OnDestroy {
|
|
|
|
|
'actions'
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
if (this.showCheckbox) {
|
|
|
|
|
this.displayedColumns = this.displayedColumns.filter((column) => {
|
|
|
|
|
return column !== 'count';
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
this.displayedColumns = this.displayedColumns.filter((column) => {
|
|
|
|
|
return column !== 'select';
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!this.showNameColumn) {
|
|
|
|
|
this.displayedColumns = this.displayedColumns.filter((column) => {
|
|
|
|
|
return column !== 'nameWithSymbol';
|
|
|
|
@ -133,6 +154,17 @@ export class ActivitiesTableComponent implements OnChanges, OnDestroy {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ngOnInit() {
|
|
|
|
|
if (this.showCheckbox) {
|
|
|
|
|
this.toggleAllRows();
|
|
|
|
|
this.selectedRows.changed
|
|
|
|
|
.pipe(takeUntil(this.unsubscribeSubject))
|
|
|
|
|
.subscribe((selectedRows) => {
|
|
|
|
|
this.selectedActivities.emit(selectedRows.source.selected);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public onChangePage(page: PageEvent) {
|
|
|
|
|
this.pageIndex = page.pageIndex;
|
|
|
|
|
|
|
|
|
@ -140,6 +172,21 @@ export class ActivitiesTableComponent implements OnChanges, OnDestroy {
|
|
|
|
|
this.totalValue = this.getTotalValue();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public onClickActivity(activity: Activity) {
|
|
|
|
|
if (this.showCheckbox) {
|
|
|
|
|
this.selectedRows.toggle(activity);
|
|
|
|
|
} else if (
|
|
|
|
|
this.hasPermissionToOpenDetails &&
|
|
|
|
|
!activity.isDraft &&
|
|
|
|
|
activity.type !== 'ITEM'
|
|
|
|
|
) {
|
|
|
|
|
this.onOpenPositionDialog({
|
|
|
|
|
dataSource: activity.SymbolProfile.dataSource,
|
|
|
|
|
symbol: activity.SymbolProfile.symbol
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public onCloneActivity(aActivity: OrderWithAccount) {
|
|
|
|
|
this.activityToClone.emit(aActivity);
|
|
|
|
|
}
|
|
|
|
@ -200,6 +247,14 @@ export class ActivitiesTableComponent implements OnChanges, OnDestroy {
|
|
|
|
|
this.activityToUpdate.emit(aActivity);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public toggleAllRows() {
|
|
|
|
|
this.areAllRowsSelected()
|
|
|
|
|
? this.selectedRows.clear()
|
|
|
|
|
: this.dataSource.data.forEach((row) => this.selectedRows.select(row));
|
|
|
|
|
|
|
|
|
|
this.selectedActivities.emit(this.selectedRows.selected);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public ngOnDestroy() {
|
|
|
|
|
this.unsubscribeSubject.next();
|
|
|
|
|
this.unsubscribeSubject.complete();
|
|
|
|
@ -237,9 +292,9 @@ export class ActivitiesTableComponent implements OnChanges, OnDestroy {
|
|
|
|
|
type: 'TAG'
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
fieldValueMap[format(activity.date, 'yyyy')] = {
|
|
|
|
|
id: format(activity.date, 'yyyy'),
|
|
|
|
|
label: format(activity.date, 'yyyy'),
|
|
|
|
|
fieldValueMap[format(new Date(activity.date), 'yyyy')] = {
|
|
|
|
|
id: format(new Date(activity.date), 'yyyy'),
|
|
|
|
|
label: format(new Date(activity.date), 'yyyy'),
|
|
|
|
|
type: 'TAG'
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|