Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat/rewrite test #95

Open
wants to merge 6 commits into
base: feat/rewrite
Choose a base branch
from
Open

Feat/rewrite test #95

wants to merge 6 commits into from

Conversation

AAFredsted
Copy link
Collaborator

Beskrivelse

Koordinattransformationen har flere problemer, som gør repoet svært at vedligeholde. Derfor er et rewrite blevet igangsat i samarbejde med @kbevers.

Rewritet er bygget fra bunden af, så komponenter, imports og setup er ændret. Dette pull request markerer overgangen fra et lokalt projekt til noget, der kan merges ind i main. Jeg har derfor bedt @iamfrank om at gennemgå branchen og give feedback på opbygningen.

Opbygning af Applikationen

Projektet er en Vue-applikation, der benytter en router og en store.

Storen giver adgang til getters og setters for sit state, som komponenterne bruger via store.getters og opdaterer via store.dispatch.

Siden indeholder tre views:

  • /Denmark
  • /Greenland
  • /About

/Denmark og /Greenland indeholder komponenten KoorMap.vue, som inkluderer KoorMenu.vue.

KoorMap.vue

Ansvarlig for at opdatere CoordinatesFrom i storen ved klik på kortet, samt for at opdatere markørens placering på kortet, når der sker ændringer i CoordinatesFrom.

KoorMenu.vue

En container for InputKoor og OutputKoor.

  • InputKoor: Opdaterer CRSFrom og derfra opdateres CoordinatesFrom.
  • OutputKoor: Opdaterer CRSTo og derfra opdateres CoordinatesTo.

InputKoor og OutputKoor indeholder begge komponenterne:

  • KoorInputField: Lytter til CoordinatesFrom og præsenterer dem i det ønskede format. Ved ændringer i visningskoordinaten opdateres CoordinatesFrom.
  • KoorOutputField: Lytter til CoordinatesTo og præsenterer dem i det ønskede format.

Afslutning

Dette PR er til for at have en diskussion omkring opbygningen af applikationen, med fokus på følgende spørgsmål:
1: Skal storen opdeles i modules for at skabe større klarhed over dens brug?
2: Er Komponenternes ansvarsområder tydelige og ses dette af koden ?

@AAFredsted AAFredsted requested a review from iamfrank December 11, 2024 14:05
.env.development Outdated
@@ -0,0 +1,8 @@
module.export = {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Den her og den tilsvarende for produktionen bør vist bo på -config repoet i stedet.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Enig. Og token bør teknisk set roteres, nu det er postet til Github.
(Selv om jeg formoder den ender på et public site under alle omstændigheder.)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Det kunne nok være en ide at tilføje .env.* til .gitignore, så kommer de ikke med ved en fejl i fremtiden

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Får jeg gjort :) Tak for at gøre mig opmærksom på det.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Får også kigget på at få sidens token roteret.

Copy link
Contributor

@iamfrank iamfrank left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Synes den overordnede struktur ser fornuftig ud.

Det er nemt at gennemskue de enkelte elementers sammenhæng, så det skulle give gode muligheder for videreudvikling i fremtiden.

Jeg ville vælge at gøre KoorMap og KoorMenu lidt mere uafhængige af hinanden, som nævnt i kommentarerne.

Jeg ville også vælge at lave løsningen med vanilla web components for at mindske antallet af dependencies, der skal holdes opdateret i fremtiden - specielt når der er tale om en relativt ukompliceret applikation som den her.
Det er dog acceptabelt at bygge løsningen med VueJS, fordi vi allerede har kompetencer inhouse, så det burde være muligt at løfte vedligehold i den nærmeste fremtid.

Store-modulet har en overskuelig størrelse (lige nu). Tænker ikke, der er særlig grund til at splitte det op i flere sub-moduler. Det kan gøres i fremtiden, hvis det vokser sig betydeligt større.

.gitignore Outdated
@@ -0,0 +1,3 @@
.vscode/
node_modules
public/
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hvis public er i .gitignore, hvor bor billeder o.lign. så henne?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

På hkpn bruger jeg vite-static-copy til at få de billeder og ikoner over, som jeg har brug for. Havde tænkt mig at gøre noget lignende her.

package.json Outdated
"proj4": "^2.14.0",
"vue": "^3.5.12",
"vue-router": "^4.4.5",
"vuex": "^4.1.0"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Er vuex stadig anvendelig med Vue3? Jeg havde indtryk af, at den "officielle" state manager for Vue3 var Pinia (https://pinia.vuejs.org/ )

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Jeg får taget et kig på det :) Tak for info

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Har fået migreret til Pinia

src/components/koortransform/KoorMenu.vue Outdated Show resolved Hide resolved
class="olmap"
>
</div>
<Menu class="koor-menu" :cover-area="coverArea"/>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Jeg ville nok lade KoorMenu og KoorMap stå side om side (i en ny over-komponent, så vue-router kan håndtere det) i stedet for at lave en hierarkisk afhængighed her.
coverArea kan de kan synkronisere via Store.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

God Ide :) Er gjort

})],
resolve: {
alias: {
'@': path.resolve(__dirname, './src')
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hvis du vil lave unit tests down the road, er det lidt besværligt med aliased imports.
Så overvej nøje, om det der vindes i developer experience nu og her står mål med tabet af DX i test-øjemed.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Giver god mening. Fjerner det for nu.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants