Skip to content
Snippets Groups Projects
Commit d3d69f2f authored by Tifenn Guillas's avatar Tifenn Guillas
Browse files

Datasets selection page => DONE

parent 3142e47d
No related branches found
No related tags found
2 merge requests!147Develop,!137Resolve "[Module Multiple] : ajouter le nouveau module"
Showing
with 133 additions and 111 deletions
<div class="row"> <div class="row">
<div *ngFor="let project of getProjectSortedByName()" class="col-12 col-md-4 my-3 text-center"> <div *ngFor="let project of getProjectSortedByName()" class="col-12 col-lg-6 col-xl-4 my-3 text-center">
<app-datasets-by-project <app-datasets-by-project
[project]="project" [project]="project"
[datasetList]="getDatasetsByProject(project.name)" [datasetList]="getDatasetsByProject(project.name)"
[selectedDatasets]="selectedDatasets" [selectedDatasets]="selectedDatasets"
[isAllSelected]="getIsAllSelected(project.name)" [isAllSelected]="getIsAllSelected(project.name)"
[isAllUnselected]="getIsAllUnselected(project.name)" [isAllUnselected]="getIsAllUnselected(project.name)"
(updateDatasetList)="updateDatasetList.emit($event)"> (updateSelectedDatasets)="updateSelectedDatasets.emit($event)">
</app-datasets-by-project> </app-datasets-by-project>
</div> </div>
</div> </div>
\ No newline at end of file
import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core'; import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';
// import { Family, Category, Attribute } from '../../../metamodel/model';
// import { sortByDisplay } from '../../../shared/utils';
import { Dataset, Project } from "../../metamodel/model"; import { Dataset, Project } from "../../metamodel/model";
@Component({ @Component({
...@@ -13,18 +11,11 @@ export class DatasetListComponent { ...@@ -13,18 +11,11 @@ export class DatasetListComponent {
@Input() projectList: Project[]; @Input() projectList: Project[];
@Input() datasetList: Dataset[]; @Input() datasetList: Dataset[];
@Input() selectedDatasets: string[]; @Input() selectedDatasets: string[];
@Output() updateDatasetList: EventEmitter<string[]> = new EventEmitter(); @Output() updateSelectedDatasets: EventEmitter<string[]> = new EventEmitter();
getProjectSortedByName(): Project[] { getProjectSortedByName(): Project[] {
// this.projectList.sort((a, b) => { return [...this.projectList].sort((a, b) => a.name.localeCompare(b.name));
// // console.log(a.name, ' | ', b.name, ' | ', a.name.localeCompare(b.name));
// // return a.name.localeCompare(b.name);
// return -1
// });
let plist: Project[] = [...this.projectList];
console.log(plist.sort((a, b) => a.name.localeCompare(b.name)));
return this.projectList;
} }
getDatasetsByProject(projectName: string): Dataset[] { getDatasetsByProject(projectName: string): Dataset[] {
...@@ -42,13 +33,4 @@ export class DatasetListComponent { ...@@ -42,13 +33,4 @@ export class DatasetListComponent {
const filteredSelectedDatasets = this.selectedDatasets.filter(name => datasetListName.indexOf(name) > -1); const filteredSelectedDatasets = this.selectedDatasets.filter(name => datasetListName.indexOf(name) > -1);
return filteredSelectedDatasets.length === 0; return filteredSelectedDatasets.length === 0;
} }
// emitChange(clonedOutputList: number[]): void {
// this.change.emit(
// this.datasetAttributeList
// .filter(a => clonedOutputList.indexOf(a.id) > -1)
// .sort((a, b) => a.output_display - b.output_display)
// .map(a => a.id)
// );
// }
} }
...@@ -14,7 +14,7 @@ export class DatasetsByProjetComponent { ...@@ -14,7 +14,7 @@ export class DatasetsByProjetComponent {
@Input() selectedDatasets: string[]; @Input() selectedDatasets: string[];
@Input() isAllSelected: boolean; @Input() isAllSelected: boolean;
@Input() isAllUnselected: boolean; @Input() isAllUnselected: boolean;
@Output() updateDatasetList: EventEmitter<string[]> = new EventEmitter(); @Output() updateSelectedDatasets: EventEmitter<string[]> = new EventEmitter();
getDatasetSortedByDisplay(): Dataset[] { getDatasetSortedByDisplay(): Dataset[] {
return this.datasetList.sort(sortByDisplay); return this.datasetList.sort(sortByDisplay);
...@@ -32,7 +32,7 @@ export class DatasetsByProjetComponent { ...@@ -32,7 +32,7 @@ export class DatasetsByProjetComponent {
} else { } else {
clonedSelectedDatasets.push(dname); clonedSelectedDatasets.push(dname);
} }
this.updateDatasetList.emit(clonedSelectedDatasets); this.updateSelectedDatasets.emit(clonedSelectedDatasets);
} }
selectAll(): void { selectAll(): void {
...@@ -41,7 +41,7 @@ export class DatasetsByProjetComponent { ...@@ -41,7 +41,7 @@ export class DatasetsByProjetComponent {
datasetListName.filter(name => clonedSelectedDatasets.indexOf(name) === -1).forEach(name => { datasetListName.filter(name => clonedSelectedDatasets.indexOf(name) === -1).forEach(name => {
clonedSelectedDatasets.push(name); clonedSelectedDatasets.push(name);
}); });
this.updateDatasetList.emit(clonedSelectedDatasets); this.updateSelectedDatasets.emit(clonedSelectedDatasets);
} }
unselectAll(): void { unselectAll(): void {
...@@ -51,6 +51,6 @@ export class DatasetsByProjetComponent { ...@@ -51,6 +51,6 @@ export class DatasetsByProjetComponent {
const index = clonedSelectedDatasets.indexOf(name); const index = clonedSelectedDatasets.indexOf(name);
clonedSelectedDatasets.splice(index, 1); clonedSelectedDatasets.splice(index, 1);
}); });
this.updateDatasetList.emit(clonedSelectedDatasets); this.updateSelectedDatasets.emit(clonedSelectedDatasets);
} }
} }
...@@ -27,58 +27,37 @@ ...@@ -27,58 +27,37 @@
<span class="sr-only">Loading...</span> <span class="sr-only">Loading...</span>
</span> </span>
<div *ngIf="datasetSearchMetaIsLoaded"> <div *ngIf="datasetSearchMetaIsLoaded">
<p *ngIf="!datasetList" class="pl-5 text-danger font-weight-bold"> <p *ngIf="noSelectedDatasets" class="pl-5 text-danger font-weight-bold">
At least 1 dataset required! At least 1 dataset required!
</p> </p>
<div *ngIf="datasetList"> <div *ngIf="!noSelectedDatasets">
<ul class="ml-3 pl-5 list-unstyled"> <!-- Accordion projects -->
<li *ngFor="let dataset of datasetList">{{ dataset.label }}</li> <accordion [isAnimated]="true">
</ul> <accordion-group *ngFor="let project of getProjectSortedByName()" #ag panelClass="abstract-accordion" [isOpen]="accordionProjectIsOpen" class="pl-5">
<!-- &lt;!&ndash; Accordion families &ndash;&gt;--> <button class="btn btn-link btn-block clearfix pb-1 text-primary" accordion-heading>
<!-- <accordion [isAnimated]="true">--> <div class="pull-left float-left">
<!-- <accordion-group *ngFor="let family of outputFamilyList" #ag panelClass="abstract-accordion" [isOpen]="accordionFamilyIsOpen" class="pl-5">--> {{ project.label }}
<!-- <button class="btn btn-link btn-block clearfix pb-1 text-primary" accordion-heading>--> &nbsp;
<!-- <div class="pull-left float-left">--> <span *ngIf="ag.isOpen">
<!-- {{ family.label }}--> <span class="fas fa-chevron-up"></span>
<!-- &nbsp;--> </span>
<!-- <span *ngIf="ag.isOpen">--> <span *ngIf="!ag.isOpen">
<!-- <span class="fas fa-chevron-up"></span>--> <span class="fas fa-chevron-down"></span>
<!-- </span>--> </span>
<!-- <span *ngIf="!ag.isOpen">--> </div>
<!-- <span class="fas fa-chevron-down"></span>--> </button>
<!-- </span>-->
<!-- </div>-->
<!-- </button>-->
<!-- &lt;!&ndash; Accordion categories &ndash;&gt;--> <!-- Selected Datasets -->
<!-- <accordion [isAnimated]="true">--> <ul *ngIf="getSelectedDatasetsByProject(project.name).length > 0; else noDataset" class="mb-0 pl-4 list-unstyled">
<!-- <accordion-group *ngFor="let category of getCategoryByFamilySortedByDisplay(family.id)" #ag panelClass="abstract-accordion" [isOpen]="currentStep === 'output' || outputList.length < 10" class="pl-4">--> <li *ngFor="let dataset of getSelectedDatasetsByProject(project.name)" class="pb-1">
<!-- <button class="btn btn-link btn-block clearfix pb-1" accordion-heading>--> {{ dataset.label }}
<!-- <div class="pull-left float-left text-primary">--> </li>
<!-- {{ category.label }}--> </ul>
<!-- &nbsp;--> <ng-template #noDataset>
<!-- <span *ngIf="ag.isOpen">--> <p class="mb-1 pl-4">No selected dataset</p>
<!-- <span class="fas fa-chevron-up"></span>--> </ng-template>
<!-- </span>--> </accordion-group>
<!-- <span *ngIf="!ag.isOpen">--> </accordion>
<!-- <span class="fas fa-chevron-down"></span>-->
<!-- </span>-->
<!-- </div>-->
<!-- </button>-->
<!-- &lt;!&ndash; Output list &ndash;&gt;-->
<!-- <ul *ngIf="getSelectedOutputByCategory(category.id).length > 0; else noOutputs" class="mb-0 pl-4 list-unstyled">-->
<!-- <li *ngFor="let output of getSelectedOutputByCategory(category.id)" class="pb-1">-->
<!-- {{ output.form_label }}-->
<!-- </li>-->
<!-- </ul>-->
<!-- <ng-template #noOutputs>-->
<!-- <p class="mb-1 pl-4">No selected output</p>-->
<!-- </ng-template>-->
<!-- </accordion-group>-->
<!-- </accordion>-->
<!-- </accordion-group>-->
<!-- </accordion>-->
</div> </div>
</div> </div>
</div> </div>
import {ChangeDetectionStrategy, Component, Input, ViewEncapsulation} from '@angular/core'; import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
import { Dataset } from '../../metamodel/model'; import { Dataset, Project } from '../../metamodel/model';
import { ConeSearch } from "../../shared/cone-search/store/model"; import { ConeSearch } from "../../shared/cone-search/store/model";
import { SearchMultipleQueryParams } from "../store/model"; import { SearchMultipleQueryParams } from "../store/model";
...@@ -9,7 +9,6 @@ import { SearchMultipleQueryParams } from "../store/model"; ...@@ -9,7 +9,6 @@ import { SearchMultipleQueryParams } from "../store/model";
templateUrl: 'summary-multiple.component.html', templateUrl: 'summary-multiple.component.html',
styleUrls: ['summary-multiple.component.css'], styleUrls: ['summary-multiple.component.css'],
changeDetection: ChangeDetectionStrategy.OnPush, changeDetection: ChangeDetectionStrategy.OnPush,
// encapsulation: ViewEncapsulation.None
}) })
export class SummaryMultipleComponent { export class SummaryMultipleComponent {
@Input() currentStep: string; @Input() currentStep: string;
...@@ -17,6 +16,21 @@ export class SummaryMultipleComponent { ...@@ -17,6 +16,21 @@ export class SummaryMultipleComponent {
@Input() coneSearch: ConeSearch; @Input() coneSearch: ConeSearch;
@Input() datasetSearchMetaIsLoading: boolean; @Input() datasetSearchMetaIsLoading: boolean;
@Input() datasetSearchMetaIsLoaded: boolean; @Input() datasetSearchMetaIsLoaded: boolean;
@Input() projectList: Project[];
@Input() datasetList: Dataset[]; @Input() datasetList: Dataset[];
@Input() selectedDatasets: string[];
@Input() noSelectedDatasets: boolean;
@Input() queryParams: SearchMultipleQueryParams; @Input() queryParams: SearchMultipleQueryParams;
accordionProjectIsOpen = true;
getProjectSortedByName(): Project[] {
return [...this.projectList].sort((a, b) => a.name.localeCompare(b.name));
}
getSelectedDatasetsByProject(projectName: string): Dataset[] {
return this.datasetList
.filter(d => d.project_name === projectName)
.filter(d => this.selectedDatasets.includes(d.name));
}
} }
<div class="row mt-4"> <div class="row mt-4">
<div *ngIf="datasetSearchMetaIsLoading | async" class="col-12 col-md-8 col-lg-9 text-center mt-5"> <div class="col-12 col-md-8 col-lg-9">
<span class="fas fa-circle-notch fa-spin fa-3x"></span> <div class="border rounded my-2">
<span class="sr-only">Loading...</span> <p class="border-bottom bg-light text-primary mb-0 py-4 pl-4">Datasets</p>
</div> <div class="px-3">
<div *ngIf="datasetSearchMetaIsLoaded | async" class="col-12 col-md-8 col-lg-9"> <div *ngIf="datasetSearchMetaIsLoading | async" class="text-center my-5">
<app-dataset-list <span class="fas fa-circle-notch fa-spin fa-3x"></span>
[projectList]="projectList | async" <span class="sr-only">Loading...</span>
[datasetList]="datasetList | async" </div>
[selectedDatasets]="selectedDatasets | async" <!-- <div *ngIf="datasetSearchMetaIsLoaded | async">-->
(updateDatasetList)="updateDatasetList($event)"> <app-dataset-list *ngIf="datasetSearchMetaIsLoaded | async"
</app-dataset-list> [projectList]="projectList | async"
[datasetList]="datasetList | async"
[selectedDatasets]="selectedDatasets | async"
(updateSelectedDatasets)="updateSelectedDatasets($event)">
</app-dataset-list>
<!-- </div>-->
</div>
</div>
</div> </div>
<div class="col-12 col-md-4 col-lg-3 pt-2"> <div class="col-12 col-md-4 col-lg-3 pt-2">
<app-summary-multiple <app-summary-multiple
...@@ -18,19 +25,36 @@ ...@@ -18,19 +25,36 @@
[coneSearch]="coneSearch | async" [coneSearch]="coneSearch | async"
[datasetSearchMetaIsLoading]="datasetSearchMetaIsLoading | async" [datasetSearchMetaIsLoading]="datasetSearchMetaIsLoading | async"
[datasetSearchMetaIsLoaded]="datasetSearchMetaIsLoaded | async" [datasetSearchMetaIsLoaded]="datasetSearchMetaIsLoaded | async"
[projectList]="projectList | async"
[datasetList]="datasetList | async" [datasetList]="datasetList | async"
[selectedDatasets]="selectedDatasets | async"
[noSelectedDatasets]="noSelectedDatasets | async"
[queryParams]="queryParams | async"> [queryParams]="queryParams | async">
</app-summary-multiple> </app-summary-multiple>
</div> </div>
</div> </div>
<div class="row mt-5 justify-content-between"> <div class="row mt-5 justify-content-between">
<div class="col"> <div class="col">
<a routerLink="/search-multiple/position" [queryParams]="queryParams | async" class="btn btn-outline-secondary"> <button *ngIf="noSelectedDatasets | async" class="btn btn-outline-secondary disabled not-allowed" title="At least one dataset required!">
<span class="fas fa-arrow-left"></span> Previous
</button>
<a *ngIf="!(noSelectedDatasets | async)"
routerLink="/search-multiple/position"
[queryParams]="queryParams | async"
(click)="checkStep()"
class="btn btn-outline-secondary">
<span class="fas fa-arrow-left"></span> Previous <span class="fas fa-arrow-left"></span> Previous
</a> </a>
</div> </div>
<div class="col col-auto"> <div class="col col-auto">
<a routerLink="/search-multiple/result" [queryParams]="queryParams | async" <button *ngIf="noSelectedDatasets | async" class="btn btn-outline-primary disabled not-allowed" title="At least one dataset required!">
Next <span class="fas fa-arrow-right"></span>
</button>
<a *ngIf="!(noSelectedDatasets | async)"
routerLink="/search-multiple/result"
[queryParams]="queryParams | async"
(click)="checkStep()"
class="btn btn-outline-primary"> class="btn btn-outline-primary">
Next <span class="fas fa-arrow-right"></span> Next <span class="fas fa-arrow-right"></span>
</a> </a>
......
...@@ -33,6 +33,7 @@ export class DatasetsComponent implements OnInit { ...@@ -33,6 +33,7 @@ export class DatasetsComponent implements OnInit {
public isValidConeSearch: Observable<boolean>; public isValidConeSearch: Observable<boolean>;
public coneSearch: Observable<ConeSearch>; public coneSearch: Observable<ConeSearch>;
public selectedDatasets: Observable<string[]>; public selectedDatasets: Observable<string[]>;
public noSelectedDatasets: Observable<boolean>;
public queryParams: Observable<SearchMultipleQueryParams>; public queryParams: Observable<SearchMultipleQueryParams>;
constructor(private store: Store<StoreState>, private scrollTopService: ScrollTopService) { constructor(private store: Store<StoreState>, private scrollTopService: ScrollTopService) {
...@@ -43,8 +44,8 @@ export class DatasetsComponent implements OnInit { ...@@ -43,8 +44,8 @@ export class DatasetsComponent implements OnInit {
this.datasetList = store.select(metamodelSelector.getDatasetList); this.datasetList = store.select(metamodelSelector.getDatasetList);
this.isValidConeSearch = this.store.select(coneSearchSelector.getIsValidConeSearch); this.isValidConeSearch = this.store.select(coneSearchSelector.getIsValidConeSearch);
this.selectedDatasets = this.store.select(searchMultipleSelector.getSelectedDatasets); this.selectedDatasets = this.store.select(searchMultipleSelector.getSelectedDatasets);
this.noSelectedDatasets = this.store.select(searchMultipleSelector.getNoSelectedDatasets);
this.coneSearch = this.store.select(coneSearchSelector.getConeSearch); this.coneSearch = this.store.select(coneSearchSelector.getConeSearch);
this.queryParams = this.store.select(searchMultipleSelector.getQueryParams); this.queryParams = this.store.select(searchMultipleSelector.getQueryParams);
} }
...@@ -61,7 +62,7 @@ export class DatasetsComponent implements OnInit { ...@@ -61,7 +62,7 @@ export class DatasetsComponent implements OnInit {
this.store.dispatch(new searchMultipleActions.DatasetsCheckedAction()); this.store.dispatch(new searchMultipleActions.DatasetsCheckedAction());
} }
updateDatasetList(datasetList: string[]) { updateSelectedDatasets(selectedDatasets: string[]) {
console.log(datasetList); this.store.dispatch(new searchMultipleActions.UpdateSelectedDatasetsAction(selectedDatasets));
} }
} }
<div class="row mt-4"> <div class="row mt-4">
<div class="col-12 col-md-8 col-lg-9"> <div class="col-12 col-md-8 col-lg-9">
<app-cone-search></app-cone-search> <div class="border rounded my-2">
<p class="border-bottom bg-light text-primary mb-0 py-4 pl-4">Cone Search</p>
<div class="p-4">
<app-cone-search></app-cone-search>
</div>
</div>
</div> </div>
<div class="col-12 col-md-4 col-lg-3 pt-2"> <div class="col-12 col-md-4 col-lg-3 pt-2">
<app-summary-multiple <app-summary-multiple
...@@ -9,11 +14,15 @@ ...@@ -9,11 +14,15 @@
[coneSearch]="coneSearch | async" [coneSearch]="coneSearch | async"
[datasetSearchMetaIsLoading]="datasetSearchMetaIsLoading | async" [datasetSearchMetaIsLoading]="datasetSearchMetaIsLoading | async"
[datasetSearchMetaIsLoaded]="datasetSearchMetaIsLoaded | async" [datasetSearchMetaIsLoaded]="datasetSearchMetaIsLoaded | async"
[projectList]="projectList | async"
[datasetList]="datasetList | async" [datasetList]="datasetList | async"
[selectedDatasets]="selectedDatasets | async"
[noSelectedDatasets]="noSelectedDatasets | async"
[queryParams]="queryParams | async"> [queryParams]="queryParams | async">
</app-summary-multiple> </app-summary-multiple>
</div> </div>
</div> </div>
<div class="row mt-5 justify-content-end"> <div class="row mt-5 justify-content-end">
<div class="col col-auto"> <div class="col col-auto">
<button *ngIf="!(isValidConeSearch | async)" class="btn btn-outline-primary disabled not-allowed" title="Not valid position!"> <button *ngIf="!(isValidConeSearch | async)" class="btn btn-outline-primary disabled not-allowed" title="Not valid position!">
......
...@@ -2,7 +2,7 @@ import { Component, OnInit } from '@angular/core'; ...@@ -2,7 +2,7 @@ import { Component, OnInit } from '@angular/core';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { Store } from '@ngrx/store'; import { Store } from '@ngrx/store';
import { Dataset } from '../../metamodel/model'; import { Dataset, Project } from '../../metamodel/model';
import { SearchMultipleQueryParams } from "../store/model"; import { SearchMultipleQueryParams } from "../store/model";
import { ConeSearch } from "../../shared/cone-search/store/model"; import { ConeSearch } from "../../shared/cone-search/store/model";
import * as searchMultipleActions from '../store/search-multiple.action'; import * as searchMultipleActions from '../store/search-multiple.action';
...@@ -29,18 +29,24 @@ export class PositionComponent implements OnInit { ...@@ -29,18 +29,24 @@ export class PositionComponent implements OnInit {
public datasetSearchMetaIsLoading: Observable<boolean>; public datasetSearchMetaIsLoading: Observable<boolean>;
public datasetSearchMetaIsLoaded: Observable<boolean>; public datasetSearchMetaIsLoaded: Observable<boolean>;
public currentStep: Observable<string>; public currentStep: Observable<string>;
public datasetList: Observable<Dataset[]>;
public isValidConeSearch: Observable<boolean>; public isValidConeSearch: Observable<boolean>;
public coneSearch: Observable<ConeSearch>; public coneSearch: Observable<ConeSearch>;
public projectList: Observable<Project[]>;
public datasetList: Observable<Dataset[]>;
public selectedDatasets: Observable<string[]>;
public noSelectedDatasets: Observable<boolean>;
public queryParams: Observable<SearchMultipleQueryParams>; public queryParams: Observable<SearchMultipleQueryParams>;
constructor(private store: Store<StoreState>, private scrollTopService: ScrollTopService) { constructor(private store: Store<StoreState>, private scrollTopService: ScrollTopService) {
this.datasetSearchMetaIsLoading = store.select(metamodelSelector.getDatasetSearchMetaIsLoading); this.datasetSearchMetaIsLoading = store.select(metamodelSelector.getDatasetSearchMetaIsLoading);
this.datasetSearchMetaIsLoaded = store.select(metamodelSelector.getDatasetSearchMetaIsLoaded); this.datasetSearchMetaIsLoaded = store.select(metamodelSelector.getDatasetSearchMetaIsLoaded);
this.currentStep = store.select(searchMultipleSelector.getCurrentStep); this.currentStep = store.select(searchMultipleSelector.getCurrentStep);
this.datasetList = store.select(metamodelSelector.getDatasetList);
this.isValidConeSearch = this.store.select(coneSearchSelector.getIsValidConeSearch); this.isValidConeSearch = this.store.select(coneSearchSelector.getIsValidConeSearch);
this.coneSearch = this.store.select(coneSearchSelector.getConeSearch); this.coneSearch = this.store.select(coneSearchSelector.getConeSearch);
this.projectList = store.select(metamodelSelector.getProjectList);
this.datasetList = store.select(metamodelSelector.getDatasetList);
this.selectedDatasets = store.select(searchMultipleSelector.getSelectedDatasets);
this.noSelectedDatasets = store.select(searchMultipleSelector.getNoSelectedDatasets);
this.queryParams = this.store.select(searchMultipleSelector.getQueryParams); this.queryParams = this.store.select(searchMultipleSelector.getQueryParams);
} }
......
...@@ -5,7 +5,7 @@ export const INIT_SELECTED_DATASETS = '[SearchMultiple] Init Selected Datasets'; ...@@ -5,7 +5,7 @@ export const INIT_SELECTED_DATASETS = '[SearchMultiple] Init Selected Datasets';
export const CHANGE_STEP = '[SearchMultiple] Change Step'; export const CHANGE_STEP = '[SearchMultiple] Change Step';
export const POSITION_CHECKED = '[SearchMultiple] Position Checked'; export const POSITION_CHECKED = '[SearchMultiple] Position Checked';
export const DATASETS_CHECKED = '[SearchMultiple] Datasets Checked'; export const DATASETS_CHECKED = '[SearchMultiple] Datasets Checked';
export const ADD_DATASET = '[SearchMultiple] Add Dataset'; export const UPDATE_SELECTED_DATASETS = '[SearchMultiple] Update Selected Datasets';
export class InitSearchByUrlAction implements Action { export class InitSearchByUrlAction implements Action {
...@@ -38,10 +38,10 @@ export class DatasetsCheckedAction implements Action { ...@@ -38,10 +38,10 @@ export class DatasetsCheckedAction implements Action {
constructor(public payload: {} = null) { } constructor(public payload: {} = null) { }
} }
export class AddDatasetAction implements Action { export class UpdateSelectedDatasetsAction implements Action {
readonly type = ADD_DATASET; readonly type = UPDATE_SELECTED_DATASETS;
constructor(public payload: string) { } constructor(public payload: string[]) { }
} }
export type Actions export type Actions
...@@ -50,4 +50,4 @@ export type Actions ...@@ -50,4 +50,4 @@ export type Actions
| ChangeStepAction | ChangeStepAction
| PositionCheckedAction | PositionCheckedAction
| DatasetsCheckedAction | DatasetsCheckedAction
| AddDatasetAction; | UpdateSelectedDatasetsAction;
...@@ -25,17 +25,15 @@ export const initialState: State = { ...@@ -25,17 +25,15 @@ export const initialState: State = {
export function reducer(state: State = initialState, action: actions.Actions): State { export function reducer(state: State = initialState, action: actions.Actions): State {
switch (action.type) { switch (action.type) {
case actions.INIT_SELECTED_DATASETS: case actions.INIT_SELECTED_DATASETS:
const selectedDatasets: string[] = action.payload;
return { return {
...state, ...state,
selectedDatasets selectedDatasets: action.payload
}; };
case actions.CHANGE_STEP: case actions.CHANGE_STEP:
const currentStep: string = action.payload;
return { return {
...state, ...state,
currentStep currentStep: action.payload
}; };
case actions.POSITION_CHECKED: case actions.POSITION_CHECKED:
...@@ -51,11 +49,10 @@ export function reducer(state: State = initialState, action: actions.Actions): S ...@@ -51,11 +49,10 @@ export function reducer(state: State = initialState, action: actions.Actions): S
datasetsStepChecked: true datasetsStepChecked: true
}; };
case actions.ADD_DATASET: case actions.UPDATE_SELECTED_DATASETS:
const dname: string = action.payload;
return { return {
...state, ...state,
selectedDatasets: [...state.selectedDatasets, dname] selectedDatasets: action.payload
}; };
default: default:
......
...@@ -36,12 +36,22 @@ export const getResultStepChecked = createSelector( ...@@ -36,12 +36,22 @@ export const getResultStepChecked = createSelector(
searchMultiple.getResultStepChecked searchMultiple.getResultStepChecked
); );
export const getSelectedDatasets = createSelector( export const getSelectedDatasets = createSelector(
getSearchMultipleState, getSearchMultipleState,
searchMultiple.getSelectedDatasets searchMultiple.getSelectedDatasets
); );
export const getNoSelectedDatasets = createSelector(
getSelectedDatasets,
(
selectedDatasets: string[]) => {
if (selectedDatasets.length === 0) {
return true;
}
return false;
}
);
export const getQueryParams = createSelector( export const getQueryParams = createSelector(
getIsValidConeSearch, getIsValidConeSearch,
getConeSearch, getConeSearch,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment