|
|
@ -10,7 +10,7 @@ import { |
|
|
InfoItem, |
|
|
InfoItem, |
|
|
User |
|
|
User |
|
|
} from '@ghostfolio/common/interfaces'; |
|
|
} from '@ghostfolio/common/interfaces'; |
|
|
import { AdminMarketDataItem } from '@ghostfolio/common/interfaces/admin-market-data.interface'; |
|
|
import { AdminMarketData, AdminMarketDataItem } from '@ghostfolio/common/interfaces/admin-market-data.interface'; |
|
|
import { hasPermission, permissions } from '@ghostfolio/common/permissions'; |
|
|
import { hasPermission, permissions } from '@ghostfolio/common/permissions'; |
|
|
import { GfSymbolPipe } from '@ghostfolio/common/pipes'; |
|
|
import { GfSymbolPipe } from '@ghostfolio/common/pipes'; |
|
|
import { GfActivitiesFilterComponent } from '@ghostfolio/ui/activities-filter'; |
|
|
import { GfActivitiesFilterComponent } from '@ghostfolio/ui/activities-filter'; |
|
|
@ -62,7 +62,7 @@ import { |
|
|
} from 'ionicons/icons'; |
|
|
} from 'ionicons/icons'; |
|
|
import { DeviceDetectorService } from 'ngx-device-detector'; |
|
|
import { DeviceDetectorService } from 'ngx-device-detector'; |
|
|
import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; |
|
|
import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; |
|
|
import { Subject } from 'rxjs'; |
|
|
import { Observable, Subject } from 'rxjs'; |
|
|
import { distinctUntilChanged, switchMap, takeUntil } from 'rxjs/operators'; |
|
|
import { distinctUntilChanged, switchMap, takeUntil } from 'rxjs/operators'; |
|
|
|
|
|
|
|
|
import { AdminMarketDataService } from './admin-market-data.service'; |
|
|
import { AdminMarketDataService } from './admin-market-data.service'; |
|
|
@ -482,30 +482,42 @@ export class GfAdminMarketDataComponent |
|
|
dialogRef |
|
|
dialogRef |
|
|
.afterClosed() |
|
|
.afterClosed() |
|
|
.pipe(takeUntil(this.unsubscribeSubject)) |
|
|
.pipe(takeUntil(this.unsubscribeSubject)) |
|
|
.subscribe(({ dataSource, symbol } = {}) => { |
|
|
.subscribe(({ addAssetProfile, dataSource, symbol } = {}) => { |
|
|
if (dataSource && symbol) { |
|
|
|
|
|
this.adminService |
|
|
|
|
|
.addAssetProfile({ dataSource, symbol }) |
|
|
|
|
|
.pipe( |
|
|
|
|
|
switchMap(() => { |
|
|
|
|
|
this.isLoading = true; |
|
|
this.isLoading = true; |
|
|
this.changeDetectorRef.markForCheck(); |
|
|
this.changeDetectorRef.markForCheck(); |
|
|
|
|
|
|
|
|
|
|
|
let observable: Observable<AdminMarketData>; |
|
|
|
|
|
|
|
|
|
|
|
if (!addAssetProfile) { |
|
|
|
|
|
this.openAssetProfileDialog({ dataSource, symbol }); |
|
|
|
|
|
observable = this.adminService.fetchAdminMarketData({ |
|
|
|
|
|
filters: this.activeFilters, |
|
|
|
|
|
take: this.pageSize |
|
|
|
|
|
}); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (addAssetProfile && dataSource && symbol) { |
|
|
|
|
|
observable = this.adminService |
|
|
|
|
|
.addAssetProfile({ dataSource, symbol }) |
|
|
|
|
|
.pipe( |
|
|
|
|
|
switchMap(() => { |
|
|
return this.adminService.fetchAdminMarketData({ |
|
|
return this.adminService.fetchAdminMarketData({ |
|
|
filters: this.activeFilters, |
|
|
filters: this.activeFilters, |
|
|
take: this.pageSize |
|
|
take: this.pageSize |
|
|
}); |
|
|
}); |
|
|
}), |
|
|
}) |
|
|
|
|
|
); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
observable.pipe( |
|
|
takeUntil(this.unsubscribeSubject) |
|
|
takeUntil(this.unsubscribeSubject) |
|
|
) |
|
|
).subscribe(({ marketData }) => { |
|
|
.subscribe(({ marketData }) => { |
|
|
|
|
|
this.dataSource = new MatTableDataSource(marketData); |
|
|
this.dataSource = new MatTableDataSource(marketData); |
|
|
this.dataSource.sort = this.sort; |
|
|
this.dataSource.sort = this.sort; |
|
|
this.isLoading = false; |
|
|
this.isLoading = false; |
|
|
|
|
|
|
|
|
this.changeDetectorRef.markForCheck(); |
|
|
this.changeDetectorRef.markForCheck(); |
|
|
}); |
|
|
}); |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
this.router.navigate(['.'], { relativeTo: this.route }); |
|
|
this.router.navigate(['.'], { relativeTo: this.route }); |
|
|
}); |
|
|
}); |
|
|
|