Viitetietoja kaaviosovellusten kalenterinäyttömallista
Tutustu Power Appsin kaaviosovellusten osalta siihen, miten kukin merkittävä kalenterinäyttömallin ohjausobjekti vaikuttaa näytön yleisiin oletustoimintoihin. Tämä syväkatsaus esittää toimintatapakaavat ja muiden ominaisuuksien arvot, jotka määrittävät, miten ohjausobjektit vastaavat käyttäjäsyötteisiin. Tämän näytön oletustoimintoja käsitellään korkealla tasolla kalenterinäytön yleiskatsauksessa.
Tässä aiheessa tuodaan esille joitakin merkittäviä ohjausobjekteja ja selitetään lausekkeet tai kaavat, joille näiden ohjausobjektin eri ominaisuudet (kuten Items ja OnSelect) määritetään:
- Avattava kalenterivalikko (dropdownCalendarSelection)
- Kalenterikuvake (iconCalendar)
- Edellisen kuukauden nuolenkärkipainike (iconPrevMonth)
- Seuraavan kuukauden nuolenkärkipainike (iconNextMonth)
- Kalenterivalikoima (MonthDayGallery) (+ aliohjausobjektit)
- Tapahtumavalikoima (CalendarEventsGallery)
Edellytykset
Perehtyneisyys siihen, miten näyttöjä ja muita ohjausobjekteja lisätään ja määritetään luotaessa sovellusta Power Appsissa.
Avattava kalenteriluettelo.
Ominaisuus: Items
Arvo:Office365.CalendarGetTables().value
Tämä arvo on yhdistintoiminto, joka noutaa sovelluksen käyttäjän Outlook-kalenterit. Näet arvon, jonka tämä toiminto noutaa.
Ominaisuus: OnChange
Arvo:Select(dropdownCalendarSelection)
Kun käyttäjä valitsee vaihtoehdon luettelosta, ohjausobjektin OnSelect-ominaisuuden toiminto suoritetaan.
Ominaisuus: OnSelect
Value: Jos-toiminto, joka näkyy seuraavassa koodilohkossa, ja useita lisätoimintoja, jotka tulevat koodilohkossa sen jälkeen.Tämä kaavan osa suoritetaan vain ensimmäisellä kerralla, kun käyttäjä valitsee vaihtoehdon avattavasta luettelosta sovelluksen avaamisen jälkeen:
If( IsBlank( _userDomain ), UpdateContext( {_showLoading: true} ); Set( _userDomain, Right( User().Email, Len( User().Email ) - Find( "@", User().Email ) ) ); Set( _dateSelected, Today() ); Set( _firstDayOfMonth, DateAdd( Today(), 1 - Day( Today() ), Days ) ); Set( _firstDayInView, DateAdd( _firstDayOfMonth, -(Weekday(_firstDayOfMonth) - 1), Days ) ); Set( _lastDayOfMonth, DateAdd( DateAdd( _firstDayOfMonth, 1, Months ), -1, Days ) ) );
Edeltävä koodi määrittää seuraavat muuttujat:
- _userDomain: Sovelluksen käyttäjän yrityksen verkkotunnus, joka näkyy käyttäjän sähköpostiosoitteessa.
- _dateSelected: kuluvan päivän päivämäärä (oletusarvoisesti). Kalenterivalikoima korostaa tämän päivän, ja tapahtumavalikoimassa näkyvät kyseiselle päivälle ajoitetut tapahtumat.
- _firstDayOfMonth: Kuluvan kuukauden ensimmäinen päivä. Koska
(Today + (1 - Today)) = Today - Today + 1 = 1
, tämä DateAdd-toiminto palauttaa aina kuukauden ensimmäisen päivän. - _firstDayInView: Ensimmäinen päivä, jonka kalenterivalikoima voi näyttää. Tämä arvo ei ole sama kuin kuukauden ensimmäinen päivä, ellei kuukausi ala sunnuntaina. Jotta näkyviin ei tule kokonaista edellisen kuukauden viikkoa, arvo _firstDayInView on
_firstDayOfMonth - Weekday(_firstDayOfMonth) + 1
. - _lastDayOfMonth: Kuluvan kuukauden viimeinen päivä, joka on sama kuin seuraavan kuukauden ensimmäinen päivä, josta vähennetään yksi päivä.
Jos-toiminnon jälkeiset toiminnot suoritetaan aina, kun käyttäjä valitsee vaihtoehdon avattavasta kalenteriluettelosta (ei vain ensimmäisellä kerralla, kun käyttäjä avaa sovelluksen):
Set( _calendarVisible, false ); UpdateContext( {_showLoading: true} ); Set( _myCalendar, dropdownCalendarSelection2.Selected ); Set( _minDate, DateAdd( _firstDayOfMonth, -(Weekday( _firstDayOfMonth ) - 2 + 1), Days ) ); Set(_maxDate, DateAdd( DateAdd( _firstDayOfMonth, -(Weekday( _firstDayOfMonth ) - 2 + 1), Days ), 40, Days ) ); ClearCollect( MyCalendarEvents, Office365Outlook.GetEventsCalendarViewV2( _myCalendar.Name, Text( _minDate, UTC ), Text( _maxDate, UTC ) ).value ); UpdateContext( {_showLoading: false} ); Set( _calendarVisible, true )
Edellä oleva koodi määrittää nämä muuttujat ja yhden kokoelman:
- _calendarVisible: Valueksi määritetään epätosi, jotta kalenteri ei tule näkyviin, kun uusi valinta ladataan.
- _showLoading: Valueksi määritetään tosi, jotta latausilmaisimet tulevat näkyviin, kun uutta valintaa ladataan.
- _myCalendar: Valueksi määritetään avattava kalenterivalikko -ohjausobjektin kulloinenkin arvo, jotta tapahtumat noudetaan oikeasta kalenterista.
- _minDate: Valueksi määritetään sama kuin muuttujalle _firstDayInView. Tämä muuttuja määrittää, mitkä tapahtumat on jo noudettu Outlookista ja tallennettu sovelluksen välimuistiin.
- _maxDate: Valueksi määritetään kalenterin viimeinen tarkasteltava päivä. Kaava on
_firstDayInView + 40
. Kalenterissa näkyy enintään 41 päivää, joten _maxdate -muuttuja vastaa aina viimeisintä tarkasteltavaa päivää ja määrittää, mitkä tapahtumat on jo noudettu Outlookista ja tallennettu sovelluksen välimuistiin. - MyCalendarEvents: Valueksi määritetään käyttäjän tapahtumien kokoelma valitusta kalenterista aikaväliltä _minDate–_maxDate.
- _showLoading: Valueksi määritetään epätosi; muuttujan _calendarVisible arvoksi määritetään tosi, kun kaikki muu on ladattu.
Colorominaisuudet
Tietoja yleisistä väriominaisuuksista: Coloren ja reunaviivojen ominaisuudet Power Appsissa.
Avattavan kalenteriohjausobjektin yksilölliset väriominaisuudet:
- ChevronBackground - Avattavan kalenterin taustaväri.
- ChevronDisabledBackground - Käytöstä poistetun avattavan kalenterin taustaväri.
- ChevronFill - Avattavan kalenterin täyttöväri.
- ChevronDisabledFill - Käytöstä poistetun avattavan kalenterin täyttöväri
- ChevronHoverBackground - Avattavan kalenterin taustaväri, kun käyttäjä pitää hiiren osoitinta sen päällä.
- ChevronHoverFill - Avattavan kalenterin täyttöväri, kun käyttäjä pitää hiiren osoitinta sen päällä
Kalenterikuvake
Ominaisuus: OnSelect
Value: Neljä Määritä-toimintoa, jotka palauttavat kalenterivalikoiman kuluvan päivän päivämäärään:Set( _dateSelected, Today() ); Set( _firstDayOfMonth, DateAdd( Today(), 1 - Day( Today() ), Days) ); Set( _firstDayInView, DateAdd(_firstDayOfMonth, -(Weekday( _firstDayOfMonth ) - 2 + 1), Days)); Set( _lastDayOfMonth, DateAdd( DateAdd( _firstDayOfMonth, 1, Months ), -1, Days ) )
Edeltävä koodi palauttaa kaikki oikean kalenterinäkymän näyttämiseen tarvittavat päivämäärämuuttujat:
- _dateSelected -arvoksi palautetaan kuluva päivä.
- _firstDayOfMonth -arvoksi palautetaan kuluvan kuukauden ensimmäinen päivä.
- _firstDayInView -arvoksi palautetaan ensimmäinen tarkasteltava päivä, kun valittuna on kuluva kuukausi.
- _lastDayOfMonth -arvoksi palautetaan kuluvan kuukauden viimeinen päivä.
Tämän aiheen Avattava kalenteri -kohdassa nämä muuttujat selitetään tarkemmin.
Edellisen kuukauden nuolenkärkipainike
Ominaisuus: OnSelect
Value: Neljä Määritä-toimintoa ja Jos-toiminto, jotka näyttävät kalenterivalikoiman edellisen kuukauden:Set( _firstDayOfMonth, DateAdd( _firstDayOfMonth, -1, Months ) ); Set( _firstDayInView, DateAdd( _firstDayOfMonth, -(Weekday( _firstDayOfMonth ) - 2 + 1), Days ) ); Set( _lastDayOfMonth, DateAdd(DateAdd( _firstDayOfMonth, 1, Months ), -1, Days ) ); If( _minDate > _firstDayOfMonth, Collect( MyCalendarEvents, Office365Outlook.GetEventsCalendarViewV2( _myCalendar.Name, Text( _firstDayInView, UTC ), Text( DateAdd( _minDate, -1, Days ), UTC ) ).value ); Set( _minDate, _firstDayInView ) )
Huomautus
Muuttujien _firstDayOfMonth, _firstDayInView ja _lastDayOfMonth ovat lähes samat kuin tämän aiheen Avattava kalenteri -osassa.
Edellisen koodin kolme ensimmäistä riviä suoritetaan aina, kun käyttäjä valitsee edellisen kuukauden nuolenkärkipainikkeen. Koodi määrittää muuttujat, jotka tarvitaan oikean kalenterinäkymän näyttämiseksi. Jäljelle jäävä koodi suoritetaan vain, jos käyttäjä ei ole aikaisemmin valinnut kuluvaa kuukautta valitusta kalenterista.
Tässä tapauksessa _minDate on ensimmäinen päivä, joka tulee näkyviin, kun näkyvissä on edellinen kuukausi. Ennen kuin käyttäjä valitsee kuvakkeen, _minDate-muuttujan pienin mahdollinen arvo on kuluvan kuukauden 23. päivä. (Kun 1. maaliskuuta on lauantai, maaliskuun _firstDayInView on 23. helmikuuta.) Jos käyttäjä ei ole vielä valinnut tätä kuukautta, _minDate on tällöin suurempi kuin uusi _firstDayOfMonth ja Jos-toiminnon tuloksena on tosi. Koodi suoritetaan ja kokoelmaa ja muuttujaa päivitetään:
MyCalendarEvents hakee tapahtumat valitusta kalenterista Office365Outlook.GetEventsCalendarViewV2 -toiminnolla. Päivämääräväli on välillä _firstDayInView ja _minDate - 1. Koska MyCalendarEvents sisältää jo tapahtumia _minDate-päivänä, 1 vähennetään kyseisestä päivämäärästä, jotta saadaan uuden päivämäärävälinen enimmäisarvo.
_minDate-arvoksi määritetään nykyinen _firstDayInView, koska kyseessä on ensimmäinen päivämäärä, jolle on noudettu tapahtumia. Jos käyttäjä palaa tähän päivämäärään valitsemalla edellisen kuukauden nuolenkärkipainikkeen, Jos-toiminnon tuloksena on epätosi. Koodia ei suoriteta, koska tämän näkymän tapahtumat on jo tallennettu MyCalendarEvents-välimuistiin.
Seuraavan kuukauden nuolenkärkipainike
Ominaisuus: OnSelect
Value: Neljä Määritä-toimintoa ja Jos-toiminto, jotka näyttävät kalenterivalikoiman seuraavan kuukauden:Set( _firstDayOfMonth, DateAdd( _firstDayOfMonth, 1, Months ) ); Set( _firstDayInView, DateAdd( _firstDayOfMonth, -(Weekday( _firstDayOfMonth ) - 2 + 1), Days ) ); Set( _lastDayOfMonth, DateAdd( DateAdd( _firstDayOfMonth, 1, Months ), -1, Days ) ); If(_maxDate < _lastDayOfMonth, Collect(MyCalendarEvents, Office365Outlook.GetEventsCalendarViewV2(_myCalendar.Name, Text(DateAdd(_maxDate, 1, Days), UTC), Text(DateAdd(_firstDayInView, 40, Days)) ).value ); Set(_maxDate, DateAdd(_firstDayInView, 40, Days)) )
Huomautus
Muuttujien _firstDayOfMonth, _firstDayInView ja _lastDayOfMonth ovat lähes samat kuin tämän aiheen Avattava kalenteri -osassa.
Edellisen koodin kolme ensimmäistä riviä, jotka suoritetaan, kun käyttäjä valitsee seuraavan kuukauden nuolenkärkipainikkeen, määrittävät muuttujat, jotka tarvitaan asianmukaisen kalenterinäkymän näyttämiseen. Jäljelle jäävä koodi suoritetaan vain, jos käyttäjä ei ole aikaisemmin valinnut kuluvaa kuukautta valitusta kalenterista.
Tässä tapauksessa _maxDate on viimeinen päivä, joka tulee näkyviin, kun näkyvissä on edellinen kuukausi. Ennen kuin käyttäjä valitsee seuraavan kuukauden nuolenkärkipainikkeen, _maxdate-muuttujan suurin mahdollinen arvo on seuraavan kuukauden 13. päivä. (Kun 1. helmikuuta on muun kuin karkausvuoden sunnuntai, _maxDate on 13. maaliskuuta eli _firstDayInView + 40 päivää.) Jos käyttäjä ei ole vielä valinnut tätä kuukautta, _maxDate on tällöin suurempi kuin uusi _lastDayOfMonth ja Jos-toiminnon tuloksena on tosi. Koodi suoritetaan ja kokoelmaa ja muuttujaa päivitetään:
MyCalendarEvents hakee tapahtumat valitusta kalenterista Office365Outlook.GetEventsCalendarViewV2 -toiminnolla. Päivämääräväli on välillä _maxDate + 1 päivä _firstDayInView + 40 päivää. Koska MyCalendarEvents sisältää jo tapahtumia _minDate-päivänä, 1 lisätään kyseisestä päivämäärästä, jotta saadaan uuden päivämäärävälinen vähimmäisarvo. _firstDayInView + 40 on _maxDate-muuttujan kaava, joten aikavälin toinen päivämäärä on vain uusi _maxDate.
_maxDate-arvoksi määritetään _firstDayInView + 40 päivää, koska kyseessä on viimeinen päivämäärä, jolle on noudettu tapahtumia. Jos käyttäjä palaa tähän päivämäärään valitsemalla seuraavan kuukauden nuolenkärkipainikkeen, Jos-toiminnon tuloksena on epätosi. Koodia ei suoriteta, koska tämän näkymän tapahtumat on jo tallennettu MyCalendarEvents-välimuistiin.
Kalenterivalikoima
Ominaisuus: Items
Arvo:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19, 20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41]
Joukkoa 0–41 käytetään kalenterivalikoiman kohteille, koska kalenterinäkymässä on pahimmassa tapauksessa näyttävä 42 täyttä päivää. Tämä tapahtuu, kun kuukauden ensimmäinen päivä on lauantai ja kuukauden viimeinen päivä on sunnuntai. Tällöin kalenterissa näkyy kuusi päivää edelliseltä kuukaudelta kuukauden ensimmäisen päivän sisältävällä rivillä ja kuusi seuraavan kuukauden päivää kuukauden viimeisen päivän sisältävällä rivillä. Tämä tarkoittaa 42 yksilöllistä arvoa, joista 30 kuuluu valittuun kuukauteen.
Ominaisuus: WrapCount
Arvo:7
Tämä arvo vastaa seitsemän päivän viikkoa.
Title-ohjausobjekti kalenterivalikoimassa
Ominaisuus: Text
Arvo:Day( DateAdd( _firstDayInView, ThisItem.Value, Days ) )
Muista, että muuttujan _firstDayInView määritys on (_firstDayOfMonth - sen viikonpäivän arvo) + 1. Tämä tarkoittaa, että _firstDayInView on aina sunnuntai ja _firstDayOfMonth on aina ohjausobjektin MonthDayGallery ensimmäinen rivi. Näiden kahden seikan vuoksi _firstDayInView on aina ohjausobjektin MonthDayGallery ensimmäinen solu. ThisItem.Value on kyseisen solun numero MonthDayGallery-kohdeominaisuudessa. Kun lähtökohtana siis on _firstDayInView, kussakin solussa näkyy tulos kaavasta _firstDayInView + sen solun arvo.
Ominaisuus: Fill
Value: Yksi Jos-toiminto:If( DateAdd( _firstDayInView, ThisItem.Value ) = Today() && DateAdd( _firstDayInView, ThisItem.Value ) = _dateSelected, RGBA( 0, 0, 0, 0 ), DateAdd( _firstDayInView, ThisItem.Value) = Today(), ColorFade( Subcircle.Fill, 0.67 ), Abs( Title.Text - ThisItem.Value) > 10, RGBA( 200, 200, 200, 0.3 ), RGBA( 0, 0, 0, 0 ) )
Kuten Text-ominaisuuden kuvauksessa mainittiin,
DateAdd(_firstDayInView, ThisItem.Value)
edustaa näkyvissä olevan solun päivää. Edeltävä koodi suorittaa tämän huomioon ottaen seuraavat vertailut:Jos solun arvona on kuluva päivä JA solu vastaa muuttujaa _dateSelected, älä anna täyttöarvoa.
Jos solun arvona on kuluva päivä, mutta se ei vastaa muuttujaa _dateSelected, anna ColorFade-täyttö.
Viimeinen vertailu ei ole yhtä selkeä. Se on solun todellisen tekstiarvon ja solukohteen arvon (näytössä oleva numero ja kohdenumero) välinen vertailu.
Tätä voi selkeyttää ottamalla esimerkiksi vuoden 2018 syyskuun eli kuukauden, joka alkaa lauantaista ja päättyy sunnuntaihin. Tässä tapauksessa kalenterin ensimmäisellä rivillä näkyy päivämääräväli 26.8.–1.9. ja
Abs(Title.Text - ThisItem.Value) = 26
1.9. asti. SittenAbs(Title.Text - ThisItem.Value) = 5
. Sen arvona pysyy 5 aina kalenterin viimeiselle riville, jossa näkyy päivämääräväli 30.9.–6.10. Sillä rivilläAbs(Title.Text - ThisItem.Value)
on edelleen 5 syyskuun 30. päivän osalta, mutta muuttuu arvoon 35 lokakuun päivien osalta.Malli on tämä: Edelliseltä kuukaudelta näytettyjen päivien osalta
Abs(Title.Text - ThisItem.Value)
on aina sama kuin ensimmäisen näytetyn päivänTitle.Text
. Seuraavalta kuukaudelta näytettyjen päivien osaltaAbs(Title.Text - ThisItem.Value)
on aina sama kuin kyseisen kuukauden ensimmäisen solun (tässä tapauksessa 1. lokakuuta) MonthDayGallery miinus 1. Ja mikä tärkeintä, valitulta kuukaudelta näytettyjen päivien osaltaAbs(Title.Text - ThisItem.Value)
on myös aina sama kuin kyseisen kuukauden ensimmäisen kohteen arvo miinus 1 eikä koskaan suurempi kuin 5, kuten edellinen esimerkki osoittaa. On siis täysin perusteltua kirjoittaa kaavaksiAbs(Title.Text - ThisItem.Value) > 5
.Tämä lauseke tarkistaa, onko päivämääräarvo valittuna olevan kuukauden ulkopuolella. Jos näin on, Fill on osittain läpinäkymätön harmaa.
Huomautus
Voit tarkistaa edellisen vertailun kelvollisuuden lisäämällä valikoimaan Label-ohjausobjektin ja määrittämällä sen Text-ominaisuuden arvoksi:
Abs(Title.Text - ThisItem.Value)
.Ominaisuus: Visible
Arvo:!( DateAdd( _firstDayInView, ThisItem.Value, Days ) - Weekday( DateAdd( _firstDayInView, ThisItem.Value,Days ) ) + 1 > _lastDayOfMonth )
Edeltävä lauseke tarkistaa, onko solu rivillä, jolla ei ole valittuna olevan kuukauden päiviä. Muista, että päivän viikonpäiväarvon vähentäminen sen päivämääräarvosta ja 1 lisääminen tuottaa tulokseksi aina sen rivin ensimmäisen kohteen, jolla kyseinen päivä on. Siten tämä lauseke tarkistaa, onko rivin ensimmäinen päivä tarkasteltavan kuukauden viimeisen päivän jälkeen. Jos näin on, se ei tule näkyviin, koska koko rivi sisältää seuraavan kuukauden päiviä.
Ominaisuus: OnSelect
Value: Määritä-toiminto, joka määrittää muuttujan _dateSelected arvoksi valitun solun päivämäärän:Set( _dateSelected, DateAdd( _firstDayInView, ThisItem.Value, Days ) )
Circle-ohjausobjekti kalenterivalikoimassa
Ominaisuus: Visible
Value: Kaava, joka määrittää, onko valitulle päivälle ajoitettu tapahtumia ja ovatko ohjausobjektit Subcircle ja Title näkyvissä:CountRows( Filter( MyCalendarEvents, DateValue( Text( Start ) ) = DateAdd( _firstDayInView, ThisItem.Value, Days ) ) ) > 0 && !Subcircle.Visible && Title.Visible
Circle-ohjausobjekti on näkyvissä, jos jonkin tapahtuman Alku-kenttä vastaa kyseisen solun päivämäärää, jos Title-ohjausobjekti on näkyvissä ja Subcircle-ohjausobjekti ei ole. Toisin sanoen tämä ohjausobjekti on näkyvissä, kun vähintään yksi tapahtuma tapahtuu kyseisenä päivänä eikä päivää ole valittu. Jos se valitaan, kyseisen päivän tapahtumat näkyvät CalendarEventsGallery-ohjausobjektissa.
Subcircle-ohjausobjekti kalenterivalikoimassa
Ominaisuus: Visible
Arvo:DateAdd( _firstDayInView, ThisItem.Value ) = _dateSelected && Title.Visible
Subcircle-ohjausobjekti näkyy, kun _dateSelected vastaa solun päivämäärää ja Title-ohjausobjekti on näkyvissä. Toisin sanoen tämä ohjausobjekti tulee näkyviin, kun solu on valittuna oleva päivä.
Tapahtumavalikoima
Ominaisuus: Items
Value: Kaava, joka lajittelee ja suodattaa tapahtumavalikoimaa:SortByColumns( Filter( MyCalendarEvents, Text( Start, DateTimeFormat.ShortDate ) = Text( _dateSelected, DateTimeFormat.ShortDate ) ), "Start" )
MyCalendarEvents-kokoelma sisältää kaikki tapahtumat välillä _minDate ja _maxDate. Jos haluat näkyviin vain valitun päivän tapahtumat, MyCalendarEvents-ohjausobjektiin sovelletaan suodatinta, jonka perusteella näkyvissä ovat vain tapahtumat, joiden alkamispäivä on sama kuin \ _dateSelected. Items lajitellaan sitten niiden alkamispäivien mukaan, jotta ne voi asettaa järjestykseen.
Seuraavat vaiheet
- Lue lisää tästä näytöstä
- Lue lisää Office 365 Outlook -yhdistimestä Power Appsissa
- Lue lisää Office 365:n käyttäjät -yhdistimestä Power Appsissa
Huomautus
Voitko kertoa meille dokumentaatiota koskevan kielimäärityksesi? Vastaa lyhyeen kyselyyn. (Huomaa, että tämä kysely on englanninkielinen.)
Kyselyyn vastaaminen kestää noin seitsemän minuuttia. Henkilökohtaisia tietoja ei kerätä (tietosuojatiedot).
Palaute
Lähetä ja näytä palaute kohteelle