From e0825553736a0ca554a5a979331fef1efb4f5c76 Mon Sep 17 00:00:00 2001 From: Kyusung4698 Date: Wed, 1 Apr 2020 15:01:38 +0200 Subject: [PATCH 1/9] - add file cache as last resort to ensure a robust api in cost of fresh data --- CHANGELOG.md | 5 ++ src/app/core/service/browser.service.ts | 2 +- src/app/core/service/storage.service.ts | 5 ++ .../service/currency-overview-http.service.ts | 53 +++++++++++-------- .../service/item-overview-http.service.ts | 53 +++++++++++-------- .../data/poe/service/trade-http.service.ts | 25 ++++++--- 6 files changed, 94 insertions(+), 49 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 66aa57dd..4892924f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## 0.6.17 (2020-04-01) + +- add file cache as last resort to ensure a robust api in cost of fresh data + + ## 0.6.16 (2020-03-31) - add disabled debounce time on max value (#522) diff --git a/src/app/core/service/browser.service.ts b/src/app/core/service/browser.service.ts index 744fa642..da244a2b 100644 --- a/src/app/core/service/browser.service.ts +++ b/src/app/core/service/browser.service.ts @@ -24,7 +24,7 @@ export class BrowserService { parent, show: false }); - win.once('ready-to-show', () => { + win.webContents.once('did-finish-load', () => { subject.next(); subject.complete(); win.close(); diff --git a/src/app/core/service/storage.service.ts b/src/app/core/service/storage.service.ts index dfb4a92d..acc6ad2f 100644 --- a/src/app/core/service/storage.service.ts +++ b/src/app/core/service/storage.service.ts @@ -25,4 +25,9 @@ export class StorageService { public save(key: string, value: TData): Observable { return from(this.db.setItem(key, value)); } + + public saveCopy(key: string, value: TData): Observable { + const copy = JSON.parse(JSON.stringify(value)); + return from(this.db.setItem(key, copy)); + } } diff --git a/src/app/data/poe-ninja/service/currency-overview-http.service.ts b/src/app/data/poe-ninja/service/currency-overview-http.service.ts index e803c863..889c35cf 100644 --- a/src/app/data/poe-ninja/service/currency-overview-http.service.ts +++ b/src/app/data/poe-ninja/service/currency-overview-http.service.ts @@ -1,9 +1,9 @@ -import { HttpClient, HttpErrorResponse, HttpParams } from '@angular/common/http'; +import { HttpClient, HttpErrorResponse } from '@angular/common/http'; import { Injectable } from '@angular/core'; -import { BrowserService, LoggerService, SessionService } from '@app/service'; +import { BrowserService, LoggerService, SessionService, StorageService } from '@app/service'; import { environment } from '@env/environment'; import { Observable, of, throwError } from 'rxjs'; -import { delay, flatMap, retryWhen } from 'rxjs/operators'; +import { catchError, delay, flatMap, retryWhen } from 'rxjs/operators'; import { CurrencyOverviewResponse } from '../schema/currency-overview'; export enum CurrencyOverviewType { @@ -23,42 +23,49 @@ const RETRY_DELAY = 100; providedIn: 'root' }) export class CurrencyOverviewHttpService { - private readonly apiUrl: string; + private readonly baseUrl: string; constructor( private readonly httpClient: HttpClient, private readonly browser: BrowserService, private readonly session: SessionService, + private readonly storage: StorageService, private readonly logger: LoggerService) { - this.apiUrl = `${environment.poeNinja.baseUrl}/api/data/currencyoverview`; + this.baseUrl = `${environment.poeNinja.baseUrl}/api/data/currencyoverview`; } public get(leagueId: string, type: CurrencyOverviewType): Observable { - const params = new HttpParams({ - fromObject: { - league: leagueId, - type, - language: 'en' - } - }); - return this.httpClient.get(this.apiUrl, { - params + const url = this.getUrl(leagueId, type); + return this.httpClient.get(url, { + observe: 'response', + responseType: 'text' }).pipe( retryWhen(errors => errors.pipe( - flatMap((response, count) => this.handleError(this.apiUrl, response, count)) + flatMap((response, count) => this.handleError(url, response, count)) )), - flatMap(response => { + flatMap(httpResponse => { + const response = JSON.parse(httpResponse.body); if (!response.lines) { - this.logger.warn(`Got empty result from ${this.apiUrl} with ${leagueId} and ${type}.`, response); - return throwError(`Got empty result from ${this.apiUrl} with ${leagueId} and ${type}.`) + this.logger.warn(`Got empty result from '${url}'.`, response); + return throwError(`Got empty result from '${url}'.`); } const result: CurrencyOverviewResponse = { - ...response, + lines: response.lines, url: `${environment.poeNinja.baseUrl}/challenge/${PATH_TYPE_MAP[type]}` } return of(result); - }) + }), + catchError(error => this.storage.get(url).pipe( + flatMap(cachedResponse => { + if (cachedResponse) { + this.logger.warn(`Could not fetch response from: '${url}'. Using cached data for now...`, error); + return of(cachedResponse); + } + return throwError(error); + }) + )), + flatMap(response => this.storage.saveCopy(url, response)) ); } @@ -69,9 +76,13 @@ export class CurrencyOverviewHttpService { switch (response.status) { case 403: - return this.browser.retrieve(url); + return this.browser.retrieve(url).pipe(delay(RETRY_DELAY)); default: return this.session.clear().pipe(delay(RETRY_DELAY)); } } + + private getUrl(leagueId: string, type: CurrencyOverviewType): string { + return `${this.baseUrl}?league=${encodeURIComponent(leagueId)}&type=${encodeURIComponent(type)}&language=en`; + } } diff --git a/src/app/data/poe-ninja/service/item-overview-http.service.ts b/src/app/data/poe-ninja/service/item-overview-http.service.ts index 4ca58818..06c0ce28 100644 --- a/src/app/data/poe-ninja/service/item-overview-http.service.ts +++ b/src/app/data/poe-ninja/service/item-overview-http.service.ts @@ -1,9 +1,9 @@ -import { HttpClient, HttpErrorResponse, HttpParams } from '@angular/common/http'; +import { HttpClient, HttpErrorResponse } from '@angular/common/http'; import { Injectable } from '@angular/core'; -import { BrowserService, LoggerService, SessionService } from '@app/service'; +import { BrowserService, LoggerService, SessionService, StorageService } from '@app/service'; import { environment } from '@env/environment'; import { Observable, of, throwError } from 'rxjs'; -import { delay, flatMap, retryWhen } from 'rxjs/operators'; +import { catchError, delay, flatMap, retryWhen } from 'rxjs/operators'; import { ItemOverviewResponse } from '../schema/item-overview'; export enum ItemOverviewType { @@ -51,42 +51,49 @@ const RETRY_DELAY = 100; providedIn: 'root' }) export class ItemOverviewHttpService { - private readonly apiUrl: string; + private readonly baseUrl: string; constructor( private readonly httpClient: HttpClient, private readonly browser: BrowserService, private readonly session: SessionService, + private readonly storage: StorageService, private readonly logger: LoggerService) { - this.apiUrl = `${environment.poeNinja.baseUrl}/api/data/itemoverview`; + this.baseUrl = `${environment.poeNinja.baseUrl}/api/data/itemoverview`; } public get(leagueId: string, type: ItemOverviewType): Observable { - const params = new HttpParams({ - fromObject: { - league: leagueId, - type, - language: 'en' - } - }); - return this.httpClient.get(this.apiUrl, { - params + const url = this.getUrl(leagueId, type); + return this.httpClient.get(url, { + observe: 'response', + responseType: 'text' }).pipe( retryWhen(errors => errors.pipe( - flatMap((response, count) => this.handleError(this.apiUrl, response, count)) + flatMap((response, count) => this.handleError(url, response, count)) )), - flatMap(response => { + flatMap(httpResponse => { + const response = JSON.parse(httpResponse.body); if (!response.lines) { - this.logger.warn(`Got empty result from ${this.apiUrl} with ${leagueId} and ${type}.`, response); - return throwError(`Got empty result from ${this.apiUrl} with ${leagueId} and ${type}.`) + this.logger.warn(`Got empty result from '${url}'.`, response); + return throwError(`Got empty result from '${url}'.`) } const result: ItemOverviewResponse = { - ...response, + lines: response.lines, url: `${environment.poeNinja.baseUrl}/challenge/${PATH_TYPE_MAP[type]}` }; return of(result); - }) + }), + catchError(error => this.storage.get(url).pipe( + flatMap(cachedResponse => { + if (cachedResponse) { + this.logger.warn(`Could not fetch response from: '${url}'. Using cached data for now...`, error); + return of(cachedResponse); + } + return throwError(error); + }) + )), + flatMap(response => this.storage.saveCopy(url, response)) ); } @@ -97,9 +104,13 @@ export class ItemOverviewHttpService { switch (response.status) { case 403: - return this.browser.retrieve(url); + return this.browser.retrieve(url).pipe(delay(RETRY_DELAY)); default: return this.session.clear().pipe(delay(RETRY_DELAY)); } } + + private getUrl(leagueId: string, type: ItemOverviewType): string { + return `${this.baseUrl}?league=${encodeURIComponent(leagueId)}&type=${encodeURIComponent(type)}&language=en`; + } } diff --git a/src/app/data/poe/service/trade-http.service.ts b/src/app/data/poe/service/trade-http.service.ts index 9993b3f4..60ca322a 100644 --- a/src/app/data/poe/service/trade-http.service.ts +++ b/src/app/data/poe/service/trade-http.service.ts @@ -1,15 +1,16 @@ import { HttpClient, HttpErrorResponse, HttpParams, HttpResponse } from '@angular/common/http'; import { Injectable } from '@angular/core'; -import { BrowserService, SessionService } from '@app/service'; +import { BrowserService, LoggerService, SessionService, StorageService } from '@app/service'; import { environment } from '@env/environment'; import { Language } from '@shared/module/poe/type'; import { Observable, of, throwError } from 'rxjs'; -import { delay, flatMap, map, retryWhen } from 'rxjs/operators'; +import { catchError, delay, flatMap, map, retryWhen } from 'rxjs/operators'; import { TradeFetchResult, TradeItemsResult, TradeLeaguesResult, TradeResponse, TradeSearchRequest, TradeSearchResponse, TradeStaticResult, TradeStatsResult } from '../schema/trade'; const RETRY_COUNT = 3; const RETRY_DELAY = 100; const RETRY_LIMIT_DELAY = 300; +const RETRY_LIMIT_DELAY_FACTOR = [1, 2, 4]; @Injectable({ providedIn: 'root' @@ -18,7 +19,9 @@ export class TradeHttpService { constructor( private readonly http: HttpClient, private readonly browser: BrowserService, - private readonly session: SessionService) { } + private readonly session: SessionService, + private readonly storage: StorageService, + private readonly logger: LoggerService) { } public getItems(language: Language): Observable> { const url = this.getApiUrl('data/items', language); @@ -78,6 +81,16 @@ export class TradeHttpService { retryWhen(errors => errors.pipe( flatMap((response, count) => this.handleError(url, response, count)) )), + catchError(error => this.storage.get>(url).pipe( + flatMap(cachedResponse => { + if (cachedResponse) { + this.logger.warn(`Could not fetch response from: '${url}'. Using cached data for now...`, error); + return of(cachedResponse); + } + return throwError(error); + }) + )), + flatMap(response => this.storage.saveCopy(url, response)), map(response => this.transformResponse(response)) ); } @@ -129,7 +142,7 @@ export class TradeHttpService { return `${baseUrl}/trade/${postfix}`; } - private handleError(url: string, response: HttpErrorResponse, count: number): Observable { + private handleError(url: string, response: HttpErrorResponse, count: number): Observable { if (count >= RETRY_COUNT) { return throwError(response); } @@ -145,9 +158,9 @@ export class TradeHttpService { return throwError(response.error); } case 403: - return this.browser.retrieve(url); + return this.browser.retrieve(url).pipe(delay(RETRY_DELAY)); case 429: - return of(null).pipe(delay(RETRY_LIMIT_DELAY)); + return of(null).pipe(delay(RETRY_LIMIT_DELAY * RETRY_LIMIT_DELAY_FACTOR[count])); default: return this.session.clear().pipe(delay(RETRY_DELAY)); } From 242987437728ef3144e22967a6285f80d2a0de5a Mon Sep 17 00:00:00 2001 From: Kyusung4698 Date: Wed, 1 Apr 2020 15:06:25 +0200 Subject: [PATCH 2/9] - add unidentifed items support --- CHANGELOG.md | 2 +- doc/poe/game_ctrl_c_item_310.txt | 14 +++++++++++ .../provider/evaluate-query-item.provider.ts | 1 + .../item-frame-state.component.html | 5 ++++ .../item-frame-state.component.scss | 1 + .../item-frame/item-frame.component.ts | 2 +- .../item/parser/item-parser.service.ts | 3 +++ ...tem-section-unidentified-parser.service.ts | 25 +++++++++++++++++++ .../item-search-filters-miscs.service.ts | 4 +++ src/app/shared/module/poe/type/item.type.ts | 2 ++ 10 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 src/app/shared/module/poe/service/item/parser/item-section-unidentified-parser.service.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 4892924f..76988bf4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ ## 0.6.17 (2020-04-01) - add file cache as last resort to ensure a robust api in cost of fresh data - +- add unidentifed items support ## 0.6.16 (2020-03-31) diff --git a/doc/poe/game_ctrl_c_item_310.txt b/doc/poe/game_ctrl_c_item_310.txt index da2e8b18..711ad3e9 100644 --- a/doc/poe/game_ctrl_c_item_310.txt +++ b/doc/poe/game_ctrl_c_item_310.txt @@ -22,3 +22,17 @@ Legion Sword Piece Item Level: 74 -------- This item will transform when correctly arranged with other items. + +Rarity: Unique +Samite Helmet +-------- +Armour: 276 +-------- +Requirements: +Strength: 114 +-------- +Sockets: R-R +-------- +Item Level: 85 +-------- +Unidentified diff --git a/src/app/modules/evaluate/provider/evaluate-query-item.provider.ts b/src/app/modules/evaluate/provider/evaluate-query-item.provider.ts index 222bc9de..0f31ff04 100644 --- a/src/app/modules/evaluate/provider/evaluate-query-item.provider.ts +++ b/src/app/modules/evaluate/provider/evaluate-query-item.provider.ts @@ -22,6 +22,7 @@ export class EvaluateQueryItemProvider { category: item.category, rarity: item.rarity, corrupted: item.corrupted, + unidentified: item.unidentified, veiled: item.veiled, influences: item.influences || {}, damage: {}, diff --git a/src/app/shared/module/poe/component/item-frame-state/item-frame-state.component.html b/src/app/shared/module/poe/component/item-frame-state/item-frame-state.component.html index b264b26b..b9eb08f1 100644 --- a/src/app/shared/module/poe/component/item-frame-state/item-frame-state.component.html +++ b/src/app/shared/module/poe/component/item-frame-state/item-frame-state.component.html @@ -7,4 +7,9 @@
{{'ItemPopupCorrupted' | clientString:language}}
+ + + +
{{'ItemPopupUnidentified' | clientString:language}}
+
\ No newline at end of file diff --git a/src/app/shared/module/poe/component/item-frame-state/item-frame-state.component.scss b/src/app/shared/module/poe/component/item-frame-state/item-frame-state.component.scss index 4228c7fe..c96de1a5 100644 --- a/src/app/shared/module/poe/component/item-frame-state/item-frame-state.component.scss +++ b/src/app/shared/module/poe/component/item-frame-state/item-frame-state.component.scss @@ -1,5 +1,6 @@ @import "./../../../../../../styles/variables"; +.unidentified, .corrupted { color: $red; } diff --git a/src/app/shared/module/poe/component/item-frame/item-frame.component.ts b/src/app/shared/module/poe/component/item-frame/item-frame.component.ts index 39f4a701..48c3b8f4 100644 --- a/src/app/shared/module/poe/component/item-frame/item-frame.component.ts +++ b/src/app/shared/module/poe/component/item-frame/item-frame.component.ts @@ -57,7 +57,7 @@ export class ItemFrameComponent implements OnInit { this.req = !!(this.item.level || this.item.requirements); this.sockets = !!(this.item.sockets && this.item.sockets.length > 0); this.stats = !!(this.item.stats && this.item.stats.length > 0); - this.state = !!(this.item.corrupted !== undefined || this.item.veiled !== undefined); + this.state = !!(this.item.corrupted !== undefined || this.item.veiled !== undefined || this.item.unidentified !== undefined); this.influences = !!this.item.influences; if (this.queryItemChange.observers.length === 0) { diff --git a/src/app/shared/module/poe/service/item/parser/item-parser.service.ts b/src/app/shared/module/poe/service/item/parser/item-parser.service.ts index 290da59a..11261ddf 100644 --- a/src/app/shared/module/poe/service/item/parser/item-parser.service.ts +++ b/src/app/shared/module/poe/service/item/parser/item-parser.service.ts @@ -11,6 +11,7 @@ import { ItemSectionRarityParserService } from './item-section-rarity-parser.ser import { ItemSectionRequirementsParserService } from './item-section-requirements-parser.service'; import { ItemSectionSocketsParserService } from './item-section-sockets-parser.service'; import { ItemSectionStatsParserService } from './item-section-stats-parser.service'; +import { ItemSectionUnidentifiedParserService } from './item-section-unidentified-parser.service'; import { ItemSectionVeiledParserService } from './item-section-veiled-parser.service'; @Injectable({ @@ -31,6 +32,7 @@ export class ItemParserService { itemSectionInfluencesParserService: ItemSectionInfluencesParserService, itemSectionVeiledParserService: ItemSectionVeiledParserService, itemSectionStatsParserService: ItemSectionStatsParserService, + itemSectionUnidentifiedParserService: ItemSectionUnidentifiedParserService, itemPostParserDamageService: ItemPostParserDamageService, itemPostParserPseudoService: ItemPostParserPseudoService) { this.parsers = [ @@ -43,6 +45,7 @@ export class ItemParserService { itemSectionCorruptedParserService, itemSectionVeiledParserService, itemSectionInfluencesParserService, + itemSectionUnidentifiedParserService, itemSectionStatsParserService, ]; this.postParsers = [ diff --git a/src/app/shared/module/poe/service/item/parser/item-section-unidentified-parser.service.ts b/src/app/shared/module/poe/service/item/parser/item-section-unidentified-parser.service.ts new file mode 100644 index 00000000..8aa62c52 --- /dev/null +++ b/src/app/shared/module/poe/service/item/parser/item-section-unidentified-parser.service.ts @@ -0,0 +1,25 @@ +import { Injectable } from '@angular/core'; +import { ExportedItem, Item, ItemSection, ItemSectionParserService, Section } from '@shared/module/poe/type'; +import { ClientStringService } from '../../client-string/client-string.service'; + +@Injectable({ + providedIn: 'root' +}) +export class ItemSectionUnidentifiedParserService implements ItemSectionParserService { + constructor(private readonly clientString: ClientStringService) { } + + public optional = true; + public section = ItemSection.Unidentified; + + public parse(item: ExportedItem, target: Item): Section { + const phrase = new RegExp(`^${this.clientString.translate('ItemPopupUnidentified')}$`); + + const unidentifiedSection = item.sections.find(x => phrase.test(x.content)); + if (!unidentifiedSection) { + return null; + } + + target.unidentified = true; + return unidentifiedSection; + } +} diff --git a/src/app/shared/module/poe/service/item/query/item-search-filters-miscs.service.ts b/src/app/shared/module/poe/service/item/query/item-search-filters-miscs.service.ts index 1da757a8..6c21ba9e 100644 --- a/src/app/shared/module/poe/service/item/query/item-search-filters-miscs.service.ts +++ b/src/app/shared/module/poe/service/item/query/item-search-filters-miscs.service.ts @@ -22,6 +22,10 @@ export class ItemSearchFiltersMiscsService implements ItemSearchFiltersService { option: `${!!item.corrupted}` }; + query.filters.misc_filters.filters.identified = { + option: `${!item.unidentified}` + }; + query.filters.misc_filters.filters.veiled = { option: `${!!item.veiled}` }; diff --git a/src/app/shared/module/poe/type/item.type.ts b/src/app/shared/module/poe/type/item.type.ts index 84f1dfbb..1ebe57d2 100644 --- a/src/app/shared/module/poe/type/item.type.ts +++ b/src/app/shared/module/poe/type/item.type.ts @@ -12,6 +12,7 @@ export interface Item { type?: string; level?: ItemValue; corrupted?: boolean; + unidentified?: boolean; veiled?: boolean; damage?: ItemWeaponDamage; sockets?: ItemSocket[]; @@ -200,6 +201,7 @@ export interface Section { export enum ItemSection { Corrupted, + Unidentified, Influences, ItemLevel, Note, From 31b999cb84c9f3496e2e9929e5af7fa7c45e8171 Mon Sep 17 00:00:00 2001 From: Kyusung4698 Date: Wed, 1 Apr 2020 15:24:34 +0200 Subject: [PATCH 3/9] - update use same height for each mod whether selected or not (#540) --- CHANGELOG.md | 1 + .../evaluate-exchange-rate.component.scss | 3 ++- .../evaluate-options/evaluate-options.component.scss | 3 ++- .../evaluate-search/evaluate-search.component.scss | 6 ++++-- .../item-frame-query/item-frame-query.component.scss | 8 +++++--- .../item-frame-sockets/item-frame-sockets.component.scss | 3 ++- .../item-frame-value-group.component.scss | 3 ++- 7 files changed, 18 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 76988bf4..5bc43099 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ - add file cache as last resort to ensure a robust api in cost of fresh data - add unidentifed items support +- update use same height for each mod whether selected or not (#540) ## 0.6.16 (2020-03-31) diff --git a/src/app/modules/evaluate/component/evaluate-exchange-rate/evaluate-exchange-rate.component.scss b/src/app/modules/evaluate/component/evaluate-exchange-rate/evaluate-exchange-rate.component.scss index dfff83a9..2a7775bf 100644 --- a/src/app/modules/evaluate/component/evaluate-exchange-rate/evaluate-exchange-rate.component.scss +++ b/src/app/modules/evaluate/component/evaluate-exchange-rate/evaluate-exchange-rate.component.scss @@ -67,7 +67,8 @@ app-currency-frame { .currency { background-color: rgba(170, 158, 130, 0.3); - outline: auto; + outline-style: solid; + outline-width: 1px; } } } diff --git a/src/app/modules/evaluate/component/evaluate-options/evaluate-options.component.scss b/src/app/modules/evaluate/component/evaluate-options/evaluate-options.component.scss index bb7869a7..adf0d077 100644 --- a/src/app/modules/evaluate/component/evaluate-options/evaluate-options.component.scss +++ b/src/app/modules/evaluate/component/evaluate-options/evaluate-options.component.scss @@ -19,7 +19,8 @@ .option { &:hover { background-color: rgba(170, 158, 130, 0.3); - outline: auto; + outline-style: solid; + outline-width: 1px; } } } diff --git a/src/app/modules/evaluate/component/evaluate-search/evaluate-search.component.scss b/src/app/modules/evaluate/component/evaluate-search/evaluate-search.component.scss index b9e7f2b4..e46dacd1 100644 --- a/src/app/modules/evaluate/component/evaluate-search/evaluate-search.component.scss +++ b/src/app/modules/evaluate/component/evaluate-search/evaluate-search.component.scss @@ -18,7 +18,8 @@ .active { color: $light-grey; background-color: rgba(170, 158, 130, 0.3); - outline: auto; + outline-style: solid; + outline-width: 1px; } .delayed { @@ -39,7 +40,8 @@ app-currency-frame { .currency { background-color: rgba(170, 158, 130, 0.3); - outline: auto; + outline-style: solid; + outline-width: 1px; } } } diff --git a/src/app/shared/module/poe/component/item-frame-query/item-frame-query.component.scss b/src/app/shared/module/poe/component/item-frame-query/item-frame-query.component.scss index d09a0128..bceb65d2 100644 --- a/src/app/shared/module/poe/component/item-frame-query/item-frame-query.component.scss +++ b/src/app/shared/module/poe/component/item-frame-query/item-frame-query.component.scss @@ -4,11 +4,13 @@ user-select: none; transition: all 0.2s ease-in-out; border-radius: 2px; + margin-bottom: 2px; + line-height: 17px; + padding: 0 2px; &.query { - padding: 0 2px; - margin: 2px 0; background-color: rgba(170, 158, 130, 0.3); - outline: auto; + outline-style: solid; + outline-width: 1px; } } diff --git a/src/app/shared/module/poe/component/item-frame-sockets/item-frame-sockets.component.scss b/src/app/shared/module/poe/component/item-frame-sockets/item-frame-sockets.component.scss index 6d2443da..5be798d1 100644 --- a/src/app/shared/module/poe/component/item-frame-sockets/item-frame-sockets.component.scss +++ b/src/app/shared/module/poe/component/item-frame-sockets/item-frame-sockets.component.scss @@ -13,7 +13,8 @@ &.query { background-color: rgba(170, 158, 130, 0.3); - outline: auto; + outline-style: solid; + outline-width: 1px; } } diff --git a/src/app/shared/module/poe/component/item-frame-value-group/item-frame-value-group.component.scss b/src/app/shared/module/poe/component/item-frame-value-group/item-frame-value-group.component.scss index cac57141..6de8efef 100644 --- a/src/app/shared/module/poe/component/item-frame-value-group/item-frame-value-group.component.scss +++ b/src/app/shared/module/poe/component/item-frame-value-group/item-frame-value-group.component.scss @@ -6,7 +6,8 @@ app-item-frame-value { .value { background-color: rgba(170, 158, 130, 0.3); - outline: auto; + outline-style: solid; + outline-width: 1px; } } } From 7f1a8a5d70988cde9a14d036395e2fef1d471c21 Mon Sep 17 00:00:00 2001 From: Kyusung4698 Date: Wed, 1 Apr 2020 16:09:31 +0200 Subject: [PATCH 4/9] - update evaluate search error display to include the actual reason (#537) --- CHANGELOG.md | 1 + overlay.babel | 113 +++++++++++++++++- .../service/currency-overview-http.service.ts | 2 +- .../service/item-overview-http.service.ts | 2 +- .../data/poe/service/trade-http.service.ts | 8 +- .../evaluate-search.component.html | 4 +- .../evaluate-search.component.ts | 20 +++- .../item-frame-value.component.scss | 4 + .../item-search-filters-miscs.service.ts | 8 +- src/assets/i18n/english.json | 4 + src/assets/i18n/french.json | 4 + src/assets/i18n/german.json | 4 + src/assets/i18n/korean.json | 4 + src/assets/i18n/polish.json | 4 + src/assets/i18n/portuguese.json | 4 + src/assets/i18n/russian.json | 4 + src/assets/i18n/simplified-chinese.json | 4 + src/assets/i18n/spanish.json | 4 + src/assets/i18n/thai.json | 4 + src/assets/i18n/traditional-chinese.json | 4 + 20 files changed, 191 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5bc43099..43d413fa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ - add file cache as last resort to ensure a robust api in cost of fresh data - add unidentifed items support - update use same height for each mod whether selected or not (#540) +- update evaluate search error display to include the actual reason (#537) ## 0.6.16 (2020-03-31) diff --git a/overlay.babel b/overlay.babel index e440c1bc..4127889d 100644 --- a/overlay.babel +++ b/overlay.babel @@ -1,4 +1,4 @@ - +