Smartform pro web – Dokumentace API verze 2

Na této stránce popisujeme API verze 2. Tuto verzi jsme spustili v červnu 2022.
Starší verze 1 je popsána na stránce Dokumentace API verze 1.

Obsah

Objekt smartform

Centrální objekt API, stará se o inicializaci, přihlašování uživatele a umožňuje přístup k jednotlivým instancím Smartformu. Tento objekt je singleton a je k dispozici po celou dobu existence stránky.

Atributy:

beforeInit

Sem lze vložit callbackovou funkci, která bude zavolána po načtení stránky - v okamžiku, kdy je možné přistupovat k objektu smartform a procházet instance formulářů a jejich políčka. Využívat služby Smartformu je ale možné až od okamžiku, kdy se spustí callbacková funkce smartform.afterInit

afterInit

Sem lze vložit callbackovou funkci, která bude zavolána po inicializaci a přihlášení k službám Smartformu pomocí ID uživatele nastaveného v smartform.beforeInit. V okamžiku zavolání této funkce je možné využívat všechny služby Smartformu podle typu licence.

all.suggestBox

Slouží k nastavování vlastností našeptávacích oken všech Smartform instancí.

Metody:

void setClientId(clientId)

Nastaví klientské ID - identifikátor klienta, který se přihlašuje k využívaní služeb Smartformu. Pro správné fungování Smartformu musí být klientské ID nastaveno během inicializace - nejlépe v metodě vložené do smartform.beforeInit. Nastavujete-li clientID jinde, pak je potřeba po jeho nastavení vyvolat inicializaci metodou smartform.rebindAllForms.

SmartformInstance getInstance(instanceId)

Vrátí instanci formuláře podle jeho přiděleného identifikátoru - instanceId.

Tento identifikátor musí být uveden jako CSS třída u všech HTML elementů <input>, které mají být součástí tohoto formuláře (musí být v seznamu atributu class). Všechny identifikátory musí povinně začínat řetězcem smartform-instance (výjimkou je implicitní instance s prázdným identifikátorem - viz SmartformInstance).

Pokud instance Smartformu s tímto ID neexistuje, funkce vrací null.

String[] getInstanceIds()

Vrátí pole identifikátorů všech formulářových instancí na stránce. Podrobnosti k identifikátorům viz smartform.getInstance(instanceId).

void rebindAllForms(doneCallback)

Vynutí reinicializaci všech objektů Smartformu na stránce. Projde znovu celý HTML dokument, najde všechny INPUT elementy určené pro Smartform a sloučí je do nových instancí Smartformu.

Do parametru doneCallback lze nastavit funkci, která se zavolá po reinicializaci a přihlášení ke službám Smartformu.

void unbindForm(instanceId)

Ve formuláři se zadaným instanceId zruší napojení na Smartform. U tohoto formuláře přestanou fungovat našeptávače a validace adres.

Identifikátorem instanceId se rozumí název CSS třídy uvedené u všech políček formuláře tvořící instanci Smartformu. Identifikátor vždy začíná řetězcem "smartform-instance".

void enableSetAutocomplete(boolean enable)

Povolí/zakáže Smartformu nastavit hodnotu atributu "autocomplete" u textových políček.

Defaultní chování je takové, že Smartform nastavuje atribut "autocomplete" na hodnotu "off". Metodu můžete použít v situaci, kdy chcete nastavit hodnotu atributu "autocomplete" jinou než je "off". Zavolejte ji v callbacku smartform.beforeInit.

Objekt smartform.all.suggestBox

Slouží k nastavování vlastností našeptávacích oken všech Smartform instancí.

Metody:

void setBackgroundColor( color )

Nastaví barvu pozadí okna našeptávače u všech instancí.

void setForegroundColor( color )

Nastaví barvu písma v našeptávači u všech instancí.

void setSelectionBackgroundColor( color )

Nastaví barvu pozadí označené položky našeptávače u všech instancí.

void setBorderColor( color )

Nastaví barvu okraje okna našeptávače u všech instancí.

void setZIndex( int zIndex )

Nastavuje z-index (CSS vlastnost určující prioritu při překrývání) všem našeptávacím oknům. Smartform se snaží určit hodnotu z-indexu automaticky, tato metoda slouží v případech, kdy hodnota nastavená Smartformem nevyhovuje.

Class SmartformInstance

Slouží k nastavování vlastností jedné konkrétní instance Smartform formuláře a k přístupu k jednotlivým vstupním a výstupním elementům formuláře.

Na HTML stránce je totiž možno umístit více adresních formulářů a v takovém případě je potřeba i více instancí Smartformu. HTML elementy určené pro jednotlivé instance Smartformu se pak slučují pomocí identifikátoru instance, kterým je CSS třída (uvedená v atributu class u všech HTML elementů instance Smartformu). Identifikátor musí povinně začínat řetězcem "smartform-instance". Ke každé instanci Smartformu je možné získat přístup voláním metody smartform.getInstance(id), přičemž parametrem je právě identifikátor instance.

Attributy:

all.suggestBox

Slouží k nastavování vlastností našeptávacích oken jedné Smartform instance.

addressControl

Slouží k nastavování našeptávání a validace poštovních adres v jedné Smartform instanci.

emailControl

Slouží k nastavování validace e-mailových adres v jedné Smartform instanci.

Metody:

String getId()

Vrátí identifikátor instance uvedený v atributu class příslušného elementu input.

Objekt SmartformInstance.all.suggestBox

Slouží k nastavování vlastností našeptávacích oken jedné Smartform instance.

Metody:

void setBackgroundColor( color )

Nastaví barvu pozadí okna našeptávače u všech zadávacích políček.

void setForegroundColor( color )

Nastaví barvu písma v našeptávači u všech zadávacích políček.

void setSelectionBackgroundColor( color )

Nastaví barvu pozadí označené položky našeptávače u všech zadávacích políček.

void setBorderColor( color )

Nastaví barvu okraje okna našeptávače u všech zadávacích políček.

Objekt SmartformInstance.addressControl

Slouží k nastavování vlastností jedné konkrétní instance Smartform formuláře pro validaci a našeptávání adres.

Metody:

void setCountry(String countryCode)

Pro daný formulář nastavuje zemi (její kód), z jaké se má našeptávat.

V současnosti je možné zadat tyto kódy:
  • CZ (Česká republika)
  • SK (Slovenská republika)
Defaultně je v každém formuláři nastaveno, že se našeptávájí adresy z České republiky. Příklad použití metody setCountry() najdete na Demo - slovenské adresy.

AddressSuggestBox getBox(id)

Vrátí objekt zadávacího políčka s našeptávačem. id je identifikátor typu políčka, který musí být uveden v atributu class elementu input - možné hodnoty jsou:

  • smartform-address-street – ulice
  • smartform-address-number – číslo domu
  • smartform-address-street-and-number – ulice a číslo domu
  • smartform-address-city – obec – čistý název (např. „Liberec“, „Praha“)
  • smartform-address-city-extended – obec – zformátovaný název (může obsahovat poštu – např. „Liberec 15“ – nebo název městské části – např. „Praha 4 – Podolí“)
  • smartform-address-zip – PSČ
  • smartform-address-whole-address – celá adresa

Pokud políčko s daným ID neexistuje, funkce vrátí null.

void setAllSuggestionsEnabled(value)

Podle hodnoty boolean parametru zapne/vypne našeptávače u všech políček instance.

void addValidationCallback(function)

Přidá funkci, která bude zavolána po dokončení každé průběžné validace adresy. Při volání callbacku mu bude předán jeden parametr – výsledek validace viz Class AddressValidationResult

boolean isAddressValid()

Vrátí výsledek poslední validace - true, pokud byla nalezena právě jedna adresa (HIT).

AddressValidationResult getLastValidationResult()

Vrátí poslední výsledek validace nebo null pokud validace ještě neproběhla.

void setFocusNextFieldEnabled(on)

Nastavení boolean příznaku, jestli se má po výběru celé adresy z našeptávače označit políčko následující za posledním zadávacím políčkem adresy.

void setSuggestionFormatter( function )

Nastaví callback, který umožňuje měnit text zobrazený v našeptáváči. Pokud je callback nastaven, je volán při zobrazení každého řádku v našeptávači.

Návratová hodnota callbacku bude použita jako text v našeptávači. Pokud callback vrátí null, použije se defaultní text našeptávače.

Při volání callbacku mu budou předány tyto parametry

  • suggestion – instance AddressSuggestion, reprezentuje jeden řádek v našeptávacím okně
  • fieldType – textový identifikátor typu políčka – viz AddressControl.getBox(id) ("smartform-address-street-and-number", "smartform-address-city", …)

void setSelectionCallback( function )

Nastaví callback pro vyplnění políček výběrem z našeptávače. Pro každé políčko bude zavolána nastavená funkce s parametry

  • element – DOM element textového pole
  • text – řetězec, který by měl být vyplněn do textového pole
  • fieldType – textový identifikátor typu políčka – viz AddressControl.getBox(id)
  • suggestion – instance AddressSuggestion, reprezentuje jeden řádek v našeptávacím okně
Výchozí chování Smartformu je vyplnit text do políčka, tj. zavolat
element.value = text;
Vybraný text se políčku nastaví automaticky v případě, že callback není nastaven, nebo také když je návratová hodnota callbacku true.

void setSuggestContext( contextType, contextAreaItems )

Nastavení oblasti, ze které se adresy našeptávají.

Parametry:

  • contextType – řetězec s typem omezení oblasti našeptávání. Možné jsou dvě hodnoty:
    • FILTER – adresy se našeptávají pouze ze zadané oblasti.
    • PREFERENCE – adresy se našeptávají přednostně ze zadané oblasti. Adresy mimo zadanou oblast se našeptávají také, za adresami z nastavené oblasti.
  • contextAreaItems – vymezení našeptávací oblasti. Jde o pole ve tvaru [ [contextAreaCodeType, contextAreaCode], … ]. Položky seznamu se skládají z
    • contextAreaCodeType – řetězec s typem adresní entity. Může nabývat těchto hodnot
      • MUNICIPALITY_CODE – obec
      • DISTRICT_CODE – okres
      • REGION_CODE – kraj
    • contextAreaCode – kód entity – obce, okresu nebo kraje.

Pokud budeme chtít, aby našeptávač našeptával jen adresy z obce Ubušínek (kód 549959), okresu Pelhřimov (kód 3304) nebo Zlínského kraje (kód 141), dosáhneme toho následujícím voláním:
smartform.getInstance().setSuggestContext( 'FILTER', [['MUNICIPALITY_CODE', '549959'], ['DISTRICT_CODE', '3304'], ['REGION_CODE', '141']] )

Při nastavování našeptávací oblasti se mohou hodit kódy obcí, okresů a krajů

void clearSuggestContext()

Odstraní nastavený našeptávací kontext. Viz metoda setSuggestContext(contextType, contextAreaItems).

Objekt SmartformInstance.emailControl

Slouží k nastavování validace e-mailových adres v jedné Smartform instanci.

Metody:

void addValidationCallback( function )

Přidá funkci, která bude zavolána po dokončení každé průběžné validace e-mailové adresy. Při volání callbacku mu bude předán jeden parametr – výsledek validace viz Class EmailValidationResult

EmailValidationResult getLastValidationResult()

Vrátí poslední výsledek validace nebo null pokud validace ještě neproběhla.

void  setShowHintEnabled( boolean enable )

Povolí/zakáže zobrazování nápovědy.

Parametr color

Identifikátor barvy pro nastavení vzhledu menu našeptávače. Lze použít jakékoliv identifikátory barev platné v CSS, tedy HTML názvy (green, black, yellow ...) nebo RGB kódy barev (např. #803020), zkrácené RGB kódy (např. #f90), funkci rgb nebo rgba (např. rgb(255,0,0), rgba(100%, 0%, 0%, 0.7)), funkci hsl nebo hsla (např. hsl(240, 100%, 50%)). Některé prohlížeče nemají ještě podporu pro CSS3, takže některé identifikátory nefungují. HTML kódy a názvy a funkce rgb by měly fungovat všude. Více na w3.org.

Class AddressSuggestBox

Zadávací políčko adresy. Vstupní políčko musí být označeno identifikátorem části adresy (viz AddressControl.getBox(id)) v atributu class elementu <input>.

Metody:

void setSuggestionsEnabled(value)

Podle hodnoty boolean parametru zapne/vypne našeptávač u tohoto políčka.

boolean isSuggestionsEnabled()

Zjistí, jestli je našeptávač zapnutý.

void setLimit(limit)

Nastaví maximální počet položek v menu našeptávače.

int getLimit()

Vrátí limit počtu položek v menu našeptávače.

void setPopupContainerId(String id)

Nastaví id prvku, do kterého má být našeptávací popup vložen.

Našeptávací popup okno se standardně vkládá na konec prvku body, touto metodou lze toto chování změnit.

Při volání této metody nejspíš budete potřebovat zavolat i metodu SmartformInstance.setPopupAttributePosition(String position).

void setPopupAttributePosition(String position)

Nastaví hodnotu CSS atributu position našeptávacího popupu.

Našeptávácí popup okno má standardně nastaven atribut position na hodnotu absolute.

Pokud se zavolá tato metoda, nenastavuje Smartform u popupu atributy top a left.

Class AddressSuggestion

Reprezentuje jeden řádek v našeptávacím okně s adresou. Obsahuje texty pro všechny typy vstupních políček, které budou vyplněny do input boxů při potvrzení řádku v našeptávacím okně.

Metody:

boolean isWholeAddress()

Zdali se jedná o celou (konkrétní) adresu.

String getValue( String fieldType )

Vrací text, který bude vyplněn do input boxu daného typu. Parametr fieldType může nabývat následujících hodnot

  • "smartform-address-street" – ulice
  • "smartform-address-number" – číslo domu
  • "smartform-address-street-and-number" – ulice a číslo domu
  • "smartform-address-city" – čistý název obce (např. „Liberec“, „Praha“)
  • "smartform-address-city-extended" – zformátovaný název obce (může obsahovat poštu – např. „Liberec 15“ – nebo název městské části – např. „Praha 4 – Podolí“)
  • "smartform-address-zip" – PSČ
  • "smartform-address-whole-address" – celá adresa

Class AddressValidationResult

Výsledek validace adresy.

Atributy:

result

 Výsledek validace. Skládá se z:

  • type je typu String - typ výsledku validace - viz AddressValidationResultType.
  • addressArray je pole zvalidovaných adres (typicky pole obsahuje žádnou nebo jednu adresu), každá adresa obsahuje atributy z AddressFieldType.

 

upToDate

boolean příznak, jestli výsledek je aktuální. Příznak bude mít hodnotu false, pokud aktuální hodnota vstupních políček neodpovídá validované adrese – tzn. že uživatel od začátku validace adresy už upravil hodnotu vstupních polí.

Enum AddressValidationResultType

Výčet možných výsledků validace adresy. Každá položka objektu má hodnotu stejnou jako název. Objekt je součástí objektu smartform (smartform.AddressValidationResultType).

Atributy:

  • HIT (právě jedna odpovídající adresa)
  • MANY (více odpovídajících adres)
  • TOOMANY (jako MANY, ale v seznamu adres jsou jen některé)
  • NOTHING (žádná odpovídající adresa nenalezena)
  • INSUFFICIENT_DATA (bylo zadáno malo vstupních parametrů)
  • LOCALITY_HIT (je správně zadána pouze lokalita (ulice, část obce, pošta), zadané číslo neodpovídá žádné adrese)

Enum AddressFieldType

Výčet atributů u každé adresy ve výsledku validace. Každá položka objektu má hodnotu stejnou jako název. Objekt je součástí objektu smartform (smartform.AddressFieldType).

Atributy:

  • CODE (kód adresy)
  • BUILDING_CODE (kód stavebního objektu)
  • STREET_NUMBER (orientační číslo)
  • STREET_NUMBER_CHAR (písmeno orientačního čísla)
  • CONSCRIPTION_NUMBER (popisné číslo)
  • PROVISIONAL_NUMBER (evidenční číslo)
  • WHOLE_NUMBER (celé číslo domu - např. ev.č. 179/or.č. 42)
  • STREET (ulice)
  • STREET_CODE (kód ulice)
  • CITY (obec)
  • CITY_CODE (kód obce)
  • PART (část obce)
  • PART_CODE (kód části obce)
  • ZIP (PSČ)
  • POST (pošta)
  • DISTRICT (okres)
  • DISTRICT_CODE (kód okresu)
  • REGION (kraj)
  • REGION_CODE (kód kraje)
  • CITY_AREA_1 (dělení obcí – v ČR odpovídá městským částím)
  • CITY_AREA_1_CODE (dělení obcí – kód)
  • CITY_AREA_2 (dělení obcí – v ČR odpovídá městským obvodům – v Praze je to "Praha 1" - "Praha 10")
  • CITY_AREA_2_CODE (dělení obcí – kód)
  • CITY_AREA_3 (dělení obcí – v ČR odpovídá správním obvodům – v Praze je to "Praha 1" - "Praha 22")
  • CITY_AREA_3_CODE (dělení obcí – kód)
  • FORMATTED_ADDRESS_FIRST_LINE (první řádka adresy)
  • FORMATTED_ADDRESS_SECOND_LINE (druhá řádka adresy)
  • FORMATTED_ADDRESS_WHOLE (celá adresa na jedné řádce)
  • COORD_JTSK_X (JTSK souřadnice x)
  • COORD_JTSK_Y (JTSK souřadnice y)
  • COORD_WGS84_LATITUDE (GPS souřadnice – šířka)
  • COORD_WGS84_LONGITUDE (GPS souřadnice – délka)
  • COUNTRY (název státu)
  • COUNTRY_CODE (zkratka státu – "CZE" nebo "SVK")
  • BUILDING_PARCEL_NUMBER_1 (Kmenové číslo parcely)
  • BUILDING_PARCEL_NUMBER_2 (Poddělení (pořadové číslo nové parcely v rámci původní parcely))
  • CADASTRAL_UNIT_NAME (Název katastrálního území)
  • CADASTRAL_UNIT_CODE (Číslo katastrálního území)
  • BUILDING_WITH_LIFT (Informace o výtahu (hodnoty "true", "false", null))
  • NUMBER_OF_STOREYS (Počet podlaží v budově)
  • NUMBER_OF_FLATS (Počet bytů v budově)
  • FLOOR_AREA (Podlahová plocha budovy [m2])

Class EmailValidationResult

Výsledek validace e-mailové adresy.

Atributy:

result

 Výsledek e-mailové validace. Skládá se z:

  • inputEmail je typu String - vstupní e-mailová adresa, která byla při validaci kontrolována
  • resultType je typu String - výsledek validace - viz EmailValidationResultType.
  • flags je pole dalších informací o stavu e-mailu - viz EmailValidationResultFlag.
  • hint je typu String - nápověda pro doménovou část e-mailové adresy.

 

upToDate

boolean příznak, jestli výsledek je aktuální. Příznak bude mít hodnotu false, pokud aktuální hodnota vstupního políčka neodpovídá validované e-mailové adrese – tzn. že uživatel od začátku validace adresy už upravil e-mail ve vstupním políčku.

Enum EmailValidationResultType

Výčet možných výsledků e-mailové validace. Každá položka objektu má hodnotu stejnou jako název. Objekt je součástí objektu smartform (smartform.EmailValidationResultType).

Atributy:

  • EXISTS (E-mailová adresa určitě existuje)
  • NOT_EXISTS (E-mailová adresa určitě neexistuje)
  • UNKNOWN (Nelze s jistotou říci, zda e-mailová adresa existuje nebo ne)

Enum EmailValidationResultFlag

Poskytuje další informace o stavu e-mailové validace. 

Atributy:

  • FULL_INBOX (poštovní schránka je plná, takže e-maily nelze doručit)
  • BAD_SYNTAX (špatná syntaxe e-mailové adresy)
  • BAD_DOMAIN (špatná nebo neexistující doména e-mailové adresy)
  • MAILBOX_NOT_FOUND (poštovní schránka neexistuje)
  • TEMPORARY (dočasná chyby e-mailové validace)
  • ACCEPT_ALL_POLICY (existence e-mailové adresy není jistá, protože doména nám nedovolí provést úplné ověření kvůli accept all policy.)

Skrytá (hidden) vstupní pole formuláře

Skrytá pole jsou vyplněna podle toho, co mají nastaveno v atributu class. Možné hodnoty odpovídají výše uvedenému enumu AddressFieldType.

Například:

  • smartform-address-field-CODE
  • smartform-address-field-STREET
  • smartform-address-field-STREET_CODE
  • smartform-address-field-STREET_NUMBER
  • smartform-address-field-REGION

V případě, že ve formuláři je použito vícero Smartformů, je třeba i pro skrytá pole v atributu class použít identifikátor instance (viz SmartformInstance).