Použití skriptů

Použitý skriptovací jazyk je ECMAScript definovaný standardem ECMA-262, což je vlastně Javascript.

K datům v dotazníku se přistupuje vždy pomocí globálního objektu data, který referuje vždy právě zpracovávaný dotazník. Zprostředkovává nám následuící funkce:

function checkPos(export_name, answer_order == 0)

vrátí číslo znaku, zaškrtnutého jako answer_order-tý v pořadí významnosti.

  • export_name je exportní jméno otázky uvedené v definici dotazníku, velikost písmen nerozhoduje.
  • answer_order je pořadí významnosti odpovědi (v případě, že otázka může mít víc odpovědí). Pokud není uveden, vrátí funkce vždy první zadanou odpověď.
function value(export_name, answer_order == 0)

vrátí hodnotu odpovědi, zaškrtnuté jako answer_order-tý v pořadí významnosti. Pokud je answer_order-tý znak typu CHECK, je jeho hodnotou jeho pořadí v otázce. Pokud je odpověď missing nebo skipped vrací finkce null.

  • export_name je exportní jméno otázky uvedené v definici dotazníku, velikost písmen nerozhoduje.
  • answer_order je pořadí významnosti odpovědi (v případě, že otázka může mít víc odpovědí). Pokud není uveden, vrátí funkce vždy první zadanou odpověď.
function isMissing(export_name)

vrací true, pokud odpověď na otázku export_name v aktuálním dotazníku chybí.

  • export_name je exportní jméno otázky uvedené v definici dotazníku, velikost písmen nerozhoduje.
function isSkipped(export_name)

vrací true, pokud byla odpověď na otázku export_name v aktuálním dotazníku automaticky přeskočena při kódování dotazníku.

  • export_name je exportní jméno otázky uvedené v definici dotazníku, velikost písmen nerozhoduje.
function setValue(export_name, check_pos, new_value, bool save_changes = true)

přidá zaškrtnutí u otázky export_name, pořadí odpovědí u takové otázky je stejné jako pořadí volání teto funkce. Pokud již odpověď pro check_pos existuje, je přepsána a pořadí této odpovědi je původní. Chceme-li zaškrtnutí nebo odpověď zrušit zadáme jako parametr new_value hodnotu null.

  • export_name je exportní jméno otázky uvedené v definici dotazníku, velikost písmen nerozhoduje.
  • check_pos je číslo znaku v odpovědi, první znak má číslo 1.
  • new_val je nová hodnota.
  • save_changes pokud je true, jsou zmeny ihned ulozeny do databaze.
function setMissing(export_name, bool save_changes = true)

vymaže odpověď na otázku.

  • export_name je exportní jméno otázky uvedené v definici dotazníku, velikost písmen nerozhoduje.
  • save_changes pokud je true, jsou zmeny ihned ulozeny do databaze.
function setSkipped(export_name, bool save_changes = true)

označí otázku, jako přeskočenou.

  • export_name je exportní jméno otázky uvedené v definici dotazníku, velikost písmen nerozhoduje.
  • save_changes pokud je true, jsou zmeny ihned ulozeny do databaze.

Skripty pro filtrování dat

Skript filtru dat je vždy funkce, jež se jmenuje filter() a vrací vždy hodnotu typu bool.

Příklady

filtr, který vyloučí všechny kuřáky, kteří začali kouřit po dvacítce:

function filter()
{
    var ret = data.value("vkolikazacal");
    return ret < 20;
}

filtr, který zahrne všechny, kteří zaškrtli v otázce s exportním jménem okruh_zajmu možnost 3 jako 2. v pořadí významnosti, napsali bychom:

function filter()
{
    var ret = data.checkPos("okruh_zajmu", 1); // poradi odpovedi se cisluje od 0
    return ret == 3;
}

filtr, který vybere všechny odpovědí přeskočené v ramci podmínek pro podmíněné kódování (skipped hodnoty):

function filter()
{
    return = data.isSkipped("kolik_kourite_denne");
}

Skripty pro generování odpovědí

Při definici otázky můžeme zaškrtnutím otázku označit jako generovanou skriptem.

Při definici otázky můžeme zaškrtnutím otázku označit jako generovanou skriptem.

Generovaná hodnota může být jen pro čtení, což znamená, že ji nebude možno změnit v editoru dat. Ukládaná hodnota se vygeneruje a dále se chová, jako ručně zadana, pokud hodnota ukládaná není, generuje se hodnota odpovědi při každém použití znovu.

Pro generování odpovědí se používá stejný globalní objekt data, jako pro filtrování a hromadné úpravy, který je doplněn o následující funkci, protože ve skriptu pro automatické generování otpovědi je zbytečné udávat exportní jméno neboť se již ví, které otázky se to týká..

function setValue(check_pos, new_value, bool save_changes = true)

nastaví hodnotu odpovědi aktuální otázky.

  • check_pos je číslo znaku v odpovědi, první znak má číslo 1.
  • new_val je nová hodnota.
  • save_changes pokud je true, jsou zmeny ihned ulozeny do databaze.

Příklady

skript, který vytvoří iniciály ze zadaného jména a příjmení a vloží je do dotazníku:

function value1320()
{
    var jmeno = data.value("JMENO");
    var prijmeni = data.value("PRIJMENI");
    var s = jmeno.substring(0,1) + prijmeni.substring(0,1);
    data.setValue(1, s.toUpperCase());
}

Skripty pro hromadné úpravy dat

Ve skriptu pro hromadné úpravy dat se vždy volá 1. funkce bez ohledu na to, jak se jmenuje.

Příklady

Skript, ktery najde všechny dotazníky, ktere mají v odpovědi hodnotu skiped na některou z otázek s exportními jmeny jmeno_1, jmeno_2 nebo jmeno_3 a vloží namísto ní hodnotu missing.

function f()
{
	var jmena_otazek = [
		'jmeno_1',
		'jmeno_2',
		'jmeno_3'
	];
 
	for(jmeno in jmena_otazek) {
		if(data.isSkipped(jmeno)) {
			driver.logInfo(jmeno + 'is skipped, will be missing.');
			data.setMissing(jmeno);
		}
	}
}

Editor skriptů

Skripty jsou editovány v editoru skriptů. Testovat editované skripty je možno po jejich uložení v JavaScript Consoli, která je součástí editoru.

Pokud je skript spouštěn z konzole, funkce setValue(…) neukládá hodnoty do databáze, aby nedošlo k nechtěnému přepsání dat.

 
sasd/pouziti_skriptu.txt · Poslední úprava: 2009/10/23 12:49 (external edit)     Nahoru