Bladeren bron

Merge pull request #5 from mel-caballero/develop

Develop
Melanie Caballero Pastor 4 jaren geleden
bovenliggende
commit
c0e533fb8e
12 gewijzigde bestanden met toevoegingen van 733 en 3997 verwijderingen
  1. 0 1547
      .dcignore
  2. 1 0
      .gitignore
  3. 0 8
      .idea/.gitignore
  4. 0 8
      .idea/modules.xml
  5. 0 6
      .idea/vcs.xml
  6. 0 12
      .idea/wcagUnderstanding.iml
  7. 0 3
      CHANGELOG.md
  8. 36 1171
      data/content.js
  9. 0 1056
      data/json-ES.js
  10. 60 23
      index.html
  11. 433 0
      scripts/script-1.js
  12. 203 163
      scripts/script.js

+ 0 - 1547
.dcignore

@@ -1,1547 +0,0 @@
-# Write glob rules for ignored files.
-# Check syntax on https://deepcode.freshdesk.com/support/solutions/articles/60000531055-how-can-i-ignore-files-or-directories-
-# Check examples on https://github.com/github/gitignore
-
-# Hidden directories
-.*/
-
-# FuelPHP
-/fuel/vendor
-/docs/
-/fuel/app/logs/*/*/*
-/fuel/app/cache/*/*
-
-# Godot
-data_*/
-
-# Lilypond
-*~
-
-# Nim
-nimcache/
-nimblecache/
-htmldocs/
-
-# Android
-bin/
-gen/
-out/
-build/
-proguard/
-captures/
-freeline/
-fastlane/screenshots
-fastlane/test_output
-lint/intermediates/
-lint/generated/
-lint/outputs/
-lint/tmp/
-
-# UnrealEngine
-Binaries/*
-Plugins/*/Binaries/*
-Build/*
-!Build/*/
-Build/*/**
-Saved/*
-Intermediate/*
-Plugins/*/Intermediate/*
-DerivedDataCache/*
-
-# Zephir
-ext/build/
-ext/modules/
-ext/Makefile*
-ext/config*
-ext/autom4te*
-ext/install-sh
-ext/missing
-ext/mkinstalldirs
-ext/libtool
-
-# Typo3
-/fileadmin/user_upload/
-/fileadmin/_temp_/
-/fileadmin/_processed_/
-/uploads/
-/typo3conf/temp_CACHED*
-/typo3conf/ENABLE_INSTALL_TOOL
-/FIRST_INSTALL
-/typo3
-/Packages
-/typo3temp/
-
-# Actionscript
-bin-debug/
-bin-release/
-[Oo]bj/
-[Bb]in/
-
-# WordPress
-!wp-content/
-wp-content/*
-!wp-content/mu-plugins/
-!wp-content/plugins/
-!wp-content/themes/
-wp-content/themes/twenty*/
-node_modules/
-
-# Lithium
-libraries/*
-resources/tmp/*
-
-# Python
-__pycache__/
-build/
-develop-eggs/
-dist/
-downloads/
-eggs/
-lib/
-lib64/
-parts/
-sdist/
-var/
-wheels/
-share/python-wheels/
-*.egg-info/
-MANIFEST
-htmlcov/
-cover/
-instance/
-docs/_build/
-target/
-profile_default/
-__pypackages__/
-celerybeat-schedule
-env/
-venv/
-ENV/
-env.bak/
-venv.bak/
-/site
-cython_debug/
-
-# VVVV
-bin/
-
-# CodeIgniter
-*/config/development
-*/cache/*
-application/logs/*
-/vendor/
-
-# AppEngine
-appengine-generated/
-
-# Objective-C
-xcuserdata/
-build/
-DerivedData/
-Carthage/Build/
-fastlane/test_output
-iOSInjectionProject/
-
-# GWT
-war/gwt_bree/
-gwt-unitCache/
-war/WEB-INF/deploy/
-war/WEB-INF/classes/
-www-test/
-
-# Delphi
-__history/
-__recovery/
-modules/
-
-# ROS
-devel/
-logs/
-build/
-bin/
-lib/
-msg_gen/
-srv_gen/
-build_isolated/
-devel_isolated/
-/cfg/cpp/
-qtcreator-*
-/planning/cfg
-/planning/docs
-*~
-CATKIN_IGNORE
-
-# Stella
-obj/
-
-# Jekyll
-_site/
-
-# MetaProgrammingSystem
-classes_gen
-source_gen
-test_gen
-
-# JENKINS_HOME
-!/jobs
-jobs/**
-!jobs/**/
-builds
-indexing
-jobs/**/*workspace
-
-# Leiningen
-/lib/
-/classes/
-/target/
-/checkouts/
-
-# Laravel
-/vendor/
-node_modules/
-app/storage/
-public/storage
-public/hot
-public_html/storage
-public_html/hot
-
-# R
-/*.Rcheck/
-*_cache/
-/cache/
-docs/
-po/*~
-
-# Processing
-applet
-out
-
-# GitBook
-node_modules
-_book
-
-# LemonStand
-/config/*
-/controllers/*
-/init/*
-/logs/*
-/phproad/*
-/temp/*
-/uploaded/*
-/installer_files/*
-/modules/backend/*
-/modules/blog/*
-/modules/cms/*
-/modules/core/*
-/modules/session/*
-/modules/shop/*
-/modules/system/*
-/modules/users/*
-
-# ArchLinuxPackages
-pkg/
-
-# Swift
-xcuserdata/
-build/
-DerivedData/
-Carthage/Build/
-Dependencies/
-fastlane/test_output
-iOSInjectionProject/
-
-# Packer
-packer_cache/
-
-# Elixir
-/_build
-/cover
-/deps
-/doc
-
-# Phalcon
-/cache/
-/config/development/
-
-# Unity
-/[Ll]ibrary/
-/[Tt]emp/
-/[Oo]bj/
-/[Bb]uild/
-/[Bb]uilds/
-/[Ll]ogs/
-/[Uu]ser[Ss]ettings/
-/[Mm]emoryCaptures/
-/[Aa]ssets/Plugins/Editor/JetBrains*
-ExportedObj/
-/[Aa]ssets/[Ss]treamingAssets/aa/*
-
-# Scrivener
-*/QuickLook/
-
-# Kohana
-application/cache/*
-application/logs/*
-
-# Prestashop
-/cache/*
-!/cache/push/activity
-!/cache/push/trends
-/download/*
-/img/*
-!/img/jquery-ui
-!/img/scenes
-/upload/*
-/vendor/*
-/docs/phpdoc-sf/
-/admin-dev/autoupgrade/*
-/admin-dev/backups/*
-/admin-dev/import/*
-/admin-dev/export/*
-themes/*/cache/*
-config/xml/*
-config/themes/*
-modules/*
-override/*
-themes/*/
-!themes/classic
-!themes/_core
-!themes/_libraries
-bower_components/
-node_modules/
-php-cs-fixer
-translations/*
-mails/*
-!mails/themes/
-!mails/_partials/
-themes/default-bootstrap/lang/*
-themes/default-bootstrap/mails/*
-!themes/default-bootstrap/mails/en/
-themes/default-bootstrap/modules/*/mails/*
-!themes/default-bootstrap/modules/*/mails/en
-/bin/
-/app/Resources/translations/*
-!/app/Resources/translations/default
-/build/
-/var/*
-!/var/cache
-/var/cache/*
-!/var/logs
-/var/logs/*
-!/var/sessions
-/var/sessions/*
-/vendor/
-/web/bundles/
-
-# ExtJs
-build/
-ext/
-
-# CMake
-CMakeFiles
-CMakeScripts
-Testing
-Makefile
-_deps
-
-# Umbraco
-**/App_Data/Logs/
-**/App_Data/[Pp]review/
-**/App_Data/TEMP/
-**/App_Data/NuGetBackup/
-!**/App_Data/[Pp]ackages/*
-!**/[Uu]mbraco/[Dd]eveloper/[Pp]ackages/*
-!**/[Uu]mbraco/[Vv]iews/[Pp]ackages/*
-**/App_Data/cache/
-
-# CakePHP
-/vendor/*
-/tmp/cache/models/*
-!/tmp/cache/models/empty
-/tmp/cache/persistent/*
-!/tmp/cache/persistent/empty
-/tmp/cache/views/*
-!/tmp/cache/views/empty
-/tmp/sessions/*
-!/tmp/sessions/empty
-/tmp/tests/*
-!/tmp/tests/empty
-/logs/*
-!/logs/empty
-/app/tmp/*
-/vendors/*
-
-# Java
-hs_err_pid*
-
-# Symfony
-/app/cache/*
-/app/logs/*
-/app/spool/*
-/var/cache/*
-/var/logs/*
-/var/sessions/*
-/var/log/*
-/bin/*
-!bin/console
-!bin/symfony_requirements
-/vendor/
-/web/bundles/
-/web/uploads/
-/build/
-**/Entity/*~
-
-# Composer
-/vendor/
-
-# SymphonyCMS
-manifest/cache/
-manifest/logs/
-manifest/tmp/
-symphony/
-workspace/uploads/
-
-# JBoss6
-/server/all/data
-/server/all/log
-/server/all/tmp
-/server/all/work
-/server/default/data
-/server/default/log
-/server/default/tmp
-/server/default/work
-/server/minimal/data
-/server/minimal/log
-/server/minimal/tmp
-/server/minimal/work
-/server/jbossweb-standalone/data
-/server/jbossweb-standalone/log
-/server/jbossweb-standalone/tmp
-/server/jbossweb-standalone/work
-/server/standard/data
-/server/standard/log
-/server/standard/tmp
-/server/standard/work
-
-# JBoss4
-/server/all/data
-/server/all/log
-/server/all/tmp
-/server/all/work
-/server/default/data
-/server/default/log
-/server/default/tmp
-/server/default/work
-/server/minimal/data
-/server/minimal/log
-/server/minimal/tmp
-/server/minimal/work
-
-# Red
-quick-test/runnable/
-system/tests/source/units/auto-tests/
-tests/source/units/auto-tests/
-
-# Snap
-parts/
-prime/
-stage/
-
-# Splunk
-local
-
-# Hugo
-/public/
-/resources/_gen/
-
-# Bazel
-/bazel-*
-
-# Nikola
-cache/
-output/
-
-# JupyterNotebooks
-profile_default/
-
-# Puppet
-pkg/*
-spec/fixtures/*
-coverage/*
-vendor/*
-
-# Racket
-compiled/
-
-# Phoenix
-/tmp
-/node_modules
-/assets/node_modules
-/priv/static/
-/installer/_build
-/installer/tmp
-/installer/doc
-/installer/deps
-
-# Logtalk
-lgt_tmp/
-logtalk_tester_logs/
-logtalk_doclet_logs/
-
-# NWjs
-locales/
-pnacl/
-
-# Cordova
-/platforms
-
-# Vue
-docs/_book
-test/
-
-# Kentico
-!CMS/CMSAdminControls/*/
-!CMS/CMSModules/System/*/
-!CMS/App_Data/CIRepository/**
-CMS/App_Data/AzureCache
-CMS/App_Data/AzureTemp
-CMS/App_Data/CMSTemp
-CMS/App_Data/Persistent
-CMS/CMSSiteUtils/Export
-CMS/CMSSiteUtils/Import
-CMS/App_Data/CMSModules/SmartSearch/**
-!CMS/App_Data/CMSModules/SmartSearch/*/
-!CMS/App_Data/CMSModules/SmartSearch/_StopWords/**
-!CMS/App_Data/CMSModules/SmartSearch/_Synonyms/**
-CMS/App_Data/DancingGoat
-CMS/App_Data/Templates/CommunitySite
-CMS/App_Data/Templates/CorporateSite
-CMS/App_Data/Templates/DancingGoat
-CMS/App_Data/Templates/EcommerceSite
-CMS/App_Data/Templates/IntranetPortal
-CMS/App_Data/Templates/PersonalSite
-CMS/App_Themes/CommunitySite
-CMS/App_Themes/CorporateSite
-CMS/App_Themes/EcommerceSite
-CMS/App_Themes/IntranetPortal*
-CMS/App_Themes/PersonalSite
-CMS/CMSTemplates/CorporateSite
-CMS/CommunitySite
-CMS/CorporateSite
-CMS/DancingGoat
-CMS/EcommerceSite
-CMS/IntranetPortal
-CMS/PersonalSite
-
-# InforCMS
-[Mm]odel/[Dd]eployment
-!Model/Portal/*/SupportFiles/[Bb]in/
-!Model/Portal/PortalTemplates/*/SupportFiles/[Bb]in
-
-# Xilinx
-*_synth_*
-*/*/bd/*/hdl
-*/*/*/bd/*/hdl
-*/*/bd/*/ip/*/*/
-*/*/*/bd/*/ip/*/*/
-hw_handoff
-ipshared
-
-# Pimcore
-/pimcore
-/website/var/assets/*
-/website/var/backup/*
-/website/var/cache/*
-/website/var/classes/Object*
-!/website/var/classes/objectbricks
-/website/var/config/Geo*
-/website/var/config/object/*
-/website/var/config/portal/*
-/website/var/config/sqlreport/*
-/website/var/email/*
-/website/var/recyclebin/*
-/website/var/search/*
-/website/var/system/*
-/website/var/tmp/*
-/website/var/versions/asset/*
-/website/var/versions/document/*
-/website/var/versions/object/*
-/website/var/user-image/*
-
-# Magento2
-/sitemap
-/pub/sitemap
-/app/config_sandbox
-/app/code/Magento/TestModule*
-/pub/media/attribute/*
-/pub/media/analytics/*
-/pub/media/catalog/*
-/pub/media/customer/*
-/pub/media/downloadable/*
-/pub/media/favicon/*
-/pub/media/import/*
-/pub/media/logo/*
-/pub/media/theme/*
-/pub/media/theme_customization/*
-/pub/media/wysiwyg/*
-/pub/media/tmp/*
-/pub/media/captcha/*
-/pub/static/*
-/var/*
-/vendor/*
-/generated/*
-
-# Bitrix
-/bitrix/*
-!/bitrix/templates
-!/bitrix/components
-/bitrix/components/bitrix
-!/bitrix/gadgets
-/bitrix/gadgets/bitrix
-!/bitrix/php_interface/
-/upload/
-
-# Drupal7
-files/
-sites/*/files
-sites/*/private
-sites/*/translations
-/includes
-/misc
-/modules
-/profiles
-/scripts
-/themes
-
-# CodeSniffer
-/wpcs/*
-
-# Jigsaw
-build_*
-
-# Magento1
-/media/*
-!/media/customer
-/media/customer/*
-!/media/dhl
-/media/dhl/*
-!/media/downloadable
-/media/downloadable/*
-!/media/xmlconnect
-/media/xmlconnect/*
-!/media/xmlconnect/custom
-/media/xmlconnect/custom/*
-!/media/xmlconnect/original
-/media/xmlconnect/original/*
-!/media/xmlconnect/system
-/media/xmlconnect/system/*
-/var/*
-!/var/package
-/var/package/*
-
-# ThinkPHP
-/Application/Runtime/
-
-# AtmelStudio
-[Dd]ebug/
-[Rr]elease/
-
-# IAR_EWARM
-EWARM/**/Obj
-EWARM/**/List
-EWARM/**/Exe
-EWARM/settings
-
-# esp-idf
-build/
-sdkconfig
-
-# Concrete5
-error_log
-files/cache/*
-files/tmp/*
-/application/files/*
-/updates/*
-
-# Drupal
-/sites/*/files
-/sites/*/public
-/sites/*/private
-/sites/*/files-public
-/sites/*/files-private
-/sites/*/translations
-/sites/*/tmp
-/sites/*/cache
-/sites/simpletest
-/core
-/vendor
-
-# Mercury
-Mercury/
-
-# Joomla
-/administrator/cache/*
-/administrator/components/com_actionlogs/*
-/administrator/components/com_admin/*
-/administrator/components/com_ajax/*
-/administrator/components/com_associations/*
-/administrator/components/com_banners/*
-/administrator/components/com_cache/*
-/administrator/components/com_categories/*
-/administrator/components/com_checkin/*
-/administrator/components/com_config/*
-/administrator/components/com_contact/*
-/administrator/components/com_content/*
-/administrator/components/com_contenthistory/*
-/administrator/components/com_cpanel/*
-/administrator/components/com_fields/*
-/administrator/components/com_finder/*
-/administrator/components/com_installer/*
-/administrator/components/com_joomlaupdate/*
-/administrator/components/com_languages/*
-/administrator/components/com_login/*
-/administrator/components/com_media/*
-/administrator/components/com_menus/*
-/administrator/components/com_messages/*
-/administrator/components/com_modules/*
-/administrator/components/com_newsfeeds/*
-/administrator/components/com_plugins/*
-/administrator/components/com_postinstall/*
-/administrator/components/com_privacy/*
-/administrator/components/com_redirect/*
-/administrator/components/com_search/*
-/administrator/components/com_tags/*
-/administrator/components/com_templates/*
-/administrator/components/com_users/*
-/administrator/help/*
-/administrator/includes/*
-/administrator/language/overrides/*
-/administrator/logs/*
-/administrator/modules/mod_custom/*
-/administrator/modules/mod_feed/*
-/administrator/modules/mod_latest/*
-/administrator/modules/mod_latestactions/*
-/administrator/modules/mod_logged/*
-/administrator/modules/mod_login/*
-/administrator/modules/mod_menu/*
-/administrator/modules/mod_multilangstatus/*
-/administrator/modules/mod_online/*
-/administrator/modules/mod_popular/*
-/administrator/modules/mod_privacy_dashboard/*
-/administrator/modules/mod_quickicon/*
-/administrator/modules/mod_sampledata/*
-/administrator/modules/mod_stats_admin/*
-/administrator/modules/mod_status/*
-/administrator/modules/mod_submenu/*
-/administrator/modules/mod_title/*
-/administrator/modules/mod_toolbar/*
-/administrator/modules/mod_unread/*
-/administrator/modules/mod_version/*
-/administrator/templates/hathor/*
-/administrator/templates/isis/*
-/administrator/templates/system/*
-/bin/*
-/cache/*
-/cli/*
-/components/com_ajax/*
-/components/com_banners/*
-/components/com_config/*
-/components/com_contact/*
-/components/com_content/*
-/components/com_contenthistory/*
-/components/com_fields/*
-/components/com_finder/*
-/components/com_mailto/*
-/components/com_media/*
-/components/com_menus/*
-/components/com_modules/*
-/components/com_newsfeeds/*
-/components/com_privacy/*
-/components/com_search/*
-/components/com_tags/*
-/components/com_users/*
-/components/com_wrapper/*
-/images/banners/*
-/images/headers/*
-/images/sampledata/*
-/images/joomla*
-/includes/*
-/installation/*
-/language/overrides/*
-/layouts/joomla/*
-/layouts/libraries/*
-/layouts/plugins/*
-/libraries/cms/*
-/libraries/fof/*
-/libraries/idna_convert/*
-/libraries/joomla/*
-/libraries/legacy/*
-/libraries/php-encryption/*
-/libraries/phpass/*
-/libraries/phpmailer/*
-/libraries/phputf8/*
-/libraries/simplepie/*
-/libraries/vendor/*
-/media/cms/*
-/media/com_associations/*
-/media/com_contact/*
-/media/com_content/*
-/media/com_contenthistory/*
-/media/com_fields/*
-/media/com_finder/*
-/media/com_joomlaupdate/*
-/media/com_menus/*
-/media/com_modules/*
-/media/com_wrapper/*
-/media/contacts/*
-/media/editors/*
-/media/jui/*
-/media/mailto/*
-/media/media/*
-/media/mod_languages/*
-/media/mod_sampledata/*
-/media/overrider/*
-/media/plg_captcha_recaptcha/*
-/media/plg_captcha_recaptcha_invisible/*
-/media/plg_quickicon_extensionupdate/*
-/media/plg_quickicon_joomlaupdate/*
-/media/plg_quickicon_privacycheck/*
-/media/plg_system_highlight/*
-/media/plg_system_stats/*
-/media/plg_twofactorauth_totp/*
-/media/system/*
-/modules/mod_articles_archive/*
-/modules/mod_articles_categories/*
-/modules/mod_articles_category/*
-/modules/mod_articles_latest/*
-/modules/mod_articles_news/*
-/modules/mod_articles_popular/*
-/modules/mod_banners/*
-/modules/mod_breadcrumbs/*
-/modules/mod_custom/*
-/modules/mod_feed/*
-/modules/mod_finder/*
-/modules/mod_footer/*
-/modules/mod_languages/*
-/modules/mod_login/*
-/modules/mod_menu/*
-/modules/mod_random_image/*
-/modules/mod_related_items/*
-/modules/mod_search/*
-/modules/mod_stats/*
-/modules/mod_syndicate/*
-/modules/mod_tags_popular/*
-/modules/mod_tags_similar/*
-/modules/mod_users_latest/*
-/modules/mod_whosonline/*
-/modules/mod_wrapper/*
-/plugins/actionlog/joomla/*
-/plugins/authentication/cookie/*
-/plugins/authentication/example/*
-/plugins/authentication/gmail/*
-/plugins/authentication/joomla/*
-/plugins/authentication/ldap/*
-/plugins/captcha/recaptcha/*
-/plugins/captcha/recaptcha_invisible/*
-/plugins/content/confirmconsent/*
-/plugins/content/contact/*
-/plugins/content/emailcloak/*
-/plugins/content/example/*
-/plugins/content/fields/*
-/plugins/content/finder/*
-/plugins/content/geshi/*
-/plugins/content/joomla/*
-/plugins/content/loadmodule/*
-/plugins/content/pagebreak/*
-/plugins/content/pagenavigation/*
-/plugins/content/vote/*
-/plugins/editors/codemirror/*
-/plugins/editors/none/*
-/plugins/editors/tinymce/*
-/plugins/editors-xtd/article/*
-/plugins/editors-xtd/contact/*
-/plugins/editors-xtd/fields/*
-/plugins/editors-xtd/image/*
-/plugins/editors-xtd/menu/*
-/plugins/editors-xtd/module/*
-/plugins/editors-xtd/pagebreak/*
-/plugins/editors-xtd/readmore/*
-/plugins/extension/example/*
-/plugins/extension/joomla/*
-/plugins/fields/calendar/*
-/plugins/fields/checkboxes/*
-/plugins/fields/color/*
-/plugins/fields/editor/*
-/plugins/fields/imagelist/*
-/plugins/fields/integer/*
-/plugins/fields/list/*
-/plugins/fields/media/*
-/plugins/fields/radio/*
-/plugins/fields/repeatable/*
-/plugins/fields/sql/*
-/plugins/fields/text/*
-/plugins/fields/textarea/*
-/plugins/fields/url/*
-/plugins/fields/user/*
-/plugins/fields/usergrouplist/*
-/plugins/finder/categories/*
-/plugins/finder/contacts/*
-/plugins/finder/content/*
-/plugins/finder/newsfeeds/*
-/plugins/finder/tags/*
-/plugins/installer/folderinstaller/*
-/plugins/installer/packageinstaller/*
-/plugins/installer/urlinstaller/*
-/plugins/privacy/actionlogs/*
-/plugins/privacy/consents/*
-/plugins/privacy/contact/*
-/plugins/privacy/content/*
-/plugins/privacy/message/*
-/plugins/privacy/user/*
-/plugins/quickicon/extensionupdate/*
-/plugins/quickicon/joomlaupdate/*
-/plugins/quickicon/phpversioncheck/*
-/plugins/quickicon/privacycheck/*
-/plugins/sampledata/blog/*
-/plugins/search/categories/*
-/plugins/search/contacts/*
-/plugins/search/content/*
-/plugins/search/newsfeeds/*
-/plugins/search/tags/*
-/plugins/search/weblinks/*
-/plugins/system/actionlogs/*
-/plugins/system/cache/*
-/plugins/system/debug/*
-/plugins/system/fields/*
-/plugins/system/highlight/*
-/plugins/system/languagecode/*
-/plugins/system/languagefilter/*
-/plugins/system/log/*
-/plugins/system/logout/*
-/plugins/system/logrotation/*
-/plugins/system/p3p/*
-/plugins/system/privacyconsent/*
-/plugins/system/redirect/*
-/plugins/system/remember/*
-/plugins/system/sef/*
-/plugins/system/sessiongc/*
-/plugins/system/stats/*
-/plugins/system/updatenotification/*
-/plugins/twofactorauth/totp/*
-/plugins/twofactorauth/yubikey/*
-/plugins/user/contactcreator/*
-/plugins/user/example/*
-/plugins/user/joomla/*
-/plugins/user/profile/*
-/plugins/user/terms/*
-/templates/beez3/*
-/templates/protostar/*
-/templates/system/*
-/tmp/*
-
-# Yii
-assets/*
-protected/runtime/*
-themes/classic/views/
-
-# Rust
-debug/
-target/
-
-# Node
-logs
-pids
-lib-cov
-coverage
-bower_components
-build/Release
-node_modules/
-jspm_packages/
-web_modules/
-out
-dist
-
-# PureScript
-bower_components
-node_modules
-output
-
-# JBoss
-jboss/server/all/tmp/**/*
-jboss/server/all/data/**/*
-jboss/server/all/work/**/*
-jboss/server/default/tmp/**/*
-jboss/server/default/data/**/*
-jboss/server/default/work/**/*
-jboss/server/minimal/tmp/**/*
-jboss/server/minimal/data/**/*
-jboss/server/minimal/work/**/*
-
-# Grails
-/web-app/WEB-INF/classes
-/test/reports
-/logs
-/plugins
-/web-app/plugins
-/target
-
-# C
-*.dSYM/
-
-# ZendFramework
-vendor/
-data/logs/
-data/cache/
-data/sessions/
-data/tmp/
-temp/
-data/DoctrineORMModule/Proxy/
-data/DoctrineORMModule/cache/
-demos/
-extras/documentation
-
-# PlayFramework
-bin/
-/db
-/lib/
-/logs/
-/modules
-/project/project
-/project/target
-/target
-tmp/
-test-result
-/dist/
-
-# SugarCRM
-/cache/*
-/custom/history/
-/custom/modulebuilder/
-/custom/working/
-/custom/modules/*/Ext/
-/custom/application/Ext/
-/upload/*
-/upload_backup/
-
-# ExpressionEngine
-images/avatars/
-images/captchas/
-images/smileys/
-images/member_photos/
-images/signature_attachments/
-images/pm_attachments/
-sized/
-thumbs/
-_thumbs/
-*/expressionengine/cache/*
-
-# KiCad
-*~
-_autosave-*
-fp-info-cache
-
-# Plone
-bin/
-build/
-develop-eggs/
-downloads/
-eggs/
-fake-eggs/
-parts/
-dist/
-var/
-
-# D
-docs/
-
-# CFWheels
-plugins/**/*
-files
-db/sql
-javascripts/bundles
-stylesheets/bundles
-
-# Yeoman
-node_modules/
-bower_components/
-build/
-dist/
-
-# Nanoc
-output/
-tmp/nanoc/
-
-# Erlang
-rel/example_project
-deps
-_build/
-_checkouts/
-
-# VisualStudio
-[Dd]ebug/
-[Dd]ebugPublic/
-[Rr]elease/
-[Rr]eleases/
-x64/
-x86/
-[Ww][Ii][Nn]32/
-[Aa][Rr][Mm]/
-[Aa][Rr][Mm]64/
-bld/
-[Bb]in/
-[Oo]bj/
-[Ll]og/
-[Ll]ogs/
-Generated\ Files/
-[Tt]est[Rr]esult*/
-[Dd]ebugPS/
-[Rr]eleasePS/
-BenchmarkDotNet.Artifacts/
-artifacts/
-_Chutzpah*
-ipch/
-$tf/
-_ReSharper*/
-_TeamCity*
-_NCrunch_*
-nCrunchTemp_*
-AutoTest.Net/
-[Ee]xpress/
-DocProject/buildhelp/
-DocProject/Help/Html2
-DocProject/Help/html
-publish/
-PublishScripts/
-**/[Pp]ackages/*
-!**/[Pp]ackages/build/
-csx/
-ecf/
-rcf/
-AppPackages/
-BundleArtifacts/
-!?*.[Cc]ache/
-ClientBin/
-~$*
-*~
-Generated_Code/
-_UpgradeReport_Files/
-Backup*/
-ServiceFabricBackup/
-FakesAssemblies/
-node_modules/
-**/*.HTMLClient/GeneratedArtifacts
-**/*.DesktopClient/GeneratedArtifacts
-**/*.Server/GeneratedArtifacts
-_Pvt_Extensions
-paket-files/
-__pycache__/
-OpenCover/
-ASALocalRun/
-healthchecksdb
-MigrationBackup/
-
-# Perl
-!Build/
-cover_db/
-_build/
-Build
-inc/
-/blib/
-/_eumm/
-/Makefile
-/pm_to_blib
-
-# OCaml
-_build/
-_opam/
-
-# Agda
-MAlonzo/**
-
-# Clojure
-/lib/
-/classes/
-/target/
-/checkouts/
-
-# OpenCart
-download/
-image/data/
-image/cache/
-system/cache/
-system/logs/
-system/storage/
-vqmod/logs/*
-vqmod/vqcache/*
-
-# Kotlin
-hs_err_pid*
-
-# Julia
-deps/downloads/
-deps/usr/
-docs/build/
-docs/site/
-
-# Opa
-_build
-_tracks
-opa-debug-js
-
-# Windows
-$RECYCLE.BIN/
-
-# MonoDevelop
-test-results/
-
-# JDeveloper
-temp/
-classes/
-deploy/
-javadoc/
-
-# CodeKit
-/min
-
-# VirtualEnv
-[Bb]in
-[Ii]nclude
-[Ll]ib
-[Ll]ib64
-[Ll]ocal
-[Ss]cripts
-
-# Tags
-TAGS
-!TAGS/
-tags
-!tags/
-GTAGS
-GRTAGS
-GPATH
-GSYMS
-
-# Virtuoso
-lvsRunDir/*
-drcRunDir/*
-
-# PSoCCreator
-Debug/
-Release/
-Export/
-*/codegentemp
-*/Generated_Source
-
-# Calabash
-rerun/
-reports/
-screenshots/
-test-servers/
-vendor
-
-# TextMate
-tmtags
-
-# Lazarus
-backup/
-lib/
-*.app/
-
-# macOS
-Icon
-
-Network Trash Folder
-Temporary Items
-
-# EiffelStudio
-EIFGENs
-
-# MATLAB
-helpsearch*/
-slprj/
-sccprj/
-codegen/
-octave-workspace
-
-# FlexBuilder
-bin/
-bin-debug/
-bin-release/
-
-# Eclipse
-bin/
-tmp/
-
-# Vim
-*~
-tags
-
-# SynopsysVCS
-simv
-simv.daidir/
-simv.db.dir/
-simv.vdb/
-urgReport/
-DVEfiles/
-
-# Emacs
-*~
-\#*\#
-auto-save-list
-tramp
-*_archive
-/eshell/history
-/eshell/lastdir
-/elpa/
-/auto/
-dist/
-/server/
-
-# Momentics
-x86/
-arm/
-arm-p/
-
-# Linux
-*~
-
-# SublimeText
-Package Control.cache/
-Package Control.ca-certs/
-
-# CVS
-/CVS/*
-**/CVS/*
-
-# Dreamweaver
-_notes
-_compareTemp
-configs/
-
-# Xcode
-xcuserdata/
-build/
-DerivedData/
-
-# WebMethods
-**/IntegrationServer/datastore/
-**/IntegrationServer/db/
-**/IntegrationServer/DocumentStore/
-**/IntegrationServer/lib/
-**/IntegrationServer/logs/
-**/IntegrationServer/replicate/
-**/IntegrationServer/sdk/
-**/IntegrationServer/support/
-**/IntegrationServer/update/
-**/IntegrationServer/userFtpRoot/
-**/IntegrationServer/web/
-**/IntegrationServer/WmRepository4/
-**/IntegrationServer/XAStore/
-**/IntegrationServer/packages/Wm*/
-
-# ModelSim
-[_@]*
-wlf*
-cov*/
-transcript*
-
-# NetBeans
-**/nbproject/private/
-build/
-nbbuild/
-dist/
-nbdist/
-
-# JetBrains
-cmake-build-*/
-out/
-
-# Octave
-helpsearch*/
-slprj/
-sccprj/
-codegen/
-octave-workspace
-
-# SBT
-dist/*
-target/
-lib_managed/
-project/boot/
-project/plugins/project/
-
-# XilinxISE
-iseconfig/
-xlnx_auto_0_xdb/
-xst/
-_ngo/
-_xmsgs/
-
-# Smalltalk
-/package-cache
-/play-cache
-/play-stash
-/github-cache
-
-# Magento
-/media/*
-!/media/customer
-/media/customer/*
-!/media/dhl
-/media/dhl/*
-!/media/downloadable
-/media/downloadable/*
-!/media/xmlconnect
-/media/xmlconnect/*
-!/media/xmlconnect/custom
-/media/xmlconnect/custom/*
-!/media/xmlconnect/original
-/media/xmlconnect/original/*
-!/media/xmlconnect/system
-/media/xmlconnect/system/*
-/var/*
-!/var/package
-/var/package/*
-
-# TurboGears2
-data/*
-dist
-build
-
-# ChefCookbook
-/cookbooks
-bin/*
-
-# TeX
-latex.out/
-*-gnuplottex-*
-*-tikzDictionary
-_minted*
-sympy-plots-for-*.tex/
-pythontex-files-*/
-TSWLatexianTemp*
-*~[0-9]*
-
-# Rails
-/public/system
-/coverage/
-/spec/tmp
-/log/*
-/tmp/*
-/vendor/bundle
-/vendor/assets/bower_components
-node_modules/
-/public/packs
-/public/packs-test
-/public/assets
-/storage/*
-/public/uploads
-
-# Dart
-build/
-doc/api/
-
-# Ruby
-/coverage/
-/InstalledFiles
-/pkg/
-/spec/reports/
-/test/tmp/
-/test/version_tmp/
-/tmp/
-build/
-build-iPhoneOS/
-build-iPhoneSimulator/
-/_yardoc/
-/doc/
-/rdoc/
-/vendor/bundle
-/lib/bundler/man/
-
-# Textpattern
-rpc/
-sites/site*/admin/
-sites/site*/private/
-sites/site*/public/admin/
-sites/site*/public/setup/
-sites/site*/public/theme/
-textpattern/
-
-# Autotools
-/ar-lib
-/mdate-sh
-/py-compile
-/test-driver
-/ylwrap
-/compile
-/configure
-/depcomp
-/install-sh
-/missing
-/stamp-h1
-Makefile
-
-# Qooxdoo
-cache
-cache-downloads
-inspector
-api
-
-# Maven
-target/
-
-# Waf
-waf-*-*/
-waf3-*-*/
-
-# Qt
-Makefile*
-*build-*
-
-# ForceDotCom
-Referenced Packages
-
-# SeamGen
-/bootstrap/data
-/bootstrap/tmp
-/classes/
-/dist/
-/exploded-archives/
-/test-build/
-/test-output/
-/test-report/
-/target/
-
-# RhodesRhomobile
-rholog-*
-sim-*
-bin/libs
-bin/RhoBundle
-bin/tmp
-bin/target
-
-# Xojo
-Builds*
-Debug*/Debug*\ Libs
-
-# Haskell
-dist
-dist-*
-cabal-dev
-
-# Elm
-elm-stuff
-repl-temp-*
-
-# AppceleratorTitanium
-build/
-
-# CraftCMS
-/craft/storage/*
-!/craft/storage/rebrand
-
-# Gradle
-**/build/
-
-# Elisp
-*~

+ 1 - 0
.gitignore

@@ -0,0 +1 @@
+.vscode/settings.json

+ 0 - 8
.idea/.gitignore

@@ -1,8 +0,0 @@
-# Default ignored files
-/shelf/
-/workspace.xml
-# Editor-based HTTP Client requests
-/httpRequests/
-# Datasource local storage ignored files
-/dataSources/
-/dataSources.local.xml

+ 0 - 8
.idea/modules.xml

@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="ProjectModuleManager">
-    <modules>
-      <module fileurl="file://$PROJECT_DIR$/.idea/wcagUnderstanding.iml" filepath="$PROJECT_DIR$/.idea/wcagUnderstanding.iml" />
-    </modules>
-  </component>
-</project>

+ 0 - 6
.idea/vcs.xml

@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="VcsDirectoryMappings">
-    <mapping directory="$PROJECT_DIR$" vcs="Git" />
-  </component>
-</project>

+ 0 - 12
.idea/wcagUnderstanding.iml

@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module type="WEB_MODULE" version="4">
-  <component name="NewModuleRootManager">
-    <content url="file://$MODULE_DIR$">
-      <excludeFolder url="file://$MODULE_DIR$/temp" />
-      <excludeFolder url="file://$MODULE_DIR$/.tmp" />
-      <excludeFolder url="file://$MODULE_DIR$/tmp" />
-    </content>
-    <orderEntry type="inheritedJdk" />
-    <orderEntry type="sourceFolder" forTests="false" />
-  </component>
-</module>

+ 0 - 3
CHANGELOG.md

@@ -1,3 +0,0 @@
-# Changes to tests
-## 09/11/2021
-- Updated datatables test replacing summary attribute with caption element

File diff suppressed because it is too large
+ 36 - 1171
data/content.js


+ 0 - 1056
data/json-ES.js

@@ -1,1056 +0,0 @@
-const wcagObj= {
-  "latestWCAGversion": "2.1",
-  "tests": [
-    {
-      "successCriteria": "1.1.1 Contenido no textual",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/non-text-content.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "all <img> elements must have an alt attribute",
-      "category": [
-        "content"
-      ]
-    },
-    {
-      "successCriteria": "1.1.1 Contenido no textual",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/non-text-content.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "all descriptive <img> elements must have a succinct description of the image using alt text, aria-label or aria-labelledby",
-      "category": [
-        "content"
-      ]
-    },
-    {
-      "successCriteria": "1.1.1 Contenido no textual",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/non-text-content.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "all complex descriptive <img> element descriptions must be provided adjacent to the image or on a separate page",
-      "category": [
-        "content"
-      ]
-    },
-    {
-      "successCriteria": "1.1.1 Contenido no textual",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/non-text-content.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "all controls have an accessible name describing its purpose (often but not always a programmatically linked label)",
-      "category": [
-        "custom-controls",
-        "forms-and-UI"
-      ]
-    },
-    {
-      "successCriteria": "1.1.1 Contenido no textual",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/non-text-content.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "two different modalities of CAPTCHA are provided",
-      "category": [
-        "content"
-      ]
-    },
-    {
-      "successCriteria": "1.1.1 Contenido no textual",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/non-text-content.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "or, providing access to a human to bypass CAPTCHA",
-      "category": [
-        "content"
-      ]
-    },
-    {
-      "successCriteria": "1.1.1 Contenido no textual",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/non-text-content.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "or, not requiring CAPTCHA for authorised users",
-      "category": [
-        "content"
-      ]
-    },
-    {
-      "successCriteria": "1.1.1 Contenido no textual",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/non-text-content.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "a text alternative is provided for charts and graphs",
-      "category": [
-        "content"
-      ]
-    },
-    {
-      "successCriteria": "1.1.1 Contenido no textual",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/non-text-content.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "a text or exercise invalid if presented in text has text identification describing the non-text content",
-      "category": [
-        "content"
-      ]
-    },
-    {
-      "successCriteria": "1.2.1 Sólo audio y sólo vídeo (pregrabado)",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/audio-only-and-video-only-prerecorded.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "pre-recorded video with no dialogue must come with easily reached text or audio description of what happens visually",
-      "category": [
-        "audio-video"
-      ]
-    },
-    {
-      "successCriteria": "1.2.1 Sólo audio y sólo vídeo (pregrabado)",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/audio-only-and-video-only-prerecorded.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "pre-recorded audio must come with easily reached text transcript",
-      "category": [
-        "audio-video"
-      ]
-    },
-    {
-      "successCriteria": "1.2.2 Subtítulos (pregrabados)",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/captions-prerecorded.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "video must come with synchronised captions of dialogue, who is speaking and non-speech information including meaningful sound effects",
-      "category": [
-        "audio-video"
-      ]
-    },
-    {
-      "successCriteria": "1.2.3 Audiodescripción o medios alternativos (pregrabados)",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/audio-description-or-media-alternative-prerecorded.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "pre-recorded video containing essential information conveyed visually must come with easily reached full-text alternative describing important visual details",
-      "category": [
-        "audio-video"
-      ]
-    },
-    {
-      "successCriteria": "1.2.3 Audiodescripción o medios alternativos (pregrabados)",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/audio-description-or-media-alternative-prerecorded.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "or, an audio description track is provided",
-      "category": [
-        "audio-video"
-      ]
-    },
-    {
-      "successCriteria": "1.2.4 Subtítulos (en directo)",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/captions-live.html",
-      "wcagLevel": "AA",
-      "wcagVersion": "2.0",
-      "test": "live audio content must have text-based synchronised captions",
-      "category": [
-        "audio-video"
-      ]
-    },
-    {
-      "successCriteria": "1.2.5 Descripción de audio (pregrabada)",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/audio-description-prerecorded.html",
-      "wcagLevel": "AA",
-      "wcagVersion": "2.0",
-      "test": "video containing essential information conveyed visually must have a synchronised audio description soundtrack",
-      "category": [
-        "audio-video"
-      ]
-    },
-    {
-      "successCriteria": "1.3.1 Información y relaciones",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/info-and-relationships.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "elements must be used according to their semantics not how they appear",
-      "category": [
-        "content"
-      ]
-    },
-    {
-      "successCriteria": "1.3.1 Información y relaciones",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/info-and-relationships.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "data tables must have header cells created using the <th> element",
-      "category": [
-        "content"
-      ]
-    },
-    {
-      "successCriteria": "1.3.1 Información y relaciones",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/info-and-relationships.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "data tables must have a caption element with a concise description of the contents",
-      "category": [
-        "content"
-      ]
-    },
-    {
-      "successCriteria": "1.3.1 Información y relaciones",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/info-and-relationships.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "labels must be programmatically associated to form controls using a <label>, aria-labelledby, aria-label",
-      "category": [
-        "forms-and-UI"
-      ]
-    },
-    {
-      "successCriteria": "1.3.1 Información y relaciones",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/info-and-relationships.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "extra input information is programmatically marked up",
-      "category": [
-        "forms-and-UI"
-      ]
-    },
-    {
-      "successCriteria": "1.3.1 Información y relaciones",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/info-and-relationships.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "two or more radio buttons, or checkbox controls must be grouped using a <fieldset>",
-      "category": [
-        "content"
-      ]
-    },
-    {
-      "successCriteria": "1.3.1 Información y relaciones",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/info-and-relationships.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "and, the <fieldset> must have a succinct <legend> element",
-      "category": [
-        "content"
-      ]
-    },
-    {
-      "successCriteria": "1.3.1 Información y relaciones",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/info-and-relationships.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "headings must be marked up using heading elements",
-      "category": [
-        "content"
-      ]
-    },
-    {
-      "successCriteria": "1.3.1 Información y relaciones",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/info-and-relationships.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "lists must be marked up using <ul>, <ol>, <dl> elements",
-      "category": [
-        "content"
-      ]
-    },
-    {
-      "successCriteria": "1.3.1 Información y relaciones",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/info-and-relationships.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "landmark regions have been correctly applied",
-      "category": [
-        "structure"
-      ]
-    },
-    {
-      "successCriteria": "1.3.2 Secuencia significativa",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/meaningful-sequence.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "the reading order and navigation of content must be logical and intuitive",
-      "category": [
-        "structure"
-      ]
-    },
-    {
-      "successCriteria": "1.3.3 Características sensoriales",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/sensory-characteristics.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "instructions for users must rely on more than solely visual cues",
-      "category": [
-        "content"
-      ]
-    },
-    {
-      "successCriteria": "1.3.3 Características sensoriales",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/sensory-characteristics.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "instructions for users must rely on more than sound or auditory cues",
-      "category": [
-        "content"
-      ]
-    },
-    {
-      "successCriteria": "1.3.4 Orientación",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/orientation.html",
-      "wcagLevel": "AA",
-      "wcagVersion": "2.1",
-      "test": "content orientation is not locked to either landscape or portrait unless essential for functionality",
-      "category": [
-        "structure"
-      ]
-    },
-    {
-      "successCriteria": "1.3.5 Identificar el propósito de la entrada",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/identify-input-purpose.html",
-      "wcagLevel": "AA",
-      "wcagVersion": "2.1",
-      "test": "the autocomplete attribute is applied to common user input fields",
-      "category": [
-        "forms-and-UI"
-      ]
-    },
-    {
-      "successCriteria": "1.3.5 Identificar el propósito de la entrada",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/identify-input-purpose.html",
-      "wcagLevel": "AA",
-      "wcagVersion": "2.1",
-      "test": "and, the autocomplete attribute value uses the correct https://www.w3.org/TR/WCAG21/#input-purposes",
-      "category": [
-        "forms-and-UI"
-      ]
-    },
-    {
-      "successCriteria": "1.4.1 Uso del color",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/use-of-color.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "colour must not be the sole method of conveying information or distinguishing visual elements",
-      "category": [
-        "colour"
-      ]
-    },
-    {
-      "successCriteria": "1.4.1 Uso del color",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/use-of-color.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "link colour contrast is at least 3:1 and has an additional non-colour effect when hovered or in focus",
-      "category": [
-        "colour"
-      ]
-    },
-    {
-      "successCriteria": "1.4.2 Control de audio",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/audio-control.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "a mechanism exists to stop, pause, mute or adjust audio which plays for longer than 3 seconds",
-      "category": [
-        "audio-video"
-      ]
-    },
-    {
-      "successCriteria": "1.4.3 Contraste (mínimo)",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum.html",
-      "wcagLevel": "AA",
-      "wcagVersion": "2.0",
-      "test": "text smaller than 24px and not bold has a minimum contrast ratio of 4.5:1 with the background colour",
-      "category": [
-        "font-size",
-        "structure"
-      ]
-    },
-    {
-      "successCriteria": "1.4.3 Contraste (mínimo)",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum.html",
-      "wcagLevel": "AA",
-      "wcagVersion": "2.0",
-      "test": "text smaller than 18.6px and bold has a minimum contrast ratio of 4.5:1 with the background colour",
-      "category": [
-        "font-size",
-        "structure"
-      ]
-    },
-    {
-      "successCriteria": "1.4.3 Contraste (mínimo)",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum.html",
-      "wcagLevel": "AA",
-      "wcagVersion": "2.0",
-      "test": "text at least 24px and not bold has a minimum contrast ratio of 3:1 with the background colour",
-      "category": [
-        "font-size",
-        "structure"
-      ]
-    },
-    {
-      "successCriteria": "1.4.3 Contraste (mínimo)",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum.html",
-      "wcagLevel": "AA",
-      "wcagVersion": "2.0",
-      "test": "text at least 18.6px and bold has a minimum contrast ratio of 3:1 with the background colour",
-      "category": [
-        "font-size",
-        "structure"
-      ]
-    },
-    {
-      "successCriteria": "1.4.4 Cambiar el tamaño del texto",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/resize-text.html",
-      "wcagLevel": "AA",
-      "wcagVersion": "2.0",
-      "test": "all text (including controls) is readable at 200% browser zoom",
-      "category": [
-        "font-size",
-        "structure"
-      ]
-    },
-    {
-      "successCriteria": "1.4.5 Imágenes de texto",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/images-of-text.html",
-      "wcagLevel": "AA",
-      "wcagVersion": "2.0",
-      "test": "no images of text exists unless essential",
-      "category": [
-        "content"
-      ]
-    },
-    {
-      "successCriteria": "1.4.10 Reflujo",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/reflow.html",
-      "wcagLevel": "AA",
-      "wcagVersion": "2.1",
-      "test": "no horizontal scrollbars are shown at 400% browser zoom",
-      "category": [
-        "structure"
-      ]
-    },
-    {
-      "successCriteria": "1.4.11 Contraste sin texto",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/non-text-contrast.html",
-      "wcagLevel": "AA",
-      "wcagVersion": "2.1",
-      "test": "if a border is the only way to identify an active control it must have a minimum 3:1 contrast with the adjacent colour",
-      "category": [
-        "colour",
-        "forms-and-UI"
-      ]
-    },
-    {
-      "successCriteria": "1.4.11 Contraste sin texto",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/non-text-contrast.html",
-      "wcagLevel": "AA",
-      "wcagVersion": "2.1",
-      "test": "visual state of active control must have a minimum 3:1 contrast with adjacent colour",
-      "category": [
-        "colour"
-      ]
-    },
-    {
-      "successCriteria": "1.4.11 Contraste sin texto",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/non-text-contrast.html",
-      "wcagLevel": "AA",
-      "wcagVersion": "2.1",
-      "test": "parts of graphic required to understand the content have a minimum 3:1 contrast with adjacent colour",
-      "category": [
-        "colour"
-      ]
-    },
-    {
-      "successCriteria": "1.4.12 Espaciado del texto",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/text-spacing.html",
-      "wcagLevel": "AA",
-      "wcagVersion": "2.1",
-      "test": "there is no loss of content or functionality when the https://dylanb.github.io/bookmarklets.html is applied",
-      "category": [
-        "structure"
-      ]
-    },
-    {
-      "successCriteria": "1.4.13 Contenido al pasar por encima o enfocar",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/content-on-hover-or-focus.html",
-      "wcagLevel": "AA",
-      "wcagVersion": "2.1",
-      "test": "additional content triggered on hover or keyboard focus can be dismissed without moving mouse or keyboard focus",
-      "category": [
-        "dynamic-content",
-        "keyboard"
-      ]
-    },
-    {
-      "successCriteria": "1.4.13 Contenido al pasar por encima o enfocar",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/content-on-hover-or-focus.html",
-      "wcagLevel": "AA",
-      "wcagVersion": "2.1",
-      "test": "and, if hover triggers the content pointer can be moved to hovered content without disappearing",
-      "category": [
-        "dynamic-content",
-        "keyboard"
-      ]
-    },
-    {
-      "successCriteria": "1.4.13 Contenido al pasar por encima o enfocar",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/content-on-hover-or-focus.html",
-      "wcagLevel": "AA",
-      "wcagVersion": "2.1",
-      "test": "and, additional content remains visible until hover or focus trigger is removed or user dismisses it",
-      "category": [
-        "dynamic-content",
-        "keyboard"
-      ]
-    },
-    {
-      "successCriteria": "2.1.1 Teclado",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/keyboard.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "all functionality must be available from the keyboard",
-      "category": [
-        "custom-controls",
-        "forms-and-UI",
-        "keyboard"
-      ]
-    },
-    {
-      "successCriteria": "2.1.1 Teclado",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/keyboard.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "and, shortcut and access keys must not conflict with browser or assistive technology shortcuts",
-      "category": [
-        "custom-controls",
-        "forms-and-UI",
-        "keyboard"
-      ]
-    },
-    {
-      "successCriteria": "2.1.2 Sin trampa de teclado",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/no-keyboard-trap.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "keyboard focus must not become trapped in a page element",
-      "category": [
-        "keyboard"
-      ]
-    },
-    {
-      "successCriteria": "2.1.2 Sin trampa de teclado",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/no-keyboard-trap.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "and, must be able to navigate to and from all interactive elements using only the keyboard",
-      "category": [
-        "keyboard"
-      ]
-    },
-    {
-      "successCriteria": "2.1.4 Atajos de teclas de caracteres",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/character-key-shortcuts.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.1",
-      "test": "character key shortcuts can be turned off",
-      "category": [
-        "keyboard"
-      ]
-    },
-    {
-      "successCriteria": "2.1.4 Atajos de teclas de caracteres",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/character-key-shortcuts.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.1",
-      "test": "or, character key shortcuts can be remapped",
-      "category": [
-        "keyboard"
-      ]
-    },
-    {
-      "successCriteria": "2.1.4 Atajos de teclas de caracteres",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/character-key-shortcuts.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.1",
-      "test": "or, character key shortcuts are only active when the relevant UI component is in focus",
-      "category": [
-        "keyboard"
-      ]
-    },
-    {
-      "successCriteria": "2.2.1 Cronometraje ajustable",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/timing-adjustable.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "page time limits have an option to turn off, adjust or extend the time limit",
-      "category": [
-        "dynamic-content"
-      ]
-    },
-    {
-      "successCriteria": "2.2.2 Pausar Detener Ocultar",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/pause-stop-hide.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "content that moves, blinks or scrolls automatically lasting longer than 5 seconds must be able to be paused, stopped or hidden",
-      "category": [
-        "dynamic-content"
-      ]
-    },
-    {
-      "successCriteria": "2.3.1 Tres destellos o por debajo del umbral",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/three-flashes-or-below-threshold.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "page content must not flash more than 3 times per second",
-      "category": [
-        "dynamic-content"
-      ]
-    },
-    {
-      "successCriteria": "2.4.1 Bloques de derivación",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/bypass-blocks.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "skip links are provided to avoid page elements that repeat across multiple pages",
-      "category": [
-        "structure"
-      ]
-    },
-    {
-      "successCriteria": "2.4.1 Bloques de derivación",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/bypass-blocks.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "or, a proper heading structure is provided",
-      "category": [
-        "structure"
-      ]
-    },
-    {
-      "successCriteria": "2.4.1 Bloques de derivación",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/bypass-blocks.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "or, aria/HTML5 landmarks are provided",
-      "category": [
-        "structure"
-      ]
-    },
-    {
-      "successCriteria": "2.4.1 Bloques de derivación",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/bypass-blocks.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "iframes must have descriptive, informative and unique titles",
-      "category": [
-        "structure"
-      ]
-    },
-    {
-      "successCriteria": "2.4.2 Página titulada",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/page-titled.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "page <title> must be descriptive and informative",
-      "category": [
-        "structure"
-      ]
-    },
-    {
-      "successCriteria": "2.4.3 Orden de concentración",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/focus-order.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "the navigation order of link, form elements and interactive components must be logical",
-      "category": [
-        "structure"
-      ]
-    },
-    {
-      "successCriteria": "2.4.4 Propósito del enlace (en contexto)",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/link-purpose-in-context.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "each link is understandable solely from the displayed text",
-      "category": [
-        "content",
-        "link"
-      ]
-    },
-    {
-      "successCriteria": "2.4.4 Propósito del enlace (en contexto)",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/link-purpose-in-context.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "or, each link is understandable from the immediate surrounding content",
-      "category": [
-        "content",
-        "link"
-      ]
-    },
-    {
-      "successCriteria": "2.4.5 Vías múltiples",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/multiple-ways.html",
-      "wcagLevel": "AA",
-      "wcagVersion": "2.0",
-      "test": "at least 2 of related pages, table of contents, site map, site search, or list of web pages must be provided for non-workflows",
-      "category": [
-        "content"
-      ]
-    },
-    {
-      "successCriteria": "2.4.6 Títulos y etiquetas",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/headings-and-labels.html",
-      "wcagLevel": "AA",
-      "wcagVersion": "2.0",
-      "test": "labels for form controls and interactive controls must be informative",
-      "category": [
-        "custom-controls",
-        "forms-and-UI"
-      ]
-    },
-    {
-      "successCriteria": "2.4.6 Títulos y etiquetas",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/headings-and-labels.html",
-      "wcagLevel": "AA",
-      "wcagVersion": "2.0",
-      "test": "page headings must be informative",
-      "category": [
-        "structure"
-      ]
-    },
-    {
-      "successCriteria": "2.4.7 Foco visible",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/focus-visible.html",
-      "wcagLevel": "AA",
-      "wcagVersion": "2.0",
-      "test": "all interactive elements have a visible focus effect",
-      "category": [
-        "custom-controls",
-        "forms-and-UI"
-      ]
-    },
-    {
-      "successCriteria": "2.5.1 Gestos con el puntero",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/pointer-gestures.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.1",
-      "test": "path-based multi-point functionality can be operated with single-point actions",
-      "category": [
-        "custom-controls"
-      ]
-    },
-    {
-      "successCriteria": "2.5.2 Cancelación de punteros",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/pointer-cancellation.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.1",
-      "test": "functionality operated by a single mouse click does not use the down-event",
-      "category": [
-        "custom-controls"
-      ]
-    },
-    {
-      "successCriteria": "2.5.2 Cancelación de punteros",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/pointer-cancellation.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.1",
-      "test": "or, the functionality can be undone",
-      "category": [
-        "custom-controls"
-      ]
-    },
-    {
-      "successCriteria": "2.5.2 Cancelación de punteros",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/pointer-cancellation.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.1",
-      "test": "or, the up-event reverses the action of the down-event",
-      "category": [
-        "custom-controls"
-      ]
-    },
-    {
-      "successCriteria": "2.5.2 Cancelación de punteros",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/pointer-cancellation.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.1",
-      "test": "or, the down event is essential for the function (i.e. onscreen keyboard)",
-      "category": [
-        "custom-controls"
-      ]
-    },
-    {
-      "successCriteria": "2.5.3 Etiqueta en el nombre",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/label-in-name.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.1",
-      "test": "UI controls which include a visible label have a matching full (or partial) accessible name",
-      "category": [
-        "custom-controls",
-        "forms-and-UI"
-      ]
-    },
-    {
-      "successCriteria": "2.5.4 Actuación del movimiento",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/motion-actuation.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.1",
-      "test": "functionality triggered by a users motion or gestures can be turned off",
-      "category": [
-        "structure"
-      ]
-    },
-    {
-      "successCriteria": "2.5.4 Actuación del movimiento",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/motion-actuation.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.1",
-      "test": "and, functionality can be operated without device motion or user gestures",
-      "category": [
-        "structure"
-      ]
-    },
-    {
-      "successCriteria": "3.1.1 Idioma de la página",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/language-of-page.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "each page must have a lang attribute",
-      "category": [
-        "structure"
-      ]
-    },
-    {
-      "successCriteria": "3.1.2 Lengua de las partes",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/language-of-parts.html",
-      "wcagLevel": "AA",
-      "wcagVersion": "2.0",
-      "test": "content in a different language than the page default must be identified using the lang attribute",
-      "category": [
-        "structure"
-      ]
-    },
-    {
-      "successCriteria": "3.2.1 Enfoque",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/on-focus.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "when an elements receives focus it must not result in a substantial clientside change to the page",
-      "category": [
-        "forms-and-UI"
-      ]
-    },
-    {
-      "successCriteria": "3.2.2 En la entrada",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/on-input.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "user initiated input must not result in a substantial clientside change to the page",
-      "category": [
-        "forms-and-UI"
-      ]
-    },
-    {
-      "successCriteria": "3.2.3 Navegación coherente",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/consistent-navigation.html",
-      "wcagLevel": "AA",
-      "wcagVersion": "2.0",
-      "test": "repeated navigation patterns are applied in the same relative order across multiple pages",
-      "category": [
-        "structure"
-      ]
-    },
-    {
-      "successCriteria": "3.2.4 Identificación coherente",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/consistent-identification.html",
-      "wcagLevel": "AA",
-      "wcagVersion": "2.0",
-      "test": "elements with the same functionality are applied consistently across multiple pages",
-      "category": [
-        "structure"
-      ]
-    },
-    {
-      "successCriteria": "3.3.1 Identificación de errores",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/error-identification.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "intuitive text based alerts must be provided for form validation cues and errors",
-      "category": [
-        "forms-and-UI"
-      ]
-    },
-    {
-      "successCriteria": "3.3.2 Etiquetas o instrucciones",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/labels-or-instructions.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "a text label (not necessarily a label element) must be provided for form fields",
-      "category": [
-        "forms-and-UI"
-      ]
-    },
-    {
-      "successCriteria": "3.3.2 Etiquetas o instrucciones",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/labels-or-instructions.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "sufficient instructions must be provided for form fields",
-      "category": [
-        "forms-and-UI"
-      ]
-    },
-    {
-      "successCriteria": "3.3.2 Etiquetas o instrucciones",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/labels-or-instructions.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "a text label (not necessarily a label element), instructions or error message must be provided for required form fields",
-      "category": [
-        "forms-and-UI"
-      ]
-    },
-    {
-      "successCriteria": "3.3.3 Sugerencia de error",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/error-suggestion.html",
-      "wcagLevel": "AA",
-      "wcagVersion": "2.0",
-      "test": "all clientside detected errors provide suggestions to fix the errors",
-      "category": [
-        "forms-and-UI"
-      ]
-    },
-    {
-      "successCriteria": "3.3.3 Sugerencia de error",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/error-suggestion.html",
-      "wcagLevel": "AA",
-      "wcagVersion": "2.0",
-      "test": "all clientside detected errors are provided in an accessible manner",
-      "category": [
-        "forms-and-UI"
-      ]
-    },
-    {
-      "successCriteria": "3.3.4 Prevención de errores (datos financieros legales)",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/error-prevention-legal-financial-data.html",
-      "wcagLevel": "AA",
-      "wcagVersion": "2.0",
-      "test": "a mechanism exists to reverse any legal, financial or data transaction mistakes",
-      "category": [
-        "content"
-      ]
-    },
-    {
-      "successCriteria": "3.3.4 Prevención de errores (datos financieros legales)",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/error-prevention-legal-financial-data.html",
-      "wcagLevel": "AA",
-      "wcagVersion": "2.0",
-      "test": "or, a mechanism exists to review and correct any legal, financial or data transaction",
-      "category": [
-        "content"
-      ]
-    },
-    {
-      "successCriteria": "4.1.1 Análisis sintáctico",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/parsing.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "HTML elements must have complete start and end tags",
-      "category": [
-        "structure"
-      ]
-    },
-    {
-      "successCriteria": "4.1.1 Análisis sintáctico",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/parsing.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "elements must be nested according to specification",
-      "category": [
-        "structure"
-      ]
-    },
-    {
-      "successCriteria": "4.1.1 Análisis sintáctico",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/parsing.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "elements must not contain duplicate attributes",
-      "category": [
-        "structure"
-      ]
-    },
-    {
-      "successCriteria": "4.1.1 Análisis sintáctico",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/parsing.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "element ID's must be unique",
-      "category": [
-        "structure"
-      ]
-    },
-    {
-      "successCriteria": "4.1.2 Nombre Función Valor",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/name-role-value.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "user interface elements are used according to their specification",
-      "category": [
-        "custom-controls",
-        "forms-and-UI"
-      ]
-    },
-    {
-      "successCriteria": "4.1.2 Nombre Función Valor",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/name-role-value.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "or, custom controls follow the https://www.w3.org/TR/wai-aria-practices-1.1/",
-      "category": [
-        "custom-controls"
-      ]
-    },
-    {
-      "successCriteria": "4.1.2 Nombre Función Valor",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/name-role-value.html",
-      "wcagLevel": "A",
-      "wcagVersion": "2.0",
-      "test": "a programmatic name, role and value exists for all user interface components",
-      "category": [
-        "custom-controls",
-        "forms-and-UI"
-      ]
-    },
-    {
-      "successCriteria": "4.1.3 Mensajes de estado",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/status-messages.html",
-      "wcagLevel": "AA",
-      "wcagVersion": "2.1",
-      "test": "all client-side updated success or action outcome messages use role=status",
-      "category": [
-        "custom-controls"
-      ]
-    },
-    {
-      "successCriteria": "4.1.3 Mensajes de estado",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/status-messages.html",
-      "wcagLevel": "AA",
-      "wcagVersion": "2.1",
-      "test": "all client-side updated error or warning messages use role=alert",
-      "category": [
-        "custom-controls"
-      ]
-    },
-    {
-      "successCriteria": "4.1.3 Mensajes de estado",
-      "link": "https://www.w3.org/WAI/WCAG21/Understanding/status-messages.html",
-      "wcagLevel": "AA",
-      "wcagVersion": "2.1",
-      "test": "all client-side updated log or progress messages use role=log",
-      "category": [
-        "custom-controls"
-      ]
-    }
-  ]
-}

+ 60 - 23
index.html

@@ -27,7 +27,9 @@
 			float: left;
 			padding: 2px;
 		}
-
+		#columns li {
+    	padding-right: 30px;
+		}
 	</style>
 </head>
 <body>
@@ -35,9 +37,12 @@
 	<div class="container">
 		
 		<div class="row">
-			<fieldset class="col-12 row bg-light justify-content-end btns" style="padding:20px">
+			<div class="col-6 row btns" style="padding:20px">
+				<h1>WCAG</h1>
+			</div>
+			<fieldset class="col-6 row justify-content-end btns" style="padding:20px">
 				<legend class="col" style="text-align: right;">Idioma</legend>
-				<ul class="col-4">
+				<ul class="col">
 					<li><button id="cat" type="button" onclick="btnLang(this)" class="btn btn-secondary btn-sm language">Català</button></li>
 					<li><button id="es" type="button" onclick="btnLang(this)" class="btn btn-secondary btn-sm language">Español</button></li>
 					<li><button id="en" type="button" onclick="btnLang(this)" class="btn btn-secondary btn-sm language">English</button></li>
@@ -45,18 +50,15 @@
 			</fieldset>
 		</div>
 
-		<h1>WCAG</h1>
-
 		<div class="row">
 			<div class="col-12">
-				<p role="status">
-					Showing <span class="badge bg-primary" id="returnedResults">78</span> tests, version <span class="badge bg-primary" id="version">All</span>, categorised by <span class="badge bg-primary" id="filter">all</span> success criteria. Level <span class="badge bg-primary" id="level" >All</span>.
+				<p id="resume">
 				</p>
 			</div>
 		</div>
 
 		<div class="row">
-			<fieldset id="versionbtn" class="col-6 row bg-light btns" style="padding:20px">
+			<fieldset id="versionbtn" class="col-6 row btns" style="padding:20px">
 				<legend class="col-3">Version</legend>
 				<ul class="col justify-content-start">
 					<li><button type="button" onclick="btnVersion(this)" class="btn btn-primary btn-sm version">All</button></li>
@@ -66,7 +68,7 @@
 				</ul>
 			</fieldset>
 
-			<fieldset id="levelbtn" class="col-6 row bg-light justify-content-end btns" style="padding:20px">
+			<fieldset id="levelbtn" class="col-6 row justify-content-end btns" style="padding:20px">
 				<legend class="col-3">Level</legend>
 				<ul class="col">
 					<li><button type="button" onclick="btnLevel(this)" class="btn btn-primary btn-sm level">All</button></li>
@@ -76,12 +78,12 @@
 				</ul>
 			</fieldset>
 		</div>
-
+<!--
 		<div class="row">
-			<fieldset id="categorybtn" class="col-12 row bg-light btns" style="padding:20px">
+			<fieldset id="categorybtn" class="col-12 row btns" style="padding:20px">
 				<legend class="col-3">Category</legend>
 				<ul class="col" style="text-align:right">
-					<li><button type="button" onclick="btnCategory(this)" class="btn btn-primary btn-sm category">all</button></li>
+					<li><button type="button" onclick="btnCategory(this)" class="btn btn-primary btn-sm category">All</button></li>
 					<li><button type="button" onclick="btnCategory(this)" class="btn btn-secondary btn-sm category">content</button></li>
 					<li><button type="button" onclick="btnCategory(this)" class="btn btn-secondary btn-sm category">forms-and-UI</button></li>
 					<li><button type="button" onclick="btnCategory(this)" class="btn btn-secondary btn-sm category">audio-video</button></li>
@@ -94,23 +96,58 @@
 				</ul>
 			</fieldset>
 		</div>
+-->
+		<div class="row">
+			<fieldset id="columns" class="col-12 row btns" style="padding:20px">
+				<legend class="col-3">Show columns</legend>
+				<ul class="col" style="text-align:right">
+					<li>
+						<label for="level">Level</label>
+						<input type="checkbox" id="level" value="Level" onchange="showColumns(this)">
+					</li>
+					<li>
+						<label for="version">Version</label>
+						<input type="checkbox" id="version" value="Version" onchange="showColumns(this)">
+					</li>
+					<li>
+						<label for="goal">Goal</label>
+						<input type="checkbox" id="goal" value="Goal" onchange="showColumns(this)">
+					</li>
+					<li>
+						<label for="intent">Intent</label>
+						<input type="checkbox" id="intent" value="Intent" onchange="showColumns(this)">
+					</li>
+					<li>
+						<label for="benefits">Benefits</label>
+						<input type="checkbox" id="benefits" value="Benefits" onchange="showColumns(this)">
+					</li>
+					<li>
+						<label for="verification">Verification</label>
+						<input type="checkbox" id="verification" value="Verification" onchange="showColumns(this)">
+					</li>
+					<li>
+						<label for="tools">Tools</label>
+						<input type="checkbox" id="tools" value="Tools" onchange="showColumns(this)">
+					</li><!--
+					<li>
+						<label for="category">Category</label>
+						<input type="checkbox" id="category" value="Category" onchange="showColumns(this)">
+					</li>-->
+				</ul>
+			</fieldset>
+		</div>
 
 		<div style="overflow-x: auto;">
-		<table class="table">
-			<caption class="visually-hidden">WCAG success criteria intents and benefits</caption>
-			<thead style="border-top:0px">
-				<th scope="col">Understanding Criteria</th>
-				<th scope="col">Level</th>
-				<th scope="col">Version</th>
-				<th scope="col" style="width: 40%;">Intent</th>
-				<th scope="col" style="width: 40%;">Benefits</th>
-				<th scope="col">Category</th></thead>
-			<tbody></tbody>
+		<table id="wcagTable" class="table" style="width:100%">
+			<thead id="thead">
+			</thead>
+			<tbody id="bodyTable">
+			</tbody>
 		</table>
 		</div>
 		
 	</div>
-	<script src="./data/json-EN.js"></script>
+	<script src="./data/content.js"></script>
 	<script src="./scripts/script.js"></script>
 </body>
 </html>

+ 433 - 0
scripts/script-1.js

@@ -0,0 +1,433 @@
+const tableHeader = document.querySelector('thead');
+const tableBody = document.querySelector('tbody');
+const filterCategory = document.getElementById('filter');
+const level = document.getElementById('level')
+const version = document.getElementById('version')
+const resultsElement = document.getElementById('returnedResults');
+const tests = wcagObj['criterion'];
+const headers = ['understandingCriteria', 'wcagLevel', 'wcagVersion', 'goal', 'intent', 'benefits', 'verification', 'verification', 'tools', 'category']
+const checks = ['understandingCriteria', 'wcagLevel', 'wcagVersion', 'goal', 'category']
+let lang = 'en'
+const headings = {
+	understandingCriteria : {
+		cat: 'Criteri',
+		es: 'Criterio',
+		'en': 'Criteria'
+	},
+	wcagLevel: {
+		cat: 'Nivell',
+		es: 'Nivel',
+		en: 'Level'
+	},
+	wcagVersion : {
+		cat: 'Versió',
+		es: 'Versión',
+		en: 'Version'
+	},
+	goal : {
+		cat: 'Objectiu',
+		es: 'Objetivo',
+		en: 'Goal'
+	},
+	intent : {
+		cat: 'Intent',
+		es: 'Intent',
+		en: 'Intent'
+	},
+	benefits : {
+		cat: 'Beneficis',
+		es: 'Beneficios',
+		en: 'Benefits'
+	},
+	verification : {
+		cat: 'Verificació',
+		es: 'Verificación',
+		en: 'Verification'
+	},
+	tools : {
+		cat: 'Eines',
+		es: 'Herramientas',
+		en: 'Tools'
+	},
+	category : {
+		cat: 'Categoria',
+		es: 'Categoría',
+		en: 'Category'
+	}
+} 
+
+function populateTable() {
+	const filterLevel = level.innerHTML.split(",")
+	const filterVersion = version.innerHTML.split(",")
+	let returnedResults = 0;
+	tableHeader.innerHTML = ''
+	tableBody.innerHTML = '';
+	
+	const tableHeaderRow = document.createElement('tr');
+	for (let j = 0; j < headers.length; j++) {
+		console.log(headings[headers[j]][lang])
+		let tableHeader = document.createElement('th');
+		let headerText = document.createTextNode(headings[headers[j]][lang])
+		tableHeader.appendChild(headerText)
+		tableHeaderRow.appendChild(tableHeader)
+	}
+	tableHeader.appendChild(tableHeaderRow);
+
+	for (let i = 0; i < tests.length; i++) {
+		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' )) {
+			const tableRow = document.createElement('tr');
+			for (let key in tests[i]) {
+				if (tests[i].hasOwnProperty(key)) {
+					if (key !== 'link' && (key == 'understandingCriteria' || (checks.find(item => item === key)))) {
+						let val = tests[i][key];
+						let tableData = document.createElement('td');
+
+						if (key === 'understandingCriteria') {
+							const a = document.createElement('a');
+							let linkText;
+							switch (lang) {
+								case 'cat':
+									linkText = document.createTextNode(tests[i][key].cat);
+									break;
+								case 'es':
+									linkText = document.createTextNode(tests[i][key].es);
+									break;
+								case 'en':
+									linkText = document.createTextNode(tests[i][key].en);
+									break;
+								default:
+									linkText = document.createTextNode(tests[i][key].en);
+									break;
+							}
+							
+							a.appendChild(linkText);
+							a.title = val
+							a.target = '_blank';
+							a.href = tests[i].link;
+							tableData.appendChild(a);
+						}
+						else if (key === 'wcagLevel') {
+							let cssSpan;
+							switch (val) {
+								case 'A':
+									cssSpan = document.createElement('span');
+									cssSpan.textContent = val;
+									['bg-info', 'text-dark', 'badge', 'rounded-pill' ].forEach(item => {
+										cssSpan.classList.add(item);
+									})
+									/*cssSpan.classList.add('bg-info');
+									cssSpan.classList.add('text-dark');
+									cssSpan.classList.add('badge');
+									cssSpan.classList.add('rounded-pill');*/
+									tableData.appendChild(cssSpan);
+									break;
+								case 'AA':
+									cssSpan = document.createElement('span');
+									cssSpan.textContent = val;
+									cssSpan.classList.add('bg-warning');
+									cssSpan.classList.add('text-dark');
+									cssSpan.classList.add('badge');
+									cssSpan.classList.add('rounded-pill');
+									tableData.appendChild(cssSpan);
+									break;
+								case 'AAA':
+									cssSpan = document.createElement('span');
+									cssSpan.textContent = val;
+									cssSpan.classList.add('bg-danger');
+									cssSpan.classList.add('badge');
+									cssSpan.classList.add('rounded-pill');
+									tableData.appendChild(cssSpan);
+									break;
+								default:
+									tableData.textContent = val;
+									break;
+							}
+						}
+						else if (key === 'goal') {
+							const p = document.createElement('p');
+							let text;
+							switch (lang) {
+								case 'cat':
+									text = document.createTextNode(tests[i][key].cat);
+									break;
+								case 'es':
+									text = document.createTextNode(tests[i][key].es);
+									break;
+								case 'en':
+									text = document.createTextNode(tests[i][key].en);
+									break;
+								default:
+									text = document.createTextNode(tests[i][key].en);
+									break;
+							}
+							
+							p.appendChild(text);
+							tableData.appendChild(p);
+						}
+						else if (key === "intent") {
+							let p
+							let text
+							switch (lang) {
+								case 'cat':
+									p = document.createElement('p');
+									text = document.createTextNode(val.cat);
+									p.appendChild(text);
+									tableData.appendChild(p);
+									break;
+								case 'es':
+									p = document.createElement('p');
+									text = document.createTextNode(val.es);
+									p.appendChild(text);
+									tableData.appendChild(p);
+									break;
+								case 'en':
+									p = document.createElement('p');
+									text = document.createTextNode(val.en);
+									p.appendChild(text);
+									tableData.appendChild(p);
+									break;
+								default:
+									p = document.createElement('p');
+									text = document.createTextNode(val.en);
+									p.appendChild(text);
+									tableData.appendChild(p);
+									break;
+							}
+						}
+						else if (key === 'benefits') {
+							const ul = document.createElement('ul');
+							let lista
+							switch (lang) {
+								case 'cat':
+									lista = val.cat.split("#")
+									lista.forEach(element => {
+										const li = document.createElement('li');
+										const liText = document.createTextNode(element);
+										li.appendChild(liText);
+										ul.appendChild(li)
+									});
+									break;
+								case 'es':
+									lista = val.es.split("#")
+									lista.forEach(element => {
+										const li = document.createElement('li');
+										const liText = document.createTextNode(element);
+										li.appendChild(liText);
+										ul.appendChild(li)
+									});
+									break;
+								case 'en':
+									lista = val.en.split("#")
+									lista.forEach(element => {
+										const li = document.createElement('li');
+										const liText = document.createTextNode(element);
+										li.appendChild(liText);
+										ul.appendChild(li)
+									});
+									break;
+								default:
+									lista = val.en.split("#")
+									lista.forEach(element => {
+										const li = document.createElement('li');
+										const liText = document.createTextNode(element);
+										li.appendChild(liText);
+										ul.appendChild(li)
+									});
+									break;
+							}
+							tableData.appendChild(ul);
+						}
+						else if (key === 'verification') {
+							const ul = document.createElement('ul');
+							let lista
+							switch (lang) {
+								case 'cat':
+									lista = val.cat.split("#")
+									lista.forEach(element => {
+										const li = document.createElement('li');
+										const liText = document.createTextNode(element);
+										li.appendChild(liText);
+										ul.appendChild(li)
+									});
+									break;
+								case 'es':
+									lista = val.es.split("#")
+									lista.forEach(element => {
+										const li = document.createElement('li');
+										const liText = document.createTextNode(element);
+										li.appendChild(liText);
+										ul.appendChild(li)
+									});
+									break;
+								case 'en':
+									lista = val.en.split("#")
+									lista.forEach(element => {
+										const li = document.createElement('li');
+										const liText = document.createTextNode(element);
+										li.appendChild(liText);
+										ul.appendChild(li)
+									});
+									break;
+								default:
+									lista = val.en.split("#")
+									lista.forEach(element => {
+										const li = document.createElement('li');
+										const liText = document.createTextNode(element);
+										li.appendChild(liText);
+										ul.appendChild(li)
+									});
+									break;
+							}
+							tableData.appendChild(ul);
+						}
+						else if (key === 'tools') {
+							const ul = document.createElement('ul');
+							let lista
+							switch (lang) {
+								case 'cat':
+									lista = val.cat.split("#")
+									lista.forEach(element => {
+										const li = document.createElement('li');
+										const liText = document.createTextNode(element);
+										li.appendChild(liText);
+										ul.appendChild(li)
+									});
+									break;
+								case 'es':
+									lista = val.es.split("#")
+									lista.forEach(element => {
+										const li = document.createElement('li');
+										const liText = document.createTextNode(element);
+										li.appendChild(liText);
+										ul.appendChild(li)
+									});
+									break;
+								case 'en':
+									lista = val.en.split("#")
+									lista.forEach(element => {
+										const li = document.createElement('li');
+										const liText = document.createTextNode(element);
+										li.appendChild(liText);
+										ul.appendChild(li)
+									});
+									break;
+								default:
+									lista = val.en.split("#")
+									lista.forEach(element => {
+										const li = document.createElement('li');
+										const liText = document.createTextNode(element);
+										li.appendChild(liText);
+										ul.appendChild(li)
+									});
+									break;
+							}
+							tableData.appendChild(ul);
+						}
+						else if (key === 'category') {
+							returnedResults++;
+							for (let a = 0; a < tests[i][key].length; a++) {
+								cssSpan = document.createElement('span');
+								cssSpan.textContent = val[a];
+								cssSpan.classList.add('bg-primary');
+								cssSpan.classList.add('badge');
+								cssSpan.classList.add('rounded-pill');
+								tableData.appendChild(cssSpan);
+							}
+						}
+						else
+						{
+							let texto = document.createElement('p');
+							texto.textContent = val
+							tableData.appendChild(texto);
+						}
+						tableRow.appendChild(tableData);
+						tableBody.appendChild(tableRow);
+					}
+				}
+			}
+		}
+	}
+	resultsElement.textContent = returnedResults;
+}
+
+function btnLang(btn) {
+	lang = btn.id
+	populateTable()
+}
+
+function btnCategory(btn) {
+	filterCategory.textContent = btn.textContent;
+	populateTable()
+}
+
+function btnLevel(btn) {
+	const contentLevel = btn.textContent
+	const arrayLevels = level.innerHTML.split(",")
+
+	if (contentLevel == "All") {
+		level.textContent = 'All'
+	}
+	else if (arrayLevels.indexOf(contentLevel) !== -1) {
+		const newArray = arrayLevels.filter(item => item != contentLevel)
+		level.textContent = newArray.join()
+		if (level.innerHTML == "") {
+			level.textContent = 'All'
+		}
+	}
+	else {
+
+		if (arrayLevels.indexOf('All') !== -1) {
+			arrayLevels.splice(arrayLevels.indexOf('All'), 1)
+			level.textContent = arrayLevels.join()
+		}
+		arrayLevels.push(contentLevel)
+		if (arrayLevels.length === 3) {
+			level.textContent = 'All'
+		} else {
+		level.textContent = arrayLevels.join()
+		}
+	}
+	populateTable()
+}
+
+function btnVersion(btn) {
+	const contentVersion = btn.textContent
+	const arrayVersions = version.innerHTML.split(",")
+
+	if (contentVersion == "All") {
+		version.textContent = 'All'
+	}
+	else if (arrayVersions.indexOf(contentVersion) !== -1) {
+		const newArray = arrayVersions.filter(item => item != contentVersion)
+		version.textContent = newArray.join()
+		if (version.innerHTML == "") {
+			version.textContent = 'All'
+		}
+	}
+	else {
+
+		if (arrayVersions.indexOf('All') !== -1) {
+			arrayVersions.splice(arrayVersions.indexOf('All'), 1)
+			version.textContent = arrayVersions.join()
+		}
+		arrayVersions.push(contentVersion)
+		if (arrayVersions.length === 3) {
+			version.textContent = 'All'
+		} else {
+		version.textContent = arrayVersions.join()
+		}
+	}
+	populateTable()
+}
+
+function showColumns(check){
+	if (!checks.includes(check.id)){
+		checks.push(check.id)
+	} else if (checks.includes(check.id)){
+		let index = checks.indexOf(check.id)
+		checks.splice(index, 1)
+	}
+	populateTable()
+}
+
+populateTable()

+ 203 - 163
scripts/script.js

@@ -1,202 +1,242 @@
+const criteria = wcagObj['criterion'];
+let lang = 'en';
+let total = "78";
+let version = 'All';
+let level = 'All';
+let category = 'All';
+
+const resume = document.getElementById('resume');
+let message;
+
+const checks = ['level', 'version', 'goal', 'intent', 'benefits', 'verification', 'tools'];
+
+const tableHeader = document.querySelector('thead');
 const tableBody = document.querySelector('tbody');
-const filterCategory = document.getElementById('filter');
-const level = document.getElementById('level')
-const version = document.getElementById('version')
-const resultsElement = document.getElementById('returnedResults');
-const tests = wcagObj['intents'];
-let lang = en
-
-function populateTable(lang) {
-	const filterLevel = level.innerHTML.split(",")
-	const filterVersion = version.innerHTML.split(",")
-	let returnedResults = 0;
-	tableBody.innerHTML = '';
-	for (let i = 0; i < tests.length; i++) {
-		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' )) {
-			const tableRow = document.createElement('tr');
-			for (let key in tests[i]) {
-				if (tests[i].hasOwnProperty(key)) {
-					if (key !== 'link') {
-						let val = tests[i][key];
-						let tableData = document.createElement('td');
-
-						if (key === 'wcagLevel') {
-							let cssSpan;
-							switch (val) {
-								case 'A':
-									cssSpan = document.createElement('span');
-									cssSpan.textContent = val;
-									['bg-info', 'text-dark', 'badge', 'rounded-pill' ].forEach(item => {
-										cssSpan.classList.add(item);
-									})
-									/*cssSpan.classList.add('bg-info');
-									cssSpan.classList.add('text-dark');
-									cssSpan.classList.add('badge');
-									cssSpan.classList.add('rounded-pill');*/
-									tableData.appendChild(cssSpan);
-									break;
-								case 'AA':
-									cssSpan = document.createElement('span');
-									cssSpan.textContent = val;
-									cssSpan.classList.add('bg-warning');
-									cssSpan.classList.add('text-dark');
-									cssSpan.classList.add('badge');
-									cssSpan.classList.add('rounded-pill');
-									tableData.appendChild(cssSpan);
-									break;
-								case 'AAA':
-									cssSpan = document.createElement('span');
-									cssSpan.textContent = val;
-									cssSpan.classList.add('bg-danger');
-									cssSpan.classList.add('badge');
-									cssSpan.classList.add('rounded-pill');
-									tableData.appendChild(cssSpan);
-									break;
-								default:
-									tableData.textContent = val;
-									break;
-							}
-						}
-						else if (key === 'category') {
-							returnedResults++;
-							for (let a = 0; a < tests[i][key].length; a++) {
-								cssSpan = document.createElement('span');
-								cssSpan.textContent = val[a];
-								cssSpan.classList.add('bg-primary');
-								cssSpan.classList.add('badge');
-								cssSpan.classList.add('rounded-pill');
-								tableData.appendChild(cssSpan);
-							}
-						}
-						else if (key === 'understandingCriteria') {
-							const a = document.createElement('a');
-							let linkText;
-							switch (lang) {
-								case 'cat':
-									linkText = document.createTextNode(tests[i][key].cat);
-									break;
-								case 'es':
-									linkText = document.createTextNode(tests[i][key].es);
-									break;
-								case 'en':
-									linkText = document.createTextNode(tests[i][key].en);
-									break;
-								default:
-									linkText = document.createTextNode(tests[i][key].en);
-									
-									break;
-							}
-							
-							a.appendChild(linkText);
-							a.title = val
-							a.target = '_blank';
-							a.href = tests[i].link;
-							tableData.appendChild(a);
-						}
-						else if (key === 'benefit') {
-							const ul = document.createElement('ul');
-							const lista = val.split("#")
-							lista.forEach(element => {
-								const li = document.createElement('li');
-								const liText = document.createTextNode(element);
-								li.appendChild(liText);
-								ul.appendChild(li)
-							});
-							tableData.appendChild(ul);
-						}
-						else if (key === "intent") {
-							const pText = val.split("#")
-							pText.forEach(element => {
-								const p = document.createElement('p');
-								const text = document.createTextNode(element);
-								p.appendChild(text);
-								tableData.appendChild(p);
-							});
-						}
-						else
-						{
-							let texto = document.createElement('p');
-							texto.textContent = val
-							tableData.appendChild(texto);
-						}
-						tableRow.appendChild(tableData);
-						tableBody.appendChild(tableRow);
+let headers = [
+	{
+		"name": "criteria",
+		"alias": "Criteria",
+		"view": true
+	},
+	{
+		"name": "link",
+		"alias": "Link",
+		"view": false
+	},
+	{
+		"name": "level",
+		"alias": "Level",
+		"view": true
+	},
+	{
+		"name": "version",
+		"alias": "Version",
+		"view": true
+	},
+	{
+		"name": "goal",
+		"alias": "Goal",
+		"view": false
+	},
+	{
+		"name": "intent",
+		"alias": "Intent",
+		"view": true
+	},
+	{
+		"name": "benefits",
+		"alias": "Benefits",
+		"view": false
+	},
+	{
+		"name": "verification",
+		"alias": "Verification",
+		"view": false
+	},
+	{
+		"name": "tools",
+		"alias": "Tools",
+		"view": false
+	},
+	{
+		"name": "category",
+		"alias": "Category",
+		"view": false
+	}
+];
+
+const createTable = () => {
+	const filterLevel = level.split(",");
+	const filterVersion = version.split(",");
+  
+	const elementHead = document.getElementById('thead');
+  const totalhead = elementHead.children.length;
+  for(let g= 0; g<totalhead; g++) {
+    if (elementHead.children.length >0 ) { elementHead.removeChild(elementHead.children[0]) }
+  }
+
+	const element = document.getElementById('bodyTable')
+  const total = element.children.length
+  for (let i = 0; i < total;i++ ) {
+    if (element.children.length > 0 ) { element.removeChild(element.children[0]) }
+  }
+
+	// Create table headers
+  let tr = document.createElement('tr');
+	headers.forEach(item => {
+    if (item.view) {
+      const th = document.createElement('th')
+			th.setAttribute('scope', 'column')
+      const alias = document.createTextNode(item.alias)
+      th.appendChild(alias)
+      tr.appendChild(th)
+    }
+  })
+  elementHead.appendChild(tr)
+
+	// Create table body
+  criteria.forEach(item => {
+    tr = document.createElement('tr')
+    headers.forEach(head => {
+      if (head.view===true && (item.category.includes(category) || category === 'All') && (filterLevel.find(lev => lev === item.level) || filterLevel[0] === 'All') && (filterVersion.find(lev => lev === item.version) || filterVersion[0] === 'All')) {
+				
+				const td = document.createElement('td');
+        if (typeof item[head.name] === 'object') {
+					switch (lang) {
+						case 'cat':
+							td.innerHTML = item[head.name].cat;
+							break;
+						case 'es':
+							td.innerHTML = item[head.name].es;
+							break;
+						case 'en':
+							td.innerHTML = item[head.name].en;
+							break;
+						default:
+							td.innerHTML = item[head.name].en;
+							break;
 					}
+				} else {
+						td.innerHTML = item[head.name];
 				}
-			}
+        tr.appendChild(td);
+      }
+    });
+		if (tr.firstElementChild != null){
+			element.append(tr);
 		}
+  });
+	totalElem = document.getElementById('wcagTable').rows.length - 1;
+	updateResume();
+}
+
+function updateResume() {
+	switch (lang) {
+		case 'cat':
+			message = 'Mostrar ' + total + ' tests. Versió ' + version + ' nivell ' + level + '. Categoritzats en ' + category + ' criteris.';
+		break;
+		case 'es':
+			message = 'Showing ' + total + ' tests. Version ' + version + ' level ' + level + '. Categorised by ' + category + ' criterios.';
+		break;
+		case 'en':
+			message = 'Showing ' + total + ' tests. Version ' + version + ' level ' + level + '. Categorised by ' + category + ' criteria.';
+		break;
+		default:
+			message = 'Showing ' + total + ' tests. Version ' + version + ' level ' + level + '. Categorised by ' + category + ' criteria.';
+		break;
 	}
-	resultsElement.textContent = returnedResults;
+	resume.innerHTML = message;
 }
 
 function btnLang(btn) {
 	lang = btn.id
-	populateTable(lang);
+	createTable()
 }
 
-function btnCategory(btn) {
-	filterCategory.textContent = btn.textContent;
-	populateTable(lang);
+function btnVersion(btn) {
+	const contentVersion = btn.textContent
+	const arrayVersions = version.split(",")
+
+	if (contentVersion == "All") {
+		version = 'All'
+	}
+	else if (arrayVersions.indexOf(contentVersion) !== -1) {
+		const newArray = arrayVersions.filter(item => item != contentVersion)
+		version = newArray.join()
+		if (version == "") {
+			version = 'All'
+		}
+	}
+	else {
+
+		if (arrayVersions.indexOf('All') !== -1) {
+			arrayVersions.splice(arrayVersions.indexOf('All'), 1)
+			version = arrayVersions.join()
+		}
+		arrayVersions.push(contentVersion)
+		if (arrayVersions.length === 3) {
+			version = 'All'
+		} else {
+		version = arrayVersions.join()
+		}
+	}
+	createTable()
 }
 
 function btnLevel(btn) {
 	const contentLevel = btn.textContent
-	const arrayLevels = level.innerHTML.split(",")
+	const arrayLevels = level.split(",")
 
 	if (contentLevel == "All") {
-		level.textContent = 'All'
+		level = 'All'
 	}
 	else if (arrayLevels.indexOf(contentLevel) !== -1) {
 		const newArray = arrayLevels.filter(item => item != contentLevel)
-		level.textContent = newArray.join()
-		if (level.innerHTML == "") {
-			level.textContent = 'All'
+		level = newArray.join()
+		if (level == "") {
+			level = 'All'
 		}
 	}
 	else {
 
 		if (arrayLevels.indexOf('All') !== -1) {
 			arrayLevels.splice(arrayLevels.indexOf('All'), 1)
-			level.textContent = arrayLevels.join()
+			level = arrayLevels.join()
 		}
 		arrayLevels.push(contentLevel)
 		if (arrayLevels.length === 3) {
-			level.textContent = 'All'
+			level = 'All'
 		} else {
-		level.textContent = arrayLevels.join()
+		level = arrayLevels.join()
 		}
 	}
-	populateTable(lang);
+	createTable()
 }
 
-function btnVersion(btn) {
-	const contentVersion = btn.textContent
-	const arrayVersions = version.innerHTML.split(",")
+function btnCategory(btn) {
+	category = btn.textContent;
+	createTable()
+}
 
-	if (contentVersion == "All") {
-		version.textContent = 'All'
-	}
-	else if (arrayVersions.indexOf(contentVersion) !== -1) {
-		const newArray = arrayVersions.filter(item => item != contentVersion)
-		version.textContent = newArray.join()
-		if (version.innerHTML == "") {
-			version.textContent = 'All'
+function showColumns(check){
+	headers.forEach(item => {
+		if (item.name === check.id) { 
+			check.checked ? item.view = true : item.view = false; 
 		}
-	}
-	else {
+	})
+	createTable();
+}	
 
-		if (arrayVersions.indexOf('All') !== -1) {
-			arrayVersions.splice(arrayVersions.indexOf('All'), 1)
-			version.textContent = arrayVersions.join()
-		}
-		arrayVersions.push(contentVersion)
-		if (arrayVersions.length === 3) {
-			version.textContent = 'All'
-		} else {
-		version.textContent = arrayVersions.join()
-		}
-	}
-	populateTable(lang);
+function checksInit() {
+	checks.forEach(item => {
+		headers.forEach(header => {
+			if (item == header.name) {
+				header.view === true ? document.getElementById(item).checked = true : document.getElementById(item).checked = false;
+				
+			}
+		})
+	})
 }
 
-populateTable(lang);
+checksInit();
+createTable();

Some files were not shown because too many files changed in this diff