diff --git a/apps/api/src/app/symbol/symbol.controller.ts b/apps/api/src/app/symbol/symbol.controller.ts index d26ab2106..da73382a6 100644 --- a/apps/api/src/app/symbol/symbol.controller.ts +++ b/apps/api/src/app/symbol/symbol.controller.ts @@ -41,7 +41,7 @@ export class SymbolController { ): Promise<{ items: LookupItem[] }> { try { return this.symbolService.lookup({ - includeIndices: includeIndices, + includeIndices, query: query.toLowerCase(), user: this.request.user }); diff --git a/apps/api/src/app/symbol/symbol.service.ts b/apps/api/src/app/symbol/symbol.service.ts index 4e7500e70..bc626a97f 100644 --- a/apps/api/src/app/symbol/symbol.service.ts +++ b/apps/api/src/app/symbol/symbol.service.ts @@ -81,11 +81,11 @@ export class SymbolService { } public async lookup({ - includeIndices, + includeIndices = false, query, user }: { - includeIndices: boolean; + includeIndices?: boolean; query: string; user: UserWithSettings; }): Promise<{ items: LookupItem[] }> { diff --git a/apps/api/src/services/data-provider/alpha-vantage/alpha-vantage.service.ts b/apps/api/src/services/data-provider/alpha-vantage/alpha-vantage.service.ts index 242e3f6b9..4713a4c5f 100644 --- a/apps/api/src/services/data-provider/alpha-vantage/alpha-vantage.service.ts +++ b/apps/api/src/services/data-provider/alpha-vantage/alpha-vantage.service.ts @@ -115,7 +115,7 @@ export class AlphaVantageService implements DataProviderInterface { } public async search({ - includeIndices, + includeIndices = false, query }: { includeIndices?: boolean; diff --git a/apps/api/src/services/data-provider/coingecko/coingecko.service.ts b/apps/api/src/services/data-provider/coingecko/coingecko.service.ts index 4738a77ba..35083e810 100644 --- a/apps/api/src/services/data-provider/coingecko/coingecko.service.ts +++ b/apps/api/src/services/data-provider/coingecko/coingecko.service.ts @@ -165,7 +165,7 @@ export class CoinGeckoService implements DataProviderInterface { } public async search({ - includeIndices, + includeIndices = false, query }: { includeIndices?: boolean; diff --git a/apps/api/src/services/data-provider/data-provider.service.ts b/apps/api/src/services/data-provider/data-provider.service.ts index f99a803dc..b4f4e10b5 100644 --- a/apps/api/src/services/data-provider/data-provider.service.ts +++ b/apps/api/src/services/data-provider/data-provider.service.ts @@ -367,11 +367,11 @@ export class DataProviderService { } public async search({ - includeIndices, + includeIndices = false, query, user }: { - includeIndices: boolean; + includeIndices?: boolean; query: string; user: UserWithSettings; }): Promise<{ items: LookupItem[] }> { diff --git a/apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts b/apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts index 5ba32fc87..961f960da 100644 --- a/apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts +++ b/apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts @@ -220,7 +220,7 @@ export class EodHistoricalDataService implements DataProviderInterface { } public async search({ - includeIndices, + includeIndices = false, query }: { includeIndices?: boolean; diff --git a/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts b/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts index 231d1f09b..ed65c3f65 100644 --- a/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts +++ b/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts @@ -144,7 +144,7 @@ export class FinancialModelingPrepService implements DataProviderInterface { } public async search({ - includeIndices, + includeIndices = false, query }: { includeIndices?: boolean; diff --git a/apps/api/src/services/data-provider/google-sheets/google-sheets.service.ts b/apps/api/src/services/data-provider/google-sheets/google-sheets.service.ts index b998e5031..f4b592371 100644 --- a/apps/api/src/services/data-provider/google-sheets/google-sheets.service.ts +++ b/apps/api/src/services/data-provider/google-sheets/google-sheets.service.ts @@ -154,7 +154,7 @@ export class GoogleSheetsService implements DataProviderInterface { } public async search({ - includeIndices, + includeIndices = false, query }: { includeIndices?: boolean; diff --git a/apps/api/src/services/data-provider/manual/manual.service.ts b/apps/api/src/services/data-provider/manual/manual.service.ts index d8a5a1434..14df4b7f4 100644 --- a/apps/api/src/services/data-provider/manual/manual.service.ts +++ b/apps/api/src/services/data-provider/manual/manual.service.ts @@ -172,7 +172,7 @@ export class ManualService implements DataProviderInterface { } public async search({ - includeIndices, + includeIndices = false, query }: { includeIndices?: boolean; diff --git a/apps/api/src/services/data-provider/rapid-api/rapid-api.service.ts b/apps/api/src/services/data-provider/rapid-api/rapid-api.service.ts index c244df4a3..053391a8a 100644 --- a/apps/api/src/services/data-provider/rapid-api/rapid-api.service.ts +++ b/apps/api/src/services/data-provider/rapid-api/rapid-api.service.ts @@ -118,7 +118,7 @@ export class RapidApiService implements DataProviderInterface { } public async search({ - includeIndices, + includeIndices = false, query }: { includeIndices?: boolean; diff --git a/apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts b/apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts index 979f684e9..a525b4685 100644 --- a/apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts +++ b/apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts @@ -276,7 +276,7 @@ export class YahooFinanceService implements DataProviderInterface { } public async search({ - includeIndices, + includeIndices = false, query }: { includeIndices?: boolean; @@ -286,9 +286,11 @@ export class YahooFinanceService implements DataProviderInterface { try { const quoteTypes = ['EQUITY', 'ETF', 'FUTURE', 'MUTUALFUND']; + if (includeIndices) { quoteTypes.push('INDEX'); } + const searchResult = await yahooFinance.search(query); const quotes = searchResult.quotes diff --git a/apps/client/src/app/services/data.service.ts b/apps/client/src/app/services/data.service.ts index 822f32ede..4aa590493 100644 --- a/apps/client/src/app/services/data.service.ts +++ b/apps/client/src/app/services/data.service.ts @@ -268,10 +268,14 @@ export class DataService { includeIndices?: boolean; query: string; }) { + let params = new HttpParams().set('query', query); + + if (includeIndices) { + params = params.append('includeIndices', includeIndices); + } + return this.http - .get<{ items: LookupItem[] }>( - `/api/v1/symbol/lookup?query=${query}&includeIndices=${includeIndices}` - ) + .get<{ items: LookupItem[] }>('/api/v1/symbol/lookup', { params }) .pipe( map((respose) => { return respose.items; diff --git a/libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.ts b/libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.ts index 0521ac827..ea99ab0e5 100644 --- a/libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.ts +++ b/libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.ts @@ -50,8 +50,8 @@ export class SymbolAutocompleteComponent extends AbstractMatFormField implements OnInit, OnDestroy { - @Input() public isLoading = false; @Input() private includeIndices = false; + @Input() public isLoading = false; @ViewChild(MatInput, { static: false }) private input: MatInput; @@ -96,8 +96,8 @@ export class SymbolAutocompleteComponent }), switchMap((query: string) => { return this.dataService.fetchSymbols({ - includeIndices: this.includeIndices, - query + query, + includeIndices: this.includeIndices }); }) ) @@ -136,9 +136,11 @@ export class SymbolAutocompleteComponent public ngDoCheck() { if (this.ngControl) { this.validateRequired(); + if (this.control.touched) { this.validateSelection(); } + this.errorState = this.ngControl.invalid && this.ngControl.touched; this.stateChanges.next(); }