Přeskočit na hlavní obsah

Vlastní javascript ve formuláři Nový požadavek

Vzhled a chování systému Formulář pro zadání nového tipu můžete ovlivnit pomocí vlastního javascriptu. Můžete například:

  • Skrývání a zobrazování určitých polí formuláře v závislosti na hodnotách jiných polí.
  • Určete, která pole jsou povinná v závislosti na hodnotách ostatních polí.

Zadejte vlastní javascript do formuláře služby pomocí příkazu Administration - Services - New Ticket Form Javascript.

Ve skriptu můžete použít následující funkce:

NázevPopisPříklady
getElement(itemName)Funkce vrací objekt pole itemName ve formuláři.
var $ticketName = self.getElement('tHdTicket.sHdTicket');
getValue(itemName)

Funkce vrací hodnotu, která je aktuálně vyplněna ve formuláři v poli itemName.

Funkce vrací objekt {id, value} :

  • Aktuální obory: {null, filled value}
  • Datové pole: {null, objekt typu Date()}
  • Výběrové pole: {selected item id, item text displayed}
  • Pole Objekty: Array[{object id, object path}]
  • Pole Přílohy: {null, null}
var ticketName = self.getValue('tHdTicket.sHdTicket').value; var slaId = self.getValue('tHdTicket.liHdTicketSlaId').id;
setValue(itemName, value)

Vyplní pole itemName ve formuláři hodnotou value.

U polí typu int s výběrem hodnot zadejte v parametru value v nabídce (tColumnValue.iColumnValueId) id hodnoty, nikoli její text. Je také možné vkládat hodnoty, ke kterým uživatel nemá oprávnění.

U polí s datem zadejte v parametru hodnota objekty typu Date().

Pokud do pole číselného typu (int, float) zadáte jinou než číselnou hodnotu, hodnota pole se nezmění a do konzoly prohlížeče se vypíše chyba.

Do polí s formátovaným textem (HTML) lze vkládat pouze prostý text (bez značek HTML).

self.setValue('tHdTicket.@Description', 'Kóduju jako mistr'); self.setValue('tHdTicket.Objects', 100); self.setValue('tHdTicketCust.CustomDate', new Date('2020-03-01T12:00'));
show(itemName)Zobrazí pole itemName ve formuláři, pokud bylo skryté.
self.show('tHdTicket.@Description');
hide(itemName)Skryje pole itemName ve formuláři, pokud je zobrazeno a není vyžadováno. Skrytá pole se při odeslání formuláře neodesílají.
self.hide('tHdTicket.@Description');
setRequired(itemName)Nastaví pole itemName jako povinné, tj. uživatel musí před odesláním formuláře vyplnit hodnotu.
self.setRequired('tHdTicket.@Description');
setNotRequired(itemName)Nastaví pole itemName jako nepovinné. Pole, jejichž povinnost je nastavena v servisním procesu, nelze tímto způsobem nastavit jako nepovinná.
self.setNotRequired('tHdTicket.@Description');
onChange(itemName, function())

Při změně hodnoty pole itemName se automaticky zavolá definovaná funkce.

Funkci onChange() volejte pouze v těle funkce initHandlers().

Definovaná funkce se obvykle volá pouze při ukončení vstupního pole. V polích s výběrem hodnot se volá po výběru hodnoty z nabídky. Ve formátovaném textovém vstupním poli se volá po každém napsaném znaku, změně formátování atd. Funkce je volána také při programové změně hodnoty pomocí funkce setValue().

function ticketNameChanged() {
var ticketName = self.getValue('tHdTicket.sHdTicket').value;
self.show('tHdTicket.@Description');
self.setValue('tHdTicket.@Description", 'Name: ' + ticketName);
};

NewFormScript.prototype.initHandlers = function () {
self.onChange('tHdTicket.sHdTicket', ticketNameChanged);
}

Při změně názvu tipu ve formuláři výše uvedený skript zobrazí pole popisu tipu a vloží do něj zadaný název tipu.

Funkci ticketNameChanged() můžete nahradit anonymní funkcí definovanou přímo v argumentu volání funkce onChange().

Hodnoty parametru itemName:

Položka formulářeitemName
NázevtHdTicket.sHdTicket
PopistHdTicket.@Description
PřílohytHdTicket.@Attachments
SlatHdTicket.liHdTicketSlaId
Související organizacetHdTicket.RelatedAccountId
Číslo zařízenítHdTicket.sHdTicketDeviceCode
PrioritatHdTicket.Priority
PodzimtHdTicket.Impact
Pohotovostní službatHdTicket.Urgency
ObjektytHdTicket.Objects
<vlastní pole>tHdTicketCust.<database column name>
Poznámka

Při hromadných úpravách sekcí a textových bloků se vytvářejí nová ID pro vlastní JavaScript. Proto je třeba odpovídajícím způsobem aktualizovat všechny stávající používané vlastní JavaScripty.

Formulář můžete upravit pomocí standardního javascriptu i mimo zde popsané funkce.

Příklady skriptů:

Příklad č. 1

Pokud má pole Priorita(tHdTicket.Priorita) hodnotu kritická nebo vysoká, zobrazí se ve formuláři vlastní pole Důvod (tHdTicketCust.PrioritaDůvod ), které je povinné.

var self;

NewFormScript.prototype.init = function () {
self = this;
//Skrýt pole Justification při načtení formuláře
self.hide('tHdTicketCust.PriorityReason');
}

NewFormScript.prototype.initHandlers = function () {
//Zaznamenávání změny pole Priorita
self.onChange('tHdTicket.Priority', function() {
var priorityValue = self.getValue('tHdTicket.Priority').value;
//Kontrola, zda je pole Priorita vysoké nebo kritické
if (priorityValue == 'high' || priorityValue == 'critical') {
//Nastavení pole Justification jako povinného
self.setRequired('tHdTicketCust.PriorityReason');
//Zobrazení pole Důvod
self.show('tHdTicketCust.PriorityReason');
}
else {
//Nastavení pole Důvod jako nepovinného
self.setNotRequired('tHdTicketCust.PriorityReason');
self.hide('tHdTicketCust.PriorityReason');
}
});
}

Příklad č. 2

Ve vlastním poli Kontaktní telefon (tHdTicketCust.ContactPhone) chceme zobrazit zástupný symbol: "Zadejte v mezinárodním formátu, např. +420 123 456 789".

var self;

NewFormScript.prototype.init = function () { self = this;
//Nastavení zástupného znaku v poli self.getElement('tHdTicketCust.ContactPhone').find('input').attr('placeholder', 'Zadejte v mezinárodním formátu, např. +420 123 456 789');}