Komponentit ovat yksi Power Appsin turhan vähälle käytölle jääneistä ominaisuuksista. Komponenttien hyödyntäminen on erinomainen keino rakentaa ylläpidettävämpi ja suorituskykyisempi sovellus.
Komponentit ovat kuitenkin konseptina (input, output ja behaviour parameterien siivittämänä) kallellaan perinteisen sovelluskehityksen suuntaan. Tästä johtuen kynnys niiden käytön aloittamiselle saattaa olla kansalaiskehittäjille turhan korkea.
Olen kirjoittanut komponenttien teosta useammankin jutun. Jos aihe on tuntematon, voit aloittaa niistä
- PowerAppsin komponentit (Osa 1) – Navigaatio
- PowerAppsin komponentit (Osa 2) – Organisaation yhteinen alatunniste
- PowerApps – Miten toteutan dialogi-ikkunan uudelleenkäytettävänä komponenttina
- Oman valinta-komponentin toteuttaminen
Komponentit ovat juttujen kirjoittamisen jälkeen kehittyneet. Suurimpana yksittäisenä uudistuksena mahdollisuus laukaista komponentista käsin tapahtumia (behaviour property).
Tällä kertaa ei kuitenkaan keskitytä komponenttien tekemiseen vaan siihen, miten samaa komponenttia voidaan hyödyntää useassa eri sovelluksessa.
Komponentin luominen
Luodaan esimerkkisovellus ja sen sisälle kaksi komponenttia (header ja footer).


Komponentteja hyödyntävä sovellus näyttää tältä.

Sovellus on siis sama, jonka sisään juuri loimme nämä kaksi komponenttia.
Komponenttien hyödyntäminen toisessa sovelluksessa
Luodaan toinen sovellus, johon tuodaan import-komennolla juuri luomamme komponentit.

Komponentteja voi tuoda samassa ympäristösssä olevista sovelluksista (joihin sinulla on maker-oikeudet).

Näin meillä on uusi sovellus, joka käyttää ensimmäisen sovelluksen kanssa samoja komponentteja.

Ei kutenkaan aivan…
Tarkalleen ottaen sovellukseemme luotiin juuri kopiot alkuperäisistä komponenteista.
Jos luomme vielä kolmannen sovelluksen ja tuomme sinnekin komponentteja, voimme poimia header ja footer komponentit mukaan jommasta kummasta juuri luomastamme sovelluksesta.

Kun teemme muutoksia komponentteihin sovelluksen sisällä, eivät nämä muutokset näy mitenkään muille ”samoja” komponentteja käyttäville sovelluksille.
Ei hirmuisen kätevää.
Onneksi ei myöskään enää tuettua. Komponenttien vieminen ja tuominen sovelluksesta toiseen on nykyään oletusarvoisesti pois päältä. Ominaisuus tulee jossain vaiheessa katoamaan kokonaan.

Komponenttikirjaston luominen
Se oikea ja tuettu tapa jakaa komponentteja on komponenttikirjaston (Component library) hyödyntäminen.
Luodaan ympäristöömme sellainen.

Kirjastoa luodessa sille annetaan ainoastaan nimi.

Meille avautuu Power Apps -editori. Totutusta poiketen se avautuu suoraan komponentti-näkymään.

Luodaan (tai tuodaan vanhoista sovelluksista) haluamme komponentit tänne.

Muistetaan tallentaa (ja julkaista) kun on valmista.
Näin meillä on ympäristössämme uusi komponenttikirjasto, joka voi sisältää useita komponentteja. Kirjaston voi jakaa muiden käyttöön aivan kuten sovelluksenkin.

Komponenttien käyttö komponenttikirjastosta
Miten kirjastossa olevia komponentteja hyödynnetään?
Luodaan uusi sovellus, ja poimitaan siihen tarvittavat komponentit kontrollilistan alapuolelta löytyvällä ”Get more components” -valinnalla.

Voimme valita (meille jaetuista ja samassa ympäristössä olevista) komponenttikirjastoista sovelluksemme käyttöön tarvittavat komponentit

Tämän jälkeen valitut komponentit näkyvät muiden kontrollien joukossa. Niitä voi käyttää sovelluksessa tuttuun tapaan.

Huomaa, etteivät tuomamme komponentit näy sovelluksen omalla komponentit-välilehdellä. Niitä voi muokata ainoastaan komponenttikirjastossa (mikäli sinulla on siihen muokkausoikeudet).

Komponentit välilehdeltä löytyvät vain komponentit, jotka on rakennettu tämän sovelluksen käyttöön ja joita ei jaeta muualle.
Komponenttien päivittäminen
Sovelluksen tekijä ei voi muokata kirjastosta käyttöönsä poimimia komponentteja. Ja hyvä niin.
Mitä tapahtuu kun komponentin tekijä päivittää kirjaston komponentteja?

Ei yhtään mitään, kunnes tulee hetki jolloin komponenttikirjasto julkaistaan uudelleen.

Julkaistuille sovelluksille jotka hyödyntävät kirjaston komponentteja ei tapahdu vielä mitään. Mutta kun sovelluksen seuraavan kerran ottaa muokattavaksi, ilmestyy näytölle ilmoitus saatavilla olevista komponenttikirjastojen päivityksestä.

Review-painike avaa listan päivittyneistä komponenttikirjastoista. Voimme valita listalta, mitkä kirjastoista päivitämme.

Valitaan update ja kas, meillä on päivittynyt header-komponentti.

Nyt voimme rauhassa tarkistaa sovelluksemme toimivuuden tällä uudella komponentilla. Ja lopuksi julkaista sovelluksen, jolloin myös käyttäjät pääsevät nauttimaan päivittyneestä komponentista.
Yhteenveto
Totesin alussa että komponentteja hyödynnetään Power Appseissa kovin vähän. Komponenttikirjastoja luonnollisesti vielä huomattavasti vähemmän.
Komponenttikirjastot kun eivät ole ensimmäinen asia, jota Power Apps tekemisessä lähdetään rakentamaan.
Komponentit ovat äärimmäisen hyödyllisiä sovelluksen sisäisessä käytössä. Huomattavasti hankalampaa on keksiä käyttökohteita, joissa samaa komponenttia hyödynnettäisiin useassa eri sovelluksessa. Ja siihenhän nämä kirjastot ovat luotu.
Ensimmäisenä tulee mieleen mobiilisovellusten navigaatio ja sovellusten geneeriset ylä- ja alatunnisteet.
Komponenttikirjastot asuvat sovellusten tapaan aina yhdessä ympäristössä. Mutta ei huolta. Ne saadaan lisättyä ratkaisupakettiin (solution).

Komponenttikirjastoja luodessa kannattaa ottaa huomioon se, että koko dokumenttikirjasto julkaistaan aina kerrallaan. Ei siis ole mahdollista julkaista kirjaston sisältä yhtä komponenttia muiden käyttöön muutosten valmistuttua. Kaikki kirjaston komponentit tulee olla julkaisukunnossa kirjastoa julkaistaessa.