diff --git a/README.md b/README.md index ce42818..6efdbe3 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ Prosjektet er live på: [http://it2810-02.idi.ntnu.no/project1/](http://it2810-0 _Skriv en beskrivelse her_ ## Table of Contents + 1. [oppsett](#oppsett) 2. [vm](#vm) 3. [api](#api) @@ -20,6 +21,7 @@ _Skriv en beskrivelse her_ Vi bruker `fnm` med `pnpm`, og `Node.js` v24. Installasjon kan gjøres med følgende kommandoer (linux): + ```bash # Download and install fnm: curl -o- https://fnm.vercel.app/install | bash @@ -234,24 +236,26 @@ Viser ett enkelt filmkort med plakat, tittel, rating og skuespillere. Tar imot m Tar imot en liste med filmer (movies: Movie[]) og rendrer ett MovieCard per film med .map(). Den vet ingenting om TMDB eller fetching – det ansvaret ligger i hookene og i Section-komponenten (laster/feilhåndtering). Bygger plakat-URL fra TMDB sin poster_path, med fallback til tom streng hvis filmen mangler plakat. Regner om TMDB sin vote_average (0–10) til prosent (0–100). Layouten er et responsivt grid (repeat(auto-fill, minmax(320px, 1fr))) som går til én kolonne på mobil. ###### Sidebar.tsx + Sidebar.css + Dette kan også tenkes som venstremenyen på dekstop og den nedre menyen i på mobilview. Den rendrer søkefeltet øverst og deretter enten en utslåbar meny(desktop) eller en fast bunnlinje (mobil). Tar imot onSearch og searchValue for søkefeltet, samt view og onViewChange for å lese og endre hvilke visning appen står i nå. Komponenten eier en egen state, isOpen som styrer om undermenyen er slått ut. Alt det andre vil komme utenfra. HOME og pila er to separate knapper i samme rad. I CSS vil det være visuelt det samme da Det er bevisst da den ene vil bli brukt til navigasjon og den andre åpner og lukker. Tidigere hadde vi HOME, både som en navigasjons knapp og åpner. Dette førte til at den ikke kunne lukkes og var litt uintuitivt. Pilen som er brukt er tegnet i CSS, og roasjonen styres direkte av aria-expanded. Dette er smart fordi da vil skjermleseren og det visuelle ikke kunne komme ut av sync. Fordi knappen ikke har tekst i seg, har den aria-label som veksler mellom å vise og skjule undermenyen. -Menypunktene ligger i to arrays øvest i fula i stedet for i JSXen. Så nye punkter kan legge sved i ett seperat sted. Mobiletikettene er kortet ned med vilje. Fire knapper i stedet for en dropdown førte til fin symetrisk visning og var lettere å implementere i tilegg. Vi vurderte også å ha symboler, men tok oss ikke tiden for å designe disse knappene. +Menypunktene ligger i to arrays øvest i fula i stedet for i JSXen. Så nye punkter kan legge sved i ett seperat sted. Mobiletikettene er kortet ned med vilje. Fire knapper i stedet for en dropdown førte til fin symetrisk visning og var lettere å implementere i tilegg. Vi vurderte også å ha symboler, men tok oss ikke tiden for å designe disse knappene. ###### SearchField.tsx + SearchField.css -Søkefeltet, tatt ut av Sidebaren(venstremenyen) fordi den hadde to ansvar samtidig. Komponenten har ingen egen state, teksten kommer inn som en value og sendes ut igjen via onChange, slik at App.tsx eier verdien. Det kalles et kontrollert felt og er grunnen til at menyen kan tømmen søket ved å kalle onSearch. Poppene heter value og onChange med vilje slik t de har samme navn som et vanlig input. -Labelen er skult visuelt med .visually-hidden. Ikke display:noen. Det siste fjerner elementet fra tilgjenelighetstreet også, og da forsvinner hele hensikten med labelen. htmlFor matcher inputens id. selve søklogikken er laget av en annen i gruppa og er uendret. +Søkefeltet, tatt ut av Sidebaren(venstremenyen) fordi den hadde to ansvar samtidig. Komponenten har ingen egen state, teksten kommer inn som en value og sendes ut igjen via onChange, slik at App.tsx eier verdien. Det kalles et kontrollert felt og er grunnen til at menyen kan tømmen søket ved å kalle onSearch. Poppene heter value og onChange med vilje slik t de har samme navn som et vanlig input. +Labelen er skult visuelt med .visually-hidden. Ikke display:noen. Det siste fjerner elementet fra tilgjenelighetstreet også, og da forsvinner hele hensikten med labelen. htmlFor matcher inputens id. selve søklogikken er laget av en annen i gruppa og er uendret. ###### Section.tsx + Section.css + Section e rrammen rundt her seksjon på forsiden Den tar seg av overskriften, id'en som menyen scroller til, g hba som skal vises mens data lastes eller hvis noe går galt. Selve innholdet sendes inn som children. Grunnen til at den finnes er at MovieList eller har måttet håndtere lasting og feil selv. I tillegg til å vise filmer. nå gjør Section det en gang, og listene kan holde seg til det de er gode på. Mens data hentes vises en grå skeletonboks i stedet for en tom side, og feiler kallet, kommet det en melding. -Overskriften rendres bare hvis title faktisk har innhold. Banner-seksjonen øverst sendes inn uten tittel, og uten den sjekken ville den laget en tom `
- Edit src/App.tsx and save to test HMR
-
- {movie.release_date} · ★ {(movie.vote_average??0).toFixed(1)} + {movie.release_date} · ★ {(movie.vote_average ?? 0).toFixed(1)}
Connect with us
-Join the Vite community
---
-
-
- GitHub
-
-
- -
-
-
- Discord
-
-
- -
-
-
- X.com
-
-
- -
-
-
- Bluesky
-
-
-
-