Browse Source

add business logic of rule settings

pull/3826/head
Shaunak Das 11 months ago
committed by Thomas Kaul
parent
commit
6b8befdd36
  1. 4
      apps/api/src/app/user/update-user-setting.dto.ts
  2. 2
      apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.component.ts
  3. 26
      apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html
  4. 2
      apps/client/src/app/components/rule/rule.component.html
  5. 10
      apps/client/src/app/components/rule/rule.component.ts

4
apps/api/src/app/user/update-user-setting.dto.ts

@ -1,4 +1,5 @@
import { IsCurrencyCode } from '@ghostfolio/api/validators/is-currency-code'; import { IsCurrencyCode } from '@ghostfolio/api/validators/is-currency-code';
import { PortfolioReportRule } from '@ghostfolio/common/interfaces';
import type { import type {
ColorScheme, ColorScheme,
DateRange, DateRange,
@ -88,6 +89,9 @@ export class UpdateUserSettingDto {
@IsOptional() @IsOptional()
locale?: string; locale?: string;
@IsOptional()
portfolioSettings?: PortfolioReportRule['settings'];
@IsNumber() @IsNumber()
@IsOptional() @IsOptional()
projectedTotalAmount?: number; projectedTotalAmount?: number;

2
apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.component.ts

@ -2,6 +2,7 @@ import { PortfolioReportRule } from '@ghostfolio/common/interfaces';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { Component, Inject } from '@angular/core'; import { Component, Inject } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { MatButtonModule } from '@angular/material/button'; import { MatButtonModule } from '@angular/material/button';
import { import {
MAT_DIALOG_DATA, MAT_DIALOG_DATA,
@ -16,6 +17,7 @@ import { IRuleSettingsDialogParams } from './interfaces/interfaces';
@Component({ @Component({
imports: [ imports: [
CommonModule, CommonModule,
FormsModule,
MatButtonModule, MatButtonModule,
MatDialogModule, MatDialogModule,
MatFormFieldModule, MatFormFieldModule,

26
apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html

@ -1,13 +1,31 @@
<div mat-dialog-title>{{ data.rule.name }}</div> <div mat-dialog-title>{{ data.rule.name }}</div>
<div class="py-3" mat-dialog-content> <div class="py-3" mat-dialog-content>
<mat-form-field appearance="outline" class="w-100"> <mat-form-field
appearance="outline"
class="w-100"
[ngClass]="{ 'd-none': settings.thresholdMin === undefined }"
>
<mat-label i18n>Threshold Min</mat-label> <mat-label i18n>Threshold Min</mat-label>
<input matInput name="thresholdMin" type="number" /> <input
matInput
name="thresholdMin"
type="number"
[(ngModel)]="settings.thresholdMin"
/>
</mat-form-field> </mat-form-field>
<mat-form-field appearance="outline" class="w-100"> <mat-form-field
appearance="outline"
class="w-100"
[ngClass]="{ 'd-none': settings.thresholdMax === undefined }"
>
<mat-label i18n>Threshold Max</mat-label> <mat-label i18n>Threshold Max</mat-label>
<input matInput name="thresholdMax" type="number" /> <input
matInput
name="thresholdMax"
type="number"
[(ngModel)]="settings.thresholdMax"
/>
</mat-form-field> </mat-form-field>
</div> </div>

2
apps/client/src/app/components/rule/rule.component.html

@ -62,7 +62,7 @@
<ion-icon name="ellipsis-horizontal" /> <ion-icon name="ellipsis-horizontal" />
</button> </button>
<mat-menu #rulesMenu="matMenu" xPosition="before"> <mat-menu #rulesMenu="matMenu" xPosition="before">
@if (rule?.isActive && !isEmpty(rule.settings) && false) { @if (rule?.isActive && !isEmpty(rule.settings)) {
<button mat-menu-item (click)="onCustomizeRule(rule)"> <button mat-menu-item (click)="onCustomizeRule(rule)">
<ng-container i18n>Customize</ng-container>... <ng-container i18n>Customize</ng-container>...
</button> </button>

10
apps/client/src/app/components/rule/rule.component.ts

@ -58,10 +58,12 @@ export class RuleComponent implements OnInit {
.subscribe( .subscribe(
({ settings }: { settings: PortfolioReportRule['settings'] }) => { ({ settings }: { settings: PortfolioReportRule['settings'] }) => {
if (settings) { if (settings) {
console.log(settings); const updatedSettings: UpdateUserSettingDto = {
portfolioSettings: {
// TODO ...settings
// this.ruleUpdated.emit(settings); }
};
this.ruleUpdated.emit(updatedSettings);
} }
} }
); );

Loading…
Cancel
Save