Browse Source

Refactoring

pull/7146/head
Thomas Kaul 3 weeks ago
parent
commit
b45c102e58
  1. 74
      apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts

74
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts

@ -1,5 +1,6 @@
import { UserService } from '@ghostfolio/client/services/user/user.service'; import { UserService } from '@ghostfolio/client/services/user/user.service';
import { CreateAccessDto, UpdateAccessDto } from '@ghostfolio/common/dtos'; import { CreateAccessDto, UpdateAccessDto } from '@ghostfolio/common/dtos';
import { getAssetProfileIdentifier } from '@ghostfolio/common/helper';
import { Filter, PortfolioPosition } from '@ghostfolio/common/interfaces'; import { Filter, PortfolioPosition } from '@ghostfolio/common/interfaces';
import { AccountWithPlatform } from '@ghostfolio/common/types'; import { AccountWithPlatform } from '@ghostfolio/common/types';
import { validateObjectForForm } from '@ghostfolio/common/utils'; import { validateObjectForForm } from '@ghostfolio/common/utils';
@ -38,7 +39,7 @@ import {
import { MatFormFieldModule } from '@angular/material/form-field'; import { MatFormFieldModule } from '@angular/material/form-field';
import { MatInputModule } from '@angular/material/input'; import { MatInputModule } from '@angular/material/input';
import { MatSelectModule } from '@angular/material/select'; import { MatSelectModule } from '@angular/material/select';
import { AccessPermission, AssetClass } from '@prisma/client'; import { AccessPermission, AssetClass, DataSource } from '@prisma/client';
import { StatusCodes } from 'http-status-codes'; import { StatusCodes } from 'http-status-codes';
import { EMPTY, catchError } from 'rxjs'; import { EMPTY, catchError } from 'rxjs';
@ -146,8 +147,6 @@ export class GfCreateOrUpdateAccessDialogComponent implements OnInit {
return a.label.localeCompare(b.label); return a.label.localeCompare(b.label);
}) ?? []; }) ?? [];
this.updateFiltersFormControl(this.data.access?.settings?.filters);
this.changeDetectorRef.markForCheck(); this.changeDetectorRef.markForCheck();
}); });
@ -344,61 +343,30 @@ export class GfCreateOrUpdateAccessDialogComponent implements OnInit {
} }
} }
private updateFiltersFormControl(existingFilters: Filter[] | undefined) { private updateFiltersFormControl(filters: Filter[] | undefined) {
if (!existingFilters?.length) { if (!filters?.length) {
return; return;
} }
const filterValue: Partial<PortfolioFilterFormValue> = {}; const getFilterId = (type: Filter['type']) => {
return filters.find((filter) => filter.type === type)?.id ?? null;
const accountFilter = existingFilters.find(({ type }) => { };
return type === 'ACCOUNT';
});
if (accountFilter && this.accounts.length > 0) {
filterValue.account = accountFilter.id;
}
const assetClassFilter = existingFilters.find(({ type }) => {
return type === 'ASSET_CLASS';
});
if (assetClassFilter && this.assetClasses.length > 0) {
filterValue.assetClass = assetClassFilter.id;
}
const dataSourceFilter = existingFilters.find(({ type }) => {
return type === 'DATA_SOURCE';
});
const symbolFilter = existingFilters.find(({ type }) => {
return type === 'SYMBOL';
});
if (dataSourceFilter && symbolFilter && this.holdings.length > 0) {
const holding = this.holdings.find(({ assetProfile }) => {
return (
assetProfile.dataSource === dataSourceFilter.id &&
assetProfile.symbol === symbolFilter.id
);
});
if (holding) {
filterValue.holding = holding;
}
}
const tagFilter = existingFilters.find(({ type }) => { const dataSource = getFilterId('DATA_SOURCE') as DataSource;
return type === 'TAG'; const symbol = getFilterId('SYMBOL');
const holding = this.holdings.find(({ assetProfile }) => {
return (
!!(dataSource && symbol) &&
getAssetProfileIdentifier(assetProfile) ===
getAssetProfileIdentifier({ dataSource, symbol })
);
}); });
if (tagFilter && this.tags.length > 0) { this.accessForm.get('filters')?.setValue({
filterValue.tag = tagFilter.id; account: getFilterId('ACCOUNT'),
} assetClass: getFilterId('ASSET_CLASS'),
holding: holding ?? null,
if (Object.keys(filterValue).length > 0) { tag: getFilterId('TAG')
this.accessForm.get('filters')?.setValue(filterValue); } satisfies PortfolioFilterFormValue);
this.changeDetectorRef.markForCheck();
}
} }
} }

Loading…
Cancel
Save