Feature/expose thresholds in rule settings (#3770)

This commit is contained in:
Thomas Kaul
2024-09-14 19:42:37 +02:00
committed by GitHub
parent 9fb80e5067
commit 3de192c65e
2 changed files with 18 additions and 7 deletions

View File

@@ -1,6 +1,9 @@
import { RuleSettings } from '@ghostfolio/api/models/interfaces/rule-settings.interface'; import { RuleSettings } from '@ghostfolio/api/models/interfaces/rule-settings.interface';
import { Rule } from '@ghostfolio/api/models/rule'; import { Rule } from '@ghostfolio/api/models/rule';
import { UserSettings } from '@ghostfolio/common/interfaces'; import {
PortfolioReportRule,
UserSettings
} from '@ghostfolio/common/interfaces';
import { Injectable } from '@nestjs/common'; import { Injectable } from '@nestjs/common';
@@ -11,19 +14,23 @@ export class RulesService {
public async evaluate<T extends RuleSettings>( public async evaluate<T extends RuleSettings>(
aRules: Rule<T>[], aRules: Rule<T>[],
aUserSettings: UserSettings aUserSettings: UserSettings
) { ): Promise<PortfolioReportRule[]> {
return aRules.map((rule) => { return aRules.map((rule) => {
if (rule.getSettings(aUserSettings)?.isActive) { const settings = rule.getSettings(aUserSettings);
const { evaluation, value } = rule.evaluate(
rule.getSettings(aUserSettings) if (settings?.isActive) {
); const { evaluation, value } = rule.evaluate(settings);
return { return {
evaluation, evaluation,
value, value,
isActive: true, isActive: true,
key: rule.getKey(), key: rule.getKey(),
name: rule.getName() name: rule.getName(),
settings: <PortfolioReportRule['settings']>{
thresholdMax: settings['thresholdMax'],
thresholdMin: settings['thresholdMin']
}
}; };
} else { } else {
return { return {

View File

@@ -3,5 +3,9 @@ export interface PortfolioReportRule {
isActive: boolean; isActive: boolean;
key: string; key: string;
name: string; name: string;
settings?: {
thresholdMax?: number;
thresholdMin?: number;
};
value?: boolean; value?: boolean;
} }