diff --git a/CHANGELOG.md b/CHANGELOG.md index b995ca18bd41c6b08d11db107d522f81071abef0..7ae7743f45729760040cc7b4895970e672695c91 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [3.3.0] - 2020-05 ### Added - #90 => Dynamic documentation to explain how to export results via server urls +- #88 => Search by cone search +- #93 => Auto select dataset if only one present ### Fixed diff --git a/src/app/search/components/dataset/dataset-tabs.component.html b/src/app/search/components/dataset/dataset-tabs.component.html index b63422fc01652e446a980ac41d4954c98ccbe93d..ba362d2edf3e5e132ab0ca7144824c0b75c80a88 100644 --- a/src/app/search/components/dataset/dataset-tabs.component.html +++ b/src/app/search/components/dataset/dataset-tabs.component.html @@ -4,7 +4,6 @@ <ul class="p-0"> <li *ngFor="let dataset of getDatasetListByFamily(datasetFamilyList[0].id); last as isLast" class="list-unstyled px-3 pt-3 pb-0"> - <!-- {{ i }} --> <app-dataset-card [dataset]="dataset" [project]="getProject(dataset)" [datasetSelected]="datasetSelected" (select)="select.emit($event)"> </app-dataset-card> @@ -30,7 +29,7 @@ </span> </div> </button> - <div *ngFor="let dataset of getDatasetListByFamily(family.id); last as isLast"> + <div *ngFor="let dataset of getDatasetListByFamily(family.id); last as isLast"> <app-dataset-card [dataset]="dataset" [project]="getProject(dataset)" diff --git a/src/app/search/components/dataset/dataset-tabs.component.spec.ts b/src/app/search/components/dataset/dataset-tabs.component.spec.ts index f9685ac050cf2b4b8f20d95a9f2dbfd2247f8a36..14c11899b77c24bccdf0f75e6818d99638fc63d0 100644 --- a/src/app/search/components/dataset/dataset-tabs.component.spec.ts +++ b/src/app/search/components/dataset/dataset-tabs.component.spec.ts @@ -21,11 +21,11 @@ describe('[Search][Dataset] Component: DatasetTabsComponent', () => { }) class TestHostComponent { @ViewChild(DatasetTabsComponent, { static: false }) - public testedComponent: DatasetTabsComponent; - private projectList: Project[] = PROJECT_LIST; - private datasetList: Dataset[] = DATASET_LIST; - private datasetFamilyList: Family[] = DATASET_FAMILY_LIST; - private datasetSelected = 'cat_1'; + testedComponent: DatasetTabsComponent; + projectList: Project[] = PROJECT_LIST; + datasetList: Dataset[] = DATASET_LIST; + datasetFamilyList: Family[] = DATASET_FAMILY_LIST; + datasetSelected = 'cat_1'; } @Component({ selector: 'app-dataset-card', template: '' }) @@ -69,5 +69,11 @@ describe('[Search][Dataset] Component: DatasetTabsComponent', () => { const project = testedComponent.getProject(DATASET); expect(project.name).toBe('project_1'); }); + + it('should select dataset if only one dataset in instance', () => { + testedComponent.select.subscribe((event: string) => expect(event).toBe('cat_1')); + testHostComponent.datasetList = [DATASET] + testHostFixture.detectChanges(); + }); }); diff --git a/src/app/search/components/dataset/dataset-tabs.component.ts b/src/app/search/components/dataset/dataset-tabs.component.ts index c127b296dcf604ca2e76d99eb8c6939c37f75ffa..918c9f654d9f542704cf2871475ca2be5bafa6af 100644 --- a/src/app/search/components/dataset/dataset-tabs.component.ts +++ b/src/app/search/components/dataset/dataset-tabs.component.ts @@ -10,13 +10,21 @@ import { Project, Dataset, Family } from '../../../metamodel/model'; }) export class DatasetTabsComponent { @Input() projectList: Project[]; - @Input() datasetList: Dataset[]; + @Input() + set datasetList(datasetList: Dataset[]) { + this.datasets = datasetList; + if (datasetList.length === 1) { + this.select.emit(datasetList[0].name); + } + } @Input() datasetFamilyList: Family[]; @Input() datasetSelected: string; @Output() select: EventEmitter<string> = new EventEmitter(); + + datasets: Dataset[]; getDatasetListByFamily(idFamily: number): Dataset[] { - return this.datasetList + return this.datasets .filter(d => d.id_dataset_family === idFamily) .sort((a, b) => a.display - b.display); } diff --git a/src/app/search/containers/dataset.component.ts b/src/app/search/containers/dataset.component.ts index cd25cd2d86c0e7eee54c69c13c2cb219ab6ee9a6..d1c99186f5d9b2f91437376ba28ebaca82850854 100644 --- a/src/app/search/containers/dataset.component.ts +++ b/src/app/search/containers/dataset.component.ts @@ -70,7 +70,9 @@ export class DatasetComponent implements OnInit { } selectDataset(datasetName: string): void { - this.store.dispatch(new searchActions.NewSearchAction(datasetName)); + // Create a micro tasks that is processed after the current synchronous code + // This micro task prevent the expression has changed after it was checked + Promise.resolve(null).then(() => this.store.dispatch(new searchActions.NewSearchAction(datasetName))); this.store.dispatch(new attributeActions.LoadAttributeSearchMetaAction(datasetName)); this.store.dispatch(new criteriaActions.LoadCriteriaSearchMetaAction(datasetName)); this.store.dispatch(new outputActions.LoadOutputSearchMetaAction(datasetName));