Browse Source

Refactoring

pull/2487/head
Thomas 2 years ago
parent
commit
65a8e5b542
  1. 2
      apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.component.ts
  2. 9
      apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.module.ts
  3. 42
      libs/ui/src/lib/currency-selector/currency-selector.component.ts
  4. 5
      libs/ui/src/lib/currency-selector/currency-selector.module.ts
  5. 0
      libs/ui/src/lib/shared/abstract-mat-form-field.ts
  6. 3
      libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.ts

2
apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.component.ts

@ -15,12 +15,12 @@ import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { CreateAccountDto } from '@ghostfolio/api/app/account/create-account.dto'; import { CreateAccountDto } from '@ghostfolio/api/app/account/create-account.dto';
import { UpdateAccountDto } from '@ghostfolio/api/app/account/update-account.dto'; import { UpdateAccountDto } from '@ghostfolio/api/app/account/update-account.dto';
import { DataService } from '@ghostfolio/client/services/data.service'; import { DataService } from '@ghostfolio/client/services/data.service';
import { Currency } from '@ghostfolio/common/interfaces/currency.interface';
import { Platform } from '@prisma/client'; import { Platform } from '@prisma/client';
import { Observable, Subject } from 'rxjs'; import { Observable, Subject } from 'rxjs';
import { map, startWith } from 'rxjs/operators'; import { map, startWith } from 'rxjs/operators';
import { CreateOrUpdateAccountDialogParams } from './interfaces/interfaces'; import { CreateOrUpdateAccountDialogParams } from './interfaces/interfaces';
import { Currency } from '@ghostfolio/common/interfaces/currency.interface';
@Component({ @Component({
host: { class: 'h-100' }, host: { class: 'h-100' },

9
apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.module.ts

@ -1,15 +1,15 @@
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core'; import { NgModule } from '@angular/core';
import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { MatAutocompleteModule } from '@angular/material/autocomplete';
import { MatButtonModule } from '@angular/material/button'; import { MatButtonModule } from '@angular/material/button';
import { MatCheckboxModule } from '@angular/material/checkbox'; import { MatCheckboxModule } from '@angular/material/checkbox';
import { MatDialogModule } from '@angular/material/dialog'; import { MatDialogModule } from '@angular/material/dialog';
import { MatFormFieldModule } from '@angular/material/form-field'; import { MatFormFieldModule } from '@angular/material/form-field';
import { MatInputModule } from '@angular/material/input'; import { MatInputModule } from '@angular/material/input';
import { MatSelectModule } from '@angular/material/select';
import { MatAutocompleteModule } from '@angular/material/autocomplete';
import { GfSymbolIconModule } from '@ghostfolio/client/components/symbol-icon/symbol-icon.module'; import { GfSymbolIconModule } from '@ghostfolio/client/components/symbol-icon/symbol-icon.module';
import { GfCurrencyAutocompleteModule } from '@ghostfolio/ui/currency-selector/currency-selector.module'; import { GfCurrencySelectorModule } from '@ghostfolio/ui/currency-selector/currency-selector.module';
import { CreateOrUpdateAccountDialog } from './create-or-update-account-dialog.component'; import { CreateOrUpdateAccountDialog } from './create-or-update-account-dialog.component';
@NgModule({ @NgModule({
@ -17,7 +17,7 @@ import { CreateOrUpdateAccountDialog } from './create-or-update-account-dialog.c
imports: [ imports: [
CommonModule, CommonModule,
FormsModule, FormsModule,
GfCurrencyAutocompleteModule, GfCurrencySelectorModule,
GfSymbolIconModule, GfSymbolIconModule,
MatAutocompleteModule, MatAutocompleteModule,
MatButtonModule, MatButtonModule,
@ -25,7 +25,6 @@ import { CreateOrUpdateAccountDialog } from './create-or-update-account-dialog.c
MatDialogModule, MatDialogModule,
MatFormFieldModule, MatFormFieldModule,
MatInputModule, MatInputModule,
MatSelectModule,
ReactiveFormsModule ReactiveFormsModule
] ]
}) })

42
libs/ui/src/lib/currency-selector/currency-selector.component.ts

@ -16,10 +16,10 @@ import {
} from '@angular/material/autocomplete'; } from '@angular/material/autocomplete';
import { MatFormFieldControl } from '@angular/material/form-field'; import { MatFormFieldControl } from '@angular/material/form-field';
import { MatInput } from '@angular/material/input'; import { MatInput } from '@angular/material/input';
import { Currency } from '@ghostfolio/common/interfaces/currency.interface';
import { AbstractMatFormField } from '@ghostfolio/ui/shared/abstract-mat-form-field';
import { Subject } from 'rxjs'; import { Subject } from 'rxjs';
import { map, startWith, takeUntil } from 'rxjs/operators'; import { map, startWith, takeUntil } from 'rxjs/operators';
import { Currency } from '@ghostfolio/common/interfaces/currency.interface';
import { AbstractMatFormField } from '../symbol-autocomplete/abstract-mat-form-field';
@Component({ @Component({
changeDetection: ChangeDetectionStrategy.OnPush, changeDetection: ChangeDetectionStrategy.OnPush,
@ -27,15 +27,15 @@ import { AbstractMatFormField } from '../symbol-autocomplete/abstract-mat-form-f
'[attr.aria-describedBy]': 'describedBy', '[attr.aria-describedBy]': 'describedBy',
'[id]': 'id' '[id]': 'id'
}, },
selector: 'gf-currency-autocomplete',
styleUrls: ['./currency-selector.component.scss'],
templateUrl: 'currency-selector.component.html',
providers: [ providers: [
{ {
provide: MatFormFieldControl, provide: MatFormFieldControl,
useExisting: CurrencySelectorComponent useExisting: CurrencySelectorComponent
} }
] ],
selector: 'gf-currency-autocomplete',
styleUrls: ['./currency-selector.component.scss'],
templateUrl: 'currency-selector.component.html'
}) })
export class CurrencySelectorComponent export class CurrencySelectorComponent
extends AbstractMatFormField<Currency> extends AbstractMatFormField<Currency>
@ -81,10 +81,12 @@ export class CurrencySelectorComponent
.pipe( .pipe(
takeUntil(this.unsubscribeSubject), takeUntil(this.unsubscribeSubject),
startWith(''), startWith(''),
map((value) => (value ? this.filter(value) : this.currencies.slice())) map((value) => {
return value ? this.filter(value) : this.currencies.slice();
})
) )
.subscribe((val) => { .subscribe((values) => {
this.filteredCurrencies = val; this.filteredCurrencies = values;
}); });
} }
@ -96,17 +98,6 @@ export class CurrencySelectorComponent
return this.input?.empty; return this.input?.empty;
} }
private filter(value: Currency | string) {
const filterValue =
typeof value === 'string'
? value?.toLowerCase()
: value?.value.toLowerCase();
return this.currencies.filter((currency) =>
currency.value.toLowerCase().startsWith(filterValue)
);
}
public focus() { public focus() {
this.input.focus(); this.input.focus();
} }
@ -138,6 +129,17 @@ export class CurrencySelectorComponent
this.unsubscribeSubject.complete(); this.unsubscribeSubject.complete();
} }
private filter(value: Currency | string) {
const filterValue =
typeof value === 'string'
? value?.toLowerCase()
: value?.value.toLowerCase();
return this.currencies.filter((currency) => {
return currency.value.toLowerCase().startsWith(filterValue);
});
}
private validateRequired() { private validateRequired() {
const requiredCheck = super.required const requiredCheck = super.required
? !super.value.label || !super.value.value ? !super.value.label || !super.value.value

5
libs/ui/src/lib/currency-selector/currency-selector.module.ts

@ -4,7 +4,7 @@ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { MatAutocompleteModule } from '@angular/material/autocomplete'; import { MatAutocompleteModule } from '@angular/material/autocomplete';
import { MatFormFieldModule } from '@angular/material/form-field'; import { MatFormFieldModule } from '@angular/material/form-field';
import { MatInputModule } from '@angular/material/input'; import { MatInputModule } from '@angular/material/input';
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
import { CurrencySelectorComponent } from './currency-selector.component'; import { CurrencySelectorComponent } from './currency-selector.component';
@NgModule({ @NgModule({
@ -16,9 +16,8 @@ import { CurrencySelectorComponent } from './currency-selector.component';
MatAutocompleteModule, MatAutocompleteModule,
MatFormFieldModule, MatFormFieldModule,
MatInputModule, MatInputModule,
MatProgressSpinnerModule,
ReactiveFormsModule ReactiveFormsModule
], ],
schemas: [CUSTOM_ELEMENTS_SCHEMA] schemas: [CUSTOM_ELEMENTS_SCHEMA]
}) })
export class GfCurrencyAutocompleteModule {} export class GfCurrencySelectorModule {}

0
libs/ui/src/lib/symbol-autocomplete/abstract-mat-form-field.ts → libs/ui/src/lib/shared/abstract-mat-form-field.ts

3
libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.ts

@ -19,6 +19,7 @@ import { MatInput } from '@angular/material/input';
import { LookupItem } from '@ghostfolio/api/app/symbol/interfaces/lookup-item.interface'; import { LookupItem } from '@ghostfolio/api/app/symbol/interfaces/lookup-item.interface';
import { DataService } from '@ghostfolio/client/services/data.service'; import { DataService } from '@ghostfolio/client/services/data.service';
import { translate } from '@ghostfolio/ui/i18n'; import { translate } from '@ghostfolio/ui/i18n';
import { AbstractMatFormField } from '@ghostfolio/ui/shared/abstract-mat-form-field';
import { isString } from 'lodash'; import { isString } from 'lodash';
import { Subject, tap } from 'rxjs'; import { Subject, tap } from 'rxjs';
import { import {
@ -29,8 +30,6 @@ import {
takeUntil takeUntil
} from 'rxjs/operators'; } from 'rxjs/operators';
import { AbstractMatFormField } from './abstract-mat-form-field';
@Component({ @Component({
changeDetection: ChangeDetectionStrategy.OnPush, changeDetection: ChangeDetectionStrategy.OnPush,
host: { host: {

Loading…
Cancel
Save