Predloga zaslona koledarja v aplikacijah s platnom
V aplikaciji delovnega območja dodajte zaslon koledarja, ki uporabnikom prikazuje prihajajoče dogodke iz njihovih računov za Office 365 Outlook. Uporabniki lahko izberejo datum na koledarju in se pomaknejo po seznamu dogodkov tega dne. Spremenite lahko, katere podrobnosti so prikazane na seznamu, dodate drugi zaslon, ki prikazuje več podrobnosti o posameznem dogodku, prikažete seznam udeležencev za posamezen dogodek in izvedete druge prilagoditve.
Dodate lahko tudi druge zaslone, ki temeljijo na predlogah in prikazujejo različne podatke iz storitve Office 365, kot so e-pošta, osebe v organizaciji in razpoložljivost oseb, ki bi jih uporabniki lahko želeli povabiti na srečanje.
Ta pregled vas nauči:
- Kako uporabljati privzeti zaslon koledarja.
- Kako ga spremeniti.
- Kako ga vključiti v aplikacijo.
Če vas zanimajo vse podrobnosti o privzeti funkcionalnosti tega zaslona, glejte Referenca zaslona koledarja.
Predpogoj
Poznavanje postopkov dodajanja in konfiguriranja zaslonov ter drugih kontrolnikov, ko ustvarjate aplikacijo v storitvi Power Apps.
Privzeta funkcionalnost
Dodajanje zaslona koledarja iz predloge:
Vpišite se v storitev Power Apps in nato ustvarite aplikacijo ali odprite obstoječo aplikacijo v storitvi Power Apps Studio.
Ta tema prikazuje aplikacijo za telefon, vendar enaki koncepti veljajo za aplikacijo za tablične računalnike.
Na zavihku Osnovno traku izberite Nov zaslon > Koledar.
Zaslon je privzeto videti podoben temu:

Če želite prikazati podatke, izberite možnost na spustnem seznamu na vrhu zaslona.

Nekaj koristnih opomb:
- Današnji datum je izbran privzeto in nanj se lahko enostavno vrnete tako, da v zgornjem desnem kotu izberete ikono koledarja.
- Če izberete drug datum, se okrog njega pojavi krog, okrog današnjega datuma pa se pojavi pravokotnik svetle barve (moder, če je uporabljena privzeta tema).
- Če je za določen datum načrtovan vsaj en dogodek, se pod tem datumom v koledarju prikaže majhen barvni krog.
- Če izberete datum, za katerega je načrtovan en ali več dogodkov, se dogodki prikažejo na seznamu pod koledarjem.
Sprememba zaslona
Privzeto funkcionalnost tega zaslona lahko spremenite na nekaj pogostih načinov:
Če želite zaslon nadalje spremeniti, uporabite razdelek Referenca zaslona koledarja kot vodnik.
Določanje koledarja
Če že veste, kateri koledar bi si morali uporabniki ogledati, lahko zaslon poenostavite tako, da pred objavo aplikacije določite ta koledar. S to spremembo odstranite potrebo po spustnem seznamu koledarjev, zato ga lahko odstranite.
Nastavite lastnost OnStart aplikacije na to formulo:
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) - 2 + 1 ), Days ) ); Set( _lastDayOfMonth, DateAdd( DateAdd( _firstDayOfMonth, 1, Months ), -1, Days ) ); Set( _calendarVisible, false ); Set( _myCalendar, LookUp(Office365Outlook.CalendarGetTablesV2().value, DisplayName = "{YourCalendarNameHere}" ) ); Set( _minDate, DateAdd( _firstDayOfMonth, -( Weekday(_firstDayOfMonth) - 2 + 1 ), Days ) ); Set( _maxDate, DateAdd( DateAdd( _firstDayOfMonth, -( Weekday(_firstDayOfMonth) - 2 + 1 ), Days ), 40, Days ) ); ClearCollect( MyCalendarEvents, Office365Outlook.GetEventsCalendarViewV3(_myCalendar.name, Text( _minDate, UTC), Text( _maxDate, UTC) ).value ); Set( _calendarVisible, true )Opomba
Ta formula je rahlo spremenjena v primerjavi s privzeto vrednostjo lastnosti OnSelect spustnega seznama za izbiro koledarja. Za več informacij o tem kontrolniku glejte razdelek v temi Referenca zaslona koledarja.
Zamenjajte
{YourCalendarNameHere}, vključno z zavitimi oklepaji, z imenom koledarja, ki ga želite prikazati (npr. Koledar).Pomembno
V naslednjih korakih predvidevamo, da ste v aplikacijo dodali samo en zaslon koledarja. Če ste dodali več kot enega, se bodo imena kontrolnikov (kot je iconCalendar1) končala z drugačnimi številkami in morali boste ustrezno prilagoditi formule.
Lastnost Y za kontrolnik iconCalendar1 nastavite na ta izraz:
RectQuickActionBar1.Height + 20Lastnost Y za kontrolnik LblMonthSelected1 nastavite na ta izraz:
iconCalendar1.Y + iconCalendar1.Height + 20Lastnost Besedilo za kontrolnik LblNoEvents1 nastavite na to vrednost:
"No events scheduled"Nastavite lastnost Vidno za LblNoEvents1 na to formulo:
CountRows(CalendarEventsGallery1.AllItems) = 0 && _calendarVisibleIzbrišite naslednje kontrolnike:
- dropdownCalendarSelection1
- LblEmptyState1
- iconEmptyState1
Če zaslon koledarja ni privzeti zaslon, dodajte gumb za pomikanje s privzetega zaslona do zaslona koledarja, da boste lahko preizkusili aplikacijo.
Na Zaslon1 na primer dodajte gumb za pomikanje do Zaslona2, če ste aplikaciji, ki ste jo ustvarili od začetka, dodali zaslon koledarja.
Aplikacijo shranite in jo preizkusite v brskalniku ali mobilni napravi.
Prikaz različnih podrobnosti o dogodku
Privzeto je galerija pod koledarjem poimenovana CalendarEventsGallery, prikazuje začetni čas, trajanje, zadevo in lokacijo posameznega dogodka. Galerijo lahko konfigurirate tako, da bo prikazala katero koli polje (npr. organizator), ki ga podpira povezovalnik storitve Office 365.
V razdelku CalendarEventsGallery nastavite lastnost Besedilo nove ali obstoječe oznake na element
ThisItem, ki mu sledi pika.IntelliSense prikaže seznam polj, ki jih lahko izberete.
Izberite želeno polje.
Oznaka prikazuje vrsto podatkov, ki ste jih navedli.
Skrivanje neblokirnih dogodkov
V številnih pisarnah člani ekipe pošiljajo povabila na srečanje, da se medsebojno obvestijo, kdaj bodo odsotni iz pisarne. Za preprečevanje blokiranja urnikov vseh članov, oseba, ki pošlje povabilo, nastavi svojo razpoložljivost na Prosto. Te dogodke lahko skrijete iz koledarja in galerije tako, da posodobite nekaj lastnosti.
Lastnost Elementi za CalendarEventsGallery nastavite na to formulo:
SortByColumns( Filter( MyCalendarEvents, Text( Start, DateTimeFormat.ShortDate ) = Text( _dateSelected, DateTimeFormat.ShortDate ), ShowAs <> "Free" ), "Start" )V tej formuli funkcija Filter ne skriva le tistih dogodkov, ki so načrtovani za datum, ki ni izbran, temveč tudi dogodke, za katere je razpoložljivost nastavljena na Prosto.
V koledarju nastavite lastnost Vidno kontrolnika Krog na to formulo:
CountRows( Filter( MyCalendarEvents, DateValue( Text(Start) ) = DateAdd( _firstDayInView, ThisItem.Value, Days ), ShowAs <> "Free" ) ) > 0 && !Subcircle1.Visible && Title2.VisibleTa formula vsebuje enake filtre kot prejšnja formula. Zato se krog indikatorja dogodkov pojavi pod datumom le, če vsebuje enega ali več dogodkov na izbrani datum in za katere razpoložljivost ni nastavljena na možnost Prosto.
Vključitev zaslona v aplikacijo
Zaslon koledarja je zmogljiv paket kontrolnikov že sam po sebi, običajno pa najbolje deluje kot del večje, bolj raznolike aplikacije. Ta zaslon lahko integrirate v večjo aplikacijo na številne načine, vključno z dodajanjem teh možnosti:
Ogled podrobnosti o dogodku
Če uporabniki izberejo dogodek v razdelku CalendarEventsGallery, lahko odprete drug zaslon, ki prikazuje več informacij o tem dogodku.
Opomba
Ta postopek prikazuje podrobnosti o dogodku v galeriji z dinamično vsebino, vendar lahko podobne rezultate dosežete z drugimi pristopi. Več nadzora nad oblikovanjem lahko na primer pridobite tako, da namesto tega uporabite niz oznak.
Dodajte prazen zaslon z imenom EventDetailsScreen, ki vsebuje prazno galerijo s prilagodljivo višino in gumb za pomikanje nazaj na zaslon koledarja.
V galeriji s prilagodljivo višino dodajte kontrolnik Oznaka in kontrolnik Besedilo HTML ter nastavite lastnost AutoHeight obeh na možnost drži.
Opomba
Power Apps pridobi telo sporočila posameznega dogodka kot besedilo HTML, zato morate to vsebino pokazati v kontrolniku Besedilo HTML.
Lastnost Y za kontrolnik Besedilo HTML nastavite na ta izraz:
Label1.Y + Label1.Height + 20Po potrebi prilagodite dodatne lastnosti, da bodo ustrezale vašim slogovnim potrebam.
Morda boste na primer želeli dodati ločilno vrstico pod kontrolnik Besedilo HTML.
Nastavite lastnost Elementi galerije s prilagodljivo višino na to formulo:
Table( { Title: "Subject", Value: _selectedCalendarEvent.Subject }, { Title: "Time", Value: _selectedCalendarEvent.Start & " - " & _selectedCalendarEvent.End }, { Title: "Body", Value: _selectedCalendarEvent.Body } )Ta formula ustvari galerijo dinamičnih podatkov, ki je nastavljena na vrednosti polja _selectedCalendarEvent, ki se nastavi vsakič, ko uporabnik izbere dogodek v kontrolniku CalendarEventsGallery. To galerijo lahko razširite na več polj tako, da ji dodate več oznak, vendar ta niz nudi dobro izhodišče.
Z elementi galerije na mestu nastavite lastnost Besedilo kontrolnika Oznaka na
ThisItem.Titlein lastnost HtmlText kontrolnika Besedilo HTML naThisItem.Value.V razdelku CalendarEventsGallery nastavite lastnost OnSelect kontrolnika Naslov na to formulo:
Set( _selectedCalendarEvent, ThisItem ); Navigate( EventDetailsScreen, None )Opomba
Namesto da bi uporabili spremenljivko _selectedCalendarEvent, lahko uporabite CalendarEventsGallery.Selected.
Prikaz udeležencev dogodkov
Postopek Office365.GetEventsCalendarViewV2 pridobi različna polja za posamezne dogodke, vključno nizom, ločenim s podpičjem, obveznih in neobveznih udeležencev. V tem postopku boste razčlenili vsak niz udeležencev, določili, kateri udeleženci so v vaši organizaciji, in pridobili profile Office 365 vseh, ki so.
Če vaša aplikacija ne vsebuje povezovalnika za uporabnike storitve Office 365, ga dodajte.
Če želite pridobiti profile Office 365 udeležencev srečanja, nastavite lastnost OnSelect kontrolnika Naslov v razdelku CalendarEventsGallery na to formulo:
Set( _selectedCalendarEvent, ThisItem ); ClearCollect( AttendeeEmailsTemp, Filter( Split( ThisItem.RequiredAttendees & ThisItem.OptionalAttendees, ";" ), !IsBlank( Result ) ) ); ClearCollect( AttendeeEmails, AddColumns( AttendeeEmailsTemp, "InOrg", Upper( _userDomain ) = Upper( Right( Result, Len( Result ) - Find( "@", Result ) ) ) ) ); ClearCollect( MyPeople, ForAll( AttendeeEmails, If( InOrg, Office365Users.UserProfile( Result ) ) ) ); Collect( MyPeople, ForAll( AttendeeEmails, If( !InOrg, { DisplayName: Result, Id: "", JobTitle: "", UserPrincipalName: Result } ) ) )
Na tem seznamu so obravnavane vloge posameznih postopkov ClearCollect:
ClearCollect(AttendeeEmailsTemp)
ClearCollect( AttendeeEmailsTemp, Filter( Split( ThisItem.RequiredAttendees & ThisItem.OptionalAttendees, ";" ), !IsBlank( Result) ) );Ta formula združuje obvezne in neobvezne udeležence v en niz in nato razdeli ta niz na posamezne naslove pri vsakem podpičju. Formula nato filtrira prazne vrednosti iz tega niza in doda druge vrednosti v zbirko z imenom AttendeeEmailsTemp.
ClearCollect(AttendeeEmails)
ClearCollect( AttendeeEmails, AddColumns( AttendeeEmailsTemp, "InOrg", Upper( _userDomain ) = Upper( Right( Result, Len(Result) - Find("@", Result) ) ) ) );Ta formula približno določa, ali je udeleženec v vaši organizaciji. Opredelitev _userDomain je preprosto URL domene v e-poštnem naslovu osebe, ki izvaja aplikacijo. Ta vrstica ustvari dodatni stolpec drži/ne drži z imenom InOrg v zbirki AttendeeEmailsTemp. Ta stolpec vsebuje možnost drži, če je userDomain enakovreden URL-ju domene e-poštnega naslova v tej določeni vrstici za AttendeeEmailsTemp.
Ta pristop ni vedno natančen, vendar se precej približa. Nekateri udeleženci v vaši organizaciji imajo npr. e-poštni naslov, kot je Jane@OnContoso.com, medtem ko je _userDomain Contoso.com. Uporabnik aplikacije in Jane lahko delata v istem podjetju, vendar imata v svojih e-poštnih naslovih majhne razlike. V takih primerih boste morda želeli uporabiti naslednjo formulo:
Upper(_userDomain) in Upper(Right(Result, Len(Result) - Find("@", Result)))Vendar se ta formula ujema z e-poštnimi naslovi, kot je Jane@NotTheContosoCompany.com, z domeno _userDomain, kot je Contoso.com, čeprav te osebe ne delajo v istem podjetju.
ClearCollect(MyPeople)
ClearCollect( MyPeople, ForAll( AttendeeEmails, If( InOrg, Office365Users.UserProfile( Result ) ) ) ); Collect( MyPeople, ForAll( AttendeeEmails, If( !InOrg, { DisplayName: Result, Id: "", JobTitle: "", UserPrincipalName: Result } ) ) );Za pridobivanje profilov Office 365 morate uporabiti postopek Office365Users.UserProfile ali Office365Users.UserProfileV2. Ti postopki najprej zberejo vse profile Office 365 za udeležence, ki so v uporabnikovi organizaciji. Nato postopki dodajo nekaj polj za udeležence zunaj organizacije. Ta elementa ste ločili v različna postopka, ker zanka ForAll ne zagotavlja reda. Zato bo morda zanka ForAll najprej zbrala udeleženca zunaj organizacije. V tem primeru shema za MyPeople vsebuje samo DisplayName, Id, JobTitle in UserPrincipalName. Vendar pa postopki UserProfile pridobijo veliko bolj obogatene podatke od tega. Zato zbirko MyPeople prisilite, da doda profile Office 365 pred drugimi profili.
Opomba
Enak rezultat lahko dosežete le z eno funkcijo ClearCollect:
ClearCollect( MyPeople, ForAll( AddColumns( Filter( Split( ThisItem.RequiredAttendees & ThisItem.OptionalAttendees, ";" ), !IsBlank( Result ) ), "InOrg", _userDomain = Right( Result, Len( Result ) - Find( "@", Result ) ) ), If( InOrg, Office365Users.UserProfile( Result ), { DisplayName: Result, Id: "", JobTitle: "", UserPrincipalName: Result, Department: "", OfficeLocation: "", TelephoneNumber: "" } ) ) )
Za zaključek te vaje:
Dodajte zaslon z galerijo, za katero je lastnost Elementi nastavljena na MyPeople.
V lastnosti OnSelect kontrolnika Naslov v razdelku CalendarEventsGallery dodajte funkcijo Krmarjenje na zaslon, ki ste ga ustvarili v prejšnjem koraku.
Naslednji koraki
- Prikaz referenčne dokumentacije za ta zaslon.
- Preberite več o povezovalniku Office 365 Outlook.
- Preberite več o povezovalniku za uporabnike storitve Office 365.
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).
Povratne informacije
Pošlji in prikaži povratne informacije za