• No results found

Front-end 

In document ReWarden (pagina 43-47)

4.3 “Aan welke voorwaarden moet de interface voldoen, zodat regels op een overzichtelijke en duidelijke manier 

5. Ontwerp en realisatie 

5.2.2. Technische toelichting 

5.2.2.3. Front-end 

In dit hoofdstuk is beschreven hoe de client applicatie is opgebouwd, welke externe  afhankelijkheden er zijn gebruikt om eigenschappen te realiseren, uit welke 

5.2.2.3.1. Framework/programmeertaal 

De applicatie is gebouwd met het Angular framework versie 9. Deze versie van het  framework is gebaseerd op TypeScript versie 3.7 of hoger. 

5.2.2.3.2. Angular 

Angular is een TypeScript gebaseerd web framework voor het bouwen van ‘single  page web apps’. De applicaties zijn opgebouwd uit zogenaamde ‘NgModules’ die de  context schetsen waarin ‘Components’ gecompileerd kunnen worden: 

- Components zijn sets van browser elementen die de interface definiëren. Deze  components kunnen in combinatie met andere components hergebruikt  worden om zo op een efficiënte manier de interface te bouwen. 

- Components maken gebruik ‘Services’ die logica bevatten voor het beheer van  data. 

 

Verdere verdieping in dit framework kan middels de docs: ​https://angular.io/docs 

5.2.2.3.3. Typescript/HTML/CSS 

Voor de logica van het Angular framework is TypeScript gebruikt, daarnaast worden  de browser elementen weergegeven met HTML en gestyled met CSS. TypeScript is  gebaseerd op JavaScript met toevoeging van types. Meer informatie over 

Type/JavaScript, HTML & CSS kan gevonden worden op W3Schools: 

https://www.w3schools.com/js 

https://www.w3schools.com/html 

https://www.w3schools.com/css 

5.2.2.3.4. Dependencies 

Een framework biedt een solide basis om een applicatie op te zetten, omdat een  framework doorgaans open source is zijn er diverse ontwikkelaars en teams die  toevoegingen realiseren en beheren om de implementatie van bijvoorbeeld design of  extra features makkelijk te maken, voor dit project zijn de volgende toevoegingen  gebruikt. 

5.2.2.3.4.1. Material design 

Voor het ontwerp van de interface elementen van de applicatie is gebruik gemaakt  van Material Design. Material is een door Google ontworpen, wereldwijd gebruikt  design, gebaseerd op materialen die we kennen uit de wereld buiten de computer.  Zoals een vierkant wit vlak als papier en een cirkel als knop. Angular kent een 

makkelijke integratie met deze filosofie met de Angular Material component library.  

5.2.2.3.4.2. Formly 

Omdat de interactie met deze applicatie veelal plaatsvindt door middel van het  gebruiken van formulieren, is Formly als externe formsbuilder toegevoegd aan het 

project. Angular heeft een geïntegreerde formsbuilder, echter is deze in gebruik een  stuk omslachtiger dan Formly. Formly biedt een intuïtieve manier voor het renderen  van HTML formulieren op basis van gedefinieerde velden in het component bestand,  evenals het spiegelen van de data die een formulier bevat, middels een ‘model’ object  in de component. Hierdoor wordt het eenvoudig om dynamische voorwaarden te  verbinden aan de waardes in de velden. 

5.2.2.3.5. Componenten 

Voor het renderen van content in de browser van de gebruiken zijn de volgende  componenten ontwikkeld: 

- EventComponent 

In deze component kan een Event gemaakt of bewerkt worden, een Event  heeft een naam en een aantal attributen. Deze component bevat een 

formulier en logica voor het ophalen en opslaan van een Event. Wanneer een  Event bewerkt wordt, wordt deze eerst opgehaald bij de back-end. Als het een  nieuw Event betreft blijven de velden vanzelfsprekend leeg. De velden voor de  attributen worden dynamisch gerenderd met een druk op de knop. 

- EventsListComponent 

Overzicht van alle Events die opgeslagen zijn in het systeem. Het is in dit  overzicht mogelijk om een Event toe te voegen, dit kan middels een grote +  knop onderin beeld. Tevens is het mogelijk om een Event te bewerken of te  verwijderen. Hiervoor zijn in iedere rij in de tabel twee knoppen aanwezig. 

- ActionComponent 

In deze component kan een Action gemaakt of bewerkt worden, een Action  heeft een type en een aantal attributen en doel-attributen. Deze component  bevat een formulier en logica voor het ophalen en opslaan van een Action.  Wanneer een Action bewerkt wordt, wordt deze eerst opgehaald bij de 

back-end. Als het een nieuwe Action betreft blijven de velden vanzelfsprekend  leeg. De velden voor de attributen worden dynamisch gerenderd met een  druk op de knop. 

- ActionsListComponent 

Overzicht van alle Actions die opgeslagen zijn in het systeem. Het is in dit  overzicht mogelijk om een Action toe te voegen, dit kan middels een grote +  knop onderin beeld. Tevens is het mogelijk om een Action te bewerken of te  verwijderen. Hiervoor zijn in iedere rij in de tabel twee knoppen aanwezig. 

- RuleComponent 

In deze component kan een Rule gemaakt of bewerkt worden. Een Rule bevat  één of meerdere ‘antecedents’ en één of meerdere ‘consequents’. De 

component bevat een formulier waarvoor een aantal speciale veldtypes  gerealiseerd zijn die gevonden kunnen worden in de ‘formly’ directory in de  client/src map van het project. Wanneer een Rule bewerkt wordt, wordt deze  eerst opgehaald bij de back-end. Als het een nieuwe Rule betreft blijven de  velden vanzelfsprekend leeg. De velden voor de attributen worden dynamisch  gerenderd met een druk op de knop. 

- RulesListComponent 

knop onderin beeld. Tevens is het mogelijk om een Rule te bewerken of te  verwijderen. Hiervoor zijn in iedere rij in de tabel twee knoppen aanwezig. 

5.2.2.3.6. Services 

Zoals beschreven in de docs van Angular, zijn services verantwoordelijk voor de  communicatie met de back-end applicatie. Deze applicatie heeft er drie: 

- EventsService 

De eventsservice wordt in de componenten gebruikt die bedoelt zijn voor het  beheren van Events. Deze service kan GET requests doen voor het ophalen van  één of alle Events, een POST request voor het opslaan van een nieuw Event,  een PATCH request voor het opslaan van nieuwe waarden in een bestaand  Event en een DELETE request voor het verwijderen van een Event. 

- ActionsService 

De actionsservice wordt in de componenten gebruikt die bedoelt zijn voor het  beheren van Actions. Deze service kan GET requests doen voor het ophalen  van één of alle Actions, een POST request voor het opslaan van een nieuwe  Action, een PATCH request voor het opslaan van nieuwe waarden in een 

bestaande Action en een DELETE request voor het verwijderen van een Action.  - RulesService 

De rulesservice wordt in de componenten gebruikt die bedoelt zijn voor het  beheren van Rules. Deze service kan GET requests doen voor het ophalen van  één of alle Rules, een POST request voor het opslaan van een nieuwe Rule, een  PATCH request voor het opslaan van nieuwe waarden in een bestaande Rule  en een DELETE request voor het verwijderen van een Rule. 

5.2.2.3.7. Testen 

Om de werking van de front-end applicatie te valideren zijn met het, in Angular  standaard geïntegreerde test framework Jasmine, unit tests geschreven. Deze unit  tests worden in een zogenaamde ‘spec.ts’ file geschreven die zich in dezelfde  directory als de component bevindt. Bij het schrijven van tests dient 100% line  coverage gegarandeerd te worden. De specs kunnen gedraaid worden met het  commando ‘docker-compose run client_test’. Hiermee wordt de test container van  client applicatie opgestart en worden alle unit tests één keer gerund door Karma, de  test runner van Jasmine. Na het afronden van de test suite wordt een coverage report  gegenereerd welke te vinden is in de /coverage directory van de /client folder van het  project. 

   

 

 

In document ReWarden (pagina 43-47)

GERELATEERDE DOCUMENTEN