Skip to content

Commit

Permalink
Merge pull request #63 from nhsengland/develop
Browse files Browse the repository at this point in the history
Merging into master for release
  • Loading branch information
assimoes-bjss authored Oct 29, 2021
2 parents a7447c5 + 464f01c commit e46e405
Show file tree
Hide file tree
Showing 24 changed files with 1,965 additions and 2,902 deletions.
3,732 changes: 970 additions & 2,762 deletions package-lock.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@
"@angular/router": "~11.1.2",
"@nguniversal/express-engine": "^11.1.1",
"@ngx-translate/core": "^13.0.0",
"@types/multer": "^1.4.5",
"applicationinsights": "~2.0.0",
"axios": "^0.21.1",
"cookie-parser": "^1.4.5",
Expand Down Expand Up @@ -64,6 +63,7 @@
"@types/jest": "^26.0.20",
"@types/jsonapi-serializer": "^3.6.3",
"@types/lodash": "^4.14.168",
"@types/multer": "^1.4.5",
"@types/node": "^12.20.4",
"@types/passport-azure-ad": "^4.0.8",
"codelyzer": "^6.0.0",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,19 @@
<section class="bg-color-white">
<div class="nhsuk-width-container app-width-container nhsuk-u-padding-top-5">

<h1 class="nhsuk-heading-l"> {{ pageTitle }} </h1>
<!-- <p>
If you are looking for specific innovations, use the <a routerLink="advanced-filter">advanced search Actions
list</a>.
</p> -->

<p>
If you are looking for specific actions, use the <a routerLink="advanced-filter">advanced search Actions</a>.
</p>

<div class="app-tabs">
<ul class="app-tabs__list" role="tablist" aria-label="Tabs">
<li *ngFor="let item of tabs" class="app-tabs__item" [routerLinkActive]="'selected'">
<a id="tab-{{ item.key }}" [routerLink]="item.link" [queryParams]="item.queryParams" role="tab"
attr.aria-controls="content-{{ item.key }}"
attr.aria-selected="{{ currentTab.key === item.key ? 'true' : 'false' }}"> {{ item.title }} </a>
attr.aria-selected="{{ currentTab.key === item.key ? 'true' : 'false' }}">
{{ item.title }} </a>
</li>
</ul>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@

<h1 class="nhsuk-heading-xl nhsuk-u-margin-bottom-5"> {{ pageTitle }} </h1>

<a *ngIf="innovation.support?.status === 'ENGAGING'" routerLink="/accessor/innovations/{{ innovationId }}/action-tracker/new" class="nhsuk-button nhsuk-u-margin-bottom-7"> Create new action </a>

<theme-spinner *ngIf="pageStatus === 'LOADING'" cssClass="nhsuk-u-margin-9"></theme-spinner>

<ng-container *ngIf="pageStatus === 'READY' && openedActionsList.getTotalRowsNumber() === 0">
Expand All @@ -22,8 +24,6 @@ <h1 class="nhsuk-heading-xl nhsuk-u-margin-bottom-5"> {{ pageTitle }} </h1>

<ng-container *ngIf="pageStatus === 'READY' && openedActionsList.getTotalRowsNumber() > 0">

<a *ngIf="innovation.support?.status === 'ENGAGING'" routerLink="/accessor/innovations/{{ innovationId }}/action-tracker/new" class="nhsuk-button nhsuk-u-margin-bottom-7"> Create new action </a>

<table class="nhsuk-table-responsive app-sortable-table">
<caption class="nhsuk-table__caption"> Open actions list </caption>
<thead class="nhsuk-table__head">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ import { PageAccountManageDetailsInfoComponent } from '@shared-module/pages/acco
import { PageAccountManageDetailsEditComponent } from '@shared-module/pages/account/manage-details/manage-details-edit.component';
import { PageInnovationRecordComponent } from '@modules/shared/pages/innovation/innovation-record.component';

import { InnovationSupportOrganisationsSupportStatusInfoComponent } from './pages/innovation/support/organisations-support-status-info.component';
import { PageInnovationSupportStatusListComponent } from '@shared-module/pages/innovation/innovation-support-status-list.component';
// Resolvers.
import { InnovationDataResolver } from './resolvers/innovation-data.resolver';
import { InnovationSectionViewComponent } from '@modules/shared/pages/innovation/section-view.component';
Expand Down Expand Up @@ -106,6 +108,14 @@ const routes: Routes = [
path: 'record/sections/:sectionId/evidence/:evidenceId', pathMatch: 'full', component: InnovationSectionEvidenceViewComponent,
data: { layoutOptions: { type: 'emptyLeftAside', backLink: { url: 'innovations/:innovationId/record/sections/:sectionId', label: 'Innovation section' } } }
},
{
path: 'support', pathMatch: 'full', component: InnovationSupportOrganisationsSupportStatusInfoComponent,
data: { layoutOptions: { type: 'innovationLeftAsideMenu', backLink: { url: '/assessment/innovations/:innovationId/support', label: 'Go back' } } }
},
{
path: 'support/statuses', pathMatch: 'full', component: PageInnovationSupportStatusListComponent,
data: { layoutOptions: { type: 'emptyLeftAside', backLink: { url: '/assessment/innovations/:innovationId/support', label: 'Go back' } } }
},
// {
// path: 'action-tracker', pathMatch: 'full', component: InnovationActionTrackerComponent,
// data: { layoutOptions: { type: 'innovationLeftAsideMenu', showInnovationHeader: false } }
Expand Down
5 changes: 3 additions & 2 deletions src/modules/feature-modules/assessment/assessment.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import { InnovationOverviewComponent } from './pages/innovation/overview/overvie
import { InnovationAssessmentOverviewComponent } from './pages/innovation/assessment/assessment-overview.component';
import { InnovationAssessmentNewComponent } from './pages/innovation/assessment/assessment-new.component';
import { InnovationAssessmentEditComponent } from './pages/innovation/assessment/assessment-edit.component';

import { InnovationSupportOrganisationsSupportStatusInfoComponent } from './pages/innovation/support/organisations-support-status-info.component';
// Services.
import { AssessmentService } from './services/assessment.service';

Expand All @@ -38,7 +38,8 @@ import { InnovationDataResolver } from './resolvers/innovation-data.resolver';
InnovationOverviewComponent,
InnovationAssessmentOverviewComponent,
InnovationAssessmentNewComponent,
InnovationAssessmentEditComponent
InnovationAssessmentEditComponent,
InnovationSupportOrganisationsSupportStatusInfoComponent
],
providers: [
// Services.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -129,12 +129,13 @@ describe('FeatureModules/Assessment/AssessmentLayoutComponent', () => {

it('should have leftSideBar with "innovationLeftAsideMenu" menu values', () => {

activatedRoute.snapshot.params = { innovationId: 'innovation01' };
activatedRoute.snapshot.data = { layoutOptions: { type: 'innovationLeftAsideMenu' } };
activatedRoute.snapshot.params = { innovationId: 'innovation01', status: '' };
activatedRoute.snapshot.data = { layoutOptions: { type: 'innovationLeftAsideMenu' }, innovationData: { status: 'IN_PROGRESS' } };

const expected = [
{ title: 'Overview', link: `/assessment/innovations/innovation01/overview` },
{ title: 'Innovation record', link: `/assessment/innovations/innovation01/record` },
{ title: 'Support status', link: `/assessment/innovations/innovation01/support` },
// { title: 'Action tracker', link: `/assessment/innovations/innovation01/action-tracker` },
// { title: 'Comments', link: `/assessment/innovations/innovation01/comments` }
];
Expand All @@ -144,9 +145,27 @@ describe('FeatureModules/Assessment/AssessmentLayoutComponent', () => {

(component as any).onRouteChange(new NavigationEnd(0, '/', '/'));
expect(component.leftSideBar).toEqual(expected);

});

it('should have leftSideBar with "innovationLeftAsideMenu" menu values', () => {

activatedRoute.snapshot.params = { innovationId: 'innovation01', status: '' };
activatedRoute.snapshot.data = { layoutOptions: { type: 'innovationLeftAsideMenu' }, innovationData: { status: '' } };

const expected = [
{ title: 'Overview', link: `/assessment/innovations/innovation01/overview` },
{ title: 'Innovation record', link: `/assessment/innovations/innovation01/record` },
// { title: 'Support status', link: `/assessment/innovations/innovation01/support` },
// { title: 'Action tracker', link: `/assessment/innovations/innovation01/action-tracker` },
// { title: 'Comments', link: `/assessment/innovations/innovation01/comments` }
];

fixture = TestBed.createComponent(AssessmentLayoutComponent);
component = fixture.componentInstance;

(component as any).onRouteChange(new NavigationEnd(0, '/', '/'));
expect(component.leftSideBar).toEqual(expected);
});
it('should have leftSideBar with "emptyLeftAside" menu values', () => {

activatedRoute.snapshot.data = { layoutOptions: { type: 'emptyLeftAside' } };
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { CoreComponent } from '@app/base';

import { RoutingHelper } from '@modules/core';
import { NotificationContextType, NotificationService } from '@modules/shared/services/notification.service';

import { InnovationDataResolverType } from '@stores-module/innovation/innovation.models';

type RouteDataLayoutOptionsType = {
type: null | 'userAccountMenu' | 'innovationLeftAsideMenu' | 'emptyLeftAside';
Expand Down Expand Up @@ -53,12 +53,24 @@ export class AssessmentLayoutComponent extends CoreComponent {

}


private onRouteChange(event: NavigationEnd): void {

const routeData: RouteDataLayoutOptionsType = RoutingHelper.getRouteData(this.activatedRoute).layoutOptions || {};
const currentRouteInnovationId: string | null = RoutingHelper.getRouteParams(this.activatedRoute).innovationId || null;

let innovation: InnovationDataResolverType = {
id: '',
name: '',
status: '',
assessment: {
id: '',
}
};

if (currentRouteInnovationId) {
innovation = RoutingHelper.getRouteData(this.activatedRoute).innovationData;
}

if (this.stores.authentication.isValidUser()) {

this.notificationService.getAllUnreadNotificationsGroupedByContext().subscribe(
Expand Down Expand Up @@ -89,6 +101,9 @@ export class AssessmentLayoutComponent extends CoreComponent {
// { title: 'Action tracker', link: `/assessment/innovations/${currentRouteInnovationId}/action-tracker` },
// { title: 'Comments', link: `/assessment/innovations/${currentRouteInnovationId}/comments` }
];
if (innovation.status === 'IN_PROGRESS') {
this.leftSideBar.push({ title: 'Support status', link: `/assessment/innovations/${currentRouteInnovationId}/support` });
}
break;

case 'emptyLeftAside':
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,13 @@
</theme-alert>
</ng-container>

<ng-container *ngIf="pageStatus === 'READY'">
</div>
</div>

<ng-container *ngIf="pageStatus === 'READY'">

<div class="nhsuk-grid-row">
<div class="nhsuk-grid-column-full">
<div class="app-pane">

<div class="app-pane__side-bar nhsuk-u-padding-top-3">
Expand All @@ -27,13 +32,16 @@
<div class="nhsuk-u-padding-top-8">

<ng-container *ngIf="assessment?.hasBeenSubmitted && shouldShowUpdatedAt">
<p class="nhsuk-body-s font-color-secondary nhsuk-u-margin-bottom-0">Updated: {{ assessment?.updatedAt | date: ('app.date_formats.long_date' | translate) }}</p>
<p class="nhsuk-body-s font-color-secondary nhsuk-u-margin-bottom-0">Updated: {{ assessment?.updatedAt |
date: ('app.date_formats.long_date' | translate) }}</p>
<p class="nhsuk-body-s nhsuk-u-font-weight-bold nhsuk-u-margin-bottom-0">{{ assessment?.updatedBy }}</p>
<p class="nhsuk-body-s nhsuk-u-margin-bottom-5">Needs assessment team</p>
</ng-container>

<p class="nhsuk-body-s font-color-secondary nhsuk-u-margin-bottom-0">Created: {{ assessment?.finishedAt | date: ('app.date_formats.long_date' | translate) }}</p>
<p class="nhsuk-body-s nhsuk-u-font-weight-bold nhsuk-u-margin-bottom-0">{{ assessment?.assignToName }}</p>
<p class="nhsuk-body-s font-color-secondary nhsuk-u-margin-bottom-0">Created: {{ assessment?.finishedAt |
date: ('app.date_formats.long_date' | translate) }}</p>
<p class="nhsuk-body-s nhsuk-u-font-weight-bold nhsuk-u-margin-bottom-0">{{ assessment?.assignToName }}
</p>
<p class="nhsuk-body-s nhsuk-u-margin-bottom-5">Needs assessment team</p>

</div>
Expand All @@ -54,13 +62,17 @@ <h2 class="nhsuk-heading-l nhsuk-u-margin-bottom-3">The innovation</h2>

<!-- Maturity level item -->
<div class="nhsuk-summary-list__row">
<dt class="nhsuk-summary-list__key nhsuk-u-font-weight-normal">{{ innovationMaturityLevel.label }}</dt>
<dt class="nhsuk-summary-list__key nhsuk-u-font-weight-normal">{{ innovationMaturityLevel.label }}
</dt>
<dd class="nhsuk-summary-list__key width-auto">{{ innovationMaturityLevel.value }}</dd>
<dd class="nhsuk-summary-list__value text-pre-wrap">
<ul class="progressbar nhsuk-u-padding-top-2 nhsuk-u-padding-bottom-1">
<li class="progressbar-item{{ innovationMaturityLevel.levelIndex >= 1 ? ' active' : ''}}" style="width: 10%"></li>
<li class="progressbar-item{{ innovationMaturityLevel.levelIndex >= 2 ? ' active' : ''}}" style="width: 10%"></li>
<li class="progressbar-item{{ innovationMaturityLevel.levelIndex === 3 ? ' active' : ''}}" style="width: 10%"></li>
<li class="progressbar-item{{ innovationMaturityLevel.levelIndex >= 1 ? ' active' : ''}}"
style="width: 10%"></li>
<li class="progressbar-item{{ innovationMaturityLevel.levelIndex >= 2 ? ' active' : ''}}"
style="width: 10%"></li>
<li class="progressbar-item{{ innovationMaturityLevel.levelIndex === 3 ? ' active' : ''}}"
style="width: 10%"></li>
</ul>
{{ innovationMaturityLevel.description }}
</dd>
Expand Down Expand Up @@ -89,18 +101,70 @@ <h2 class="nhsuk-heading-l nhsuk-u-margin-bottom-3">Support need summary</h2>
<h2 class="nhsuk-heading-l nhsuk-u-margin-bottom-3">Suggested organisations</h2>
<p *ngFor="let item of assessment?.organisationsNames" class="nhsuk-u-margin-bottom-1">{{ item }}</p>

<a routerLink="/assessment/innovations/{{ innovationId }}" class="nhsuk-button nhsuk-u-margin-top-5 nhsuk-u-margin-right-3"> Continue to innovation </a>
<a routerLink="/assessment/innovations/{{ innovationId }}/assessments/{{ assessmentId }}/edit" class="nhsuk-button nhsuk-u-margin-top-5 nhsuk-button--secondary"> Edit assessment </a>
<a routerLink="/assessment/innovations/{{ innovationId }}"
class="nhsuk-button nhsuk-u-margin-top-5 nhsuk-u-margin-right-3"> Continue to innovation </a>
<a routerLink="/assessment/innovations/{{ innovationId }}/assessments/{{ assessmentId }}/edit"
class="nhsuk-button nhsuk-u-margin-top-5 nhsuk-button--secondary"> Edit assessment </a>

</div>
</div>

</div>

</div>

</ng-container>
<div *ngIf="logHistory.length > 0" class="nhsuk-grid-row nhsuk-u-margin-top-5">
<div class="nhsuk-grid-column-full">

<div class="full-width-section bg-color-white">

<div class="nhsuk-grid-row nhsuk-u-padding-top-5">
<div class="nhsuk-grid-column-one-quarter"> &nbsp; </div>
<div class="nhsuk-grid-column-three-quarters">
<h2 class="nhsuk-heading-l">Support history</h2>
</div>
</div>
<hr class="nhsuk-section-break nhsuk-section-break--visible nhsuk-u-margin-bottom-3" />

<div *ngFor="let item of logHistory" class="nhsuk-grid-row">

<div class="nhsuk-grid-column-one-quarter">
<p class="nhsuk-heading-xs nhsuk-u-margin-bottom-0"> {{ item.createdAt | date:
('app.date_formats.long_date' | translate) }} </p>
<p class="nhsuk-hint nhsuk-u-font-weight-bold nhsuk-u-margin-bottom-0"> {{ item.createdBy }} </p>
<p class="nhsuk-hint"> {{ item.organisationUnit.name }} </p>
</div>

<div class="nhsuk-grid-column-three-quarters">
<p class="nhsuk-u-font-weight-bold nhsuk-u-margin-0"> {{ item.logTitle }} </p>
<ng-container [ngSwitch]="item.type">
<div *ngSwitchCase="supportLogType.ACCESSOR_SUGGESTION">
<p *ngFor="let organisationUnit of item.suggestedOrganisationUnitsNames"
class="nhsuk-u-margin-bottom-0"> {{ organisationUnit }} </p>
</div>
<div *ngSwitchCase="supportLogType.STATUS_UPDATE">
<strong class="nhsuk-tag"
[ngClass]="innovationSupportStatus[item.innovationSupportStatus].cssClass">{{
innovationSupportStatus[item.innovationSupportStatus].label }}</strong>
</div>
</ng-container>
<p class="nhsuk-u-font-weight-bold nhsuk-u-margin-0 nhsuk-u-padding-top-4">Comment</p>
<p> {{ item.description }} </p>
</div>

<div class="nhsuk-grid-column-full">
<hr class="nhsuk-section-break nhsuk-section-break--visible nhsuk-u-margin-bottom-3" />
</div>

</div>

</div>

</div>
</div>
</div>
</div>
</div>

</div>
</ng-container>

</div>
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import { AssessmentModule } from '@modules/feature-modules/assessment/assessment

import { InnovationAssessmentOverviewComponent } from './assessment-overview.component';

import { AssessmentService } from '@modules/feature-modules/assessment/services/assessment.service';
import { AssessmentService, SupportLogType } from '@modules/feature-modules/assessment/services/assessment.service';

import { NEEDS_ASSESSMENT_QUESTIONS } from '@modules/stores/innovation/config/needs-assessment-constants.config';

Expand Down Expand Up @@ -46,6 +46,21 @@ describe('FeatureModules/Assessment/Innovation/InnovationAssessmentOverviewCompo
activatedRoute.snapshot.params = { innovationId: 'Inno01' };
activatedRoute.snapshot.data = { innovationData: { id: 'Inno01', name: 'Innovation 01', support: { id: 'Inno01Support01', status: 'ENGAGING' }, assessment: {} } };

assessmentService.getSupportLog = () => of([{
id: 'support01',
type: SupportLogType.STATUS_UPDATE,
description: 'description',
createdBy: 'A user',
createdAt: '2020-01-01T00:00:00.000Z',
innovationSupportStatus: 'ENGAGING',
organisationUnit: {
id: 'unit01', name: 'Unit 01', acronym: 'UN',
organisation: { id: 'org01', name: 'Org 01', acronym: 'ORG' }
},
logTitle: 'Updated support status',
suggestedOrganisationUnitsNames: ['Unit 01']
}]);

});


Expand Down Expand Up @@ -107,7 +122,6 @@ describe('FeatureModules/Assessment/Innovation/InnovationAssessmentOverviewCompo
support: { id: null }
};
assessmentService.getInnovationNeedsAssessment = () => of(responseMock);

const expected = { ...responseMock.assessment, organisationsNames: ['Org name'] };

fixture = TestBed.createComponent(InnovationAssessmentOverviewComponent);
Expand Down Expand Up @@ -152,7 +166,6 @@ describe('FeatureModules/Assessment/Innovation/InnovationAssessmentOverviewCompo
support: { id: null }
};
assessmentService.getInnovationNeedsAssessment = () => of(responseMock);

const expected = { ...responseMock.assessment, organisationsNames: [] };

fixture = TestBed.createComponent(InnovationAssessmentOverviewComponent);
Expand Down
Loading

0 comments on commit e46e405

Please sign in to comment.