stefankuijers / project Goto Github PK
View Code? Open in Web Editor NEWA cross-platform mobile app created with Angular, Ionic and Cordova.
A cross-platform mobile app created with Angular, Ionic and Cordova.
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.
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.
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
Tijdens de test bleek sommige tekst in de medicijn interactie waarschuwing te klein.
Ook het label van 'terug' was te klein.
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"
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.
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:
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.
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.
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?
When a reminder is added deleted or updated there are quite a few tables in play... How Can I design the database process in a way that it is efficient and not errorProne?
Is there a way to let stuff cascade?
Twee kliks op medicijn toevoegen door naam leid tot een rare popup. Moet niet natuurlijk
Alle schermen moeten minimaal ge dtpt worden zodat ze er ongeveer het zelfde uitzien als de wireframes.
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.
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.
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
Design moet geimplementeerd worden.
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
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
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.
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 moet werken. Dit betekend dat de volgende schermen het moeten doen:
scan of typ hoeft niet te werken. Kan gewoon random een medicijn toevoegen.
Wanneer er geen search results zijn moet het duidelijk zijn voor de gebruiker dat dit zo is.
@stefanKuijers als jij de project structuur in de repo zet kan ik testen of ik het bij mij aan de praat krijg.
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...
Medicine detail page should show the following info:
Could show this... (might skip for this milestone)
Hoe kan ik de client-side API module het beste opzetten?
Ik heb natuurlijk al een aanzet gedaan:
https://github.com/stefanKuijers/project/blob/master/www/js/service/api.js
http://ionicframework.com/docs/api/service/$ionicLoading/
Voor de eerste tests is het niet zo belangrijk aangezien er geen API calls gedaan worden. Phonestorage duurt niet heel lang, toch telt elke seconde duss... loading moet er zo en zo in.
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.
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.
From time to time I make typos. It is important as programmers to share experiences like these, so here goes:
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:
Product is usable in landscape but the design for landscape has not yet been implemented.
Scanner moet natuurlijk wel werken.
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).
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?
It's possible.
It shouldn't be.
Join the amounts and remove the last added.
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.
Medicijn toevoegen. Voorgeschreven of niet word niet opgeslagen in device storage
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?
Soms zou het wel handig zijn als je niet terug, terug, terug moet tappen voordat je weer bij het overzicht bent.
Mogelijke oplossingen:
Naast alle vragen zou ik graag ook samen willen kijken naar hoe dit ongeveer werkt.
Is gewoon leuk.
Repo
https://github.com/wildabeast/BarcodeScanner
Installeren met plugman (zit bij Ionic dacht ik)
https://github.com/wildabeast/BarcodeScanner/tree/master/src/android#building-with-plugman
Voorbeeld project
https://github.com/wildabeast/BarcodeDemo
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.
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.
Somewhere during dev in milestone 'userfeedback_1' notifications stopped working.
Ai Ai
Ik heb al het een en ander gedaan en in service/phonestorage.js: https://github.com/stefanKuijers/project/blob/master/www/js/service/phonestorage.js
DB design is aan de dropbox toegevoegd. Voor duidelijkheid voeg ik hem hier ook in.
Er is geen ENUM in SQLite (Issue #35 ) vandaar de ENUM vervangende tabellen
Gaat dit design werken?
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.
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?
De verantwoordelijkheid voor phonestorage.js moet zijn dat er een bruikbaar resultaat ge-output wordt voor angular.
angular.copy()
moet niet in de controller gebeuren, maar in de service die het db resultaat teruggeeft.
Zie bijvoorbeeld http://stackoverflow.com/a/19490705 voor inspiratie.
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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.