Browse Source

Limit type filter in activities table component to used types

pull/7602/head
Thomas Kaul 1 week ago
parent
commit
c06f42ac52
  1. 14
      apps/api/src/app/user/user.service.ts
  2. 25
      apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts
  3. 2
      libs/ui/src/lib/activities-table/activities-table.component.html
  4. 2
      prisma/migrations/20260822000000_updated_indexes_of_order/migration.sql
  5. 2
      prisma/schema.prisma

14
apps/api/src/app/user/user.service.ts

@ -61,7 +61,7 @@ import { Injectable, Logger } from '@nestjs/common';
import { EventEmitter2 } from '@nestjs/event-emitter'; import { EventEmitter2 } from '@nestjs/event-emitter';
import { InjectThrottlerStorage, ThrottlerStorage } from '@nestjs/throttler'; import { InjectThrottlerStorage, ThrottlerStorage } from '@nestjs/throttler';
import { Prisma, Role, User } from '@prisma/client'; import { Prisma, Role, User } from '@prisma/client';
import { differenceInDays, min, subDays } from 'date-fns'; import { differenceInDays, subDays } from 'date-fns';
import { isNil, without } from 'lodash'; import { isNil, without } from 'lodash';
import { createHmac } from 'node:crypto'; import { createHmac } from 'node:crypto';
@ -169,16 +169,10 @@ export class UserService {
return type; return type;
}); });
const datesOfFirstActivityByType = activitiesGroupedByType.map( // The groupBy is ordered by the minimum date, thus the first group
({ _min }) => { // carries the date of the first activity
return _min.date;
}
);
const dateOfFirstActivity = const dateOfFirstActivity =
datesOfFirstActivityByType.length > 0 activitiesGroupedByType[0]?._min.date ?? new Date();
? min(datesOfFirstActivityByType)
: new Date();
const resolvedUserSettings = resolveUserSettings({ const resolvedUserSettings = resolveUserSettings({
impersonationUserSettings: impersonationUser?.settings impersonationUserSettings: impersonationUser?.settings

25
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts

@ -648,17 +648,18 @@ export class GfHoldingDetailDialogComponent implements OnInit {
this.dataService this.dataService
.postActivity(activity) .postActivity(activity)
.pipe( .pipe(
takeUntilDestroyed(this.destroyRef),
switchMap(() => { switchMap(() => {
return this.userService.get(true); return this.userService.get(true);
}), })
takeUntilDestroyed(this.destroyRef)
) )
.subscribe(() => { .subscribe({
this.router.navigate( error: () => {
internalRoutes.portfolio.subRoutes.activities.routerLink this.navigateToActivities();
); },
next: () => {
this.dialogRef.close(); this.navigateToActivities();
}
}); });
} }
@ -734,4 +735,12 @@ export class GfHoldingDetailDialogComponent implements OnInit {
{ id: this.data.symbol, type: 'SYMBOL' } { id: this.data.symbol, type: 'SYMBOL' }
]; ];
} }
private navigateToActivities() {
this.router.navigate(
internalRoutes.portfolio.subRoutes.activities.routerLink
);
this.dialogRef.close();
}
} }

2
libs/ui/src/lib/activities-table/activities-table.component.html

@ -2,7 +2,7 @@
class="align-items-center d-flex justify-content-end justify-content-lg-between" class="align-items-center d-flex justify-content-end justify-content-lg-between"
> >
<div class="d-none d-lg-flex"> <div class="d-none d-lg-flex">
@if (hasPermissionToFilterByType && activityTypeOptions().length > 0) { @if (hasPermissionToFilterByType && activityTypeOptions().length > 1) {
<mat-form-field appearance="outline" class="without-hint"> <mat-form-field appearance="outline" class="without-hint">
<mat-label i18n>Type</mat-label> <mat-label i18n>Type</mat-label>
<mat-select multiple [formControl]="typesFilter"> <mat-select multiple [formControl]="typesFilter">

2
prisma/migrations/20260822000000_updated_indexes_of_order/migration.sql

@ -14,4 +14,4 @@ CREATE INDEX "Order_symbolProfileId_date_idx" ON "Order"("symbolProfileId", "dat
CREATE INDEX "Order_userId_date_type_idx" ON "Order"("userId", "date", "type"); CREATE INDEX "Order_userId_date_type_idx" ON "Order"("userId", "date", "type");
-- CreateIndex -- CreateIndex
CREATE INDEX "Order_userId_type_idx" ON "Order"("userId", "type"); CREATE INDEX "Order_userId_type_date_idx" ON "Order"("userId", "type", "date");

2
prisma/schema.prisma

@ -197,7 +197,7 @@ model Order {
@@index([date]) @@index([date])
@@index([symbolProfileId, date]) @@index([symbolProfileId, date])
@@index([userId, date, type]) @@index([userId, date, type])
@@index([userId, type]) @@index([userId, type, date])
} }
model Platform { model Platform {

Loading…
Cancel
Save