Skip to content

Commit 042b5a8

Browse files
MillenniumFalconMechanicNoopDog
authored andcommitted
Added release config and related local store/state. Resolves #1045.
1 parent a87f8ea commit 042b5a8

38 files changed

+762
-35
lines changed

spa/src/app/_ngrx/app.effects.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import { FileManifestEffects } from "../files/_ngrx/file-manifest/file-manifest.
1313
import { IntegrationEffects } from "../files/_ngrx/integration/integration.effects";
1414
import { MatrixEffects } from "../files/_ngrx/matrix/matrix.effects";
1515
import { ProjectEffects } from "../files/_ngrx/project/project.effects";
16+
import { ReleaseEffects } from "../files/_ngrx/release/release.effects";
1617
import { SystemEffects } from "../system/_ngrx/system.effects";
1718
import { TableEffects } from "../files/_ngrx/table/table.effects";
1819
import { TerraEffects } from "../files/_ngrx/terra/terra.effects";
@@ -25,6 +26,7 @@ export const AppEffects = [
2526
IntegrationEffects,
2627
MatrixEffects,
2728
ProjectEffects,
29+
ReleaseEffects,
2830
SystemEffects,
2931
TableEffects,
3032
TerraEffects

spa/src/app/app.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<header>
55
<hca-toolbar (menuOpen)="onMenuOpen($event)"></hca-toolbar>
66
</header>
7-
<r-release *ngIf="showRRelease()"></r-release>
7+
<release-banner *ngIf="showRRelease()"></release-banner>
88
<ng-container *ngIf="systemStatus$ | async as systemStatus">
99
<announcement *ngIf="!systemStatus.health.ok" class="status" >
1010
<mat-icon>warning</mat-icon>

spa/src/app/app.component.spec.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,14 @@ import { ReplaySubject } from "rxjs";
1818
import { AppComponent } from "./app.component";
1919
import { ConfigService } from "./config/config.service";
2020
import { SetViewStateAction } from "./files/_ngrx/file-facet-list/set-view-state.action";
21+
import { ReleaseBannerComponent } from "./files/releases/release-banner/release-banner.component";
2122
import { FileFacetName } from "./files/shared/file-facet-name.model";
2223
import { GenusSpecies } from "./files/shared/genus-species.model";
2324
import { LibraryConstructionApproach } from "./files/shared/library-construction-approach.model";
2425
import { QueryStringFacet } from "./files/shared/query-string-facet.model";
2526
import { EntityName } from "./files/shared/entity-name.model";
2627
import { DeviceDetectorService } from "ngx-device-detector";
28+
import { AnnouncementComponent } from "./shared/announcement/announcement.component";
2729
import { CCToolbarNavComponent } from "./shared/cc-toolbar-nav/cc-toolbar-nav.component";
2830
import { CCToolbarNavItemComponent } from "./shared/cc-toolbar-nav-item/cc-toolbar-nav-item.component";
2931
import { DesktopFooterComponent } from "./site/desktop-footer/desktop-footer.component";
@@ -62,7 +64,9 @@ describe("AppComponent:", () => {
6264
DesktopFooterComponent,
6365
HCAFooterComponent,
6466
HCAToolbarComponent,
65-
StickyFooterComponent
67+
StickyFooterComponent,
68+
AnnouncementComponent,
69+
ReleaseBannerComponent
6670
],
6771
imports: [
6872
RouterTestingModule,

spa/src/app/app.component.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,16 @@ import { Config } from "./config/config.model";
1818
import { selectConfigConfig } from "./config/_ngrx/config.selectors";
1919
import { SetViewStateAction } from "./files/_ngrx/file-facet-list/set-view-state.action";
2020
import { EntityName } from "./files/shared/entity-name.model";
21+
import { FileFacetName } from "./files/shared/file-facet-name.model";
2122
import { QueryStringFacet } from "./files/shared/query-string-facet.model";
23+
import { GenusSpecies } from "./files/shared/genus-species.model";
24+
import { FetchReleasesRequestAction } from "./files/_ngrx/release/fetch-releases-request.action";
2225
import { AppState } from "./_ngrx/app.state";
2326
import { DeviceDetectorService } from "ngx-device-detector";
2427
import { HealthRequestAction } from "./system/_ngrx/health/health-request.action";
2528
import { selectHealth, selectIndex } from "./system/_ngrx/system.selectors";
2629
import { IndexRequestAction } from "./system/_ngrx/index/index-request.action";
2730
import { SystemState } from "./system.state";
28-
import { FileFacetName } from "./files/shared/file-facet-name.model";
29-
import { GenusSpecies } from "./files/shared/genus-species.model";
3031

3132
@Component({
3233
selector: "app-root",
@@ -123,6 +124,14 @@ export class AppComponent implements OnInit, OnDestroy {
123124
return !!params["filter"];
124125
}
125126

127+
/**
128+
* Load release data from local JSON files.
129+
*/
130+
private loadReleaseData(): void {
131+
132+
this.store.dispatch(new FetchReleasesRequestAction());
133+
}
134+
126135
/**
127136
* Determine the current selected tab.
128137
*
@@ -258,6 +267,7 @@ export class AppComponent implements OnInit, OnDestroy {
258267

259268
this.setAppStateFromURL();
260269
this.systemCheck();
270+
this.loadReleaseData();
261271

262272
this.config$ = this.store.pipe(
263273
select(selectConfigConfig),

spa/src/app/app.module.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import { ConfigModule } from "./config/config.module";
2727
import { ConfigService } from "./config/config.service";
2828
import { UserService } from "./data/user/user.service";
2929
import { FilesModule } from "./files/files.module";
30-
import { RReleaseComponent } from "./files/releases/r-release/r-release.component";
30+
import { ReleaseBannerComponent } from "./files/releases/release-banner/release-banner.component";
3131
import { AppReducers } from "./_ngrx/app.reducer";
3232
import { HCAEncodeHttpParamsInterceptor } from "./http/hca-encode-http-params.interceptor";
3333
import { HCAHttpResponseErrorInterceptor } from "./http/hca-http-response-error.interceptor";
@@ -83,7 +83,7 @@ import { SystemService } from "./system/shared/system.service";
8383
DesktopFooterComponent,
8484
HCAFooterComponent,
8585
HCAToolbarComponent,
86-
RReleaseComponent,
86+
ReleaseBannerComponent,
8787
StickyFooterComponent
8888
],
8989
providers: [

spa/src/app/files/_ngrx/file.reducer.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import * as fileManifestReducer from "./file-manifest/file-manifest.reducer";
1212
import * as integrationReducer from "./integration/integration.reducer";
1313
import * as matrixReducer from "./matrix/matrix.reducer";
1414
import * as projectReducer from "./project/project.reducer";
15+
import * as releaseReducer from "./release/release.reducer";
1516
import * as tableReducer from "./table/table.reducer";
1617
import * as searchReducer from "./search/search.reducer";
1718

@@ -22,6 +23,7 @@ export const reducer = {
2223
integration: integrationReducer.reducer,
2324
matrix: matrixReducer.reducer,
2425
project: projectReducer.reducer,
26+
release: releaseReducer.reducer,
2527
search: searchReducer.reducer,
2628
tableState: tableReducer.reducer
2729
};

spa/src/app/files/_ngrx/file.state.mock.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import { TerraState } from "./terra/terra.state";
1818
import { EntityName } from "../shared/entity-name.model";
1919
import * as searchStateMock from "./search/search.state.mock";
2020
import { IntegrationState } from "./integration/integration.state";
21+
import { ReleaseState } from "./release/release.state";
2122

2223
/**
2324
* Default project state - current tab is projects, no selected search terms
@@ -29,6 +30,7 @@ export const DEFAULT_PROJECTS_STATE = {
2930
integration: IntegrationState.getDefaultState(),
3031
matrix: MatrixState.getDefaultState(),
3132
project: ProjectState.getDefaultState(),
33+
release: ReleaseState.getDefaultState(),
3234
search: SearchState.getDefaultState(),
3335
tableState: getDefaultTableState(),
3436
terra: TerraState.getDefaultState()

spa/src/app/files/_ngrx/file.state.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import { FileSummaryState } from "./file-summary/file-summary.state";
1313
import { IntegrationState } from "./integration/integration.state";
1414
import { MatrixState } from "./matrix/matrix.state";
1515
import { ProjectState } from "./project/project.state";
16+
import { ReleaseState } from "./release/release.state";
1617
import { SearchState } from "./search/search.state";
1718
import { TableState } from "./table/table.state";
1819

@@ -24,6 +25,7 @@ export interface FileState {
2425
integration: IntegrationState,
2526
matrix: MatrixState;
2627
project: ProjectState;
28+
release: ReleaseState,
2729
search: SearchState;
2830
tableState: TableState;
2931
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
/**
2+
* Human Cell Atlas
3+
* https://www.humancellatlas.org/
4+
*
5+
* Action that is triggered on load of app, to read local JSON release data into store.
6+
*/
7+
8+
// Core dependencies
9+
import { Action } from "@ngrx/store";
10+
11+
export class FetchReleasesRequestAction implements Action {
12+
public static ACTION_TYPE = "RELEASES.RELEASES_REQUEST";
13+
public readonly type = FetchReleasesRequestAction.ACTION_TYPE;
14+
constructor() {}
15+
}
16+
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
/**
2+
* Human Cell Atlas
3+
* https://www.humancellatlas.org/
4+
*
5+
* Action that is triggered when release data has been successfully read from local JSON.
6+
*/
7+
8+
// Core dependencies
9+
import { Action } from "@ngrx/store";
10+
11+
// App dependencies
12+
import { Release } from "../../releases/2020-march/release";
13+
14+
export class FetchReleasesSuccessAction implements Action {
15+
public static ACTION_TYPE = "RELEASES.RELEASES_SUCCESS";
16+
public readonly type = FetchReleasesSuccessAction.ACTION_TYPE;
17+
constructor(public readonly releases: Release[]) {}
18+
}
19+

0 commit comments

Comments
 (0)