script.js 5.5 KB

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