Browse Source

Task/apply second review

Address PR feedback: alphabetical ordering of query params,
short form usage, reuse splitStringToArray, and add changelog entry
Airthee 5 days ago
parent
commit
0d734afdfa
No known key found for this signature in database GPG Key ID: C7EADC5599E355EC
  1. 1
      CHANGELOG.md
  2. 4
      apps/api/src/app/activities/activities.controller.ts
  3. 8
      apps/api/src/app/export/export.controller.ts
  4. 4
      apps/api/src/app/export/export.service.ts
  5. 14
      apps/client/src/app/pages/portfolio/activities/activities-page.component.ts
  6. 12
      libs/ui/src/lib/services/data.service.ts

1
CHANGELOG.md

@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Extended the holding detail dialog by adding a copy-to-clipboard button for the ISIN number (experimental)
- Extended the holding detail dialog by adding a copy-to-clipboard button for the symbol (experimental)
- Extended the user detail dialog of the admin control panel’s users section by adding a copy-to-clipboard button for the user id
- Added a filter by activity type to the activities page (experimental)
### Changed

4
apps/api/src/app/activities/activities.controller.ts

@ -113,6 +113,7 @@ export class ActivitiesController {
public async getAllActivities(
@Headers(HEADER_KEY_IMPERSONATION.toLowerCase()) impersonationId: string,
@Query('accounts') filterByAccounts?: string,
@Query('activityTypes') filterByTypes?: string,
@Query('assetClasses') filterByAssetClasses?: string,
@Query('dataSource') filterByDataSource?: string,
@Query('range') dateRange?: DateRange,
@ -121,8 +122,7 @@ export class ActivitiesController {
@Query('sortDirection') sortDirection?: Prisma.SortOrder,
@Query('symbol') filterBySymbol?: string,
@Query('tags') filterByTags?: string,
@Query('take') take?: number,
@Query('activityTypes') filterByTypes?: string
@Query('take') take?: number
): Promise<ActivitiesResponse> {
const types = filterByTypes
? (splitStringToArray(filterByTypes) as ActivityType[])

8
apps/api/src/app/export/export.controller.ts

@ -35,13 +35,13 @@ export class ExportController {
public async export(
@Query('accounts') filterByAccounts?: string,
@Query('activityIds') filterByActivityIds?: string,
@Query('activityTypes') filterByTypes?: string,
@Query('assetClasses') filterByAssetClasses?: string,
@Query('dataSource') filterByDataSource?: string,
@Query('symbol') filterBySymbol?: string,
@Query('tags') filterByTags?: string,
@Query('activityTypes') filterByTypes?: string
@Query('tags') filterByTags?: string
): Promise<ExportResponse> {
const activityIds = filterByActivityIds?.split(',') ?? [];
const activityIds = splitStringToArray(filterByActivityIds);
const activityTypes = filterByTypes
? (splitStringToArray(filterByTypes) as ActivityType[])
: undefined;
@ -55,8 +55,8 @@ export class ExportController {
return this.exportService.export({
activityIds,
activityTypes,
filters,
activityTypes: activityTypes,
userId: this.request.user.id,
userSettings: this.request.user.settings.settings
});

4
apps/api/src/app/export/export.service.ts

@ -30,8 +30,8 @@ export class ExportService {
userSettings
}: {
activityIds?: string[];
filters?: Filter[];
activityTypes?: ActivityType[];
filters?: Filter[];
userId: string;
userSettings: UserSettings;
}): Promise<ExportResponse> {
@ -42,8 +42,8 @@ export class ExportService {
let { activities } = await this.activitiesService.getActivities({
filters,
types: activityTypes,
userId,
types: activityTypes,
includeDrafts: true,
sortColumn: 'date',
sortDirection: 'asc',

14
apps/client/src/app/pages/portfolio/activities/activities-page.component.ts

@ -141,15 +141,15 @@ export class GfActivitiesPageComponent implements OnInit {
this.dataService
.fetchActivities({
range,
activityTypes: this.activityTypesFilter.length
? this.activityTypesFilter
: undefined,
filters: this.userService.getFilters(),
range,
skip: this.pageIndex * this.pageSize,
sortColumn: this.sortColumn,
sortDirection: this.sortDirection,
take: this.pageSize,
activityTypes: this.activityTypesFilter.length
? this.activityTypesFilter
: undefined
take: this.pageSize
})
.pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(({ activities, count }) => {
@ -222,10 +222,10 @@ export class GfActivitiesPageComponent implements OnInit {
if (!activityIds) {
fetchExportParams = {
filters: this.userService.getFilters(),
activityTypes: this.activityTypesFilter.length
? this.activityTypesFilter
: undefined
: undefined,
filters: this.userService.getFilters()
};
}

12
libs/ui/src/lib/services/data.service.ts

@ -209,13 +209,13 @@ export class DataService {
}
public fetchActivities({
activityTypes,
filters,
range,
skip,
sortColumn,
sortDirection,
take,
activityTypes
take
}: {
activityTypes?: string[];
filters?: Filter[];
@ -227,6 +227,10 @@ export class DataService {
}): Observable<ActivitiesResponse> {
let params = this.buildFiltersAsQueryParams({ filters });
if (activityTypes?.length) {
params = params.append('activityTypes', activityTypes.join(','));
}
if (range) {
params = params.append('range', range);
}
@ -247,10 +251,6 @@ export class DataService {
params = params.append('take', take);
}
if (activityTypes?.length) {
params = params.append('activityTypes', activityTypes.join(','));
}
return this.http.get<any>('/api/v1/activities', { params }).pipe(
map(({ activities, count }) => {
for (const activity of activities) {

Loading…
Cancel
Save