diff --git a/frontend/src/components/BildeOpplastning.tsx b/frontend/src/components/BildeOpplastning.tsx
index 345dfa3..b64121e 100644
--- a/frontend/src/components/BildeOpplastning.tsx
+++ b/frontend/src/components/BildeOpplastning.tsx
@@ -3,9 +3,9 @@ import { Button, Heading } from "@navikt/ds-react"
/**
- * Inkluderer en knapp for opplastning i finder/explorer.
- * Inkluderer et felt for drag and drop opplastning av bilder
- * @returns `Drag and drop` komponent for filopplastning av skjermbilder
+ * BildeOpplastningskomponentet brukes for å laste opp skjermbilder av en feil i Speil.
+ * Komponentet er ment for å støtte både drag-and-drop og vanlig opplasting av bilder.
+ * @TODO: Implementer funksjonalitet for å laste opp bildefiler -> API og backend
*/
const BildeOpplastning = () => {
return(
@@ -13,20 +13,16 @@ const BildeOpplastning = () => {
Skjermbilder
-
+
-
Dra og slipp skjermbilder her!
+
+ Dra og slipp skjermbilder her!
+
- }
- >
+ }>
Last opp skjermbilder
diff --git a/frontend/src/components/FeilKort.tsx b/frontend/src/components/FeilKort.tsx
index 5f900d6..c68b83c 100644
--- a/frontend/src/components/FeilKort.tsx
+++ b/frontend/src/components/FeilKort.tsx
@@ -7,36 +7,39 @@ 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.
- * @param tittel
- * @param beskrivelse
- * @param dato
- * @returns JSX komponent som beskriver innholdet i feilmeldinger.
- */
interface IFeilKort extends IFeilmelding {
- key: number
reset: () => void
}
+/**
+ * En konteiner som inneholder all informasjon og funksjonalitet for å vise og interagere med en feilmelding.
+ * Komponentet rendres på hovedsiden, og mappes ut fra en liste med feilmeldinger i KortKonteiner.
+ * Du kan trykke på en feilmelding for å åpne en modal som viser mer informasjon om feilmeldingen, samt mulighet for å redigere.
+ * @param id er feilmeldingens unike id
+ * @param tittel
+ * @param beskrivelse
+ * @param dato Dato for når feilen ble meldt inn
+ * @param haster Boolean som beskriver om feilen haster eller ikke.
+ * @param reset funksjon som kalles når en feilmelding endres. Denne funksjonen kalles for å oppdatere feilmeldingene som vises på hovedsiden.
+ */
const FeilKort = (props: IFeilKort) => {
const [visModal, setVisModal] = useState(false)
const [redigeringsmodus, setRedigeringsmodus] = useState(false)
-
+
useEffect(() => {
Modal.setAppElement(document.getElementById('root'));
}, []);
-
+
return(
<>
@@ -86,4 +86,4 @@ const FeilKort = (props: IFeilKort) => {
>
)
}
-export default FeilKort
\ No newline at end of file
+export default FeilKort
diff --git a/frontend/src/components/FeilModal.tsx b/frontend/src/components/FeilModal.tsx
index 89069c5..67e6b3b 100644
--- a/frontend/src/components/FeilModal.tsx
+++ b/frontend/src/components/FeilModal.tsx
@@ -8,6 +8,12 @@ interface modalInterface {
children: React.ReactNode
}
+/**
+ * Modal som brukes til å vise feilmeldinger i fullvisningsmodus med feilinnhold og redigeringsverktøy
+ * @param open boolean som beskriver om modalen skal være åpen eller ikke
+ * @param setOpen setter open
+ * @param children innholdet i modalen
+ */
const FeilModal = (props: modalInterface) => {
return(
{
return(
diff --git a/frontend/src/components/FeilmeldingsInnhold.tsx b/frontend/src/components/FeilmeldingsInnhold.tsx
index af57182..989300e 100644
--- a/frontend/src/components/FeilmeldingsInnhold.tsx
+++ b/frontend/src/components/FeilmeldingsInnhold.tsx
@@ -1,25 +1,31 @@
-import { ChatElipsisIcon, PencilIcon, XMarkIcon } from "@navikt/aksel-icons"
-import { Button, Heading, TextField } from "@navikt/ds-react"
+import { PencilIcon, XMarkIcon } from "@navikt/aksel-icons"
+import { Button } from "@navikt/ds-react"
import { FeilmeldingsInnholdInterface } from "../interface"
import FeilkortHeader from "./FeilkortHeader"
import { useState } from "react"
import Skillelinje from "./Skillelinje"
import axios from "axios"
+import { Kommentar, KommentarTekstfelt } from "./Kommentar"
+
+/**
+ * FeilmeldingsInnhold er et komponent som viser det fulle innholdet til en feilmelding.
+ * Komponentet er en del av FeilKort, og er det du kan se når du trykker på et Feilkort.
+ * Tilgangen til å vise FeilmeldingsInnhold er skal begrenses til saksbehandlere, utviklere og fagfolk med tjenestlig behov.
+ */
const FeilmeldingsInnhold = (props: FeilmeldingsInnholdInterface) => {
+ //kommentar kan være null eller undefined når den kommer fra databasen, derfor må den sjekkes og omgjøres til en tom string om det er tilfellet
const [kommentar, setKommentar] = useState(props.kommentar != (null || undefined) ? props.kommentar : "")
const [kommentarfelt, setKommentarfelt] = useState("")
+ /**
+ * Endrer Feilmeldingsobjektet i databasen og setter en ny kommentar på den
+ */
const oppdaterkommentar = async() => {
- console.log(kommentarfelt)
- console.log(kommentar);
-
-
const payload = {
id: props.id,
kommentar: kommentarfelt,
}
-
await axios.put("/api/oppdaterkommentar", payload, {
headers: {
'Content-Type': 'application/json'
@@ -29,7 +35,8 @@ const FeilmeldingsInnhold = (props: FeilmeldingsInnholdInterface) => {
}).catch((error) => {
console.log(error);
})
-
+ //TODO: fiks så kommentar oppdateres uten å måtte skjule modalen.
+ props.setVisModal(false)
props.reset()
}
@@ -84,50 +91,3 @@ const FeilmeldingsInnhold = (props: FeilmeldingsInnholdInterface) => {
)
}
export default FeilmeldingsInnhold;
-
-
-interface Ikommentar {
- setKommentarfelt: (val: string) => void
- oppdaterKommentar: () => void
-}
-
-interface kommentarTekstfeltInterface extends Ikommentar{
- kommentarfelt: string,
-}
-interface kommentarInterface {
- tekst: string
-}
-
-
-const KommentarTekstfelt = (props: kommentarTekstfeltInterface) => {
- return(
-
- >
- )
-}
\ No newline at end of file
diff --git a/frontend/src/components/Filtermeny.tsx b/frontend/src/components/Filtermeny.tsx
index 95b7e4a..a279fd9 100644
--- a/frontend/src/components/Filtermeny.tsx
+++ b/frontend/src/components/Filtermeny.tsx
@@ -1,14 +1,70 @@
import { Accordion, Checkbox, CheckboxGroup, Radio, RadioGroup } from "@navikt/ds-react"
-import { useState } from "react"
+import React, { useState } from "react"
+/**
+ * Filtermenyen er en komponent som inneholder alle filterene som kan brukes for å filtrere feil.
+ * Komponentet rendres på hovedsiden.
+ * Foreløpig holder den filter for kategorier, status, prioritet og mine innmeldinger.
+ */
const Filtermeny = () => {
+ const [visningstype, settVisningstype] = useState(false)
+ const [prioritet, settPrioritet] = useState(false)
+
return (
-
-
-
-
+
+
+
+
+
+
+ Velg alle
+ Ikke påbegynt
+ Jobbes med
+ Ferdig med
+
+
+
+
+ settPrioritet(nyPrioritet)}
+ >
+ Alle feil
+ Kun feil som haster
+
+
+
+
+ settVisningstype(nyVisningstype)}
+ >
+ Alle feil
+ Kun egne feil
+
+
)
@@ -16,99 +72,31 @@ const Filtermeny = () => {
export default Filtermeny
-const KategoriFilter = () => {
- return (
+/**
+ * Filtermodul utgjør en modul for de forskjellige filterene som kan brukes i Filtermenyen.
+ * Komponentet bygger på aksel sin Accordion komponent og enkelt elementer i denne.
+ * Komponentet kan derfor ikke brukes utenfor en Accordion.
+ * @param tittel Tittelen på filteret
+ * @param beskrivelse Beskrivelse av hvordan kan brukes
+ * @param children Innholdet i en Filtermodul, som er kontrollkomponenter for filteret
+ * @returns
+*/
+const FilterModul = (props: ItemInterface) => {
+ return(
- Kategori
+ {props.tittel}
-
- Denne løsningen er litt mer avansert enn den andre filtreringen. UFERDIG!!!!!!!!!!!
-
- Ved å filtrere etter status på forskjellig innmeldte feil
- kan du enkelt få oversikt over hvilke feil som ikke er påbegynte,
- hvilke som utredes av utviklingsteamet og løste feil.
-
- Saker som haster å løse kan merkes med et haster flagg.
- For å raskt finne ut av hvilke saker som må løses raskt,
- kan man velge å kun vise hastesaker.
-
+ )
+}
+
+/**
+ * Kommentar er en komponent som viser en kommentar til en feil.
+ * Komentaren kan beskrive konklusjonen til en feil, eller være en oppdatering på statusen til en feil.
+ * @param tekst
+ */
+export const Kommentar = (props: kommentarInterface) => {
+ return(
+ <>
+
+
+ Kommentar
+
{props.tekst}
+
+ >
+ )
+}
\ No newline at end of file
diff --git a/frontend/src/components/KortKonteiner.tsx b/frontend/src/components/KortKonteiner.tsx
index 7c2e583..9a34546 100644
--- a/frontend/src/components/KortKonteiner.tsx
+++ b/frontend/src/components/KortKonteiner.tsx
@@ -13,7 +13,6 @@ interface IKortKonteiner {
const KortKonteiner = (props: IKortKonteiner) => {
return (
-
{props.feilmeldinger.map((feilMelding) => (
void
}
+/**
+ * Redigeringsverktøy er et skjema som lar brukeren redigere en innmeldt feil.
+ * Statusflagg som arbeidsstatus og haster flagg kan endres.
+ * Tittel og beskrivelse kan også endres
+ */
const RedigeringsVerktoy = (props: redigeringsInterface) => {
const [tittel, setTittel] = useState(props.tittel)
const [beskrivelse, setBeskrivelse] = useState(props.beskrivelse)
const [arbeidsstatus, setArbeidsstatus] = useState(props.arbeidsstatus)
const [haster, setHaster] = useState(props.haster)
+
const lagreEndringer = async() => {
props.setVisModal(false)
props.setRedigeringsmodus(false)
@@ -45,11 +51,10 @@ const RedigeringsVerktoy = (props: redigeringsInterface) => {
return (
-
-
- Rediger feil
-
+
+ Rediger feil
+ {
return (
diff --git a/frontend/src/components/TagBar.tsx b/frontend/src/components/TagBar.tsx
index 45c2ca4..1807188 100644
--- a/frontend/src/components/TagBar.tsx
+++ b/frontend/src/components/TagBar.tsx
@@ -4,33 +4,31 @@ interface TagBarInterface {
haster: boolean
arbeidsstatus: number
}
+
+/**
+ * @param arbeidsstatus er en kode som beskriver om feilen er fikset, jobbes med eller ikke påbegynt. må være 0, 1 eller 2.
+ * @returns Tag komponent med riktig farge og tekst basert på arbeidsstatus-kode
+ */
+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");
+ }
+}
+
/**
* 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
+ * @param arbeidsstatus er en kode som beskriver om feilen er fikset, jobbes med eller ikke påbegynt. må være 0, 1 eller 2.
*/
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)}
diff --git a/frontend/src/index.tsx b/frontend/src/index.tsx
index 7181cfd..c13b070 100644
--- a/frontend/src/index.tsx
+++ b/frontend/src/index.tsx
@@ -9,37 +9,28 @@ import axios from "axios";
import { useEffect, useState } from "react";
import { Feilmelding } from "./interface";
+/**
+ * Hovedsiden til applikasjonen, viser alle innmeldte feil.
+ * Tilbyr søkefelt og filtreringsmuligheter
+ * Tilbyr også navigering til feilinnmeldingssiden
+ */
export default function Home() {
const navigate = useNavigate()
-
const [feilmeldinger, setFeilmeldinger] = useState([]);
- /**
- * Henter alle feilmeldinger fra backend.
- * Bruker endepunktet /api/hentallefeil.
- */
+
const hentAlleFeil = async () => {
- await axios.get("/api/hentallefeil")
- .then(data => data.data)
- .then(feil => {
- setFeilmeldinger(
- feil.map((jsonFeilmelding: any) => new Feilmelding(jsonFeilmelding))
- );
- })
+ const { data } = await axios.get("/api/hentallefeil")
+ setFeilmeldinger(data)
}
-
- // Sørger for at hentAlleFeil() kun kjører når komponentet laster inn
+
useEffect(() => {
hentAlleFeil();
}, [])
- /**
- * Oppdaterer viste feilmeldinger ved endring i søkefelt.
- * Kontakter endepunktet /api/hentsok/.
- * @param soketekst
- */
+
+ //oppdaterer visningen av feilmeldinger når søkefeltet endres
const handleSearch = async (soketekst: string) => {
- // Ved tomt søkefelt hentes alle feilmeldinger
if (soketekst === "") {
hentAlleFeil()
return
@@ -48,6 +39,7 @@ export default function Home() {
setFeilmeldinger(data)
}
+
return (
diff --git a/frontend/src/interface.ts b/frontend/src/interface.ts
index 67d1e78..3b19b97 100644
--- a/frontend/src/interface.ts
+++ b/frontend/src/interface.ts
@@ -1,8 +1,3 @@
-/**
- * I denne filen kan vi legge interfaces som skal brukes over flere steder!
- */
-
-
export interface IFeilmelding {
id: number,
tittel: string,
@@ -21,6 +16,10 @@ export interface FeilmeldingsInnholdInterface extends IFeilmelding {
reset: () => void
}
+/**
+ * En klasse som implementerer IFeilmelding interfacet.
+ * Brukes for å mappe JSON objekter til en klasse ved henting av data fra backend
+ */
export class Feilmelding implements IFeilmelding {
id: number = 0
tittel: string = "default tittel"
@@ -31,10 +30,6 @@ export class Feilmelding implements IFeilmelding {
kommentar?: string = undefined
aktorid?: number = undefined
- /**
- * Typescript 2.1 syntax som lar deg sende inn et JSON object og mappe det til class.
- * https://stackoverflow.com/questions/14142071/typescript-and-field-initializers
- */
public constructor(
fields: {
id: number
diff --git a/frontend/src/main.tsx b/frontend/src/main.tsx
index cb81e91..4d7f099 100644
--- a/frontend/src/main.tsx
+++ b/frontend/src/main.tsx
@@ -5,6 +5,7 @@ import './index.css'
import Home from './index'
import Feil from './pages/feil'
+
const router = createBrowserRouter([
{
path: "/",
diff --git a/frontend/src/pages/feil.tsx b/frontend/src/pages/feil.tsx
index 8a053f8..c195993 100644
--- a/frontend/src/pages/feil.tsx
+++ b/frontend/src/pages/feil.tsx
@@ -9,6 +9,9 @@ import Header from "../components/Header";
import { useNavigate } from "react-router-dom";
import Skillelinje from "../components/Skillelinje";
+/**
+ * Siden for å melde inn feil i speil.
+ */
export default function Feil() {
const [tittel, setTittel] = useState("");
const [beskrivelse, setBeskrivelse] = useState("");
@@ -16,20 +19,27 @@ export default function Feil() {
const [haster, setHaster] = useState(false)
const [valgteTags, setValgteTags] = useState([] as string[]);
const [aktorid, setAktorid] = useState(null);
+ const navigate = useNavigate()
+ const tags = [
+ "Utbetaling",
+ "Inntekt",
+ "Speil",
+ "Annet"
+ ];
- const handleSubmit = () => {
+ //Sender feil til databasen
+ const meldInnFeil = () => {
const payload = {
id: null,
tittel: tittel,
beskrivelse: beskrivelse,
- dato: new Date().toISOString().replace('Z', ''), // Litt wack fix, burde endres
+ dato: new Date().toISOString().replace('Z', ''),
arbeidsstatus: 0,
haster: haster,
kommentar: null,
aktorid: aktorid ? aktorid : null,
- //kategorier: valgteTags
+ //TODO: kategorier: valgteTags
}
-
axios.post("/api/nyfeil", payload, {
headers: {
'Content-Type': 'application/json'
@@ -41,6 +51,7 @@ export default function Feil() {
})
}
+ //Håndterer alerts som vises etter at feil er lagt til i databasen eller feiler i å bli lagt til
const handleAlerts = () => {
if (status === 201) {
console.log("Feil lagt til i database");
@@ -56,18 +67,6 @@ export default function Feil() {
}
}
- // TODO: clear data fra felter
-
-
- const navigate = useNavigate()
-
- const tags = [
- "Utbetaling",
- "Inntekt",
- "Speil",
- "Annet"
- ];
-
return (
@@ -147,7 +146,7 @@ export default function Feil() {