Bugfix/fix adding 'Item' and 'Liability' activities (#2119)
* Fix adding activities of type item and liability * Update changelog
This commit is contained in:
parent
f5180ce88f
commit
0d421e7181
@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
|
|||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
## Unreleased
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Fixed the creation of (wealth) items and liabilities
|
||||||
|
|
||||||
## 1.285.0 - 2023-07-01
|
## 1.285.0 - 2023-07-01
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
@ -241,7 +241,11 @@ export class CreateOrUpdateActivityDialog implements OnDestroy {
|
|||||||
this.activityForm.controls['searchSymbol'].valueChanges.subscribe(() => {
|
this.activityForm.controls['searchSymbol'].valueChanges.subscribe(() => {
|
||||||
if (this.activityForm.controls['searchSymbol'].invalid) {
|
if (this.activityForm.controls['searchSymbol'].invalid) {
|
||||||
this.data.activity.SymbolProfile = null;
|
this.data.activity.SymbolProfile = null;
|
||||||
} else {
|
} else if (
|
||||||
|
['BUY', 'DIVIDEND', 'SELL'].includes(
|
||||||
|
this.activityForm.controls['type'].value
|
||||||
|
)
|
||||||
|
) {
|
||||||
this.activityForm.controls['dataSource'].setValue(
|
this.activityForm.controls['dataSource'].setValue(
|
||||||
this.activityForm.controls['searchSymbol'].value.dataSource
|
this.activityForm.controls['searchSymbol'].value.dataSource
|
||||||
);
|
);
|
||||||
@ -408,8 +412,9 @@ export class CreateOrUpdateActivityDialog implements OnDestroy {
|
|||||||
fee: this.activityForm.controls['fee'].value,
|
fee: this.activityForm.controls['fee'].value,
|
||||||
quantity: this.activityForm.controls['quantity'].value,
|
quantity: this.activityForm.controls['quantity'].value,
|
||||||
symbol:
|
symbol:
|
||||||
this.activityForm.controls['searchSymbol'].value.symbol === undefined ||
|
this.activityForm.controls['searchSymbol'].value?.symbol ===
|
||||||
isUUID(this.activityForm.controls['searchSymbol'].value.symbol)
|
undefined ||
|
||||||
|
isUUID(this.activityForm.controls['searchSymbol'].value?.symbol)
|
||||||
? this.activityForm.controls['name'].value
|
? this.activityForm.controls['name'].value
|
||||||
: this.activityForm.controls['searchSymbol'].value.symbol,
|
: this.activityForm.controls['searchSymbol'].value.symbol,
|
||||||
tags: this.activityForm.controls['tags'].value,
|
tags: this.activityForm.controls['tags'].value,
|
||||||
|
@ -9,7 +9,7 @@ import {
|
|||||||
Input,
|
Input,
|
||||||
OnDestroy
|
OnDestroy
|
||||||
} from '@angular/core';
|
} from '@angular/core';
|
||||||
import { ControlValueAccessor, NgControl } from '@angular/forms';
|
import { ControlValueAccessor, NgControl, Validators } from '@angular/forms';
|
||||||
import { MatFormFieldControl } from '@angular/material/form-field';
|
import { MatFormFieldControl } from '@angular/material/form-field';
|
||||||
import { Subject } from 'rxjs';
|
import { Subject } from 'rxjs';
|
||||||
|
|
||||||
@ -96,7 +96,10 @@ export abstract class AbstractMatFormField<T>
|
|||||||
public _required: boolean = false;
|
public _required: boolean = false;
|
||||||
|
|
||||||
public get required() {
|
public get required() {
|
||||||
return this._required;
|
return (
|
||||||
|
this._required ||
|
||||||
|
this.ngControl.control?.hasValidator(Validators.required)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Input()
|
@Input()
|
||||||
|
@ -9,7 +9,7 @@ import {
|
|||||||
OnInit,
|
OnInit,
|
||||||
ViewChild
|
ViewChild
|
||||||
} from '@angular/core';
|
} from '@angular/core';
|
||||||
import { FormControl, NgControl, Validators } from '@angular/forms';
|
import { FormControl, NgControl } from '@angular/forms';
|
||||||
import {
|
import {
|
||||||
MatAutocomplete,
|
MatAutocomplete,
|
||||||
MatAutocompleteSelectedEvent
|
MatAutocompleteSelectedEvent
|
||||||
@ -25,7 +25,8 @@ import {
|
|||||||
debounceTime,
|
debounceTime,
|
||||||
distinctUntilChanged,
|
distinctUntilChanged,
|
||||||
filter,
|
filter,
|
||||||
switchMap
|
switchMap,
|
||||||
|
takeUntil
|
||||||
} from 'rxjs/operators';
|
} from 'rxjs/operators';
|
||||||
|
|
||||||
import { AbstractMatFormField } from './abstract-mat-form-field';
|
import { AbstractMatFormField } from './abstract-mat-form-field';
|
||||||
@ -76,12 +77,18 @@ export class SymbolAutocompleteComponent
|
|||||||
}
|
}
|
||||||
|
|
||||||
public ngOnInit() {
|
public ngOnInit() {
|
||||||
super.required = this.ngControl.control?.hasValidator(Validators.required);
|
|
||||||
|
|
||||||
if (this.disabled) {
|
if (this.disabled) {
|
||||||
this.control.disable();
|
this.control.disable();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.control.valueChanges
|
||||||
|
.pipe(takeUntil(this.unsubscribeSubject))
|
||||||
|
.subscribe(() => {
|
||||||
|
if (super.value) {
|
||||||
|
super.value.dataSource = null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
this.control.valueChanges
|
this.control.valueChanges
|
||||||
.pipe(
|
.pipe(
|
||||||
debounceTime(400),
|
debounceTime(400),
|
||||||
@ -89,6 +96,7 @@ export class SymbolAutocompleteComponent
|
|||||||
filter((query) => {
|
filter((query) => {
|
||||||
return isString(query) && query.length > 1;
|
return isString(query) && query.length > 1;
|
||||||
}),
|
}),
|
||||||
|
takeUntil(this.unsubscribeSubject),
|
||||||
tap(() => {
|
tap(() => {
|
||||||
this.isLoading = true;
|
this.isLoading = true;
|
||||||
|
|
||||||
@ -136,11 +144,6 @@ export class SymbolAutocompleteComponent
|
|||||||
public ngDoCheck() {
|
public ngDoCheck() {
|
||||||
if (this.ngControl) {
|
if (this.ngControl) {
|
||||||
this.validateRequired();
|
this.validateRequired();
|
||||||
|
|
||||||
if (this.control.touched) {
|
|
||||||
this.validateSelection();
|
|
||||||
}
|
|
||||||
|
|
||||||
this.errorState = this.ngControl.invalid && this.ngControl.touched;
|
this.errorState = this.ngControl.invalid && this.ngControl.touched;
|
||||||
this.stateChanges.next();
|
this.stateChanges.next();
|
||||||
}
|
}
|
||||||
@ -173,13 +176,4 @@ export class SymbolAutocompleteComponent
|
|||||||
this.ngControl.control.setErrors({ invalidData: true });
|
this.ngControl.control.setErrors({ invalidData: true });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private validateSelection() {
|
|
||||||
const error =
|
|
||||||
!this.isValueInOptions(this.input?.value) ||
|
|
||||||
this.input?.value !== super.value?.symbol;
|
|
||||||
if (error) {
|
|
||||||
this.ngControl.control.setErrors({ invalidData: true });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user