script.js 4.8 KB

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