Refactor mapping of curated options from meta.

This commit is contained in:
Spencer Ofwiti
2021-06-23 07:18:28 +00:00
parent a69213dab2
commit 5e8e0f7209
62 changed files with 4228 additions and 4702 deletions

View File

@@ -66,6 +66,37 @@
<h3 id="index">Index</h3>
<table class="table table-sm table-bordered index-table">
<tbody>
<tr>
<td class="col-md-4">
<h6><b>Properties</b></h6>
</td>
</tr>
<tr>
<td class="col-md-4">
<ul class="index-list">
<li>
<a href="#areaNames">areaNames</a>
</li>
<li>
<span class="modifier">Private</span>
<a href="#areaNamesList">areaNamesList</a>
</li>
<li>
<a href="#areaNamesSubject">areaNamesSubject</a>
</li>
<li>
<a href="#areaTypes">areaTypes</a>
</li>
<li>
<span class="modifier">Private</span>
<a href="#areaTypesList">areaTypesList</a>
</li>
<li>
<a href="#areaTypesSubject">areaTypesSubject</a>
</li>
</ul>
</td>
</tr>
<tr>
<td class="col-md-4">
@@ -110,7 +141,7 @@
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="10" class="link-to-prism">src/app/_services/location.service.ts:10</a></div>
<div class="io-line">Defined in <a href="" data-line="17" class="link-to-prism">src/app/_services/location.service.ts:17</a></div>
</td>
</tr>
@@ -168,15 +199,15 @@
</tr>
<tr>
<td class="col-md-4">
<code>getAreaNameByLocation(location: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>)</code>
<code>getAreaNameByLocation(location: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>, areaNames: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/object" target="_blank">object</a>)</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="17"
class="link-to-prism">src/app/_services/location.service.ts:17</a></div>
<div class="io-line">Defined in <a href="" data-line="28"
class="link-to-prism">src/app/_services/location.service.ts:28</a></div>
</td>
</tr>
@@ -206,6 +237,18 @@
</td>
</tr>
<tr>
<td>areaNames</td>
<td>
<code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/object" target="_blank" >object</a></code>
</td>
<td>
No
</td>
</tr>
</tbody>
</table>
@@ -213,7 +256,7 @@
<div>
</div>
<div class="io-description">
<b>Returns : </b> <code>Observable&lt;any&gt;</code>
<b>Returns : </b> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
</div>
<div class="io-description">
@@ -245,8 +288,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="13"
class="link-to-prism">src/app/_services/location.service.ts:13</a></div>
<div class="io-line">Defined in <a href="" data-line="21"
class="link-to-prism">src/app/_services/location.service.ts:21</a></div>
</td>
</tr>
@@ -255,7 +298,7 @@
<td class="col-md-4">
<div class="io-description">
<b>Returns : </b> <code>Observable&lt;any&gt;</code>
<b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>
</div>
</td>
@@ -277,15 +320,15 @@
</tr>
<tr>
<td class="col-md-4">
<code>getAreaTypeByArea(area: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>)</code>
<code>getAreaTypeByArea(area: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>, areaTypes: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/object" target="_blank">object</a>)</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="25"
class="link-to-prism">src/app/_services/location.service.ts:25</a></div>
<div class="io-line">Defined in <a href="" data-line="47"
class="link-to-prism">src/app/_services/location.service.ts:47</a></div>
</td>
</tr>
@@ -315,6 +358,18 @@
</td>
</tr>
<tr>
<td>areaTypes</td>
<td>
<code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/object" target="_blank" >object</a></code>
</td>
<td>
No
</td>
</tr>
</tbody>
</table>
@@ -322,7 +377,7 @@
<div>
</div>
<div class="io-description">
<b>Returns : </b> <code>Observable&lt;any&gt;</code>
<b>Returns : </b> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
</div>
<div class="io-description">
@@ -354,8 +409,8 @@
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="21"
class="link-to-prism">src/app/_services/location.service.ts:21</a></div>
<div class="io-line">Defined in <a href="" data-line="40"
class="link-to-prism">src/app/_services/location.service.ts:40</a></div>
</td>
</tr>
@@ -364,7 +419,7 @@
<td class="col-md-4">
<div class="io-description">
<b>Returns : </b> <code>Observable&lt;any&gt;</code>
<b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>
</div>
</td>
@@ -372,13 +427,213 @@
</tbody>
</table>
</section>
<section>
<h3 id="inputs">
Properties
</h3>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="areaNames"></a>
<span class="name">
<b>
areaNames</b>
<a href="#areaNames"><span class="icon ion-ios-link"></span></a>
</span>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/object" target="_blank" >object</a></code>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Default value : </i><code>{}</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="11" class="link-to-prism">src/app/_services/location.service.ts:11</a></div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="areaNamesList"></a>
<span class="name">
<b>
<span class="modifier">Private</span>
areaNamesList</b>
<a href="#areaNamesList"><span class="icon ion-ios-link"></span></a>
</span>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Type : </i> <code>BehaviorSubject&lt;object&gt;</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Default value : </i><code>new BehaviorSubject&lt;object&gt;(this.areaNames)</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="12" class="link-to-prism">src/app/_services/location.service.ts:12</a></div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="areaNamesSubject"></a>
<span class="name">
<b>
areaNamesSubject</b>
<a href="#areaNamesSubject"><span class="icon ion-ios-link"></span></a>
</span>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Type : </i> <code>Observable&lt;object&gt;</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Default value : </i><code>this.areaNamesList.asObservable()</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="13" class="link-to-prism">src/app/_services/location.service.ts:13</a></div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="areaTypes"></a>
<span class="name">
<b>
areaTypes</b>
<a href="#areaTypes"><span class="icon ion-ios-link"></span></a>
</span>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Type : </i> <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/object" target="_blank" >object</a></code>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Default value : </i><code>{}</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="15" class="link-to-prism">src/app/_services/location.service.ts:15</a></div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="areaTypesList"></a>
<span class="name">
<b>
<span class="modifier">Private</span>
areaTypesList</b>
<a href="#areaTypesList"><span class="icon ion-ios-link"></span></a>
</span>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Type : </i> <code>BehaviorSubject&lt;object&gt;</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Default value : </i><code>new BehaviorSubject&lt;object&gt;(this.areaTypes)</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="16" class="link-to-prism">src/app/_services/location.service.ts:16</a></div>
</td>
</tr>
</tbody>
</table>
<table class="table table-sm table-bordered">
<tbody>
<tr>
<td class="col-md-4">
<a name="areaTypesSubject"></a>
<span class="name">
<b>
areaTypesSubject</b>
<a href="#areaTypesSubject"><span class="icon ion-ios-link"></span></a>
</span>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Type : </i> <code>Observable&lt;object&gt;</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<i>Default value : </i><code>this.areaTypesList.asObservable()</code>
</td>
</tr>
<tr>
<td class="col-md-4">
<div class="io-line">Defined in <a href="" data-line="17" class="link-to-prism">src/app/_services/location.service.ts:17</a></div>
</td>
</tr>
</tbody>
</table>
</section>
</div>
<div class="tab-pane fade tab-source-code" id="c-source">
<pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import { Injectable } from &#x27;@angular/core&#x27;;
import { Observable } from &#x27;rxjs&#x27;;
import { BehaviorSubject, Observable } from &#x27;rxjs&#x27;;
import { environment } from &#x27;@src/environments/environment&#x27;;
import { first } from &#x27;rxjs/operators&#x27;;
import { HttpClient } from &#x27;@angular/common/http&#x27;;
@@ -387,24 +642,52 @@ import { HttpClient } from &#x27;@angular/common/http&#x27;;
providedIn: &#x27;root&#x27;,
})
export class LocationService {
areaNames: object &#x3D; {};
private areaNamesList: BehaviorSubject&lt;object&gt; &#x3D; new BehaviorSubject&lt;object&gt;(this.areaNames);
areaNamesSubject: Observable&lt;object&gt; &#x3D; this.areaNamesList.asObservable();
areaTypes: object &#x3D; {};
private areaTypesList: BehaviorSubject&lt;object&gt; &#x3D; new BehaviorSubject&lt;object&gt;(this.areaTypes);
areaTypesSubject: Observable&lt;object&gt; &#x3D; this.areaTypesList.asObservable();
constructor(private httpClient: HttpClient) {}
getAreaNames(): Observable&lt;any&gt; {
return this.httpClient.get(&#x60;${environment.cicMetaUrl}/areanames&#x60;);
getAreaNames(): void {
this.httpClient
.get(&#x60;${environment.cicMetaUrl}/areanames&#x60;)
.pipe(first())
.subscribe((res: object) &#x3D;&gt; this.areaNamesList.next(res));
}
getAreaNameByLocation(location: string): Observable&lt;any&gt; {
return this.httpClient.get(&#x60;${environment.cicMetaUrl}/areanames/${location.toLowerCase()}&#x60;);
getAreaNameByLocation(location: string, areaNames: object): string {
const keywords &#x3D; location.toLowerCase().split(&#x27; &#x27;);
for (const keyword of keywords) {
const queriedAreaName: string &#x3D; Object.keys(areaNames).find((key) &#x3D;&gt;
areaNames[key].includes(keyword)
);
if (queriedAreaName) {
return queriedAreaName;
}
}
}
getAreaTypes(): Observable&lt;any&gt; {
return this.httpClient.get(&#x60;${environment.cicMetaUrl}/areatypes&#x60;).pipe(first());
getAreaTypes(): void {
this.httpClient
.get(&#x60;${environment.cicMetaUrl}/areatypes&#x60;)
.pipe(first())
.subscribe((res: object) &#x3D;&gt; this.areaTypesList.next(res));
}
getAreaTypeByArea(area: string): Observable&lt;any&gt; {
return this.httpClient
.get(&#x60;${environment.cicMetaUrl}/areatypes/${area.toLowerCase()}&#x60;)
.pipe(first());
getAreaTypeByArea(area: string, areaTypes: object): string {
const keywords &#x3D; area.toLowerCase().split(&#x27; &#x27;);
for (const keyword of keywords) {
const queriedAreaType: string &#x3D; Object.keys(areaTypes).find((key) &#x3D;&gt;
areaTypes[key].includes(keyword)
);
if (queriedAreaType) {
return queriedAreaType;
}
}
}
}
</code></pre>