New Expert SysTem
  
  
  
  
  
  
  
  

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.