Yksinkertaisten sovellusten rakentaminen PowerAppsilla on nopeaa. Niin nopeaa, että sillä on järkevää toteuttaa myös sovelluksia, joiden elinkaari on lyhyt. Nimitän näitä kertakäyttösovelluksiksi. Tällaisia ovat esimerkiksi

  • pikkujoulujen sähköiset drinkkiliput
  • pikkujoulujen sketsihahmokilpailun sähköinen äänestys
  • rokotusajan varaaminen syksyllä 2018

Tehtyä PowerAppsia voi toki kierrättää, mikäli vastaava tarve toistuu

  • kesäjuhlien sähköiset drinkkiliput
  • kerroksen turvallisuusvastaavan sähköinen äänestys
  • käyttöönotetun järjestelmän tukituntien varaaminen

Toteutetaan tällä kertaa nopeasti yksi kertakäyttösovellus.

Esimerkki – Klinikka-ajan varaamaninen

Tehdään sovellus, jolla käyttäjä varaa kahdenkeskisen hetken ideoiden ja ongelmien läpikäymiseen yhdessä asiantuntijan kanssa. Konsepti kulkee usein nimellä klinikka.

  • Asiantuntijat listaavat heille mahdolliset klinikka-ajat
  • Käyttäjä varaa itselleen sopivan ajan
  • Varauksista lähetään käyttäjälle ja asiantuntijalle kalenterikutsu

Ratkaisua voi soveltaa pienin muutoksin vaikka mihin. Influenssarokotusaikojen tai tavoitekeskustelujen varaamiseen. Muuta ratkaisua siten, että samalle ajalle voi ilmoittautua useita henkilöitä.

Onnittelut! Toteutit juuri kurssi-ilmoittautumisen.

Palataan kuitenkin klinikka-aikoihin ja aloitetaan.

Varattavat ajat – SharePoint-lista

Luodaan klinikka-aikojen tallentamiseksi SharePoint-lista, jonka kentät ovat

  • Varattavan ajan alkuaika (StartTime)
  • Varattavan ajan pituus minuutteina (Duration)
  • Varaaja (Person)
  • Klinikan pitäjä (Trainer)

Lisätään listalle muutama varattava aika.

Screenshot 2018-11-06 at 18.13.53.png

Ajan varaaminen – PowerApps

Luodaan tyhjä (Canvas) PowerApps ja lisätään siihen galleria, jonka tietolähteenä on yllä luomamme lista.

Screenshot 2018-11-06 at 18.17.03.png

Muotoillaan galleriaa hieman. Lisätään omiksi kentikseen varattavan ajan

  • päivämäärä: Text(ThisItem.StartTime, ShortDate, ”fi-FI”)
  • kellonaikaText(ThisItem.StartTime, ShortTime24, ”fi-FI”)
  • klinikan pitäjän valokuvaTrainer.Picture
  • klinikan pitäjän nimiTrainer.DisplayName
  • klinikan kestoDuration & ”  min”

Varattavissa olevat ajat -galleria näyttää muokkauksen jäljiltä tältä.

Screenshot 2018-11-06 at 18.31.04.png

Aikojen suodattaminen päivän perusteella

Aikoja voi olla todella paljon, joten tarjotaan käyttäjälle mahdollisuus suodattaa vapaita aikoja päivän perusteella. Lisätään näytölle alasvetovalikko (dropdown list), jonka arvojoukoksi poimitaan päivät, jolloin klinikoita järjestetään.

En syöttänyt aikoja listalle aikajärjestyksessä, joten joudun järjestämään (Sort) ne nyt.

Screenshot 2018-11-06 at 18.32.35.png

Suodatetaan (filter) galleriassa esitettävät ajat päivämäärävalinnan mukaan. Lisätään samalla suodattimeen ehto IsBlank(Person). Nyt listalla näytetään ainoastaan vapaat ajat. Eli ne joiden person-kenttä on tyhjä.

Järjestetään varattavat ajat samalla aikajärjestykseen.

Screenshot 2018-11-06 at 18.45.41.png

Kaikkien vapaiden aikojen näyttäminen

Varattavat ajat jakaantuvat usealle päivälle. Vapaita aikoja on lopuksi jäljellä vain muutamia, jolloin niiden löytäminen voi olla hankalaa. Tässä vaiheessa on kätevää, mikäli kaikki vapaat ajat näytetään yhdellä kerralla.

Lisätään tällainen vaihtoehto (Show all available times).

Screenshot 2018-11-06 at 18.49.31.png

Päivän valitseminen ja ”Näytä kaikki ajat” ovat toisensa poissulkevia valintoja. Disabloidaan päivämäärävalinta, mikäli käyttäjä on valinnut ”Näytä kaikki ajat”.

Screenshot 2018-11-06 at 18.52.04.png

Lopuksi asetataan galleria näyttämään valinnan mukaiset rivit. Joko kaikki vapaat ajat tai valitun päivän vapaat ajat.

Screenshot 2018-11-06 at 19.38.01.png

Ajan valinta

Haluamme korostaa valitun rivin selvästi, jottei käyttäjä varaa epähuomiossa väärää aikaa. Määritellään valitulle riville (ThisItem.IsSelected)

  • taustaväriksi läpikuultava vihreä: TemplateFill = If (ThisItem.IsSelected, RGBA(152, 208, 70, 0.34))
  • klinikan pitäjän kasvokuva piilotettavaksi: Visible = Not(ThisItem.isSelected))
  • kasvokuvan tilalle näytettäväksi väkänen: Visible = ThisItem.isSelected

Lopputulos näyttää tältä.

Screenshot 2018-11-06 at 19.00.02.png

Riittävän hyvä. Jatketaan matkaa.

Oletusvalinnan poistaminen

Galleriassa on oletuksena valittuna aina ensimmäinen rivi. Tämä voi johtaa virheellisiin varauksiin. Muutetaan toiminnallisuutta siten, että käyttäjä joutuu itse tekemään valinnan.

Luodaan muuttuja (itemIsSelected), joka saa arvon true käyttäjän klikatessa mitä tahansa gallerian riviä.

Screenshot 2018-11-06 at 19.27.48.png

Vastaavasti muuttuja saa arvon false käyttäjän vaihtaessa päivää tai valitessa ”Show all available times”.

Screenshot 2018-11-06 at 19.30.41.png

Vaihdetaan lauseen ThisItem.IsSelected tilalle ThisItem.IsSelected And itemIsSelected. Lause ei ole enää tosi PowerAppsin valitessa käyttäjän puolesta galleriasta ensimmäisen rivin. Muutetaan

  • Valitun rivin taustaväri:  TemplateFill = If (ThisItem.IsSelected And itemIsSelected, RGBA(152, 208, 70, 0.34))
  • Klinikan pitäjän kasvokuva: Visible = Not(ThisItem.IsSelected And itemIsSelected)
  • Väkänen: Visible = ThisItem.IsSelected And itemIsSelected

Näin meillä on täysi kontrolli, milloin rivi esitetään valittuna.

Ajan varaaminen

Valittu aika pitää vielä oikeasti varata. Eli tallentaa valitun rivin Person-kenttään käyttäjän sähköpostiosoite. Lisätään näytölle painike, joka on aktiivinen mikäli galleriasta on valittu rivi.

booking button.png

Painikkeen OnSelect -tapahtuma näyttää seuraavalta.

Screenshot 2018-11-10 at 9.33.10.png

Kyllä. Sekavalta näyttää.

Käyttäjän vielä miettiessä on joku toinen voinut varata saman ajan. Ennen tallennusta tulee tarkistaa, onko valittu aika vielä vapaa. Tämä aiheuttaa hieman monimutkaisuutta.

Painiketta painettaessa

  • Haetaan SharePoint-listalta muuttujan (isTimeFree) arvoksi valitun ajan varaaja-tieto (Person).
    • Mikäli aika on vapaa (isTimeFree on tyhjä), varataan se ja siirrytään kuittaussivulle
    • Mikäli aika ei ole vapaa, ilmoitetaan siitä kohteliaasti käyttäjälle
  • Poistetaan aktiivinen valinta
  • Päivitetään näytettävä tietojoukko

Kuittaussivu on yksinkertainen.

Screenshot 2018-11-06 at 19.52.02.png

PowerAppsimme on valmis.

Kalenterikutsun lähettäminen – Flow

Jokaisesta tehdystä varauksesta lähetetään kalenterikutsu varaajalle ja kouluttajalle. Tämä on helppo toteuttaa Flow:lla, joka käynnistyy varauslistan rivin päivityksen yhteydessä.

meeting flow

Tapahtuman alkuaika on varauslistalta löytyvä alkuaika. Loppuaika vastaavasti alkuaika + kesto.

Lähetetty kalenterikutsu näyttää tältä.

meeting.png

Ajanvarauslomakkeen julkaisu – SharePoint

Asiantuntijaklinoista löytyy esittelysivu SharePointista. Täydellinen paikka klinoikden ajanvarauslomakkeelle.

Screenshot 2018-11-08 at 19.18.32

Lisätään PowerApps sivun oikeaan reunaan.

Screenshot 2018-11-08 at 19.30.00

Valmista. Siitä vain aikoja varaamaan.