Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Následující specifikace popisuje, jak implementovat renderer adaptivní karty na libovolné nativní platformě uživatelského rozhraní.
Důležité
Tento obsah probíhá a může chybět několik podrobností. Pokud máte nějaké dotazy nebo zpětnou vazbu, dejte nám prosím vědět .
Analýza JSON
Stavy chyb
- Analyzátor musí zkontrolovat, jestli je platný obsah JSON.
- Analyzátor musí ověřit schéma (požadované vlastnosti atd.)
- Výše uvedené chyby musí být hlášeny hostitelské aplikaci (výjimka nebo ekvivalent).
Neznámé typy
- Pokud jsou zjištěny neznámé "typy", musí být vyřazeny z výsledku.
- Jakékoli změny datové části (například výše) by měly být nahlášeny jako varování hostitelské aplikaci.
Neznámé vlastnosti
- Analyzátor musí obsahovat další vlastnosti prvků.
Další důležité informace
- Vlastnost
speakMŮŽE obsahovat kód SSML a musí být vrácena do hostitelské aplikace tak, jak je uvedeno.
Analýza konfigurace hostitele
- TODO
Verzování
- Renderer MUSÍ implementovat konkrétní verzi schématu.
- Konstruktor
AdaptiveCardMUSÍ dátversionvlastnosti výchozí hodnotu na základě aktuální verze schématu. - Pokud renderer objeví
versionvlastnost veAdaptiveCard, která je vyšší než podporovaná verze, musí místo toho vrátitfallbackText.
Renderování
Skládá se z AdaptiveCard a bodyactions. Jedná se body o kolekci CardElementobjektů, které vykreslovací modul vypíše a vykresluje v daném pořadí.
- Každý prvek se musí roztáhnout na šířku nadřazeného objektu (myslete si
display: blockv HTML). - Renderer musí ignorovat všechny neznámé typy prvků, na které narazí, a pokračovat v vykreslování zbývající části datové části.
Text, TextBlock a RichTextBlock
- TextBlock MUSÍ zabírat jeden řádek, pokud není
wrapvlastnosttrue. - Blok textu BY MĚL oříznout veškerý nadbytečný text třemi tečkami (...)
Markdown
- Adaptivní karty umožňují podmnožinu Markdownu a měly by být podporovány v
TextBlock. - RichTextBlock nepodporuje Markdown a musí být stylován pomocí vlastností, které jsou vystaveny.
- Zobrazení úplných požadavků na Markdown
Funkce formátování
-
TextBlockumožňuje formátování funkcí data a času , které musí být podporovány v každém rendereru. - VŠECHNA SELHÁNÍ MUSÍ zobrazit na kartě nezpracovaný řetězec. Nebyla pokusena žádná přátelská zpráva. (Cílem, aby vývojář okamžitě věděl, že došlo k problému)
Obrázky
- Vykreslovací modul BY měl umožnit hostitelským aplikacím zjistit, kdy byly staženy všechny image HTTP a karta je "plně vykreslená".
- Renderer musí při stahování imagí HTTP zkontrolovat parametry konfigurace
maxImageSizehostitele. -
Vykreslovací modul MUSÍ podporovat
.pnga.jpeg - Vykreslovací modul BY MĚL podporovat
.gifobrázky
Pokročilé chování rozložení
Renderer musí při vykreslování prvků karty s ohledem na atributy uvedené v tomto dokumentu dbát na následující chování.
Vykreslovací modul by měl spravovat omezení s ohledem na různé faktory, jako jsou okraje, odsazení, výška a šířka atd. prvky karty a jeho podřízené položky.
Šířka
- Povolené hodnoty –
autostretcha pevné hodnoty z hlediskapixelsaweight -
autoposkytuje dostatečný prostor pro rozšíření šířky (podporuje minimální rozšíření). -
stretchzabírá zbývající šířku (podporuje maximální rozšíření)
Níže uvedené scénáře popisují, jak jsou omezení ovlivněna různými kombinacemi šířky sloupců.
auto vs. stretch
- Sloupce s šířkou
autoastretch.
- První sloupec s
autošířkou zabírá dostatek místa k zobrazení obsahu a druhý sloupec sstretchšířkou zabírá celé místo.
- Sloupce s pouze
stretchšířkou
- Sloupce, které mají pouze natáhnutou šířku, zabírají zbylý prostor po rovnoměrném rozdělení.
-
auto,stretchaauto
Šířka prvního a třetího sloupce se upraví tak, aby vyhovovala prvkům dostatečně a druhý sloupec s roztaženou šířkou zabírá zbývající prostor.
- Pořadí zobrazení prvků se sloupci o šířce
auto
- Sloupce s
autose umístí tak, aby zajistily dostatečný prostor pro vykreslení obsahu. - V případě náhledů obrázků se obrázky zmenší, aby se vešly do zbývající šířky.
-
Poznámka: Obrázky se zmenší pouze pro
stretchaautovelikost obrázku, ale ne pro pevně danou šířku a výšku v pixelech.
weights vs. pixels
- Sloupce s kombinací šířky
weightapixel
- Výše uvedená karta má tři sloupce s následující konfigurací šířky :
-
Column1: Weight 50,Column2: 100px,Column3: Weight 50 - Šířka sloupce 2 je určena prvkem
pixel value - Šířka sloupce 1 a 3 se upraví na základě
weightsa vypočítanéhoweight ratio.
- Sloupce s atributy
weight,pixel widthaauto
- Výše uvedená karta má čtyři sloupce s následující konfigurací šířky :
-
Column1: Weight 50,Column2: 100px,Column3: Weight 50aColumn4: auto -
Poznámka: Zobrazení obrázku se snížením
autošířky sloupců, aby se přizpůsobilo zbývajícímu prostoru.
Pořadí priorit zobrazení prvků s atributem width
px > weight > auto > stretch
Výška
Povolené hodnoty – auto a stretch
Následující scénáře popisují, jak jsou omezení ovlivněna různými kombinacemi výšky pro prvky karty.
- Prvky se volně zvětšují svisle, pokud karta nemá pevné výšky
- Oba sloupce mohou být dostatečně svisle rozbalené bez ohledu na hodnotách
autoastretch. - V tomto je vlastnost
wrapu blok textu deaktivována.
- Karta níže má pro blok textu povolenou
wrapvlastnost.
Mezery a oddělovače
- Vlastnost
spacingu každého prvku ovlivňuje velikost mezery mezi prvkem CURRENT a jednou PŘED ním. - Mezery se mohou aplikovat pouze tehdy, když před nimi skutečně existuje prvek. (Např. nebude platit pro první položku v poli)
- Vykreslovací modul musí vyhledat množství prostoru, které se má použít z
hostConfigodsazení pro hodnotu výčtu přiřazenou aktuálnímu prvku. - Pokud má prvek
separatorhodnotutrue, musí být viditelná čára nakreslena mezi aktuálním prvkem a čárou před ním. - Oddělovač musí být nakreslen pomocí
container.style.default.foregroundColor. - Oddělovač musí být nakreslen pouze v případě, že položka NENÍ první v matici.
-
Mezery - Povolené hodnoty
none,small,default,medium, ,large,extra largeapadding
- Atribut Mezery přidává mezery mezi tímto elementem a předchozím prvkem.
- Atribut mezer nemá žádný vliv, pokud se jedná o první prvek v kontejneru view.
- Prvky označené šipkou jsou první mezi svými sourozenci, takže na jejich rozvržení nemají mezery žádný vliv.
- Oddělovač – možné hodnoty (přepínač zapnuto/vypnuto)
- Nakreslí oddělovací čáru v horní části prvku.
- Kombinace mezer a seperátoru
- Omezení mezer a kombinace seperátoru jsou znázorněna níže.
- Celková vzdálenost mezer je zachována s ohledem na zadané hodnoty.
- Separátor se přidá v polovině uprostřed vymezené vzdálenosti.
[Poznámka: Je potřeba potvrdit vzdálenost, na které je umístěn separátor v prostoru mezer. Připadá jako by to byl střed.]
Styly kontejnerů
- Poskytuje tipy pro styly pro kontejnery, jako jsou sloupce a sada sloupců.
- Povolené hodnoty
none,default,emphasis,good,attention,warningaaccent - Tyto předdefinované možnosti stylu poskytují odsazení pro prvky v kontejneru a barvu pozadí.
- Karta A znázorňuje sloupce a sadu sloupců bez možností stylu.
- Karta B znázorňuje soubor sloupců se stylem Pozornost. Všimněte si odsazení v kontejneru sloupců a změny barvy pozadí.
- Karta C znázorňuje sloupce s pouhým stylováním. Podobně jako v předchozím sloupci se změní odsazení a pozadí.
- Karta D znázorňuje sloupce i sadu sloupců s možnostmi stylu.
[Poznámka: Je potřeba zkontrolovat, jak se určuje velikost odsazení. Určuje hostitel? ]
Krvácet
- Tato vlastnost umožňuje kontejneru, jako jsou sloupce a sada sloupců, přesahovat přes nadřazený objekt.
- Možné hodnoty
onaoff.
- Karta A znázorňuje sloupce a sadu sloupců se standardní úpravou.
- Karta B znázorňuje první sloupec s možností přesahu. Obsah právě přesahuje jeho hranice do nadřazeného objektu.
Velikost obrázku
atribut Size
- Povolené hodnoty -
auto,stretch,small,medium,large -
auto: Obrázky se v případě potřeby zmenší tak, aby se vešly, ale nezvětší se tak, aby vyplnily oblast. -
stretch: Obrázek s možností zmenšit i zvětšit velikost podle potřeby. -
smallmediumalarge: Obrázek se zobrazí s pevnou šířkou, kde je šířka určena hostitelem.
-
autovs.stretch
- Kombinace šířky sloupce a velikosti obrázku
- Obecně platí, že sloupce s
stretchšířkou umožňují volně škálovat obrázky s velikostístretch. - Sloupce o šířce
autoumožňují, aby obrázek zabíral přesný prostor bez ohledu naautoastretchvelikost obrázku. - Šířka sloupce má větší prioritu při určování velikosti obrázku v tomto uspořádání.
Atribut Image Width (in pixels)
- To poskytuje požadovanou šířku obrázku na obrazovce.
-
sizevlastnost je přepsána po zadání hodnoty
- Sloupec s
autošířkou bude mít větší prioritu nežstretchpři poskytování místa pro obsah obrázků v tomto uspořádání.
Šířka sloupce (váha a pixel) a velikost obrázku (automatická a roztažená) Kombinace
- Obrázky s
autovelikostí mají dostatek místa pro rozšíření (nebo zmenšení) v rámci omezení šířky sloupcůweightapixel. - Obrázky s
stretchvelikostí se můžou rozšířit a vyplnit zbývající místo v rámci omezení sloupceweightapixelšířky.
Souhrn rozšířeného rozložení
- Šířka sloupce má větší přednost při určování velikosti obrázku než jeho velikost (automaticky, roztažení, minimální šířka atd.).
- Priorita šířky sloupce pořízená k dostatečnému zobrazení jeho obsahu -
px>weight>auto>stretch - Při zadání obrázku
widthaheightv px je obrázeksize(automaticky, roztažení) ignorován. - Atribut velikostí obrázku
stretchzvýší měřítko obrázku pouze v případech, kdy zbývá místo a sloupec automaticky neníauto. - Obrázek se roztáhne na limit, kde udržuje poměr stran v prostoru dostupném ve sloupci. Výška se postupně volně rozšiřuje.
-
Spacingatribut nebude mít žádný vliv, pokud je prvním nebo jediným prvkem mezi prvky na stejné úrovni.
Akce
- Pokud je
supportsInteractivityHostConfigfalse, vykreslovací modul NESMÍ vykreslit žádné akce. - Vlastnost
actionsmusí být vykreslena jako tlačítka v nějakém druhu panelu akcí, obvykle v dolní části karty. - Když na tlačítko klepnete , musí hostitelská aplikace povolit zpracování události.
- Událost musí předat všechny přidružené vlastnosti k akci.
- Událost musí projít
AdaptiveCard, která byla provedena.
| Činnost | Chování |
|---|---|
| Action.OpenUrl | Otevření externí adresy URL pro zobrazení |
| Action.ShowCard | Požádá o zobrazení dílčí karty uživateli. |
| `Action.Odeslat` | Požádejte, aby se všechny vstupní prvky shromáždily do objektu, který se pak odešle prostřednictvím některé metody definované hostitelskou aplikací. |
| Action.Execute | (Představeno ve verzi 1.4) Vyžádejte si shromáždění všech vstupních prvků do objektu, který je pak odeslán prostřednictvím univerzální akční pipeline. |
Action.OpenUrl
-
Action.OpenUrlMĚLA by otevřít adresu URL pomocí mechanismu nativní platformy. - Pokud to není možné, musí v hostitelské aplikaci vyvolat událost pro zpracování otevření adresy URL. Tato událost musí umožnit hostitelské aplikaci přepsat výchozí chování. Například jim umožníte otevřít adresu URL v rámci své vlastní aplikace.
Action.ShowCard
-
Action.ShowCardNa základě nastavení hostConfig musí být podporována nějakým způsobem. Existují dva režimy: inline a popup. Vložené karty BY MĚLY automaticky přepínat viditelnost karty. V režimu automatického otevírání by se měla událost spustit v hostitelské aplikaci, aby se karta nějakým způsobem zobrazila.
Akce.Odeslat
-
Action.SubmitElement shromažďuje vstupní pole, slučuje s volitelným datovým polem a odesílá událost klientovi. - Významný rozdíl v chování prvku je patrný mezi verzemi 1.x a 2.x rendereru ACL.
Akce odeslání se chová jako odeslání formuláře HTML s tím rozdílem, že zatímco HTML obvykle spouští HTTP post, Adaptive Cards ponechává na každé hostitelské aplikaci, aby určila, co pro ně "odeslat" znamená.
- Když to musí vyvolat událost, uživatel klepne na vyvolánou akci.
- Vlastnost
datamusí být obsažena v datové části zpětného volání. - V případě
Action.Submitvykreslovacího modulu musí shromáždit všechny vstupy na kartě a načíst jejich hodnoty.
-
1.x Renderer– Vstupy se shromažďují ze všech polí bez ohledu na to, kde je vstupní pole v hierarchii přítomno. -
2.x Renderer– Vstupy se shromažďují z polí, která jsou přítomna v nadřazeném kontejneru, nebo jako sousední prvekAction.Submit.
Action.Execute (podrobnosti přicházejí později)
Action.Execute byl zaveden ve verzi 1.4. Pokyny k implementaci sad SDK poskytneme později. Pokud máte dotazy k tomuto tématu, prosím obraťte se na nás.
vybratAkce
- Pokud je
supportedInteractivitykonfigurace hostitelefalse, potomselectActionnesmí být vykreslena jako dotykový cíl. -
Image,ColumnSet, aColumnnabízejí vlastnostselectAction, která by měla být spuštěna, když ji uživatel vyvolá, například klepnutím na prvek.
Vstupy
- Pokud je HostConfig
supportsInteractivity,falseRenderer NESMÍ vykreslit žádné vstupy. - Vstupy BY MĚLY vykreslit s nejvyšší možnou věrností. Například
Input.Dateby v ideálním případě nabízel uživateli výběr data, ale pokud to v rámci vaší platformy uživatelského rozhraní není možné, pak se musí vykreslovací modul vrátit k vykreslení standardního textového pole. - Vykreslovací modul BY měl zobrazit
placeholderText, pokud je to možné - Vstupní vazba hodnoty musí být správně escapeovaná.
- Před verzí 1.3 nemusí renderer implementovat ověření vstupu. Uživatelé adaptivních karet musí naplánovat ověření všech přijatých dat na jejich konci.
- Vstupní popisky a ověřování byly zavedeny ve schématu adaptivních karet verze 1.3. Je třeba věnovat zvláštní pozornost tomu, jak jsou vykresleny přidružený popisek, nápovědy k ověření a chybové zprávy.
Rozhraní API pro styling, přizpůsobení a rozšiřitelnost
Každá sada SDK by měla poskytovat určitou úroveň flexibilty pro hostování aplikací, aby mohla řídit celkový styl a rozšířit schéma podle potřeby.
Konfigurace hostitele
- ÚKOL: Jaká by měla být výchozí nastavení? Měli by to všichni sdílet? Měli bychom do binárních souborů vložit společný hostConfig.json soubor?
HostConfig je sdílený objekt konfigurace, který určuje, jak renderer adaptivní karty generuje uživatelské rozhraní.
To umožňuje sdílení vlastností, které jsou nezávislé na platformě mezi renderery na různých platformách a zařízeních. Umožňuje také vytvářet nástroje, které vám dávají představu o vzhledu a chování karty pro dané prostředí.
- Renderery musí vystavit parametr Konfigurace hostitele pro hostitelské aplikace.
- Všechny prvky musí být stylovány podle příslušných nastavení konfigurace hostitele.
Styly nativní platformy
- Každý typ elementu BY měl připojit nativní styl platformy s vygenerovaným prvkem uživatelského rozhraní. Například v HTML jsme přidali třídu CSS k typům elementů a v XAML přiřadíme určitý styl.
Rozšiřitelnost
- Vykreslovač musí povolit hostitelským aplikacím přepsat výchozí vykreslovače prvků. Například při nahrazování vykreslování
TextBlockpoužijte vlastní logiku. - Vykreslovací modul musí povolit hostitelským aplikacím registrovat vlastní typy elementů. Například přidání podpory vlastního
Ratingelementu - Vykreslovací modul musí povolit, aby hostitelské aplikace odebraly podporu výchozího prvku. Například pokud si nepřejí, aby to bylo podporováno, odeberte
Action.Submit.
Události
- Renderer BY měl aktivovat událost, když se změnila viditelnost prvku, což hostitelské aplikaci umožňuje posunout kartu na pozici.