script.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. const tableBody = document.querySelector('tbody');
  2. const filteredBy = document.getElementById('filter');
  3. const wcagVersion = document.getElementById('wcagVersion');
  4. function populateTable(obj, filter)
  5. {
  6. const resultsElement = document.getElementById('returnedResults');
  7. const tests = obj['intents'];
  8. var returnedResults = 0;
  9. wcagVersion.textContent = obj.latestWCAGversion;
  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(filter) || filter == '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-success');
  53. cssSpan.classList.add('badge');
  54. cssSpan.classList.add('rounded-pill');
  55. tableData.appendChild(cssSpan);
  56. break;
  57. case 'AAA':
  58. var cssSpan = document.createElement('span');
  59. cssSpan.textContent = val;
  60. cssSpan.classList.add('bg-warning');
  61. cssSpan.classList.add('text-dark');
  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. const btns = document.querySelectorAll('button');
  113. for (i of btns)
  114. {
  115. i.addEventListener('click', function(){
  116. tableBody.innerHTML = '';
  117. populateTable(wcagObj,this.textContent);
  118. filteredBy.textContent = this.textContent;
  119. });
  120. }
  121. const hashstring = window.location.hash;
  122. switch(hashstring.replace('#',''))
  123. {
  124. case 'dynamic-content':
  125. case 'custom-controls':
  126. case 'forms-and-UI':
  127. case 'audio-video':
  128. case 'structure':
  129. case 'colour':
  130. case 'content':
  131. case 'keyboard':
  132. case 'link':
  133. case 'font-size':
  134. populateTable(wcagObj, hashstring.replace('#',''));
  135. break;
  136. default:
  137. populateTable(wcagObj, 'all');
  138. break;
  139. }