-
Notifications
You must be signed in to change notification settings - Fork 18
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(pmp-web): add single repository statistics
single-repository-statistics-data.service.ts, repository-statistics.component.ts are not fully implemented because of missing data from API and the desired model are not know.
- Loading branch information
1 parent
116649c
commit 7356a9e
Showing
25 changed files
with
442 additions
and
17 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
7 changes: 7 additions & 0 deletions
7
libs/pmp-web/repository/data-access-single-repository-statistics/README.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
# pmp-web-repository-data-access-single-repository-statistics | ||
|
||
This library was generated with [Nx](https://nx.dev). | ||
|
||
## Running unit tests | ||
|
||
Run `nx test pmp-web-repository-data-access-single-repository-statistics` to execute the unit tests. |
10 changes: 10 additions & 0 deletions
10
libs/pmp-web/repository/data-access-single-repository-statistics/jest.config.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
module.exports = { | ||
name: 'pmp-web-repository-data-access-single-repository-statistics', | ||
preset: '../../../../jest.config.js', | ||
coverageDirectory: | ||
'../../../../coverage/libs/pmp-web/repository/data-access-single-repository-statistics', | ||
snapshotSerializers: [ | ||
'jest-preset-angular/AngularSnapshotSerializer.js', | ||
'jest-preset-angular/HTMLCommentSerializer.js' | ||
] | ||
}; |
4 changes: 4 additions & 0 deletions
4
libs/pmp-web/repository/data-access-single-repository-statistics/src/index.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
export * from './lib/+state/single-repository-statistics.facade'; | ||
export * from './lib/+state/single-repository-statistics.reducer'; | ||
export * from './lib/+state/single-repository-statistics.selectors'; | ||
export * from './lib/pmp-web-repository-data-access-single-repository-statistics.module'; |
35 changes: 35 additions & 0 deletions
35
...ccess-single-repository-statistics/src/lib/+state/single-repository-statistics.actions.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
import { Action } from '@ngrx/store'; | ||
import { HttpErrorResponse } from '@angular/common/http'; | ||
import { GetRepositoryStatisticsRequestPayload } from '../resources/request-payloads/get-repository-statistics.request-payload'; | ||
import { RepositoryModel } from '@pimp-my-pr/shared/domain'; | ||
|
||
export namespace fromSingleRepositoryStatisticsActions { | ||
export enum Types { | ||
GetRepositoryStatistics = '[SingleRepositoryStatistics] Get Repository Statistics', | ||
GetRepositoryStatisticsFail = '[SingleRepositoryStatistics] Get Repository Statistics Fail', | ||
GetRepositoryStatisticsSuccess = '[SingleRepositoryStatistics] Get Repository Statistics Success' | ||
} | ||
|
||
export class GetRepositoryStatistics implements Action { | ||
readonly type = Types.GetRepositoryStatistics; | ||
|
||
constructor(public payload: GetRepositoryStatisticsRequestPayload) {} | ||
} | ||
|
||
export class GetRepositoryStatisticsFail implements Action { | ||
readonly type = Types.GetRepositoryStatisticsFail; | ||
|
||
constructor(public payload: HttpErrorResponse) {} | ||
} | ||
|
||
export class GetRepositoryStatisticsSuccess implements Action { | ||
readonly type = Types.GetRepositoryStatisticsSuccess; | ||
|
||
constructor(public payload: RepositoryModel) {} | ||
} | ||
|
||
export type CollectiveType = | ||
| GetRepositoryStatistics | ||
| GetRepositoryStatisticsFail | ||
| GetRepositoryStatisticsSuccess; | ||
} |
39 changes: 39 additions & 0 deletions
39
...ccess-single-repository-statistics/src/lib/+state/single-repository-statistics.effects.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
import { Injectable } from '@angular/core'; | ||
import { Effect } from '@ngrx/effects'; | ||
import { fromSingleRepositoryStatisticsActions } from './single-repository-statistics.actions'; | ||
import { SingleRepositoryStatisticsPartialState } from './single-repository-statistics.reducer'; | ||
import { SingleRepositoryStatisticsDataService } from '../services/single-repository-statistics-data.service'; | ||
import { HttpErrorResponse } from '@angular/common/http'; | ||
import { map } from 'rxjs/operators'; | ||
import { DataPersistence } from '@nrwl/angular'; | ||
|
||
@Injectable() | ||
export class SingleRepositoryStatisticsEffects { | ||
@Effect() | ||
getRepositoryStatistics$ = this.dp.fetch( | ||
fromSingleRepositoryStatisticsActions.Types.GetRepositoryStatistics, | ||
{ | ||
id: () => {}, | ||
run: (action: fromSingleRepositoryStatisticsActions.GetRepositoryStatistics) => { | ||
return this.singleRepositoryStatisticsDataService | ||
.getRepositoryStatistics(action.payload) | ||
.pipe( | ||
map( | ||
data => new fromSingleRepositoryStatisticsActions.GetRepositoryStatisticsSuccess(data) | ||
) | ||
); | ||
}, | ||
onError: ( | ||
action: fromSingleRepositoryStatisticsActions.GetRepositoryStatistics, | ||
error: HttpErrorResponse | ||
) => { | ||
return new fromSingleRepositoryStatisticsActions.GetRepositoryStatisticsFail(error); | ||
} | ||
} | ||
); | ||
|
||
constructor( | ||
private dp: DataPersistence<SingleRepositoryStatisticsPartialState>, | ||
private singleRepositoryStatisticsDataService: SingleRepositoryStatisticsDataService | ||
) {} | ||
} |
24 changes: 24 additions & 0 deletions
24
...access-single-repository-statistics/src/lib/+state/single-repository-statistics.facade.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
import { Injectable } from '@angular/core'; | ||
import { select, Store } from '@ngrx/store'; | ||
import { SingleRepositoryStatisticsPartialState } from './single-repository-statistics.reducer'; | ||
import { singleRepositoryStatisticsQuery } from './single-repository-statistics.selectors'; | ||
import { fromSingleRepositoryStatisticsActions } from './single-repository-statistics.actions'; | ||
import { GetRepositoryStatisticsRequestPayload } from '../resources/request-payloads/get-repository-statistics.request-payload'; | ||
|
||
@Injectable() | ||
export class SingleRepositoryStatisticsFacade { | ||
repositoryStatistics$ = this.store.pipe( | ||
select(singleRepositoryStatisticsQuery.getRepositoryStatistics) | ||
); | ||
repositoryStatisticsLoading$ = this.store.pipe( | ||
select(singleRepositoryStatisticsQuery.getRepositoryStatisticsLoading) | ||
); | ||
repositoryStatisticsLoadError$ = this.store.pipe( | ||
select(singleRepositoryStatisticsQuery.getRepositoryStatisticsLoadError) | ||
); | ||
constructor(private store: Store<SingleRepositoryStatisticsPartialState>) {} | ||
|
||
getRepositoryStatistics(data: GetRepositoryStatisticsRequestPayload): void { | ||
this.store.dispatch(new fromSingleRepositoryStatisticsActions.GetRepositoryStatistics(data)); | ||
} | ||
} |
60 changes: 60 additions & 0 deletions
60
...ccess-single-repository-statistics/src/lib/+state/single-repository-statistics.reducer.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
import { fromSingleRepositoryStatisticsActions } from './single-repository-statistics.actions'; | ||
import { HttpErrorResponse } from '@angular/common/http'; | ||
import { RepositoryModel } from '@pimp-my-pr/shared/domain'; | ||
|
||
export const SINGLEREPOSITORYSTATISTICS_FEATURE_KEY = 'singleRepositoryStatistics'; | ||
|
||
export interface SingleRepositoryStatisticsState { | ||
repositoryStatistics: RepositoryModel | null; | ||
repositoryStatisticsLoading: boolean; | ||
repositoryStatisticsLoadError: HttpErrorResponse | null; | ||
} | ||
|
||
export interface SingleRepositoryStatisticsPartialState { | ||
readonly [SINGLEREPOSITORYSTATISTICS_FEATURE_KEY]: SingleRepositoryStatisticsState; | ||
} | ||
|
||
export const initialState: SingleRepositoryStatisticsState = { | ||
repositoryStatistics: null, | ||
repositoryStatisticsLoading: false, | ||
repositoryStatisticsLoadError: null | ||
}; | ||
|
||
export function singleRepositoryStatisticsReducer( | ||
state: SingleRepositoryStatisticsState = initialState, | ||
action: fromSingleRepositoryStatisticsActions.CollectiveType | ||
): SingleRepositoryStatisticsState { | ||
switch (action.type) { | ||
case fromSingleRepositoryStatisticsActions.Types.GetRepositoryStatistics: { | ||
state = { | ||
...state, | ||
repositoryStatistics: null, | ||
repositoryStatisticsLoading: true, | ||
repositoryStatisticsLoadError: null | ||
}; | ||
break; | ||
} | ||
|
||
case fromSingleRepositoryStatisticsActions.Types.GetRepositoryStatisticsFail: { | ||
state = { | ||
...state, | ||
repositoryStatistics: null, | ||
repositoryStatisticsLoading: false, | ||
repositoryStatisticsLoadError: action.payload | ||
}; | ||
break; | ||
} | ||
|
||
case fromSingleRepositoryStatisticsActions.Types.GetRepositoryStatisticsSuccess: { | ||
state = { | ||
...state, | ||
repositoryStatistics: action.payload, | ||
repositoryStatisticsLoading: false, | ||
repositoryStatisticsLoadError: null | ||
}; | ||
break; | ||
} | ||
} | ||
|
||
return state; | ||
} |
31 changes: 31 additions & 0 deletions
31
...ess-single-repository-statistics/src/lib/+state/single-repository-statistics.selectors.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
import { createFeatureSelector, createSelector } from '@ngrx/store'; | ||
import { | ||
SINGLEREPOSITORYSTATISTICS_FEATURE_KEY, | ||
SingleRepositoryStatisticsState | ||
} from './single-repository-statistics.reducer'; | ||
|
||
// Lookup the 'SingleRepositoryStatistics' feature state managed by NgRx | ||
const getSingleRepositoryStatisticsState = createFeatureSelector<SingleRepositoryStatisticsState>( | ||
SINGLEREPOSITORYSTATISTICS_FEATURE_KEY | ||
); | ||
|
||
const getRepositoryStatistics = createSelector( | ||
getSingleRepositoryStatisticsState, | ||
state => state.repositoryStatistics | ||
); | ||
|
||
const getRepositoryStatisticsLoading = createSelector( | ||
getSingleRepositoryStatisticsState, | ||
state => state.repositoryStatisticsLoading | ||
); | ||
|
||
const getRepositoryStatisticsLoadError = createSelector( | ||
getSingleRepositoryStatisticsState, | ||
state => state.repositoryStatisticsLoadError | ||
); | ||
|
||
export const singleRepositoryStatisticsQuery = { | ||
getRepositoryStatistics, | ||
getRepositoryStatisticsLoading, | ||
getRepositoryStatisticsLoadError | ||
}; |
26 changes: 26 additions & 0 deletions
26
...-statistics/src/lib/pmp-web-repository-data-access-single-repository-statistics.module.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
import { NgModule } from '@angular/core'; | ||
import { CommonModule } from '@angular/common'; | ||
import { StoreModule } from '@ngrx/store'; | ||
import { EffectsModule } from '@ngrx/effects'; | ||
import { | ||
SINGLEREPOSITORYSTATISTICS_FEATURE_KEY, | ||
initialState as singleRepositoryStatisticsInitialState, | ||
singleRepositoryStatisticsReducer | ||
} from './+state/single-repository-statistics.reducer'; | ||
import { SingleRepositoryStatisticsEffects } from './+state/single-repository-statistics.effects'; | ||
import { SingleRepositoryStatisticsFacade } from './+state/single-repository-statistics.facade'; | ||
import { SingleRepositoryStatisticsDataService } from './services/single-repository-statistics-data.service'; | ||
|
||
@NgModule({ | ||
imports: [ | ||
CommonModule, | ||
StoreModule.forFeature( | ||
SINGLEREPOSITORYSTATISTICS_FEATURE_KEY, | ||
singleRepositoryStatisticsReducer, | ||
{ initialState: singleRepositoryStatisticsInitialState } | ||
), | ||
EffectsModule.forFeature([SingleRepositoryStatisticsEffects]) | ||
], | ||
providers: [SingleRepositoryStatisticsFacade, SingleRepositoryStatisticsDataService] | ||
}) | ||
export class PmpWebRepositoryDataAccessSingleRepositoryStatisticsModule {} |
3 changes: 3 additions & 0 deletions
3
...tatistics/src/lib/resources/request-payloads/get-repository-statistics.request-payload.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
export interface GetRepositoryStatisticsRequestPayload { | ||
id: string | number; | ||
} |
20 changes: 20 additions & 0 deletions
20
...ingle-repository-statistics/src/lib/services/single-repository-statistics-data.service.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
import { Injectable } from '@angular/core'; | ||
import { Observable } from 'rxjs'; | ||
import { HttpClient } from '@angular/common/http'; | ||
import { GetRepositoryStatisticsRequestPayload } from '../resources/request-payloads/get-repository-statistics.request-payload'; | ||
import { RepositoryModel } from '@pimp-my-pr/shared/domain'; | ||
|
||
@Injectable() | ||
export class SingleRepositoryStatisticsDataService { | ||
readonly endpoints = { | ||
// TODO missing API url to get details about repository | ||
getRepositoryStatistics: '' | ||
}; | ||
constructor(private http: HttpClient) {} | ||
|
||
getRepositoryStatistics( | ||
payload: GetRepositoryStatisticsRequestPayload | ||
): Observable<RepositoryModel> { | ||
return this.http.get<any>(this.endpoints.getRepositoryStatistics); | ||
} | ||
} |
1 change: 1 addition & 0 deletions
1
libs/pmp-web/repository/data-access-single-repository-statistics/src/test-setup.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
import 'jest-preset-angular'; |
7 changes: 7 additions & 0 deletions
7
libs/pmp-web/repository/data-access-single-repository-statistics/tsconfig.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
{ | ||
"extends": "../../../../tsconfig.json", | ||
"compilerOptions": { | ||
"types": ["node", "jest"] | ||
}, | ||
"include": ["**/*.ts"] | ||
} |
20 changes: 20 additions & 0 deletions
20
libs/pmp-web/repository/data-access-single-repository-statistics/tsconfig.lib.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
{ | ||
"extends": "./tsconfig.json", | ||
"compilerOptions": { | ||
"outDir": "../../../../dist/out-tsc", | ||
"target": "es2015", | ||
"declaration": true, | ||
"inlineSources": true, | ||
"types": [], | ||
"lib": ["dom", "es2018"] | ||
}, | ||
"angularCompilerOptions": { | ||
"annotateForClosureCompiler": true, | ||
"skipTemplateCodegen": true, | ||
"strictMetadataEmit": true, | ||
"fullTemplateTypeCheck": true, | ||
"strictInjectionParameters": true, | ||
"enableResourceInlining": true | ||
}, | ||
"exclude": ["src/test-setup.ts", "**/*.spec.ts"] | ||
} |
10 changes: 10 additions & 0 deletions
10
libs/pmp-web/repository/data-access-single-repository-statistics/tsconfig.spec.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
{ | ||
"extends": "./tsconfig.json", | ||
"compilerOptions": { | ||
"outDir": "../../../../dist/out-tsc", | ||
"module": "commonjs", | ||
"types": ["jest", "node"] | ||
}, | ||
"files": ["src/test-setup.ts"], | ||
"include": ["**/*.spec.ts", "**/*.d.ts"] | ||
} |
7 changes: 7 additions & 0 deletions
7
libs/pmp-web/repository/data-access-single-repository-statistics/tslint.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
{ | ||
"extends": "../../../../tslint.json", | ||
"rules": { | ||
"directive-selector": [true, "attribute", "pimpMyPr", "camelCase"], | ||
"component-selector": [true, "element", "pimp-my-pr", "kebab-case"] | ||
} | ||
} |
12 changes: 11 additions & 1 deletion
12
...-repository-statistics/src/lib/pmp-web-repository-repository-statistics-feature.module.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,19 @@ | ||
import { NgModule } from '@angular/core'; | ||
import { CommonModule } from '@angular/common'; | ||
import { RepositoryStatisticsComponent } from './repository-statistics/repository-statistics.component'; | ||
import { PmpWebSharedUiTableStatisticModule } from '@pimp-my-pr/pmp-web/shared/ui-table-statistic'; | ||
import { PmpWebSharedUiHeaderContainerModule } from '@pimp-my-pr/pmp-web/shared/ui-header-container'; | ||
import { PmpWebRepositoryRepositoryStatisticsRoutingModule } from './pmp-web-repository-repository-statistics-routing.module'; | ||
import { PmpWebRepositoryDataAccessSingleRepositoryStatisticsModule } from '@pimp-my-pr/pmp-web/repository/data-access-single-repository-statistics'; | ||
|
||
@NgModule({ | ||
imports: [CommonModule], | ||
imports: [ | ||
CommonModule, | ||
PmpWebSharedUiHeaderContainerModule, | ||
PmpWebSharedUiTableStatisticModule, | ||
PmpWebRepositoryRepositoryStatisticsRoutingModule, | ||
PmpWebRepositoryDataAccessSingleRepositoryStatisticsModule | ||
], | ||
declarations: [RepositoryStatisticsComponent] | ||
}) | ||
export class PmpWebRepositoryRepositoryStatisticsFeatureModule {} |
Oops, something went wrong.