Informacije o uputi za predložak zaslona za sastanke za aplikacije od gotovih gradivnih elemenata

Za aplikacije radnog područja u Power Apps shvatite kako svaka značajna kontrola u predlošku zaslona sastanka doprinosi ukupnoj zadanoj funkcionalnosti zaslona. Ovaj duboki uvid predstavlja formule ponašanja i vrijednosti drugih svojstava koja određuju kako kontrole reagiraju na unos korisnika. Iznimno kvalitetnu raspravu o zadanoj funkcionalnosti ovog zaslona pogledajte u pregledu zaslona za sastanke.

Ova tema naglašava neke značajne kontrole i objašnjava izraze ili formule kojima odgovaraju različita svojstva (kao što je Stavke i OnSelect) na koje su postavljene ove kontrole:

Preduvjet

Poznavanje načina dodavanja i konfiguriranja zaslona i drugih kontrola prilikom stvaranja aplikacije u Power Apps.

Kartica Pozovi

Kontrola LblInviteTab.

  • Svojstvo: Boja
    Vrijednost: If( _showDetails, LblRecipientCount.Color, RectQuickActionBar.Fill )

    _showDetails varijabla je koja se upotrebljava za utvrđivanje je li odabrana kontrola LblInviteTab ili LblScheduleTab. Ako varijabla _showDetails ima vrijednost točno, odabrana je kontrola LblScheduleTab; ako je vrijednost netočno, odabrana je kontrola LblInviteTab. To znači da ako varijabla _showDetails ima vrijednost točno (ova kartica nije odabrana), boja kartice podudara se s bojom kontrole LblRecipientCount. U suprotnom, podudara se s vrijednošću za popunjavanje kontrole RectQuickActionBar.

  • Svojstvo: OnSelect
    Vrijednost: Set( _showDetails, false )

    Postavlja vrijednost varijable _showDetails na netočno, što znači da su sadržaji kartice Pozovi vidljivi, a sadržaji kartice Raspored skriveni.

Kartica Raspored

Kartica Raspored.

  • Svojstvo: Boja
    Vrijednost: If( !_showDetails, LblRecipientCount.Color, RectQuickActionBar.Fill )

    _showDetails varijabla je koja se upotrebljava za utvrđivanje je li odabrana kontrola LblInviteTab ili LblScheduleTab. Ako je točno, odabrana je kontrola LblScheduleTab; ako je netočno, odabrana je kontrola LblInviteTab. To znači da ako varijabla _showDetails ima vrijednost točno (odabrana je ova kartica), boja kartice podudara se s vrijednošću za popunjavanje kontrole RectQuickActionBar. U suprotnom, podudara se s vrijednošću boje kontrole RectQuickActionBar.

  • Svojstvo: OnSelect
    Vrijednost: Set( _showDetails, true )

    Postavlja vrijednost varijable _showDetails na točno, što znači da su sadržaji kartice Raspored vidljivi, a sadržaji kartice Pozovi skriveni.

Kontrola TextSearchBox.

Nekoliko drugih kontrola na zaslonu ovise o ovoj:

  • Ako korisnik počne unositi neki tekst, PeopleBrowseGallery postaje vidljivo.
  • Ako korisnik upiše valjanu adresu e-pošte, AddIcon postaje vidljivo.
  • Kad korisnik odabere osobu unutar PeopleBrowseGallery sadržaji pretraživanja vraćaju se na zadane.

Dodaj ikonu

Kontrola AddIcon.

Ova kontrola omogućuje korisnicima dodavanje osoba koje ne postoje unutar njihovih tvrtki ili ustanova na popis sudionika organiziranog sastanka.

  • Svojstvo: Vidljivo
    Vrijednost: Tri logičke provjere koje kontrolu moraju procijeniti s točno kako bi bila vidljiva:

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

    Redak po redak, ovaj blok koda govori da je kontrola AddIcon vidljiva samo ako:

    • TextSearchBox sadrži tekst.
    • Tekst u Okvirzapretraživanjeteksta je valjana adresa e-pošte.
    • Tekst u Okvirzapretraživanjeteksta ne postoji u zbirci Mojiljudi.
  • Svojstvo: OnSelect
    Vrijednost: Tvrdnja Prikupi za dodavanje korisnika na popis sudionika, druga za osvježavanje dostupnih vremena sastanka i nekoliko promjena varijable:

    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 )
    

    Odabirom ove kontrole dodaje se valjana adresa e-pošte (vidljiva samo ako je valjana adresa e-pošte unesena unutar TextSearchBox) zbirci Moji ljudi (ova zbirka popis je sudionika), a zatim osvježava dostupna vremena sastanka unosom novog korisnika.

    Na niskoj razini, ovaj blok koda:

    1. Prikuplja adrese e-pošte u zbirku Moji ljudi, prikuplja adrese e-pošte u polja DisplayName, UserPrincipalName i Pošta.
    2. Vraća zadani sadržaj kontrole TextSearchBox.
    3. Postavlja varijablu _showMeetingTimes na netočno. Ova varijabla kontrolira vidljivost stavke FindMeetingTimesGallery, koja prikazuje slobodna vremena za sastanke s odabranim sudionicima.
    4. Postavlja varijablu konteksta _loadMeetingTimes na točno. Ova varijabla postavlja stanje učitavanja, koje mijenja vidljivost kontrola stanja učitavanja poput _LblTimesEmptyState, kako bi ukazali korisniku da se njihovi podaci učitavaju.
    5. Postavlja _selectedMeetingTime na Prazan(). _selectedMeetingTime odabrani je zapis iz kontrole FindMeetingTimesGallery. Ovdje je nevidljivo jer bi dodavanje drugog sudionika moglo značiti da prethodna definicija kontrole _selectedMeetingTime nije dostupno za tog sudionika.
    6. Postavlja _selectedRoom na Prazan(). _selectedRoom zapis je odabrane sobe iz RoomBrowseGallery. Dostupnost sobe određuje se iz vrijednosti kontrole _selectedMeetingTime. Ako se ova vrijednost ne vidi, vrijednost kontrole _selectedRoom više nije valjana pa je treba izbrisati.
    7. Postavlja _roomListSelected na netočno. Ovaj redak možda se ne može primijeniti na sve. U programu Office svoje sobe možete grupirati putem različitih „popisa soba”. Ako imate popise soba, na ovom se zaslonu računa, što vam omogućuje da najprije odaberete popis soba pa tek onda sobu s tog popisa. Vrijednost kontrole _roomListSelected određuje hoće li korisnik (u klijentu koji sadrži samo popise soba) pregledavati sobe unutar popisa soba ili skupa popisa soba. Postavljeno je na netočno kako bi se prisililo korisnike da ponovno odaberu novi popis soba.
    8. Upotrebljava operaciju Office365.FindMeetingTimes za utvrđivanje i prikupljanje dostupnih vremena sastanaka za sudionike. Ova operacija prolazi:
      • UserPrincipalName svakog odabranog korisnika unutar parametra RequiredAttendees.
      • MeetingDurationSelect .Odabrane.Minute unutar parametra MeetingDuration.
      • MeetingDateSelect.SelectedDate + 8 sati unutar parametra Početak. Osam sati se dodaje jer je, prema zadanim postavkama, puni datum/vrijeme za kontrolu kalendara 24:00 sata odabranog datuma. Vjerojatno želite pronaći dostupnosti unutar normalnog radnog vremena. Normalno vrijeme početka rada bilo bi 8:00 sati.
      • MeetingDateSelect.SelectedDate + 17 sati unutar parametra Završetak. Dodaje se 17 sati jer je 24:00 + 17 = 17:00 sati. Normalno vrijeme završetka rada bilo bi 17:00 sati.
      • 15 unutar parametra MaxCandidates. To znači da operacija vraća samo prvih 15 dostupnih vremena za odabrani datum. To ima smisla jer u 8-satnom radnom danu ima samo šesnaest dijelova od 30 minuta, a sastanak u trajanju od 30 minuta minimum je koji se može postaviti na ovom zaslonu.
      • 1 unutar parametra MinimumAttendeePercentage. U osnovi, osim ako nema dostupnih sudionika, vrijeme sastanka se preuzima.
      • netočno unutar parametra IsOrganizerOptional. Korisnik aplikacije nije neobvezni sudionik ovog sastanka.
      • „Rad” unutar parametra ActivityDomain. To znači da su pronađena samo ona vremena koja se nalaze unutar uobičajenog radnog vremena.
    9. Funkcija ClearCollect također dodaje dva stupca: „StartTime” i „EndTime”. Ovo pojednostavljuje vraćene podatke. Polje MeetingTimeSlot polje je koje sadrži dostupno vrijeme početka i završetka. Ovo je polje zapis koji sadrži zapise Početka i Završetka, koji i sami sadrže vrijednosti DateTime i TimeZone njihovog odgovarajućeg prijedloga. Umjesto da pokušate dohvatiti te ugniježđene zapise, dodavanje stupaca „StartTime” i „EndTime” u zbirku MeetingTimes donosi one vrijednosti Start> DateTime i End> DateTime na površinu zbirke.
    10. Nakon što se sve ove funkcije dovrše, varijabla _loadingMeetingTimes postavljena je na netočno, uklanjajući stanje učitavanja, a kontrola _showMeetingTimes postavljena je na točno, prikazujući FindMeetingTimesGallery.

Kontrola PeopleBrowseGalery.

  • Svojstvo: Stavke
    Vrijednost:
    If( !IsBlank( Trim( TextSearchBox.Text ) ), 
        'Office365Users'.SearchUser( { searchTerm: Trim(TextSearchBox.Text), top: 15 } )
    )
    

Stavke ove galerije ispunjene su rezultatima pretraživanja iz Office365.SearchUser operacije. Operacija uzima tekst u Trim(**TextSearchBox**) kao svoj pojam za pretraživanje i na temelju te pretrage vraća prvih 15 rezultata.

TextSearchBox obuhvaćen je u funkciji Skrati jer korisničko pretraživanje na razmacima nije valjano. Operacija Office365Users.SearchUser upakirana je u funkciju If(!IsBlank(Trim(TextSearchBox.Text)) ... ) jer dohvaćanje rezultata pretraživanja prije nego što je korisnik pretražio predstavlja gubitak performansi.

Naziv kontrole PeopleBrowseGallery.

  • Svojstvo: Tekst
    Vrijednost: ThisItem.DisplayName

    Prikazuje zaslonsko ime osobe s profila Office 365.

  • Svojstvo: OnSelect
    Vrijednost: Tvrdnja Prikupi za dodavanje korisnika na popis sudionika, druga za osvježavanje dostupnih vremena sastanka i nekoliko promjena varijable:

    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 visokoj razini, odabirom ove kontrole osoba se dodaje zbirci Moji ljudi (spremište aplikacije za popis sudionika) i osvježava raspoloživa vremena sastanka na temelju dodavanja novog korisnika.

    Odabir ove kontrole vrlo je sličan odabiru kontrole AddIcon; jedina je razlika tvrdnja Set(_selectedUser, ThisItem) i redoslijed izvršenja operacija. Kao takva, ova rasprava neće biti toliko duboka. Podrobnije objašnjenje pročitajte u odjeljku Kontrola AddIcon.

    Odabirom ove kontrole vrši se vraćanje zadanih postavki TextSearchBox. Zatim, ako odabir nije u zbirci Moji ljudi, kontrola:

    1. Postavlja stanje _loadMeetingTimes na točno i stanje _showMeetingTimes na netočno, ostavlja prazne varijable _selectedMeetingTime i _selectedRoom te osvježava zbirku MeetingTimes s novim dodatkom zbirci Moji ljudi.
    2. Postavlja stanje _loadMeetingTimes na netočno i _showMeetingTimes na točno. Ako se odabir već nalazi u zbirci Moji ljudi, vraća samo zadani sadržaj kontrole TextSearchBox.

Kontrola MeetingPeopleGallery.

  • Svojstvo: Stavke
    Vrijednost: MyPeople

    Zbirka Moji ljudi skup je osoba koji su inicijalizirani ili dodani odabirom kontrole Naslov PeopleBrowseGallery.

  • Svojstvo: Visina
    Vrijednost: Logika kojom se omogućuje galeriji da raste do maksimalne visine od 350:

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

    Visina ove galerije prilagođava se broju stavki u galeriji, do maksimalne visine od 350. Formula uzima 76 kao visinu jednog retka kontrole MeetingPeopleGallery, a zatim ga množi s brojem redaka. Svojstvo WrapCount postavljeno je na 2, tako da je broj točnih redaka RoundUp(CountRows(MeetingPeopleGallery.AllItems) / 2, 0),

  • Svojstvo: ShowScrollbar
    Vrijednost: MeetingPeopleGallery.Height >= 350

    Kada se dosegne maksimalna visina galerije (350), vidljiv je klizač.

Kontrola naslova MeetingPeopleGallery.

  • Svojstvo: OnSelect

    Vrijednost: Set(_selectedUser, ThisItem)

    Postavlja varijablu _selectedUser na stavku odabranu u kontroli MeetingPeopleGallery.

Kontrola iconRemove MeetingPeopleGallery.

  • Svojstvo: OnSelect
    Vrijednost: Tvrdnja Ukloni za uklanjanje korisnika s popisa sudionika, tvrdnja Prikupi za osvježavanje dostupnih vremena sastanka i nekoliko promjena varijable:

    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 )
    

    Na visokoj razini, odabirom ove kontrole uklanja se osoba s popisa sudionika i osvježavaju dostupna vremena sastanka na temelju uklanjanja te osobe.

    Nakon prvog retka prethodnog koda, odabir ove kontrole gotovo je identičan odabiru kontrole AddIcon. Kao takva, ova rasprava neće biti toliko duboka. Podrobnije objašnjenje pročitajte u odjeljku Kontrola AddIcon.

    U prvom retku koda odabrana stavka uklanja se iz zbirke Moji ljudi. Kod zatim:

    1. Vraća zadanu vrijednost kontroli TextSearchBox, a zatim uklanja odabir iz zbirke Moji ljudi.
    2. Postavlja stanje _loadMeetingTimes na točno i stanje _showMeetingTimes na netočno, ostavlja prazne varijable _selectedMeetingTime i _selectedRoom te osvježava zbirku MeetingTimes s novim dodatkom zbirci Moji ljudi.
    3. Postavlja stanje _loadMeetingTimes na netočno i _showMeetingTimes na točno.

Birač datuma sastanka

Kontrola MeetingDateSelect.

  • Svojstvo: DisplayMode
    Vrijednost: If( IsEmpty(MyPeople), DisplayMode.Disabled, DisplayMode.Edit )

    Datum sastanka ne može se odabrati sve dok barem jedan sudionik ne bude dodan zbirci Moji ljudi.

  • Svojstvo: OnChange
    Vrijednost: Select( MeetingDateSelect )

    Promjena odabranog datuma pokreće kod u svojstvu OnSelect ove kontrole.

  • Svojstvo: OnSelect
    Vrijednost: Tvrdnja Prikupi za osvježavanje dostupnih vremena sastanka i nekoliko promjena varijabli:

    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 )
    

    Na visokoj razini, odabirom ove kontrole osvježavaju se dostupna vremena sastanka. Vrijedan je, jer ako korisnik promijeni datum, raspoloživa vremena sastanka treba ažurirati kako bi odražavala dostupnost sudionika za taj dan.

    S izuzetkom početne tvrdnje Prikupi, ovo je istovjetno s funkcionalnošću OnSelect kontrole AddIcon. Kao takva, ova rasprava neće biti toliko duboka. Podrobnije objašnjenje pročitajte u odjeljku Kontrola AddIcon.

    Odabirom ove kontrole vrši se vraćanje zadanih postavki TextSearchBox. Ona tada:

    1. Postavlja stanje kontrole _loadMeetingTimes na točno i stanje kontrole _showMeetingTimes na netočno, ostavlja prazne varijable _selectedMeetingTime i _selectedRoom te osvježava zbirku MeetingTimes odabirom novog datuma.
    2. Postavlja stanje _loadMeetingTimes na netočno i _showMeetingTimes na točno.

Padajući izbornik Trajanje sastanka

Kontrola MeetingDateSelect – trajanje.

  • Svojstvo: DisplayMode
    Vrijednost: If( IsEmpty(MyPeople), DisplayMode.Disabled, DisplayMode.Edit )

    Trajanje sastanka ne može se odabrati sve dok barem jedan sudionik ne bude dodan zbirci Moji ljudi.

  • Svojstvo: OnChange
    Vrijednost: Select(MeetingDateSelect1)

    Promjena odabranog trajanja pokreće kod u svojstvu OnSelect kontrole MeetingDateSelect.

Kontrola FindMeetingTimesGallery.

  • Svojstvo: Stavke
    Vrijednost: MeetingTimes

    Zbirka potencijalnih vremena sastanka preuzeta iz operacije Office365.FindMeetingTimes.

  • Svojstvo: Vidljivo
    Vrijednost: _showMeetingTimes && _showDetails && !IsEmpty( MyPeople )

    Galerija je vidljiva samo ako je kontrola _showMeetingTimes postavljena na točno, korisnik je odabrao kontrolu LblScheduleTab, a sastanku je pridodan najmanje jedan sudionik.

Kontrola naslova FindMeetingTimesGallery.

  • Svojstvo: Tekst
    Vrijednost: Konverzija početnog vremena koja će se prikazati u lokalnom vremenu korisnika:

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

    Dohvaćena vrijednost stavke Vrijeme početka u formatu je UTC-e. Za pretvaranje iz UTC-e u lokalno vrijeme, primjenjuje se funkcija DateAdd. Tekst funkcija uzima datum/vrijeme kao svoj prvi argument i oblikuje ga na temelju svog drugog argumenta. Prolazite ga lokalnom pretvorbom vremena od ThisItem.StartTime, i prikazuje ga kao DateTimeFormat.ShortTime.

  • Svojstvo: OnSelect
    Vrijednost: Nekoliko tvrdnji Prikupi za prikupljanje soba za sastanke i njihove predložene dostupnosti, kao i nekoliko promjena varijabli:

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

    Na visokoj razini, ovaj blok koda prikuplja dostupne sobe korisnicima koji nemaju popise soba na temelju odabranog datuma/vremena sastanka. U suprotnom, on jednostavno preuzima popise soba.

    Na niskoj razini, ovaj blok koda:

    1. Postavlja kontrolu _selectedMeetingTime na odabranu stavku. To se upotrebljava za pronalaženje soba dostupnih tijekom tog vremena.
    2. Postavlja varijablu stanja učitavanja _loadingRooms na točno, uključivanjem stanja učitavanja.
    3. Ako je zbirka RoomsLists prazna, ona preuzima popise korisnika klijenta i sprema ih u zbirku RoomsLists.
    4. Ako korisnik nema popis soba ili jedan popis soba:
      1. Varijabla noRoomLists postavljena je na točno, a ova se varijabla upotrebljava za određivanje stavki prikazanih u kontroli RoomBrowseGallery.
      2. Operacija Office365.GetRooms() upotrebljava se za preuzimanje prvih 100 soba s njihovog klijenta. One su pohranjene u zbirci AllRooms.
      3. Varijabla _allRoomsConcat postavljena je u niz odvojen točkom sa zarezom od prvih 20 adresa e-pošte soba u zbirci AllRooms. To je zato što je Office365.FindMeetingTimes ograničen na traženje dostupnih vremena za objekte za 20 osoba u jednoj operaciji.
      4. Zbirka RoomTimeSuggestions upotrebljava Office365.FindMeetingTimes kako bi se pronašle dostupnosti prvih 20 soba u zbirci AllRooms na temelju vremenskih vrijednosti iz varijable _selectedMeetingTime. Imajte na umu da se & "Z" upotrebljava za pravilno oblikovanje vrijednosti DateTime.
      5. Stvorena je zbirka AvailableRooms. Ovo je jednostavna zbirka dostupnosti sudionika RoomTimeSuggestions s dva dodatna stupca koji su joj dodani: „Adresa” i „Naziv”. „Adresa” je adresa e-pošte sobe, a „Naziv” je naziv sobe.
      6. Zatim se stvara zbirka AvailableRoomsOptimal. Ovo je samo zbirka AvailableRooms bez stupaca „Dostupnost” i „Sudionik”. To se podudara sa shemama AvailableRoomsOptimal i AllRooms. To vam omogućuje upotrebu obje zbirke u svojstvu Stavke varijable RoomBrowseGallery.
      7. _roomListSelected postavljena je na netočno.
    5. Stanje učitavanja, _loadingRooms, postavljeno je na netočno nakon što izvršavanje svega drugog završi.

Kontrola RoomBrowseGallery.

  • Svojstvo: Stavke
    Vrijednost: Logično se postavlja u dvije unutarnje zbirke jednakih shema, ovisno o tome je li korisnik odabrao popis soba ili popise soba ima na svom klijentu:

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

    Ova galerija prikazuje zbirku AvailableRoomsOptimal ako _roomListSelected ili _noRoomLists ima vrijednost točno. U suprotnom, prikazuje se zbirka RoomsLists. To se može učiniti jer su sheme ovih zbirki jednake.

  • Svojstvo: Vidljivo
    Vrijednost: _showDetails && !IsBlank( _selectedMeetingTime ) && !_loadingRooms

    Galerija je vidljiva samo ako tri prethodne tvrdnje budu točno.

Naslov RoomBrowseGallery

Kontrola naslova RoomBrowseGallery.

  • Svojstvo: OnSelect
    Vrijednost: Skup logički vezanih tvrdnji Prikupi i Skup koje se mogu ili ne moraju pokrenuti, ovisno o tome je li korisnik pregledavao popise soba ili sobe:

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

    Radnje koje se događaju kad se odabere ova kontrola ovise o tome gleda li korisnik trenutačno skup popisa soba ili skup soba. Ako je prethodna, tada odabirom ove kontrole preuzima sobe koje su dostupne s popisa odabranih soba u odabrano vrijeme. Ako je potonja, odabirom ove kontrole na odabranu se stavku postavlja varijabla _selectedRoom. Prethodna tvrdnja vrlo je slična tvrdnji Odaberi za Naslov FindMeetingTimesGallery.

    Na niskoj razini, prethodni blok koda:

    1. Uključuje stanje učitavanja za sobe postavljanjem kontrole _loadingRooms na točno.
    2. Provjerava je li odabran popis soba i ima li klijent popise soba. Ako je tako:
      1. Postavlja _roomListSelected na točno i postavlja _selectedRoomList na odabranu stavku.
      2. Varijabla _allRoomsConcat postavljena je u niz odvojen točkom sa zarezom od prvih 20 adresa e-pošte soba u zbirci AllRooms. To je zato što je operacija Office365.FindMeetingTimes ograničena na traženje dostupnih vremena za objekte za 20 osoba u jednoj operaciji.
      3. Zbirka RoomTimeSuggestions upotrebljava operaciju Office365.FindMeetingTimes kako bi se pronašle dostupnosti prvih 20 soba u zbirci AllRooms na temelju vremenskih vrijednosti iz varijable _selectedMeetingTime. Imajte na umu kako se & "Z" upotrebljava za pravilno oblikovanje vrijednosti DateTime.
      4. Stvorena je zbirka AvailableRooms. Ovo je jednostavna zbirka dostupnosti sudionika RoomTimeSuggestions s dva dodatna stupca koji su joj dodani: „Adresa” i „Naziv”. „Adresa” je adresa e-pošte sobe, a „Naziv” je naziv sobe.
      5. Zatim se stvara zbirka AvailableRoomsOptimal. Ovo je samo zbirka AvailableRooms bez stupaca „Dostupnost” i „Sudionik”. To se podudara sa shemama AvailableRoomsOptimal i AllRooms. To vam omogućuje uporabu obje zbirke u svojstvu Stavke varijable RoomBrowseGallery.
      6. _roomListSelected postavljena je na netočno.
    3. Stanje učitavanja, _loadingRooms, postavljeno je na netočno nakon što izvršavanje svega drugog završi.

Vrati chevron

Kontrola RoomsBackNav.

  • Svojstvo: Vidljivo
    Vrijednost: _roomListSelected && _showDetails

    Ova kontrola vidljiva je samo ako su odabrani i popis soba i kartica Raspored.

  • Svojstvo: OnSelect
    Vrijednost: Set( _roomListSelected, false )

    Kada je kontrola _roomListSelected postavljena na netočno, to mijenja kontrolu RoomBrowseGallery za prikaz stavki iz zbirke RoomsLists.

Pošalji ikonu

Kontrola IconSendItem.

  • Svojstvo: DisplayMode
    Vrijednost: Logika je prisiliti korisnika da unese određene pojedinosti o sastanku prije nego što ikona postane podobna za uređivanje.

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

    Ikona se može odabrati samo ako je tema sastanka popunjena, ako postoji barem jedan sudionik sastanka i ako je odabrano vrijeme sastanka. Inače je onemogućena.

  • Svojstvo: OnSelect

    Vrijednost: Kod za slanje pozivnice za sastanak odabranim sudionicima i čišćenje svih polja za unos:

    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 niskoj razini, ovaj blok koda:

    1. Postavlja kontrolu _myCalendarName u kalendar u operaciju Office365.CalendarGetTables () s varijablom DisplayName „Kalendara”.
    2. Planira sastanak sa svim ulaznim vrijednostima iz različitih odabira koje je korisnik napravio na cijelom zaslonu s pomoću operacije Office365.V2CalendarPostItem.
    3. Vraća na zadano sva ulazna polja i varijable upotrijebljene za stvaranje sastanka.

Napomena

Ovisno o vašoj regiji, željeni kalendar možda neće imati zaslonski naziv „Kalendar”. Idite u program Outlook kako biste vidjeli koji je naziv vašeg kalendara i izvršite odgovarajuću promjenu u aplikaciji.

Sljedeći koraci