script.js 4.6 KB

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