From a6672708166d997dd89aae671c779b5531a07345 Mon Sep 17 00:00:00 2001 From: Tifenn Guillas <tifenn.guillas@gmail.com> Date: Mon, 26 Jul 2021 12:46:35 +0200 Subject: [PATCH] Clean code --- .../doc/containers/doc.component.html | 175 ------------------ .../instance/doc/containers/doc.component.ts | 88 --------- .../app/instance/doc/doc-routing.module.ts | 30 --- .../src/app/instance/doc/doc.component.scss | 30 --- client/src/app/instance/doc/doc.module.ts | 26 --- .../dataset-by-family.component.html | 0 .../dataset-by-family.component.scss | 0 .../components/dataset-by-family.component.ts | 0 .../dataset-card-doc.component.html | 0 .../components/dataset-card-doc.component.ts | 2 +- .../components/index.ts | 0 .../components/output-list.component.html | 0 .../components/output-list.component.ts | 12 +- .../containers/dataset-list.component.html | 0 .../containers/dataset-list.component.ts | 19 +- .../documentation.component.html | 60 ++---- .../documentation.component.ts | 26 ++- .../documentation-routing.module.ts | 7 +- .../documentation.component.scss | 2 +- .../documentation/documentation.module.ts | 6 +- .../app/instance/instance-routing.module.ts | 1 - client/src/app/instance/instance.component.ts | 1 - 22 files changed, 49 insertions(+), 436 deletions(-) delete mode 100644 client/src/app/instance/doc/containers/doc.component.html delete mode 100644 client/src/app/instance/doc/containers/doc.component.ts delete mode 100644 client/src/app/instance/doc/doc-routing.module.ts delete mode 100644 client/src/app/instance/doc/doc.component.scss delete mode 100644 client/src/app/instance/doc/doc.module.ts rename client/src/app/instance/{doc => documentation}/components/dataset-by-family.component.html (100%) rename client/src/app/instance/{doc => documentation}/components/dataset-by-family.component.scss (100%) rename client/src/app/instance/{doc => documentation}/components/dataset-by-family.component.ts (100%) rename client/src/app/instance/{doc => documentation}/components/dataset-card-doc.component.html (100%) rename client/src/app/instance/{doc => documentation}/components/dataset-card-doc.component.ts (96%) rename client/src/app/instance/{doc => documentation}/components/index.ts (100%) rename client/src/app/instance/{doc => documentation}/components/output-list.component.html (100%) rename client/src/app/instance/{doc => documentation}/components/output-list.component.ts (60%) rename client/src/app/instance/{doc => documentation}/containers/dataset-list.component.html (100%) rename client/src/app/instance/{doc => documentation}/containers/dataset-list.component.ts (85%) rename client/src/app/instance/documentation/{ => containers}/documentation.component.html (78%) rename client/src/app/instance/documentation/{ => containers}/documentation.component.ts (50%) diff --git a/client/src/app/instance/doc/containers/doc.component.html b/client/src/app/instance/doc/containers/doc.component.html deleted file mode 100644 index f451211e..00000000 --- a/client/src/app/instance/doc/containers/doc.component.html +++ /dev/null @@ -1,175 +0,0 @@ -<div class="container"> - <app-spinner *ngIf="attributeListIsLoading | async"></app-spinner> - - <div class="jumbotron"> - <div class="row align-items-center"> - <div class="col-md-12 order-md-1 text-justify text-md-left pr-md-5"> - <h2 class="mb-3">Export server documentation</h2> - - <h4>URL construction</h4> - <p> - To request the server, you need to construct a correct URL. Just below you can find the URL schema and a - description of mandatory parameters: - </p> - <code>{{ getUrlServer() }}/search/dataset?a=id_attribute&c=id_attribute::operator::value</code> - - <ul> - <li> - <code>dataset</code>: dataset in which to search. See datasets section for available datasets. - </li> - <li> - <code>a</code>: output parameters as attributes id list semicolon separated. See outputs section for available attributes. - </li> - <blockquote>a=1;2;3</blockquote> - <li> - <code>c</code>: criteria list separated with semicolon. A criterion is defined by an id_attribute, - an operator and a value. See operators section for available operators. - </li> - <blockquote>c=3::eq::ping;2::eq::pong</blockquote> - </ul> - - <app-output-list - [datasetSelected]="datasetSelected | async" - [attributeList]="attributeList | async"> - </app-output-list> - - <h5>Operators</h5> - <table id="table"> - <tr> - <th>operator</th> - <th>description</th> - <th>usage</th> - <th>example</th> - </tr> - <tr> - <td>eq</td> - <td>equal to</td> - <td><code>c=id_attribute::eq::value</code></td> - <td><code>c=1::eq::89</code></td> - </tr> - <tr> - <td>neq</td> - <td>not equal to</td> - <td><code>c=id_attribute::neq::value</code></td> - <td><code>c=1::neq::89</code></td> - </tr> - <tr> - <td>gt</td> - <td>greater than</td> - <td><code>c=id_attribute::gt::value</code></td> - <td><code>c=1::gt::1.5</code></td> - </tr> - <tr> - <td>gte</td> - <td>greater than or equal to</td> - <td><code>c=id_attribute::gte::value</code></td> - <td><code>c=1::gte::2</code></td> - </tr> - <tr> - <td>lt</td> - <td>lower than</td> - <td><code>c=id_attribute::lt::value</code></td> - <td><code>c=1::lt::1.5</code></td> - </tr> - <tr> - <td>lte</td> - <td>lower than or equal to</td> - <td><code>c=id_attribute::lte::value</code></td> - <td><code>c=1::lte::2</code></td> - </tr> - <tr> - <td>bw</td> - <td>between</td> - <td><code>c=id_attribute::bw::value_min|value_max</code></td> - <td><code>c=1::bw::10|90</code></td> - </tr> - <tr> - <td>lk</td> - <td>like</td> - <td><code>c=id_attribute::lk::value</code></td> - <td><code>c=1::lk::ping</code></td> - </tr> - <tr> - <td>nlk</td> - <td>not like</td> - <td><code>c=id_attribute::nlk::value</code></td> - <td><code>c=1::nlk::pong</code></td> - </tr> - <tr> - <td>in</td> - <td>in</td> - <td><code>c=id_attribute::in::value_x|value_y|value_z</code></td> - <td><code>c=1::in::ping|pong|paff</code></td> - </tr> - <tr> - <td>nin</td> - <td>not in</td> - <td><code>c=id_attribute::nin::value_x|value_y|value_z</code></td> - <td><code>c=1::nin::ping|pong|paf</code></td> - </tr> - <tr> - <td>nl</td> - <td>is null</td> - <td><code>c=id_attribute::nl</code></td> - <td><code>c=1::nl</code></td> - </tr> - <tr> - <td>nnl</td> - <td>is not null</td> - <td><code>c=id_attribute::nnl</code></td> - <td><code>c=1::nnl</code></td> - </tr> - <tr> - <td>js</td> - <td>json</td> - <td><code>c=id_attribute::js::extension,keyword|operator|value</code></td> - <td><code>c=1::js::PrimaryHDU,ID|eq|45</code></td> - </tr> - </table> - - <h4>Examples</h4> - - We supposed to have the dataset ping with following attributes: - <table id="table"> - <tr> - <th>id</th> - <th>attribute</th> - </tr> - <tr> - <td>1</td> - <td>obs_id</td> - </tr> - <tr> - <td>2</td> - <td>ra</td> - </tr> - <tr> - <td>3</td> - <td>dec</td> - </tr> - <tr> - <td>4</td> - <td>instrument</td> - </tr> - </table> - - <blockquote>{{ getUrlServer() }}/search/ping?a=1;2;3&c=1::eq::1</blockquote> - <p>This will return the <code>obs_id</code> with its value equals to 1 and display <code>obs_id</code>, <code>RA</code> and <code>DEC</code> as - outputs.</p> - <blockquote> - {{ getUrlServer() }}/search/ping?a=1;2;3;4&c=4::in::TEL_1|TEL_2 - </blockquote> - <p>This will return a list of <code>TEL_1</code> or <code>TEL_2</code> observations with all available - outputs.</p> - <blockquote> - {{ getUrlServer() }}/search/ping?a=1&c=2::gt::1;3::gt::2 - </blockquote> - <p>This will return a list of <code>obs_id</code> where <code>RA</code> is greater than 1 and <code>DEC</code> is greater than 2</p> - </div> - </div> - </div> - - <button class="btn btn-outline-secondary mt-3"> - <span class="fas fa-arrow-left"></span> Return to previous page - </button> -</div> diff --git a/client/src/app/instance/doc/containers/doc.component.ts b/client/src/app/instance/doc/containers/doc.component.ts deleted file mode 100644 index 4ba2de8f..00000000 --- a/client/src/app/instance/doc/containers/doc.component.ts +++ /dev/null @@ -1,88 +0,0 @@ -/** - * This file is part of Anis Client. - * - * @copyright Laboratoire d'Astrophysique de Marseille / CNRS - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -import { Component, OnInit } from '@angular/core'; - -import { Store } from '@ngrx/store'; -import { Observable } from 'rxjs'; - -import * as documentationActions from 'src/app/instance/store/actions/documentation.actions'; -import * as datasetActions from 'src/app/metamodel/actions/dataset.actions'; -import * as datasetFamilySelector from 'src/app/metamodel/selectors/dataset-family.selector'; -import * as datasetSelector from 'src/app/metamodel/selectors/dataset.selector'; -import {Attribute, Dataset, DatasetFamily, Survey} from 'src/app/metamodel/models'; -import { environment } from 'src/environments/environment'; -import * as authSelector from "../../../auth/auth.selector"; -import * as instanceSelector from "../../../metamodel/selectors/instance.selector"; -import * as surveySelector from "../../../metamodel/selectors/survey.selector"; -import * as attributeSelector from "../../../metamodel/selectors/attribute.selector"; - -@Component({ - selector: 'app-doc', - templateUrl: 'doc.component.html', - styleUrls: ['../doc.component.scss'] -}) -/** - * @class - * @classdesc Documentation container. - * - * @implements OnInit - */ -export class DocComponent implements OnInit { - public instanceSelected: Observable<string>; - public datasetSelected: Observable<string>; - public attributeListIsLoading: Observable<boolean>; - public attributeListIsLoaded: Observable<boolean>; - public attributeList: Observable<Attribute[]>; - // public isAuthenticated: Observable<boolean>; - // public datasetFamilyListIsLoading: Observable<boolean>; - // public datasetFamilyListIsLoaded: Observable<boolean>; - // public datasetFamilyList: Observable<DatasetFamily[]>; - // public surveyListIsLoading: Observable<boolean>; - // public surveyListIsLoaded: Observable<boolean>; - // public surveyList: Observable<Survey[]>; - // public datasetListIsLoading: Observable<boolean>; - // public datasetListIsLoaded: Observable<boolean>; - // public datasetList: Observable<Dataset[]>; - - constructor(private store: Store<{ }>) { - this.instanceSelected = store.select(instanceSelector.selectInstanceNameByRoute); - this.datasetSelected = store.select(datasetSelector.selectDatasetNameByRoute); - this.attributeListIsLoading = store.select(attributeSelector.selectAttributeListIsLoading); - this.attributeListIsLoaded = store.select(attributeSelector.selectAttributeListIsLoaded); - this.attributeList = store.select(attributeSelector.selectAllAttributes); - // this.isAuthenticated = store.select(authSelector.selectIsAuthenticated); - // this.datasetFamilyListIsLoading = store.select(datasetFamilySelector.selectDatasetFamilyListIsLoading); - // this.datasetFamilyListIsLoaded = store.select(datasetFamilySelector.selectDatasetFamilyListIsLoaded); - // this.datasetFamilyList = store.select(datasetFamilySelector.selectAllDatasetFamilies); - // this.surveyListIsLoading = store.select(surveySelector.selectSurveyListIsLoading); - // this.surveyListIsLoaded = store.select(surveySelector.selectSurveyListIsLoaded); - // this.surveyList = store.select(surveySelector.selectAllSurveys); - // this.datasetListIsLoading = store.select(datasetSelector.selectDatasetListIsLoading); - // this.datasetListIsLoaded = store.select(datasetSelector.selectDatasetListIsLoaded); - // this.datasetList = store.select(datasetSelector.selectAllDatasets); - } - - ngOnInit() { - this.store.dispatch(documentationActions.loadAttributeList()); - } - - /** - * Returns strict url address. - * - * @return string - */ - getUrlServer(): string { - if (!environment.apiUrl.startsWith('http')) { - const url = window.location; - return url.protocol + '//' + url.host + environment.apiUrl; - } - return environment.apiUrl; - } -} diff --git a/client/src/app/instance/doc/doc-routing.module.ts b/client/src/app/instance/doc/doc-routing.module.ts deleted file mode 100644 index 4e27a9b1..00000000 --- a/client/src/app/instance/doc/doc-routing.module.ts +++ /dev/null @@ -1,30 +0,0 @@ -/** - * This file is part of Anis Client. - * - * @copyright Laboratoire d'Astrophysique de Marseille / CNRS - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -import { NgModule } from '@angular/core'; -import { Routes, RouterModule } from '@angular/router'; - -import { DatasetListComponent } from "./containers/dataset-list.component"; -import { DocComponent } from "./containers/doc.component"; - -const routes: Routes = [ - { path: '', component: DatasetListComponent }, - { path: ':dname', component: DocComponent }, -]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class DocRoutingModule { } - -export const routedComponents = [ - DatasetListComponent, - DocComponent -]; diff --git a/client/src/app/instance/doc/doc.component.scss b/client/src/app/instance/doc/doc.component.scss deleted file mode 100644 index 9628a449..00000000 --- a/client/src/app/instance/doc/doc.component.scss +++ /dev/null @@ -1,30 +0,0 @@ -/** - * This file is part of Anis Client. - * - * @copyright Laboratoire d'Astrophysique de Marseille / CNRS - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -blockquote { - background: #f9f9f9; - border-left: 10px solid #ccc; - margin: 1.5em 10px; - padding: 1em 10px 1em 10px; -} - -table, th, td { - background-color: #f9f9f9; - padding: 6px 13px; - border: 1px solid #ccc; - border-collapse: collapse; - margin-bottom: 1em; -} - -.attributes-table { - display: inline-block; - max-height : 500px; - overflow-y : auto; - overflow-x: hidden; -} diff --git a/client/src/app/instance/doc/doc.module.ts b/client/src/app/instance/doc/doc.module.ts deleted file mode 100644 index 74d696f1..00000000 --- a/client/src/app/instance/doc/doc.module.ts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * This file is part of Anis Client. - * - * @copyright Laboratoire d'Astrophysique de Marseille / CNRS - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -import { NgModule } from '@angular/core'; - -import { SharedModule } from 'src/app/shared/shared.module'; -import { DocRoutingModule, routedComponents } from './doc-routing.module'; -import { dummiesComponents } from './components'; - -@NgModule({ - imports: [ - SharedModule, - DocRoutingModule - ], - declarations: [ - routedComponents, - dummiesComponents - ] -}) -export class DocModule { } diff --git a/client/src/app/instance/doc/components/dataset-by-family.component.html b/client/src/app/instance/documentation/components/dataset-by-family.component.html similarity index 100% rename from client/src/app/instance/doc/components/dataset-by-family.component.html rename to client/src/app/instance/documentation/components/dataset-by-family.component.html diff --git a/client/src/app/instance/doc/components/dataset-by-family.component.scss b/client/src/app/instance/documentation/components/dataset-by-family.component.scss similarity index 100% rename from client/src/app/instance/doc/components/dataset-by-family.component.scss rename to client/src/app/instance/documentation/components/dataset-by-family.component.scss diff --git a/client/src/app/instance/doc/components/dataset-by-family.component.ts b/client/src/app/instance/documentation/components/dataset-by-family.component.ts similarity index 100% rename from client/src/app/instance/doc/components/dataset-by-family.component.ts rename to client/src/app/instance/documentation/components/dataset-by-family.component.ts diff --git a/client/src/app/instance/doc/components/dataset-card-doc.component.html b/client/src/app/instance/documentation/components/dataset-card-doc.component.html similarity index 100% rename from client/src/app/instance/doc/components/dataset-card-doc.component.html rename to client/src/app/instance/documentation/components/dataset-card-doc.component.html diff --git a/client/src/app/instance/doc/components/dataset-card-doc.component.ts b/client/src/app/instance/documentation/components/dataset-card-doc.component.ts similarity index 96% rename from client/src/app/instance/doc/components/dataset-card-doc.component.ts rename to client/src/app/instance/documentation/components/dataset-card-doc.component.ts index e9f51428..adcfcf40 100644 --- a/client/src/app/instance/doc/components/dataset-card-doc.component.ts +++ b/client/src/app/instance/documentation/components/dataset-card-doc.component.ts @@ -30,6 +30,6 @@ export class DatasetCardDocComponent { selectDataset(datasetName: string) { this.router.routeReuseStrategy.shouldReuseRoute = () => false; - this.router.navigate([`/instance/${this.instanceSelected}/doc/${datasetName}`]); + this.router.navigate([`/instance/${this.instanceSelected}/documentation/${datasetName}`]); } } diff --git a/client/src/app/instance/doc/components/index.ts b/client/src/app/instance/documentation/components/index.ts similarity index 100% rename from client/src/app/instance/doc/components/index.ts rename to client/src/app/instance/documentation/components/index.ts diff --git a/client/src/app/instance/doc/components/output-list.component.html b/client/src/app/instance/documentation/components/output-list.component.html similarity index 100% rename from client/src/app/instance/doc/components/output-list.component.html rename to client/src/app/instance/documentation/components/output-list.component.html diff --git a/client/src/app/instance/doc/components/output-list.component.ts b/client/src/app/instance/documentation/components/output-list.component.ts similarity index 60% rename from client/src/app/instance/doc/components/output-list.component.ts rename to client/src/app/instance/documentation/components/output-list.component.ts index 9b32769d..9d13b94d 100644 --- a/client/src/app/instance/doc/components/output-list.component.ts +++ b/client/src/app/instance/documentation/components/output-list.component.ts @@ -8,14 +8,13 @@ */ import { Component, Input, ChangeDetectionStrategy } from '@angular/core'; -import { Router } from '@angular/router'; -import {Survey, Dataset, Attribute} from 'src/app/metamodel/models'; +import { Attribute } from 'src/app/metamodel/models'; @Component({ selector: 'app-output-list', templateUrl: 'output-list.component.html', - styleUrls: ['../doc.component.scss'], + styleUrls: ['../documentation.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush }) /** @@ -25,11 +24,4 @@ import {Survey, Dataset, Attribute} from 'src/app/metamodel/models'; export class OutputListComponent { @Input() datasetSelected: string; @Input() attributeList: Attribute[]; - - // constructor(private router: Router) { } - // - // selectDataset(datasetName: string) { - // this.router.routeReuseStrategy.shouldReuseRoute = () => false; - // this.router.navigate([`/instance/${this.instanceSelected}/doc/${datasetName}`]); - // } } diff --git a/client/src/app/instance/doc/containers/dataset-list.component.html b/client/src/app/instance/documentation/containers/dataset-list.component.html similarity index 100% rename from client/src/app/instance/doc/containers/dataset-list.component.html rename to client/src/app/instance/documentation/containers/dataset-list.component.html diff --git a/client/src/app/instance/doc/containers/dataset-list.component.ts b/client/src/app/instance/documentation/containers/dataset-list.component.ts similarity index 85% rename from client/src/app/instance/doc/containers/dataset-list.component.ts rename to client/src/app/instance/documentation/containers/dataset-list.component.ts index 17edd30f..88997f50 100644 --- a/client/src/app/instance/doc/containers/dataset-list.component.ts +++ b/client/src/app/instance/documentation/containers/dataset-list.component.ts @@ -15,7 +15,7 @@ import { Observable } from 'rxjs'; import * as datasetActions from 'src/app/metamodel/actions/dataset.actions'; import * as datasetFamilySelector from 'src/app/metamodel/selectors/dataset-family.selector'; import * as datasetSelector from 'src/app/metamodel/selectors/dataset.selector'; -import {Dataset, DatasetFamily, Survey} from 'src/app/metamodel/models'; +import { Dataset, DatasetFamily, Survey } from 'src/app/metamodel/models'; import { environment } from 'src/environments/environment'; import * as authSelector from "../../../auth/auth.selector"; import * as instanceSelector from "../../../metamodel/selectors/instance.selector"; @@ -24,11 +24,11 @@ import * as surveySelector from "../../../metamodel/selectors/survey.selector"; @Component({ selector: 'app-dataset-list', templateUrl: 'dataset-list.component.html', - styleUrls: ['../doc.component.scss'] + styleUrls: ['../documentation.component.scss'] }) /** * @class - * @classdesc Documentation container. + * @classdesc Documentation dataset list container. * * @implements OnInit */ @@ -62,17 +62,4 @@ export class DatasetListComponent implements OnInit { ngOnInit() { this.store.dispatch(datasetActions.loadDatasetList()); } - - /** - * Returns strict url address. - * - * @return string - */ - getUrlServer(): string { - if (!environment.apiUrl.startsWith('http')) { - const url = window.location; - return url.protocol + '//' + url.host + environment.apiUrl; - } - return environment.apiUrl; - } } diff --git a/client/src/app/instance/documentation/documentation.component.html b/client/src/app/instance/documentation/containers/documentation.component.html similarity index 78% rename from client/src/app/instance/documentation/documentation.component.html rename to client/src/app/instance/documentation/containers/documentation.component.html index a4af4e81..95e84e96 100644 --- a/client/src/app/instance/documentation/documentation.component.html +++ b/client/src/app/instance/documentation/containers/documentation.component.html @@ -1,16 +1,18 @@ <div class="container"> + <app-spinner *ngIf="attributeListIsLoading | async"></app-spinner> + <div class="jumbotron"> <div class="row align-items-center"> <div class="col-md-12 order-md-1 text-justify text-md-left pr-md-5"> <h2 class="mb-3">Export server documentation</h2> - + <h4>URL construction</h4> <p> To request the server, you need to construct a correct URL. Just below you can find the URL schema and a description of mandatory parameters: </p> <code>{{ getUrlServer() }}/search/dataset?a=id_attribute&c=id_attribute::operator::value</code> - + <ul> <li> <code>dataset</code>: dataset in which to search. See datasets section for available datasets. @@ -20,51 +22,17 @@ </li> <blockquote>a=1;2;3</blockquote> <li> - <code>c</code>: criteria list separeted with semicolon. A criterion is defined by an id_attribute, + <code>c</code>: criteria list separated with semicolon. A criterion is defined by an id_attribute, an operator and a value. See operators section for available operators. </li> <blockquote>c=3::eq::ping;2::eq::pong</blockquote> </ul> - - <h4>Available parameters</h4> - - <h5>Datasets</h5> - <div *ngIf="datasetListIsLoading | async"> - <span class="fas fa-circle-notch fa-spin fa-3x"></span> - <span class="sr-only">Loading...</span> - </div> - <table *ngIf="datasetListIsLoaded | async" id="table"> - <tr> - <th>Dataset</th> - <th>Description</th> - </tr> - <tr *ngFor="let dataset of datasetList | async"> - <td>{{ dataset.name }}</td> - <td>{{ dataset.description }}</td> - </tr> - </table> - - <!-- <h5>Outputs</h5> - <div *ngIf="attributeListsIsLoading | async"> - <span class="fas fa-circle-notch fa-spin fa-3x"></span> - <span class="sr-only">Loading...</span> - </div> - <div *ngIf="attributeListsIsLoaded | async" class="row"> - <div *ngFor="let dataset of datasetList | async" class="col-auto mb-5"> - <h6>{{ dataset.label }} output list</h6> - <table id="table" class="attributes-table p-0"> - <tr> - <th>id</th> - <th>attribute</th> - </tr> - <tr *ngFor="let attribute of getAttributeList(dataset.name, attributeList | async)"> - <td>{{ attribute.id }}</td> - <td>{{ attribute.name }}</td> - </tr> - </table> - </div> - </div> --> - + + <app-output-list + [datasetSelected]="datasetSelected | async" + [attributeList]="attributeList | async"> + </app-output-list> + <h5>Operators</h5> <table id="table"> <tr> @@ -158,7 +126,7 @@ <td><code>c=1::js::PrimaryHDU,ID|eq|45</code></td> </tr> </table> - + <h4>Examples</h4> We supposed to have the dataset ping with following attributes: @@ -200,4 +168,8 @@ </div> </div> </div> + + <a routerLink='/instance/{{ instanceSelected | async }}/documentation' class="btn btn-outline-secondary mt-3"> + <span class="fas fa-arrow-left"></span> Return to previous page + </a> </div> diff --git a/client/src/app/instance/documentation/documentation.component.ts b/client/src/app/instance/documentation/containers/documentation.component.ts similarity index 50% rename from client/src/app/instance/documentation/documentation.component.ts rename to client/src/app/instance/documentation/containers/documentation.component.ts index 7a414850..cd48d259 100644 --- a/client/src/app/instance/documentation/documentation.component.ts +++ b/client/src/app/instance/documentation/containers/documentation.component.ts @@ -12,15 +12,17 @@ import { Component, OnInit } from '@angular/core'; import { Store } from '@ngrx/store'; import { Observable } from 'rxjs'; -import * as datasetActions from 'src/app/metamodel/actions/dataset.actions'; +import * as documentationActions from 'src/app/instance/store/actions/documentation.actions'; import * as datasetSelector from 'src/app/metamodel/selectors/dataset.selector'; -import { Dataset } from 'src/app/metamodel/models'; +import { Attribute } from 'src/app/metamodel/models'; import { environment } from 'src/environments/environment'; +import * as instanceSelector from "../../../metamodel/selectors/instance.selector"; +import * as attributeSelector from "../../../metamodel/selectors/attribute.selector"; @Component({ selector: 'app-documentation', templateUrl: 'documentation.component.html', - styleUrls: ['documentation.component.scss'] + styleUrls: ['../documentation.component.scss'] }) /** * @class @@ -29,18 +31,22 @@ import { environment } from 'src/environments/environment'; * @implements OnInit */ export class DocumentationComponent implements OnInit { - public datasetListIsLoading: Observable<boolean>; - public datasetListIsLoaded: Observable<boolean>; - public datasetList: Observable<Dataset[]>; + public instanceSelected: Observable<string>; + public datasetSelected: Observable<string>; + public attributeListIsLoading: Observable<boolean>; + public attributeListIsLoaded: Observable<boolean>; + public attributeList: Observable<Attribute[]>; constructor(private store: Store<{ }>) { - this.datasetListIsLoading = store.select(datasetSelector.selectDatasetListIsLoading); - this.datasetListIsLoaded = store.select(datasetSelector.selectDatasetListIsLoaded); - this.datasetList = store.select(datasetSelector.selectAllDatasets); + this.instanceSelected = store.select(instanceSelector.selectInstanceNameByRoute); + this.datasetSelected = store.select(datasetSelector.selectDatasetNameByRoute); + this.attributeListIsLoading = store.select(attributeSelector.selectAttributeListIsLoading); + this.attributeListIsLoaded = store.select(attributeSelector.selectAttributeListIsLoaded); + this.attributeList = store.select(attributeSelector.selectAllAttributes); } ngOnInit() { - this.store.dispatch(datasetActions.loadDatasetList()); + this.store.dispatch(documentationActions.loadAttributeList()); } /** diff --git a/client/src/app/instance/documentation/documentation-routing.module.ts b/client/src/app/instance/documentation/documentation-routing.module.ts index 87904499..285ad9f8 100644 --- a/client/src/app/instance/documentation/documentation-routing.module.ts +++ b/client/src/app/instance/documentation/documentation-routing.module.ts @@ -10,10 +10,12 @@ import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; -import { DocumentationComponent } from './documentation.component'; +import { DatasetListComponent } from "./containers/dataset-list.component"; +import { DocumentationComponent } from "./containers/documentation.component"; const routes: Routes = [ - { path: '', component: DocumentationComponent } + { path: '', component: DatasetListComponent }, + { path: ':dname', component: DocumentationComponent }, ]; @NgModule({ @@ -23,5 +25,6 @@ const routes: Routes = [ export class DocumentationRoutingModule { } export const routedComponents = [ + DatasetListComponent, DocumentationComponent ]; diff --git a/client/src/app/instance/documentation/documentation.component.scss b/client/src/app/instance/documentation/documentation.component.scss index e3c1e5f2..9628a449 100644 --- a/client/src/app/instance/documentation/documentation.component.scss +++ b/client/src/app/instance/documentation/documentation.component.scss @@ -7,7 +7,7 @@ * file that was distributed with this source code. */ - blockquote { +blockquote { background: #f9f9f9; border-left: 10px solid #ccc; margin: 1.5em 10px; diff --git a/client/src/app/instance/documentation/documentation.module.ts b/client/src/app/instance/documentation/documentation.module.ts index 31a1371d..f1505519 100644 --- a/client/src/app/instance/documentation/documentation.module.ts +++ b/client/src/app/instance/documentation/documentation.module.ts @@ -11,12 +11,16 @@ import { NgModule } from '@angular/core'; import { SharedModule } from 'src/app/shared/shared.module'; import { DocumentationRoutingModule, routedComponents } from './documentation-routing.module'; +import { dummiesComponents } from './components'; @NgModule({ imports: [ SharedModule, DocumentationRoutingModule ], - declarations: [routedComponents] + declarations: [ + routedComponents, + dummiesComponents + ] }) export class DocumentationModule { } diff --git a/client/src/app/instance/instance-routing.module.ts b/client/src/app/instance/instance-routing.module.ts index b023c7cf..37baa107 100644 --- a/client/src/app/instance/instance-routing.module.ts +++ b/client/src/app/instance/instance-routing.module.ts @@ -18,7 +18,6 @@ const routes: Routes = [ { path: '', redirectTo: 'home', pathMatch: 'full' }, { path: 'home', loadChildren: () => import('./home/home.module').then(m => m.HomeModule) }, { path: 'documentation', loadChildren: () => import('./documentation/documentation.module').then(m => m.DocumentationModule) }, - { path: 'doc', loadChildren: () => import('./doc/doc.module').then(m => m.DocModule) }, { path: 'search', loadChildren: () => import('./search/search.module').then(m => m.SearchModule) } ] } diff --git a/client/src/app/instance/instance.component.ts b/client/src/app/instance/instance.component.ts index 96a8223e..15365842 100644 --- a/client/src/app/instance/instance.component.ts +++ b/client/src/app/instance/instance.component.ts @@ -30,7 +30,6 @@ export class InstanceComponent implements OnInit { { label: 'Search', icon: 'fas fa-search', routerLink: 'search' }, { label: 'Search multiple', icon: 'fas fa-search-plus', routerLink: 'search-multiple' }, { label: 'Documentation', icon: 'fas fa-question', routerLink: 'documentation' }, - { label: 'Doc', icon: 'fas fa-question', routerLink: 'doc' } ]; public isAuthenticated: Observable<boolean>; public userProfile: Observable<UserProfile>; -- GitLab