Browse Source

Limit type filter in activities table component to used types

pull/7602/head
Thomas Kaul 2 weeks ago
parent
commit
c24c0ad986
  1. 2
      apps/api/src/app/portfolio/portfolio.service.spec.ts
  2. 22
      apps/api/src/app/user/user.service.ts
  3. 1
      libs/common/src/lib/types/user-with-settings.type.ts
  4. 4
      libs/ui/src/lib/activities-table/activities-table.component.html
  5. 2
      libs/ui/src/lib/activities-table/activities-table.component.ts

2
apps/api/src/app/portfolio/portfolio.service.spec.ts

@ -247,7 +247,7 @@ describe('PortfolioService', () => {
jest.spyOn(userService, 'user').mockResolvedValue({
accounts: [],
activityCount: 0,
activitiesCount: 0,
dataProviderGhostfolioDailyRequests: 0,
id: userDummyData.id,
settings: {

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

@ -62,7 +62,7 @@ import { EventEmitter2 } from '@nestjs/event-emitter';
import { InjectThrottlerStorage, ThrottlerStorage } from '@nestjs/throttler';
import { Prisma, Role, User } from '@prisma/client';
import { differenceInDays, subDays } from 'date-fns';
import { isNil, min, without } from 'lodash';
import { isNil, without } from 'lodash';
import { createHmac } from 'node:crypto';
@Injectable()
@ -152,6 +152,7 @@ export class UserService {
this.prismaService.order.groupBy({
_min: { date: true },
by: ['type'],
orderBy: { _min: { date: 'asc' } },
where: { userId: impersonationUserId || user.id }
}),
impersonationUserId
@ -160,20 +161,18 @@ export class UserService {
this.tagService.getTagsForUser(impersonationUserId || user.id)
]);
const activitiesCount = impersonationUser
? impersonationUser.activitiesCount
const activitiesCount = impersonationUserId
? (impersonationUser?.activitiesCount ?? 0)
: user.activitiesCount;
const activityTypes = activitiesGroupedByType.map(({ type }) => {
return type;
});
const activityTypes = activitiesGroupedByType
.map(({ type }) => {
return type;
})
.sort();
const dateOfFirstActivity =
min(
activitiesGroupedByType.map(({ _min }) => {
return _min.date;
})
) ?? new Date();
activitiesGroupedByType[0]?._min.date ?? new Date();
const resolvedUserSettings = resolveUserSettings({
impersonationUserSettings: impersonationUser?.settings
@ -345,7 +344,6 @@ export class UserService {
settings: settings as UserWithSettings['settings'],
thirdPartyId,
updatedAt,
activityCount: analytics?.activityCount,
dataProviderGhostfolioDailyRequests:
analytics?.dataProviderGhostfolioDailyRequests ?? 0
};

1
libs/common/src/lib/types/user-with-settings.type.ts

@ -7,7 +7,6 @@ import { Account, Settings, User } from '@prisma/client';
export type UserWithSettings = User & {
accounts: Account[];
activitiesCount: number;
activityCount: number;
dataProviderGhostfolioDailyRequests: number;
permissions?: string[];
settings: Settings & { settings: UserSettings };

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

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

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

@ -176,7 +176,7 @@ export class GfActivitiesTableComponent implements AfterViewInit, OnInit {
protected readonly activityTypesTranslationMap = computed(() => {
const translationMap = new Map<ActivityType, string>();
for (const activityType of this.activityTypes()) {
for (const activityType of this.activityTypes() ?? []) {
translationMap.set(activityType, translate(activityType));
}

Loading…
Cancel
Save