@@ -8,18 +8,24 @@ export interface State {
88 deleteError : string | null ;
99 uploadError : string | null ;
1010 updateError : string | null ;
11+ hideError : string | null ;
12+ unhideError : string | null ;
1113 ids : string [ ] ;
1214 entities : { [ id : string ] : MatrixPlate } ;
1315 selectedPlateId : string | null ;
16+ showHidden : boolean ;
1417}
1518
1619export const initialState : State = {
1720 deleteError : null ,
1821 uploadError : null ,
1922 updateError : null ,
23+ hideError : null ,
24+ unhideError : null ,
2025 ids : [ ] ,
2126 entities : { } ,
22- selectedPlateId : null
27+ selectedPlateId : null ,
28+ showHidden : false
2329} ;
2430
2531export function reducer ( state = initialState , action : matrixPlate . Actions | bulk . Actions ) : State {
@@ -29,7 +35,7 @@ export function reducer(state = initialState, action: matrixPlate.Actions | bulk
2935 const newPlates = plates . filter ( plate => ! state . entities [ plate . id ] ) ;
3036
3137 const newPlateIds = newPlates . map ( plate => plate . id ) ;
32- const newPlateEntities = newPlates . reduce ( ( entities : { [ id : string ] : MatrixPlate } , plate : MatrixPlate ) => {
38+ const plateEntities = plates . reduce ( ( entities : { [ id : string ] : MatrixPlate } , plate : MatrixPlate ) => {
3339 return Object . assign ( entities , {
3440 [ plate . id ] : plate
3541 } ) ;
@@ -39,8 +45,10 @@ export function reducer(state = initialState, action: matrixPlate.Actions | bulk
3945 deleteError : null ,
4046 uploadError : null ,
4147 updateError : null ,
48+ hideError : null ,
49+ unhideError : null ,
4250 ids : [ ...state . ids , ...newPlateIds ] ,
43- entities : Object . assign ( { } , state . entities , newPlateEntities ) ,
51+ entities : Object . assign ( { } , state . entities , plateEntities ) ,
4452 } ) ;
4553
4654 case matrixPlate . LOAD_ONE :
@@ -105,6 +113,17 @@ export function reducer(state = initialState, action: matrixPlate.Actions | bulk
105113
106114 return Object . assign ( { } , state , { selectedPlateId : selectedId } ) ;
107115
116+ case matrixPlate . HIDE_FAILURE :
117+ const hideError = action . payload ;
118+ return Object . assign ( { } , state , { hideError : hideError } ) ;
119+
120+ case matrixPlate . UNHIDE_FAILURE :
121+ const unhideError = action . payload ;
122+ return Object . assign ( { } , state , { unhideError : unhideError } ) ;
123+
124+ case matrixPlate . TOGGLE_HIDDEN :
125+ return Object . assign ( { } , state , { showHidden : ! state . showHidden } ) ;
126+
108127 case bulk . DELETE_BARCODES_SUCCESS :
109128 case bulk . DELETE_SPECIMENS_SUCCESS :
110129 const deletedTubeIds = action . payload . matrixTubeIds ;
@@ -144,6 +163,8 @@ export const getUpdateError = (state: State) => state.updateError;
144163
145164export const getUploadError = ( state : State ) => state . uploadError ;
146165
166+ export const shouldShowHidden = ( state : State ) => state . showHidden ;
167+
147168export const getSelected = createSelector ( getEntities , getSelectedId , ( entities , selectedId ) => {
148169 return entities [ selectedId ] ;
149170} ) ;
@@ -152,4 +173,19 @@ export const getAll = createSelector(getEntities, getIds, (entities, ids) => {
152173 return ids . map ( id => entities [ id ] ) ;
153174} ) ;
154175
176+ export const getUnhidden = createSelector ( getAll , ( allPlates ) => {
177+ return allPlates . filter ( plate => ! plate . hidden ) ;
178+ } ) ;
179+
180+ export const getHidden = createSelector ( getAll , ( allPlates ) => {
181+ return allPlates . filter ( plate => plate . hidden ) ;
182+ } ) ;
183+
184+ export const getActive = createSelector ( shouldShowHidden , getAll , getUnhidden , ( shouldShowHidden , allPlates , unhiddenPlates ) => {
185+ if ( shouldShowHidden ) {
186+ return allPlates ;
187+ } else {
188+ return unhiddenPlates ;
189+ }
190+ } ) ;
155191
0 commit comments