Browse Source

Refactoring

pull/2056/head
Thomas 2 years ago
parent
commit
1666516fe9
  1. 24
      apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts
  2. 4
      apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.module.ts
  3. 10
      libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.html
  4. 5
      libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.scss
  5. 16
      libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.ts

24
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts

@ -238,19 +238,19 @@ export class CreateOrUpdateActivityDialog implements OnDestroy {
this.changeDetectorRef.markForCheck(); this.changeDetectorRef.markForCheck();
}); });
this.activityForm.controls['searchSymbol'].valueChanges.subscribe( this.activityForm.controls['searchSymbol'].valueChanges.subscribe(() => {
(value) => { if (this.activityForm.controls['searchSymbol'].invalid) {
if (!this.activityForm.controls['searchSymbol'].invalid) { this.data.activity.SymbolProfile = null;
this.activityForm.controls['dataSource'].setValue( } else {
this.activityForm.controls['searchSymbol'].value.dataSource this.activityForm.controls['dataSource'].setValue(
); this.activityForm.controls['searchSymbol'].value.dataSource
this.updateSymbol(); );
} else {
this.data.activity.SymbolProfile = null; this.updateSymbol();
}
this.changeDetectorRef.markForCheck();
} }
);
this.changeDetectorRef.markForCheck();
});
this.filteredTagsObservable = this.activityForm.controls[ this.filteredTagsObservable = this.activityForm.controls[
'tags' 'tags'

4
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.module.ts

@ -9,9 +9,7 @@ import { MatDatepickerModule } from '@angular/material/datepicker';
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 { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
import { MatSelectModule } from '@angular/material/select'; import { MatSelectModule } from '@angular/material/select';
import { GfSymbolModule } from '@ghostfolio/client/pipes/symbol/symbol.module';
import { GfSymbolAutocompleteModule } from '@ghostfolio/ui/symbol-autocomplete/symbol-autocomplete.module'; import { GfSymbolAutocompleteModule } from '@ghostfolio/ui/symbol-autocomplete/symbol-autocomplete.module';
import { GfValueModule } from '@ghostfolio/ui/value'; import { GfValueModule } from '@ghostfolio/ui/value';
@ -23,7 +21,6 @@ import { CreateOrUpdateActivityDialog } from './create-or-update-activity-dialog
CommonModule, CommonModule,
FormsModule, FormsModule,
GfSymbolAutocompleteModule, GfSymbolAutocompleteModule,
GfSymbolModule,
GfValueModule, GfValueModule,
MatAutocompleteModule, MatAutocompleteModule,
MatButtonModule, MatButtonModule,
@ -33,7 +30,6 @@ import { CreateOrUpdateActivityDialog } from './create-or-update-activity-dialog
MatDialogModule, MatDialogModule,
MatFormFieldModule, MatFormFieldModule,
MatInputModule, MatInputModule,
MatProgressSpinnerModule,
MatSelectModule, MatSelectModule,
ReactiveFormsModule ReactiveFormsModule
], ],

10
libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.html

@ -5,14 +5,17 @@
[formControl]="control" [formControl]="control"
[matAutocomplete]="symbolAutocomplete" [matAutocomplete]="symbolAutocomplete"
/> />
<mat-spinner
*ngIf="isLoading"
class="position-absolute"
matSuffix
[diameter]="20"
></mat-spinner>
<mat-autocomplete <mat-autocomplete
#symbolAutocomplete="matAutocomplete" #symbolAutocomplete="matAutocomplete"
[displayWith]="displayFn" [displayWith]="displayFn"
(optionSelected)="onUpdateSymbol($event)" (optionSelected)="onUpdateSymbol($event)"
> >
<mat-option *ngIf="isLoading">
<mat-spinner diameter="50"></mat-spinner>
</mat-option>
<ng-container *ngIf="!isLoading"> <ng-container *ngIf="!isLoading">
<mat-option <mat-option
*ngFor="let lookupItem of filteredLookupItems" *ngFor="let lookupItem of filteredLookupItems"
@ -29,4 +32,3 @@
</mat-option> </mat-option>
</ng-container> </ng-container>
</mat-autocomplete> </mat-autocomplete>
<!--<mat-spinner *ngIf="isLoading" matSuffix [diameter]="20"></mat-spinner>-->

5
libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.scss

@ -1,3 +1,8 @@
:host { :host {
display: block; display: block;
.mat-mdc-progress-spinner {
right: 0;
top: calc(50% - 10px);
}
} }

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

@ -84,13 +84,21 @@ export class SymbolAutocompleteComponent
.pipe( .pipe(
debounceTime(400), debounceTime(400),
distinctUntilChanged(), distinctUntilChanged(),
filter((query) => isString(query) && query.length > 1), filter((query) => {
tap(() => (this.isLoading = true)), return isString(query) && query.length > 1;
switchMap((query: string) => this.dataService.fetchSymbols(query)) }),
tap(() => {
this.isLoading = true;
this.changeDetectorRef.markForCheck();
}),
switchMap((query: string) => {
return this.dataService.fetchSymbols(query);
})
) )
.subscribe((filteredLookupItems) => { .subscribe((filteredLookupItems) => {
this.isLoading = false;
this.filteredLookupItems = filteredLookupItems; this.filteredLookupItems = filteredLookupItems;
this.isLoading = false;
this.changeDetectorRef.markForCheck(); this.changeDetectorRef.markForCheck();
}); });
} }

Loading…
Cancel
Save