Valmiita blogikirjoituksiani lukiessa saattaa syntyä mielikuva, jossa teksteissä esitellyt ratkaisut syntyvät vaivattomasti (lähes itsestään). Ja älyttömän nopeasti.

Näin ei tietenkään aina ole.

Tekeminen on toki vaivatonta. Heti kun kaikki tarvittavat asiat on ensin opetellut.

Oma motivaationi kirjoittamiselle on uuden oppiminen. Ratkaisuissa on yleensä joku kulma, jota en ole aiemmin kokeillut.

Uuden oppimisesta, sekä satunnaisista vastoinkäymisistä, toimii hyvänä esimerkkinä viime viikon kirjoitus junan infonäytön toteuttamisesta PowerAppsilla.

Miksi halusin tehdä junan infonäytön?

Lyhyesti? Tuon reittinäkymän vuoksi.

IMG_4342

Se on selvästi PowerAppsin gallerialla toteutettava käyttöliittymäelementti. Mutta toisin kuin yleensä, käyttäjä ei valitse galleriasta riviä. Koska sovelluksella ei ole käyttäjää kliksuttelemasssa käyttöliittymäelementtejä.

Mietin useana aamuna junassa istuessani, miten tuo reittinäkymä kannattaa toteuttaa. Reitin ”tilaa” (millä asemalla ollaan) kun tulee voida manipuloida ohjelmallisesti.

Screenshot 2018-11-10 at 12.08.36

Gallerialla on kätevä SelectedItem -ominaisuus, joka kertoo mikä gallerian rivi on valittu.  Tätä ajattelin hyödyntää.

Mutta SelectedItem -ominaisuutta ei voi päivittää ohjelmallisesti.

Päädyin lopulta ylläpitämään junan sijaintia kuvaavia muuttujia. Gallerian käyttöliittymäelementeissä hyödynnetään niitä (mikä elementti milloinkin näkyy ja minkä värisenä).

Mutta ennen varsinaisen PowerAppsin rakentamista, tulee tietää keskeisten paikkojen (pysäkit ja kuulutukset) sijainnit.

Tärkeiden sijaintien selvittäminen

Sijaintien selvittämistä varten tein tietenkin oman PowerAppsin.

img_58b97ec0acd7-1.jpeg

Painiketta painamalla PowerApps lähettää sähköpostiini sijaintini, sekä tekstikenttään kirjoittamani tekstin.

Yhden työmatkan aikana lähetin itselleni kaikkien pysäkkien, sekä niitä edeltävien kuulutusten aloituspaikkojen sijainnit. Lisäsin ne SharePoint-listalle, johon olin aiemmin syöttänyt pysäkkien nimet ja lähtöajat.

Milloin juna on saapunut asemalle? Milloin kuulutus käynnistyy?

Yleensä PowerAppsia tehdessä eteen tukee vähintään yksi kinkkinen toteutettava asia. Tällä kertaa se oli junan sijainnin seuraaminen suhteessa reittiin.

Onneksi PowerAppsissa voi hyödyntää laitteen sijaintitietoa (puhelimessa GPS-tietoa).

Ensimmäinen yritykseni havaita juna on saapuminen asemalle, perustui kartalla oleviin laatikoihin. Laatikko on aseman leveysaste +/- marginaali sekä pituusaste +/- marginaali.

Tarkistin sekunnin välein osuuko junan sijainti seuraavaan kiinnostavaan kuvitteelliseen laatikkoon.

Screenshot 2018-11-10 at 18.28.38

Muutaman työmatkan jälkeen (kyllä, debuggaus tapahtui työmatkoilla), tajusin että lähestymisessä on perustavaa laatua oleva ongelma.

Junan sisällä puhelimen GPS-signaali hävisi ajoittain pitkiksikin ajoiksi. Mikäli tällöin  pyyhällettiin kuvitteellisen laatikon läpi, oli kaikki pilalla. Ratkaisu ei tästä mitenkään toipunut.

Hylkäsin laatikot ja siirryin kuvitteellisiin viivoihin. Esimerkiksi Sellon kohdalla on punainen viiva. Kun junan koordinaatit ovat viivan oikealla puolella, tulkitaan juna saapuneeksi asemalle.

Johan alkoi toimimaan.

Screenshot 2018-11-16 at 21.35.52

Käyttöliittymän rakentaminen

Sovellusta rakentaessa kannattaa aloittaa vaikeimmasta osuudesta. Eli junan sijainnin määrittämisestä suhteessa reittiin.

Tämän osuuden testaamiseen riitti hieman ankeampi käyttöliittymä. Minä aloitin tällä.

IMG_4DC3F25E1ACF-1

Vasta kun olin varma että saan homman toimimaan, aloin rakentamaan lopullista käyttöliittymää.

Tarvitsin kuitenkin debuggausta varten edelleen kaikenlaista lisäinfoa.

Screenshot 2018-12-17 at 17.46.39.png

Piilotin debuggaus-kontrollit vasta aivan lopuksi.

Jäikö jotain tekemättä?

Aina blogijutuissa jää (ainakin omissani) jotain tekemättä. Nämä eivät ole sellaisenaan tuotantokäyttöön tarkoitettuja ratkaisuja.

Tällä kertaa lista on seuraava

  • Ratkaisu toimii vain E-junassa välillä Kera – Helsinki. Ja vain tähän suuntaan.
  • Ratkaisussa ei ole nopeusnäyttöä kuten esikuvassaan
  • Kuulutukset eivät jostain mystisestä syystä lähde käyntiin. En jaksanut debugata enempää. Junan kulkua manuaalisesti simuloimalla kuulutukset toimivat. Joku pikku bugi jossain…
  • Reittinäkymä toimii vain viidellä reitin viimeisellä asemalla

Viimeisellä kohdalla tarkoitan tätä. Mikäli pysäkkejä on jäljellä enemmän kuin näytölle mahtuu, havainnollistetaan tämä pääteasemaa edeltävällä katkoviivalla.

IMG_4344

Puutteet ovat toki korjattavissa.

  • Reittejä voi tietenkin olla vaikka miten paljon. Toki pitää keksiä joku menetelmä kertoa sovellukselle mitä reittiä lähdetään ajamaan.
  • Paluusuuntaa varten pitäisi lisätä oma koordinaattipiste paluumatkan kuulutuksien aloituspaikoillle
  • Aikataulutiedot voidaan hakea digitraffic -palvelusta
  • Nopeusnäyttö voidaan toteuttaa laskemalla muutaman sekunnin välein junan kulkema matka ja laskemalla siitä edelleen nopeus. Aloin jo tekemään tätä, mutta puhelimeni GPS vaikutti junan sisällä turhan epätarkalta tarkoitukseen.
  • Reittinäkymä voidaan korjata helposti näyttämällä galleriassa aina max 4 asemaa reitiltä. Mikäli niistä ensimmäinen ei ole reitin oiseksi viimeinen asema, näytetään esikuvan mukainen katkoviiva pääteaseman ja reitiltä esitettävän viimeisen aseman välillä. Done.

 

Miten pitkään sovelluksen tekemisessä meni?

Ei mitään käsitystä, sillä kokeilu ajoittui tavanomaista huomattavasti pidemmälle aikavälille. Mallikuvat infonäytöistä otin 6.11. ja valmiin jutun julkaisin 10.12.

Sanotaan vaikka ”joitain iltoja”.