Browse Source

code review changes

pull/5148/head
Attila Cseh 1 month ago
parent
commit
d141ce7aba
  1. 61
      apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
  2. 1
      apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
  3. 2
      apps/client/src/app/components/admin-market-data/asset-profile-dialog/interfaces/interfaces.ts
  4. 17
      libs/common/src/lib/config.ts

61
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts

@ -6,6 +6,7 @@ import { DataService } from '@ghostfolio/client/services/data.service';
import { UserService } from '@ghostfolio/client/services/user/user.service';
import { validateObjectForForm } from '@ghostfolio/client/util/form.util';
import {
ASSET_CLASS_MAPPING,
ghostfolioScraperApiSymbolPrefix,
PROPERTY_IS_DATA_GATHERING_ENABLED
} from '@ghostfolio/common/config';
@ -58,7 +59,7 @@ import { catchError, takeUntil } from 'rxjs/operators';
import {
AssetProfileDialogParams,
SelectOptionValue
SelectOption
} from './interfaces/interfaces';
@Component({
@ -82,19 +83,9 @@ export class AssetProfileDialog implements OnDestroy, OnInit {
public assetProfileSubClass: string;
public assetClasses = Object.keys(AssetClass).map((id) => {
return { id, label: translate(id) };
return { id, label: translate(id) } as SelectOption;
});
public allAssetSubClasses = Object.keys(AssetSubClass).reduce(
(acc, id) => {
acc[id] = {
id,
label: translate(id)
};
return acc;
},
{} as Record<AssetSubClass, SelectOptionValue>
);
public assetSubClasses: SelectOptionValue[] = [];
public assetSubClasses: SelectOption[] = [];
public assetProfile: AdminMarketDataDetails['assetProfile'];
@ -233,42 +224,16 @@ export class AssetProfileDialog implements OnDestroy, OnInit {
this.assetClassControl.valueChanges
.pipe(takeUntil(this.unsubscribeSubject))
.subscribe((assetClass) => {
switch (assetClass) {
case AssetClass.ALTERNATIVE_INVESTMENT:
this.assetSubClasses = [
this.allAssetSubClasses[AssetSubClass.COLLECTIBLE]
];
break;
case AssetClass.COMMODITY:
this.assetSubClasses = [
this.allAssetSubClasses[AssetSubClass.COMMODITY],
this.allAssetSubClasses[AssetSubClass.PRECIOUS_METAL]
];
break;
case AssetClass.EQUITY:
this.assetSubClasses = [
this.allAssetSubClasses[AssetSubClass.ETF],
this.allAssetSubClasses[AssetSubClass.PRIVATE_EQUITY],
this.allAssetSubClasses[AssetSubClass.STOCK]
];
break;
case AssetClass.FIXED_INCOME:
this.assetSubClasses = [
this.allAssetSubClasses[AssetSubClass.BOND],
this.allAssetSubClasses[AssetSubClass.MUTUALFUND]
];
break;
case AssetClass.LIQUIDITY:
this.assetSubClasses = [
this.allAssetSubClasses[AssetSubClass.CRYPTOCURRENCY]
];
break;
default:
this.assetSubClasses = [];
break;
}
const assetSubClasses = ASSET_CLASS_MAPPING.get(assetClass) ?? [];
this.assetSubClasses = assetSubClasses.map((assetSubClass) => {
return {
id: assetSubClass,
label: translate(assetSubClass)
};
});
this.assetSubClassControl.setValue(this.assetSubClasses[0]?.id);
this.assetSubClassControl.setValue(null);
this.changeDetectorRef.markForCheck();
});

1
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html

@ -316,6 +316,7 @@
<mat-form-field appearance="outline" class="w-100 without-hint">
<mat-label i18n>Asset Sub Class</mat-label>
<mat-select formControlName="assetSubClass">
<mat-option [value]="null" />
@for (assetSubClass of assetSubClasses; track assetSubClass) {
<mat-option [value]="assetSubClass.id">{{
assetSubClass.label

2
apps/client/src/app/components/admin-market-data/asset-profile-dialog/interfaces/interfaces.ts

@ -10,7 +10,7 @@ export interface AssetProfileDialogParams {
symbol: string;
}
export interface SelectOptionValue {
export interface SelectOption {
id: AssetSubClass;
label: string;
}

17
libs/common/src/lib/config.ts

@ -1,4 +1,4 @@
import { DataSource } from '@prisma/client';
import { AssetClass, AssetSubClass, DataSource } from '@prisma/client';
import { JobOptions, JobStatus } from 'bull';
import ms from 'ms';
@ -34,6 +34,21 @@ export const warnColorRgb = {
b: 69
};
export const ASSET_CLASS_MAPPING = new Map<AssetClass, AssetSubClass[]>([
[AssetClass.ALTERNATIVE_INVESTMENT, [AssetSubClass.COLLECTIBLE]],
[
AssetClass.COMMODITY,
[AssetSubClass.COMMODITY, AssetSubClass.PRECIOUS_METAL]
],
[
AssetClass.EQUITY,
[AssetSubClass.ETF, AssetSubClass.PRIVATE_EQUITY, AssetSubClass.STOCK]
],
[AssetClass.FIXED_INCOME, [AssetSubClass.BOND, AssetSubClass.MUTUALFUND]],
[AssetClass.LIQUIDITY, [AssetSubClass.BOND, AssetSubClass.CRYPTOCURRENCY]],
[AssetClass.REAL_ESTATE, []]
]);
export const CACHE_TTL_NO_CACHE = 1;
export const CACHE_TTL_INFINITE = 0;

Loading…
Cancel
Save