demonstrator_updated.html 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. <!DOCTYPE html>
  2. <html>
  3. <!--
  4. CertainTrust Demonstrator in JavaScript
  5. Demonstrates some capabilities of the CertainTrust SDK
  6. using a Java applet that interactively calculates
  7. AND and OR of two CertainTrust data objects and
  8. visually displays both the input objects and the output.
  9. @author Florian Volk <florian.volk@cased.de>
  10. -->
  11. <head>
  12. <meta charset="utf-8" />
  13. <title>CertainTrust Demonstrator in JavaScript</title>
  14. <style type="text/css">
  15. h1, p, td:nth-child(2n) { text-align: center; }
  16. table { margin: 50px 0; }
  17. </style>
  18. <!-- include these two scripts and the CSS to enable both CertainTrust and the HTI -->
  19. <script type="text/javascript" src="CertainTrust.js"></script>
  20. <script type="text/javascript" src="certainTrustHTI.js"></script>
  21. <link rel="stylesheet" type="text/css" href="certainTrustHTI.css"/>
  22. </head>
  23. <body>
  24. <h1>Demonstrator for CertainTrust</h1>
  25. <p>CertainTrust provides a means for the evaluation of propositional logic terms under uncertainty.</p>
  26. <table>
  27. <!-- Demonstrator for CertainTrust.AND -->
  28. <tr>
  29. <td id="and-operand1"></td>
  30. <td>AND</td>
  31. <td id="and-operand2"></td>
  32. <td>=</td>
  33. <td id="and-result"></td>
  34. <td></td>
  35. </tr>
  36. <!-- Demonstrator for CertainTrust.OR -->
  37. <tr>
  38. <td id="or-operand1"></td>
  39. <td>OR</td>
  40. <td id="or-operand2"></td>
  41. <td>=</td>
  42. <td id="or-result"></td>
  43. <td></td>
  44. </tr>
  45. <!-- Demonstrator for CertainTrust.cFusion -->
  46. <tr>
  47. <td id="cf-operand1"></td>
  48. <td>cFusion</td>
  49. <td id="cf-operand2"></td>
  50. <td>=</td>
  51. <td id="cf-result"></td>
  52. <td>DoC <input type="text" id="DoC" size="2"></td>
  53. </tr>
  54. <!-- Demonstrator for CertainTrust.wFusion -->
  55. <tr>
  56. <td id="wf-operand1"></td>
  57. <td>wFusion</td>
  58. <td id="wf-operand2"></td>
  59. <td>=</td>
  60. <td id="wf-result"></td>
  61. <td></td>
  62. </tr>
  63. </table>
  64. <script type="text/javascript">
  65. // create an Array to hold the CertainTrust objects
  66. var CT_objects = [];
  67. var N = 10;
  68. var cweight = [1,1];
  69. var wweight = [1,1];
  70. var doc = 0.2;
  71. var CT_names = ['and-operand1', 'and-operand2', 'and-result',
  72. 'or-operand1', 'or-operand2', 'or-result',
  73. 'cf-operand1','cf-operand2','cf-result',
  74. 'wf-operand1','wf-operand2','wf-result'];
  75. // ANDObserver is used for the AND calculation
  76. var ANDObserver = {
  77. update: function() {
  78. // calculate the CertainTrust.AND for both values
  79. var CT_result = CT_objects['and-operand1'].AND(CT_objects['and-operand2']);
  80. // update the HTI which displays the result
  81. CT_objects['and-result'].setF(CT_result.getF());
  82. CT_objects['and-result'].setTC(CT_result.getT(), CT_result.getC());
  83. }
  84. };
  85. // ORObserver is used for the OR calculation
  86. var ORObserver = {
  87. update: function() {
  88. // calculate the CertainTrust.OR for both values
  89. var CT_result = CT_objects['or-operand1'].OR(CT_objects['or-operand2']);
  90. // update the HTI which displays the result
  91. CT_objects['or-result'].setF(CT_result.getF());
  92. CT_objects['or-result'].setTC(CT_result.getT(), CT_result.getC());
  93. }
  94. };
  95. // CFObserver is used for the conflicted fusion (cFusion) calculation
  96. var CFObserver = {
  97. update: function() {
  98. var fusTmp = new CertainTrust(5);
  99. var fusArray = [];
  100. fusArray.push(CT_objects['cf-operand1']);
  101. fusArray.push(CT_objects['cf-operand2']);
  102. //cFusion operation
  103. var CT_result = fusTmp.cFusion(fusArray,cweight);
  104. doc = CT_result.getDoC();
  105. // update the HTI which displays the result
  106. CT_objects['cf-result'].setF(CT_result.getF());
  107. CT_objects['cf-result'].setTC(CT_result.getT(), CT_result.getC());
  108. document.getElementById("DoC").value = doc;
  109. }
  110. };
  111. // WFObserver is used for the weighted fusion (wFusion) calculation
  112. var WFObserver = {
  113. update: function() {
  114. var fusTmp = new CertainTrust(5);
  115. var fusArray = [];
  116. fusArray.push(CT_objects['wf-operand1']);
  117. fusArray.push(CT_objects['wf-operand2']);
  118. //cFusion operation
  119. var CT_result = fusTmp.wFusion(fusArray,wweight);
  120. // update the HTI which displays the result
  121. CT_objects['wf-result'].setF(CT_result.getF());
  122. CT_objects['wf-result'].setTC(CT_result.getT(), CT_result.getC());
  123. }
  124. };
  125. // create the CertainTrust objects and the associated HTIs
  126. for (var i = 0, element; element = CT_names[i]; ++i) {
  127. var CT_object = new CertainTrust(N);
  128. // the result HTIs should be read-only
  129. var isResultHTI = (-1 !== element.indexOf('-result'));
  130. var HTI = new CertainTrustHTI(CT_object, {domParent: element, readonly: isResultHTI});
  131. // register our observers for the calculation
  132. if (!isResultHTI) {
  133. var isOR = (0 === element.indexOf('or-'));
  134. var isAND = (0 === element.indexOf('and-'));
  135. var isCF = (0 === element.indexOf('cf-'));
  136. var isWF = (0 === element.indexOf('wf-'));
  137. if(isOR){
  138. CT_object.addObserver(ORObserver);
  139. }
  140. else if(isAND){
  141. CT_object.addObserver(ANDObserver);
  142. }
  143. else if(isCF){
  144. CT_object.addObserver(CFObserver);
  145. }
  146. else{
  147. CT_object.addObserver(WFObserver);
  148. }
  149. }
  150. // store the created objects for easy access in the Arrays
  151. CT_objects[element] = CT_object;
  152. }
  153. // trigger initial update to the result HTIs
  154. ANDObserver.update();
  155. ORObserver.update();
  156. CFObserver.update();
  157. WFObserver.update();
  158. //document.getElementById("DoC").value = 1;
  159. </script>
  160. <p>
  161. <img src="logo_tudarmstadt.png" alt="Technische Universität Darmstadt" width="176" height="73" />
  162. <img src="logo_softwarecluster.png" alt="Software-Cluster" width="212" height="73" />
  163. </p>
  164. </body>
  165. </html>