Přeskočit obsah

External Lookup

External Lookup umožňuje vyhledávání a výběr dat z externích zdrojů — SharePoint seznamů, webových služeb nebo staticky definovaných dat.

Základní konfigurace

Minimální konfigurace se statickým zdrojem dat:

{
  "DataSourceType": "STATIC",
  "DataSourceObject": [
    { "ID": 1, "Title": "CZK" },
    { "ID": 2, "Title": "EUR" }
  ],
  "IndexValue": { "Expression": "{ID}" },
  "TextValue": { "Expression": "{Title}" },
  "RenderMode": "DropDown",
  "EmitEmptyItem": true
}

Vlastnosti

  • DataSourceType "DataSourceType": "SP" — Typ zdroje dat: SP (SharePoint seznam), WS (webová služba), STATIC (statická data). [Povinné]
  • DataSourceConfiguration "DataSourceConfiguration": {...} — Konfigurace zdroje dat. Vyžadováno pro typy SP a WS. [Nepovinné]
  • DataSourceObject "DataSourceObject": [...] — Pole objektů se statickými daty. Vyžadováno pro typ STATIC. [Nepovinné]
  • IndexValue "IndexValue": { "Expression": "{ID}" } — Výraz pro unikátní identifikátor vybraného záznamu. [Povinné]
  • TextValue "TextValue": { "Expression": "{Title}" } — Výraz pro zobrazovanou hodnotu. [Povinné]
  • RenderMode "RenderMode": "DropDown" — Režim zobrazení: DropDown, AutoComplete, DataTable. [Povinné]
  • CopyElements "CopyElements": [...] — Automatické zkopírování vybraných hodnot do jiných polí formuláře. [Nepovinné]
  • Resources "Resources": [...] — Lokalizační zdroje. [Nepovinné]

Zdroje dat

SharePoint (SP)

Načítá data ze SharePoint seznamu.

  • SourceList "SourceList": "{SiteUrl}/DepartmentCodebook" — URL cílového seznamu. Podporuje token {SiteUrl}. [Povinné]
  • Cache "Cache": "24:0:0" — Doba cachování výsledků ve formátu hodiny:minuty:sekundy. [Nepovinné]
  • SearchElements "SearchElements": ["Title"] — Interní názvy polí, ve kterých se vyhledává. Povinné pro režimy AutoComplete a DataTable (pro DropDown není potřeba).

Webová služba (WS)

Načítá data z REST API.

  • Url "Url": "https://api.example.com/search" — URL požadavku. Pro GET metodu může obsahovat token {searchText}. [Povinné]
  • RequestType "RequestType": "REST" — Typ požadavku. [Povinné]
  • MethodName "MethodName": "GET" — HTTP metoda: GET, POST, PUT, PATCH, DELETE. [Povinné]
  • ResultSetItems "ResultSetItems": "data.items" — Cesta k poli výsledků v odpovědi. [Nepovinné]
  • ResultSetType "ResultSetType": "JSON" — Formát odpovědi. [Povinné]
  • ResultSet "ResultSet": [...] — Mapování vlastností z odpovědi na tokeny výrazů. [Povinné]
  • Cache "Cache": "24:0:0" — Doba cachování výsledků. [Nepovinné]

Každý objekt v ResultSet: - Name — Název tokenu pro použití ve výrazech. - Path — Cesta k hodnotě v JSON odpovědi (tečková notace).

Statická data (STATIC)

Data definovaná přímo v konfiguraci.

  • DataSourceObject — Pole JSON objektů s libovolnými vlastnostmi.

Režimy zobrazení

Zobrazí rozbalovací seznam.

  • EmitEmptyItem "EmitEmptyItem": true — Přidá prázdnou položku pro zrušení výběru. [Nepovinné]
  • DisplayValue "DisplayValue": { "Expression": "{Title} ({ID})" } — Vlastní formát zobrazení v rozbalovacím seznamu. Pokud není zadáno, použije se TextValue. [Nepovinné]

AutoComplete

Rozbalovací seznam s vyhledáváním (autocomplete).

Podporuje stejné vlastnosti jako DropDown. Pro zdroj dat typu SP vyžaduje definici SearchElements.

DataTable

Zobrazí výsledky v tabulce s možností výběru řádku.

  • DataTableElements "DataTableElements": [...] — Definice sloupců tabulky. [Povinné]

Každý objekt v DataTableElements: - ColumnTitle — Záhlaví sloupce. Podporuje lokalizaci přes Resources. - Expression — Výraz pro hodnotu buňky.

CopyElements

Automaticky zkopíruje hodnoty z vybraného záznamu do jiných polí formuláře nebo sloupců Advanced Table:

{
  "CopyElements": [
    {
      "TargetElement": "s_supplierName",
      "Expression": "{Nazev}"
    },
    {
      "TargetElement": "s_supplierId",
      "Expression": "{ICO}"
    }
  ]
}
  • TargetElement — Interní název cílového pole formuláře nebo název sloupce v Advanced Table.
  • Expression — Výraz s tokeny odkazujícími na vlastnosti vybraného záznamu.

Vlastní funkce pro WS

Pro zdroj typu WS s metodou POST lze definovat JavaScript funkci, která sestaví tělo požadavku. Funkce musí být pojmenována ExternalLookupCustomFunction_[FieldInternalName] a definována v Custom Script formuláře:

function ExternalLookupCustomFunction_s_supplierLookup(searchText) {
  if (searchText.match(/\d+/)) return { ico: [searchText] };
  return { obchodniJmeno: searchText };
}

Příklady

Příklad: SharePoint seznam s autocomplete

{
  "DataSourceType": "SP",
  "DataSourceConfiguration": {
    "SourceList": "{SiteUrl}/DepartmentCodebook"
  },
  "IndexValue": { "Expression": "{ID}" },
  "TextValue": { "Expression": "{Title}" },
  "DisplayValue": { "Expression": "{Title} ({ID})" },
  "SearchElements": ["Title"],
  "RenderMode": "AutoComplete",
  "EmitEmptyItem": true
}

Příklad: REST API s tabulkou a kopírováním

{
  "DataSourceType": "WS",
  "DataSourceConfiguration": {
    "Url": "https://ares.gov.cz/ekonomicke-subjekty-v-be/rest/ekonomicke-subjekty/vyhledat",
    "Cache": "24:0:0",
    "RequestType": "REST",
    "MethodName": "POST",
    "ResultSetItems": "ekonomickeSubjekty",
    "ResultSetType": "JSON",
    "ResultSet": [
      { "Name": "Nazev", "Path": "obchodniJmeno" },
      { "Name": "ICO", "Path": "ico" },
      { "Name": "Ulice", "Path": "sidlo.nazevUlice" },
      { "Name": "Obec", "Path": "sidlo.nazevObce" }
    ]
  },
  "IndexValue": { "Expression": "{ID}" },
  "TextValue": { "Expression": "{Nazev}" },
  "DataTableElements": [
    { "ColumnTitle": "Název", "Expression": "{Nazev}" },
    { "ColumnTitle": "IČO", "Expression": "{ICO}" },
    { "ColumnTitle": "Ulice", "Expression": "{Ulice}" },
    { "ColumnTitle": "Obec", "Expression": "{Obec}" }
  ],
  "CopyElements": [
    { "TargetElement": "s_supplierName", "Expression": "{Nazev}" },
    { "TargetElement": "s_supplierId", "Expression": "{ICO}" }
  ],
  "RenderMode": "DataTable"
}