Viiteteave lõuendirakenduste kalendrikuva malli kohta

Mõistke kuidas Power Appsi lõuendirakendustes iga kalendrikuva malli juhtelement aitab kaasa kuva üldistele vaikefunktsioonidele. See süvenemine esitab käitumise valemid ja teiste atribuutide väärtused, mis määratlevad, kuidas juhtelemendid kasutaja sisendile reageerivad. Selle kuva vaikefunktsioonide kõrgetasemelist arutelu vaadake kalendrikuva ülevaatest.

Selles teemas tõstetakse esile teatud olulised juhtelemendid ja selgitatakse avaldisi või valemeid, millele on määratud erinevad atribuudid (nt Üksused ja OnSelect).

Eeltingimus

Peate teadma, kuidas Power Appsis rakendust luues lisada ja konfigureerida kuvasid ning teisi juhtelemente.

Kalendri ripploend

Juhtelement dropdownCalendarSelection

  • Atribuut: Üksused
    Väärtus: Office365.CalendarGetTables().value

    See väärtus on konnektori toiming, mis toob rakenduse kasutaja Outlooki kalendrid. Näete väärtust, mille see toiming toob.

  • Atribuut: OnChange
    Väärtus: Select(dropdownCalendarSelection)

    Kui kasutaja valib loendis suvandi, käivitub juhtelemendi atribuudi OnSelect funktsioon.

  • Atribuut: OnSelect
    Väärtus: funktsioon If, mis kuvatakse järgmises koodiplokis, ja mitmed täiendavad funktsioonid, mis kuvatakse koodiplokis pärast seda.

    See valemi osa töötab ainult esimesel korral, kui kasutaja valib pärast rakenduse avamist ripploendist suvandi:

    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 ) )  
    );
    

    Eelnev kood määratleb järgmised muutujad.

    • _userDomain: rakenduse kasutaja ettevõtte domeen, nagu kasutaja meiliaadressis kajastatud.
    • _dateSelected: tänane kuupäev (vaikimisi). Kalendri galeriis tõstetakse see päev esile ja sündmuse galerii kuvab sündmused, mis on selleks kuupäevaks plaanitud.
    • _firstDayOfMonth: praeguse kuu esimene päev. Valemi (Today + (1 - Today)) = Today - Today + 1 = 1 tõttu naaseb see funktsioon DateAdd alati kuu esimesele päevale.
    • _firstDayInView: esimene päev, mida kalendri galerii saab kuvada. See väärtus pole sama, mis kuu esimene päev, välja arvatud juhul, kui kuu algab pühapäeval. Eelmise kuu kogu nädala kuvamise vältimiseks on muutuja _firstDayInView väärtus _firstDayOfMonth - Weekday(_firstDayOfMonth) + 1.
    • _lastDayOfMonth: praeguse kuu viimane päev, mis on sama, mis järgmise kuu esimene päev miinus üks päev.

    Funktsioonid pärast funktsiooni If käivitatakse iga kord, kui kasutaja valib kalendri ripploendist suvandi (mitte ainult esimene kord, kui kasutaja avab rakenduse).

    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, 
        'Office365'.GetEventsCalendarViewV2( _myCalendar.Name, 
            Text( _minDate, UTC ), 
            Text( _maxDate, UTC )
        ).value
    );
    UpdateContext( {_showLoading: false} );
    Set( _calendarVisible, true )
    

    Eelnev kood määratleb järgmised muutujad ja ühe kollektsiooni.

    • _calendarVisible: määrake väärtusele väär, et kalender ei ilmuks, kui laaditakse uus valik.
    • _showLoading: määrake väärtusele tõene, et laadimise näidik ilmuks, kui laaditakse uus valik.
    • _myCalendar: määrake kalendri ripploendi juhtelemendi praegusele väärtusele, et toodaks õige kalendri sündmused.
    • _minDate: määrake samale väärtusele kui _firstDayInView. See muutuja määratleb, millised sündmused on juba Outlookist toodud ja rakenduses vahemällu salvestatud.
    • _maxDate: määrake kalendri viimasele kuvatavale päevale. Valem on _firstDayInView + 40. Kalendris kuvatakse kuni 41 päeva, seega muutuja _maxDate kajastab alati viimast kuvatavat päeva ja määratleb, millised sündmused on juba Outlooki kaudu toodud ja salvestatud rakenduses vahemällu.
    • MyCalendarEvents: määrake valitud kalendrist kasutaja sündmuste kogumikule, vahemikus _minDate kuni _maxDate.
    • _showLoading: määrake väärtusele väär; _calendarVisible määratakse väärtusele tõene pärast seda, kui kõik muu on laaditud.

Värvi atribuudid

Üldisi värvi atribuute vaadake teemast Värvi ja äärise atribuudid Power Appsis.

Kalendri ripploendi juhtelemendi ainulaadsed värvi atribuudid.

  • ChevronBackground – kalendri ripploendi taustavärv.
  • ChevronDisabledBackground – keelatud kalendri ripploendi taustavärv.
  • ChevronFill – kalendri ripploendi täitevärv.
  • ChevronDisabledFill – keelatud kalendri rippmenüü täitevärv.
  • ChevronHoverBackground – kalendri rippmenüü taustavärv, kui kasutaja hoiab hiirekursorit selle peal.
  • ChevronHoverFill – kalendri rippmenüü täitevärv, kui kasutaja hoiab hiirekursorit selle peal.

Kalendri ikoon

Juhtelement iconCalendar

  • Atribuut: OnSelect
    Väärtus: neli hulgafunktsiooni, mis lähtestavad kalendri galerii tänasele kuupäevale:

    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 ) )
    

    Eelnev kood lähtestab kõik kuupäeva muutujad, mis on vajalikud õige kalendrivaate kuvamiseks.

    • _dateSelected lähtestatakse tänasele.
    • _firstDayOfMonth lähtestatakse praeguse kuu esimesele päevale.
    • _firstDayInView lähtestatakse esimesele kuvatavale päevale, kui praegune kuu valitakse.
    • _lastDayOfMonth lähtestatakse praeguse kuu viimasele päevale.

    Selle teema jaotis Kalendri rippmenüü selgitab neid muutujaid üksikasjalikumalt.

Eelmine kuu rööpnool

Juhtelement iconPrevMonth

  • Atribuut: OnSelect
    Väärtus: neli hulgafunktsiooni ja funktsioon If, mis kuvavad kalendri galeriis eelmise kuu.

    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,
            'Office365'.GetEventsCalendarViewV2( _myCalendar.Name,
                Text( _firstDayInView, UTC ), 
                Text( DateAdd( _minDate, -1, Days ), UTC )
            ).value
        );
        Set( _minDate, _firstDayInView )
    )
    

    Märkus

    Üksuste _firstDayOfMonth, _firstDayInView ja _lastDayOfMonth definitsioonid on peaaegu identsed nendega, mis on toodud selle teema jaotises Kalendri ripploend.

    Eelneva koodi esimesed kolm rida käivitatakse alati, kui kasutaja valib eelmise kuu rööpnoole. Kood määrab muutujad, mis on vajalikud õige kalendrivaate kuvamiseks. Ülejäänud kood käivitub ainult juhul, kui kasutaja pole valitud kalendri jaoks seda kuud varem valinud.

    Kui see on nii, siis on _minDate esimene päev, mis eelmise kuu kuvamisel ilmub. Enne kui kasutaja valib ikooni, on üksuse _minDate minimaalne võimalik väärtus jooksva kuu 23. kuupäev. (Kui 1. märts on laupäeval, siis üksus _firstDayInView märtsikuu jaoks on 23. veebruar.) See tähendab, et kui kasutaja ei ole seda kuud veel valinud, siis üksus _minDate on suurem kui uus üksus _firstDayOfMonth ja funktsioon If tagastab väärtuse tõene. Kood käivitub ja kogumikku ning muutujat värskendatakse.

    • MyCalendarEvents toob sündmused valitud kalendrist toiminguga Office365.GetEventsCalendarViewV2. Kuupäevavahemik jääb vahemikku _firstDayInView kuupäev ja _minDate – 1. Kuna MyCalendarEvents juba sisaldab sündmusi _minDate kuupäeval, lahutatakse selle uue kuupäevavahemiku maksimumväärtuse kuupäevast 1.

    • _minDate määratakse praegusele üksusele _firstDayInView, kuna see on esimene kuupäev, mille jaoks on sündmused toodud. Kui kasutaja naaseb sellele kuupäevale valides eelmise kuu rööpnoole, tagastab funktsioon If väärtuse väär ; koodi ei käivitata, kuna selle vaate sündmused on atribuudis MyCalendarEvents juba vahemällu salvestatud.

Järgmise kuu rööpnool

Juhtelement iconNextMonth

  • Atribuut: OnSelect
    Väärtus: neli hulgafunktsiooni ja funktsioon If, mis kuvavad kalendri galeriis järgmise kuu.

    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, 
            'Office365'.GetEventsCalendarViewV2( _myCalendar.Name, 
                Text( DateAdd( _maxDate, 1, Days ), UTC ), 
                DateAdd( _firstDayInView, 40, Days )
            ).value
        );
        Set( _maxDate, DateAdd( _firstDayInView, 40, Days) )    
    )
    

    Märkus

    Üksuste _firstDayOfMonth, _firstDayInView ja _lastDayOfMonth definitsioonid on peaaegu identsed nendega, mis on toodud selle teema jaotises Kalendri ripploend.

    Eelneva koodi kolm esimest rida, mis käivitatakse, kui kasutaja valib järgmise kuu rööpnoole määravad muutujad, mis on õige kalendrivaate kuvamiseks vajalikud. Ülejäänud kood käivitub ainult juhul, kui kasutaja pole valitud kalendri jaoks seda kuud varem valinud.

    Sellises juhu on _maxDate viimane päev, mis eelmise kuu kuvamisel ilmub. Enne kui kasutaja valib järgmise kuu rööpnoole, on üksuse _maxDate suurim võimalik väärtus järgmise kuu 13. kuupäev. (Kui 1. veebruar on muu aasta pühapäevala, on _maxDate 13. märts, mis on _firstDayInView + 40 päeva.) See tähendab, et kui kasutaja ei ole seda kuud veel valinud, siis üksus _maxDate on suurem kui uus üksus _lastDayOfMonth ja funktsioon If tagastab väärtuse tõene. Kood käivitub ja kogumikku ning muutujat värskendatakse.

    • MyCalendarEvents toob sündmused valitud kalendrist toiminguga Office365.GetEventsCalendarViewV2. Kuupäevavahemik jääb vahemikku _maxDate + 1 päev ja _firstDayInView + 40 päeva. Kuna MyCalendarEvents juba sisaldab sündmusi _minDate kuupäeval, liidetakse selle uue kuupäevavahemiku miinimumväärtuse kuupäevale 1. _firstDayInView + 40 on valem _maxDate jaoks, seega vahemiku teine kuupäev on lihtsalt uus _maxDate.

    • _maxDate määratakse üksusele _firstDayInView + 40 päeva, kuna see on viimane kuupäev, mille jaoks on sündmused toodud. Kui kasutaja naaseb sellele kuupäevale valides järgmise kuu rööpnoole, tagastab funktsioon If väärtuse väär ; koodi ei käivitata, kuna selle vaate sündmused on atribuudis MyCalendarEvents juba vahemällu salvestatud.

Juhtelement MonthDayGallery

  • Atribuut: Üksused
    Väärtus: [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]

    Kalendri galerii üksuste jaoks kasutatakse väärtuseid 0–41, sest halvimal juhul peab kalendri vaade kuvama 42 täispäeva. See juhtub siis, kui kuu esimene päev on laupäeval ja kuu viimane päev on pühapäeval. Sel juhul näitab kalender kuu esimest päeva sisaldavas reas kuus päeva eelmisest kuust ja kuu viimast päeva sisaldavas reas kuus päeva järgmisest kuust. See on 42 kordumatud väärtused, millest 30 on valitud kuu jaoks.

  • Atribuut: WrapCount
    Väärtus: 7

    See väärtus vastab seitsmepäevasele nädalale.

Pealkrija juhtelement MonthDayGallery

  • Atribuut: Tekst
    Väärtus: Day( DateAdd( _firstDayInView, ThisItem.Value, Days ) )

    Esitatud _firstDayInView on määratletud kui (_firstDayOfMonth – selle nädalapäeva väärtus) + 1. See näitab, et _firstDayInView on alati pühapäev ja _firstDayOfMonth on alati üksuse MonthDayGallery esimene rida. Nende kahe tõsiasja tõttu on _firstDayInView alati üksuse MonthDayGallery kõige esimeses lahtris. ThisItem.Value on selle lahtri number üksuse MonthDayGallery atribuudis. Seega võttes alguspunktiks üksuse _firstDayInView, kuvab iga lahter juurdekasvu _firstDayInView + selle vastav lahtri väärtus.

  • Atribuut: Täide
    Väärtus: üks funktsioon If:

    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 )
    )
    

    Nagu atribuudi Tekst kirjelduses on mainitud, esindab DateAdd(_firstDayInView, ThisItem.Value) päeva nähtavas lahtris. Seda arvesse võttes teostab eelnev kood järgmisi võrdlusi.

    1. Kui lahtri väärtus on tänase kuupäevaga JA see lahter vastab üksusele _dateSelected, ärge sisestage täiteväärtust.

    2. Kui lahtri väärtus on tänase kuupäevaga, kuid see ei ole võrdne üksusega _dateSelected, esitage täide ColorFade.

    3. Viimane võrdlus ei sama selge. Seda võrdlus lahtri tegeliku tekstiväärtuse ja lahtri üksuse väärtuse vahel (kuva number ja üksuse number).

      Selle paremini mõistmiseks vaadake 2018. aasta septembrit, mille algus on laupäeval ja lõpp pühapäeval. Sellisel juhul kuvab kalender 26.–31. augusti ja 1. septembri esimesel real ning Abs(Title.Text - ThisItem.Value) = 26 kuni 1. septembrini. Seejärel Abs(Title.Text - ThisItem.Value) = 5. See jääb väärtusele 5 kuni kalendri viimase reani, mis kuvab 30. septembri ja 1.–6. oktoobri. Selles elemendis Abs(Title.Text - ThisItem.Value) on endiselt 5 30. septembri jaoks, kuid oktoobri kuupäevade jaoks on see 35.

      Muster on järgmine: eelmisest kuust kuvatavate päevade jaoks on Abs(Title.Text - ThisItem.Value) alati võrdne väärtusega Title.Text kuva esimesest päevast. Järgmisel kuul kuvatavate päevade jaoks on Abs(Title.Text - ThisItem.Value) alati võrdne üksuse MonthDayGallery väärtusega selle kuu esimesest lahtrist (antud juhul 1. oktoober) miinus 1. Ja mis kõige olulisem, praeguses valitud kuus kuvatavate päevade jaoks on Abs(Title.Text - ThisItem.Value) samuti alati võrdne selle kuu esimese üksuse väärtusega miinus 1 ja see ei ületa kunagi väärtust 5, nagu eelmises näites on näidatud. Seega on täiesti võimalik kirjutada valem kujul Abs(Title.Text - ThisItem.Value) > 5.

      Selles avaldises kontrollitakse, kas kuupäeva väärtus on väljaspool praegu valitud kuud. Kui see on, siis täide on osaliselt läbipaistmatult hall.

    Märkus

    Võite selle viimase võrdluse kehtivust ise kontrollida, kui sisestate galeriisse juhtelemendi Silt ja määrate selle atribuudi Tekst järgmisele väärtusele:
    Abs(Title.Text - ThisItem.Value).

  • Atribuut: Nähtav
    Väärtus:

    !(
        DateAdd( _firstDayInView, ThisItem.Value, Days ) - 
            Weekday( DateAdd( _firstDayInView, ThisItem.Value,Days ) ) + 1 
        > _lastDayOfMonth
    )
    

    Eelmises avaldises kontrollitakse, kas lahter on reas, kus ei esine praegu valitud kuu ühtegi päeva. Tuletage meelde, et sellest kuupäeva väärtusest mis tahes päeva nädalapäeva väärtuse lahutamine ja väärtuse 1 lisamine tagastab alati esimese üksuse reas, kus see päev asub. Seega see avaldis kontrollib, kas rea esimene päev on pärast kuvatava kuu viimast päeva. Kui see on, siis seda ei kuvata, kuna terve rida sisaldab järgmise kuu päevi.

  • Atribuut: OnSelect
    Väärtus: hulgafunktsioon, mis määrab muutuja _dateSelected valitud lahtri kuupäevale:

    Set( _dateSelected, DateAdd( _firstDayInView, ThisItem.Value, Days ) )
    

Ringi juhtelement MonthDayGallery

  • Atribuut: Nähtav
    Väärtus: valem, mis määratleb, kas valitud kuupäevale on ajastatud sündmusi ja kas juhtelemendid Alamring ja Pealkiri on nähtavad.

    CountRows(
        Filter( MyCalendarEvents, 
            DateValue( Text( Start ) ) = DateAdd( _firstDayInView, ThisItem.Value, Days )
        )
    ) > 0 && !Subcircle.Visible && Title.Visible
    

    Juhtelement Ring on nähtav, kui mis tahes sündmuse väli Algus on võrdne selle lahtri kuupäevaga, kui juhtelement Pealkiri on nähtav ja kui juhtelement Alamring ei ole nähtav. Teisisõnu on see juhtelement nähtav juhul, kui sellel päeval leiab aset vähemalt üks sündmus ja see päev pole valitud. Kui see on valitud, kuvatakse selle päeva sündmused juhtelemendis CalendarEventsGallery.

Alamringi juhtelement MonthDayGallery

  • Atribuut: Nähtav
    Väärtus:

    DateAdd( _firstDayInView, ThisItem.Value ) = _dateSelected && Title.Visible
    

    Juhtelement Alamring on nähtav, kui üksus _dateSelected on võrdne lahtri kuupäevaga ja juhtelement Pealkiri on nähtav. Teisisõnu kuvatakse see juhtelement juhul, kui lahtriks on praegu valitud kuupäev.

Juhtelement CalendarEventsGallery

  • Atribuut: Üksused
    Väärtus: valem, mis sordib ja filtreerib sündmuste galeriid:

    SortByColumns(
        Filter( MyCalendarEvents,
            Text( Start, DateTimeFormat.ShortDate ) = Text( _dateSelected, DateTimeFormat.ShortDate )
        ),
        "Start"
    )
    

    Kogum MyCalendarEvents sisaldab kõiki sündmuseid vahemikus _minDate kuni _maxDate. Ainult valitud kuupäeva sündmuste kuvamiseks rakendatakse üksusele MyCalendarEvents, et kuvada sündmused, mille alguskuupäev on võrdne üksusega _dateSelected. Üksused sorditakse seejärel nende alguskuupäevade järgi, et panna need järjekorda.

Järgmised etapid