script.js 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. const tableBody = document.querySelector('tbody');
  2. const filterCategory = document.getElementById('filter');
  3. const level = document.getElementById('level')
  4. const resultsElement = document.getElementById('returnedResults');
  5. const tests = wcagObj['intents'];
  6. function populateTable(obj, filter)
  7. {
  8. let cssSpan
  9. const resultsElement = document.getElementById('returnedResults');
  10. const tests = obj['intents'];
  11. let returnedResults = 0
  12. wcagVersion.textContent = obj.latestWCAGversion;
  13. for(let i = 0;i < tests.length; i++)
  14. {
  15. const tableRow = document.createElement('tr');
  16. for (let key in tests[i])
  17. {
  18. if (tests[i].hasOwnProperty(key))
  19. {
  20. if(key!=='link')
  21. {
  22. const val = tests[i][key]
  23. const tableData = document.createElement('td')
  24. if(tests[i].category.includes(filter) || filter == 'all')
  25. {
  26. if(key=='category')
  27. {
  28. returnedResults++;
  29. for(let a = 0;a < tests[i][key].length; a++)
  30. {
  31. cssSpan = document.createElement('span')
  32. cssSpan.textContent = val[a];
  33. cssSpan.classList.add('bg-primary');
  34. cssSpan.classList.add('badge');
  35. cssSpan.classList.add('rounded-pill');
  36. tableData.appendChild(cssSpan);
  37. }
  38. }
  39. else if(key==='wcagLevel')
  40. {
  41. cssSpan = document.createElement('span')
  42. cssSpan.textContent = val;
  43. cssSpan.classList.add(val);
  44. tableData.appendChild(cssSpan);
  45. /* switch(val)
  46. {
  47. case 'A':
  48. var cssSpan = document.createElement('span');
  49. cssSpan.textContent = val;
  50. cssSpan.classList.add(val);
  51. /*cssSpan.classList.add('text-dark');
  52. cssSpan.classList.add('badge');
  53. cssSpan.classList.add('rounded-pill');
  54. tableData.appendChild(cssSpan);
  55. break;
  56. case 'AA':
  57. var cssSpan = document.createElement('span');
  58. cssSpan.textContent = val;
  59. cssSpan.classList.add('bg-warning');
  60. cssSpan.classList.add('text-dark');
  61. cssSpan.classList.add('badge');
  62. cssSpan.classList.add('rounded-pill');
  63. tableData.appendChild(cssSpan);
  64. break;
  65. case 'AAA':
  66. var cssSpan = document.createElement('span');
  67. cssSpan.textContent = val;
  68. cssSpan.classList.add('bg-danger');
  69. cssSpan.classList.add('badge');
  70. cssSpan.classList.add('rounded-pill');
  71. tableData.appendChild(cssSpan);
  72. break;
  73. default:
  74. tableData.textContent = val;
  75. break;
  76. } */
  77. }
  78. else if (key == 'category') {
  79. returnedResults++;
  80. for (let a = 0; a < tests[i][key].length; a++) {
  81. var cssSpan = document.createElement('span');
  82. cssSpan.textContent = val[a];
  83. cssSpan.classList.add('bg-primary');
  84. cssSpan.classList.add('badge');
  85. cssSpan.classList.add('rounded-pill');
  86. tableData.appendChild(cssSpan);
  87. }
  88. }
  89. else if (key == 'understandingCriteria') {
  90. const a = document.createElement('a');
  91. const linkText = document.createTextNode(val);
  92. a.appendChild(linkText);
  93. a.title = val
  94. a.target = '_blank';
  95. a.href = tests[i].link;
  96. tableData.appendChild(a);
  97. }
  98. else if(key=='benefit')
  99. {
  100. const ul = document.createElement('ul');
  101. const lista = val.split("#")
  102. lista.forEach(element => {
  103. const li = document.createElement('li');
  104. const liText = document.createTextNode(element);
  105. li.appendChild(liText);
  106. ul.appendChild(li)
  107. });
  108. tableData.appendChild(ul);
  109. }
  110. else if (key = "intent") {
  111. const pText = val.split("#")
  112. pText.forEach(element => {
  113. const p = document.createElement('p');
  114. const pText = document.createTextNode(element);
  115. p.appendChild(pText);
  116. tableData.appendChild(p);
  117. });
  118. }
  119. tableRow.appendChild(tableData);
  120. tableBody.appendChild(tableRow);
  121. }
  122. }
  123. }
  124. }
  125. }
  126. resultsElement.textContent = returnedResults;
  127. }
  128. function btnCategory(btn) {
  129. filterCategory.textContent = btn.textContent;
  130. populateTable();
  131. }
  132. function btnLevel(btn) {
  133. const contentLevel = btn.textContent
  134. const arrayLevels = level.innerHTML.split(",")
  135. if (contentLevel == "All") {
  136. level.textContent = 'All'
  137. }
  138. else if (arrayLevels.indexOf(contentLevel) !== -1) {
  139. const newArray = arrayLevels.filter(item => item != contentLevel)
  140. level.textContent = newArray.join()
  141. if (level.innerHTML == "") {
  142. level.textContent = 'All'
  143. }
  144. }
  145. else {
  146. if (arrayLevels.indexOf('All') !== -1) {
  147. arrayLevels.splice(arrayLevels.indexOf('All'), 1)
  148. level.textContent = arrayLevels.join()
  149. }
  150. arrayLevels.push(contentLevel)
  151. if (arrayLevels.length === 3) {
  152. level.textContent = 'All'
  153. } else {
  154. level.textContent = arrayLevels.join()
  155. }
  156. }
  157. populateTable();
  158. }
  159. const hashstring = window.location.hash;
  160. switch (hashstring.replace('#', '')) {
  161. case 'dynamic-content':
  162. case 'custom-controls':
  163. case 'forms-and-UI':
  164. case 'audio-video':
  165. case 'structure':
  166. case 'colour':
  167. case 'content':
  168. case 'keyboard':
  169. case 'link':
  170. case 'font-size':
  171. populateTable();
  172. break;
  173. default:
  174. populateTable();
  175. break;
  176. }