Referenční informace o šabloně obrazovky schůzky pro aplikace plátna

Pro aplikace plátna v Power Apps, získejte informace o tom, jak každý významný ovládací prvek v šabloně obrazovky schůzky přispívá k celkové výchozí funkčnosti obrazovky. Tyto podrobnosti představují vzorce chování a hodnoty dalších vlastností, které určují, jak ovládací prvky reagují na vstup uživatele. Podrobnější informace o výchozí funkci této obrazovky naleznete na stránce přehled obrazovky schůzky.

Tento téma zdůrazňuje některé významné ovládací prvky a vysvětluje výrazy nebo vzorce, ke kterým jsou nastaveny různé vlastnosti (například Položky a OnSelect) z těchto ovládacích prvků:

Požadavek

Seznámení s tím, jak přidávat a konfigurovat obrazovky a další ovládací prvky při vytváření aplikace v Power Apps.

Karta Pozvat

Ovládací prvek LblInviteTab.

  • Vlastnost: Barva
    Hodnota: If( _showDetails, LblRecipientCount.Color, RectQuickActionBar.Fill )

    _showDetails je proměnná použitá k určení, zda je vybrán ovládací prvek LblInviteTab nebo LblScheduleTab. Pokud je hodnota _showDetails true, je vybrán LblScheduleTab; pokud je hodnota false, je vybrán LblInviteTab. To znamená, že pokud je hodnota _showDetails true (tato karta není vybrána), barva karty odpovídá barvě LblRecipientCount. V opačném případě odpovídá hodnotě výplně RectQuickActionBar.

  • Vlastnost: OnSelect
    Hodnota: Set( _showDetails, false )

    Nastaví proměnnou _showDetails na false, což znamená, že je viditelný obsah karty Pozvat a obsah karty Plán je skrytý.

Karta Plán

Karta Plán.

  • Vlastnost: Barva
    Hodnota: If( !_showDetails, LblRecipientCount.Color, RectQuickActionBar.Fill )

    _showDetails je proměnná použitá k určení, zda je vybrán ovládací prvek LblInviteTab nebo LblScheduleTab. Pokud je true, je vybrán LblScheduleTab; pokud je false, je vybrán LblInviteTab. To znamená, že pokud je hodnota _showDetails true (tato karta je vybrána), barva karty odpovídá barvě RectQuickActionBar. V opačném případě odpovídá hodnotě barvy LblRecipientCount.

  • Vlastnost: OnSelect
    Hodnota: Set( _showDetails, true )

    Nastaví proměnnou _showDetails na true, což znamená, že je viditelný obsah karty Plán a obsah karty Pozvat je skrytý.

Ovládací prvek TextSearchBox.

Několik dalších ovládacích prvků na obrazovce závisí na tomto:

  • Pokud uživatel začne psát jakýkoli text, zobrazí se PeopleBrowseGallery.
  • Pokud uživatel zadá platnou e-mailovou adresu, zobrazí se AddIcon.
  • Když uživatel uvnitř PeopleBrowseGallery někoho vybere, bude obsah vyhledávání resetován.

Ikona pro přidání

Ovládací prvek AddIcon.

Tento ovládací prvek umožňuje uživatelům přidávat lidi, kteří neexistují uvnitř jejich organizace, do seznamu uživatelů tvořené schůzky.

  • Vlastnost: Visible
    Hodnota: Tři logické kontroly, které musí všichni vyhodnotit, aby byla hodnota true a ovládací prvek byl viditelný:

    !IsBlank( TextSearchBox.Text ) &&
        IsMatch( TextSearchBox.Text, Match.Email ) &&
        Not( Trim( TextSearchBox.Text ) in MyPeople.UserPrincipalName )
    

    Řádek po řádku, tento blok kódu říká, že ovládací prvek AddIcon je viditelný, pouze pokud:

    • TextSearchBox obsahuje text.
    • Text v TextSearchBox je platná e-mailová adresa.
    • Text v TextSearchBox dosud neexistuje v kolekci MyPeople.
  • Vlastnost: OnSelect
    Hodnota: Příkaz Sbírat pro přidání uživatele do seznamu účastníků, další pro aktualizaci dostupných časů schůzek a několik přepínačů proměnných:

    Collect( MyPeople,
        { 
            DisplayName: TextSearchBox.Text, 
            UserPrincipalName: TextSearchBox.Text, 
            Mail: TextSearchBox.Text
        }
    );
    Concurrent(
        Reset( TextSearchBox ),
        Set( _showMeetingTimes, false ),
        UpdateContext( { _loadMeetingTimes: true } ),
        Set( _selectedMeetingTime, Blank() ),
        Set( _selectedRoom, Blank() ),
        Set( _roomListSelected, false ),
        ClearCollect( MeetingTimes, 
            AddColumns(
                'Office365'.FindMeetingTimes(
                    { 
                        RequiredAttendees: Concat(MyPeople, UserPrincipalName & ";")
                        MeetingDuration: MeetingDurationSelect.Selected.Minutes,
                        Start: Text( DateAdd( MeetingDateSelect.SelectedDate, 8, Hours ), UTC ),
                        End: Text( DateAdd( MeetingDateSelect.SelectedDate, 17, Hours ), UTC ),
                        MaxCandidates: 15, 
                        MinimumAttendeePercentage:1, 
                        IsOrganizerOptional: false, 
                        ActivityDomain: "Work"
                    }
                ).MeetingTimeSuggestions,
                "StartTime", MeetingTimeSlot.Start.DateTime, 
                "EndTime", MeetingTimeSlot.End.DateTime
            )
        )
    );
    UpdateContext( { _loadingMeetingTimes: false } );
    Set( _showMeetingTimes, true )
    

    Výběrem tohoto ovládacího prvku přidáte platnou e-mailovou adresu (viditelnou pouze v případě, že je zadána platná e-mailová adresa do TextSearchBox) do kolekce MyPeople (tato kolekce je seznam účastníků) a poté obnoví dostupné časy schůzek s novou položkou uživatele.

    Na nízké úrovni tento blok kódu:

    1. Shromažďuje e-mailovou adresu do kolekce MyPeople, shromažďuje e-mailové adresy do polí DisplayName, UserPrincipalName a Pošta.
    2. Resetuje obsah ovládacího prvku TextSearchBox.
    3. Nastaví proměnnou _showMeetingTimes na false. Tato proměnná řídí viditelnost FindMeetingTimesGallery, která zobrazuje p otevřené časy pro vybrané účastníky schůzky.
    4. Nastaví kontextovou proměnnou _loadMeetingTimes na true. Tato proměnná nastavuje stav načítání, který přepíná viditelnost ovládacích prvků stavu načítání jako _LblTimesEmptyState pro indikování uživatelům, že jsou jejich data načítána.
    5. Nastavuje _selectedMeetingTime na Blank(). _selectedMeetingTime je vybraný záznam z ovládacího prvku FindMeetingTimesGallery. Je zde prázdné, protože přidání dalšího účastníka by mohlo znamenat, že předchozí definice _selectedMeetingTime není pro tohoto účastníka k dispozici.
    6. Nastavuje _selectedRoom na Blank(). _selectedRoom je vybraný záznam místnosti z RoomBrowseGallery. Dostupnost místností je stanovena z hodnoty _selectedMeetingTime. Když je tato hodnota prázdná, hodnota _selectedRoom již není platná, proto musí být prázdná.
    7. Nastavuje _roomListSelected na false. Tento řádek nemusí být použitelný pro všechny. V Office můžete své místnosti seskupovat podle různých „seznamů místností". Pokud máte seznamy místností, tato obrazovka za to odpovídá, což vám umožní nejprve vybrat seznam místností před výběrem místnosti z tohoto seznamu. Hodnota _roomListSelected je to, co určuje, zda uživatel (pouze v klientovi se seznamy místností) bude prohlížet místnosti v seznamu místností nebo v sadě seznamů místností. Je nastaveno na false, aby donutilo uživatele znovu vybrat nový seznam místností.
    8. Používá operaci Office365.FindMeetingTimes k určení a shromáždění dostupných časů schůzek pro účastníky. Tato operace prochází:
      • UserPrincipalName každého vybraného uživatele do parametru RequiredAttendees.
      • MeetingDurationSelect.Selected.Minutes do parametru MeetingDuration.
      • MeetingDateSelect.SelectedDate + 8 hodin do parametru Start. Přidá se osm hodin, protože ve výchozím nastavení je úplné datum a čas pro ovládací prvek kalendáře 00:00 vybraného data. Pravděpodobně budete chtít získat dostupnost v běžné pracovní době. Normální pracovní doba začíná v 8:00.
      • MeetingDateSelect.SelectedDate + 17 hodin do parametru End. Přidá se 17 hodin, protože 00:00 + 17 = 17:00. Normální pracovní doba končí v 17:00.
      • 15 do parametru MaxCandidates. To znamená, že operace vrátí pouze prvních 15 dostupných časů pro vybrané datum. To dává smysl, protože v 8hodinovém pracovním dni je pouze šestnáct třicetiminutových bloků a na této obrazovce lze nastavit minimálně 30minutové setkání.
      • 1 do parametru MinimumAttendeePercentage. V zásadě, pokud nejsou k dispozici žádní účastníci, není načtena doba schůzky.
      • false do parametru IsOrganizerOptional. Uživatel aplikace není volitelným účastníkem této schůzky.
      • "Work" do parametru ActivityDomain. To znamená, že načtené časy jsou pouze časy v normální pracovní době.
    9. Funkce ClearCollect také přidá dva sloupce: "StartTime" a "EndTime". To zjednodušuje vrácení dat. Pole obsahující dostupné časy začátku a konce je pole MeetingTimeSlot. Toto pole je záznam obsahující záznamy Start a End, které samy obsahují hodnoty DateTime a TimeZone jejich příslušných návrhů. Namísto pokusu o načtení tohoto vnoření záznamů přidání sloupců „StartTime“ a „EndTime“ do kolekce MeetingTimes přináší hodnoty Start > DateTime a End > DateTime na začátek kolekce.
    10. Jakmile jsou všechny tyto funkce dokončeny, proměnná _loadingMeetingTimes je nastavena na false, což odebere stav načítání, a _showMeetingTimes je nastaveno na true, což zobrazí FindMeetingTimesGallery.

Ovládací prvek PeopleBrowseGallery.

  • Vlastnost: Položky
    Hodnota:
    If( !IsBlank( Trim( TextSearchBox.Text ) ), 
        'Office365Users'.SearchUser( { searchTerm: Trim(TextSearchBox.Text), top: 15 } )
    )
    

Položky této galerie jsou vyplněny výsledky vyhledávání z operace Office365.SearchUser. Operace bere text v Trim(**TextSearchBox**) jako termín vyhledávání a na základě tohoto vyhledávání vrací 15 nejlepších výsledků.

TextSearchBox je zabalen do funkce Trim, protože vyhledávání uživatelů v mezerách není platné. Operace Office365Users.SearchUser je zabalena do funkce If(!IsBlank(Trim(TextSearchBox.Text)) ... ), protože načítání výsledků vyhledávání před vyhledáváním uživatelů je plýtvání výkonem.

Ovládací prvek Název galerie pro procházení osob.

  • Vlastnost: Text
    Hodnota: ThisItem.DisplayName

    Zobrazuje zobrazované jméno dané osoby z profilu Office 365.

  • Vlastnost: OnSelect
    Hodnota: Příkaz Sbírat pro přidání uživatele do seznamu účastníků, další pro aktualizaci dostupných časů schůzek a několik přepínačů proměnných:

    Concurrent(
        Reset( TextSearchBox ),
        Set( _selectedUser, ThisItem ),
        If( Not( ThisItem.UserPrincipalName in MyPeople.UserPrincipalName ), 
            Collect( MyPeople, ThisItem ); 
            Concurrent(
                Set( _showMeetingTimes, false ),
                UpdateContext( { _loadMeetingTimes: true } ),
                Set( _selectedMeetingTime, Blank() ),
                Set( _selectedRoom, Blank() ),
                Set( _roomListSelected, false ),
                ClearCollect( MeetingTimes, 
                    AddColumns(
                        'Office365'.FindMeetingTimes(
                            {
                                RequiredAttendees: Concat( MyPeople, UserPrincipalName & ";" ),
                                MeetingDuration: MeetingDurationSelect.Selected.Minutes,
                                Start: Text( DateAdd( MeetingDateSelect.SelectedDate, 8, Hours ), UTC ),
                                End: Text( DateAdd( MeetingDateSelect.SelectedDate, 17, Hours ), UTC ),
                                MaxCandidates: 15, 
                                MinimumAttendeePercentage: 1, 
                                IsOrganizerOptional: false, 
                                ActivityDomain: "Work"
                            }
                        ).MeetingTimeSuggestions,
                        "StartTime", MeetingTimeSlot.Start.DateTime, 
                        "EndTime", MeetingTimeSlot.End.DateTime
                    )
                )
            );
            UpdateContext( { _loadingMeetingTimes: false } );
            Set( _showMeetingTimes, true )
        )
    )
    

    Na vysoké úrovni přidá tento ovládací prvek danou osobu do kolekce MyPeople (uložení seznamu účastníků do aplikace) a obnovuje dostupné časy schůzek na základě nového přidání uživatele.

    Výběr tohoto ovládacího prvku je velmi podobný výběru ovládacího prvku AddIcon; jediným rozdílem je příkaz Set(_selectedUser, ThisItem) a pořadí provedení operací. Tato diskuse tedy nebude tak podrobná. Pro podrobnější vysvětlení si přečtěte sekci Ovládací prvek AddIcon.

    Výběr tohoto ovládacího prvku resetuje TextSearchBox. Pak, pokud výběr není v kolekci MyPeople, ovládací prvek:

    1. Nastaví stav _loadMeetingTimes na true a stav _showMeetingTimes na false, vynuluje proměnné _selectedMeetingTime a _selectedRoom a obnoví kiolekci MeetingTimes s novým přírůstkem do kolekci MyPeople.
    2. Nastaví stav _loadMeetingTimes na false a _showMeetingTimes na true. Pokud je výběr již v kolekci MyPeople, resetuje pouze obsah TextSearchBox.

Ovládací prvek MeetingPeopleGallery.

  • Vlastnost: Položky
    Hodnota: MyPeople

    Kolekce MyPeople je kolekce osob inicializovaných nebo přidaných výběrem ovládacího prvku PeopleBrowseGallery Title.

  • Vlastnost: Height
    Hodnota: Logika umožňující růstu galerie do maximální výšky 350:

    Min( 
        76 * RoundUp( CountRows( MeetingPeopleGallery.AllItems ) / 2, 0 ),
        350
    )
    

    Výška této galerie se přizpůsobí počtu položek v galerii na maximální výšku 350. Vzorec bere 76 jako výšku jednoho řádku MeetingPeopleGallery a pak ji vynásobí počtem řádků. Vlastnost WrapCount je nastavena na 2, takže počet skutečných řádků je RoundUp(CountRows(MeetingPeopleGallery.AllItems) / 2, 0).

  • Vlastnost: ShowScrollbar
    Hodnota: MeetingPeopleGallery.Height >= 350

    Jakmile je dosažena maximální výška galerie (350), zobrazí se posuvník.

Ovládací prvek Název MeetingPeopleGallery.

  • Vlastnost: OnSelect

    Hodnota: Set(_selectedUser, ThisItem)

    Nastaví proměnnou _selectedUser na vybranou položku v MeetingPeopleGallery.

Ovládací prvek iconRemove MeetingPeopleGallery.

  • Vlastnost: OnSelect
    Hodnota: Příkaz Odebrat pro odebrání uživatele ze seznamu účastníků, příkaz Sbírat pro aktualizaci dostupných časů schůzek a několik přepínačů proměnných:

    Remove( MyPeople, LookUp( MyPeople, UserPrincipalName = ThisItem.UserPrincipalName ) );
    Concurrent(
        Reset( TextSearchBox ),
        Set( _showMeetingTimes, false ),
        UpdateContext( { _loadMeetingTimes: true } ),
        Set( _selectedMeetingTime, Blank() ),
        Set( _selectedRoom, Blank() ),
        Set( _roomListSelected, false ),
        ClearCollect( MeetingTimes, 
            AddColumns(
                'Office365'.FindMeetingTimes(
                    {
                        RequiredAttendees: Concat( MyPeople, UserPrincipalName & ";" ), 
                        MeetingDuration: MeetingDurationSelect.Selected.Minutes,
                        Start: Text( DateAdd( MeetingDateSelect.SelectedDate, 8, Hours ), UTC ), 
                        End: Text( DateAdd( MeetingDateSelect.SelectedDate, 17, Hours ), UTC ),
                        MaxCandidates: 15, 
                        MinimumAttendeePercentage: 1, 
                        IsOrganizerOptional: false, 
                        ActivityDomain: "Work"
                    }
                ).MeetingTimeSuggestions,
                "StartTime", MeetingTimeSlot.Start.DateTime, 
                "EndTime", MeetingTimeSlot.End.DateTime
            )
        )
    );
    UpdateContext( { _loadingMeetingTimes: false } );
    Set( _showMeetingTimes, true )
    

    Výběrem tohoto ovládacího prvku na vysoké úrovni bude osoba odebrána ze seznamu účastníků a obnoví se dostupné časy schůzek na základě odebrání této osoby.

    Po prvním řádku předchozího kódu je výběr tohoto ovládacího prvku téměř totožný s výběrem řídicího prvku AddIcon. Tato diskuse tedy nebude tak podrobná. Pro podrobnější vysvětlení si přečtěte sekci Ovládací prvek AddIcon.

    V prvním řádku kódu je vybraná položka odstraněna z kolekce MyPeople. Kód pak:

    1. Resetuje TextSearchBox a poté odebere výběr z kolekce MyPeople.
    2. Nastaví stav _loadMeetingTimes na true a stav _showMeetingTimes na false, vynuluje proměnné _selectedMeetingTime a _selectedRoom a obnoví kiolekci MeetingTimes s novým přírůstkem do kolekci MyPeople.
    3. Nastaví stav _loadMeetingTimes na false a _showMeetingTimes na true.

Výběr data schůzky

Ovládací prvek MeetingDateSelect.

  • Vlastnost DisplayMode
    Hodnota: If( IsEmpty(MyPeople), DisplayMode.Disabled, DisplayMode.Edit )

    Datum schůzky nemůže být zvoleno, dokud nebude do kolekce MyPeople přidán alespoň jeden účastník.

  • Vlastnost: OnChange
    Hodnota: Select( MeetingDateSelect )

    Změna vybraného data spustí kód ve vlastnosti OnSelect tohoto ovládacího prvku pro spuštění.

  • Vlastnost: OnSelect
    Hodnota: Příkaz Sbírat pro aktualizaci dostupných časů schůzek a několik přepínačů proměnných:

    Concurrent(
        Reset( TextSearchBox ),
        Set( _showMeetingTimes, false ),
        UpdateContext( { _loadingMeetingTimes: true } ),
        Set( _selectedMeetingTime, Blank() ),
        Set( _selectedRoom, Blank() ),
        Set( _roomListSelected, false ),
        ClearCollect( MeetingTimes, 
            AddColumns(
                'Office365'.FindMeetingTimes(
                    {
                        RequiredAttendees: Concat( MyPeople, UserPrincipalName & ";" ), 
                        MeetingDuration: MeetingDurationSelect.Selected.Minutes,
                        Start: Text( DateAdd( MeetingDateSelect.SelectedDate, 8, Hours ), UTC ), 
                        End: Text( DateAdd( MeetingDateSelect.SelectedDate, 17, Hours ), UTC ),
                        MaxCandidates: 15, 
                        MinimumAttendeePercentage: 1, 
                        IsOrganizerOptional: false, 
                        ActivityDomain: "Work"
                    }
                ).MeetingTimeSuggestions,
                "StartTime", MeetingTimeSlot.Start.DateTime, 
                "EndTime", MeetingTimeSlot.End.DateTime
            )
        )
    );
    UpdateContext( { _loadingMeetingTimes: false } );
    Set( _showMeetingTimes, true )
    

    Výběrem tohoto ovládacího prvku na vysoké úrovni obnovíte dostupné časy schůzek. Je to užitečné, protože pokud uživatel změní datum, musí být dostupné časy schůzek aktualizovány, aby odrážely možnosti účastníků pro daný den.

    S výjimkou počátečního příkazu Sbírat toto je totožné s funkcí OnSelect ovládacího prvku AddIcon. Tato diskuse tedy nebude tak podrobná. Pro podrobnější vysvětlení si přečtěte sekci Ovládací prvek AddIcon.

    Výběr tohoto ovládacího prvku resetuje TextSearchBox. To pak:

    1. Nastaví stav _loadMeetingTimes na true a stav _showMeetingTimes na false, vynuluje proměnné _selectedMeetingTime a _selectedRoom a obnoví kolekci MeetingTimes s novou volbou data.
    2. Nastaví stav _loadMeetingTimes na false a _showMeetingTimes na true.

Rozbalovací nabídka trvání schůzky

Ovládací prvek MeetingDateSelect - doba trvání.

  • Vlastnost DisplayMode
    Hodnota: If( IsEmpty(MyPeople), DisplayMode.Disabled, DisplayMode.Edit )

    Trvání schůzky nemůže být zvoleno, dokud nebude do kolekce MyPeople přidán alespoň jeden účastník.

  • Vlastnost: OnChange
    Hodnota: Select(MeetingDateSelect1)

    Změna vybraného trvání spustí kód ve vlastnosti OnSelect ovládacího prvku MeetingDateSelect pro spuštění.

Ovládací prvek FindMeetingTimesGallery.

  • Vlastnost: Položky
    Hodnota: MeetingTimes

    Soubor potenciálních časů schůzek získaných z operace Office365.FindMeetingTimes.

  • Vlastnost: Visible
    Hodnota: _showMeetingTimes && _showDetails && !IsEmpty( MyPeople )

    Galerie je viditelná, pouze pokud je _showMeetingTimes nastaveno na true, uživatel vybral ovládací prvek LblScheduleTab a na schůzku byl přidán alespoň jeden účastník.

Ovládací prvek Název FindMeetingTimesGallery.

  • Vlastnost: Text
    Hodnota: Převod počátečního času, který se má zobrazit v místním čase uživatele:

    Text(
        DateAdd(
            DateTimeValue( ThisItem.StartTime ),
            - TimeZoneOffset(), 
            Minutes
        ),
        DateTimeFormat.ShortTime
    )
    

    Získaná hodnota StartTime je ve formátu UTC. Pro převod z UTC na místní čas je použita funkce DateAdd. Funkce Text vezme datum / čas jako svůj první argument a naformátuje jej na základě svého druhého argumentu. Předáte ji místní konverzi času ThisItem.StartTime a zobrazíte ji jako DateTimeFormat.ShortTime.

  • Vlastnost: OnSelect
    Hodnota: Několik příkazů Sbírat ke shromáždění zasedacích místností a jejich navrhovaných možností a několik přepínačů proměnných:

    Set( _selectedMeetingTime, ThisItem );
    UpdateContext( { _loadingRooms: true } );
    If( IsEmpty( RoomsLists ),
        ClearCollect( RoomsLists, 'Office365'.GetRoomLists().value) );
    If( CountRows( RoomsLists ) <= 1,
        Set( _noRoomLists, true );
        ClearCollect( AllRooms, 'Office365'.GetRooms().value );
        Set( _allRoomsConcat, Concat( FirstN( AllRooms, 20 ), Address & ";" ) );
        ClearCollect( RoomTimeSuggestions, 
            'Office365'.FindMeetingTimes(
                {
                    RequiredAttendees: _allRoomsConcat, 
                    MeetingDuration: MeetingDurationSelect.Selected.Minutes,
                    Start: _selectedMeetingTime.StartTime & "Z", 
                    End: _selectedMeetingTime.EndTime & "Z", 
                    MinimumAttendeePercentage: "1",
                    IsOrganizerOptional: "false", 
                    ActivityDomain: "Unrestricted"
                }
            ).MeetingTimeSuggestions
        );
        ClearCollect( AvailableRooms, 
            AddColumns(
                AddColumns(
                    Filter( 
                        First( RoomTimeSuggestions ).AttendeeAvailability,
                        Availability="Free"
                    ), 
                    "Address", Attendee.EmailAddress.Address
                ), 
                "Name", LookUp( AllRooms, Address = Attendee.EmailAddress.Address ).Name 
            )
        );
        ClearCollect( AvailableRoomsOptimal, 
            DropColumns(
                DropColumns( AvailableRooms, "Availability" ), 
                "Attendee" 
            )
        ),
        Set( _roomListSelected, false) 
    );
    UpdateContext( {_loadingRooms: false} )
    

    Tento blok kódu na vysoké úrovni shromažďuje dostupné místnosti pro uživatele, kteří nemají seznamy místností, na základě vybraného data / času schůzky. Jinak jednoduše vyhledá seznamy místností.

    Na nízké úrovni tento blok kódu:

    1. Nastaví _selectedMeetingTime na vybranou položku. Slouží k nalezení toho, jaké místnosti jsou během této doby k dispozici.
    2. Nastaví proměnnou stavu načítání _loadingRooms na true a zapne stav načítání.
    3. Pokud je kolekce RoomLists prázdná, načte seznamy místností klienta uživatele a uloží je do kolekce RoomLists.
    4. Pokud uživatel nemá seznam místností nebo jeden seznam místností:
      1. Proměnná noRoomLists je nastavena na true a tato proměnná se používá k určení položek zobrazených v ovládacím prvku RoomBrowseGallery.
      2. Operace Office365.GetRooms() se používá k získání prvních 100 místností v jejich klientovi. Ty jsou uloženy v kolekci AllRooms.
      3. Proměnná _allRoomsConcat je nastavena na středníkem oddělený řetězec prvních 20 e-mailových adres místností v kolekci AllRooms. Je to proto, že Office365.FindMeetingTimes je omezeno na vyhledávání dostupných časů 20 osobních objektů v jedné operaci.
      4. Kolekce RoomTimeSuggestions používá Office365.FindMeetingTimes k načtená dostupnosti prvních 20 místností v kolekci AllRooms na základě časových hodnot z proměnné _selectedMeetingTime. Všimněte si, že & "Z" se používá pro správné formátování hodnoty DateTime.
      5. Vytvoří se kolekce AvailableRooms. Jedná se prostě o kolekci RoomTimeSuggestions dostupných účastníků se dvěma přidanými sloupci: „Adresa“ a „Název“. „Adresa“ je e-mailová adresa místnosti a „Název“ je název místnosti.
      6. Pak se vytvoří se kolekce AvailableRoomsOptimal. Jedná se pouze o kolekci AvailableRooms s odstraněnými sloupci „Dostupnost“ a „Účastník“. To odpovídá schématu AvailableRoomsOptimal a AllRooms. To vám umožní používat obě kolekce ve vlastnosti Items RoomBrowseGallery.
      7. _roomListSelected se nastaví na false.
    5. Stav načítání, _loadingRooms, je nastaveno na false, jakmile všechno ostatní dokončí provádění.

Ovládací prvek RoomBrowseGallery.

  • Vlastnost: Položky
    Hodnota: Logicky nastavena na dvě interní kolekce identického schématu v závislosti na tom, zda uživatel vybral seznam místností nebo má seznamy místností ve svém klientoví:

    Search(
        If( _roomListSelected || _noRoomLists, AvailableRoomsOptimal, RoomsLists ),
        Trim(TextMeetingLocation1.Text), 
        "Name", 
        "Address"
    )
    

    Tato galerie zobrazuje kolekci AvailableRoomsOptimal, pokud _roomListSelected nebo _noRoomLists je true. Jinak se zobrazí kolekce RoomLists. To lze provést, protože schéma těchto kolekcí je totožné.

  • Vlastnost: Visible
    Hodnota: _showDetails && !IsBlank( _selectedMeetingTime ) && !_loadingRooms

    Galerie je viditelná pouze v případě, že se vyhodnotí tři předchozí příkazy na true.

Název RoomBrowseGallery

Ovládací prvek Název RoomBrowseGallery.

  • Vlastnost: OnSelect
    Hodnota: Sada logicky vázaných příkazů Collect a Set, které mohou nebo nemusí být spuštěny, v závislosti na tom, zda uživatel prohlíží seznamy místností nebo místnosti:

    UpdateContext( { _loadingRooms: true } );
    If( !_roomListSelected && !noRoomLists,
        Set( _roomListSelected, true );
        Set( _selectedRoomList, ThisItem.Name );
        ClearCollect( AllRooms, 'Office365'.GetRoomsInRoomList( ThisItem.Address ).value );
        Set( _allRoomsConcat, Concat( FirstN( AllRooms, 20 ), Address & ";" ) );
        ClearCollect( RoomTimeSuggestions, 
            'Office365'.FindMeetingTimes(
                {
                    RequiredAttendees: _allRoomsConcat, 
                    MeetingDuration: MeetingDurationSelect.Selected.Minutes,
                        Start: _selectedMeetingTime.StartTime & "Z", 
                    End: _selectedMeetingTime.EndTime & "Z", 
                    MinimumAttendeePercentage: "1",
                    IsOrganizerOptional: "false", 
                    ActivityDomain: "Unrestricted"
                }
            ).MeetingTimeSuggestions
        );
        ClearCollect( AvailableRooms, 
            AddColumns(
                AddColumns(
                    Filter(
                        First( RoomTimeSuggestions ).AttendeeAvailability, 
                        Availability = "Free"
                    ),
                    "Address", Attendee.EmailAddress.Address 
                ), 
                "Name", LookUp( AllRooms, Address = Attendee.EmailAddress.Address ).Name
            )
        );
        ClearCollect( AvailableRoomsOptimal, 
            DropColumns(
                DropColumns( AvailableRooms, "Availability" )
            ), 
            "Attendee" )
        ),
        Set( _selectedRoom, ThisItem )
    );
    UpdateContext( {_loadingRooms: false} )
    

    Akce, ke kterým dojde při výběru tohoto ovládacího prvku, závisí na tom, zda uživatel aktuálně prohlíží sadu seznamů místností nebo sadu místností. Pokud se jedná o první, vybere tento ovládací prvek z vybraného seznamu místností místnosti, které jsou k dispozici ve vybraném čase. Pokud se jedná o druhou možnost, výběrem tohoto ovládacího prvku nastavíte proměnnou _selectedRoom na vybranou položku. Předchozí příkaz je velmi podobný příkazu Select pro Název FindMeetingTimesGallery.

    Na nízké úrovni předchozí blok kódu:

    1. Zapíná stav načítání místností nastavením _loadingRooms na true.
    2. Zkontroluje, zda byl vybrán seznam pokojů a zda má klient seznamy místností. Pokud ano:
      1. Nastaví _roomListSelected na true a _selectedRoomList na vybranou položku.
      2. Proměnná _allRoomsConcat je nastavena na středníkem oddělený řetězec prvních 20 e-mailových adres místností v kolekci AllRooms. Je to proto, že operace Office365.FindMeetingTimes je omezena na vyhledávání dostupných časů 20 osobních objektů v jedné operaci.
      3. Kolekce RoomTimeSuggestions používá operaci Office365.FindMeetingTimes k načtení dostupnosti prvních 20 místností v kolekci AllRooms na základě časových hodnot z proměnné _selectedMeetingTime. Všimněte si, že & "Z" se používá pro správné formátování hodnoty DateTime.
      4. Vytvoří se kolekce AvailableRooms. Jedná se prostě o kolekci RoomTimeSuggestions dostupných účastníků se dvěma přidanými sloupci: „Adresa“ a „Název“. „Adresa“ je e-mailová adresa místnosti a „Název“ je název místnosti.
      5. Pak se vytvoří se kolekce AvailableRoomsOptimal. Jedná se pouze o kolekci AvailableRooms s odstraněnými sloupci „Dostupnost“ a „Účastník“. To odpovídá schématu AvailableRoomsOptimal a AllRooms. To vám umožní používat obě kolekce ve vlastnosti Items RoomBrowseGallery.
      6. _roomListSelected se nastaví na false.
    3. Stav načítání, _loadingRooms, je nastaveno na false, jakmile všechno ostatní dokončí provádění.

Dvojitá šipka Zpět

Ovládací prvek RoomsBackNav.

  • Vlastnost: Viditelný
    Hodnota: _roomListSelected && _showDetails

    Tento ovládací prvek je viditelný, pouze pokud byl vybrán seznam místností i karta Plán.

  • Vlastnost: OnSelect
    Hodnota: Set( _roomListSelected, false )

    Když je _roomListSelected nastaven na false, změní ovládací prvek RoomBrowseGallery pro zobrazení položek z kolekce RoomsLists.

Ikona Odeslat

Ovládací prvek IconSendItem.

  • Vlastnost DisplayMode
    Hodnota: Logika, která nutí uživatele k zadání určitých podrobností o schůzce před tím, než bude ikona upravitelná.

    If( Len( Trim( TextMeetingSubject1.Text ) ) > 0
        && !IsEmpty( MyPeople ) && !IsBlank( _selectedMeetingTime ),
        DisplayMode.Edit, DisplayMode.Disabled
    )
    

    Ikona je volitelná, pouze pokud je předmět schůzky vyplněn, pro schůzku je alespoň jeden účastník a byla vybrána doba schůzky. Jinak je zakázána.

  • Vlastnost: OnSelect

    Hodnota: Kód pro odeslání pozvánky na schůzku vybraným účastníkům a vymazání všech vstupních polí:

    Set( _myCalendarName, LookUp( 'Office365'.CalendarGetTables().value, DisplayName = "Calendar" ).Name );
    Set( _myScheduledMeeting, 
        'Office365'.V2CalendarPostItem( _myCalendarName,
            TextMeetingSubject1.Text, 
            Text(DateAdd(DateTimeValue( _selectedMeetingTime.StartTime), -TimeZoneOffset(), Minutes) ),
            Text(DateAdd(DateTimeValue( _selectedMeetingTime.EndTime), -TimeZoneOffset(), Minutes) ),
            {
                RequiredAttendees: Concat( MyPeople, UserPrincipalName & ";" ) & _selectedRoom.Address, 
                Body: TextMeetingMessage1.Text, 
                Location: _selectedRoom.Name, 
                Importance: "Normal", 
                ShowAs: "Busy", 
                ResponseRequested: true
            }
        )
    );
    Concurrent(
        Reset( TextMeetingLocation1 ),
        Reset( TextMeetingSubject1 ),
        Reset( TextMeetingMessage1 ),
        Clear( MyPeople ),
        Set( _selectedMeetingTime, Blank() ),
        Set( _selectedRoomList, Blank() ),
        Set( _selectedRoom, Blank() ),
        Set( _roomListSelected, false )
    )
    

    Na nízké úrovni tento blok kódu:

    1. Nastaví _myCalendarName na kalendář v operaci Office365.CalendarGetTables() s DisplayName „Kalendáře“.
    2. Naplánuje schůzku se všemi vstupními hodnotami z různých výběrů, které uživatel provedl na celé obrazovce pomocí operace Office365.V2CalendarPostItem.
    3. Resetuje všechna vstupní pole a proměnné použité při vytváření schůzky.

Poznámka

V závislosti na vaší oblasti nemusí mít požadovaný kalendář zobrazovaný název „Kalendáře“. Přejděte do aplikace Outlook a zjistěte, jaký je název kalendáře, a proveďte příslušnou změnu v aplikaci.

Další kroky

Poznámka

Můžete nám sdělit, jaké máte jazykové preference pro dokumentaci? Zúčastněte se krátkého průzkumu. (upozorňujeme, že tento průzkum je v angličtině)

Průzkum bude trvat asi sedm minut. Nejsou shromažďovány žádné osobní údaje (prohlášení o zásadách ochrany osobních údajů).