|
|
@ -54,41 +54,40 @@ export const DATE_FORMAT = 'yyyy-MM-dd'; |
|
|
export const DATE_FORMAT_MONTHLY = 'MMMM yyyy'; |
|
|
export const DATE_FORMAT_MONTHLY = 'MMMM yyyy'; |
|
|
export const DATE_FORMAT_YEARLY = 'yyyy'; |
|
|
export const DATE_FORMAT_YEARLY = 'yyyy'; |
|
|
|
|
|
|
|
|
export function applySymbolProfileOverrides<T extends Partial<SymbolProfile>>( |
|
|
export function applyAssetProfileOverrides<T extends Partial<SymbolProfile>>( |
|
|
symbolProfile: T, |
|
|
assetProfile: T, |
|
|
symbolProfileOverrides: SymbolProfileOverrides | null |
|
|
assetProfileOverrides: SymbolProfileOverrides | null |
|
|
): T { |
|
|
): T { |
|
|
if (!symbolProfileOverrides) { |
|
|
if (!assetProfileOverrides) { |
|
|
return symbolProfile; |
|
|
return assetProfile; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
const symbolProfileWithOverrides = { ...symbolProfile } as T; |
|
|
const assetProfileWithOverrides = { ...assetProfile } as T; |
|
|
|
|
|
|
|
|
symbolProfileWithOverrides.assetClass = |
|
|
assetProfileWithOverrides.assetClass = |
|
|
symbolProfileOverrides.assetClass ?? symbolProfile.assetClass; |
|
|
assetProfileOverrides.assetClass ?? assetProfile.assetClass; |
|
|
|
|
|
|
|
|
symbolProfileWithOverrides.assetSubClass = |
|
|
assetProfileWithOverrides.assetSubClass = |
|
|
symbolProfileOverrides.assetSubClass ?? symbolProfile.assetSubClass; |
|
|
assetProfileOverrides.assetSubClass ?? assetProfile.assetSubClass; |
|
|
|
|
|
|
|
|
if ((symbolProfileOverrides.countries as Prisma.JsonArray)?.length > 0) { |
|
|
if ((assetProfileOverrides.countries as Prisma.JsonArray)?.length > 0) { |
|
|
symbolProfileWithOverrides.countries = symbolProfileOverrides.countries; |
|
|
assetProfileWithOverrides.countries = assetProfileOverrides.countries; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if ((symbolProfileOverrides.holdings as Prisma.JsonArray)?.length > 0) { |
|
|
if ((assetProfileOverrides.holdings as Prisma.JsonArray)?.length > 0) { |
|
|
symbolProfileWithOverrides.holdings = symbolProfileOverrides.holdings; |
|
|
assetProfileWithOverrides.holdings = assetProfileOverrides.holdings; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
symbolProfileWithOverrides.name = |
|
|
assetProfileWithOverrides.name = |
|
|
symbolProfileOverrides.name ?? symbolProfile.name; |
|
|
assetProfileOverrides.name ?? assetProfile.name; |
|
|
|
|
|
|
|
|
if ((symbolProfileOverrides.sectors as Prisma.JsonArray)?.length > 0) { |
|
|
if ((assetProfileOverrides.sectors as Prisma.JsonArray)?.length > 0) { |
|
|
symbolProfileWithOverrides.sectors = symbolProfileOverrides.sectors; |
|
|
assetProfileWithOverrides.sectors = assetProfileOverrides.sectors; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
symbolProfileWithOverrides.url = |
|
|
assetProfileWithOverrides.url = assetProfileOverrides.url ?? assetProfile.url; |
|
|
symbolProfileOverrides.url ?? symbolProfile.url; |
|
|
|
|
|
|
|
|
|
|
|
return symbolProfileWithOverrides; |
|
|
return assetProfileWithOverrides; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
export function calculateBenchmarkTrend({ |
|
|
export function calculateBenchmarkTrend({ |
|
|
|