|
|
|
@ -31,7 +31,6 @@ import { MatTableDataSource } from '@angular/material/table'; |
|
|
|
import { ActivatedRoute, Router, RouterModule } from '@angular/router'; |
|
|
|
import { format, parseISO } from 'date-fns'; |
|
|
|
import { DeviceDetectorService } from 'ngx-device-detector'; |
|
|
|
import { Subscription } from 'rxjs'; |
|
|
|
|
|
|
|
import { GfCreateOrUpdateActivityDialogComponent } from './create-or-update-activity-dialog/create-or-update-activity-dialog.component'; |
|
|
|
import { CreateOrUpdateActivityDialogParams } from './create-or-update-activity-dialog/interfaces/interfaces'; |
|
|
|
@ -51,19 +50,19 @@ import { ImportActivitiesDialogParams } from './import-activities-dialog/interfa |
|
|
|
templateUrl: './activities-page.html' |
|
|
|
}) |
|
|
|
export class GfActivitiesPageComponent implements OnInit { |
|
|
|
public activityTypesFilter: string[] = []; |
|
|
|
public dataSource: MatTableDataSource<Activity> | undefined; |
|
|
|
public deviceType: string; |
|
|
|
public hasImpersonationId: boolean; |
|
|
|
public hasPermissionToCreateActivity: boolean; |
|
|
|
public hasPermissionToDeleteActivity: boolean; |
|
|
|
public pageIndex = 0; |
|
|
|
public pageSize = DEFAULT_PAGE_SIZE; |
|
|
|
public routeQueryParams: Subscription; |
|
|
|
public sortColumn = 'date'; |
|
|
|
public sortDirection: SortDirection = 'desc'; |
|
|
|
public totalItems: number | undefined; |
|
|
|
public user: User; |
|
|
|
protected dataSource: MatTableDataSource<Activity> | undefined; |
|
|
|
protected deviceType: string; |
|
|
|
protected hasImpersonationId: boolean; |
|
|
|
protected hasPermissionToCreateActivity: boolean; |
|
|
|
protected hasPermissionToDeleteActivity: boolean; |
|
|
|
protected pageIndex = 0; |
|
|
|
protected pageSize = DEFAULT_PAGE_SIZE; |
|
|
|
protected sortColumn = 'date'; |
|
|
|
protected sortDirection: SortDirection = 'desc'; |
|
|
|
protected totalItems: number | undefined; |
|
|
|
protected user: User; |
|
|
|
|
|
|
|
private activityTypesFilter: string[] = []; |
|
|
|
|
|
|
|
public constructor( |
|
|
|
private changeDetectorRef: ChangeDetectorRef, |
|
|
|
@ -77,7 +76,7 @@ export class GfActivitiesPageComponent implements OnInit { |
|
|
|
private router: Router, |
|
|
|
private userService: UserService |
|
|
|
) { |
|
|
|
this.routeQueryParams = route.queryParams |
|
|
|
route.queryParams |
|
|
|
.pipe(takeUntilDestroyed(this.destroyRef)) |
|
|
|
.subscribe((params) => { |
|
|
|
if (params['createDialog']) { |
|
|
|
@ -131,49 +130,13 @@ export class GfActivitiesPageComponent implements OnInit { |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
public fetchActivities() { |
|
|
|
// Reset dataSource and totalItems to show loading state
|
|
|
|
this.dataSource = undefined; |
|
|
|
this.totalItems = undefined; |
|
|
|
|
|
|
|
const dateRange = this.user?.settings?.dateRange; |
|
|
|
const range = this.isCalendarYear(dateRange) ? dateRange : undefined; |
|
|
|
|
|
|
|
this.dataService |
|
|
|
.fetchActivities({ |
|
|
|
range, |
|
|
|
activityTypes: this.activityTypesFilter.length |
|
|
|
? this.activityTypesFilter |
|
|
|
: undefined, |
|
|
|
filters: this.userService.getFilters(), |
|
|
|
skip: this.pageIndex * this.pageSize, |
|
|
|
sortColumn: this.sortColumn, |
|
|
|
sortDirection: this.sortDirection, |
|
|
|
take: this.pageSize |
|
|
|
}) |
|
|
|
.pipe(takeUntilDestroyed(this.destroyRef)) |
|
|
|
.subscribe(({ activities, count }) => { |
|
|
|
this.dataSource = new MatTableDataSource(activities); |
|
|
|
this.totalItems = count; |
|
|
|
|
|
|
|
if ( |
|
|
|
this.hasPermissionToCreateActivity && |
|
|
|
this.user?.activitiesCount === 0 |
|
|
|
) { |
|
|
|
this.router.navigate([], { queryParams: { createDialog: true } }); |
|
|
|
} |
|
|
|
|
|
|
|
this.changeDetectorRef.markForCheck(); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
public onChangePage(page: PageEvent) { |
|
|
|
protected onChangePage(page: PageEvent) { |
|
|
|
this.pageIndex = page.pageIndex; |
|
|
|
|
|
|
|
this.fetchActivities(); |
|
|
|
} |
|
|
|
|
|
|
|
public onClickActivity({ dataSource, symbol }: AssetProfileIdentifier) { |
|
|
|
protected onClickActivity({ dataSource, symbol }: AssetProfileIdentifier) { |
|
|
|
this.router.navigate([], { |
|
|
|
queryParams: { |
|
|
|
dataSource, |
|
|
|
@ -183,11 +146,11 @@ export class GfActivitiesPageComponent implements OnInit { |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
public onCloneActivity(aActivity: Activity) { |
|
|
|
protected onCloneActivity(aActivity: Activity) { |
|
|
|
this.openCreateActivityDialog(aActivity); |
|
|
|
} |
|
|
|
|
|
|
|
public onDeleteActivities() { |
|
|
|
protected onDeleteActivities() { |
|
|
|
this.dataService |
|
|
|
.deleteActivities({ |
|
|
|
filters: this.userService.getFilters() |
|
|
|
@ -205,7 +168,7 @@ export class GfActivitiesPageComponent implements OnInit { |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
public onDeleteActivity(aId: string) { |
|
|
|
protected onDeleteActivity(aId: string) { |
|
|
|
this.dataService |
|
|
|
.deleteActivity(aId) |
|
|
|
.pipe(takeUntilDestroyed(this.destroyRef)) |
|
|
|
@ -221,7 +184,7 @@ export class GfActivitiesPageComponent implements OnInit { |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
public onExport(activityIds?: string[]) { |
|
|
|
protected onExport(activityIds?: string[]) { |
|
|
|
let fetchExportParams: any = { activityIds }; |
|
|
|
|
|
|
|
if (!activityIds) { |
|
|
|
@ -252,7 +215,7 @@ export class GfActivitiesPageComponent implements OnInit { |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
public onExportDrafts(activityIds?: string[]) { |
|
|
|
protected onExportDrafts(activityIds?: string[]) { |
|
|
|
this.dataService |
|
|
|
.fetchExport({ activityIds }) |
|
|
|
.pipe(takeUntilDestroyed(this.destroyRef)) |
|
|
|
@ -270,7 +233,7 @@ export class GfActivitiesPageComponent implements OnInit { |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
public onImport() { |
|
|
|
protected onImport() { |
|
|
|
const dialogRef = this.dialog.open< |
|
|
|
GfImportActivitiesDialogComponent, |
|
|
|
ImportActivitiesDialogParams |
|
|
|
@ -298,7 +261,7 @@ export class GfActivitiesPageComponent implements OnInit { |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
public onImportDividends() { |
|
|
|
protected onImportDividends() { |
|
|
|
const dialogRef = this.dialog.open< |
|
|
|
GfImportActivitiesDialogComponent, |
|
|
|
ImportActivitiesDialogParams |
|
|
|
@ -327,7 +290,7 @@ export class GfActivitiesPageComponent implements OnInit { |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
public onSortChanged({ active, direction }: Sort) { |
|
|
|
protected onSortChanged({ active, direction }: Sort) { |
|
|
|
this.pageIndex = 0; |
|
|
|
this.sortColumn = active; |
|
|
|
this.sortDirection = direction; |
|
|
|
@ -335,20 +298,56 @@ export class GfActivitiesPageComponent implements OnInit { |
|
|
|
this.fetchActivities(); |
|
|
|
} |
|
|
|
|
|
|
|
public onTypesFilterChanged(aTypes: string[]) { |
|
|
|
protected onTypesFilterChanged(aTypes: string[]) { |
|
|
|
this.activityTypesFilter = aTypes; |
|
|
|
this.pageIndex = 0; |
|
|
|
|
|
|
|
this.fetchActivities(); |
|
|
|
} |
|
|
|
|
|
|
|
public onUpdateActivity(aActivity: Activity) { |
|
|
|
protected onUpdateActivity(aActivity: Activity) { |
|
|
|
this.router.navigate([], { |
|
|
|
queryParams: { activityId: aActivity.id, editDialog: true } |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
public openUpdateActivityDialog(aActivity: Activity) { |
|
|
|
private fetchActivities() { |
|
|
|
// Reset dataSource and totalItems to show loading state
|
|
|
|
this.dataSource = undefined; |
|
|
|
this.totalItems = undefined; |
|
|
|
|
|
|
|
const dateRange = this.user?.settings?.dateRange; |
|
|
|
const range = this.isCalendarYear(dateRange) ? dateRange : undefined; |
|
|
|
|
|
|
|
this.dataService |
|
|
|
.fetchActivities({ |
|
|
|
range, |
|
|
|
activityTypes: this.activityTypesFilter.length |
|
|
|
? this.activityTypesFilter |
|
|
|
: undefined, |
|
|
|
filters: this.userService.getFilters(), |
|
|
|
skip: this.pageIndex * this.pageSize, |
|
|
|
sortColumn: this.sortColumn, |
|
|
|
sortDirection: this.sortDirection, |
|
|
|
take: this.pageSize |
|
|
|
}) |
|
|
|
.pipe(takeUntilDestroyed(this.destroyRef)) |
|
|
|
.subscribe(({ activities, count }) => { |
|
|
|
this.dataSource = new MatTableDataSource(activities); |
|
|
|
this.totalItems = count; |
|
|
|
|
|
|
|
if ( |
|
|
|
this.hasPermissionToCreateActivity && |
|
|
|
this.user?.activitiesCount === 0 |
|
|
|
) { |
|
|
|
this.router.navigate([], { queryParams: { createDialog: true } }); |
|
|
|
} |
|
|
|
|
|
|
|
this.changeDetectorRef.markForCheck(); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
private openUpdateActivityDialog(aActivity: Activity) { |
|
|
|
const dialogRef = this.dialog.open< |
|
|
|
GfCreateOrUpdateActivityDialogComponent, |
|
|
|
CreateOrUpdateActivityDialogParams |
|
|
|
|