From 4b4e5a64b283d999f24b822b6fa7c6008e97e227 Mon Sep 17 00:00:00 2001 From: Erik Tiekstra Date: Mon, 1 Nov 2021 14:08:07 +0100 Subject: [PATCH] feat(exports): Added page for exports. (TV-862) Squashed commit of the following: commit ee293ecbc763a2e85c383ee628539fb1dbcab515 Author: Erik Tiekstra Date: Mon Nov 1 13:28:22 2021 +0100 Moved exports below administration commit 7dd8756cd031501c302981e51c8aa519092b121c Merge: ef229931 bdc526ce Author: Erik Tiekstra Date: Mon Nov 1 13:20:56 2021 +0100 Merge branch 'develop' into feature/TV-862-export-page commit ef229931d978646a864e1d952044e6d31f2adf82 Author: Erik Tiekstra Date: Fri Oct 29 11:59:06 2021 +0200 Added exporter page including routing and feature-toggling --- .../src/app/app-routing.module.ts | 8 +++++ .../pages/exports/exports-routing.module.ts | 18 +++++++++++ .../app/pages/exports/exports.component.html | 10 +++++++ .../app/pages/exports/exports.component.scss | 10 +++++++ .../pages/exports/exports.component.spec.ts | 30 +++++++++++++++++++ .../app/pages/exports/exports.component.ts | 9 ++++++ .../src/app/pages/exports/exports.module.ts | 12 ++++++++ .../deltagare-export.component.html | 10 +++++++ .../deltagare-export.component.scss | 10 +++++++ .../deltagare-export.component.spec.ts | 30 +++++++++++++++++++ .../deltagare-export.component.ts | 9 ++++++ .../deltagare-export.module.ts | 12 ++++++++ .../components/icon/icon.component.html | 1 + .../components/sidebar/sidebar.component.html | 7 +++++ .../components/sidebar/sidebar.component.ts | 6 ++++ .../src/app/shared/enums/feature.enum.ts | 1 + .../src/app/shared/enums/icon-type.enum.ts | 1 + .../src/environments/active-features.ts | 1 + 18 files changed, 185 insertions(+) create mode 100644 apps/mina-sidor-fa/src/app/pages/exports/exports-routing.module.ts create mode 100644 apps/mina-sidor-fa/src/app/pages/exports/exports.component.html create mode 100644 apps/mina-sidor-fa/src/app/pages/exports/exports.component.scss create mode 100644 apps/mina-sidor-fa/src/app/pages/exports/exports.component.spec.ts create mode 100644 apps/mina-sidor-fa/src/app/pages/exports/exports.component.ts create mode 100644 apps/mina-sidor-fa/src/app/pages/exports/exports.module.ts create mode 100644 apps/mina-sidor-fa/src/app/pages/exports/pages/deltagare-export/deltagare-export.component.html create mode 100644 apps/mina-sidor-fa/src/app/pages/exports/pages/deltagare-export/deltagare-export.component.scss create mode 100644 apps/mina-sidor-fa/src/app/pages/exports/pages/deltagare-export/deltagare-export.component.spec.ts create mode 100644 apps/mina-sidor-fa/src/app/pages/exports/pages/deltagare-export/deltagare-export.component.ts create mode 100644 apps/mina-sidor-fa/src/app/pages/exports/pages/deltagare-export/deltagare-export.module.ts diff --git a/apps/mina-sidor-fa/src/app/app-routing.module.ts b/apps/mina-sidor-fa/src/app/app-routing.module.ts index 5795781..f6fe619 100644 --- a/apps/mina-sidor-fa/src/app/app-routing.module.ts +++ b/apps/mina-sidor-fa/src/app/app-routing.module.ts @@ -63,6 +63,14 @@ activeFeatures.forEach(feature => { canActivate: [AuthGuard, OrganizationGuard, RoleGuard], }); break; + case Feature.EXPORTS: + routes.push({ + path: 'exporter', + data: { title: 'Exporter', expectedRoles: [RoleEnum.MSFA_ReceiveDeltagare] }, + loadChildren: () => import('./pages/exports/exports.module').then(m => m.ExportsModule), + canActivate: [AuthGuard, OrganizationGuard, RoleGuard], + }); + break; case Feature.MY_ACCOUNT: routes.push({ path: 'mitt-konto', diff --git a/apps/mina-sidor-fa/src/app/pages/exports/exports-routing.module.ts b/apps/mina-sidor-fa/src/app/pages/exports/exports-routing.module.ts new file mode 100644 index 0000000..aab8b07 --- /dev/null +++ b/apps/mina-sidor-fa/src/app/pages/exports/exports-routing.module.ts @@ -0,0 +1,18 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; +import { ExportsComponent } from './exports.component'; + +const routes: Routes = [ + { path: '', data: { title: 'Exporter' }, component: ExportsComponent }, + { + path: 'deltagare', + data: { title: 'Skapa export för deltagare' }, + loadChildren: () => import('./pages/deltagare-export/deltagare-export.module').then(m => m.DeltagareExportModule), + }, +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class ExportsRoutingModule {} diff --git a/apps/mina-sidor-fa/src/app/pages/exports/exports.component.html b/apps/mina-sidor-fa/src/app/pages/exports/exports.component.html new file mode 100644 index 0000000..662eeb0 --- /dev/null +++ b/apps/mina-sidor-fa/src/app/pages/exports/exports.component.html @@ -0,0 +1,10 @@ + +
+ +
+

Exporter

+
+
+
+
+
diff --git a/apps/mina-sidor-fa/src/app/pages/exports/exports.component.scss b/apps/mina-sidor-fa/src/app/pages/exports/exports.component.scss new file mode 100644 index 0000000..1fb6463 --- /dev/null +++ b/apps/mina-sidor-fa/src/app/pages/exports/exports.component.scss @@ -0,0 +1,10 @@ +@import 'variables/gutters'; + +.exports { + &__contents { + display: flex; + flex-direction: column; + gap: $digi--layout--gutter--l; + margin-top: $digi--layout--gutter--l; + } +} diff --git a/apps/mina-sidor-fa/src/app/pages/exports/exports.component.spec.ts b/apps/mina-sidor-fa/src/app/pages/exports/exports.component.spec.ts new file mode 100644 index 0000000..15959b1 --- /dev/null +++ b/apps/mina-sidor-fa/src/app/pages/exports/exports.component.spec.ts @@ -0,0 +1,30 @@ +import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; +import { ExportsComponent } from './exports.component'; + +describe('ExportsComponent', () => { + let component: ExportsComponent; + let fixture: ComponentFixture; + + beforeEach( + waitForAsync(() => { + void TestBed.configureTestingModule({ + schemas: [CUSTOM_ELEMENTS_SCHEMA], + declarations: [ExportsComponent], + imports: [HttpClientTestingModule, RouterTestingModule], + }).compileComponents(); + }) + ); + + beforeEach(() => { + fixture = TestBed.createComponent(ExportsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/apps/mina-sidor-fa/src/app/pages/exports/exports.component.ts b/apps/mina-sidor-fa/src/app/pages/exports/exports.component.ts new file mode 100644 index 0000000..a1f947b --- /dev/null +++ b/apps/mina-sidor-fa/src/app/pages/exports/exports.component.ts @@ -0,0 +1,9 @@ +import { ChangeDetectionStrategy, Component } from '@angular/core'; + +@Component({ + selector: 'msfa-exports', + templateUrl: './exports.component.html', + styleUrls: ['./exports.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class ExportsComponent {} diff --git a/apps/mina-sidor-fa/src/app/pages/exports/exports.module.ts b/apps/mina-sidor-fa/src/app/pages/exports/exports.module.ts new file mode 100644 index 0000000..4e4b72c --- /dev/null +++ b/apps/mina-sidor-fa/src/app/pages/exports/exports.module.ts @@ -0,0 +1,12 @@ +import { CommonModule } from '@angular/common'; +import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; +import { RouterModule } from '@angular/router'; +import { LayoutModule } from '@msfa-shared/components/layout/layout.module'; +import { ExportsComponent } from './exports.component'; + +@NgModule({ + schemas: [CUSTOM_ELEMENTS_SCHEMA], + declarations: [ExportsComponent], + imports: [CommonModule, RouterModule.forChild([{ path: '', component: ExportsComponent }]), LayoutModule], +}) +export class ExportsModule {} diff --git a/apps/mina-sidor-fa/src/app/pages/exports/pages/deltagare-export/deltagare-export.component.html b/apps/mina-sidor-fa/src/app/pages/exports/pages/deltagare-export/deltagare-export.component.html new file mode 100644 index 0000000..76f2f4b --- /dev/null +++ b/apps/mina-sidor-fa/src/app/pages/exports/pages/deltagare-export/deltagare-export.component.html @@ -0,0 +1,10 @@ + +
+ +
+

Deltagare export

+
+
+
+
+
diff --git a/apps/mina-sidor-fa/src/app/pages/exports/pages/deltagare-export/deltagare-export.component.scss b/apps/mina-sidor-fa/src/app/pages/exports/pages/deltagare-export/deltagare-export.component.scss new file mode 100644 index 0000000..7944f62 --- /dev/null +++ b/apps/mina-sidor-fa/src/app/pages/exports/pages/deltagare-export/deltagare-export.component.scss @@ -0,0 +1,10 @@ +@import 'variables/gutters'; + +.deltagare-export { + &__contents { + display: flex; + flex-direction: column; + gap: $digi--layout--gutter--l; + margin-top: $digi--layout--gutter--l; + } +} diff --git a/apps/mina-sidor-fa/src/app/pages/exports/pages/deltagare-export/deltagare-export.component.spec.ts b/apps/mina-sidor-fa/src/app/pages/exports/pages/deltagare-export/deltagare-export.component.spec.ts new file mode 100644 index 0000000..a57fc4b --- /dev/null +++ b/apps/mina-sidor-fa/src/app/pages/exports/pages/deltagare-export/deltagare-export.component.spec.ts @@ -0,0 +1,30 @@ +import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; +import { DeltagareExportComponent } from './deltagare-export.component'; + +describe('DeltagareExportComponent', () => { + let component: DeltagareExportComponent; + let fixture: ComponentFixture; + + beforeEach( + waitForAsync(() => { + void TestBed.configureTestingModule({ + schemas: [CUSTOM_ELEMENTS_SCHEMA], + declarations: [DeltagareExportComponent], + imports: [HttpClientTestingModule, RouterTestingModule], + }).compileComponents(); + }) + ); + + beforeEach(() => { + fixture = TestBed.createComponent(DeltagareExportComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/apps/mina-sidor-fa/src/app/pages/exports/pages/deltagare-export/deltagare-export.component.ts b/apps/mina-sidor-fa/src/app/pages/exports/pages/deltagare-export/deltagare-export.component.ts new file mode 100644 index 0000000..6d21e27 --- /dev/null +++ b/apps/mina-sidor-fa/src/app/pages/exports/pages/deltagare-export/deltagare-export.component.ts @@ -0,0 +1,9 @@ +import { ChangeDetectionStrategy, Component } from '@angular/core'; + +@Component({ + selector: 'msfa-deltagare-export', + templateUrl: './deltagare-export.component.html', + styleUrls: ['./deltagare-export.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class DeltagareExportComponent {} diff --git a/apps/mina-sidor-fa/src/app/pages/exports/pages/deltagare-export/deltagare-export.module.ts b/apps/mina-sidor-fa/src/app/pages/exports/pages/deltagare-export/deltagare-export.module.ts new file mode 100644 index 0000000..2a6fd13 --- /dev/null +++ b/apps/mina-sidor-fa/src/app/pages/exports/pages/deltagare-export/deltagare-export.module.ts @@ -0,0 +1,12 @@ +import { CommonModule } from '@angular/common'; +import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; +import { RouterModule } from '@angular/router'; +import { LayoutModule } from '@msfa-shared/components/layout/layout.module'; +import { DeltagareExportComponent } from './deltagare-export.component'; + +@NgModule({ + schemas: [CUSTOM_ELEMENTS_SCHEMA], + declarations: [DeltagareExportComponent], + imports: [CommonModule, RouterModule.forChild([{ path: '', component: DeltagareExportComponent }]), LayoutModule], +}) +export class DeltagareExportModule {} diff --git a/apps/mina-sidor-fa/src/app/shared/components/icon/icon.component.html b/apps/mina-sidor-fa/src/app/shared/components/icon/icon.component.html index a4117ae..db4a2b4 100644 --- a/apps/mina-sidor-fa/src/app/shared/components/icon/icon.component.html +++ b/apps/mina-sidor-fa/src/app/shared/components/icon/icon.component.html @@ -79,5 +79,6 @@ + diff --git a/apps/mina-sidor-fa/src/app/shared/components/layout/components/sidebar/sidebar.component.html b/apps/mina-sidor-fa/src/app/shared/components/layout/components/sidebar/sidebar.component.html index 0eb3ea0..2cbd6b6 100644 --- a/apps/mina-sidor-fa/src/app/shared/components/layout/components/sidebar/sidebar.component.html +++ b/apps/mina-sidor-fa/src/app/shared/components/layout/components/sidebar/sidebar.component.html @@ -31,5 +31,12 @@ Administration + + diff --git a/apps/mina-sidor-fa/src/app/shared/components/layout/components/sidebar/sidebar.component.ts b/apps/mina-sidor-fa/src/app/shared/components/layout/components/sidebar/sidebar.component.ts index 73ba2f5..1ad3566 100644 --- a/apps/mina-sidor-fa/src/app/shared/components/layout/components/sidebar/sidebar.component.ts +++ b/apps/mina-sidor-fa/src/app/shared/components/layout/components/sidebar/sidebar.component.ts @@ -36,4 +36,10 @@ export class SidebarComponent { ) ); } + get exportsVisible(): boolean { + return ( + this.activeFeatures.includes(Feature.EXPORTS) && + this.userRoles?.some(role => role.type === RoleEnum.MSFA_ReceiveDeltagare) + ); + } } diff --git a/apps/mina-sidor-fa/src/app/shared/enums/feature.enum.ts b/apps/mina-sidor-fa/src/app/shared/enums/feature.enum.ts index 95a9312..4d74555 100644 --- a/apps/mina-sidor-fa/src/app/shared/enums/feature.enum.ts +++ b/apps/mina-sidor-fa/src/app/shared/enums/feature.enum.ts @@ -15,4 +15,5 @@ export enum Feature { REPORTING_SIGNAL, REPORTING_PERIODISK_REDOVISNING, REPORTING_INFORMATIV_RAPPORT, + EXPORTS, } diff --git a/apps/mina-sidor-fa/src/app/shared/enums/icon-type.enum.ts b/apps/mina-sidor-fa/src/app/shared/enums/icon-type.enum.ts index 0944cc5..5707b41 100644 --- a/apps/mina-sidor-fa/src/app/shared/enums/icon-type.enum.ts +++ b/apps/mina-sidor-fa/src/app/shared/enums/icon-type.enum.ts @@ -20,4 +20,5 @@ export enum IconType { ARROW_RIGHT = 'arrow-right', EYE = 'eye', EYESLASH = 'eyeslash', + ARCHIVE = 'archive', } diff --git a/apps/mina-sidor-fa/src/environments/active-features.ts b/apps/mina-sidor-fa/src/environments/active-features.ts index 2203026..67f1387 100644 --- a/apps/mina-sidor-fa/src/environments/active-features.ts +++ b/apps/mina-sidor-fa/src/environments/active-features.ts @@ -26,4 +26,5 @@ export const ACTIVE_FEATURES_TEST: Feature[] = [ Feature.VERSION_INFO, Feature.REPORTING_PERIODISK_REDOVISNING, Feature.REPORTING_INFORMATIV_RAPPORT, + Feature.EXPORTS, ];