Toon posts:

[ALG] Gebruiksvriendelijk tijd invoeren

Pagina: 1
Acties:

Verwijderd

Topicstarter
We zijn bezig om een user interface te maken voor een thermostaat. We doen dit in Java, maar dat is niet de kern van ons probleem. De gebruiker moet tijden kunnen instellen waarop de temperatuur verandert. We willen deze tijden realtime opslaan in een database, opnieuw sorteren, en weer meteen de weergave updaten. Verder mogen er geen twee events (temperatuurveranderingen) op hetzelfde tijdstip zijn. Dus wordt dus gecheckt bij het updaten van de database.

De volgende mogelijkheden hebben we al geprobeerd:

Tijd als tekst invoeren:
Vervelend om te parsen. Nadat de tijd ingevuld is, kan deze na het sorten op een andere plaats terecht komen. Dit is onduidelijk voor de gebruiker. Ook heeft de gebruiker geen mogelijkheid om het laatste karakter (van de tijd) te 'backspacen'. Er zou dus een apply-knop nodig zijn, maar dat willen we voorkomen, omdat het mogelijk is dat de gebruiker deze vergeet.

Twee dropdown lists (uren en minuten):
Op zich een goede oplossing, maar stel dat je een event hebt op 1:00u en een op 2:00u. Als je die van 2:00u dan wilt veranderen naar 1:45u, en je verandert daarbij éérst uren en dan minuten, dan staat er dus even 1:00u, en dan krijgt de gebruiker de foutmelding dat het tijdstip al bezet is (onterecht). Ook hier is een apply-knop mogelijk, maar dat hebben we wederom liever niet.

In plaats van een apply-knop, dachten we ook aan de mogelijkheid om te updaten wanneer de gebruiker iets buiten deze invoerregel (bijvoorbeeld een andere invoerregel) aanklikt. Maar het is mogelijk dat hij de thermostaat instelt en wegloopt, waardoor zijn laatste instelling niet opgeslagen wordt. Ook kan het zijn dat foutmeldingen veel later komen dan de fout. E.g.: jantje stelt de thermo in en loopt weg. Pietje wil een andere entry aanpassen en stuit op de error van jantje. Niet netjes dus.

De (volgens ons) enige optie die deze problemen niet heeft, is er eentje waarbij de tijd in een apart pop-up venster moet worden ingesteld. Dit verstoort wel de flow van het gebruik.

Een ander idee is het instellen van de tijd met één klik. De klik is dan zelf ook meteen de apply. Maar we hebben geen idee op welke manier je met één klik een tijd kan instellen.

We vroegen ons af hoe jullie hierover denken en of iemand misschien nog een geniaal idee heeft.

  • Macros
  • Registratie: Februari 2000
  • Laatst online: 30-04 09:28

Macros

I'm watching...

Je zou een hele lange slider kunnen maken. Stel je limiteerd de tijden die iemand in kan stellen tot hele 10 minuten (zo is onze themostaat ook). Dan kan je op een 'tijd-lijn' een slider zetten met elke 20 min een lijntje ofzo. Nu gebeurd het natuurlijk dat je lijn te breed is voor het scherm. Je kan hem dan in een scrollpane doen, en als de slider bij de rand komt tijdens het slepen, dan scroll je automatisch de pane opzij. Zo kan je met 1 klik een tijd instellen.
Het is maar een ideetje hoor.

"Beauty is the ultimate defence against complexity." David Gelernter


Verwijderd

Topicstarter
Tijdlijn:
Dat hadden we zelf ook al bedacht, maar een tijdlijn is te groot, of te onnauwkeurig. Een hele lange drop-down list met zowel uren als minuten in een lijst is ook te lang om te gebruiken.

Verwijderd

Je zou onder de tijdlijn een invoerbox kunnen zetten zodat je op de tijdlijn het grote overzicht (en invoer ziet) en de invoerbox gebruikt voor de details.

Als invoerbox zou je dan zoiets als de datum/tijd invoerbox van Windows kunnen gebruiken (invoer van nummers, maar ook omhoog/omlaag scollen afhankelijk van waar je cursor staat).

[ Voor 38% gewijzigd door Verwijderd op 13-10-2004 16:14 ]


Verwijderd

Hoe groot mag de interface ongeveer zijn?

Formaat monitor? Of formaat 1 regelig display (onze termostaat)?

Misschien is het wat om met een pijltje omhoog/beneden door de tijd te "scrollen" Zeg maar +10 minuten / -10 minuten ofzo? Of hoe langer je indrukt hoe sneller hij scrollt? zoals de 'fwd' op veel CD spelers.

  • Macros
  • Registratie: Februari 2000
  • Laatst online: 30-04 09:28

Macros

I'm watching...

Verwijderd schreef op 13 oktober 2004 @ 16:12:
Tijdlijn:
Dat hadden we zelf ook al bedacht, maar een tijdlijn is te groot, of te onnauwkeurig. Een hele lange drop-down list met zowel uren als minuten in een lijst is ook te lang om te gebruiken.
Daarom dat je hem in een scrollpane moet zetten, met de scrollbars disabled.

"Beauty is the ultimate defence against complexity." David Gelernter


Verwijderd

Topicstarter
Formaat:
Laten we uitgaan van 1024x768, maar er moeten wel 11 van deze 'entry-lines' op het beeld passen, plus nog wat knoppen en een 'niet-verwaarloosbaar-grote' thermometer die de huidige temperatuur aangeeft.

Omhoog omlaag knopjes die steeds sneller gaan:
Mja, stel dus dat je op 21:30 al een temperatuursverandering hebt staan, en je moet een andere van 20:15 naar 21:35 zetten. Dan laat je hem eerst tot zo'n 20:25 lopen en vervolgens ga je in kleine stapjes naar 21:35. Bij de 21:30 krijg je dan een error. Het zal niet altijd gebeuren, maar het komt zeker voor.
Macros schreef op 13 oktober 2004 @ 16:31:
[...]

Daarom dat je hem in een scrollpane moet zetten, met de scrollbars disabled.
We denken niet dat het handig is om zo'n ontzettend lange lijst door te moeten lopen. In principe werkte het idee met de twee drop-down lists ontzettend snel... totdat we bij het gedeelte error-checking aankwamen :D

[ Voor 29% gewijzigd door Verwijderd op 13-10-2004 16:33 ]


  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 10-11-2025

OkkE

CSS influencer :+

Verwijderd schreef op 13 oktober 2004 @ 16:22:
Hoe groot mag de interface ongeveer zijn?

Formaat monitor? Of formaat 1 regelig display (onze termostaat)?

Misschien is het wat om met een pijltje omhoog/beneden door de tijd te "scrollen" Zeg maar +10 minuten / -10 minuten ofzo? Of hoe langer je indrukt hoe sneller hij scrollt? zoals de 'fwd' op veel CD spelers.
Ook hier zit je dan denk ik met het probleem dat als je om 13.00 iets hebt staan en om 14.00, en je wil die van 14.00 naar 12.00 verplaatsen, dat je dan langs 13.00 komt en een error krijgt..

Maar, wat is er mis met de tijd gewoon als "1400" of "1145" te laten intypen? Evt, met : of . erin, en deze filteren? Zo heb je denk ik geen last van een error. Zeker niet als je pas opslaat als er 4 cijfers staan.. Maar misschien is dit wel weer net iets te gebruiksonvriendelijk... lastig.

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Verwijderd

Ik zou de tijd gewoon als tekst laten invoeren, vervolgens checken of de datum geldig is, in VB kan het, weet niet hoe het in Java zit, en vervolgens de tijd converteren naar seconden vanaf het jaar 2000. Zo kun je er exact op sorteren en heb je gelijk geen probleem meer met Amerikaanse / Nederlandse datum notatie

  • Obliterator
  • Registratie: November 2000
  • Laatst online: 30-04 16:09
Misschien iets zoals op PDA's gebeurt? Twee comboboxen een voor de uren en een voor de minuten (in stappen van x minuten).

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Je zou een klokje kunnen maken? Met wijzers die versleept kunnen worden of iets dergelijks. Je moet dan wel rekening houden dat het onduidelijk kan zijn of je nu AM of PM bedoelt. Dat moet er natuurlijk wel bij komen te staan. Lijkt me dat iedereen wel kan kloklezen die je prog gebruikt. Dit is wel iets lastiger te maken dan een selectbox of textbox natuurlijk :)

Erg mooi zou zijn als je de tijd er bijvoorbeeld onder zou zetten. Dan heb je gelijk het probleem met AM en PM opgelost. En je zou die eventueel ook nog editable kunnen maken.

[ Voor 32% gewijzigd door Michali op 13-10-2004 16:53 ]

Noushka's Magnificent Dream | Unity


  • Rukapul
  • Registratie: Februari 2000
  • Nu online
Sliders en dropdown boxes en tekstvelden zijn altijd maar rot om in te vullen voor een gebruiker :/

Waarom niet goed naar de applicatie kijken: thermostaat
En eens naar andere voorbeelden kijken: agenda (hier vul je per week wat in net als met een thermostaat)

Combineer bovenstaande en bedenk eens een bestaande applicatie die dit redelijk gebruiksvriendelijk oplost: Outlook Calendar. Het is lang geleden dat ik het gebruikt heb maar in principe kan een gebruiker een tijd aanklikken en desgewenst ook invoeren, wat hem het beste bevalt. Je kunt zelfs eenvoudig de range aangeven waar je een bepaalde temperatuur zou willen hebben....

Zoiets dus:
Afbeeldingslocatie: http://www.uta.edu/soe/educationtech/mtt/images/calendar.gif

[ Voor 35% gewijzigd door Rukapul op 13-10-2004 16:57 ]


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 20:29

Robtimus

me Robtimus no like you

Ipv dropdown boxen is de JSpinner misschien een idee anders.

offtopic:
Hmmm, toevallig 3e jaars TI aan de TU/e? Zo ja, doe ff de groeten aan De Bra :P

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 19-05 18:05
Kan die foutmelding niet gewoon een tekstje zijn wat weergegeven wordt op een bepaalde plaats op het scherm? Dan maakt het toch helemaal niets uit dat je die foutmelding ziet?

[ Voor 12% gewijzigd door djluc op 13-10-2004 20:06 ]


Verwijderd

Foei The_Rabbit!

Zit je nou gewoon je huiswerk voor ons te posten? Want dit riekt verdacht naar iets wat ik voor het vak User Interfaces heb moeten maken op de TU/e :p...

Wij hebben het trouwens met een (grafische) tijdslijn gedaan. Ik zal eens kijken of ik de code nog ergens op kan duikelen, misschien dat je er iets aan hebt als voorbeeld (niet kopiëren hè B)).

Edit: Dit is wat wij toen gemaakt hebben. Je kan nog niet echt zien van wanneer tot wanneer een interval nou loopt. Het plan was nog om daar twee dubbele spincontrols bij te maken (eentje voor uren en eentje voor minuten, en dan tweemaal voor begin- en eindtijd) zodat je de duur van elk interval precies kon afstellen, maar dat is er eigenlijk nooit meer van gekomen. Toch nog een 8 voor gescoord :Y).

[ Voor 39% gewijzigd door Verwijderd op 13-10-2004 21:47 ]


  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 14:56
Voor java geen idee, ik liep in VB tegen een gelijksoortig probleem aan. Heb het toen zo opgelost.
Twee combo's (1 uren en 1 minuten).
Klaar.
Dacht ik.
Inderdaad, bij het checken op dubbele tijden hetzelfde probleem als in startpost.
Opgelost door de twee comboboxes in een frame te donderen (of enig ander containerachtig element) en de tijd te checken bij een exit frame event.
Ik heb geen idee hoe dit te vertalen naar een java oplossing, uberhaubt, of java iets equivalents heeft, maar misschien kan je er wat mee.

  • pistole
  • Registratie: Juli 2000
  • Laatst online: 19-05 21:43

pistole

Frutter

Verwijderd schreef op 13 oktober 2004 @ 16:02:
Twee dropdown lists (uren en minuten):
Op zich een goede oplossing, maar stel dat je een event hebt op 1:00u en een op 2:00u. Als je die van 2:00u dan wilt veranderen naar 1:45u, en je verandert daarbij éérst uren en dan minuten, dan staat er dus even 1:00u, en dan krijgt de gebruiker de foutmelding dat het tijdstip al bezet is (onterecht). Ook hier is een apply-knop mogelijk, maar dat hebben we wederom liever niet.
Je zou wellicht iets met een timertje kunnen doen. Dus pas x seconden na een aanpassing updaten naar je database. Dat heeft wat mij betreft ook twee voordelen:
-je voorkomt nutteloze transacties (gebruikers gedrag: 10u10, ohnee 10u15, of toch maar 10u20). Scheelt je wellicht 2 transacties
-een update wordt gedaan als de gebruiker wegloopt.

Wat betreft fouten: als de gebruiker wegloopt, zou ik proberen audible errors te gebruiken

Ik frut, dus ik epibreer


Verwijderd

Topicstarter
Voor zover nuttig: http://www.student.tue.nl/h/b.p.knijnenburg/thermo/

[ Voor 40% gewijzigd door Verwijderd op 17-11-2004 00:52 . Reden: link veranderd, gebruik deze aub... ]


  • Macros
  • Registratie: Februari 2000
  • Laatst online: 30-04 09:28

Macros

I'm watching...

Hij doet het hier niet in Windows met SDK/JRE 1.4.2_05.
Geeft na het laden een mooi wit scherm.
edit:
Tweede keer proberen in een andere browser laat hem wel werken

[ Voor 46% gewijzigd door Macros op 17-11-2004 10:43 ]

"Beauty is the ultimate defence against complexity." David Gelernter


  • Macros
  • Registratie: Februari 2000
  • Laatst online: 30-04 09:28

Macros

I'm watching...

Functionele opmerking voor als dit een echt programma zou zijn:
- geen mogelijkheid om de tijd in te stellen wanneer de dag begint/eindigd
- geen mogelijkheid om iets in 1 keer in te stellen voor alle dagen in de week / alle werkdagen / alle weekend dagen
- zou heel mooi zijn om een grafische weergave van de temperatuur te maken tegen de tijd in een diagram

"Beauty is the ultimate defence against complexity." David Gelernter


Verwijderd

Topicstarter
true, maar kostte teveel tijd, en was niet nodig

  • riezebosch
  • Registratie: Oktober 2001
  • Laatst online: 16-05 11:22
Kan je niet iets doen met twee van soort tekstvakken met daarnaast een scrollbar zonder slider (dus alleen knopjes pijltje omhoog en naar beneden)? En dat je controleerd wanneer de focus van de uren naar de minuten gaat je nog geen check doet, en wanneer ze gewoon focus verliezen wel?
(Kan natuurlijk ook gewoon met comboboxen).

[ Voor 9% gewijzigd door riezebosch op 17-11-2004 01:38 ]

Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack


  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 21-02 23:50
Nogal cheap om hier je huiswerk te posten the_rabbit.
Zal ik De Bra mailen? :P

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


  • Sjaaky
  • Registratie: Oktober 2000
  • Laatst online: 22-04 07:04
Ik denk dat je je invoer en je foutmeldingen moet scheiden. Een gebruiker kan best in stapjes vanaf 21u35 naar 20u35 toe scrollen/klikken als er al iets op 21u30 gedefinieerd staat. Hetgeen je over na moet denken is de manier waarop je de foutmelding laat zien. Ongelovelijk vervelend is natuurlijk een messagebox, omdat je dan niet 'door' de 21u30 heen kan. Maar het is wel acceptabel (voor mij) om de fout in de statusbalk te laten zien. Je kan dan gewoon verder met wat je wilt doen en hoeft geen foutmeldingen weg te klikken. Als je heel duidelijk laat zien dat en wat er fout is, is het de fout van de gebruiker dat hij op dat moment wegloopt.
Als je er maar voor zorgt dat foutmelding je niet belemmert in het invoeren van een nieuwe tijd.

Ken je trouwens de spinners in 3dsmax? Als je daar op klikt kan je naar boven en naar beneden 'draggen', als je bovenaan het scherm komt, komt je pijltje aan de onderkant van het scherm uit. Zo krijg je een enorm bereik met een zelf te definieren nauwkeurigheid. Ik weet alleen niet of dit in java te programmeren is.

Vanuit het uitgangspunt "het systeem mag nooit in een fouttoestand staan", kan je ook zorgen dat je bij spinners de foutieve waarden automatisch overslaat.
Verder is de grafische temperatuur tegen tijd lijn van Macros een goed idee, daarmee kan je systeem ook niet in fout situatie terecht komen.

  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 14:02

Tomatoman

Fulltime prutser

Je hebt diverse conflicterende eisen:
• invoer moet eenvoudig zijn en op een klein schermoppervlak passen;
• je wilt geen tekstinvoer hebben, maar liever een datum/tijd die aangeklikt kan worden;
• je kunt niet vier losse controls voor datum en tijd gebruiken (datum aan, tijd aan, datum uit, tijd uit) i.v.m. data-integriteit;
• je wilt liever geen dialoogvenster, want dat verstoort de program flow.

Een mogelijke oplossing is een dropdown box, waarbij je het editgedeelte van de box gebruikt voor handmatige invoer (snel en klein) en het dropdowngedeelte voor uitgebreide invoer in de vorm van een soort 'dropdown-dialoogvenster'. Developer Express heeft het als volgt opgelost (in dropdown-staat):

Afbeeldingslocatie: http://www.devexpress.com/content/products/vcl/i/editors/examples/g4_DateEditor.gif


Dit ondervangt de meeste eisen die je stelt, maar niet alles.
[list]• Het eerste probleem is dat je niet in een oogopslag kunt zien wat de begin- en einddatum en -tijd zijn. Dat kun je als volgt oplossen. Je zet twee van die dropdowns onder elkaar, een voor thermostaat aan en een voor thermostaat uit. Daarnaast zet je een read-only control die grafisch het interval weergeeft dat de thermostaat aan is, bijvoorbeeld als een soort kalender.
• Het tweede probleem is dat je nog steeds niet hebt ondervangen dat de eindtijd vóór de begintijd ligt. Dat moet je hoe dan ook met een truc oplossen, want als je geen dialoogvenster gebruikt, ben je aangewezen op meer dan één invoerveld. Suggestie: als de eindtijd ligt vóór de begintijd, geef je in plaats van de read-only control met het tijdsinterval een waarschuwing aan. Zolang de waarschuwing er staat, neem je de schakeltijden eenvoudigweg niet in de database op. Zo voorkom je dat er een apply button nodig is.

De dropdown box moet je natuurlijk nog wel ergens vandaan halen. Je kunt er zelf een schrijven of op zoek gaan naar een freeware component. Helaas voor jou is het voorbeeld in de screenshot hierboven niet bepaald gratis en ook niet beschikbaar in een Java-variant.

[ Voor 8% gewijzigd door Tomatoman op 17-11-2004 13:20 ]

Een goede grap mag vrienden kosten.


  • Johnny
  • Registratie: December 2001
  • Laatst online: 09:23

Johnny

ondergewaardeerde internetguru

tomatoman schreef op woensdag 17 november 2004 @ 12:14:

De dropdown box moet je natuurlijk nog wel ergens vandaan halen. Je kunt er zelf een schrijven of op zoek gaan naar een freeware component. Helaas voor jou is het voorbeeld in de screenshot hierboven niet bepaald gratis en ook niet beschikbaar in een Java-variant.
Er bestaat voor Java zo'n component dat "Java date picker" heet, dat is gratis voor niet-commercieel gebruik.

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


  • yrew
  • Registratie: Augustus 2001
  • Laatst online: 18:31
Ik heb veel gehad aan jcalendar. Ik weet de preciese download plek niet meer, maar zoek eens via google op "jcalendar.jar, kunststoff.jar". Heb zelf veel positieve reacties van gebruikers gehad. JCalendar.jar bevat een swing spinner component waarin je zelf een reeks op kan geven. Dus voor de uren 0 t/m 23 en de minuten 0 t/m 59.

En ik heb in dit topic alleen ff snel gezocht op beide jars, so don't shoot me als ik weereens te snel post. :)

Groetjes


  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 19:37

Reptile209

- gers -

Je kan natuurlijk ook controleren bij het scrollen/selecteren dat een tijd niet dubbel gekozen kan worden. M.a.w.: je geeft geen foutmelding, maar laat die tijd rood gekleurd zien (en niet kiesbaar) of je laat 'm helemaal achterwege. Dan weet je iig zeker dat er geen twee events tegelijk vallen.
Je zit een beetje met het dillemma dat je de gebruiker niks wil vertellen en dat alles moet kunnen. Eén van die twee moet je dus een beetje inleveren in deze situatie.

Zo scherp als een voetbal!


Verwijderd

Topicstarter
Mja bedankt voor de tips, maar het is nu af, en het werkt naar onze mening heel okee...

@ Grijze vos: beetje cheap om meteen te zeggen dat we "ons huiswerk posten"... we vragen alleen naar een oplossing voor een klein probleem (anders was het topic wel: "wie programmeert voor ons effe een thermostaat"), en we hebben Paul de Bra zelf ook gevraagd om een oplossing. Hij vond het fijn om te horen dat we er in ieder geval over nadachten!
Pagina: 1