GithubHelp home page GithubHelp logo

stefankuijers / project Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 1.0 37.62 MB

A cross-platform mobile app created with Angular, Ionic and Cordova.

JavaScript 56.14% D 0.68% Java 26.05% Shell 0.32% Objective-C 3.04% Objective-C++ 0.64% C++ 0.29% C# 1.01% CSS 11.83%

project's People

Contributors

hikariii avatar stefankuijers avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Forkers

guibot17

project's Issues

Landscape uasability

De eerste panel test zal in portraitmode af worden genomen. Dit omdat complete optimalisatie voor beide orientaties teveel tijd kost.

Toch wil ik wel graag dat de app te gebruiken is in landscape. Hoeft er niet perfect uit te zien zoals de landscape wireframes maar alle knoppen en informatie moet wel toegankelijk zijn.

Echte settings implementeren

De settings zijn nu 20% werkend. Alle toggles worden opgeslagen in de phoneStorage maar het doet niets in de app. De sliders doen helemaal niks.

De juiste settings moeten in de settings-view komen en daarna ook daadwerkelijk effect gaan hebben op het functioneren van de app.

No response on click/tap

From time to time a click/tap on an a- or button-element does not trigger the router to navigate to the corresponding page. The button does show the down state but nothing else happens.

This bug seems to happen very irregularly. Sometimes the app works fine for a few minutes without any interruptions other times you have to tap several times on the navigation-element before re-routing occurs. When it happens it is almost always on the an Android device (4.4) but sometimes happens the browser (Chrome).

The navigation is build after the example of the Ionic Tabs template. Using the UI router. The unmodified example has the same problem.

I opened an issue at the repository where the templates are from.

Also asked a question on the Ionic forum:
http://forum.ionicframework.com/t/unresponsive-router-in-tabs-and-sidemenu-template/2658

Adding a new medicin. Double medication

Wat als het medicijn wat toegevoegd word al toegevoegd was? Dan moet dit door de app wel worden herkend. Hoeft geen foutmelding te zijn. Kan ook gewoon naar het bestaande medicijn navigeren na het "toevoegen"

Genegeerde waarschuwing

Als bij het toevoegen van een medicijn een waarschuwing met een interactie word getoond heeft de gebruiker de mogelijkheid om deze te negeren. Dit betekend dat hij/zij het medicijn wel gaat gebruiken.

De waarschuwing zou zichtbaar moeten blijven voor de gebruiker. Kan als extra kopje op de medicijn-detail pagina er bij. Misschien ook wel op de overzichtspagina; het medicijn zou een ander kleurtje of een icoontje er bij kunnen hebben.

Times disapear when filled out on med-detail

When filling out the times when you take a med and save it. The times sometimes disapear. Or they seem to be ok but when you go back to the overview (home) than they are set to 00:00.

quite a few issues actually:

  • add 1 and the first on the list get a time of 00:00
  • after edit items are not reordered
  • after deleting no items van be added
  • sometimes you cant add/edit/remove anymore

Flow toevoegen ERROR

Flow van het toevoegen van een medicijn wat een error geeft omdat het niet samengaat.
Bijna de zelfde flow als issue #9 alleen hier moet ik triggeren dat het een popover aangeeft dat er iets verkeerd gaat.

Close app without saving

What happens when a user closes the app without saving whatever he was doing at the moment?

If it's possible to show a popup on leave to see or they really want to leave. Maybe even automagically save whatever can be saved.

Proces van aanpassen en toevoegen van inname momenten was erg lastig

Was soms erg lastig om de reminders er goed in te krijgen. Het was niet duidelijk waar ze moesten klikken om het te editen en als ze dat hadden gevonden verwachten ze dat de timepicker meteen op zou springne,. De time pickerwas moeilijkste gebruiken. Geen van de ouderen had door dat je de hoeveelheid ook kon invullen. Andere vraag was: waarom moet ikop dat vinkje drukken? Ik heb toch al op instellen geklikt?

Wireframe Look

Alle schermen moeten minimaal ge dtpt worden zodat ze er ongeveer het zelfde uitzien als de wireframes.

  • overzicht
  • med detail
  • med new
  • med new scan
  • med new type
  • settings
  • geschiedenis

Uitleg bij scannen

Hoe het scannen werkt was niet duidelijk voor de ouderen. Er zal duidelijke uitleg gegeven moeten worden aan de ouderen als zij voor de eerste keer gaan testen.

Verwarring over wat knoppen zijn en wat niet

Het was niet altijd duidelijk voor de ouderen wat knoppen waren en wat niet. Moet in het design hier rekening mee houden zodat allee knoppen 1 bepaalde stijl/kleur/uiterlijk hebben.

Hierbij zal er ook bij elke knop een label moeten. Dit omdat niet iedereen wist waar het potloodje, de prullenbak, het vinkje of het radartje voor was.

Reminders

Als het nog lukt zou het vet zijn om echt reminders erin te krijgen voor deze test. Als dat niet lukt graag alsof het lijkt dat er een notificatie komt. Kan gewoon met een timeout ofzo... Hacky :p

Implement Design

Design moet geimplementeerd worden.

  • Iconen maken/zoeken
  • Kleuren palet kiezen
  • Mock up
  • Button style
  • icon
  • splash screen
  • CSS

Medicijn Toevoegen

Voor de eerste panel test moeten de gebruikers de mogelijkheid hebben om een medicijn toe te voegen. De med data moet dan ook worden opgeslagen in de DB

  • flow van toevoegen (issue #9)
  • koppeling naar med detail
  • gebruiker tijden in laten vullen of meds zonder tijden onder in de lijst weergeven?

Phonestorage structuur

Phonestorage:
https://github.com/stefanKuijers/project/blob/master/www/js/service/phonestorage.js

Hier zouden we natuurlijk eerst persistenceJS voor gebruiken. Ik was aan het lezen geslagen en kwam hier:
https://github.com/zefhemel/persistencejs#setting-up-for-cordova-with-sqlitepluginwebsql

Ik had niet gezien dat dit optioneel was en begreep dat je de plugin MOEST gebruiken. Dus ik las verder en vondt dit:
https://github.com/brodysoft/Cordova-SQLitePlugin#known-issues

Op basis daarvan besloot ik dat als er problemen waren met Android 4.4 dat ik maar beter wat anders kon bedenken. Toen kwam ik erachter dat Phonegap functies (lees Cordova) ook werken en heb gekozen om het volgende te gebruiken:
http://docs.phonegap.com/en/1.2.0/phonegap_storage_storage.md.html#Storage
Volgens mij is het trouwens gewoon HTML5...

Maar aangezien het een soort crappy SQLite ofzo is bestaan ENUM niet en werken andere dingen ook niet echt zoals ik had gehoopt. Het gevolg is dat deze service naar mijn gevoel veel te bloated is. Kunnen we dit fixen door toch persitenceJS te gebruiken?

Aan de issues te zien op de persistence repo blijkt het wel mee te vallen met de problemen op 4.4 .
storesafe/cordova-sqlite-storage#50
storesafe/cordova-sqlite-storage#46

Voorgeschreven medicijnen

Het zou handig zijn dat de gebruiker duidelijk kan zien welke medicijnen voorgeschreven zijn door medische professionals en welke niet.

Moet zo en zo in medicijndetail view maar zou ook in het overzicht (home-view) kunnen.

Duur van medicijngebruik instellen

Gebruikers zouden ook een duur moeten kunnen aangeven voor het gebruik van een medicijn. Als zij het medicijn toevoegen zouden ze moeten kunnen aangeven of ze het voor altijd willen of dat het voor de komende 40 dagen is ofzo.

Enhanchement: dat ze kunnen zeggen. Ik heb 100 pillen. Zet ze er in tot ze op zijn

Flow van het toevoegen van een medicijn dmv scan of typen

Flow van het toevoegen van een medicijn dmv scan of typen moet werken. Dit betekend dat de volgende schermen het moeten doen:

  • Overzicht
  • Add Med
  • Type of Scan (misschien 1 van de twee)
  • Med detail add med

scan of typ hoeft niet te werken. Kan gewoon random een medicijn toevoegen.

Notifications After Reboot?

Ik heb al iets werken met notifications (nu alleen als je een notification update).
Heb dit in een service gezet. Leek me een goeie:
https://github.com/stefanKuijers/project/blob/master/www/js/service/notification.js
Ik heb een plugin geinstalleerd met cordova add plugin:
https://github.com/katzer/cordova-plugin-local-notifications

Nou las ik het volgende aan het eind van dit onderdeel:
https://github.com/katzer/cordova-plugin-local-notifications#get-notified-when-the-user-has-been-clicked-on-a-local-notification

Note: The event is only being invoked in background if the app is not suspended!

Ik weet niet helemaal wat dat betekend.
Ik wil graag vandaag samen ff testen hoe deze notifications werken.
Ze doen het wel als de app in de background runned. Das een goed begin.

Als het niet werkt als je de tablet bijvoorbeeld op nieuw opstart is het voor nu geen probleem aangezien ze vannuit school alleen een prototype verwachten. Maar stel je voor dat ik dit later nog een keer wil gebruiken voor een echte app...

Medicin Detail pagina info

Medicine detail page should show the following info:

  • how to use
  • when not to use
  • when to use

Could show this... (might skip for this milestone)

  • active_ingrediend
  • prescribed or not

Verwachting keyboard/timepicker/number selector - popup

Bij het testen kwam naar voren dat er op verschillende momenten de verwachting was dat het input component automgisch te voorschijn zou komen. Dit ga ik voor elkaar proberen te krijgen. Het gaat om de volgende momenten.

  • Als er op het Edit knopje van Innamemomenten word gedrukt
  • Wanneer een medicijn-naam moet worden ingevuld

Comply to set guidelines from research

In mijn onderzoek heb ik verschillende guidelines besloten te volgend om de applicatie gebruiksvriendelijker te maken voor ouderen. Deze moeten natuurlijk niet alleen in het onderzoek maar ook in de app verwerkt.

  • Navigatie elementen labelen én iconiseren [bron: Interactive Design Preferences of 50-Plus Users]
  • Tekst Sans serif, 14 – 16 pt [Touch Screens for the Older User]
  • Lineheigth moet iets hoger dan normaal [Touch Screens for the Older User]
  • Gebruik Haptic of audio feedback bij alle acties [Touch Screens for the Older User]
  • Vermijd scrollen. Plaats omhoog/omlaag knoppen als scollen niet vermeden kan worden [Touch Screens for the Older User]
  • Vermijd gebruik van on-screen toetsenbord waar mogelijk [Is a big button interface enough for elderly users?]
  • Normale knoppen moeten tussen 16.5mm en 19.05mm breed zijn. [Is a big button interface enough for elderly users?]
  • Zorg dat reminders niet te zacht gezet kunnen worden. [Considerations in Designing Human-Computer Interfaces for Elderly]

Medicijn data ophalen uit de lokale database

Om medicijnen op te kunnen slaan (zie issue #5 ) is het ook handig om dan maar meteen de data lokaal op te slaan en vanuit daar te laten. Daarvoor moet eerst de DB worden geinitialiseerd als deze nog niet bestaat. Daarna moet de data hieruit uitgehaald worden en gerendered worden uit in het overzicht.

Todo:

  • build phonestorage controller
  • check or DB and tables excist
  • build tables if not excists
  • setup event aggragation and callback structure
  • Test Persistence of storage on device
  • populate tables with default values
  • api to get phonestorage data
  • parse data for display and pass to overzicht view
  • render overzicht view
  • same for med-detail view
  • reden bedenken waarom ik hier maar één issue voor heb aangemaakt

Max dose, Interval

Nu kan je gewoon invullen dat je 99 paracetamolletjes per minuut inneemt.

Zou ook goed zijn als de app ook in de gaten houdt wat de maximale dosis is (waneer niet voor geschreven door de dokter).

  • Maximaal per keer . Bijvooreeld niet meer dan 3 paracetamollen in 1 dosis
  • Maximaal per interval. Bijv. niet meer dan 8 paracetamollen per 24 uur
  • Minimaal interval. Bijv. minimaal 2 uur tussen 3 paracetamollen.

Gebruik van modellen in de Angular structuur

Ik al flink op weg met het leren van AngularJS. Nu is de MV* structuur van dit framework mij nog niet helemaal duidelijk. Ik heb gewerkt met Backbone en CodeIgniter waarin voor mij in CodeIgniter de MVC structuur erg duidelijk was. In Backbone zijn de grenzen niet heel duidelijk en is er geen afgesproken definitie van een controller.

Angular heeft wel een erg duidelijke menig met Services, Factories en Directives maar ik snap echt niet waar het model nou moet. Als ik het goed begrijp is een Service de manier om de data in het model te krijgen. De Factory is denk ik het model en een Directive is de mogelijkheid om Allerlei functies en DOM manipulaties die specifiek bij een model horen te groeperen en in een view te groeperen. Een soort sub controller met een wat sterkere binding met de DOM.

Hoe kan ik praktisch een model toepassen in dit project?

Ongevaarlijke medicijn interacties

Om Alrt Fatigue te voorkomen is het belangrijk om alleen waarschuwingen bij gevaarlijke medicijn-interacties te laten zien in de vorm van een pop-up.

Andere medicijn interacties moeten op een minder onderbrekende manier onder de aandacht gebracht worden.

Two way data binding

Wil erg graag van start met de databinding wat super makkelijk zou moeten zijn maar om één of andere reden lukt het niet. Het heeft iets met scope te maken aangezien als ik bij een input ng-model='dose.time' zet en het wil veranderen zegt hij dat hij read only is.

Dus... voor nu heb ik jQuery ingezet om toch door mijn issues heen te komen en de mile stone te kunnen halen voor overmorgen.

Any thoughts?

Home button

Soms zou het wel handig zijn als je niet terug, terug, terug moet tappen voordat je weer bij het overzicht bent.

Mogelijke oplossingen:

  • Aan het eind van een flow (bijvoorbeeld het toevoegen van een medicijn) het terug knopje vervangen door een home knopje.
  • Op bepaalde schermen bepalen dat er een home knopje moet komen.
  • Altijd een home knop ipv een terug knopje.
  • Twee knopjes. 1 voor home en 1 voor terug.

Gebruik van ng-model en de directive in repeat

Bij één van de views ben ik erg lang aan het rotzooien geweest om ng-model te implementeren. Het is niet gelukt. Wat resulteerd in de DOM uitlezen om een waarde te updaten. Waaaaaardeloos natuurlijk als je data-binding hebt. Erg foutgevoelig en veel werk.

Check
https://github.com/stefanKuijers/project/blob/master/www/view/medicijn-detail.html#L29

Als ik daar ipv value een ng-model="dose.time" in zet zegt ie dat ik niet aan een read only property mag assignen.
Als ik ng-model="time" gebruik bind hij aan een lege property.

Aangezien we in een ng-repeat zitten:
https://github.com/stefanKuijers/project/blob/master/www/view/medicijn-detail.html#L26

Dacht ik: dan zet ik daar ng-model="dose" op maar dat hielp niet zoveel. Ik doe iets verkeerd maar dat komt waarschijnlijk door dat ik niet snap hoe modellen in Angular werken.

Dit is bijna een duplicate van #14 en gerelateerd aan #13
Denk dat we eerst #13 moeten doornemen.

Inname momenten toevoegen

Gebruikers moeten een inname moment aan de medicijnen kunnen toevoegen. Of dit nu al aan een reminder gekoppeld word weet ik niet. Niet erg waarschijnlijk dat dit nu al gaat lukken. Zo niet is het miss een goed idee om de reminder te faken.

Unfired bound events fire twice later

Some events are bound but not fired.
The user navigates away and comes back.
The event is bound again.
This time it does fire.
The callback gets fired twice as it has been bound twice.

Bind once stuff.

Great example = add meds and go back. Keep doing it.

How To Extend Controllers

Ik heb twee controllers die verdraait veel op elkaar lijken. Het gaat om new_med_scan.js en new_med_type.js

Ze doen dus ook bijna het zelfde. Zit maar 6 a 7 regeltjes verschil in.

Misschien kunnen we samen even kijken naar of dit samen gevoegd kan worden. Of miss kan het wel ongeveer zo dat twee views de zelfde controller hebben?

Automatisch Opslaan

Related to #30

Bij de test was duidelijk dat er werd aangenomen dat het moment dat het veranderd was de waarde ook opgeslagen was. Het is het mentale model van de gebruiker dus moet ik me daar aan aanpassen.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.