diff --git a/Makefile b/Makefile index be40c4535f47f42898b06fcd34a33ef361223216..7253a961ee7298e7f693e46375f01bc8814cf479 100644 --- a/Makefile +++ b/Makefile @@ -5,24 +5,25 @@ list: @echo "" @echo "Useful targets:" @echo "" - @echo " rebuild > rebuild all images and start containers for dev only" - @echo " start > start containers" - @echo " restart > restart containers" - @echo " stop > stop and kill running containers" - @echo " status > display stack containers status" - @echo " logs > display containers logs" - @echo " install_client > install client dependencies" - @echo " shell_client > shell into angular client container" - @echo " build_client > generate the angular client dist application (html, css, js)" - @echo " test_client > Starts the angular client unit tests" - @echo " client_coverage > Run nginx web server test client coverage" - @echo " install_server > install server dependencies" - @echo " shell_server > shell into php server container" + @echo " rebuild > Rebuild all images and start containers for dev only" + @echo " start > Start containers" + @echo " restart > Restart containers" + @echo " stop > Stop and kill running containers" + @echo " status > Display stack containers status" + @echo " logs > Display containers logs" + @echo " install_client > Install client dependencies" + @echo " shell_client > Shell into angular client container" + @echo " build_client > Generate the angular client dist application (html, css, js)" + @echo " test_client > Run the angular client unit tests and generate code coverage report" + @echo " test_client-live > Run the angular client unit tests on every file change" + @echo " open-coverage > Open the client code coverage report in a browser (only available for Linux)" + @echo " install_server > Install server dependencies" + @echo " shell_server > Shell into php server container" @echo " test_server > Starts the server php unit tests" - @echo " phpcs > run php code sniffer test suite" - @echo " shell_services > shell into python services" - @echo " create-db > create a database for dev only (need token_enabled=0)" - @echo " remove-pgdata > remove the anis-next database" + @echo " phpcs > Run php code sniffer test suite" + @echo " shell_services > Shell into python services" + @echo " create-db > Create a database for dev only (need token_enabled=0)" + @echo " remove-pgdata > Remove the anis-next database" @echo "" rebuild: @@ -55,10 +56,13 @@ build_client: @docker-compose exec client ng build test_client: - @docker-compose exec client npx jest + @docker-compose exec client npx jest --coverage --collectCoverageFrom='src/**/*.ts' -client_coverage: - @docker run --name anis-client-code-coverage -d -p 8888:80 -v $(CURDIR)/client/coverage/anis-client:/usr/share/nginx/html:ro nginx +test_client_live: + @docker-compose exec client npx jest --watchAll --coverage + +open_coverage_report: + xdg-open client/coverage/anis-client/index.html install_server: @docker run --init -it --rm --user $(UID):$(GID) \ diff --git a/client/jest.config.js b/client/jest.config.js index d23d9551d318b95afc421fc394c4f3acb970d8f6..d9e9f428c8c77bd4c8bc0ebe3557db4a8a0c2361 100644 --- a/client/jest.config.js +++ b/client/jest.config.js @@ -5,8 +5,6 @@ module.exports = { preset: 'jest-preset-angular', testMatch: ['**/+(*.)+(spec).+(ts|js)'], setupFilesAfterEnv: ['<rootDir>/src/test.ts'], - collectCoverage: false, - collectCoverageFrom: ['src/**/*.ts'], coverageReporters: ['html'], coverageDirectory: 'coverage/anis-client', moduleDirectories: ["node_modules", "./"], diff --git a/client/src/app/instance/documentation/components/__snapshots__/dataset-card-doc.component.spec.ts.snap b/client/src/app/instance/documentation/components/__snapshots__/dataset-card-doc.component.spec.ts.snap new file mode 100644 index 0000000000000000000000000000000000000000..9e6985f149d02a9548c3c1520c06adb38bba2fc5 --- /dev/null +++ b/client/src/app/instance/documentation/components/__snapshots__/dataset-card-doc.component.spec.ts.snap @@ -0,0 +1,70 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`DatasetCardDocComponent should display information in HTML file 1`] = ` +<app-dataset-card-doc + dataset={[Function Object]} + instanceSelected={[Function String]} + router={[Function Router]} + survey={[Function Object]} +> + <div + class="card border-0" + > + <div + class="card-body py-2" + > + <div + class="row" + > + <div + class="col" + > + <div + class="row" + > + <p + class="lead m-0 d-inline" + > + my dataset + </p> + </div> + <div + class="row" + > + <p + class="my-3" + > + This is my dataset + </p> + </div> + <div + class="row" + > + <button + class="btn btn-link p-0" + placement="bottom" + triggers="mouseenter:mouseleave" + > + <small> + More about my Survey survey + <span + class="fas fa-question-circle" + /> + </small> + </button> + </div> + </div> + <div + class="col-auto" + > + <button + class="btn btn-outline-secondary" + > + Select + </button> + </div> + </div> + </div> + </div> +</app-dataset-card-doc> +`; diff --git a/client/src/app/instance/documentation/components/__snapshots__/output-list.component.spec.ts.snap b/client/src/app/instance/documentation/components/__snapshots__/output-list.component.spec.ts.snap new file mode 100644 index 0000000000000000000000000000000000000000..c2501b4af9165dccfd37f35349784bbf5668f41e --- /dev/null +++ b/client/src/app/instance/documentation/components/__snapshots__/output-list.component.spec.ts.snap @@ -0,0 +1,40 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`OutputListComponent should display information in HTML file 1`] = ` +<app-output-list + attributeList={[Function Array]} + datasetSelected={[Function String]} +> + <h4> + Available outputs for myTestDataset + </h4><table + class="attributes-table p-0" + id="table" + > + <tr> + <th> + id + </th> + <th> + attribute + </th> + </tr> + <tr> + <td> + 2 + </td> + <td> + name_two + </td> + </tr> + <tr> + <td> + 1 + </td> + <td> + name_one + </td> + </tr> + </table> +</app-output-list> +`; diff --git a/client/src/app/instance/documentation/components/dataset-by-family.component.spec.ts b/client/src/app/instance/documentation/components/dataset-by-family.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..823eca11f37fc14bef55b5be2ba7208ef9e84840 --- /dev/null +++ b/client/src/app/instance/documentation/components/dataset-by-family.component.spec.ts @@ -0,0 +1,178 @@ +import { TestBed, waitForAsync, ComponentFixture } from '@angular/core/testing'; +import { Component, Input } from '@angular/core'; + +import { AccordionModule } from 'ngx-bootstrap/accordion'; + +import { DatasetByFamilyComponent } from './dataset-by-family.component'; +import { sharedPipes } from 'src/app/shared/pipes' +import { Dataset, DatasetFamily, Survey } from '../../../metamodel/models'; + +const DATASET_LIST: Dataset[] = [ + { + name: 'myDataset1', + table_ref: 'table1', + label: 'my dataset one', + description: 'This is my dataset one', + display: 1, + data_path: 'path1', + survey_name: 'mySurvey', + id_dataset_family: 1, + public: true, + config: { + images: ['image1'], + cone_search: { + cone_search_enabled: true, + cone_search_opened: true, + cone_search_column_ra: 1, + cone_search_column_dec: 2, + cone_search_plot_enabled: true, + cone_search_sdss_enabled: true, + cone_search_sdss_display: 1, + cone_search_background: [{ id: 1, enabled: true, display: 1 }] + }, + download: { + download_enabled: true, + download_opened: true, + download_csv: true, + download_ascii: true, + download_vo: true, + download_archive: true + }, + summary: { + summary_enabled: true, + summary_opened: true + }, + server_link: { + server_link_enabled: true, + server_link_opened: true + }, + samp: { + samp_enabled: true, + samp_opened: true + }, + datatable: { + datatable_enabled: true, + datatable_opened: true, + datatable_selectable_rows: true + } + } + }, + { + name: 'myDataset2', + table_ref: 'table2', + label: 'my dataset two', + description: 'This is my dataset two', + display: 2, + data_path: 'path2', + survey_name: 'mySurvey', + id_dataset_family: 1, + public: true, + config: { + images: ['image1'], + cone_search: { + cone_search_enabled: true, + cone_search_opened: true, + cone_search_column_ra: 1, + cone_search_column_dec: 2, + cone_search_plot_enabled: true, + cone_search_sdss_enabled: true, + cone_search_sdss_display: 1, + cone_search_background: [{ id: 1, enabled: true, display: 1 }] + }, + download: { + download_enabled: true, + download_opened: true, + download_csv: true, + download_ascii: true, + download_vo: true, + download_archive: true + }, + summary: { + summary_enabled: true, + summary_opened: true + }, + server_link: { + server_link_enabled: true, + server_link_opened: true + }, + samp: { + samp_enabled: true, + samp_opened: true + }, + datatable: { + datatable_enabled: true, + datatable_opened: true, + datatable_selectable_rows: true + } + } + } +]; +const DATASET_FAMILY_LIST: DatasetFamily[] = [ + { + id: 1, + label: 'datasetFamily1', + display: 1, + opened: true + }, + { + id: 2, + label: 'datasetFamily2', + display: 2, + opened: true + } +]; +const SURVEY_LIST: Survey[] = [ + { + name: 'survey1', + label: 'Survey one', + description: 'This is survey one', + link: 'http://survey1.com', + manager: 'me', + id_database: 1, + nb_datasets: 2 + }, + { + name: 'survey2', + label: 'Survey two', + description: 'This is survey two', + link: 'http://survey2.com', + manager: 'me', + id_database: 1, + nb_datasets: 2 + } +]; + +describe('DatasetByFamilyComponent', () => { + @Component({ selector: '<app-dataset-card-doc', template: '' }) + class DatasetCardDocStubComponent { + @Input() survey: Survey; + @Input() dataset: Dataset; + @Input() instanceSelected: string; + } + + let component: DatasetByFamilyComponent; + let fixture: ComponentFixture<DatasetByFamilyComponent>; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + imports: [AccordionModule.forRoot()], + declarations: [ + DatasetByFamilyComponent, + DatasetCardDocStubComponent, + sharedPipes + ] + + }).compileComponents(); + fixture = TestBed.createComponent(DatasetByFamilyComponent); + component = fixture.componentInstance; + + component.datasetList = DATASET_LIST; + component.datasetFamilyList = DATASET_FAMILY_LIST; + component.surveyList = SURVEY_LIST; + component.instanceSelected = 'myInstance'; + })); + + it('should create the component', () => { + expect(component).toBeDefined(); + }); +}); diff --git a/client/src/app/instance/documentation/components/dataset-card-doc.component.spec.ts b/client/src/app/instance/documentation/components/dataset-card-doc.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..7911b704f2e874d514ddb9d1873f003ac379160a --- /dev/null +++ b/client/src/app/instance/documentation/components/dataset-card-doc.component.spec.ts @@ -0,0 +1,106 @@ +import { TestBed, waitForAsync, ComponentFixture } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; + +import { PopoverModule } from 'ngx-bootstrap/popover'; + +import { DatasetCardDocComponent } from './dataset-card-doc.component'; +import { Dataset, Survey } from '../../../metamodel/models'; + +const SURVEY: Survey = { + name: 'mySurvey', + label: 'my Survey', + description: 'This is my survey', + link: 'http://my-survey.com', + manager: 'me', + id_database: 1, + nb_datasets: 2 +}; +const DATASET: Dataset = { + name: 'myDataset', + table_ref: 'table', + label: 'my dataset', + description: 'This is my dataset', + display: 1, + data_path: 'path', + survey_name: 'mySurvey', + id_dataset_family: 1, + public: true, + config: { + images: ['image1'], + cone_search: { + cone_search_enabled: true, + cone_search_opened: true, + cone_search_column_ra: 1, + cone_search_column_dec: 2, + cone_search_plot_enabled: true, + cone_search_sdss_enabled: true, + cone_search_sdss_display: 1, + cone_search_background: [{ id: 1, enabled: true, display: 1 }] + }, + download: { + download_enabled: true, + download_opened: true, + download_csv: true, + download_ascii: true, + download_vo: true, + download_archive: true + }, + summary: { + summary_enabled: true, + summary_opened: true + }, + server_link: { + server_link_enabled: true, + server_link_opened: true + }, + samp: { + samp_enabled: true, + samp_opened: true + }, + datatable: { + datatable_enabled: true, + datatable_opened: true, + datatable_selectable_rows: true + } + } +}; + +describe('DatasetCardDocComponent', () => { + let component: DatasetCardDocComponent; + let fixture: ComponentFixture<DatasetCardDocComponent>; + let router: RouterTestingModule; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + imports: [ + RouterTestingModule, + PopoverModule.forRoot() + ], + declarations: [DatasetCardDocComponent], + + }).compileComponents(); + fixture = TestBed.createComponent(DatasetCardDocComponent); + component = fixture.componentInstance; + router = TestBed.inject(RouterTestingModule); + + component.survey = SURVEY; + component.dataset = DATASET; + component.instanceSelected = 'myInstance'; + })); + + it('should create the component', () => { + expect(component).toBeDefined(); + }); + + // it('#selectDataset() should navigate to the right page', () => { + // const spy = jest.spyOn(router, 'navigate'); + // component.selectDataset('myDataset'); + // expect(spy).toHaveBeenCalledTimes(1); + // expect(spy).toHaveBeenCalledWith(['/instance/myInstance/documentation/myDataset']); + // }); + + it('should display information in HTML file', () => { + fixture.detectChanges(); + expect(fixture).toMatchSnapshot(); + }); +}); diff --git a/client/src/app/instance/documentation/components/dataset-card-doc.component.ts b/client/src/app/instance/documentation/components/dataset-card-doc.component.ts index adcfcf400fa4169fb562d3f332f39c049352b3ec..58b4592f754e27105da63dc70f7822a0ba5f49a5 100644 --- a/client/src/app/instance/documentation/components/dataset-card-doc.component.ts +++ b/client/src/app/instance/documentation/components/dataset-card-doc.component.ts @@ -28,7 +28,12 @@ export class DatasetCardDocComponent { constructor(private router: Router) { } - selectDataset(datasetName: string) { + /** + * Navigates to the documentation page for the given dataset. + * + * @param {string} datasetName - The dataset name. + */ + selectDataset(datasetName: string): void { this.router.routeReuseStrategy.shouldReuseRoute = () => false; this.router.navigate([`/instance/${this.instanceSelected}/documentation/${datasetName}`]); } diff --git a/client/src/app/instance/documentation/components/index.ts b/client/src/app/instance/documentation/components/index.ts index a4c97d3abd4d83a23b0ce9ee7365150ae024cc47..ca134f30d03016f8ca7c06345237cbc1ee854075 100644 --- a/client/src/app/instance/documentation/components/index.ts +++ b/client/src/app/instance/documentation/components/index.ts @@ -1,6 +1,6 @@ import { DatasetByFamilyComponent } from './dataset-by-family.component'; import { DatasetCardDocComponent } from './dataset-card-doc.component'; -import { OutputListComponent } from "./output-list.component"; +import { OutputListComponent } from './output-list.component'; export const dummiesComponents = [ DatasetByFamilyComponent, diff --git a/client/src/app/instance/documentation/components/output-list.component.spec.ts b/client/src/app/instance/documentation/components/output-list.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..967a841d48719f819259fd36fff2c43bafdeae8d --- /dev/null +++ b/client/src/app/instance/documentation/components/output-list.component.spec.ts @@ -0,0 +1,61 @@ +import { TestBed, waitForAsync, ComponentFixture } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; + +import { OutputListComponent } from './output-list.component'; +import { Attribute } from '../../../metamodel/models'; + +const ATTRIBUTE_LIST: Attribute[] = [ + { + id: 2, + name: 'name_two', + label: 'label_two', + form_label: 'form_label_two', + description : 'description_two', + output_display: 1, + criteria_display: 1, + search_flag : 'SPECTRUM_1D', + search_type : 'field', + operator : '=', + type: '', + display_detail: 1 + }, + { + id: 1, + name: 'name_one', + label: 'label_one', + form_label: 'form_label_one', + description: 'description_one', + output_display: 2, + criteria_display: 2, + search_flag: 'ID', + search_type: 'field', + operator: '=', + type: 'integer', + display_detail: 2 + } +]; + +describe('OutputListComponent', () => { + let component: OutputListComponent; + let fixture: ComponentFixture<OutputListComponent>; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + imports: [RouterTestingModule], + declarations: [OutputListComponent] + }).compileComponents(); + fixture = TestBed.createComponent(OutputListComponent); + component = fixture.componentInstance; + })); + + it('should create the component', () => { + expect(component).toBeDefined(); + }); + + it('should display information in HTML file', () => { + component.datasetSelected = 'myTestDataset'; + component.attributeList = ATTRIBUTE_LIST; + fixture.detectChanges(); + expect(fixture).toMatchSnapshot(); + }); +}); diff --git a/client/src/app/instance/documentation/containers/dataset-list.component.spec.ts b/client/src/app/instance/documentation/containers/dataset-list.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..afa4d9f4fa8c66e50600573598cbcf7e0cdea490 --- /dev/null +++ b/client/src/app/instance/documentation/containers/dataset-list.component.spec.ts @@ -0,0 +1,57 @@ +import { Component, Input } from '@angular/core'; +import { TestBed, waitForAsync, ComponentFixture } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; + +import { provideMockStore, MockStore } from '@ngrx/store/testing'; + +import { DatasetListComponent } from './dataset-list.component'; +import { AppConfigService } from 'src/app/app-config.service'; +import { Dataset, DatasetFamily, Survey } from '../../../metamodel/models'; +import * as datasetActions from '../../../metamodel/actions/dataset.actions'; + +describe('DatasetListComponent', () => { + @Component({ selector: 'app-spinner', template: '' }) + class SpinnerStubComponent { } + + @Component({ selector: '<app-dataset-by-family', template: '' }) + class DatasetByFamilyStubComponent { + @Input() datasetList: Dataset[]; + @Input() datasetFamilyList: DatasetFamily[]; + @Input() surveyList: Survey[]; + @Input() instanceSelected: string; + } + + let component: DatasetListComponent; + let fixture: ComponentFixture<DatasetListComponent>; + let store: MockStore; + let appConfigServiceStub = new AppConfigService(); + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + imports: [RouterTestingModule], + declarations: [ + DatasetListComponent, + SpinnerStubComponent, + DatasetByFamilyStubComponent, + ], + providers: [ + provideMockStore({ }), + { provide: AppConfigService, useValue: appConfigServiceStub }, + ] + }).compileComponents(); + fixture = TestBed.createComponent(DatasetListComponent); + component = fixture.componentInstance; + store = TestBed.inject(MockStore); + })); + + it('should create the component', () => { + expect(component).toBeDefined(); + }); + + it('should execute ngOnInit lifecycle', () => { + const spy = jest.spyOn(store, 'dispatch'); + component.ngOnInit(); + expect(spy).toHaveBeenCalledTimes(1); + expect(spy).toHaveBeenCalledWith(datasetActions.loadDatasetList()); + }); +}); diff --git a/client/src/app/instance/documentation/containers/dataset-list.component.ts b/client/src/app/instance/documentation/containers/dataset-list.component.ts index 3fd7ad31add6cc2663f4649e3020b78fd4ae350d..2b045c3a14cc6497294bc4cf9a3e639806ca87de 100644 --- a/client/src/app/instance/documentation/containers/dataset-list.component.ts +++ b/client/src/app/instance/documentation/containers/dataset-list.component.ts @@ -7,17 +7,18 @@ * file that was distributed with this source code. */ -import { Component } from '@angular/core'; +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 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 * as authSelector from "../../../auth/auth.selector"; -import * as instanceSelector from "../../../metamodel/selectors/instance.selector"; -import * as surveySelector from "../../../metamodel/selectors/survey.selector"; +import * as authSelector from '../../../auth/auth.selector'; +import * as instanceSelector from '../../../metamodel/selectors/instance.selector'; +import * as surveySelector from '../../../metamodel/selectors/survey.selector'; @Component({ selector: 'app-dataset-list', @@ -30,7 +31,7 @@ import * as surveySelector from "../../../metamodel/selectors/survey.selector"; * * @implements OnInit */ -export class DatasetListComponent { +export class DatasetListComponent implements OnInit { public instanceSelected: Observable<string>; public isAuthenticated: Observable<boolean>; public datasetFamilyListIsLoading: Observable<boolean>; @@ -56,4 +57,8 @@ export class DatasetListComponent { this.datasetListIsLoaded = store.select(datasetSelector.selectDatasetListIsLoaded); this.datasetList = store.select(datasetSelector.selectAllDatasets); } + + ngOnInit() { + this.store.dispatch(datasetActions.loadDatasetList()); + } } diff --git a/client/src/app/instance/documentation/containers/documentation.component.spec.ts b/client/src/app/instance/documentation/containers/documentation.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..6bcf457b35645e6f72c85ba298ccaf36c9f8f59c --- /dev/null +++ b/client/src/app/instance/documentation/containers/documentation.component.spec.ts @@ -0,0 +1,62 @@ +import { Component, Input } from '@angular/core'; +import { TestBed, waitForAsync, ComponentFixture } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; + +import { provideMockStore, MockStore } from '@ngrx/store/testing'; + +import { DocumentationComponent } from './documentation.component'; +import { AppConfigService } from 'src/app/app-config.service'; +import { Attribute } from '../../../metamodel/models'; +import * as attributeActions from '../../../metamodel/actions/attribute.actions'; + +describe('DocumentationComponent', () => { + @Component({ selector: 'app-spinner', template: '' }) + class SpinnerStubComponent { } + + @Component({ selector: '<app-output-list', template: '' }) + class OutputListStubComponent { + @Input() datasetSelected: string; + @Input() attributeList: Attribute[]; + } + + let component: DocumentationComponent; + let fixture: ComponentFixture<DocumentationComponent>; + let store: MockStore; + let appConfigServiceStub = new AppConfigService(); + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + imports: [RouterTestingModule], + declarations: [ + DocumentationComponent, + SpinnerStubComponent, + OutputListStubComponent, + ], + providers: [ + provideMockStore({ }), + { provide: AppConfigService, useValue: appConfigServiceStub }, + ] + }).compileComponents(); + fixture = TestBed.createComponent(DocumentationComponent); + component = fixture.componentInstance; + store = TestBed.inject(MockStore); + })); + + it('should create the component', () => { + expect(component).toBeDefined(); + }); + + it('should execute ngOnInit lifecycle', () => { + const spy = jest.spyOn(store, 'dispatch'); + component.ngOnInit(); + expect(spy).toHaveBeenCalledTimes(1); + expect(spy).toHaveBeenCalledWith(attributeActions.loadAttributeList()); + }); + + it('#getUrlServer() should return server URL address', () => { + appConfigServiceStub.apiUrl = 'http://test.com'; + expect(component.getUrlServer()).toBe('http://test.com'); + appConfigServiceStub.apiUrl = '/testing'; + expect(component.getUrlServer()).toBe('http://localhost/testing'); + }); +}); diff --git a/client/src/app/instance/documentation/containers/documentation.component.ts b/client/src/app/instance/documentation/containers/documentation.component.ts index 49d8b251223ae12942034bb37a68211a5f4318e7..f3e732d7d9ac7008fee50173ba465dbbd017682d 100644 --- a/client/src/app/instance/documentation/containers/documentation.component.ts +++ b/client/src/app/instance/documentation/containers/documentation.component.ts @@ -16,8 +16,8 @@ import * as attributeActions from 'src/app/metamodel/actions/attribute.actions'; import * as datasetSelector from 'src/app/metamodel/selectors/dataset.selector'; import { AppConfigService } from 'src/app/app-config.service'; import { Attribute } from 'src/app/metamodel/models'; -import * as instanceSelector from "../../../metamodel/selectors/instance.selector"; -import * as attributeSelector from "../../../metamodel/selectors/attribute.selector"; +import * as instanceSelector from '../../../metamodel/selectors/instance.selector'; +import * as attributeSelector from '../../../metamodel/selectors/attribute.selector'; @Component({ selector: 'app-documentation', diff --git a/client/src/app/instance/documentation/documentation-routing.module.ts b/client/src/app/instance/documentation/documentation-routing.module.ts index 285ad9f802ab495dd3bccd3e83d959d44f0d6757..e4e0b4da1ae8f5d8af008b23e71a53f419ed2fbd 100644 --- a/client/src/app/instance/documentation/documentation-routing.module.ts +++ b/client/src/app/instance/documentation/documentation-routing.module.ts @@ -10,14 +10,18 @@ import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; -import { DatasetListComponent } from "./containers/dataset-list.component"; -import { DocumentationComponent } from "./containers/documentation.component"; +import { DatasetListComponent } from './containers/dataset-list.component'; +import { DocumentationComponent } from './containers/documentation.component'; const routes: Routes = [ { path: '', component: DatasetListComponent }, { path: ':dname', component: DocumentationComponent }, ]; +/** + * @class + * @classdesc Documentation routing module. + */ @NgModule({ imports: [RouterModule.forChild(routes)], exports: [RouterModule] diff --git a/client/src/app/instance/documentation/documentation.module.ts b/client/src/app/instance/documentation/documentation.module.ts index f1505519d6c296391630729e362f0b3de08c8480..c00d4b42b3570484f1f705c8515f4b79881d774e 100644 --- a/client/src/app/instance/documentation/documentation.module.ts +++ b/client/src/app/instance/documentation/documentation.module.ts @@ -13,6 +13,10 @@ import { SharedModule } from 'src/app/shared/shared.module'; import { DocumentationRoutingModule, routedComponents } from './documentation-routing.module'; import { dummiesComponents } from './components'; +/** + * @class + * @classdesc Documentation module. + */ @NgModule({ imports: [ SharedModule,