Deli z drugimi prek


Sklic za informacije o predlogi zaslona koledarja za aplikacije delovnega območja

Za aplikacije delovnega območja v storitvi Power Apps preberite, kako vsak pomemben kontrolnik v predlogi zaslona koledarja prispeva k splošni privzeti funkcionalnosti zaslona. Ta predstavitev vseh podrobnosti vključuje formule vedenja in vrednosti drugih lastnosti, ki določajo, kako se kontrolnik odziva na vnos uporabnika. Za celovito razpravo o privzeti funkcionalnosti tega zaslona glejte Pregled zaslona koledarja.

Ta tema poudarja nekaj pomembnih kontrolnikov in razlaga izraze oz. formule, na podlagi katerih se nastavijo različne lastnosti (npr. Items in OnSelect) teh kontrolnikov:

Predpogoj

Poznavanje postopkov dodajanja in konfiguriranja zaslonov ter drugih kontrolnikov, ko ustvarjate aplikacijo v storitvi Power Apps.

Spustni seznam koledarja

Kontrolnik dropdownCalendarSelection.

  • Lastnost: Elementi
    Vrednost: Office365.CalendarGetTables().value

    Ta vrednost je postopek povezovalnika, ki pridobiva koledarje programa Outlook uporabnikov aplikacije. Vidite lahko vrednost, ki jo ta postopek pridobi.

  • Lastnost: OnChange
    Vrednost: Select(dropdownCalendarSelection)

    Ko uporabnik na seznamu izbere možnost, se funkcija v lastnosti kontrolnika OnSelect zažene.

  • Lastnost: OnSelect
    Vrednost: funkcija Če, ki se pojavi v naslednjem bloku kode, in več dodatnih funkcij, ki se pojavijo v naslednjem bloku kode.

    Ta del formule se zažene samo prvič, ko uporabnik po odprtju aplikacije izbere možnost na spustnem seznamu:

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

    Prejšnja koda določa naslednje spremenljivke:

    • _userDomain: domena podjetja uporabnika aplikacije, kot je izraženo v uporabnikovem e-poštnem naslovu.
    • _dateSelected: današnji datum (privzeto). Galerija koledarja poudari ta datum, galerija dogodkov pa prikazuje dogodke, ki so načrtovani za ta datum.
    • _firstDayOfMonth: prvi dan trenutnega meseca. Zaradi (Today + (1 - Today)) = Today - Today + 1 = 1 ta funkcija DateAdd vedno vrne prvi dan v mesecu.
    • _firstDayInView: prvi dan, ki ga lahko galerija koledarja prikaže. Ta vrednost ni enaka kot prvi dan v mesecu, razen če se mesec začne v nedeljo. Da bi preprečili prikazovanje celotnega tedna prejšnjega meseca, je vrednost _firstDayInView _firstDayOfMonth - Weekday(_firstDayOfMonth) + 1.
    • _lastDayOfMonth: zadnji dan trenutnega meseca, ki je isti kot prvi dan naslednjega meseca, minus en dan.

    Funkcije po funkciji Če se zaženejo vedno, ko uporabnik na spustnem seznamu koledarja izbere možnost (ne samo prvič, ko uporabnik odpre aplikacijo):

    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 )
    

    Prejšnja koda določa te spremenljivke in eno zbirko:

    • _calendarVisible: nastavite na ne drži, da se koledar ne prikaže med nalaganjem nove izbire.
    • _showLoading: nastavite na drži, da se med nalaganjem novega izbora prikažejo indikatorji za nalaganje.
    • _myCalendar: nastavite na trenutno vrednost kontrolnika spustnega seznama koledarja tako, da bodo pridobljeni dogodki iz pravilnega koledarja.
    • _minDate: nastavite na isto vrednost kot _firstDayInView. Ta spremenljivka določa, kateri dogodki so že bili pridobljeni iz Outlooka in predpomnjeni v aplikaciji.
    • _maxDate: nastavite zadnji dan v koledarju, ki si ga je mogoče ogledati. Formula je _firstDayInView + 40. Koledar prikazuje največ 41 dni, torej spremenljivka _maxDate vedno odraža zadnji dan, ki si ga je mogoče ogledati, in določa, kateri dogodki so že bili pridobljeni iz Outlooka in predpomnjeni v aplikaciji.
    • MyCalendarEvents: nastavite na zbirko uporabnikovih dogodkov iz izbranega koledarja v razponu od _minDate do _maxDate.
    • _showLoading: nastavite na ne drži ; spremenljivka _calendarVisible se nastavi na drži, ko se vse drugo naloži.

Lastnosti barve

Za splošne lastnosti barve glejte Lastno barve in obrobe v storitvi Power Apps.

Edinstvene lastnosti barv za spustni seznam koledarja:

  • ChevronBackground– barva ozadja za spustni seznam koledarja.
  • ChevronDisabledBackground– barva ozadja za onemogočeni spustni seznam koledarja.
  • ChevronFill – barva polnila za spustni seznam koledarja.
  • ChevronDisabledFill – barva polnila za onemogočeni spustni seznam koledarja.
  • ChevronHoverBackground – barva ozadja spustnega seznama koledarja, ko uporabnik na njem zadrži kazalec miške.
  • ChevronHoverFill – barva polnila spustnega seznama koledarja, ko uporabnik na njem zadrži kazalec miške.

Ikona koledarja

Kontrolnik iconCalendar.

  • Lastnost: OnSelect
    Vrednost: štiri funkcije Nastavi, ki ponastavijo galerijo koledarja na današnji datum:

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

    Prejšnja koda ponastavi vse spremenljivke datuma, ki so potrebne za prikaz pravilnega pogleda koledarja:

    • Spremenljivka _dateSelected se ponastavi na danes.
    • Spremenljivka _firstDayOfMonth se ponastavi na prvi dan trenutnega meseca.
    • Spremenljivka _firstDayInView se ponastavi na prvi dan, ki si ga je mogoče ogledati, ko je izbran trenutni mesec.
    • Spremenljivka _lastDayOfMonth se ponastavi na zadnji dan trenutnega meseca.

    V razdelku Spustni seznam koledarja te teme so podrobneje razložene te spremenljivke.

Škarnice za prejšnji mesec

Kontrolnik iconPrevMonth.

  • Lastnost: OnSelect
    Vrednost: štiri funkcije Nastavi in funkcija Če, ki v galeriji koledarja prikazujejo prejšnji mesec:

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

    Opomba

    Opredelitve za _firstDayOfMonth, _firstDayInView in _lastDayOfMonth so skoraj enake tistim v razdelku Spustni seznam koledarja te teme.

    Prve tri vrstice prejšnje kode se zaženejo vsakič, ko uporabnik izbere škarnice za prejšnji mesec. Koda nastavi spremenljivke, ki so potrebne za prikaz pravilnega pogleda koledarja. Preostala koda se zažene samo, če uporabnik tega meseca za izbrani koledar še ni predhodno izbral.

    Če je tako, je spremenljivka _minDate prvi dan, ki se pojavi, ko se prikaže prejšnji mesec. Preden uporabnik izbere ikono, ima spremenljivka _minDate najmanjšo možno vrednost 23. trenutnega meseca. (Ko 1. marec pade na soboto, je _firstDayInView za marec 23. februar.) To pomeni, da je spremenljivka _minDate večja od nove spremenljivke _firstDayOfMonth in da se funkcija Če vrne na možnost drži, če uporabnik še ni izbral tega meseca. Koda se zažene, zbirka in spremenljivka pa se posodobita:

    • MyCalendarEvents pridobi dogodke iz izbranega koledarja z operacijo Office365Outlook.GetEventsCalendarViewV2. Datumski obseg je med datumom _firstDayInView in _minDate – 1. Ker razdelek MyCalendarEvents že vsebuje dogodke na datum _minDate, se 1 odšteje od tega datuma za največjo vrednost v tem novem datumskem obsegu.

    • _minDate je nastavljen na trenutni _firstDayInView, ker je to prvi datum, za katerega so bili pridobljeni dogodki. Če se uporabnik vrne na ta datum tako, da izbere škarnice za prejšnji mesec, funkcija Če vrne ne drži; koda se ne zažene, ker so dogodki za ta pogled že predpomnjeni v razdelku MyCalendarEvents.

Škarnice za naslednji mesec

Kontrolnik iconNextMonth.

  • Lastnost: OnSelect
    Vrednost: štiri funkcije Nastavi in funkcija Če, ki v galeriji koledarja prikazujejo naslednji mesec:

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

    Opomba

    Opredelitve za _firstDayOfMonth, _firstDayInView in _lastDayOfMonth so skoraj enake tistim v razdelku Spustni seznam koledarja te teme.

    Prve tri vrstice prejšnje kode, ki se zaženejo, ko uporabnik izbere škarnice za naslednji mesec, nastavijo spremenljivke, ki so potrebne za prikaz pravilnega pogleda koledarja. Preostala koda se zažene samo, če uporabnik tega meseca za izbrani koledar še ni predhodno izbral.

    V tem primeru je spremenljivka _maxDate zadnji dan, ki se pojavi, ko se prikaže prejšnji mesec. Preden uporabnik izbere škarnice za naslednji mesec, ima _maxDate največjo možno vrednost 13. naslednjega meseca. (Ko 1. februar pade na nedeljo v letu, ki ni prestopno, je _maxDate 13. marec, kar je _firstDayInView + 40 dni.) To pomeni, da je spremenljivka _maxDate večja od nove spremenljivke _lastDayOfMonth in da se funkcija Če vrne na možnost drži, če uporabnik še ni izbral tega meseca. Koda se zažene, zbirka in spremenljivka pa se posodobita:

    • MyCalendarEvents pridobi dogodke iz izbranega koledarja z operacijo Office365Outlook.GetEventsCalendarViewV2. Datumski obseg je med datumom _maxDate + 1 dan in _firstDayInView + 40 dni. Ker razdelek MyCalendarEvents že vsebuje dogodke na datum _minDate, se 1 doda temu datumu za najmanjšo vrednost v tem novem datumskem obsegu. _firstDayInView + 40 je formula za _maxDate, zato je drugi datum v obsegu samo nov datum _maxDate.

    • _maxDate je nastavljen na trenutni _firstDayInView + 40 dni, ker je to zadnji datum, za katerega so bili pridobljeni dogodki. Če se uporabnik vrne na ta datum tako, da izbere škarnice za naslednji mesec, funkcija Če vrne ne drži; koda se ne zažene, ker so dogodki za ta pogled že predpomnjeni v razdelku MyCalendarEvents.

Galerija koledarja

Kontrolnik MonthDayGallery.

  • Lastnost: Elementi
    Vrednost: [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]

    Nabor od 0 do 41 se uporablja za elemente v galeriji koledarja, ker bo moral koledar v najslabšem primeru prikazati 42 polnih dni. To se zgodi, ko prvi dan v mesecu pade na soboto, zadnji dan v mesecu pa na nedeljo. V tem primeru koledar prikazuje šest dni iz prejšnjega meseca v vrsti, ki vsebuje prvi dan v mesecu, in šest dni naslednjega meseca v vrstici, ki vsebuje zadnji dan v mesecu. Gre za 42 edinstvenih vrednosti, od katerih jih je 30 za izbrani mesec.

  • Lastnost: WrapCount
    Vrednost: 7

    Ta vrednost odraža sedemdnevni teden.

Kontrolnik naslova v galeriji koledarja

Kontrolnik naslova MonthDayGallery.

  • Lastnost: Besedilo
    Vrednost: Day( DateAdd( _firstDayInView, ThisItem.Value, Days ) )

    Ne pozabite, da je _firstDayInView opredeljen kot (_firstDayOfMonth – njegova vrednost na delovnik) + 1. To vam pove, da je _firstDayInView vedno nedelja in _firstDayOfMonth vedno v prvi vrsti razdelka MonthDayGallery. Zaradi teh dveh dejstev je _firstDayInView vedno v čisto prvi celici razdelka MonthDayGallery. ThisItem.Value je številka te celice v lastnosti elementa MonthDayGallery. Če torej vzamemo _firstDayInView kot izhodišče, vsaka celica prikaže povečanje za _firstDayInView + njegovo ustrezno vrednost celice.

  • Lastnost: Polnilo
    Vrednost: ena funkcija Če:

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

    Kot je omenjeno v opisu lastnosti Besedilo, DateAdd(_firstDayInView, ThisItem.Value) predstavlja dan v vidni celici. Upoštevajoč to dejstvo prejšnja koda izvede naslednje primerjave:

    1. Če je vrednost celice današnji datum IN je ta celica enakovredna spremenljivki _dateSelected, ne navedite vrednosti polnila.

    2. Če je vrednost celice današnji datum, vendar ni enakovredna spremenljivki _dateSelected, navedite polnil ColorFade.

    3. Zadnja primerjava ni tako jasna. Gre za primerjavo dejanske vrednosti besedila v celici in vrednosti elementa celice (številka na zaslonu in številka elementa).

      Za boljše razumevanje si oglejte september 2018, mesec, ki se začne v soboto in konča v nedeljo. V tem primeru koledar prikazuje obdobje od 26. do 31. avgusta in 1. september v prvi vrstici ter Abs(Title.Text - ThisItem.Value) = 26 do 1. septembra. Nato Abs(Title.Text - ThisItem.Value) = 5. Ostalo bo na 5 do zadnje vrstice v koledarju, ki prikazuje 30. september in obdobje od 1. do 6. oktobra. Pri tem bo vrednost Abs(Title.Text - ThisItem.Value) še vedno 5 za 30. september, za oktobrske datume pa 35.

      To je vzorec: za dneve, prikazane v prejšnjem mesecu, bo vrednost Abs(Title.Text - ThisItem.Value) vedno enaka vrednosti Title.Text prvega prikazanega dne. Za dneve, prikazane v naslednjem mesecu, bo vrednost Abs(Title.Text - ThisItem.Value) vedno enaka vrednosti elementa MonthDayGallery prve celice tega meseca (v tem primeru 1. oktober) minus 1. In kar je najpomembneje, za dneve, ki so prikazani v trenutno izbranem mesecu, bo vrednost Abs(Title.Text - ThisItem.Value) tudi vedno enaka vrednosti prvega elementa tega meseca minus 1 in nikoli ne bo presegla 5, kot kaže prejšnji primer. Zato je povsem veljavno, če formulo zapišemo kot Abs(Title.Text - ThisItem.Value) > 5.

      Ta izjava preverja, ali je vrednost datuma zunaj trenutno izbranega meseca. Če je, je Polnilo delno neprosojno siva.

    Opomba

    Veljavnost zadnje primerjave lahko sami preverite tako, da vstavite kontrolnik Oznaka v galerijo in nastavite njegovo lastnost Besedilo na to vrednost:
    Abs(Title.Text - ThisItem.Value).

  • Lastnost: Vidno
    Vrednost:

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

    Prejšnji stavek preveri, ali je celica v vrstici, v kateri ni dni trenutno izbranega meseca. Ne pozabite, da če odštejemo vrednost delovnika katerega koli dne od vrednosti njegovega datuma in dodamo 1, se vedno vrne prvi element v vrstici, v kateri živi ta dan. Ta izjava torej preverja, ali je prvi dan v vrstici za zadnjim dnem meseca, ki si ga je mogoče ogledati. Če je, se ne bo prikazal, ker celotna vrstica vsebuje dneve naslednjega meseca.

  • Lastnost: OnSelect
    Vrednost: funkcija Nastavi, ki nastavi spremenljivko _dateSelected na datum izbrane celice:

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

Kontrolnik kroga v galeriji koledarja

Kontrolnik kroga MonthDayGallery.

  • Lastnost: Vidno
    Vrednost: formula, ki določa, ali so za izbrani datum načrtovani kakšni dogodki in ali sta kontrolnika Podkrog in Naslov vidna:

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

    Kontrolnik Krog je viden, če je polje Začetek za kateri koli dogodek enako datumu te celice, če je kontrolnik Naslov viden in če kontrolnik Podkrog ni viden. Z drugimi besedami: ta kontrolnik je viden, če se na ta dan zgodi vsaj en dogodek in ta dan ni izbran. Če je izbran, se dogodki za ta dan prikažejo v kontrolniku CalendarEventsGallery.

Kontrolnik podkroga v galeriji koledarja

Kontrolnik podkroga MonthDayGallery.

  • Lastnost: Vidno
    Vrednost:

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

    Kontrolnik Podkrog je viden, ko je spremenljivka _dateSelected enaka datumu celice in je kontrolnik Naslov viden. Z drugimi besedami: ta kontrolnik se pojavi, ko je celica trenutno izbrani datum.

Galerija dogodkov

Kontrolnik CalendarEventsGallery.

  • Lastnost: Elementi
    Vrednost: formula, ki razvršča in filtrira galerijo dogodkov:

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

    Zbirka MyCalendarEvents vsebuje vse dogodke med _minDate in _maxDate. Če želite prikazati dogodke samo za izbrani datum, se uporabi filter v razdelku MyCalendarEvents za prikaz dogodkov, katerih začetni datum je enakovreden \ _dateSelected. Elementi so nato razvrščeni po začetnih datumih, da jih postavite v zaporedni vrstni red.

Naslednji koraki

Opomba

Ali nam lahko poveste, kateri je vaš prednostni jezik za dokumentacijo? Izpolnite kratko anketo. (upoštevajte, da je v angleščini)

Z anketo boste porabili približno sedem minut. Ne zbiramo nobenih osebnih podatkov (izjava o zasebnosti).