From e7e6a7ebd80fc7053595b071430933d0346a9597 Mon Sep 17 00:00:00 2001 From: Sindre Kjelsrud Date: Mon, 31 Jul 2023 12:18:49 +0200 Subject: [PATCH 01/67] =?UTF-8?q?=F0=9F=9A=A7=20WIP:=20Fikse=20alerts=20p?= =?UTF-8?q?=C3=A5=20hovedside?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/index.tsx | 19 +++++++++++++++++-- frontend/src/pages/feil.tsx | 17 ++++++++++------- 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/frontend/src/index.tsx b/frontend/src/index.tsx index 54f2514..cb1b8a8 100644 --- a/frontend/src/index.tsx +++ b/frontend/src/index.tsx @@ -1,19 +1,33 @@ import CardsContainer from "./components/CardsContainer"; import "@navikt/ds-css"; -import { Button, Search } from "@navikt/ds-react"; +import { Alert, Button, Search } from "@navikt/ds-react"; import Header from "./components/Header"; import { PlusIcon } from "@navikt/aksel-icons"; import Filtermeny from "./components/Filtermeny"; import { useNavigate } from "react-router-dom"; import axios from "axios"; -import { useEffect, useState } from "react"; +import { useContext, useEffect, useState } from "react"; import { Feilmelding } from "./interface"; +import { AlertContext } from "./pages/feil"; export default function Home() { const navigate = useNavigate() const [feilmeldinger, setFeilmeldinger] = useState([]); + const alertValue = useContext(AlertContext) + + /** + * + */ + const handleAlerts = () => { + if (alertValue.status === 201) { + return Feil er meldt inn! Du vil nå sendes tilbake til hovedmenyen om fem sekunder. + } else { + return Noe gikk galt! Prøv igjen om noen minutter. + } + } + /** * Henter alle feilmeldinger fra backend. * Bruker endepunktet /api/hentallefeil. @@ -54,6 +68,7 @@ export default function Home() {
+ {alertValue.status != 0 ? handleAlerts() : <>}
{} +}) + export default function Feil() { const [tittel, setTittel] = useState(""); const [beskrivelse, setBeskrivelse] = useState(""); @@ -30,19 +35,18 @@ export default function Feil() { }).catch((error) => { console.log(error); }) + + handleAlerts() } const handleAlerts = () => { if (status === 201) { console.log("Feil lagt til i database"); - setTimeout(() => - { - navigate("/"); - }, - 5000); + navigate("/"); return Feil er meldt inn! Du vil nå sendes tilbake til hovedmenyen om fem sekunder. } else { console.log("Noe gikk galt, feil ikke lagt til i database!"); + navigate("/"); return Noe gikk galt! Prøv igjen om noen minutter. } } @@ -83,7 +87,6 @@ export default function Feil() {
- {status != 0 ? handleAlerts() : <>} + +
+
+ +
{/* TODO: HER KOMMER CONTENT */} diff --git a/frontend/src/components/FeilModal.tsx b/frontend/src/components/FeilModal.tsx index 9901257..483684c 100644 --- a/frontend/src/components/FeilModal.tsx +++ b/frontend/src/components/FeilModal.tsx @@ -16,6 +16,7 @@ const FeilModal = (props: modalInterface) => { aria-label={" modal"} onClose={() => props.setOpen(false)} aria-labelledby="modal-heading" + closeButton={false} > {props.children} From 3792ee686107c49eb105b719257f43bcc764c983 Mon Sep 17 00:00:00 2001 From: Sindre Kjelsrud Date: Tue, 1 Aug 2023 12:08:45 +0200 Subject: [PATCH 11/67] =?UTF-8?q?=E2=9C=A8=20Klarer=20=C3=A5=20skifte=20me?= =?UTF-8?q?llom=20redigerings-=20og=20visningsmodus?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Markus A. R. Johansen --- frontend/src/components/FeilCard.tsx | 72 +++++++++++++++++++++------- 1 file changed, 55 insertions(+), 17 deletions(-) diff --git a/frontend/src/components/FeilCard.tsx b/frontend/src/components/FeilCard.tsx index 7c4d68b..16923ca 100644 --- a/frontend/src/components/FeilCard.tsx +++ b/frontend/src/components/FeilCard.tsx @@ -3,7 +3,7 @@ import { Button, Heading, Modal, Tag } from "@navikt/ds-react"; import { IFeilmelding } from "../interface"; import FeilModal from "./FeilModal"; import { useEffect, useState } from "react"; -import { PencilIcon, XMarkIcon } from "@navikt/aksel-icons"; +import { FloppydiskIcon, PencilIcon, XMarkIcon } from "@navikt/aksel-icons"; /** * En konteiner som inneholder all informasjon og funksjonalitet for å vise og interagere med en feilmelding. @@ -15,12 +15,20 @@ import { PencilIcon, XMarkIcon } from "@navikt/aksel-icons"; interface IFeilKort extends IFeilmelding { key: number } + + export const FeilKort = (props: IFeilKort) => { const [visModal, setVisModal] = useState(false) + const [redigeringsmodus, setRedigeringsmodus] = useState(false) useEffect(() => { Modal.setAppElement(document.getElementById('root')); }, []); + + const lagreEndringer = () => { + setRedigeringsmodus(false) + + } return( <> @@ -35,23 +43,53 @@ export const FeilKort = (props: IFeilKort) => {
-
- -
- - + {redigeringsmodus ? + +
+ +
+ + +
-
+ + : +
+ +
+ + +
+
+ }
From bb4a1c1943aaf196b208a33472ebedb8fb56f1cf Mon Sep 17 00:00:00 2001 From: Sindre Kjelsrud Date: Tue, 1 Aug 2023 12:38:06 +0200 Subject: [PATCH 12/67] =?UTF-8?q?=F0=9F=9A=A7=20Jobber=20med=20endring=20a?= =?UTF-8?q?v=20tittel,=20beskrivelse=20og=20arbeidsstatus?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit WIP: må pulle main først for å få tak i nytt interface Co-authored-by: Markus A. R. Johansen --- frontend/src/components/FeilCard.tsx | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/frontend/src/components/FeilCard.tsx b/frontend/src/components/FeilCard.tsx index 16923ca..990c6ca 100644 --- a/frontend/src/components/FeilCard.tsx +++ b/frontend/src/components/FeilCard.tsx @@ -1,5 +1,5 @@ import "@navikt/ds-css"; -import { Button, Heading, Modal, Tag } from "@navikt/ds-react"; +import { Button, Heading, Modal, Radio, RadioGroup, Tag, TextField } from "@navikt/ds-react"; import { IFeilmelding } from "../interface"; import FeilModal from "./FeilModal"; import { useEffect, useState } from "react"; @@ -25,9 +25,10 @@ export const FeilKort = (props: IFeilKort) => { Modal.setAppElement(document.getElementById('root')); }, []); + const [arbeidsstatus, setArbeidsstatus] = useState(0) + const lagreEndringer = () => { setRedigeringsmodus(false) - } return( @@ -46,7 +47,26 @@ export const FeilKort = (props: IFeilKort) => { {redigeringsmodus ?
- +
+ + + {setArbeidsstatus(arbeidsstatus)}} + value={arbeidsstatus} + > + Ikke påbegynt + Feilen jobbes med + Feilen er fikset + +
{redigeringsmodus ? @@ -89,7 +95,13 @@ export const FeilKort = (props: IFeilKort) => { :
- +
- +
) } diff --git a/frontend/src/interface.ts b/frontend/src/interface.ts index 4edcb50..4757bd0 100644 --- a/frontend/src/interface.ts +++ b/frontend/src/interface.ts @@ -6,14 +6,17 @@ export interface IFeilmelding { tittel: string, beskrivelse: string - // haster: boolean dato: Date + haster: boolean + arbeidsstatus: number } export class Feilmelding implements IFeilmelding { tittel: string = "default tittel" beskrivelse: string = "default beskrivelse" dato: Date = new Date() + haster: boolean = false + arbeidsstatus: number = 0 /** * Typescript 2.1 syntax som lar deg sende inn et JSON object og mappe det til class. @@ -24,6 +27,8 @@ export class Feilmelding implements IFeilmelding { tittel: string, beskrivelse: string, dato: Date + haster: boolean + arbeidsstatus: number }) { if (fields) Object.assign(this, fields); } From 45f2815a7c628cb04efe0ad95e275d8eae1a6b3e Mon Sep 17 00:00:00 2001 From: Markus Johansen Date: Tue, 1 Aug 2023 10:28:09 +0200 Subject: [PATCH 14/67] =?UTF-8?q?=F0=9F=90=9B=20Manglet=20nye=20props=20i?= =?UTF-8?q?=20cardcontainer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/components/CardsContainer.tsx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/frontend/src/components/CardsContainer.tsx b/frontend/src/components/CardsContainer.tsx index e2a9dbd..1e93578 100644 --- a/frontend/src/components/CardsContainer.tsx +++ b/frontend/src/components/CardsContainer.tsx @@ -10,15 +10,19 @@ interface ICardsContainer { * @returns grid med feilmeldinger */ const CardsContainer = (props: ICardsContainer) => { + {props.feilmeldinger.map((feilMelding) => console.log(feilMelding))} return (
+ {props.feilmeldinger.map((feilMelding) => ( )) } From 7b0d3c3168be8ba8cc743571ccac486e088dbf7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Amalie=20Mans=C3=A5ker?= Date: Tue, 1 Aug 2023 10:32:15 +0200 Subject: [PATCH 15/67] =?UTF-8?q?=F0=9F=90=9B=20S=C3=B8rger=20for=20at=20f?= =?UTF-8?q?eilmelding=20som=20blir=20sendt=20fra=20frontend=20matcher=20fe?= =?UTF-8?q?ilmeldingsobjekt=20i=20backend?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Sindre Kjelsrud --- frontend/src/pages/feil.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/frontend/src/pages/feil.tsx b/frontend/src/pages/feil.tsx index ee889c1..ac0de6d 100644 --- a/frontend/src/pages/feil.tsx +++ b/frontend/src/pages/feil.tsx @@ -18,7 +18,9 @@ export default function Feil() { const payload = { tittel: tittel, beskrivelse: beskrivelse, - dato: new Date().toISOString().replace('Z', '') + dato: new Date().toISOString().replace('Z', ''), // Litt wack fix, burde endres + arbeidsstatus: 0, + haster: false } axios.post("/api/nyfeil", payload, { From c84e7890eba6f28f8538e25f25451bc059d82701 Mon Sep 17 00:00:00 2001 From: "Markus A. R. Johansen" <90006516+J0hans1@users.noreply.github.com> Date: Tue, 1 Aug 2023 10:42:20 +0200 Subject: [PATCH 16/67] =?UTF-8?q?=E2=9C=A8=20Statusflagg=20(#19)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ✨ Tagbar støtter toggling av arbeidsstatusflagg, ved å ta inn et arbeidsstatus prop som er 0,1 eller 2 * 🗃️ Legger til PK, arbeidsstatus og haster i database Co-authored-by: Amalie Erdal Mansåker * ✏️ Fikser glemt semikolon + glemte felt i tester Co-authored-by: Amalie Erdal Mansåker * 🍱 Oppdaterer interface frontend for å matche nye felt haster og arbeidsstatus * 🐛 Manglet nye props i cardcontainer * ✨ Tagbar støtter toggling av arbeidsstatusflagg, ved å ta inn et arbeidsstatus prop som er 0,1 eller 2 --------- Co-authored-by: Sindre Kjelsrud Co-authored-by: Amalie Erdal Mansåker Co-authored-by: Sid <93219711+SindreKjelsrud@users.noreply.github.com> --- frontend/src/components/CardsContainer.tsx | 4 +-- frontend/src/components/FeilCard.tsx | 34 ++++++++++++++++++---- 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/frontend/src/components/CardsContainer.tsx b/frontend/src/components/CardsContainer.tsx index 1e93578..d51318d 100644 --- a/frontend/src/components/CardsContainer.tsx +++ b/frontend/src/components/CardsContainer.tsx @@ -9,9 +9,7 @@ interface ICardsContainer { * Komponent som laster inn feilmeldinger i kort fra database. * @returns grid med feilmeldinger */ -const CardsContainer = (props: ICardsContainer) => { - {props.feilmeldinger.map((feilMelding) => console.log(feilMelding))} - +const CardsContainer = (props: ICardsContainer) => { return (
diff --git a/frontend/src/components/FeilCard.tsx b/frontend/src/components/FeilCard.tsx index 2b04b66..6d0a8c4 100644 --- a/frontend/src/components/FeilCard.tsx +++ b/frontend/src/components/FeilCard.tsx @@ -148,8 +148,8 @@ export const FeilkortHeader = (props: IFeilmelding) => { {props.tittel}

{props.dato.toDateString()}

{props.beskrivelse}

-
- +
+
) } @@ -157,17 +157,39 @@ export const FeilkortHeader = (props: IFeilmelding) => { interface TagBarInterface { haster: boolean + arbeidsstatus: number } /** * Komponentet er en bar (vanrett linje) som inneholder to statusflagg: "arbeidsstatus" og "Haster". * Komponentet er en del av FeilKortHeader - * @param haster + * @param haster er en boolean som beskriver om feilen haster eller ikke. + * @param arbeidsstatus */ const TagBar = (props: TagBarInterface) => { + + /** + * Funksjonen tar inn + * @param arbeidsstatus + * @returns + */ + const toggleArbeidsstatus = (arbeidsstatus: number) => { + switch (arbeidsstatus) { + case 0: + return Ikke påbegynt; + case 1: + return Feilen jobbes med; + case 2: + return Feilen er fikset; + default: + throw new Error("Ikke gyldig arbeidsstatus-kode. Koden må være 0, 1 eller 2"); + + } + } + return ( -
- Jobbes med - {props.haster === true ? Haster : <>} +
+ {toggleArbeidsstatus(props.arbeidsstatus)} + {props.haster ? Haster : <>}
) } From 7a045bb0c3ec1703ccba3deeba1094f7d6cc54ff Mon Sep 17 00:00:00 2001 From: Sindre Kjelsrud Date: Tue, 1 Aug 2023 13:40:37 +0200 Subject: [PATCH 17/67] =?UTF-8?q?=F0=9F=90=9B=20Fikser=20slik=20at=20man?= =?UTF-8?q?=20kan=20skrive=20inn=20i=20feltene=20til=20tittel=20og=20beskr?= =?UTF-8?q?ivelse?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Markus A. R. Johansen --- frontend/src/components/FeilCard.tsx | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/frontend/src/components/FeilCard.tsx b/frontend/src/components/FeilCard.tsx index 6d0a8c4..9e08b4d 100644 --- a/frontend/src/components/FeilCard.tsx +++ b/frontend/src/components/FeilCard.tsx @@ -1,5 +1,5 @@ import "@navikt/ds-css"; -import { Button, Heading, Modal, Radio, RadioGroup, Tag, TextField } from "@navikt/ds-react"; +import { Button, Checkbox, CheckboxGroup, Heading, Modal, Radio, RadioGroup, Tag, TextField } from "@navikt/ds-react"; import { IFeilmelding } from "../interface"; import FeilModal from "./FeilModal"; import { useEffect, useState } from "react"; @@ -20,15 +20,19 @@ interface IFeilKort extends IFeilmelding { export const FeilKort = (props: IFeilKort) => { const [visModal, setVisModal] = useState(false) const [redigeringsmodus, setRedigeringsmodus] = useState(false) + const [tittel, setTittel] = useState(props.tittel) + const [beskrivelse, setBeskrivelse] = useState(props.beskrivelse) + const [arbeidsstatus, setArbeidsstatus] = useState(props.arbeidsstatus) + const [haster, setHaster] = useState(props.haster) + useEffect(() => { Modal.setAppElement(document.getElementById('root')); }, []); - const [arbeidsstatus, setArbeidsstatus] = useState(0) - const lagreEndringer = () => { setRedigeringsmodus(false) + // TODO - send endring til database } return( @@ -56,12 +60,13 @@ export const FeilKort = (props: IFeilKort) => {
setTittel(e.target.value)} /> setBeskrivelse(e.target.value)} /> { Feilen jobbes med Feilen er fikset + {setHaster(haster)}} + value={haster} + > + Ja + Nei +
: +
{
+
+
} -
{/* TODO: HER KOMMER CONTENT */} diff --git a/frontend/src/interface.ts b/frontend/src/interface.ts index 4757bd0..553ca65 100644 --- a/frontend/src/interface.ts +++ b/frontend/src/interface.ts @@ -4,6 +4,7 @@ export interface IFeilmelding { + id: number, tittel: string, beskrivelse: string dato: Date @@ -12,6 +13,7 @@ export interface IFeilmelding { } export class Feilmelding implements IFeilmelding { + id: number = 0 tittel: string = "default tittel" beskrivelse: string = "default beskrivelse" dato: Date = new Date() @@ -24,8 +26,9 @@ export class Feilmelding implements IFeilmelding { */ public constructor( fields: { - tittel: string, - beskrivelse: string, + id: number + tittel: string + beskrivelse: string dato: Date haster: boolean arbeidsstatus: number From 719a9b39efc62ed25834107c44840304bbc59cae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Amalie=20Mans=C3=A5ker?= Date: Tue, 1 Aug 2023 14:11:52 +0200 Subject: [PATCH 19/67] =?UTF-8?q?=F0=9F=9A=A7=20P=C3=A5begynt=20oppdater?= =?UTF-8?q?=20feilmeldinger?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../no/nav/helse/sprik/db/FeilmeldingRepository.kt | 13 +++++++++++-- .../no/nav/helse/sprik/db/FeilmeldingTable.kt | 1 + .../kotlin/no/nav/helse/sprik/modell/Feilmelding.kt | 3 ++- .../kotlin/no/nav/helse/sprik/plugins/Routing.kt | 6 ++++++ backend/src/test/kotlin/LocalApp.kt | 12 ++++++------ .../kotlin/no/nav/helse/sprik/FeilmeldingTest.kt | 9 +++++++-- frontend/src/pages/feil.tsx | 1 + 7 files changed, 34 insertions(+), 11 deletions(-) diff --git a/backend/src/main/kotlin/no/nav/helse/sprik/db/FeilmeldingRepository.kt b/backend/src/main/kotlin/no/nav/helse/sprik/db/FeilmeldingRepository.kt index 85bca6c..1818dcc 100644 --- a/backend/src/main/kotlin/no/nav/helse/sprik/db/FeilmeldingRepository.kt +++ b/backend/src/main/kotlin/no/nav/helse/sprik/db/FeilmeldingRepository.kt @@ -5,6 +5,7 @@ import no.nav.helse.sprik.db.FeilmeldingTable.arbeidsstatus import no.nav.helse.sprik.db.FeilmeldingTable.beskrivelse import no.nav.helse.sprik.db.FeilmeldingTable.dato import no.nav.helse.sprik.db.FeilmeldingTable.haster +import no.nav.helse.sprik.db.FeilmeldingTable.id import no.nav.helse.sprik.db.FeilmeldingTable.tittel import no.nav.helse.sprik.modell.Feilmelding import org.jetbrains.exposed.sql.* @@ -20,14 +21,13 @@ class FeilmeldingRepository { it[FeilmeldingTable.tittel] = feilmelding.tittel it[FeilmeldingTable.beskrivelse] = feilmelding.beskrivelse it[FeilmeldingTable.dato] = feilmelding.dato - it[FeilmeldingTable.arbeidsstatus] = feilmelding.arbeidsstatus - it[FeilmeldingTable.haster] = feilmelding.haster } } } } private fun radTilFeilmelding(rad: ResultRow) = Feilmelding( + id = rad[id], tittel = rad[tittel], beskrivelse = rad[beskrivelse], dato = rad[dato], @@ -47,4 +47,13 @@ class FeilmeldingRepository { .map(::radTilFeilmelding) } + + fun hentFeilmelding(id: String) = transaction { + TODO() + FeilmeldingTable.id + } + + fun oppdaterFeilmelding(id: String): Nothing = transaction { + TODO() + } } diff --git a/backend/src/main/kotlin/no/nav/helse/sprik/db/FeilmeldingTable.kt b/backend/src/main/kotlin/no/nav/helse/sprik/db/FeilmeldingTable.kt index 13a2c35..34aacfb 100644 --- a/backend/src/main/kotlin/no/nav/helse/sprik/db/FeilmeldingTable.kt +++ b/backend/src/main/kotlin/no/nav/helse/sprik/db/FeilmeldingTable.kt @@ -4,6 +4,7 @@ import org.jetbrains.exposed.sql.Table import org.jetbrains.exposed.sql.javatime.datetime object FeilmeldingTable : Table("feilmelding") { + val id = integer("id") val tittel = text("tittel") val beskrivelse = text("beskrivelse") val dato = datetime("dato") diff --git a/backend/src/main/kotlin/no/nav/helse/sprik/modell/Feilmelding.kt b/backend/src/main/kotlin/no/nav/helse/sprik/modell/Feilmelding.kt index 7f14fe6..0e8c01c 100644 --- a/backend/src/main/kotlin/no/nav/helse/sprik/modell/Feilmelding.kt +++ b/backend/src/main/kotlin/no/nav/helse/sprik/modell/Feilmelding.kt @@ -14,10 +14,11 @@ import java.time.LocalDateTime * */ @Serializable class Feilmelding( + val id: Int?, val tittel: String, val beskrivelse: String, val dato: LocalDateTime, //Krever en spesiallaget serialiserer i KotlinX - val arbeidsstatus: Int, + val arbeidsstatus: Int?, val haster: Boolean //val bilde: String, ) { diff --git a/backend/src/main/kotlin/no/nav/helse/sprik/plugins/Routing.kt b/backend/src/main/kotlin/no/nav/helse/sprik/plugins/Routing.kt index e9fdc4d..a9be1d0 100644 --- a/backend/src/main/kotlin/no/nav/helse/sprik/plugins/Routing.kt +++ b/backend/src/main/kotlin/no/nav/helse/sprik/plugins/Routing.kt @@ -23,6 +23,7 @@ fun configureRouting(): ApplicationEngine = embeddedServer(CIO, applicationEngin anyHost() allowMethod(HttpMethod.Get) allowMethod(HttpMethod.Post) + allowMethod(HttpMethod.Put) allowNonSimpleContentTypes = true } install(ContentNegotiation) { @@ -61,6 +62,11 @@ fun configureRouting(): ApplicationEngine = embeddedServer(CIO, applicationEngin val sokeresultat = feilmeldingRepository.hentSokteFeilmeldinger(sokestreng) call.respond(status = HttpStatusCode.Created, message = sokeresultat) } + put("/api/oppdaterfeil/{id}") { + val id = call.parameters["id"] + val oppdatertFeilmelding = call.receive() + + } } } connector { diff --git a/backend/src/test/kotlin/LocalApp.kt b/backend/src/test/kotlin/LocalApp.kt index b3c8999..c8b3c1c 100644 --- a/backend/src/test/kotlin/LocalApp.kt +++ b/backend/src/test/kotlin/LocalApp.kt @@ -22,10 +22,10 @@ fun main() { private fun oppretteMockData() { val feilmeldingRepository = FeilmeldingRepository() - feilmeldingRepository.lagre(Feilmelding("Mangel på hensyn til tariffoppgjør", "Det har vært ett tariffoppgjør og speil sier sykepengene må tilbakekreves, noe som er feil. (sier vi.. har ikke domenekunnskap)", LocalDateTime.of(2023, 1, 1, 8, 0, 0), 0, false)) - feilmeldingRepository.lagre(Feilmelding("Speil sier NAV må tilbakekreve sykepenger på feil grunnlag", "Beskrivelse Test2", LocalDateTime.of(2023, 2, 1, 8, 0, 0), 1, true)) - feilmeldingRepository.lagre(Feilmelding("Feil A", "Lorem Ipsum", LocalDateTime.of(2023, 3, 1, 8, 0, 0), 2, false)) - feilmeldingRepository.lagre(Feilmelding("Feil B", "Lorem Ipsum", LocalDateTime.of(2023, 4, 1, 8, 0, 0), 1, true)) - feilmeldingRepository.lagre(Feilmelding("Feil C", "Lorem Ipsum", LocalDateTime.of(2023, 5, 1, 8, 0, 0), 1, true)) - feilmeldingRepository.lagre(Feilmelding("Feil D", "Lorem Ipsum", LocalDateTime.of(2023, 6, 1, 8, 0, 0), 0, false)) + feilmeldingRepository.lagre(Feilmelding(null, "Mangel på hensyn til tariffoppgjør", "Det har vært ett tariffoppgjør og speil sier sykepengene må tilbakekreves, noe som er feil. (sier vi.. har ikke domenekunnskap)", LocalDateTime.of(2023, 1, 1, 8, 0, 0), 0, false)) + feilmeldingRepository.lagre(Feilmelding(null, "Speil sier NAV må tilbakekreve sykepenger på feil grunnlag", "Beskrivelse Test2", LocalDateTime.of(2023, 2, 1, 8, 0, 0), 1, true)) + feilmeldingRepository.lagre(Feilmelding(null, "Feil A", "Lorem Ipsum", LocalDateTime.of(2023, 3, 1, 8, 0, 0), 2, false)) + feilmeldingRepository.lagre(Feilmelding(null, "Feil B", "Lorem Ipsum", LocalDateTime.of(2023, 4, 1, 8, 0, 0), 1, true)) + feilmeldingRepository.lagre(Feilmelding(null, "Feil C", "Lorem Ipsum", LocalDateTime.of(2023, 5, 1, 8, 0, 0), 1, true)) + feilmeldingRepository.lagre(Feilmelding(null, "Feil D", "Lorem Ipsum", LocalDateTime.of(2023, 6, 1, 8, 0, 0), 0, false)) } diff --git a/backend/src/test/kotlin/no/nav/helse/sprik/FeilmeldingTest.kt b/backend/src/test/kotlin/no/nav/helse/sprik/FeilmeldingTest.kt index c1ed9b1..2289b06 100644 --- a/backend/src/test/kotlin/no/nav/helse/sprik/FeilmeldingTest.kt +++ b/backend/src/test/kotlin/no/nav/helse/sprik/FeilmeldingTest.kt @@ -21,8 +21,8 @@ import org.jetbrains.exposed.sql.Database as ExposedDatabase class FeilmeldingTest { private val database = Database(dbconfig()).configureFlyway() private val feilmeldingRepository = FeilmeldingRepository() - private val feilmelding = Feilmelding("Test", "Testesen", LocalDateTime.of(2023,1,1,8,0), 0, true) - private val feilmelding2 = Feilmelding("Tittel", "Beskrivelse", LocalDateTime.of(2023,2,1,8,0), 1, false) + private val feilmelding = Feilmelding(1, "Test", "Testesen", LocalDateTime.of(2023,1,1,8,0), 0, true) + private val feilmelding2 = Feilmelding(2, "Tittel", "Beskrivelse", LocalDateTime.of(2023,2,1,8,0), 1, false) @BeforeAll fun setup() { @@ -101,4 +101,9 @@ class FeilmeldingTest { assertEquals("Test", sokeresultat[0].tittel) assertEquals("Testesen", sokeresultat[0].beskrivelse) } + + @Test + fun `Oppdaterer en feilmelding`() { + + } } \ No newline at end of file diff --git a/frontend/src/pages/feil.tsx b/frontend/src/pages/feil.tsx index ac0de6d..550b44d 100644 --- a/frontend/src/pages/feil.tsx +++ b/frontend/src/pages/feil.tsx @@ -12,6 +12,7 @@ export default function Feil() { const [tittel, setTittel] = useState(""); const [beskrivelse, setBeskrivelse] = useState(""); const [status, setStatus] = useState(0) + //const [haster, setHaster] = useState(false) const handleSubmit = () => { From 2017f1bcfb63bb36cad5b2caa67812e2c6871eaf Mon Sep 17 00:00:00 2001 From: Sindre Kjelsrud Date: Tue, 1 Aug 2023 14:55:45 +0200 Subject: [PATCH 20/67] =?UTF-8?q?=F0=9F=90=9B=20Fikset=20henting=20av=20ar?= =?UTF-8?q?beidsstatus=20og=20haster=20fra=20db?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Markus A. R. Johansen --- .../main/kotlin/no/nav/helse/sprik/db/FeilmeldingRepository.kt | 2 ++ .../src/main/kotlin/no/nav/helse/sprik/modell/Feilmelding.kt | 2 +- backend/src/main/kotlin/no/nav/helse/sprik/plugins/Routing.kt | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/backend/src/main/kotlin/no/nav/helse/sprik/db/FeilmeldingRepository.kt b/backend/src/main/kotlin/no/nav/helse/sprik/db/FeilmeldingRepository.kt index 1818dcc..d2cf565 100644 --- a/backend/src/main/kotlin/no/nav/helse/sprik/db/FeilmeldingRepository.kt +++ b/backend/src/main/kotlin/no/nav/helse/sprik/db/FeilmeldingRepository.kt @@ -21,6 +21,8 @@ class FeilmeldingRepository { it[FeilmeldingTable.tittel] = feilmelding.tittel it[FeilmeldingTable.beskrivelse] = feilmelding.beskrivelse it[FeilmeldingTable.dato] = feilmelding.dato + it[FeilmeldingTable.arbeidsstatus] = feilmelding.arbeidsstatus + it[FeilmeldingTable.haster] = feilmelding.haster } } } diff --git a/backend/src/main/kotlin/no/nav/helse/sprik/modell/Feilmelding.kt b/backend/src/main/kotlin/no/nav/helse/sprik/modell/Feilmelding.kt index 0e8c01c..82b14b4 100644 --- a/backend/src/main/kotlin/no/nav/helse/sprik/modell/Feilmelding.kt +++ b/backend/src/main/kotlin/no/nav/helse/sprik/modell/Feilmelding.kt @@ -18,7 +18,7 @@ class Feilmelding( val tittel: String, val beskrivelse: String, val dato: LocalDateTime, //Krever en spesiallaget serialiserer i KotlinX - val arbeidsstatus: Int?, + val arbeidsstatus: Int, val haster: Boolean //val bilde: String, ) { diff --git a/backend/src/main/kotlin/no/nav/helse/sprik/plugins/Routing.kt b/backend/src/main/kotlin/no/nav/helse/sprik/plugins/Routing.kt index a9be1d0..99e77a4 100644 --- a/backend/src/main/kotlin/no/nav/helse/sprik/plugins/Routing.kt +++ b/backend/src/main/kotlin/no/nav/helse/sprik/plugins/Routing.kt @@ -65,7 +65,7 @@ fun configureRouting(): ApplicationEngine = embeddedServer(CIO, applicationEngin put("/api/oppdaterfeil/{id}") { val id = call.parameters["id"] val oppdatertFeilmelding = call.receive() - + call.respond(status = HttpStatusCode.Created, message = "Feilmelding oppdatert") } } } From 976d69c134e81724a7e7fb8d5cbb5e4304cc81d1 Mon Sep 17 00:00:00 2001 From: Amalie <99425692+amalieem@users.noreply.github.com> Date: Tue, 1 Aug 2023 15:37:49 +0200 Subject: [PATCH 21/67] Merge oppdaterer-backend til main (#21) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 🚧 Påbegynt oppdater feilmeldinger * ✨ Kan oppdatere en feilmelding * ✏️ Magisk fjerna felter fikset * ✏️ Fiksa manglende curly og ubrukte imports --- .../helse/sprik/db/FeilmeldingRepository.kt | 28 ++++++++++--------- .../no/nav/helse/sprik/plugins/Routing.kt | 1 + .../no/nav/helse/sprik/FeilmeldingTest.kt | 14 ++++++++-- 3 files changed, 28 insertions(+), 15 deletions(-) diff --git a/backend/src/main/kotlin/no/nav/helse/sprik/db/FeilmeldingRepository.kt b/backend/src/main/kotlin/no/nav/helse/sprik/db/FeilmeldingRepository.kt index d2cf565..f05c4e3 100644 --- a/backend/src/main/kotlin/no/nav/helse/sprik/db/FeilmeldingRepository.kt +++ b/backend/src/main/kotlin/no/nav/helse/sprik/db/FeilmeldingRepository.kt @@ -1,6 +1,5 @@ package no.nav.helse.sprik.db -import com.typesafe.config.ConfigException.Null import no.nav.helse.sprik.db.FeilmeldingTable.arbeidsstatus import no.nav.helse.sprik.db.FeilmeldingTable.beskrivelse import no.nav.helse.sprik.db.FeilmeldingTable.dato @@ -11,7 +10,6 @@ import no.nav.helse.sprik.modell.Feilmelding import org.jetbrains.exposed.sql.* import org.jetbrains.exposed.sql.SqlExpressionBuilder.like import org.jetbrains.exposed.sql.transactions.transaction -import java.time.LocalDateTime class FeilmeldingRepository { fun lagre(feilmelding: Feilmelding) { @@ -44,18 +42,22 @@ class FeilmeldingRepository { fun hentSokteFeilmeldinger(sokeord: String): List = transaction { val sok = "%${sokeord.lowercase()}%" - FeilmeldingTable.select((FeilmeldingTable.tittel.lowerCase() like sok) - or (FeilmeldingTable.beskrivelse.lowerCase() like sok)) - .map(::radTilFeilmelding) - + FeilmeldingTable.select( + (FeilmeldingTable.tittel.lowerCase() like sok) + or (FeilmeldingTable.beskrivelse.lowerCase() like sok) + ) + .map(::radTilFeilmelding) } - fun hentFeilmelding(id: String) = transaction { - TODO() - FeilmeldingTable.id - } - - fun oppdaterFeilmelding(id: String): Nothing = transaction { - TODO() + fun oppdaterFeilmelding(feilmelding: Feilmelding) = transaction { + val id = feilmelding.id + if (id != null) { + FeilmeldingTable.update({ FeilmeldingTable.id eq id }) { + it[FeilmeldingTable.tittel] = feilmelding.tittel + it[FeilmeldingTable.beskrivelse] = feilmelding.beskrivelse + it[FeilmeldingTable.arbeidsstatus] = feilmelding.arbeidsstatus + it[FeilmeldingTable.haster] = feilmelding.haster + } + } } } diff --git a/backend/src/main/kotlin/no/nav/helse/sprik/plugins/Routing.kt b/backend/src/main/kotlin/no/nav/helse/sprik/plugins/Routing.kt index 99e77a4..f2b9514 100644 --- a/backend/src/main/kotlin/no/nav/helse/sprik/plugins/Routing.kt +++ b/backend/src/main/kotlin/no/nav/helse/sprik/plugins/Routing.kt @@ -69,6 +69,7 @@ fun configureRouting(): ApplicationEngine = embeddedServer(CIO, applicationEngin } } } + connector { port = 8080 } diff --git a/backend/src/test/kotlin/no/nav/helse/sprik/FeilmeldingTest.kt b/backend/src/test/kotlin/no/nav/helse/sprik/FeilmeldingTest.kt index 2289b06..622c358 100644 --- a/backend/src/test/kotlin/no/nav/helse/sprik/FeilmeldingTest.kt +++ b/backend/src/test/kotlin/no/nav/helse/sprik/FeilmeldingTest.kt @@ -15,6 +15,7 @@ import org.junit.jupiter.api.Test import org.junit.jupiter.api.TestInstance import java.time.LocalDateTime import kotlin.test.assertEquals +import kotlin.test.assertFalse import org.jetbrains.exposed.sql.Database as ExposedDatabase @TestInstance(TestInstance.Lifecycle.PER_CLASS) @@ -22,7 +23,8 @@ class FeilmeldingTest { private val database = Database(dbconfig()).configureFlyway() private val feilmeldingRepository = FeilmeldingRepository() private val feilmelding = Feilmelding(1, "Test", "Testesen", LocalDateTime.of(2023,1,1,8,0), 0, true) - private val feilmelding2 = Feilmelding(2, "Tittel", "Beskrivelse", LocalDateTime.of(2023,2,1,8,0), 1, false) + // private val feilmelding2 = Feilmelding(2, "Tittel", "Beskrivelse", LocalDateTime.of(2023,2,1,8,0), 1, false) + @BeforeAll fun setup() { @@ -104,6 +106,14 @@ class FeilmeldingTest { @Test fun `Oppdaterer en feilmelding`() { - + val oppdatertFeilmelding = Feilmelding(1, "Oppdatert", "Oppdatert feil", LocalDateTime.of(2023,1,1,8,0), 1, false) + feilmeldingRepository.oppdaterFeilmelding(oppdatertFeilmelding) + transaction { + val actual = FeilmeldingTable.selectAll().single() + assertEquals("Oppdatert", actual[FeilmeldingTable.tittel]) + assertEquals("Oppdatert feil", actual[FeilmeldingTable.beskrivelse]) + assertFalse ( actual[FeilmeldingTable.haster] ) + assertEquals(1, actual[FeilmeldingTable.arbeidsstatus]) + } } } \ No newline at end of file From 54769e742510128ab59262d7a10bffed2cd9f6bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Amalie=20Mans=C3=A5ker?= Date: Tue, 1 Aug 2023 15:50:48 +0200 Subject: [PATCH 22/67] =?UTF-8?q?=F0=9F=90=9B=20Fikser=20manglende=20id-fe?= =?UTF-8?q?lt=20for=20=C3=A5=20poste=20feilmeldinger?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/pages/feil.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/src/pages/feil.tsx b/frontend/src/pages/feil.tsx index 550b44d..803374c 100644 --- a/frontend/src/pages/feil.tsx +++ b/frontend/src/pages/feil.tsx @@ -17,6 +17,7 @@ export default function Feil() { const handleSubmit = () => { const payload = { + id: null, tittel: tittel, beskrivelse: beskrivelse, dato: new Date().toISOString().replace('Z', ''), // Litt wack fix, burde endres From 72a5ae3ae80f078818cf6850ef21a51184677f3e Mon Sep 17 00:00:00 2001 From: Markus Johansen Date: Tue, 1 Aug 2023 16:33:21 +0200 Subject: [PATCH 23/67] =?UTF-8?q?=F0=9F=9A=91=20Kommenterte=20ut=20feilend?= =?UTF-8?q?e=20test=20for=20=C3=A5=20sikre=20build=20p=C3=A5=20main=20bran?= =?UTF-8?q?ch?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kotlin/no/nav/helse/sprik/FeilmeldingTest.kt | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/backend/src/test/kotlin/no/nav/helse/sprik/FeilmeldingTest.kt b/backend/src/test/kotlin/no/nav/helse/sprik/FeilmeldingTest.kt index 622c358..8dc4226 100644 --- a/backend/src/test/kotlin/no/nav/helse/sprik/FeilmeldingTest.kt +++ b/backend/src/test/kotlin/no/nav/helse/sprik/FeilmeldingTest.kt @@ -103,17 +103,16 @@ class FeilmeldingTest { assertEquals("Test", sokeresultat[0].tittel) assertEquals("Testesen", sokeresultat[0].beskrivelse) } - +/** @Test fun `Oppdaterer en feilmelding`() { val oppdatertFeilmelding = Feilmelding(1, "Oppdatert", "Oppdatert feil", LocalDateTime.of(2023,1,1,8,0), 1, false) feilmeldingRepository.oppdaterFeilmelding(oppdatertFeilmelding) - transaction { - val actual = FeilmeldingTable.selectAll().single() - assertEquals("Oppdatert", actual[FeilmeldingTable.tittel]) - assertEquals("Oppdatert feil", actual[FeilmeldingTable.beskrivelse]) - assertFalse ( actual[FeilmeldingTable.haster] ) - assertEquals(1, actual[FeilmeldingTable.arbeidsstatus]) - } + val actual = transaction { FeilmeldingTable.selectAll().single()} + assertEquals("Oppdatert", actual[FeilmeldingTable.tittel]) + assertEquals("Oppdatert feil", actual[FeilmeldingTable.beskrivelse]) + assertFalse ( actual[FeilmeldingTable.haster] ) + assertEquals(1, actual[FeilmeldingTable.arbeidsstatus]) } + */ } \ No newline at end of file From 2ee15beae5b8bc918d145887fdd6963e0f035e59 Mon Sep 17 00:00:00 2001 From: "Markus A. R. Johansen" <90006516+J0hans1@users.noreply.github.com> Date: Wed, 2 Aug 2023 09:03:08 +0200 Subject: [PATCH 24/67] =?UTF-8?q?=F0=9F=92=84=20La=20til=20Helmet=20for=20?= =?UTF-8?q?applikasjonen=20v=C3=A5r=20(#22)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/index.html | 4 ++-- frontend/public/Rød.svg | 26 ++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) create mode 100755 frontend/public/Rød.svg diff --git a/frontend/index.html b/frontend/index.html index e0d1c84..4c5b1ed 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -2,9 +2,9 @@ - + - Vite + React + TS + Sprik
diff --git a/frontend/public/Rød.svg b/frontend/public/Rød.svg new file mode 100755 index 0000000..8284c4c --- /dev/null +++ b/frontend/public/Rød.svg @@ -0,0 +1,26 @@ + + + + NAV logo / rød + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From d49bab9ec89e5ecfe5438c9c391142f36c3bc473 Mon Sep 17 00:00:00 2001 From: Markus Johansen Date: Wed, 2 Aug 2023 09:41:41 +0200 Subject: [PATCH 25/67] =?UTF-8?q?=F0=9F=8E=A8=20Fornorsket=20komponentnavn?= =?UTF-8?q?=20og=20flyttet=20komponenter=20i=20egne=20fielr?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/{FeilCard.tsx => FeilKort.tsx} | 72 ++----------------- frontend/src/components/FeilkortHeader.tsx | 27 +++++++ .../{CardsContainer.tsx => KortKonteiner.tsx} | 8 +-- frontend/src/components/TagBar.tsx | 41 +++++++++++ frontend/src/index.tsx | 4 +- 5 files changed, 78 insertions(+), 74 deletions(-) rename frontend/src/components/{FeilCard.tsx => FeilKort.tsx} (73%) create mode 100644 frontend/src/components/FeilkortHeader.tsx rename frontend/src/components/{CardsContainer.tsx => KortKonteiner.tsx} (82%) create mode 100644 frontend/src/components/TagBar.tsx diff --git a/frontend/src/components/FeilCard.tsx b/frontend/src/components/FeilKort.tsx similarity index 73% rename from frontend/src/components/FeilCard.tsx rename to frontend/src/components/FeilKort.tsx index b05b392..fce6db4 100644 --- a/frontend/src/components/FeilCard.tsx +++ b/frontend/src/components/FeilKort.tsx @@ -1,10 +1,11 @@ import "@navikt/ds-css"; -import { Button, Heading, Modal, Radio, RadioGroup, Tag, TextField, Textarea } from "@navikt/ds-react"; +import { Button, Modal, Radio, RadioGroup, TextField, Textarea } from "@navikt/ds-react"; import { Feilmelding, IFeilmelding } from "../interface"; import FeilModal from "./FeilModal"; import { useEffect, useState } from "react"; import { FloppydiskIcon, PencilIcon, XMarkIcon } from "@navikt/aksel-icons"; import axios from "axios"; +import FeilkortHeader from "./FeilkortHeader"; /** * En konteiner som inneholder all informasjon og funksjonalitet for å vise og interagere med en feilmelding. @@ -18,7 +19,7 @@ interface IFeilKort extends IFeilmelding { } -export const FeilKort = (props: IFeilKort) => { + const FeilKort = (props: IFeilKort) => { const [visModal, setVisModal] = useState(false) const [redigeringsmodus, setRedigeringsmodus] = useState(false) const [tittel, setTittel] = useState(props.tittel) @@ -166,69 +167,4 @@ export const FeilKort = (props: IFeilKort) => { ) } - -/** - * FeilkortHeader er komponent som beskriver ikke-sensitiv informasjon om feilmeldingen og vises for alle på forsiden. - * FeilkortHeaderen er en del av FeilKort-komponenten og FullvisningsKort-komponenten. - * Midlertidig implementerer komponentet @requires IFeilmelding for props, men dette må endres når IFeilmelding utvides i fremtiden for støtte av flere typer feilmeldinger. - * @param tittel - * @param beskrivelse - * @param haster - * @param dato - * @returns JSX komponent som skal vise nødvendig informasjon for å forstå en feil. - */ -export const FeilkortHeader = (props: IFeilmelding) => { - return( -
-
- {props.tittel} -

{props.dato.toDateString()}

-

{props.beskrivelse}

-
- -
- ) -} - - -interface TagBarInterface { - haster: boolean - arbeidsstatus: number -} -/** - * Komponentet er en bar (vanrett linje) som inneholder to statusflagg: "arbeidsstatus" og "Haster". - * Komponentet er en del av FeilKortHeader - * @param haster er en boolean som beskriver om feilen haster eller ikke. - * @param arbeidsstatus - */ -const TagBar = (props: TagBarInterface) => { - - /** - * Funksjonen tar inn - * @param arbeidsstatus - * @returns - */ - const toggleArbeidsstatus = (arbeidsstatus: number) => { - switch (arbeidsstatus) { - case 0: - return Ikke påbegynt; - case 1: - return Feilen jobbes med; - case 2: - return Feilen er fikset; - default: - throw new Error("Ikke gyldig arbeidsstatus-kode. Koden må være 0, 1 eller 2"); - - } - } - - return ( -
- {toggleArbeidsstatus(props.arbeidsstatus)} - {props.haster ? Haster : <>} -
- ) -} - - - +export default FeilKort \ No newline at end of file diff --git a/frontend/src/components/FeilkortHeader.tsx b/frontend/src/components/FeilkortHeader.tsx new file mode 100644 index 0000000..de3dd9c --- /dev/null +++ b/frontend/src/components/FeilkortHeader.tsx @@ -0,0 +1,27 @@ +import { Heading } from "@navikt/ds-react"; +import { IFeilmelding } from "../interface"; +import TagBar from "./TagBar"; + +/** + * FeilkortHeader er komponent som beskriver ikke-sensitiv informasjon om feilmeldingen og vises for alle på forsiden. + * FeilkortHeaderen er en del av FeilKort-komponenten og FullvisningsKort-komponenten. + * Midlertidig implementerer komponentet @requires IFeilmelding for props, men dette må endres når IFeilmelding utvides i fremtiden for støtte av flere typer feilmeldinger. + * @param tittel + * @param beskrivelse + * @param haster + * @param dato + * @returns JSX komponent som skal vise nødvendig informasjon for å forstå en feil. + */ +export const FeilkortHeader = (props: IFeilmelding) => { + return( +
+
+ {props.tittel} +

{props.dato.toDateString()}

+

{props.beskrivelse}

+
+ +
+ ) +} +export default FeilkortHeader; \ No newline at end of file diff --git a/frontend/src/components/CardsContainer.tsx b/frontend/src/components/KortKonteiner.tsx similarity index 82% rename from frontend/src/components/CardsContainer.tsx rename to frontend/src/components/KortKonteiner.tsx index 5cf2400..51c63e8 100644 --- a/frontend/src/components/CardsContainer.tsx +++ b/frontend/src/components/KortKonteiner.tsx @@ -1,7 +1,7 @@ -import { FeilKort } from "./FeilCard"; +import FeilKort from "./FeilKort.tsx"; import { Feilmelding } from "../interface.ts"; -interface ICardsContainer { +interface IKortKonteiner { feilmeldinger: Feilmelding[] } @@ -9,7 +9,7 @@ interface ICardsContainer { * Komponent som laster inn feilmeldinger i kort fra database. * @returns grid med feilmeldinger */ -const CardsContainer = (props: ICardsContainer) => { +const KortKonteiner = (props: IKortKonteiner) => { return (
@@ -29,4 +29,4 @@ const CardsContainer = (props: ICardsContainer) => { ); }; -export default CardsContainer; \ No newline at end of file +export default KortKonteiner; \ No newline at end of file diff --git a/frontend/src/components/TagBar.tsx b/frontend/src/components/TagBar.tsx new file mode 100644 index 0000000..45c2ca4 --- /dev/null +++ b/frontend/src/components/TagBar.tsx @@ -0,0 +1,41 @@ +import { Tag } from "@navikt/ds-react"; + +interface TagBarInterface { + haster: boolean + arbeidsstatus: number +} +/** + * Komponentet er en bar (vanrett linje) som inneholder to statusflagg: "arbeidsstatus" og "Haster". + * Komponentet er en del av FeilKortHeader + * @param haster er en boolean som beskriver om feilen haster eller ikke. + * @param arbeidsstatus + */ +const TagBar = (props: TagBarInterface) => { + + /** + * Funksjonen tar inn + * @param arbeidsstatus + * @returns + */ + const toggleArbeidsstatus = (arbeidsstatus: number) => { + switch (arbeidsstatus) { + case 0: + return Ikke påbegynt; + case 1: + return Feilen jobbes med; + case 2: + return Feilen er fikset; + default: + throw new Error("Ikke gyldig arbeidsstatus-kode. Koden må være 0, 1 eller 2"); + + } + } + + return ( +
+ {toggleArbeidsstatus(props.arbeidsstatus)} + {props.haster ? Haster : <>} +
+ ) +} +export default TagBar; \ No newline at end of file diff --git a/frontend/src/index.tsx b/frontend/src/index.tsx index 54f2514..c4f94bd 100644 --- a/frontend/src/index.tsx +++ b/frontend/src/index.tsx @@ -1,4 +1,4 @@ -import CardsContainer from "./components/CardsContainer"; +import KortKonteiner from "./components/KortKonteiner"; import "@navikt/ds-css"; import { Button, Search } from "@navikt/ds-react"; import Header from "./components/Header"; @@ -69,7 +69,7 @@ export default function Home() { Meld inn feil
- +
From 81b11d1c252ea5ee77ad2261f666da73252f6f78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Amalie=20Mans=C3=A5ker?= Date: Wed, 2 Aug 2023 09:44:50 +0200 Subject: [PATCH 26/67] =?UTF-8?q?=E2=9C=85=20Test=20er=20n=C3=A5=20ikke=20?= =?UTF-8?q?avhengig=20av=20hardkodet=20id?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../no/nav/helse/sprik/FeilmeldingTest.kt | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/backend/src/test/kotlin/no/nav/helse/sprik/FeilmeldingTest.kt b/backend/src/test/kotlin/no/nav/helse/sprik/FeilmeldingTest.kt index 8dc4226..133d7e3 100644 --- a/backend/src/test/kotlin/no/nav/helse/sprik/FeilmeldingTest.kt +++ b/backend/src/test/kotlin/no/nav/helse/sprik/FeilmeldingTest.kt @@ -22,18 +22,19 @@ import org.jetbrains.exposed.sql.Database as ExposedDatabase class FeilmeldingTest { private val database = Database(dbconfig()).configureFlyway() private val feilmeldingRepository = FeilmeldingRepository() - private val feilmelding = Feilmelding(1, "Test", "Testesen", LocalDateTime.of(2023,1,1,8,0), 0, true) - // private val feilmelding2 = Feilmelding(2, "Tittel", "Beskrivelse", LocalDateTime.of(2023,2,1,8,0), 1, false) + fun getId() = transaction { + FeilmeldingTable.selectAll().single()[FeilmeldingTable.id] + } @BeforeAll fun setup() { ExposedDatabase.connect(database.dataSource) - } @BeforeEach fun lagreFeilmelding() { + val feilmelding = Feilmelding(null, "Test", "Testesen", LocalDateTime.of(2023,1,1,8,0), 0, true) feilmeldingRepository.lagre(feilmelding) } @@ -43,6 +44,8 @@ class FeilmeldingTest { FeilmeldingTable.deleteAll() } } + + @Test fun `Sett opp testdatabasen riktig`(){ transaction { @@ -59,6 +62,7 @@ class FeilmeldingTest { assertEquals("Test", actual[FeilmeldingTable.tittel]) assertEquals("Testesen", actual[FeilmeldingTable.beskrivelse]) assertEquals(LocalDateTime.of(2023, 1, 1, 8, 0), actual[FeilmeldingTable.dato]) + assertEquals(1, actual[FeilmeldingTable.id]) } } @@ -103,16 +107,15 @@ class FeilmeldingTest { assertEquals("Test", sokeresultat[0].tittel) assertEquals("Testesen", sokeresultat[0].beskrivelse) } -/** @Test fun `Oppdaterer en feilmelding`() { - val oppdatertFeilmelding = Feilmelding(1, "Oppdatert", "Oppdatert feil", LocalDateTime.of(2023,1,1,8,0), 1, false) + val oppdatertFeilmelding = Feilmelding(getId(), "Oppdatert", "Oppdatert feil", LocalDateTime.of(2023, 1, 1, 8, 0), 1, false) feilmeldingRepository.oppdaterFeilmelding(oppdatertFeilmelding) - val actual = transaction { FeilmeldingTable.selectAll().single()} - assertEquals("Oppdatert", actual[FeilmeldingTable.tittel]) - assertEquals("Oppdatert feil", actual[FeilmeldingTable.beskrivelse]) - assertFalse ( actual[FeilmeldingTable.haster] ) - assertEquals(1, actual[FeilmeldingTable.arbeidsstatus]) + val actualOppdatert = transaction { FeilmeldingTable.selectAll().single() } + assertEquals("Oppdatert", actualOppdatert[FeilmeldingTable.tittel]) + assertEquals("Oppdatert feil", actualOppdatert[FeilmeldingTable.beskrivelse]) + assertFalse ( actualOppdatert[FeilmeldingTable.haster] ) + assertEquals(1, actualOppdatert[FeilmeldingTable.arbeidsstatus]) } - */ + } \ No newline at end of file From 2bdfe587a6a0daaadd9da85753ba6b528499ca30 Mon Sep 17 00:00:00 2001 From: Sindre Kjelsrud Date: Wed, 2 Aug 2023 10:01:22 +0200 Subject: [PATCH 27/67] =?UTF-8?q?=F0=9F=90=9B=20Fikser=20dato-serialiserin?= =?UTF-8?q?gs=20problem=20fra=20frontend?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Markus A. R. Johansen Co-authored-by: Amalie Erdal Mansåker --- frontend/src/components/FeilKort.tsx | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/frontend/src/components/FeilKort.tsx b/frontend/src/components/FeilKort.tsx index fce6db4..a2cffc6 100644 --- a/frontend/src/components/FeilKort.tsx +++ b/frontend/src/components/FeilKort.tsx @@ -27,7 +27,6 @@ interface IFeilKort extends IFeilmelding { const [arbeidsstatus, setArbeidsstatus] = useState(props.arbeidsstatus) const [haster, setHaster] = useState(props.haster) - useEffect(() => { Modal.setAppElement(document.getElementById('root')); }, []); @@ -35,18 +34,16 @@ interface IFeilKort extends IFeilmelding { const lagreEndringer = () => { setRedigeringsmodus(false) - const fields = { + const payload = { id: props.id, tittel: tittel, beskrivelse: beskrivelse, - dato: props.dato, + dato: props.dato.toISOString().replace('Z', ''), arbeidsstatus: arbeidsstatus, haster: haster } - const endretFeilmelding = new Feilmelding(fields) - - axios.put(`/api/oppdaterfeil/${props.id}`, endretFeilmelding, { + axios.put(`/api/oppdaterfeil/${props.id}`, payload, { headers: { 'Content-Type': 'application/json' } @@ -55,6 +52,8 @@ interface IFeilKort extends IFeilmelding { }).catch((error) => { console.log(error); }) + + } return( From 9528f6cfbffd2f14185e1117650dbb6b2321eb94 Mon Sep 17 00:00:00 2001 From: Markus Johansen Date: Wed, 2 Aug 2023 10:08:29 +0200 Subject: [PATCH 28/67] =?UTF-8?q?=F0=9F=90=9B=20Fjerner=20ubrukt=20import?= =?UTF-8?q?=20av=20Feilmeldingsklassen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/components/FeilKort.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/components/FeilKort.tsx b/frontend/src/components/FeilKort.tsx index a2cffc6..7842bf4 100644 --- a/frontend/src/components/FeilKort.tsx +++ b/frontend/src/components/FeilKort.tsx @@ -1,6 +1,6 @@ import "@navikt/ds-css"; import { Button, Modal, Radio, RadioGroup, TextField, Textarea } from "@navikt/ds-react"; -import { Feilmelding, IFeilmelding } from "../interface"; +import { IFeilmelding } from "../interface"; import FeilModal from "./FeilModal"; import { useEffect, useState } from "react"; import { FloppydiskIcon, PencilIcon, XMarkIcon } from "@navikt/aksel-icons"; From 8ec4ec32d57c2ad89286df1d8f6b4c3cdf45ba26 Mon Sep 17 00:00:00 2001 From: Sindre Kjelsrud Date: Wed, 2 Aug 2023 10:31:38 +0200 Subject: [PATCH 29/67] =?UTF-8?q?=E2=9C=A8=20Mulig=20=C3=A5=20legge=20til/?= =?UTF-8?q?oppdatere=20kommentarer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Amalie Erdal Mansåker --- .../no/nav/helse/sprik/db/FeilmeldingRepository.kt | 10 +++++++++- .../kotlin/no/nav/helse/sprik/db/FeilmeldingTable.kt | 1 + .../kotlin/no/nav/helse/sprik/modell/Feilmelding.kt | 3 ++- .../db/migration/V5__leggerTilKommentar.sql | 1 + backend/src/test/kotlin/LocalApp.kt | 12 ++++++------ .../kotlin/no/nav/helse/sprik/FeilmeldingTest.kt | 11 +++++++++-- 6 files changed, 28 insertions(+), 10 deletions(-) create mode 100644 backend/src/main/resources/db/migration/V5__leggerTilKommentar.sql diff --git a/backend/src/main/kotlin/no/nav/helse/sprik/db/FeilmeldingRepository.kt b/backend/src/main/kotlin/no/nav/helse/sprik/db/FeilmeldingRepository.kt index f05c4e3..466e12b 100644 --- a/backend/src/main/kotlin/no/nav/helse/sprik/db/FeilmeldingRepository.kt +++ b/backend/src/main/kotlin/no/nav/helse/sprik/db/FeilmeldingRepository.kt @@ -5,6 +5,7 @@ import no.nav.helse.sprik.db.FeilmeldingTable.beskrivelse import no.nav.helse.sprik.db.FeilmeldingTable.dato import no.nav.helse.sprik.db.FeilmeldingTable.haster import no.nav.helse.sprik.db.FeilmeldingTable.id +import no.nav.helse.sprik.db.FeilmeldingTable.kommentar import no.nav.helse.sprik.db.FeilmeldingTable.tittel import no.nav.helse.sprik.modell.Feilmelding import org.jetbrains.exposed.sql.* @@ -32,7 +33,8 @@ class FeilmeldingRepository { beskrivelse = rad[beskrivelse], dato = rad[dato], arbeidsstatus = rad[arbeidsstatus], - haster = rad[haster] + haster = rad[haster], + kommentar = rad[kommentar] ) fun hentAlleFeilmeldinger(): List = transaction { @@ -60,4 +62,10 @@ class FeilmeldingRepository { } } } + + fun oppdaterKommentar(id: Int, kommentar: String) = transaction { + FeilmeldingTable.update({ FeilmeldingTable.id eq id }) { + it[FeilmeldingTable.kommentar] = kommentar + } + } } diff --git a/backend/src/main/kotlin/no/nav/helse/sprik/db/FeilmeldingTable.kt b/backend/src/main/kotlin/no/nav/helse/sprik/db/FeilmeldingTable.kt index 34aacfb..49c5275 100644 --- a/backend/src/main/kotlin/no/nav/helse/sprik/db/FeilmeldingTable.kt +++ b/backend/src/main/kotlin/no/nav/helse/sprik/db/FeilmeldingTable.kt @@ -10,4 +10,5 @@ object FeilmeldingTable : Table("feilmelding") { val dato = datetime("dato") val arbeidsstatus = integer("arbeidsstatus") val haster = bool("haster") + val kommentar = text("kommentar") } \ No newline at end of file diff --git a/backend/src/main/kotlin/no/nav/helse/sprik/modell/Feilmelding.kt b/backend/src/main/kotlin/no/nav/helse/sprik/modell/Feilmelding.kt index 82b14b4..4c48212 100644 --- a/backend/src/main/kotlin/no/nav/helse/sprik/modell/Feilmelding.kt +++ b/backend/src/main/kotlin/no/nav/helse/sprik/modell/Feilmelding.kt @@ -19,7 +19,8 @@ class Feilmelding( val beskrivelse: String, val dato: LocalDateTime, //Krever en spesiallaget serialiserer i KotlinX val arbeidsstatus: Int, - val haster: Boolean + val haster: Boolean, + val kommentar: String? //val bilde: String, ) { override fun toString(): String { diff --git a/backend/src/main/resources/db/migration/V5__leggerTilKommentar.sql b/backend/src/main/resources/db/migration/V5__leggerTilKommentar.sql new file mode 100644 index 0000000..ea0e3d6 --- /dev/null +++ b/backend/src/main/resources/db/migration/V5__leggerTilKommentar.sql @@ -0,0 +1 @@ +ALTER TABLE feilmelding ADD kommentar VARCHAR \ No newline at end of file diff --git a/backend/src/test/kotlin/LocalApp.kt b/backend/src/test/kotlin/LocalApp.kt index c8b3c1c..8c31036 100644 --- a/backend/src/test/kotlin/LocalApp.kt +++ b/backend/src/test/kotlin/LocalApp.kt @@ -22,10 +22,10 @@ fun main() { private fun oppretteMockData() { val feilmeldingRepository = FeilmeldingRepository() - feilmeldingRepository.lagre(Feilmelding(null, "Mangel på hensyn til tariffoppgjør", "Det har vært ett tariffoppgjør og speil sier sykepengene må tilbakekreves, noe som er feil. (sier vi.. har ikke domenekunnskap)", LocalDateTime.of(2023, 1, 1, 8, 0, 0), 0, false)) - feilmeldingRepository.lagre(Feilmelding(null, "Speil sier NAV må tilbakekreve sykepenger på feil grunnlag", "Beskrivelse Test2", LocalDateTime.of(2023, 2, 1, 8, 0, 0), 1, true)) - feilmeldingRepository.lagre(Feilmelding(null, "Feil A", "Lorem Ipsum", LocalDateTime.of(2023, 3, 1, 8, 0, 0), 2, false)) - feilmeldingRepository.lagre(Feilmelding(null, "Feil B", "Lorem Ipsum", LocalDateTime.of(2023, 4, 1, 8, 0, 0), 1, true)) - feilmeldingRepository.lagre(Feilmelding(null, "Feil C", "Lorem Ipsum", LocalDateTime.of(2023, 5, 1, 8, 0, 0), 1, true)) - feilmeldingRepository.lagre(Feilmelding(null, "Feil D", "Lorem Ipsum", LocalDateTime.of(2023, 6, 1, 8, 0, 0), 0, false)) + feilmeldingRepository.lagre(Feilmelding(null, "Mangel på hensyn til tariffoppgjør", "Det har vært ett tariffoppgjør og speil sier sykepengene må tilbakekreves, noe som er feil. (sier vi.. har ikke domenekunnskap)", LocalDateTime.of(2023, 1, 1, 8, 0, 0), 0, false, null)) + feilmeldingRepository.lagre(Feilmelding(null, "Speil sier NAV må tilbakekreve sykepenger på feil grunnlag", "Beskrivelse Test2", LocalDateTime.of(2023, 2, 1, 8, 0, 0), 1, true, null)) + feilmeldingRepository.lagre(Feilmelding(null, "Feil A", "Lorem Ipsum", LocalDateTime.of(2023, 3, 1, 8, 0, 0), 2, false, null)) + feilmeldingRepository.lagre(Feilmelding(null, "Feil B", "Lorem Ipsum", LocalDateTime.of(2023, 4, 1, 8, 0, 0), 1, true, null)) + feilmeldingRepository.lagre(Feilmelding(null, "Feil C", "Lorem Ipsum", LocalDateTime.of(2023, 5, 1, 8, 0, 0), 1, true, null)) + feilmeldingRepository.lagre(Feilmelding(null, "Feil D", "Lorem Ipsum", LocalDateTime.of(2023, 6, 1, 8, 0, 0), 0, false, null)) } diff --git a/backend/src/test/kotlin/no/nav/helse/sprik/FeilmeldingTest.kt b/backend/src/test/kotlin/no/nav/helse/sprik/FeilmeldingTest.kt index 133d7e3..ef36d8c 100644 --- a/backend/src/test/kotlin/no/nav/helse/sprik/FeilmeldingTest.kt +++ b/backend/src/test/kotlin/no/nav/helse/sprik/FeilmeldingTest.kt @@ -34,7 +34,7 @@ class FeilmeldingTest { @BeforeEach fun lagreFeilmelding() { - val feilmelding = Feilmelding(null, "Test", "Testesen", LocalDateTime.of(2023,1,1,8,0), 0, true) + val feilmelding = Feilmelding(null, "Test", "Testesen", LocalDateTime.of(2023,1,1,8,0), 0, true, null) feilmeldingRepository.lagre(feilmelding) } @@ -109,7 +109,7 @@ class FeilmeldingTest { } @Test fun `Oppdaterer en feilmelding`() { - val oppdatertFeilmelding = Feilmelding(getId(), "Oppdatert", "Oppdatert feil", LocalDateTime.of(2023, 1, 1, 8, 0), 1, false) + val oppdatertFeilmelding = Feilmelding(getId(), "Oppdatert", "Oppdatert feil", LocalDateTime.of(2023, 1, 1, 8, 0), 1, false, null) feilmeldingRepository.oppdaterFeilmelding(oppdatertFeilmelding) val actualOppdatert = transaction { FeilmeldingTable.selectAll().single() } assertEquals("Oppdatert", actualOppdatert[FeilmeldingTable.tittel]) @@ -118,4 +118,11 @@ class FeilmeldingTest { assertEquals(1, actualOppdatert[FeilmeldingTable.arbeidsstatus]) } + @Test + fun `Oppdaterer feilmeldingskommentar`() { + feilmeldingRepository.oppdaterKommentar(getId(), "Feilen fikses nå!") + val actual = transaction { FeilmeldingTable.selectAll().single() } + assertEquals("Feilen fikses nå!", actual[FeilmeldingTable.kommentar]) + } + } \ No newline at end of file From 89954388b48ccba5e82256e0522877182546fabe Mon Sep 17 00:00:00 2001 From: "Markus A. R. Johansen" <90006516+J0hans1@users.noreply.github.com> Date: Wed, 2 Aug 2023 11:47:28 +0200 Subject: [PATCH 30/67] =?UTF-8?q?=F0=9F=8E=A8=20Dele=20opp=20feilkort=20(#?= =?UTF-8?q?23)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 🎨 Laget RedigeringsVerktøy komponent * 🎨 Laget Innholdskomponent --- frontend/src/components/FeilKort.tsx | 145 ++++-------------- .../src/components/FeilmeldingsInnhold.tsx | 48 ++++++ .../src/components/RedigeringsVerktoy.tsx | 92 +++++++++++ 3 files changed, 167 insertions(+), 118 deletions(-) create mode 100644 frontend/src/components/FeilmeldingsInnhold.tsx create mode 100644 frontend/src/components/RedigeringsVerktoy.tsx diff --git a/frontend/src/components/FeilKort.tsx b/frontend/src/components/FeilKort.tsx index 7842bf4..d54be61 100644 --- a/frontend/src/components/FeilKort.tsx +++ b/frontend/src/components/FeilKort.tsx @@ -1,11 +1,12 @@ import "@navikt/ds-css"; -import { Button, Modal, Radio, RadioGroup, TextField, Textarea } from "@navikt/ds-react"; -import { IFeilmelding } from "../interface"; +import { Button, Modal} from "@navikt/ds-react"; +import { Feilmelding, IFeilmelding } from "../interface"; import FeilModal from "./FeilModal"; import { useEffect, useState } from "react"; -import { FloppydiskIcon, PencilIcon, XMarkIcon } from "@navikt/aksel-icons"; -import axios from "axios"; +import { PencilIcon, XMarkIcon } from "@navikt/aksel-icons"; import FeilkortHeader from "./FeilkortHeader"; +import RedigeringsVerktoy from "./RedigeringsVerktoy"; +import FeilmeldingsInnhold from "./FeilmeldingsInnhold"; /** * En konteiner som inneholder all informasjon og funksjonalitet for å vise og interagere med en feilmelding. @@ -18,44 +19,14 @@ interface IFeilKort extends IFeilmelding { key: number } - - const FeilKort = (props: IFeilKort) => { +const FeilKort = (props: IFeilKort) => { const [visModal, setVisModal] = useState(false) const [redigeringsmodus, setRedigeringsmodus] = useState(false) - const [tittel, setTittel] = useState(props.tittel) - const [beskrivelse, setBeskrivelse] = useState(props.beskrivelse) - const [arbeidsstatus, setArbeidsstatus] = useState(props.arbeidsstatus) - const [haster, setHaster] = useState(props.haster) useEffect(() => { Modal.setAppElement(document.getElementById('root')); }, []); - const lagreEndringer = () => { - setRedigeringsmodus(false) - - const payload = { - id: props.id, - tittel: tittel, - beskrivelse: beskrivelse, - dato: props.dato.toISOString().replace('Z', ''), - arbeidsstatus: arbeidsstatus, - haster: haster - } - - axios.put(`/api/oppdaterfeil/${props.id}`, payload, { - headers: { - 'Content-Type': 'application/json' - } - }).then((response) => { - console.log(response); - }).catch((error) => { - console.log(error); - }) - - - } - return( <>
{redigeringsmodus ? - -
-
- setTittel(e.target.value)} - /> -