From d96283f6d9262489888c50fd3269b37c1c7877d2 Mon Sep 17 00:00:00 2001 From: Erik Tiekstra Date: Tue, 28 Sep 2021 09:58:17 +0200 Subject: [PATCH 1/8] Removed logged variable from deltagare --- .../src/app/pages/deltagare/deltagare.component.html | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/deltagare.component.html b/apps/mina-sidor-fa/src/app/pages/deltagare/deltagare.component.html index 5340bad..8eefc44 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/deltagare.component.html +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/deltagare.component.html @@ -17,7 +17,6 @@ (afOnChange)="setOnlyMyDeltagare($event.detail.target.checked)" > - {{showUnauthorizedError$ | async}} Date: Tue, 28 Sep 2021 10:20:43 +0200 Subject: [PATCH 2/8] Merge pull request #143 in TEA/mina-sidor-fa-web from bugfix/TV-687 to next Squashed commit of the following: commit 47f4297d2538150bc467a5709c7983b1161f409e Author: Erik Tiekstra Date: Tue Sep 28 10:10:29 2021 +0200 Typo commit 9d29e3086a7e01b8daeae61b9d68415448ef474c Author: Erik Tiekstra Date: Tue Sep 28 09:22:39 2021 +0200 Updated texts for the different steps inside avrop --- .../src/app/pages/avrop/avrop.component.html | 27 +++++++++++++------ .../src/app/shared/services/avrop.service.ts | 7 +++-- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/apps/mina-sidor-fa/src/app/pages/avrop/avrop.component.html b/apps/mina-sidor-fa/src/app/pages/avrop/avrop.component.html index 3d3ab99..2020e4e 100644 --- a/apps/mina-sidor-fa/src/app/pages/avrop/avrop.component.html +++ b/apps/mina-sidor-fa/src/app/pages/avrop/avrop.component.html @@ -5,11 +5,22 @@

Nya deltagare

-

- Här ser du alla nya deltagare. Deltagarna ska tilldelas en handledare innan tjänstens start. Kryssa för de - deltagare du vill tilldela en handledare. Du kan välja en, eller flera personer samtidigt, genom att - kryssa i boxarna nedan. -

+ +

+ Här ser du alla nya deltagare. Deltagarna ska tilldelas en handledare innan tjänstens start. Kryssa för + de deltagare du vill tilldela en handledare. Du kan välja en, eller flera personer samtidigt, genom att + kryssa i boxarna nedan. +

+

+ Välj vilken handledare du vill tilldela till deltagarna. Gå vidare genom att klicka på Nästa. I nästa + steg kommer du att kunna granska tilldelningen innan du bekräftar. Återgå till föregående steg genom att + klicka på tillbaka. +

+

+ Bekräfta valet av tilldelad handledare genom att klicka på bekräfta tilldelning. Återgå till föregående + steg genom att klicka på tillbaka. +

+
Välj deltagare att tilldela Tilldela handledare - Förehandsgranska och tilldela - Tilldelade delgare + Förhandsgranska och tilldela + Tilldelade deltagare @@ -100,7 +111,7 @@ Tillbaka - Tilldela + Nästa { - return AvropService.calculateStep(confirmedHandledare, avropIsLocked, avropIsSubmitted); + map(([confirmedHandledare, avropIsLocked, avropIsSubmitted]) => + AvropService.calculateStep(confirmedHandledare, avropIsLocked, avropIsSubmitted) + ), + tap(() => { + window.scrollTo(0, 0); }) ); From c8c67b2a11e7f054b5d7861da71ca9280f34af8e Mon Sep 17 00:00:00 2001 From: Erik Tiekstra Date: Tue, 28 Sep 2021 10:31:14 +0200 Subject: [PATCH 3/8] Fixed z-index issue --- .../components/employees-list/employees-list.component.scss | 2 ++ .../src/app/shared/components/layout/layout.component.scss | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/mina-sidor-fa/src/app/pages/administration/pages/employees/components/employees-list/employees-list.component.scss b/apps/mina-sidor-fa/src/app/pages/administration/pages/employees/components/employees-list/employees-list.component.scss index a0482f9..b00a0ff 100644 --- a/apps/mina-sidor-fa/src/app/pages/administration/pages/employees/components/employees-list/employees-list.component.scss +++ b/apps/mina-sidor-fa/src/app/pages/administration/pages/employees/components/employees-list/employees-list.component.scss @@ -1,7 +1,9 @@ @import 'variables/gutters'; +@import 'variables/z-index'; .employees-list { position: relative; + z-index: $msfa__z-index-default; // &__column-head { // // padding: 0; // } diff --git a/apps/mina-sidor-fa/src/app/shared/components/layout/layout.component.scss b/apps/mina-sidor-fa/src/app/shared/components/layout/layout.component.scss index a6fccd3..c6df3c9 100644 --- a/apps/mina-sidor-fa/src/app/shared/components/layout/layout.component.scss +++ b/apps/mina-sidor-fa/src/app/shared/components/layout/layout.component.scss @@ -31,7 +31,6 @@ grid-area: content; max-width: $digi--layout--breakpoint--l; padding: $digi--layout--gutter--l $digi--layout--gutter--l $digi--layout--gutter--xxl; - z-index: $msfa__z-index-default; } &__breadcrumbs { From 4d69676a74330f076a98e46b3142d90accb9cceb Mon Sep 17 00:00:00 2001 From: Erik Tiekstra Date: Tue, 28 Sep 2021 11:52:09 +0200 Subject: [PATCH 4/8] Merge pull request #145 in TEA/mina-sidor-fa-web from bugfix/TV-701 to next Squashed commit of the following: commit b5121285e8796f3ef3a2ff51bcb06699967386d5 Author: Daniel Appelgren Date: Tue Sep 28 11:22:37 2021 +0200 Fixed lint issues commit aa970ebbb6bd9bb4c6dbbfbe16a532cc0d59c6b6 Author: Erik Tiekstra Date: Tue Sep 28 10:43:29 2021 +0200 Updated changelog commit 81669a5f26ffd1b76eb9c023d3ee03c5c5feccaa Author: Erik Tiekstra Date: Tue Sep 28 10:41:19 2021 +0200 Now resetting state when navigating away from avrop commit a161a3ce48f778f778f46b665711428e5b01350e Author: Erik Tiekstra Date: Tue Sep 28 10:35:42 2021 +0200 Removed selectAll checkbox and fixed pagination issue --- CHANGELOG.md | 1 + .../src/app/pages/avrop/avrop.component.ts | 8 ++++++-- .../components/avrop-list/avrop-list.component.html | 9 +-------- .../components/avrop-list/avrop-list.component.scss | 4 ---- .../components/avrop-list/avrop-list.component.ts | 12 ------------ .../src/app/shared/models/avrop.model.ts | 6 +++--- apps/mina-sidor-fa/src/assets/CHANGELOG.md | 1 + 7 files changed, 12 insertions(+), 29 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 926f32a..5cc02c4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ - **authorization:** Whenever the API throws a "403 Forbidden" error we now show an unauthorized message. [TV-695](https://jira.arbetsformedlingen.se/browse/TV-695) - **avrop:** Now showing spårnamn instead of spårkod inside avrop. [TV-691](https://jira.arbetsformedlingen.se/browse/TV-691) - **avrop:** Fixed error-state on handledare select. [TV-699](https://jira.arbetsformedlingen.se/browse/TV-699) +- **avrop:** Several bugfixes related to avrop. [TV-701](https://jira.arbetsformedlingen.se/browse/TV-701) ## [2.0.0](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/compare/diff?targetBranch=refs%2Ftags%2Fv1.5.0&sourceBranch=refs%2Ftags%2Fv2.0.0) (2021-09-24) diff --git a/apps/mina-sidor-fa/src/app/pages/avrop/avrop.component.ts b/apps/mina-sidor-fa/src/app/pages/avrop/avrop.component.ts index ca239c3..4b79b08 100644 --- a/apps/mina-sidor-fa/src/app/pages/avrop/avrop.component.ts +++ b/apps/mina-sidor-fa/src/app/pages/avrop/avrop.component.ts @@ -1,4 +1,4 @@ -import { ChangeDetectionStrategy, Component } from '@angular/core'; +import { ChangeDetectionStrategy, Component, OnDestroy } from '@angular/core'; import { AvropCompact, AvropCompactData } from '@msfa-models/avrop.model'; import { Handledare } from '@msfa-models/handledare.model'; import { AvropService } from '@msfa-services/avrop.service'; @@ -10,7 +10,7 @@ import { Observable } from 'rxjs'; styleUrls: ['./avrop.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, }) -export class AvropComponent { +export class AvropComponent implements OnDestroy { readonly totalAmountOfSteps = 3; currentStep$: Observable = this.avropService.currentStep$; error$: Observable = this.avropService.error$; @@ -26,6 +26,10 @@ export class AvropComponent { constructor(private avropService: AvropService) {} + ngOnDestroy(): void { + this.returnToStep1(); + } + updateSelectedAvrop(deltagareList: AvropCompact[], currentStep: number): void { if (currentStep !== 1 && !deltagareList.length) { this.avropService.goToStep1(); diff --git a/apps/mina-sidor-fa/src/app/pages/avrop/components/avrop-list/avrop-list.component.html b/apps/mina-sidor-fa/src/app/pages/avrop/components/avrop-list/avrop-list.component.html index 0583a66..9d4989a 100644 --- a/apps/mina-sidor-fa/src/app/pages/avrop/components/avrop-list/avrop-list.component.html +++ b/apps/mina-sidor-fa/src/app/pages/avrop/components/avrop-list/avrop-list.component.html @@ -1,13 +1,5 @@
-
- -
  • selectedAvrop.id === avrop.id); } - toggleAllAvrop(selected: boolean): void { - if (selected && this.selectedAvrop?.length !== this.availableAvrop?.length) { - this.selectionChanged.emit(this.availableAvrop); - } else if (!selected && this.selectedAvrop.length) { - this.selectionChanged.emit([]); - } - } - toggleSelectedAvrop(avrop: Avrop, selected: boolean): void { const avropIsSelected = !!this.selectedAvrop?.find(selectedAvrop => selectedAvrop.id === avrop.id); diff --git a/apps/mina-sidor-fa/src/app/shared/models/avrop.model.ts b/apps/mina-sidor-fa/src/app/shared/models/avrop.model.ts index 98327cb..cb04f72 100644 --- a/apps/mina-sidor-fa/src/app/shared/models/avrop.model.ts +++ b/apps/mina-sidor-fa/src/app/shared/models/avrop.model.ts @@ -13,7 +13,7 @@ export interface AvropCompact { sprakstod: string; // sprakstod utforandeAdress: string; // adress trackCode: string; // sparkod - trackName: string; // sparNamn + trackName: TrackName; // sparNamn } export interface Avrop extends AvropCompact { @@ -60,11 +60,11 @@ export function mapAvropResponseToAvrop(data: AvropResponse): Avrop { sprakstod: sprakstod, utforandeAdress: adress, trackCode: sparkod, - trackName: TrackName[sparkod] || TrackName.UNKNOWN, + trackName: (TrackName[sparkod] || TrackName.UNKNOWN) as TrackName, genomforandeReferens, participationFrequency: deltagandeGrad, utforandeVerksamhet: utforandeverksamhet, - handledareCiamUserId, + handledareCiamUserId: handledareCiamUserId, handledare, }; } diff --git a/apps/mina-sidor-fa/src/assets/CHANGELOG.md b/apps/mina-sidor-fa/src/assets/CHANGELOG.md index 926f32a..5cc02c4 100644 --- a/apps/mina-sidor-fa/src/assets/CHANGELOG.md +++ b/apps/mina-sidor-fa/src/assets/CHANGELOG.md @@ -6,6 +6,7 @@ - **authorization:** Whenever the API throws a "403 Forbidden" error we now show an unauthorized message. [TV-695](https://jira.arbetsformedlingen.se/browse/TV-695) - **avrop:** Now showing spårnamn instead of spårkod inside avrop. [TV-691](https://jira.arbetsformedlingen.se/browse/TV-691) - **avrop:** Fixed error-state on handledare select. [TV-699](https://jira.arbetsformedlingen.se/browse/TV-699) +- **avrop:** Several bugfixes related to avrop. [TV-701](https://jira.arbetsformedlingen.se/browse/TV-701) ## [2.0.0](https://bitbucket.arbetsformedlingen.se/projects/tea/repos/mina-sidor-fa-web/compare/diff?targetBranch=refs%2Ftags%2Fv1.5.0&sourceBranch=refs%2Ftags%2Fv2.0.0) (2021-09-24) From 000e1a7728b43c14e50d174d61ea65b49a7750e0 Mon Sep 17 00:00:00 2001 From: Daniel Appelgren Date: Tue, 28 Sep 2021 11:54:39 +0200 Subject: [PATCH 5/8] =?UTF-8?q?Merge=20pull=20request=20#149=20in=20TEA/mi?= =?UTF-8?q?na-sidor-fa-web=20from=20fix/TV-698-tillg=C3=A4nglighetsredog?= =?UTF-8?q?=C3=B6relse=20to=20next?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Squashed commit of the following: commit fedee803e6469a230e3e21674ded5fe3dfcb728c Author: Daniel Appelgren Date: Tue Sep 28 11:38:16 2021 +0200 Update accessibility-report.md --- .../src/assets/files/accessibility-report.md | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/apps/mina-sidor-fa/src/assets/files/accessibility-report.md b/apps/mina-sidor-fa/src/assets/files/accessibility-report.md index 15ec045..e791862 100644 --- a/apps/mina-sidor-fa/src/assets/files/accessibility-report.md +++ b/apps/mina-sidor-fa/src/assets/files/accessibility-report.md @@ -24,13 +24,31 @@ Den här webbplatsen är delvis förenlig med lagen om tillgänglighet till digi Vi är medvetna om följande brister som inte följer lagkraven: -- Inga brister hittades +- Användare kan inte hoppa över innehåll som upprepas på flera sidor (till exempel menyer) genom en skip-länk som leder till huvudinnehållet. (WCAG 2.4.1 Hoppa över grupperat innehåll) +- Tabeller ihar inte en överskrift i form av en *caption* som kort beskriver vilken information tabellen innehåller. Tex tabellen för personallistan ska ha ett namn.(WCAG Tabeller har överskrifter1.3.1 Information och relationer) +- Alla obligatoriska fält är inte uppmärkta med (obligatoriskt). Finns fält som inte är uppmärkta tex personal. Dvs där det inte står att dem fälten är obligatoriska fast dem är obligatoriska att fylla. (WCAG 3.3.2 Etiketter och instruktioner) +- Inmatningsfel upptäcks inte automatiskt så att fältet markeras och felet beskrivs inte för användaren med text. Fältet får inte attributet aria-invalid. (WCAG 3.3.1 Identifiering av fel). +- Meddelande visas inte om en användare skickar in ett formulär som innehåller fel, kommuniceras inte heller till användare med skärmläsare och får fokus. Behöver stämmas av med tillgänglighetstestare gällande implementering av felmeddelande med fokus.(WCAG 3.3.1 Identifiering av fel) +- Ändra text mellanrum har vissa brister som kommer kollas på framöver under 2021.(WCAG 1.4.12 Textmellanrum) +- Brister gällande förutsägbarhet vid inmatning. Förklarande text för skärmläsare i filtersökfältet behöver adderas.Lägga till area attribut.Skärmläsare behöver få notifieringar på vad som händer , dvs gällande resultat och vad som söks på (WCAG 3.2.2 Förutsägbarhet vid inmatning). +- Läs ordning för hjälpmedel har testats och fungerar, men behöver testas mer strukturerat och fokuserat tillsammans med tillgänglighetstestare (WCAG 1.3.2 Meningsfull ordning) +- Brister gällande dölj dekorativa bilder. Bild behöver döljas med attribut "area hidden" så att det inte läses upp för skärmläsaren (WCAG 1.1.1 Innehåll som inte är text). +- Brister gällande semantiska länkar tex länkar länkar till samma sidor, pga navigeringen ligger fast (WCAG 1.3.1 Information och relationer). +- Brister gällande tydliga länktexter vissa knappar är oklara gällande sin betydelse tex står avbryt på en knapp men det behöver förtydligas vad man avbryter . Det står på en annan knapp "Redigera" men det behöver förtydligas vad man redigerar (WCAG 2.4.4 / 2.4.9 Länksyfte). +- Beskrivande etiketter behöver testas en gång till tillsammans med tillgänglighetstestare (WCAG 2.4.6 Rubriker och etiketter). +- Brist gällande felmeddelande kommuniceras till användare med skärmläsare utan att felmeddelandet får fokus. Behöver lägga in area-liv i felmeddelande och det behöver även testas en gång till tillsammans med tillgänglighetstestare (WCAG 4.1.3 Statusmeddelande). +- Brist gällande innehåll som förändras dynamiskt tex man får inte positiv feedback att man genomfört en sökning i personallistan. Tex att sökningen genomförts, inte heller sökträffar. Samt när man filtrerar sökningen så får man inte feedback på att filtreringen genomförts. (WCAG 4.1.3 Statusmeddelande). +- Brist gällande dölj innehåll som inte ska visas för skärmläsare, tex dekorativ välkomstbild bör döljas (WCAG 1.1.1 Innehåll som inte är text). + +Områden som behöver testas framöver: +- Ytterligare områden som behöver testas är gällande kodkvalitet bl.a. gällande rätt html-markup, att alla HTML-element har fullständiga start & slut-taggar och är nästlade enligt deras specifikationer (WCAG 4.1.1 Se till att koden validerar). Behöver även testas att inga dubbla attribut dvs inga HTML-element innehåller dubbla attributangivelser (WCAG 4.1.1 Se till att koden validerar). Behöver även testas att alla HTML-element har unika id, dvs ett id förekommer endast en gång på sidan (WCAG 4.1.1 Se till att koden validerar). +- Ytterligare test behöver även göras kring konsekvent identifiering i tjänsten och konsekvent identifiering på AF (3.2.4 Konsekvent identifiering). Dvs test med tillgänglighetstestare bör göras kring funktioner som finns på flera sidor i tjänsten identifieras på ett konsekvent sätt. Samma termer används t.ex för knappar som gör samma sak (både synlig text och textalternativ). Gäller funktioner i tjänsten. Även test med tillgänglighetstestare bör göras gällande funktioner i tjänsten identifieras på samma sätt som på andra ställen där de förekommer på webbplatsen. Samma termer används t.ex för knappar som gör samma sak. ## Hur vi har testat webbplatsen -Vi har gjort en självskattning (intern testning) av webbplatsen. Senaste bedömningen gjordes 2021-09-10. +Vi har gjort en självskattning (intern testning) av webbplatsen. Senaste bedömningen gjordes 2021-09-27. -Redogörelsen uppdaterades den 2021-09-10. +Redogörelsen uppdaterades den 2021-09-28. ## Hur vi jobbar med digital tillgänglighet From de8931a87dd0610399460ad6f9e82672bbeb4241 Mon Sep 17 00:00:00 2001 From: Daniel Appelgren Date: Tue, 28 Sep 2021 11:54:49 +0200 Subject: [PATCH 6/8] Merge pull request #148 in TEA/mina-sidor-fa-web from bugfix/TV-696-Telefonnummer-i-deltagarkortet-visar-undefined- to next MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Squashed commit of the following: commit be0b5ebe0fdb568e4264354010f147cd18deceee Author: Daniel Appelgren Date: Tue Sep 28 11:29:03 2021 +0200 id ska vara genomforandeReferens commit f5d294d827b5254e444e77ec389a9de2ce7ec25c Author: Daniel Appelgren Date: Tue Sep 28 09:39:09 2021 +0200 telefonnummer visas inte ifall något av landskod eller telefonnummer saknas --- .../src/app/shared/models/contact-information.model.ts | 7 ++++++- mock-api/mina-sidor-fa/scripts/avrop.js | 2 +- mock-api/mina-sidor-fa/scripts/deltagare.js | 5 ++++- mock-api/mina-sidor-fa/server.js | 2 +- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/apps/mina-sidor-fa/src/app/shared/models/contact-information.model.ts b/apps/mina-sidor-fa/src/app/shared/models/contact-information.model.ts index e650031..8933a65 100644 --- a/apps/mina-sidor-fa/src/app/shared/models/contact-information.model.ts +++ b/apps/mina-sidor-fa/src/app/shared/models/contact-information.model.ts @@ -15,13 +15,18 @@ export interface ContactInformation { export function mapResponseToContactInformation(data: ContactInformationResponse): ContactInformation { const { fornamn, efternamn, personnummer, epost, telekomadresser, adresser } = data; + return { firstName: fornamn || '', lastName: efternamn || '', fullName: fornamn && efternamn ? `${fornamn} ${efternamn}` : '', ssn: personnummer ? mapStringToSsn(personnummer) : '', email: epost || '', - phoneNumbers: telekomadresser ? telekomadresser.map(phoneNumber => mapResponseToPhoneNumber(phoneNumber)) : [], + phoneNumbers: telekomadresser + ? telekomadresser + .filter(phoneNumber => phoneNumber.landskod && phoneNumber.nummer_utan_inledande_nolla) + .map(phoneNumber => mapResponseToPhoneNumber(phoneNumber)) + : [], addresses: adresser ? adresser.map(address => mapResponseToAddress(address)) : null, }; } diff --git a/mock-api/mina-sidor-fa/scripts/avrop.js b/mock-api/mina-sidor-fa/scripts/avrop.js index d0c0c21..62ca1ef 100644 --- a/mock-api/mina-sidor-fa/scripts/avrop.js +++ b/mock-api/mina-sidor-fa/scripts/avrop.js @@ -32,7 +32,7 @@ function generateAvrop(amount = 10, deltagare, handledare) { fornamn: currentDeltagare.contact.fornamn, efternamn: currentDeltagare.contact.efternamn, deltagare: `${currentDeltagare.contact.fornamn} ${currentDeltagare.contact.efternamn}`, - genomforandeReferens: faker.datatype.number({ min: 100000000, max: 999999999 }), + genomforandeReferens: currentDeltagare.genomforandeReferens, orgId: faker.datatype.uuid(), leverantorId: faker.datatype.number({ min: 1000, max: 99999 }), organisationsnummer: organization.organizationNumber, diff --git a/mock-api/mina-sidor-fa/scripts/deltagare.js b/mock-api/mina-sidor-fa/scripts/deltagare.js index bd2c14e..72531cf 100644 --- a/mock-api/mina-sidor-fa/scripts/deltagare.js +++ b/mock-api/mina-sidor-fa/scripts/deltagare.js @@ -44,9 +44,12 @@ function generateDeltagare(amount = 10) { const educationLevel = EDUCATION_LEVELS[Math.floor(Math.random() * EDUCATION_LEVELS.length)]; const sunKod = SUN_KODER[Math.floor(Math.random() * SUN_KODER.length)]; + const genomforandeReferens = faker.datatype.number({ min: 100000000, max: 999999999 }); + const deltagare = { - id, + id: genomforandeReferens, sokandeId: id, + genomforandeReferens, contact: { fornamn, efternamn, diff --git a/mock-api/mina-sidor-fa/server.js b/mock-api/mina-sidor-fa/server.js index 9fe0d49..b6d804e 100644 --- a/mock-api/mina-sidor-fa/server.js +++ b/mock-api/mina-sidor-fa/server.js @@ -147,7 +147,7 @@ router.render = (req, res) => { startdatumAvrop, slutdatumAvrop, hasAvbrott, - genomforandeReferens, + genomforandeReferens: genomforandeReferens.toString(), }) ); } From 3d30ac185cff720cb70ab3d982c10b74823ca330 Mon Sep 17 00:00:00 2001 From: Erik Tiekstra Date: Tue, 28 Sep 2021 13:15:09 +0200 Subject: [PATCH 7/8] Merge pull request #150 in TEA/mina-sidor-fa-web from bugfix/TV-676 to next Squashed commit of the following: commit e1e440d157044f59537f976273dfc810452c2108 Author: Erik Tiekstra Date: Tue Sep 28 13:14:36 2021 +0200 Changed variable-name commit 1b23131743876338fd231382548ee6f51731e72a Author: Erik Tiekstra Date: Tue Sep 28 12:05:02 2021 +0200 Removed comment commit 66f5eaee5ba3c3f1fd5d2583c027dee99d744d8d Merge: 41655741 de8931a8 Author: Erik Tiekstra Date: Tue Sep 28 11:57:15 2021 +0200 Merge branch 'next' into bugfix/TV-676 commit 4165574175e7ddcf8e3e3e78abc1ab24c65575d3 Author: Erik Tiekstra Date: Mon Sep 27 12:13:12 2021 +0200 WIP --- .../pages/employees/employees.component.html | 2 +- .../pages/employees/employees.component.ts | 4 +- .../shared/services/api/employee.service.ts | 89 +++++++++++-------- 3 files changed, 53 insertions(+), 42 deletions(-) diff --git a/apps/mina-sidor-fa/src/app/pages/administration/pages/employees/employees.component.html b/apps/mina-sidor-fa/src/app/pages/administration/pages/employees/employees.component.html index 7b8bef2..e0e9dd8 100644 --- a/apps/mina-sidor-fa/src/app/pages/administration/pages/employees/employees.component.html +++ b/apps/mina-sidor-fa/src/app/pages/administration/pages/employees/employees.component.html @@ -19,7 +19,7 @@

    Personallista

    -
    + ): void { diff --git a/apps/mina-sidor-fa/src/app/shared/services/api/employee.service.ts b/apps/mina-sidor-fa/src/app/shared/services/api/employee.service.ts index f4b0c06..49be182 100644 --- a/apps/mina-sidor-fa/src/app/shared/services/api/employee.service.ts +++ b/apps/mina-sidor-fa/src/app/shared/services/api/employee.service.ts @@ -23,19 +23,35 @@ import { ErrorService } from '@msfa-services/error.service'; import { BehaviorSubject, combineLatest, Observable, of, throwError } from 'rxjs'; import { catchError, distinctUntilChanged, filter, map, switchMap, take, tap } from 'rxjs/operators'; +interface EmployeeParams { + page: number; + limit: number; + sort: keyof EmployeeCompactResponse; + order: SortOrder; + search: string; + onlyEmployeesWithoutAuthorization: boolean; +} + @Injectable({ providedIn: 'root', }) export class EmployeeService extends UnsubscribeDirective { private _apiBaseUrl = `${environment.api.url}/users`; private _currentEmployeeId$ = new BehaviorSubject(null); - private _limit$ = new BehaviorSubject(10); - private _page$ = new BehaviorSubject(1); - private _sort$ = new BehaviorSubject>({ key: 'name', order: SortOrder.ASC }); - public sort$: Observable> = this._sort$.asObservable(); - private _searchFilter$ = new BehaviorSubject(''); - private _onlyEmployeesWithoutAuthorization$ = new BehaviorSubject(false); - public onlyEmployeesWithoutAuthorization$: Observable = this._onlyEmployeesWithoutAuthorization$.asObservable(); + private _params$ = new BehaviorSubject({ + page: 1, + limit: 10, + sort: 'name', + order: SortOrder.ASC, + search: '', + onlyEmployeesWithoutAuthorization: false, + }); + public sort$: Observable> = this._params$.pipe( + map(({ sort, order }) => ({ key: sort, order })) + ); + public onlyEmployeesWithoutAuthorization$: Observable = this._params$.pipe( + map(({ onlyEmployeesWithoutAuthorization }) => onlyEmployeesWithoutAuthorization) + ); private _employee$ = new BehaviorSubject(null); public employee$: Observable = this._employee$.asObservable(); private _lastUpdatedEmployeeId$ = new BehaviorSubject(null); @@ -67,17 +83,8 @@ export class EmployeeService extends UnsubscribeDirective { ); } - public employeesData$: Observable = combineLatest([ - this._limit$, - this._page$, - this._sort$, - this._searchFilter$, - this._onlyEmployeesWithoutAuthorization$, - this._lastDeletedEmployee$, - ]).pipe( - switchMap(([limit, page, sort, searchFilter, onlyEmployeesWithoutAuthorization]) => - this._fetchEmployees$(limit, page, sort, searchFilter, onlyEmployeesWithoutAuthorization) - ) + public employeesData$: Observable = combineLatest([this._params$, this._lastDeletedEmployee$]).pipe( + switchMap(([params]) => this._fetchEmployees$(params)) ); public setCurrentEmployeeId(currentEmployeeId: string): void { @@ -91,26 +98,21 @@ export class EmployeeService extends UnsubscribeDirective { this._lastUpdatedEmployeeId$.next(null); } - private _fetchEmployees$( - limit: number, - page: number, - sort: Sort, - searchFilter: string, - onlyEmployeesWithoutAuthorization?: boolean - ): Observable { + private _fetchEmployees$(employeeParams: EmployeeParams): Observable { + const { sort, order, limit, page, search, onlyEmployeesWithoutAuthorization } = employeeParams; const params: Params = { - sort: sort.key as string, - order: sort.order as string, + sort, + order, limit: limit.toString(), page: page.toString(), }; - if (searchFilter) { - params.search = searchFilter; + if (search) { + params.search = search; } if (onlyEmployeesWithoutAuthorization) { - params.onlyEmployeesWithoutAuthorization = onlyEmployeesWithoutAuthorization?.toString(); + params.onlyEmployeesWithoutAuthorization = onlyEmployeesWithoutAuthorization.toString(); } this._employeesLoading$.next(true); @@ -134,12 +136,20 @@ export class EmployeeService extends UnsubscribeDirective { ); } - public setSearchFilter(value: string): void { - this._searchFilter$.next(value); + public setSearchString(value: string): void { + this._params$.next({ + ...this._params$.getValue(), + search: value, + page: 1, + }); } public setOnlyEmployeesWithoutAuthorization(value: boolean): void { - this._onlyEmployeesWithoutAuthorization$.next(value); + this._params$.next({ + ...this._params$.getValue(), + onlyEmployeesWithoutAuthorization: value, + page: 1, + }); } public setEmployeeToDelete(employee: Employee): void { @@ -156,16 +166,17 @@ export class EmployeeService extends UnsubscribeDirective { ); } - public setSort(newSortKey: keyof EmployeeCompactResponse): void { - const currentSort = this._sort$.getValue(); - const order = - currentSort.key === newSortKey && currentSort.order === SortOrder.ASC ? SortOrder.DESC : SortOrder.ASC; + public setSort(sort: keyof EmployeeCompactResponse): void { + const currentParams = this._params$.getValue(); + const currentSort = currentParams.sort; + const currentOrder = currentParams.order; + const order = currentSort === sort && currentOrder === SortOrder.ASC ? SortOrder.DESC : SortOrder.ASC; - this._sort$.next({ key: newSortKey, order }); + this._params$.next({ ...this._params$.getValue(), sort, order }); } public setPage(page: number): void { - this._page$.next(page); + this._params$.next({ ...this._params$.getValue(), page }); } public postEmployeeInvitation(emails: string[]): Observable { From be68be2846e61d71b07f16c6fd5ec9480d123dec Mon Sep 17 00:00:00 2001 From: Daniel Appelgren Date: Tue, 28 Sep 2021 13:47:26 +0200 Subject: [PATCH 8/8] =?UTF-8?q?feature(Deltagarlista):=20Ny=20kolumn=20"Ef?= =?UTF-8?q?fekt"=20i=20genomf=C3=B6randeh=C3=A4ndelser=20(TV-703)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Squashed commit of the following: commit 4ee981be8779922ce12e4a3158a11186a8666ebe Author: Daniel Appelgren Date: Tue Sep 28 13:34:03 2021 +0200 Ny kolymn under genomförandehändelser --- ...agare-list-handelser-dialog.component.html | 58 ++++++++++--------- .../shared/models/deltagare-handelse.model.ts | 39 ++++++++++++- .../api/deltagare-handelser-api.service.ts | 10 +++- .../scripts/deltagare-handelser.js | 16 ++++- 4 files changed, 89 insertions(+), 34 deletions(-) diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list-handelser-dialog/deltagare-list-handelser-dialog.component.html b/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list-handelser-dialog/deltagare-list-handelser-dialog.component.html index b530f48..b8e74ad 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list-handelser-dialog/deltagare-list-handelser-dialog.component.html +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/components/deltagare-list/deltagare-list-handelser-dialog/deltagare-list-handelser-dialog.component.html @@ -4,38 +4,40 @@

    - - - - - - - - - - - - + +
    Lista med alla händelser för {{deltagare?.fullName}}
    InkomHändelseDatum för händelseDatum förklaring
    + + + + + + + + + - - - + + + + + - - - - - - + + - -
    Lista med alla händelser för {{deltagare?.fullName}}
    InkomHändelseEffekt
    {{handelse.receivedDate | date}} +
    {{handelse.receivedDate | date}} + {{handelse.description}} + + {{handelse.effectDescription}}: {{handelse.effectDate | date }} + + + {{handelse.description}}{{handelse.tidpunkt | date }}{{handelse.tidpunktDescription}} - - {{handelse.description}}
    -
    + + +
diff --git a/apps/mina-sidor-fa/src/app/shared/models/deltagare-handelse.model.ts b/apps/mina-sidor-fa/src/app/shared/models/deltagare-handelse.model.ts index 1f0a48e..b4480c5 100644 --- a/apps/mina-sidor-fa/src/app/shared/models/deltagare-handelse.model.ts +++ b/apps/mina-sidor-fa/src/app/shared/models/deltagare-handelse.model.ts @@ -1,4 +1,27 @@ +const GENOMFORANDEHANDELSE_EFFECT_MAP = { + Inrapporteringsdatum_GP: 'Inskickad datum', + Godkannandedatum_GP: 'Godkänd datum', + Avvisatdatum_GP: 'Ej godkänd datum', + Inrapporteringsdatum_PR: 'Inrapporterad datum', + Godkannandedatum_PR: 'Godkänd datum', + Avvisatdatum_PR: 'Ej godkänd datum', + Inrapporteringsdatum_SR: 'Inskickad datum', + Godkannandedatum_SR: 'Godkänd datum', + Avvisatdatum_SR: 'Ej godkänd datum', + Handlaggning_startad: 'Handläggning startad', + Andringsbeslutdatum: 'Ändringsbeslut datum', + Slut_avropsperiod: 'Nytt slutdatum', +}; + export interface DeltagareHandelse { + description: string; + receivedDate: Date; + isAvbrott: boolean; + effectDate: Date; + effectDescription: string; +} + +interface DeltagareHandelseApiResponse { description: string; receivedDate: Date; isAvbrott: boolean; @@ -6,6 +29,18 @@ export interface DeltagareHandelse { tidpunktDescription: string; } -export interface DeltagareHandelseApiResponse { - data: DeltagareHandelse[]; +export interface DeltagareHandelserApiResponse { + data: DeltagareHandelseApiResponse[]; +} + +export function mapDeltagareHandelseApiResponse( + deltagareHandelseApiResponse: DeltagareHandelseApiResponse +): DeltagareHandelse { + const { description, receivedDate, isAvbrott } = deltagareHandelseApiResponse; + const effectDate = deltagareHandelseApiResponse.tidpunkt; + const effectDescription = + GENOMFORANDEHANDELSE_EFFECT_MAP[deltagareHandelseApiResponse.tidpunktDescription] ?? + deltagareHandelseApiResponse.tidpunktDescription ?? + ''; + return { description, receivedDate, isAvbrott, effectDate, effectDescription }; } diff --git a/apps/mina-sidor-fa/src/app/shared/services/api/deltagare-handelser-api.service.ts b/apps/mina-sidor-fa/src/app/shared/services/api/deltagare-handelser-api.service.ts index 6517ca2..4f44fce 100644 --- a/apps/mina-sidor-fa/src/app/shared/services/api/deltagare-handelser-api.service.ts +++ b/apps/mina-sidor-fa/src/app/shared/services/api/deltagare-handelser-api.service.ts @@ -1,7 +1,11 @@ import { HttpClient } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { environment } from '@msfa-environment'; -import { DeltagareHandelse, DeltagareHandelseApiResponse } from '@msfa-models/deltagare-handelse.model'; +import { + DeltagareHandelse, + DeltagareHandelserApiResponse, + mapDeltagareHandelseApiResponse, +} from '@msfa-models/deltagare-handelse.model'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; @@ -18,11 +22,11 @@ export class DeltagareHandelserApiService { } return this.httpClient - .get(`${this._apiBaseUrl}/deltagare/${genomforandeReferens}/handelser`) + .get(`${this._apiBaseUrl}/deltagare/${genomforandeReferens}/handelser`) .pipe( map(({ data }) => { if (data) { - return data; + return data.map(genomforandeHandelse => mapDeltagareHandelseApiResponse(genomforandeHandelse)); } }) ); diff --git a/mock-api/mina-sidor-fa/scripts/deltagare-handelser.js b/mock-api/mina-sidor-fa/scripts/deltagare-handelser.js index 2a09b4d..77a734d 100644 --- a/mock-api/mina-sidor-fa/scripts/deltagare-handelser.js +++ b/mock-api/mina-sidor-fa/scripts/deltagare-handelser.js @@ -13,7 +13,21 @@ const HANDELSER = [ 'Byte av leverantör bifall', ]; -const TIDPUNKT_DESCRIPTION = ['Handläggning startad', 'Inrapporteringsdatum slutredovisning']; +const TIDPUNKT_DESCRIPTION = [ + 'Inrapporteringsdatum_GP', + 'Godkannandedatum_GP', + 'Avvisatdatum_GP', + 'Inrapporteringsdatum_PR', + 'Godkannandedatum_PR', + 'Avvisatdatum_PR', + 'Inrapporteringsdatum_SR', + 'Godkannandedatum_SR', + 'Avvisatdatum_SR', + 'Handlaggning_startad', + 'Andringsbeslutdatum', + 'Slut_avropsperiod', + '', +]; function generateHandelser(amount = 10) { const handelser = [];