• No results found

Implementationen av komplettering för gränssnittet

4.3 Implementationen av komplettering för gränssnittet

Administratör-och användargränssnitten kompletterades på liknande sätt. Presentatio-nen av grupptillhörigheter gjordes med ett träd som är uppbyggt hierarkiskt. Detta träd representerar databastabellen med grupptillhörigheter. Detta implementerades genom att använda det tidigare nämnda JavaScripts-biblioteket jQuery och dess plugin jsTree (se sektion 2.2.2) . jsTree kan konvertera JSON-formatterad text till ett träd. Genom att iterera över tabellen för grupptillhörighet kan en sträng i JSON-format genereras. JSON-strängen består av en lista med element som har värdena: Id, text och ParentId, där text är namnet på gruppen. Strängen tolkas sedan som JSON och skickas som data till jsTree-trädet.

Kapitel 5

Utvärdering

Under projektets gång implementerades den funktionalitet uppdragsgivaren önskade, vilket innebar att designa och implementera stöd för grupper och grupptillhörighet för användare i CGIMoving. I följande sektioner presenteras de tester som gjordes på den nya funktionaliteten samt resultatet av det uppdaterade gränssnittet.

5.1 Test av utökad funktionalitet

Arbetet innebar att controllers, models, databasen och gränssnittet utökades med nya metoder och funktioner. I kravspecifikationen fanns det inga kriterier angående vilka tester som skulle göras för att arbete skulle anses som klart. Det föreslogs av uppdrags-givaren att bygga och använda automatiserade tester istället för att testa manuellt. På grund av tidsbrist skapades inga automatiserade tester, istället gjordes följande tester manuellt (Analys av resultaten finns i sektion 6.1).

5.1.1 Utökad funktionalitet för administratörer

Delmål 1 a) - b) ”Administratörerna ska kunna ta bort och lägga till grupper” och

”Administratörerna ska kunna skapa en hierarki som består av grupper och

36 KAPITEL 5. UTVÄRDERING

per”. Dessa tester skedde via det uppdaterade gränssnittet i figur 4.1. Nedanstående funktionalitet testades. Den funktionalitet som är implementerad och fungerar enligt specifikationen har markerats med , medan övrig önskad funktionalitet har markerats med .

• Ta bort en grupp

• Ta bort flera grupper samtidigt

• Lägga till en grupp

• Lägga till flera grupper samtidigt

• Lägga till en grupp som undergrupp till en annan grupp

• Ändra en grupp

• Ändra flera grupper samtidigt

Delmål 1 c) ”Administratörerna ska kunna koppla grupper till en specifik

tränings-kampanj”. Inga tester gjordes specifikt på denna del. Anledningen till detta var att det endast fanns en träningskampanj att testa i systemet. Analys av resultaten finns i sektion 6.1.

Delmål 1 d) ”Administratörerna ska kunna redigera vilken grupp en användare

till-hör”. Dessa tester skedde via det uppdaterade gränssnittet i figur 4.2

• Välja en grupp åt en specifik användare

• Välja flera grupper åt en specifik användare

• Välja ingen grupp åt en specifik användare

5.1. TEST AV UTÖKAD FUNKTIONALITET 37

5.1.2 Utökad funktionalitet för användare

Delmål 2 ”Användare ska kunna ange vilken grupp de tillhör och aktuell

grupptillhö-righet ska vara synlig för användaren.” Dessa tester skedde via det utökade gränssnittet i figur 4.3

• Välja en grupp som användare

• Välja flera grupper som användare

• Välja ingen grupp som användare

• Välja en undergrupp som användare

5.1.3 Utökad funktionalitet för gränssnittet

Den utökade funktionaliteten i gränssnittet visas nedan i anslutning till respektive del-mål:

• Delmål 2 och 3 a) ”Användare ska kunna ange vilken grupp de tillhör och aktuell grupptillhörighet ska vara synlig för användaren” och ”Uppdatering av användar-gränssnittet så att användaren ser de tillgängliga grupperna och kan välja vilken grupp användaren vill tillhöra samt aktuell grupptillhörighet ska vara synlig för användaren ”. Det uppdaterade gränssnittet syns i figur 4.3.

• Delmål 3 b) ”Uppdatering av det administrativa gränssnittet så att administratörer ser de tillgängliga grupperna samt funktionalitet för att ta bort/ lägga till / ändra grupperna”. Det uppdaterade gränssnittet syns i figur 4.1.

• Delmål 1 d) och 3 c) ”Administratörerna ska kunna redigera vilken grupp en användare tillhör” och ” Uppdatering av gränssnittet så att administratörerna kan

38 KAPITEL 5. UTVÄRDERING

se de tillgängliga grupperna för en specifik användare och kan välja grupptillhö-righeten för den specifika användaren”. Det uppdaterade gränssnittet syns i figur 4.2.

5.1.4 Slutresultat

Utfallet från testerna av den utökade versionen av CGIMoving visade att den nya funk-tionaliteten baserat på målen presenterade i kapitel 1.4 fungerade i de flesta fall. Även om alla tester inte avklarades presterade funktionaliteten generellt som önskat enligt målen och delmålen för projektet.

Kapitel 6

Slutsats

6.1 Diskussion

Under arbetet att utöka funktionaliteten för CGIMoving fick vi fria händer att fatta design- och implementationsbeslut, i detta kapitel kommer vi diskutera dessa beslut och hur detta påverkade slutresultatet.

6.1.1 Delmål 1 - Beslut kring utökad funktionalitet för

administra-törer

• Delmål 1 a) Administratörerna ska kunna ta bort och lägga till grupper:

Under utvecklingen mot detta delmål bestämde vi att administratörerna endast skulle kunna lägga till en grupp åt gången men att det skulle vara möjligt att ta bort flera grupper samtidigt. Annledningen till att detta beslut togs var på grund av tidsbrist.

• Delmål 1 b) Administratörerna ska kunna skapa en hierarki som består av grupper och undergrupper:

Vi bestämde oss för att använda en ParentId kolumn i GroupChoicetabellen (se

40 KAPITEL 6. SLUTSATS

sektion 4.1) för att skapa en hierarki, detta fungerade bra och samverkade väl med jsTree-pluginet som användes senare.

• Delmål 1 c) Administratörerna ska kunna bestämma vilka grupper som tillhör en specifik träningskampanj:

I den nuvarande versionen av CGIMoving kan bara en träningskampanj åt gången vara aktiv. Vi bestämde oss därför för att endast skapa funktionalitet för att grup-perna som skapas sparas till den träningskampanj som är aktiv. Denna lösning fungerar för tillfället men skulle CGI bestämma sig för att ha flera kampanjer aktiva samtidigt behöver denna funktionalitet således också ändras.

6.1.2 Delmål 2 - Beslut kring utökad funktionalitet för användare

Användaren kan i den utvecklade versionen av CGIMoving endast välja en grupp att tillhöra, på detta sätt behövdes ingen lista av grupper sparas i profiltabellen. Uppdrags-givaren ansåg dock att detta var en begränsning då de i framtiden skulle vilja införa flera aktiva kampanjer parallellt och då även kunna ha användare kopplade till fler än en grupp.

6.1.3 Delmål 3 - Beslut kring utökat gränssnitt

För delmål 3 a) och 3 c) som rör gränssnittet för administratörer och användare som beskrivs i senare del av denna sektion, identifierades en svaghet med den GroupSelec-ted kolumn som skapades i profiltabellen. Om användaren inte markerade en grupp i hierarkin och försökte spara, kastades ett null-exception fel. Detta hanterades genom att hårdkoda rotnoden ”CGI” som grupptillhörighet för användaren om inget val gjordes. Denna lösning bör vid nästa uppdatering hanteras genom att meddela användaren eller

6.1. DISKUSSION 41

administratören om att ingen grupp har valts med hjälp av den null-exception som kastas.

• Delmål 3 a) Uppdatering av användargränssnittet så att användaren ser de till-gängliga grupperna och kan välja vilken grupp användaren vill tillhöra:

Under utvecklingen mot detta delmål försökte vi först skapa en egen struktur för att presentera grupperna och deras ordning i hierarkier, men det visade sig att det var smidigast att använda jsTree.

• Delmål 3 b) Uppdatering av det administrativa gränssnittet så att administratörer ser de tillgängliga grupperna samt för att ta bort/ lägga till och att ändra grupperna: Under utvecklingen mot detta delmål togs ett implementationsbeslut att beskriva hur administratörerna skulle gå tillväga för att lägga till eller uppdatera en grupp under texten ”How to change the tree” eftersom detta inte kändes intuitivt.

• Delmål 3 c) Uppdatering av gränssnittet så att administratörerna kan se de till-gängliga grupperna för en specifik användare och kan välja grupptillhörigheten för den specifika användaren:

Under utvecklingen hittades en svaghet i det tidigare implementerade gränssnittet vilket innebar att det inte gick att scrolla i det pop-up fönstret som skapades i figur 4.2. Detta ledde till att det inte var möjligt för administratörerna att klicka på ”Save Changes” när en ändring hade skett. Det fanns ingen tid att ordna detta och lösningen är för närvarande att administratörerna får ut zooma ut i webbläsaren.

6.1.4 Reflektioner under projektets gång

Uppgiften i detta projekt, att ändra och komplettera funktionalitet i ett redan existerande projekt innebar utmaningar, att sätta sig in i och förstå andra människors kod och att göra detta på distans var några av dessa utmaningar. Eftersom vi inte kunde utföra arbetet på plats i CGIs kontor på grund av coronapandemin blev det svårare att få hjälp vilket

42 KAPITEL 6. SLUTSATS

ledde till att vi kunde fastna under längre tid med småproblem som egentligen hade lätta lösningar. Dock var detta ett ypperligt tillfälle att mogna som utvecklare.

Om vi hade kunnat sitta på plats hade det kanske blivit lättare och vi kunde fått mer tid att lösa de små problem som har specificerats i tidigare delar i detta kapitel. Detta gav oss dock en chans att bli bättre problemlösare.

Related documents