- @if (hasPermissionToCreateOrder && rules === null) {
-
-
-
-
-
- }
-
@if (isLoading) {
}
@if (rules !== null && rules !== undefined) {
@for (rule of rules; track rule.key) {
-
+
}
}
diff --git a/apps/client/src/app/components/rules/rules.component.ts b/apps/client/src/app/components/rules/rules.component.ts
index ec8aad7c2..b8493e7be 100644
--- a/apps/client/src/app/components/rules/rules.component.ts
+++ b/apps/client/src/app/components/rules/rules.component.ts
@@ -16,7 +16,7 @@ import {
styleUrls: ['./rules.component.scss']
})
export class RulesComponent {
- @Input() hasPermissionToCreateOrder: boolean;
+ @Input() hasPermissionToUpdateUserSettings: boolean;
@Input() isLoading: boolean;
@Input() rules: PortfolioReportRule[];
diff --git a/apps/client/src/app/components/rules/rules.module.ts b/apps/client/src/app/components/rules/rules.module.ts
index 26ed1d83e..c62cbc3bd 100644
--- a/apps/client/src/app/components/rules/rules.module.ts
+++ b/apps/client/src/app/components/rules/rules.module.ts
@@ -1,5 +1,4 @@
import { GfRuleModule } from '@ghostfolio/client/components/rule/rule.module';
-import { GfNoTransactionsInfoComponent } from '@ghostfolio/ui/no-transactions-info';
import { CommonModule } from '@angular/common';
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
@@ -11,13 +10,7 @@ import { RulesComponent } from './rules.component';
@NgModule({
declarations: [RulesComponent],
exports: [RulesComponent],
- imports: [
- CommonModule,
- GfNoTransactionsInfoComponent,
- GfRuleModule,
- MatButtonModule,
- MatCardModule
- ],
+ imports: [CommonModule, GfRuleModule, MatButtonModule, MatCardModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA]
})
export class GfRulesModule {}
diff --git a/apps/client/src/app/pages/portfolio/fire/fire-page.component.ts b/apps/client/src/app/pages/portfolio/fire/fire-page.component.ts
index 6c9239c70..3a24de9cb 100644
--- a/apps/client/src/app/pages/portfolio/fire/fire-page.component.ts
+++ b/apps/client/src/app/pages/portfolio/fire/fire-page.component.ts
@@ -28,11 +28,10 @@ export class FirePageComponent implements OnDestroy, OnInit {
public feeRules: PortfolioReportRule[];
public fireWealth: Big;
public hasImpersonationId: boolean;
- public hasPermissionToCreateOrder: boolean;
public hasPermissionToUpdateUserSettings: boolean;
+ public inactiveRules: PortfolioReportRule[];
public isLoading = false;
public isLoadingPortfolioReport = false;
- public inactiveRules: PortfolioReportRule[];
public user: User;
public withdrawalRatePerMonth: Big;
public withdrawalRatePerYear: Big;
@@ -71,7 +70,6 @@ export class FirePageComponent implements OnDestroy, OnInit {
this.changeDetectorRef.markForCheck();
});
- this.initializePortfolioReport();
this.impersonationStorageService
.onChangeHasImpersonation()
.pipe(takeUntil(this.unsubscribeSubject))
@@ -85,11 +83,6 @@ export class FirePageComponent implements OnDestroy, OnInit {
if (state?.user) {
this.user = state.user;
- this.hasPermissionToCreateOrder = hasPermission(
- this.user.permissions,
- permissions.createOrder
- );
-
this.hasPermissionToUpdateUserSettings =
this.user.subscription?.type === 'Basic'
? false
@@ -101,34 +94,8 @@ export class FirePageComponent implements OnDestroy, OnInit {
this.changeDetectorRef.markForCheck();
}
});
- }
-
- public initializePortfolioReport() {
- this.isLoadingPortfolioReport = true;
-
- this.dataService
- .fetchPortfolioReport()
- .pipe(takeUntil(this.unsubscribeSubject))
- .subscribe((portfolioReport) => {
- this.inactiveRules = this.mergeInactiveRules(portfolioReport);
- this.accountClusterRiskRules =
- portfolioReport.rules['accountClusterRisk'].filter(
- (rule) => rule.isActive
- ) || null;
- this.currencyClusterRiskRules =
- portfolioReport.rules['currencyClusterRisk'].filter(
- (rule) => rule.isActive
- ) || null;
- this.emergencyFundRules =
- portfolioReport.rules['emergencyFund'].filter(
- (rule) => rule.isActive
- ) || null;
- this.feeRules =
- portfolioReport.rules['fees'].filter((rule) => rule.isActive) || null;
- this.isLoadingPortfolioReport = false;
- this.changeDetectorRef.markForCheck();
- });
+ this.initializePortfolioReport();
}
public onAnnualInterestRateChange(annualInterestRate: number) {
@@ -220,21 +187,63 @@ export class FirePageComponent implements OnDestroy, OnInit {
});
}
- public mergeInactiveRules(report: PortfolioReport): PortfolioReportRule[] {
+ public ngOnDestroy() {
+ this.unsubscribeSubject.next();
+ this.unsubscribeSubject.complete();
+ }
+
+ private initializePortfolioReport() {
+ this.isLoadingPortfolioReport = true;
+
+ this.dataService
+ .fetchPortfolioReport()
+ .pipe(takeUntil(this.unsubscribeSubject))
+ .subscribe((portfolioReport) => {
+ this.inactiveRules = this.mergeInactiveRules(portfolioReport);
+
+ this.accountClusterRiskRules =
+ portfolioReport.rules['accountClusterRisk']?.filter(
+ ({ isActive }) => {
+ return isActive;
+ }
+ ) ?? null;
+
+ this.currencyClusterRiskRules =
+ portfolioReport.rules['currencyClusterRisk']?.filter(
+ ({ isActive }) => {
+ return isActive;
+ }
+ ) ?? null;
+
+ this.emergencyFundRules =
+ portfolioReport.rules['emergencyFund']?.filter(({ isActive }) => {
+ return isActive;
+ }) ?? null;
+
+ this.feeRules =
+ portfolioReport.rules['fees']?.filter(({ isActive }) => {
+ return isActive;
+ }) ?? null;
+
+ this.isLoadingPortfolioReport = false;
+
+ this.changeDetectorRef.markForCheck();
+ });
+ }
+
+ private mergeInactiveRules(report: PortfolioReport): PortfolioReportRule[] {
let inactiveRules: PortfolioReportRule[] = [];
+
for (const category in report.rules) {
const rulesArray = report.rules[category];
+
inactiveRules = inactiveRules.concat(
- rulesArray.filter((rule) => !rule.isActive)
+ rulesArray.filter(({ isActive }) => {
+ return !isActive;
+ })
);
- rulesArray.filter((rule) => rule.isActive);
}
- console.log(inactiveRules);
- return inactiveRules;
- }
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
+ return inactiveRules;
}
}
diff --git a/apps/client/src/app/pages/portfolio/fire/fire-page.html b/apps/client/src/app/pages/portfolio/fire/fire-page.html
index e24add5dd..c6f0e581f 100644
--- a/apps/client/src/app/pages/portfolio/fire/fire-page.html
+++ b/apps/client/src/app/pages/portfolio/fire/fire-page.html
@@ -125,7 +125,9 @@
}