script.js 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. const filterCategory = document.getElementById('filter');
  2. const level = document.getElementById('level');
  3. const version = document.getElementById('version');
  4. const resultsElement = document.getElementById('returnedResults');
  5. let lang = 'en';
  6. const tableHeader = document.querySelector('thead');
  7. const tableBody = document.querySelector('tbody');
  8. const criteria = wcagObj['criterion'];
  9. let headers = [
  10. {
  11. "name": "understandingCriteria",
  12. "alias": "Criteria",
  13. "view": true
  14. },
  15. {
  16. "name": "link",
  17. "alias": "Link",
  18. "view": false
  19. },
  20. {
  21. "name": "wcagLevel",
  22. "alias": "Level",
  23. "view": true
  24. },
  25. {
  26. "name": "wcagVersion",
  27. "alias": "Version",
  28. "view": true
  29. },
  30. {
  31. "name": "goal",
  32. "alias": "Goal",
  33. "view": true
  34. },
  35. {
  36. "name": "intent",
  37. "alias": "Intent",
  38. "view": false
  39. },
  40. {
  41. "name": "benefits",
  42. "alias": "Benefits",
  43. "view": false
  44. },
  45. {
  46. "name": "verification",
  47. "alias": "Verification",
  48. "view": false
  49. },
  50. {
  51. "name": "tools",
  52. "alias": "Tools",
  53. "view": false
  54. },
  55. {
  56. "name": "category",
  57. "alias": "Category",
  58. "view": true
  59. }
  60. ];
  61. const createTable = () => {
  62. const filterLevel = level.innerHTML.split(",");
  63. const filterVersion = version.innerHTML.split(",");
  64. const elementHead = document.getElementById('thead');
  65. const totalhead = elementHead.children.length;
  66. for(let g= 0; g<totalhead; g++) {
  67. if (elementHead.children.length >0 ) { elementHead.removeChild(elementHead.children[0]) }
  68. }
  69. const element = document.getElementById('bodyTable')
  70. const total = element.children.length
  71. for (let i = 0; i < total;i++ ) {
  72. if (element.children.length > 0 ) { element.removeChild(element.children[0]) }
  73. }
  74. let tr = document.createElement('tr');
  75. headers.forEach(item => {
  76. if (item.view) {
  77. const th = document.createElement('th')
  78. th.setAttribute('scope', 'column')
  79. const alias = document.createTextNode(item.alias)
  80. th.appendChild(alias)
  81. tr.appendChild(th)
  82. }
  83. })
  84. elementHead.appendChild(tr)
  85. criteria.forEach(item => {
  86. tr = document.createElement('tr')
  87. headers.forEach(head => {
  88. if (head.view===true && (item.category.includes(filterCategory.innerHTML) || filterCategory.innerHTML === 'all') && (filterLevel.find(lev => lev === item.wcagLevel) || filterLevel[0] === 'All') && (filterVersion.find(lev => lev === item.wcagVersion) || filterVersion[0] === 'All')) {
  89. const td = document.createElement('td');
  90. let content;
  91. content = document.createTextNode(item[head.name]);
  92. if (content.textContent === '[object Object]'){
  93. switch (lang) {
  94. case 'cat':
  95. content = document.createTextNode(item[head.name].cat);
  96. break;
  97. case 'es':
  98. content = document.createTextNode(item[head.name].es);
  99. break;
  100. case 'en':
  101. content = document.createTextNode(item[head.name].en);
  102. break;
  103. default:
  104. content = document.createTextNode(item[head.name].en);
  105. break;
  106. }
  107. }
  108. td.appendChild(content);
  109. tr.appendChild(td);
  110. }
  111. });
  112. if (tr.firstElementChild != null){
  113. element.append(tr);
  114. }
  115. });
  116. resultsElement.innerHTML = document.getElementById('wcagTable').rows.length - 1;
  117. }
  118. function btnLang(btn) {
  119. lang = btn.id
  120. createTable()
  121. }
  122. function btnCategory(btn) {
  123. filterCategory.textContent = btn.textContent;
  124. createTable()
  125. }
  126. function btnLevel(btn) {
  127. const contentLevel = btn.textContent
  128. const arrayLevels = level.innerHTML.split(",")
  129. if (contentLevel == "All") {
  130. level.textContent = 'All'
  131. }
  132. else if (arrayLevels.indexOf(contentLevel) !== -1) {
  133. const newArray = arrayLevels.filter(item => item != contentLevel)
  134. level.textContent = newArray.join()
  135. if (level.innerHTML == "") {
  136. level.textContent = 'All'
  137. }
  138. }
  139. else {
  140. if (arrayLevels.indexOf('All') !== -1) {
  141. arrayLevels.splice(arrayLevels.indexOf('All'), 1)
  142. level.textContent = arrayLevels.join()
  143. }
  144. arrayLevels.push(contentLevel)
  145. if (arrayLevels.length === 3) {
  146. level.textContent = 'All'
  147. } else {
  148. level.textContent = arrayLevels.join()
  149. }
  150. }
  151. createTable()
  152. }
  153. function btnVersion(btn) {
  154. const contentVersion = btn.textContent
  155. const arrayVersions = version.innerHTML.split(",")
  156. if (contentVersion == "All") {
  157. version.textContent = 'All'
  158. }
  159. else if (arrayVersions.indexOf(contentVersion) !== -1) {
  160. const newArray = arrayVersions.filter(item => item != contentVersion)
  161. version.textContent = newArray.join()
  162. if (version.innerHTML == "") {
  163. version.textContent = 'All'
  164. }
  165. }
  166. else {
  167. if (arrayVersions.indexOf('All') !== -1) {
  168. arrayVersions.splice(arrayVersions.indexOf('All'), 1)
  169. version.textContent = arrayVersions.join()
  170. }
  171. arrayVersions.push(contentVersion)
  172. if (arrayVersions.length === 3) {
  173. version.textContent = 'All'
  174. } else {
  175. version.textContent = arrayVersions.join()
  176. }
  177. }
  178. createTable()
  179. }
  180. function showColumns(check){
  181. headers.forEach(item => {
  182. if (item.name === check.id) { check.checked ? item.view = true : item.view = false; }
  183. })
  184. createTable();
  185. }
  186. createTable();