Pokročilé formátování seznamů v SharePointu

Po dlouhé době jsem se vrátil k platformě, která se mi poprvé dostala do rukou v její verzi Windows SharePoint Services 3.0. Už tehdy mě oslovila možnost snadného vytvoření firemního intranetu, ukládání dat do jednoduchých seznamů a možnost ukládání dokumentů včetně verzí a metadat do knihoven dokumentů.

Od začátku bylo možné SharePoint upravovat, avšak možnosti se časem měnily. Od „prostého“ vývoje v .NET pomocí Visual Studio, provádění úprav za pomoci SharePoint Designer, tvorbu custom formulářů v InfoPath, zavedení CSOM modelu až po všude přítomné PowerApps. Ovšem s nástupem moderní podoby SharePointu přišla ještě jedna možnost, poněkud skrytá ve stínu PowerApps. Jedná se o formátování pohledů a formulářů pomocí JSON definic a formulí.

Zadání bylo jednoduché:

Práva vyhrazena Konica Minolta IT Solutions Czech

  1. Existuje seznam „Nahlášené incidenty“, který se odkazuje do tří pomocných seznamů: BCStandard, AppsBA4 a AppsOstatni pomocí stejnojmenných polí.
  2. Podle vybrané hodnoty v poli „Typ aplikace“ zobrazit na formuláři pro editaci „Nahlášeného incidentu“ jedno z polí „BCStandard“, „AppsBA4“, „AppsOstatní“.
  3. Při uložení pak načíst z odkazovaného záznamu hodnotu v poli „Odpovědná osoba“ a propsat ji do pole řešitel.
  4. Nakonec upravit přehled tak, aby hodnota vybraná v některém ze sloupců „BCStandard“, „AppsBA4“ nebo „AppsOstatni“, byla zobrazena ve sloupci Aplikace přehledu.

 

Podmíněné zobrazení atributů na formuláři

Moderní formuláře v SharePointu umožňují customizace bez nutnosti rozsáhlého vývoje. Každý, kdo v týmu získal roli „Owner“, si při editaci položky v seznamu všimnul ikonek v pravém horním rohu formuláře.

První zleva zobrazuje nebo schovává možnost komentářů. Druhá obsahuje nástroje pro změnu chování formuláře. Pro řízení viditelnosti atributů nás bude zajímat volba Edit coluns

Volba otevře dialog pro práci s viditelností atributů a jejich pořadím na formuláři. Pořadí je možné změnit prostým přetažením v seznamu. Měnit viditelnost je možné zaškrtnutím atributu. Ovšem to nejlepší se skrývá pod značkou tří svislých teček pod sebou u pravého okraje.

Po kliknutí na tuto značku se objeví nabídka s volbou Edit conditional formula.

Jejím výběrem se vyvolá dialog pro práci s podmíněnými výrazy. Výsledkem výrazu musí být hodnota „true“ pro zobrazení, nebo „false“ pro skrytí pole na formuláři.

V ukázce se kontroluje hodnota v atributu s internal name „Aplikace“. V případě, že se jeho hodnota rovná „AppsBA4“, atribut se na formulář zobrazí, jinak zůstane skryt. Kompletní dokumentaci lze najít zde Show or hide columns in a list form | Microsoft Docs.

 

Automatické nastavení řešitele

Zatímco podmíněné zobrazení atributů lze řešit přímo pomocí nástrojů SharePoint, u nastavení výchozí hodnoty je potřeba sáhnout po PowerAutomate. Samotné flow bude spouštěno při vytvoření nebo změně záznamu. Po svém spuštění zjistí, jaký typ aplikace byl zvolen, a podle toho v některém z odkazovaných číselníků dohledá odpovědnou osobu a doplní ji jako řešitele.

Jednoduché a jasné zadání však skýtá několik úskalí:

  1. Flow se spouští při změně záznamu a samo o sobě tento iniciační záznam i edituje. Bez vhodného ošetření by tak mohlo vzniknout nekonečné zacyklení, kdy změna by spustila flow. To by provedlo změnu, která by pak opět flow spustila…
  2. Záznam obsahuje povinné atributy a výběry, jejichž hodnotu je potřeba zachovat. Flow při použití akce Update item pro SharePoint požaduje vyplnění povinných údajů. U výběrů pak automaticky nastavuje výchozí hodnotu a nelze atribut ponechat prázdný, aby se neměnil.
  3. Je nutné si uvědomit, že uložení změny ve formuláři nastane ihned po opuštění atributu. Takže při změně obsahu 4 atributů na editačním formuláři se obsah uloží 4x.

Co nejdříve po spuštění se musíme vypořádat s rizikem zacyklení. Proto nejdřív pomocí aktivity přečteme, co se na formuláři od posledního uložení změnilo. Podmínkou pro správnou funkci je povolené verzování záznamu. V tomto směru jsou pro nás klíčové atributy:

  • Until – určuje poslední uvažovanou změnu od verze označené v Since. Zde vložíme aktuální verzi změny.
  • Since – říká, od kdy se má po změnách pátrat. Například od první verze nebo v posledních 3 verzích.

V našem případě je použit výraz, který:

  1. Zjistí, zda se nejedná o první verzi, pak since se bude rovnat until.
  2. Jestliže je aktuální verze větší než jedna, pak se since nastaví na hodnotu o 1 menší, než je aktuální verze. Tj. budeme zjišťovat změny, které nastaly při posledním uložení.

Následná podmínka už jen vyhodnotí, zda jde o změnu v některém ze sledovaných atributů (lookup polí, které se na základě typu aplikace zobrazují), nebo jde o založení nového záznamu. V takovém případě se spustí nastavení řešitele, jinak se neprovede nic.

Správné nastavení řešitele zajistí použití aktivity switch, která podle hodnoty typu aplikace zajistí načtení odpovídající hodnoty a nastavení správných atributů, včetně URL v atributu „Aplikace“, která bude odkazovat na záznam vybraný v některém z lookup polí, určeném typem aplikace.

 

Formátování SharePoint list view

Existuje několik způsobů, jak v pohledu zobrazit hodnotu z více atributů v jednom sloupci. Já jsem vytvořil atribut „Aplikace“ typu URL. Tento atribut je na formuláři skryt, avšak výše zmíněné flow do něj vložím odkaz na záznam vybraný v některém ze tří lookup polí. Bohužel standardní power automate aktivita „update item“ pro práci se SharePoint neumožňuje nastavit část popisu pro pole typu URL, takže místo názvu odkazované položky se v přehledu zobrazí její URL.

A právě v tomto případě přijde ke slovu další z kouzel moderního vzhledu SharePointu. Formátování pohledu.

Formátovat lze buď celé view, nebo konkrétní sloupec. V našem případě si místo sloupce „Název“ vybereme sloupec „Aplikace“ a klikneme na Advanced mode. Detailní popis použití JSON formátování naleznete zde Use view formatting to customize SharePoint | Microsoft Docs.

V Advanced mode se zobrazí pole pro editaci JSON definice formátování. V nadsázce musím říci, že pokud nepatříte mezi masochisty nebo netrpíte záchvaty sebepoškozování, pro editaci použijete nějaký normální editor, například VSCode, Notepad++ apod. 

Skript v HTML kódu hledá element „a“ a upravuje jeho text a atributy. Zobrazovaný text je definován pomocí elementu „txtContent“. V jeho případě se podle hodnoty ve sloupci s internal name „Aplikace“ načte hodnota „text“ z jiného ze zobrazených sloupců ve view. Pro samotný odkaz se pak použije hodnota formátovaného sloupce.

Při tomto řešení je nutné ve view ponechat odkazované sloupce, avšak je možné je pomocí formátování například zúžit na nulovou šířku.

 

Pokročilé formátování

Zvolené řešení, na rozdíl od použití Power Apps pro úpravu formulářů, ponechává možnost přidávat nebo odebírat atributy seznamu bez nutnosti následné úpravy formuláře. Řešení by se dalo zlepšit například tím, že se URL místo výše popsaného formátování správně naplní už ve flow, a to za pomoci HTTP volání webového API SharePoint.

Na druhou stranu v oblasti úprav formulářů a pohledů existuje již jen málo, co by nebylo možné vytvořit. O možnostech formátování formulářů a pohledů se lze přesvědčit například zde:

Autor: Zdeněk Havel, Solution Architect

Reference

Poptávka