Tvorba stránek
Podoba stránek
Webové stránky pro systém jsou vytvořeny stejně jako klasické webové stránky (tj. pomocí jazyka html), jsou však doplněny o „pseudo tagy“ umožňující provádět konzultaci se systémem. Přehled „pseudo tagů“ a jejich funkce naleznete v části „Pseudo tagy“.
Druhy stránek
index_htm.dta
Tato stránka slouží pro výběr báze znalostí. Je pouze jedna, i když je více druhů stránek pro různé báze a musí se nalézat přímo v adresáři pages. Tato stránka může být automaticky přeskakována v případě, že na serveru je dostupná pouze jedna báze znalostí - v nastavení je třeba zaškrtnou volbu Přeskakovat indexovou stránku pokud je jen jedna báze. Pokud je na serveru dostupných více bází a přesto chcete indexovou stránku přeskakovat, lze tak učinit pomocí JavaScriptu pro přesměrování na další stránku a vybranou bázi předat jako parametr. Příklad takového JavaScriptu naleznete v následující sekci (jméno báze znalostí, která se má spustit, se předává v parametru baze).
V indexové stránce musí být seznam pro výběr báze znalostí. Tento seznam vložíte do stránky
následovně:
<UL>
<#ListOfBases>
</UL>
Příklad JavaScriptu pro přeskakování indexové stránky
Pokud se má přeskakovat indexová stránka a zároveň se vybrat některá báze znalostí, je třeba tento kód vložit do hlavičky stránky „index_htm.dta“ a do tagu <BODY> doplnit atribut OnLoad="Presmeruj()".
<SCRIPT language="Javascript">
var pole = window.location.search.substr(1).split("&");
var httpGetVars = new Array();
for(i = 0; i < pole.length; i++){
httpGetVars[pole[i].split("=")[0]] = unescape(pole[i].split("=")[1]);
}
function Presmeruj(){
window.location = "loadbase="+httpGetVars["baze"]+"<#id>";
};
</SCRIPT>
desc_htm.dta
Tato stránka slouží pro zobrazení popisu báze. Zobrazí se po vybrání báze znalostí (pokud je báze jen jedna a indexová stránka se přeskakuje, pak se tato stránka zobrazí jako první).
Stránka musí obsahovat tlačítko pro zahájení konzultace:<FORM action="question">
<INPUT type="Submit" Value="Start"/>
<INPUT Type="hidden" name="id" Value="<#id_number>">
</FORM>
Dalším vhodný „pseudo tag“ pro tuto stránka je tag pro zobrazení popisu báze znalostí:
<#BaseDescription>
dotazbinary_htm.dta
Tato stránka slouží pro položení dotazu uživateli na binární atribut.
Stránka musí obsahovat následující script v hlavičce, ve kterém je možné upravit texty, které se mají
uživateli zobrazovat (tag #ReplaceValue musí být uveden pouze v případě, že stránka obsahuje
tlačítka s předdefinovanými odpověďmi):<SCRIPT language="JavaScript">
WeightOutOfRange = "Váha mimo rozsah!";
NotWeight = "Váha není zadána!";
NotNumber = "Zadaná hodnota není číslo!";
<#ReplaceValue>
<#CheckOfBinary>
</SCRIPT>
Dále musí obsahovat tag pro vypsání dotazu: <#NameOfAttribute>,
začátek formuláře pro vyplnění odpovědi: <#BeginForm>,
pole pro vkládání váhy: <#InputValue>,
ukončení formuláře:
<INPUT Type="submit" Value="OK" class="buttonOK">
<INPUT Type="hidden" name="id" Value="<#id_number>">
</FORM>
Další vhodné tagy jsou:
tag pro vypsání komentáře k atributu: <#CommentOfAttribute>
tag pro vypsání rozmezí váhy: <#WeightRange>
tlačítka pro vkládání předdefinovaných odpovědí:<INPUT Type="submit" Value="jistě ano" OnClick="InputValue('yes')">
<INPUT Type="submit" Value="jistě ne" OnClick="InputValue('no')">
<INPUT Type="submit" Value="irelevantní" OnClick="InputValue('irrelevant')">
<INPUT Type="submit" Value="Nevím" OnClick="InputValue('unknown')">
dotazsingle_htm.dta
Tato stránka slouží pro položení dotazu uživateli na jednoduchý nominální atribut.
Stránka musí obsahovat následující script v hlavičce, ve kterém je možné upravit texty, které se mají
uživateli zobrazovat (tag #ReplaceValue musí být uveden pouze v případě, že stránka obsahuje
tlačítka s předdefinovanými odpověďmi):<SCRIPT language="JavaScript">
WeightOutOfRange = "Váha mimo rozsah!";
NotWeight = "Váha není zadána!";
NotNumber = "Zadaná hodnota není číslo!";
<#ReplaceValue>
<#CheckOfSingle>
</SCRIPT>
Dále musí obsahovat tag pro vypsání dotazu: <#NameOfAttribute>,
začátek formuláře pro vyplnění odpovědi: <#BeginForm>,
pole pro výběr odpovědi (atribut lines udává počet řádek pole): <#SelectValue lines="1">,
pole pro vkládání váhy: <#InputValue>,
ukončení formuláře:
<INPUT Type="submit" Value="OK" class="buttonOK">
<INPUT Type="hidden" name="id" Value="<#id_number>">
</FORM>
Další vhodné tagy jsou:
tag pro vypsání komentáře k atributu: <#CommentOfAttribute>
tag pro vypsání rozmezí váhy: <#WeightRange>
tlačítka pro vkládání předdefinovaných odpovědí:
<INPUT Type="submit" Value="jistě ano" OnClick="InputValue('yes')">
<INPUT Type="submit" Value="jistě ne" OnClick="InputValue('no')">
<INPUT Type="submit" Value="irelevantní" OnClick="InputValue('irrelevant')">
<INPUT Type="submit" Value="Nevím" OnClick="InputValue('unknown')">
dotazmultiple_htm.dta
Tato stránka slouží pro položení dotazu uživateli na množinový nominální atribut.
Stránka musí obsahovat následující script v hlavičce, ve kterém je možné upravit texty, které se mají
uživateli zobrazovat (tag #ReplaceMultipleValue musí být uveden pouze v případě, že stránka obsahuje
tlačítka s předdefinovanými odpověďmi): <SCRIPT language="JavaScript">
WeightOutOfRange = "Váha mimo rozsah v poli číslo ";
NotNumber = "Zadaná hodnota není číslo!";
<#ReplaceMultipleValue>
<#CheckOfMultiple>
</SCRIPT>
Dále musí obsahovat tag pro vypsání dotazu: <#NameOfAttribute>,
začátek formuláře pro vyplnění odpovědi: <#BeginForm>,
seznam výroků s poli pro odpovědi a případnými tlačítky pro předvolené odpovědi (jsou-li uvedeny příslušné
atributy): <#ListOfMultiple yesbutton="Ano" nobutton="Ne" unknownbutton="Nevim" irrelevantbutton="Irelevantní">,
ukončení formuláře:
<INPUT Type="submit" Value="OK" class="buttonOK">
<INPUT Type="hidden" name="id" Value="<#id_number>">
</FORM>
Další vhodné tagy jsou:
tag pro vypsání komentáře k atributu: <#CommentOfAttribute>
tag pro vypsání rozmezí váhy: <#WeightRange>
dotaznumeric_htm.dta
Tato stránka slouží pro položení dotazu uživateli na numerický atribut.
Stránka musí obsahovat následující script v hlavičce, ve kterém je možné upravit texty, které se mají
uživateli zobrazovat (tag #ReplaceValue musí být uveden pouze v případě, že stránka obsahuje
tlačítka s předdefinovanými odpověďmi):<SCRIPT language="JavaScript">
WeightOutOfRange = "Váha mimo rozsah!";
ValueOutOfRange = "Hodnota mimo rozsah!";
NotNumber = "Zadaná hodnota není číslo!";
NotValue = "Hodnota není zadána!";
<#ReplaceValue>
<#CheckOfNumeric>
</SCRIPT>
Dále musí obsahovat tag pro vypsání dotazu: <#NameOfAttribute>,
začátek formuláře pro vyplnění odpovědi: <#BeginForm>,
pole pro vkládání hodnoty: <#InputValue>,
ukončení formuláře:
<INPUT Type="submit" Value="OK" class="buttonOK">
<INPUT Type="hidden" name="id" Value="<#id_number>">
</FORM>
Další vhodné tagy jsou:
tag pro vypsání komentáře k atributu: <#CommentOfAttribute>
tag pro vypsání rozmezí hodnoty: <#ValueRange>
tlačítka pro vkládání předdefinovaných odpovědí:<INPUT Type="submit" Value="irelevantní" OnClick="InputValue('irrelevant')">
<INPUT Type="submit" Value="Nevím" OnClick="InputValue('unknownnumeric')">
result_htm.dta
Tato stránka slouží pro zobrazení výsledků konzultace. Systém zobrazí tuto stránku, jakmile odvodí závěry konzultace.
Tato stránka by měla obsahovat tabulku s výsledky. Podoba tabulky by měla být přibližně takováto: <TABLE cellspacing="2" cellpadding="2">
<TR>
<TD><b>Jméno</b></TD>
<TD><b>Min. váha</b></TD>
<TD><b>Max. váha</b></TD>
<TD><b>Stav</b></TD>
</TR>
<#AllPropositionsTrue>
<#AllPropositionsNeutral>
<#AllPropositionsFalse>
</TABLE>
Tabulka nemusí obsahovat tagy pro vypsání všech výroků (#AllPropositions...), ale například jen cílů (#Results...)
nebo necílových výroků (#Propositions...). Může také obsahovat jen kladné či jen záporné výroky.
Z této stránky může vést odkaz na stránku pro úpravu odpovědí: <a href="questionnaire<#id>">Upravit odpovědi</a>
questionnaire_htm.dta
Tato stránka slouží pro úpravu odpovědí. Jsou na ní zobrazeny všechny otázky a odpovědi a uživatel je může libovolně měnit. Po odeslání této stránky se opět zobrazí stránka s výsledky.
Stránka musí obsahovat následující script v hlavičce, ve kterém je možné upravit texty, které se mají
uživateli zobrazovat:<SCRIPT language="JavaScript">
WeightOutOfRange = "Váha mimo rozsah!";
ValueOutOfRange = "Hodnota mimo rozsah!";
NotNumber = "Zadaná hodnota není číslo!";
NotValue = "Hodnota není zadána!";
NotWeight = "Vána není zadána!";
CertainlyYes = "Jistě ano";
CertainlyNo = "Jistě ne";
ProbablyYes = "Asi ano";
ProbablyNo = "Asi ne";
Unknown = "Nevím";
Irrelevant = "Irelevantní";
<#ReplaceMultipleValue>
<#CheckQuestionnaire>
<#QuestionnaireNotNumbers>
</SCRIPT>
Dále musí obsahovat začátek formuláře pro vyplnění odpovědi: <#BeginFormQuestionnaire>,
seznam výroků s poli pro odpovědi a případnými tlačítky pro předvolené odpovědi (jsou-li uvedeny příslušné
atributy): <#Questionnaire yesbutton="Ano" nobutton="Ne" unknownbutton="Nevim" irrelevantbutton="Irelevantní">,
ukončení formuláře:<INPUT Type="submit" Value="Odeslat">
<INPUT Type="hidden" name="id" Value="<#id_number>">
</FORM>
Pokud chcete, aby se nevypisovali váhy jednotlivých atributů, ale tyto váhy byly nahrazeny slovními výrazy, přidejte
do tagu „<BODY>“ atribut „OnLoad="Nahrad()"“.
Pseudo tagy
tag | vkládaný kód | stránka | popis |
<#ListOfBases> | <LI><A href = "loadbase=bazei">bazei</A></LI> ... |
index | Seznam bází dostupných na serveru |
<#id> | ?id=uživatelské id | všechny stránky | Vloží do odkazu parametr s uživatelským id. |
<#id_number> | uživatelské id | všechny stránky | Vloží do stránky číslo uživatelova id. |
<#BeginForm> | <FORM action="question" onsubmit="return kontrolaDat(this)"> | dotazbinary dotazsingle dotazmultiple dotaznumeric |
Začátek formuláře pro vkládání vah |
<#NameOfAttribute> | jméno atributu | dotazbinary dotazsingle dotazmultiple dotaznumeric |
Jméno atributu aktuálního dotazu |
<#CommentOfAttribute> | komentář atributu | dotazbinary dotazsingle dotazmultiple dotaznumeric |
Komentář atributu aktuálního dotazu |
<#InputValue> | <INPUT name="id atributu"> | dotazbinary dotazsingle dotaznumeric |
Okno pro zadávání váhy příslušného dotazu |
function PrevodCisel | function PrevodCisel(zadanaHodnota) { index = zadanaHodnota.indexOf("."); if (index > -1) { zadanaHodnota = zadanaHodnota.substring(0,index) + "," + zadanaHodnota.substring(index+1,zadanaHodnota.length); } else { index = zadanaHodnota.indexOf(","); if (index > -1) { zadanaHodnota = zadanaHodnota.substring(0,index) + "." + zadanaHodnota.substring(index+1,zadanaHodnota.length); }; }; return zadanaHodnota; }; |
součást jiných tagů | Funkce pro převádění desetiných znamének na správná |
function KontrolaCisla | function KontrolaCisla(zadanaHodnota) { if (isNaN(zadanaHodnota)){ zadanaHodnota = PrevodCisel(zadanaHodnota); if (isNaN(zadanaHodnota)){alert(NotNumber);return false;}; }; if(zadanaHodnota != "") { if((parseFloat(zadanaHodnota) >= parseFloat(-rozsah vah))&&(parseFloat(zadanaHodnota) <= parseFloat(rozsah vah))) { return true; } else { alert(WeightOutOfRange); return false; }; } else { alert(NotWeight); return false; }; }; |
součást jiných tagů | Kontrola čísla v rámci rozmezí vah báze |
<#CheckOfBinary> | function PrevodCisla function KontrolaCisla function kontrolaDat(vstup) { zadanaHodnota = vstup.id atributu.value; strednik = zadanaHodnota.indexOf(";"); if (strednik > 0) { s1 = zadanaHodnota.substring(0,strednik); if (KontrolaCisla(s1)) { s2 = zadanaHodnota.substring(strednik+1,zadanaHodnota.length); return KontrolaCisla(s2); } else {return false;}; } return KontrolaCisla(zadanaHodnota); }; |
dotazbinary | Javascript pro kontrolu zadávané váhy pro binární dotaz |
<#CheckOfSingle> | viz CheckOfBinary | dotazsingle | Javascript pro kontrolu zadávané váhy pro jednoduchý dotaz |
<#CheckOfNumeric> | function PrevodCisla function KontrolaCisla function kontrolaHodnoty(vstup) if(vstup != "") { if (isNaN(zadanaHodnota)){ alert(NotValue); return false; } pro omezení zdola [ s1 = "dolní meze"; s1 = PrevodCisel(s1); if(parseFloat(vstup) < parseFloat(s1)) { alert(ValueOutOfRange); return false; }; ] Pro omezení shora [ s2 = "horní mez"; s2 = PrevodCisel(s2); if(parseFloat(vstup) > parseFloat(s2)) { alert(ValueOutOfRange); return false; }; ] return true; } else {return false;}; }; function kontrolaDat(vstup) { zadanaHodnota = vstup.id atributu.value; if ((zadanaHodnota.indexOf("[") == 0)&&(zadanaHodnota.indexOf("]") == zadanaHodnota.length - 1)){ return true;}; strednik = zadanaHodnota.indexOf(";"); if (strednik > 0) { s1 = zadanaHodnota.substring(0,strednik); s1 = PrevodCisel(s1); if (kontrolaHodnoty(s1) == false){ return false;}; s2 = zadanaHodnota.substring(strednik+1,zadanaHodnota.length); s2 = PrevodCisel(s2); if (kontrolaHodnoty(s2) == false){ return false;} else {return true;}; } else { if (!(isNaN(zadanaHodnota))){ zadanaHodnota = PrevodCisel(zadanaHodnota); return kontrolaHodnoty(zadanaHodnota);} else { alert(NotValue); return false; }; }; }; |
dotaznumeric | JavaScript pro kontrolu hodnot numerického dotazu |
<#CheckOfMultiple> | function PrevodCisla function KontrolaCisla function kontrolaDat(vstup) { Pro každý výrok množinového atributu [ zadanaHodnota = vstup.id vyrokui.value; strednik = zadanaHodnota.indexOf(";"); if (strednik > 0) { s1 = zadanaHodnota.substring(0,strednik); if (KontrolaCisla(s1)) { s2 = zadanaHodnota.substring(strednik+1,zadanaHodnota.length); if (!(KontrolaCisla(s2))){ return false; }; } else {return false;}; } else { if (zadanaHodnota != "") { if (isNaN(zadanaHodnota)){ zadanaHodnota = PrevodCisel(zadanaHodnota); if (isNaN(zadanaHodnota)){alert(NotNumber);return false;}; }; if((parseFloat(zadanaHodnota) < parseFloat(-rozsah vah))||(parseFloat(zadanaHodnota) > parseFloat(rozsah vah))) { alert(WeightOutOfRange + "' + inttostr(i+1)+'"); return false; }; }; }; ] return true; }; |
dotazmultiple | JavaScript pro kontrolu vah množinového atributu |
<#ReplaceValue> | function InputValue(hodnota){ if (hodnota == "yes") {hodnota = "rozmezí vah";} else if (hodnota == "no") {hodnota = "-rozmezí vah";} else if (hodnota == "irrelevant") {hodnota = "0;0";} else if (hodnota == "unknown") {hodnota = "-rozmezí vah;rozmezí vah";} else if (hodnota == "unknownnumeric") {hodnota = "[-rozmezí vah;rozmezí vah]";} else if (hodnota.substring(0,7) == "weight:") { hodnota = hodnota.substring(8,hodnota.length); }; document.all['id atributu'].value = hodnota; }; |
dotazbinary dotazsingle dotaznumeric |
Funkce nahrazující příslušnou hodnotu tlačítka odpovídající číselnou hodnotou váhy. |
<#ReplaceMultipleValue> | function InputValue(hodnota, vstup){ if (hodnota == "yes") {hodnota = "rozmezí vah";} else if (hodnota == "no") {hodnota = "-rozmezí vah";} else if (hodnota == "irrelevant") {hodnota = "0;0";} else if (hodnota == "unknown") {hodnota = "-rozmezí vah;rozmezí vah";}; else if (hodnota == "unknownnumeric") {hodnota = "[-rozmezí vah;rozmezí vah]";} else if (hodnota.substring(0,7) == "weight:") { hodnota = hodnota.substring(8,hodnota.length); }; document.all[vstup].value = hodnota; }; |
dotazmultiple | Funkce nahrazující příslušnou hodnotu tlačítka odpovídající číselnou hodnotou váhy pro množinové výroky. |
<#WeightRange> | -rozsah vah;rozsah vah | dotazbinary dotazsingle dotazmultiple |
Rozsah vah báze znalostí. |
<#ValueRange Decimal="číslo"> | dolní mez - horní mez | dotaznumeric | Rozsah vah numerického atributu dotazu. Parametr Decimal udává počet desetinných míst, na které se má číslo zaokrouhlit. |
<#SelectValue lines="číslo"> | <SELECT name="value" size="číslo"> Pro každý výrok jednoduchého atributu [ <OPTION value="id výroku" u prvního selected>jméno výroku ] </SELECT> |
dotazsingle | Výběrový list odpovědí pro jednoduchý dotaz |
<#ListOfMultiple yesbutton="text 1" nobutton="text 2" irrelevantbutton="text 3" unknownbutton="text 4"> |
Pro každý výrok množinového atributu: <TR> <TD>jméno výroku</TD> <TD><INPUT name="id výroku"></TD><TD> Je-li zadán yesbutton [ <INPUT Type="button" Value="text 1 OnClick="InputValue('yes','id výroku')" class="yesbutton"> ] Je-li zadán nobutton [ <INPUT Type="button" Value="text 2" OnClick="InputValue('no','id výroku')" class="nobutton"> ] Je-li zadán irrelevantbutton [ <INPUT Type="button" Value="text 3" OnClick="InputValue('irrelevant','id výroku')" class="irrelevantbutton"> ] Je-li zadán unknownbutton [ <INPUT Type="button" Value="text 4" OnClick="InputValue('unknown','id výroku')" class="unknownbutton"> ] </TD></TR> |
dotazmultiple | Okna pro zadávání vah výroků pro množinový atribut. |
<#ResultsTrue> |
Pro všechny cíle, které jsou kladné: <TR> <TD class="result_true"> jméno výroku </TD> <TD class="result_true"> minimální váha </TD> <TD class="result_true"> maximální váha (je-li stejná jako minimální, tak nic) </TD <TD class="result_true"> stav výroku</TD> </TR> |
results | Vypíše do tabulky cíle s kladnou váhou. U každého výroku je jméno, minimální a maximální váha (jsou-li stejné, maximální se neobjeví) a stav výroku. |
<#ResultsFalse> | Pro všechny cíle, které jsou záporné: <TR> <TD class="result_false"> jméno výroku </TD> <TD class="result_false"> minimální váha </TD> <TD class="result_false"> maximální váha (je-li stejná jako minimální, tak nic) </TD <TD class="result_false"> stav výroku</TD> </TR> |
results | Vypíše do tabulky cíle se zápornou váhou. U každého výroku je jméno, minimální a maximální váha (jsou-li stejné, maximální se neobjeví) a stav výroku. |
<#ResultsNeutral> | Pro všechny cíle, které jsou neutrální: <TR> <TD class="result_neutral"> jméno výroku </TD> <TD class="result_neutral"> minimální váha </TD> <TD class="result_neutral"> maximální váha (je-li stejná jako minimální, tak nic) </TD <TD class="result_neutral"> stav výroku</TD> </TR> |
results | Vypíše do tabulky cíle s neutrální váhou (minimální váha menší nebo rovna nule, maximální váha větší nebo rovna nule). U každého výroku je jméno, minimální a maximální váha (jsou-li stejné, maximální se neobjeví) a stav výroku. |
<#AllPropositionsTrue> | Pro všechny výroky (cíle i necílové výroky), které jsou kladné: <TR> <TD class="result_true"> jméno výroku </TD> <TD class="result_true"> minimální váha </TD> <TD class="result_true"> maximální váha (je-li stejná jako minimální, tak nic) </TD <TD class="result_true"> stav výroku</TD> </TR> |
results | Vypíše do tabulky výroky (cílové i necílové) s kladnou váhou. U každého výroku je jméno, minimální a maximální váha (jsou-li stejné, maximální se neobjeví) a stav výroku. |
<#AllPropositionsFalse> | Pro všechny výroky (cíle i necílové výroky), které jsou záporné: <TR> <TD class="result_false"> jméno výroku </TD> <TD class="result_false"> minimální váha </TD> <TD class="result_false"> maximální váha (je-li stejná jako minimální, tak nic) </TD <TD class="result_false"> stav výroku</TD> </TR> |
results | Vypíše do tabulky výroky (cílové i necílové) se zápornou váhou. U každého výroku je jméno, minimální a maximální váha (jsou-li stejné, maximální se neobjeví) a stav výroku. |
<#AllPropositionsNeutral> | Pro všechny výroky (cíle i necílové výroky), které jsou neutrální: <TR> <TD class="result_neutral"> jméno výroku </TD> <TD class="result_neutral"> minimální váha </TD> <TD class="result_neutral"> maximální váha (je-li stejná jako minimální, tak nic) </TD <TD class="result_neutral"> stav výroku</TD> </TR> |
results | Vypíše do tabulky výroky (cílové i necílové) s neutrální váhou (minimální váha menší nebo rovna nule, maximální váha větší nebo rovna nule). U každého výroku je jméno, minimální a maximální váha (jsou-li stejné, maximální se neobjeví) a stav výroku. |
<#PropositionsTrue> | Pro všechny výroky, které nejsou cíle a jsou kladné: <TR> <TD class="result_true"> jméno výroku </TD> <TD class="result_true"> minimální váha </TD> <TD class="result_true"> maximální váha (je-li stejná jako minimální, tak nic) </TD <TD class="result_true"> stav výroku</TD> </TR> |
results | Vypíše do tabulky necílové výroky s kladnou váhou. U každého výroku je jméno, minimální a maximální váha (jsou-li stejné, maximální se neobjeví) a stav výroku. |
<#PropositionsFalse> | Pro všechny výroky, které nejsou cíle a jsou záporné: <TR> <TD class="result_false"> jméno výroku </TD> <TD class="result_false"> minimální váha </TD> <TD class="result_false"> maximální váha (je-li stejná jako minimální, tak nic) </TD <TD class="result_false"> stav výroku</TD> </TR> |
results | Vypíše do tabulky necílové výroky se zápornou váhou. U každého výroku je jméno, minimální a maximální váha (jsou-li stejné, maximální se neobjeví) a stav výroku. |
<#PropositionsNeutral> | Pro všechny výroky, které nejsou cíle a jsou neutrální: <TR> <TD class="result_neutral"> jméno výroku </TD> <TD class="result_neutral"> minimální váha </TD> <TD class="result_neutral"> maximální váha (je-li stejná jako minimální, tak nic) </TD <TD class="result_neutral"> stav výroku</TD> </TR> |
results | Vypíše do tabulky necílové výroky s neutrální váhou (minimální váha menší nebo rovna nule, maximální váha větší nebo rovna nule). U každého výroku je jméno, minimální a maximální váha (jsou-li stejné, maximální se neobjeví) a stav výroku. |
<#ResultsNameTrue> |
Pro všechny cíle, které jsou kladné: <TR> <TD class="result_true"> jméno výroku </TD> </TR> |
results | Vypíše do tabulky jména cílů s kladnou váhou. |
ResultsNameNeutral |
Pro všechny cíle, které jsou neutrální: <TR> <TD class="result_neutral"> jméno výroku </TD> </TR> |
results | Vypíše do tabulky jména cílů s neutrální váhou. |
<#ResultsNameFalse> |
Pro všechny cíle, které jsou záporné: <TR> <TD class="result_false"> jméno výroku </TD> </TR> |
results | Vypíše do tabulky jména cílů se zápornou váhou. |
<#ResultsWeightTrue> |
Pro všechny cíle, které jsou kladné: <TR> <TD class="result_true"> minimální váha </TD> <TD class="result_true"> maximální váha (je-li stejná jako minimální, tak nic) </TD </TR> |
results | Vypíše do tabulky váhy cílů s kladnou váhou. U každého výroku je minimální a maximální váha (jsou-li stejné, maximální se neobjeví). |
<#ResultsWeightNeutral> |
Pro všechny cíle, které jsou neutrální: <TR> <TD class="result_neutral"> minimální váha </TD> <TD class="result_neutral"> maximální váha (je-li stejná jako minimální, tak nic) </TD </TR> |
results | Vypíše do tabulky váhy cílů s neutrální váhou. U každého výroku je minimální a maximální váha (jsou-li stejné, maximální se neobjeví). |
<#ResultsWeightFalse> |
Pro všechny cíle, které jsou záporné: <TR> <TD class="result_false"> minimální váha </TD> <TD class="result_false"> maximální váha (je-li stejná jako minimální, tak nic) </TD </TR> |
results | Vypíše do tabulky váhy cílů se zápornou váhou. U každého výroku je minimální a maximální váha (jsou-li stejné, maximální se neobjeví). |
<#ResultsCommentTrue> | Pro všechny cíle, které jsou kladné: <TR> <TD class="result_true"> komentář výroku </TD> </TR> |
results | Vypíše do tabulky komentář cílů s kladnou váhou. |
<#ResultsCommentNeutral> | Pro všechny cíle, které jsou neutrální: <TR> <TD class="result_neutral"> komentář výroku </TD> </TR> |
results | Vypíše do tabulky komentář cílů s neutrální váhou. |
<#ResultsCommentFalse> | Pro všechny cíle, které jsou záporné: <TR> <TD class="result_false"> komentář výroku </TD> </TR> |
results | Vypíše do tabulky komentář cílů se zápornou váhou. |
<#NameOfBase> | Jméno báze | všechny stránky | Vypíše jméno aktuálně nahrané báze znalostí. |
<#BaseDescription> | Popis báze | všechny stránky | Vypíše popis aktuálně nahrané báze znalostí. |
<#Questionnaire yesbutton="text 1" pyesbutton="text 1b" nobutton="text 2" pnobutton="text 2b" irrelevantbutton="text 3" unknownbutton="text 4"> |
Pro všechny dotazy: Jde-li o binární atribut [ <TR> <TD class="questioncell">jméno atributu</TD> <TD class="answercell"><FONT id="textid atributu"></FONT> <p style="visibility: hidden"> <INPUT name="id atributu" value="minimální váha atributu;maximální váha atributu"></p> </TD> <TD class="buttonscell"> je-li zadán yesbutton [ <INPUT Type="button" Value="text 1" OnClick="InputValue('yes','id atributu'), Nahrad()" class="yesbutton"><BR> ] je-li zadán nobutton [ <INPUT Type="button" Value="text 2" OnClick="InputValue('no','id atributu'), Nahrad()" class="nobutton"><BR> ] je-li zadán pyesbutton [ <INPUT Type="button" Value="text 1b" OnClick="InputValue('weight:rozsah báze znalostí / 2','id atributu'), Nahrad()" class="pyesbutton"><BR> ] je-li zadán pnobutton [ <INPUT Type="button" Value="text 2b" OnClick="InputValue('weight:-rozsah báze znalostí / 2','id atributu'), Nahrad()" class="pnobutton"><BR> ] je-li zadán irrelevantbutton [ <INPUT Type="button" Value="text 3" OnClick="InputValue('irrelevant','id atributu'), Nahrad()" class="irrelevantbutton"><BR> ] je-li zadán unknownbutton [ <INPUT Type="button" Value="text 4" OnClick="InputValue('unknown','id atributu'), Nahrad()" class="unknownbutton"><BR> ] </TR> ] Jde-li o jednoduchý nominální atribut [ <TR> <TD class="questioncell">jméno atributu</TD> <TD class="answercell"><SELECT name="id atributu__value" size="3"> pro každý výrok atributu [ <OPTION value="id výroku" pro vybraný výrok [selected]>jméno výroku ] </SELECT><BR><BR> <FONT id="textid atributu"></FONT><p style="visibility: hidden"><INPUT name="id atributu" value="váha vybraného výroku"></p></TD> <TD class="buttonscell"> je-li zadán yesbutton [ <INPUT Type="button" Value="text 1" OnClick="InputValue('yes','id atributu'), Nahrad()" class="yesbutton"><BR> ] je-li zadán pyesbutton [ <INPUT Type="button" Value="text 1b" OnClick="InputValue('weight:rozsah báze znalostí / 2','id atributu'), Nahrad()" class="pyesbutton"><BR> ] je-li zadán irrelevantbutton [ <INPUT Type="button" Value="text 3" OnClick="InputValue('irrelevant','id atributu'), Nahrad()" class="irrelevantbutton"><BR> ] je-li zadán unknownbutton [ <INPUT Type="button" Value="text 4" OnClick="InputValue('unknown','id atributu'), Nahrad()" class="unknownbutton"><BR> ] </TD></TR> ] Jde-li o množinový nominální atribut, tak pro každý výrok atributu [ <TR> <TD class="questioncell">jméno výroku</TD> <TD class="answercell"><FONT id="textid atributu__id výroku"></FONT><p style="visibility: hidden"><INPUT name="id atributu__id výroku" value="minimální váha;maximální váha"></p></TD> <TD class="buttonscell"> je-li zadán yesbutton [ <INPUT Type="button" Value="text 1" OnClick="InputValue('yes','id atributu__id výroku'), Nahrad()" class="yesbutton"><BR> ] je-li zadán nobutton [ <INPUT Type="button" Value="text 2" OnClick="InputValue('no','id atributu__id výroku'), Nahrad()" class="nobutton"><BR> ] je-li zadán pyesbutton [ <INPUT Type="button" Value="text 1b" OnClick="InputValue('weight:rozsah báze znalostí / 2','id atributu__id výroku'), Nahrad()" class="pyesbutton"><BR> ] je-li zadán pnobutton [ <INPUT Type="button" Value="text 2b" OnClick="InputValue('weight:-rozsah báze znalostí / 2','id atributu__id výroku'), Nahrad()" class="pnobutton"><BR> ] je-li zadán irrelevantbutton [ <INPUT Type="button" Value="text 3" OnClick="InputValue('irrelevant','id atributu__id výroku'), Nahrad()" class="irrelevantbutton"><BR> ] je-li zadán unknownbutton [ <INPUT Type="button" Value="text 4" OnClick="InputValue('unknown','id atributu__id výroku'), Nahrad()" class="unknownbutton"><BR> ] </TD></TR> ] Jde-li o numerický atribut [ <TR> <TD class="questioncell">jméno atributu</TD> je-li zadána hodnota atributu [ if (Atr.weight.min_hodnota = vaha_TRUE[0]) and (Atr.weight.max_hodnota = vaha_TRUE[1]) then <TD class="answercell"><INPUT name="id atributu" value="minimální hodnota;maximální hodnota"></TD> ] je-li zadána váha atributu [ <TD class="answercell"><INPUT name="id atributu" value="[minimální váha;maximální váha]"></TD> ] <TD class="buttonscell"> je-li zadán unknownbutton [ <INPUT Type="button" Value="text 4" OnClick="InputValue('unknownnumeric','id atributu')" class="unknownbutton"><BR> ] ] |
questionnaire | Tabulka pro dotazník |
<#BeginFormQuestionnaire> | <FORM action="forward" onsubmit="return kontrolaDat(this)"> | questionnaire | Začátek formuláře dotazníku. |
CheckQuestionnaire | rozmez := Uzivatel.RozmeziVah;
function PrevodCisla function KontrolaCisla pro každý atribut [ jde-li o dotaz na numerický atribut [ if (Atr is TAtribut_numeric)and(Atr.dotaz = question) then begin if TAtribut_numeric(Atr).omezen_zdola then s1 := Fltostr(TAtribut_numeric(Atr).dolni_mez); if TAtribut_numeric(Atr).omezen_shora then s2 := Fltostr(TAtribut_numeric(Atr).horni_mez); function kontrolaHodnotyid atributu(vstup){ if(vstup != "") { if (isNaN(vstup)){ alert(NotValue); return false; } je-li atribut omezen zdola [ if TAtribut_numeric(Atr).omezen_zdola then s1 = "dolní mez"; s1 = PrevodCisel(s1); if(parseFloat(vstup) < parseFloat(s1)) { alert(ValueOutOfRange); return false; }; ] je-li atribut omezen zdola [ s2 = "horní mez"; s2 = PrevodCisel(s2); if(parseFloat(vstup) > parseFloat(s2)) { alert(ValueOutOfRange); return false; }; ] return true; } else {return false;} }; ] function kontrolaDat(vstup) { pro všechny dotazy [ jedná-li se o binární nebo jednoduchý atribut [ zadanaHodnota = vstup.id atributu.value; strednik = zadanaHodnota.indexOf(";"); if (strednik > 0) { s1 = zadanaHodnota.substring(0,strednik); if (KontrolaCisla(s1)) { s2 = zadanaHodnota.substring(strednik+1,zadanaHodnota.length); if (!(KontrolaCisla(s2))){return false;}; } else {return false;}; } else { if (!(KontrolaCisla(zadanaHodnota))){return false;}; }; ] jedná-li se o množinový atribut, tak pro všechny jeho výroky [ zadanaHodnota = vstup.id atributu__id výroku.value; strednik = zadanaHodnota.indexOf(";"); if (strednik > 0) { s1 = zadanaHodnota.substring(0,strednik); if (KontrolaCisla(s1)) { s2 = zadanaHodnota.substring(strednik+1,zadanaHodnota.length); if (!(KontrolaCisla(s2))){ return false; }; } else {return false;}; } else { if (zadanaHodnota != "") { if (isNaN(zadanaHodnota)){ zadanaHodnota = PrevodCisel(zadanaHodnota); if (isNaN(zadanaHodnota)){alert(NotNumber);return false;}; }; if((parseFloat(zadanaHodnota) < parseFloat(-rozmezí vah))||(parseFloat(zadanaHodnota) > parseFloat(rozmezí vah))) { alert(WeightOutOfRange + "pořadí výroku"); return false; }; }; }; ] jedná-li se o numerický atribut [ zadanaHodnota = vstup.id atributu.value; if ((zadanaHodnota.indexOf("[") == 0)&&(zadanaHodnota.indexOf("]") == zadanaHodnota.length - 1)){ return true;}; strednik = zadanaHodnota.indexOf(";"); if (strednik > 0) { s1 = zadanaHodnota.substring(0,strednik); s1 = PrevodCisel(s1); if (kontrolaHodnotyid atributu(s1) == false){ return false;}; s2 = zadanaHodnota.substring(strednik+1,zadanaHodnota.length); s2 = PrevodCisel(s2); if (kontrolaHodnotyid atributu(s2) == false){ return false;} else {;}; } else { if (!(isNaN(zadanaHodnota))){ zadanaHodnota = PrevodCisel(zadanaHodnota); if(!(kontrolaHodnotyid atributu(zadanaHodnota))){return false;};} else { alert(NotValue); return false; }; }; ] ] return true;}; |
questionnaire | Javascript pro kontrolu vyplněného dotazníku. |
QuestionnaireNotNumbers | function NahradHodnoty(vaha,id){ strednik = vaha.indexOf(";"); if (strednik > 0) { s1 = vaha.substring(0,strednik); s2 = vaha.substring(strednik+1,vaha.length); } else { s1 = vaha; s2 = vaha; }; if ((parseFloat(s1) == rozsah vah) +')&&(parseFloat(s2) == rozsah vah)){ document.all[id].innerText = CertainlyYes;}; if ((parseFloat(s1) == -rozsah vah)&&(parseFloat(s2) == -rozsah vah)){ document.all[id].innerText = CertainlyNo;}; if ((parseFloat(s1) == -rozsah vah)&&(parseFloat(s2) == rozsah vah)){ document.all[id].innerText = Unknown;}; if ((parseFloat(s1) == 0)&&(parseFloat(s2) == 0)){ document.all[id].innerText = Irrelevant;}; if ((parseFloat(s1) == rozsah vah / 2)&&(parseFloat(s2) == rozsah vah / 2)){ document.all[id].innerText = ProbablyYes;}; if ((parseFloat(s1) == -rozsah vah / 2)&&(parseFloat(s2) == -rozsah vah / 2)){ document.all[id].innerText = ProbablyNo;}; }; function Nahrad(){ pro všechny dotazy [ jde-li o binární nebo jednoduchý atribut [ NahradHodnoty(document.all["id atributu"].value, "textid atributu") ] jde-li o množinový atribut, tak pro všechny jeho výroky [ NahradHodnoty(document.all["id atributu__id výroku"].value, "textid atributu__id výroku") ] ] }; |
questionnaire | Javascript pro nahrazování jednotlivých vah příslušnými textovými hodnotami. |