diff --git a/.gitignore b/.gitignore
index fc422248..5d999ee4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,6 +2,7 @@ _site
.sass-cache
.jekyll-metadata
.jekyll-cache
+node_modules
public/
*~
*dwsync.xml
diff --git a/Gemfile b/Gemfile
index 6d5ab76a..6eec7021 100644
--- a/Gemfile
+++ b/Gemfile
@@ -16,6 +16,7 @@ gem "minima", "~> 2.5"
# If you have any plugins, put them here!
group :jekyll_plugins do
gem "jekyll-feed", "~> 0.12"
+ gem "webrick", "~> 1.8"
end
# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
@@ -28,3 +29,5 @@ end
# Performance-booster for watching directories on Windows
gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin]
+
+gem "webrick", "~> 1.8"
diff --git a/Gemfile.lock b/Gemfile.lock
index 463db48d..0380d794 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -9,9 +9,7 @@ GEM
eventmachine (>= 0.12.9)
http_parser.rb (~> 0.6.0)
eventmachine (1.2.7)
- eventmachine (1.2.7-x64-mingw32)
ffi (1.15.0)
- ffi (1.15.0-x64-mingw32)
forwardable-extended (2.6.0)
http_parser.rb (0.6.0)
i18n (1.8.9)
@@ -58,25 +56,23 @@ GEM
rb-fsevent (0.10.4)
rb-inotify (0.10.1)
ffi (~> 1.0)
- rexml (3.2.5)
+ rexml (3.4.1)
rouge (3.26.0)
safe_yaml (1.0.5)
sassc (2.4.0)
ffi (~> 1.9)
- sassc (2.4.0-x64-mingw32)
- ffi (~> 1.9)
terminal-table (2.0.0)
unicode-display_width (~> 1.1, >= 1.1.1)
thread_safe (0.3.6)
- tzinfo (1.2.9)
+ tzinfo (1.2.11)
thread_safe (~> 0.1)
- tzinfo-data (1.2021.1)
+ tzinfo-data (1.2025.2)
tzinfo (>= 1.0.0)
unicode-display_width (1.7.0)
- wdm (0.1.1)
+ webrick (1.9.1)
PLATFORMS
- x64-mingw32
+ x64-mingw-ucrt
x86_64-linux
DEPENDENCIES
@@ -85,7 +81,7 @@ DEPENDENCIES
minima (~> 2.5)
tzinfo (~> 1.2)
tzinfo-data
- wdm (~> 0.1.1)
+ webrick (~> 1.8)
BUNDLED WITH
- 2.2.14
+ 2.6.9
diff --git a/README.md b/README.md
index 5e039557..e4f5bca2 100644
--- a/README.md
+++ b/README.md
@@ -16,4 +16,4 @@ The ICT Baseline Alignment Validation Framework provides test cases as a way for
## How to Contribute
Working Group members can use the [editor on GitHub](https://github.com/Section508Coordinators/BaselineTestPages/edit/master/README.md) to directly edit this file to add references. Members can also navigate to the [Baseline Test Pages repository](https://github.com/Section508Coordinators/BaselineTestPages) to add files to test. Static pages can be viewed via GitHub Pages from this repository at the following url: .
-Contributors do not need to be highly technical nor make a long-term commitment, although both skills and time can certainly be helpful. The ICT Baseline Alignment Working Group needs help developing and evaluating test cases. Accessibility advocates are also needed to spread the word about the Framework, develop a governance structure, participate in governance, develop and maintain the website, provide user experience and plain language expertise, and even provide legal support. Please visit our [How You Can Help](https://section508coordinators.github.io/BaselineTestPages/contributing.html#helping) and [How We Work](https://section508coordinators.github.io/BaselineTestPages/contributing.html#how-we-work) sections or contact us at for more information about getting involved.
+Contributors do not need to be highly technical nor make a long-term commitment, although both skills and time can certainly be helpful. The ICT Baseline Alignment Working Group needs help developing and evaluating test cases. Accessibility advocates are also needed to spread the word about the Framework, develop a governance structure, participate in governance, develop and maintain the website, provide user experience and plain language expertise, and even provide legal support. Please visit our [How You Can Help](https://section508coordinators.github.io/BaselineTestPages/contributing.html#helping) and [How We Work](https://section508coordinators.github.io/BaselineTestPages/contributing.html#how-we-work) sections or contact us at for more information about getting involved..
diff --git a/Templates/_testcase-template.md b/Templates/_testcase-template.md
index 110dc036..d253e81d 100644
--- a/Templates/_testcase-template.md
+++ b/Templates/_testcase-template.md
@@ -16,7 +16,7 @@ tcid:
descr:
# Reference and link to the applicable ICT Baseline test
-app-basline:
+app-baseline:
# Expected result that the ICT Baseline would predict
# [Pass | Fail | DNA]
@@ -40,4 +40,4 @@ sample:
---
| Test Instruction | Instruction Detail | Expected Test Case Result |
|------------------|--------------------|---------------------------|
-| # | Detail | Step Result |
\ No newline at end of file
+| # | Detail | Step Result |
diff --git a/_archive_reference/TT_TestPages/10C_Fail2.html b/_archive_reference/TT_TestPages/10C_Fail2.html
deleted file mode 100644
index 7734eddd..00000000
--- a/_archive_reference/TT_TestPages/10C_Fail2.html
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-Heading Level Failing Example 2 Interactive Sample
-
-
-
-
-
-
Conclusion and Contact Information
-
Contact Information
-
-
OAST
-
Department of Homeland Security
-202-447-0440
-
-
-
-
Evaluation
-
-
An accessible online evaluation form is now available. Your feedback is especially valuable to help make these trainings even better!
-
Your experience as a student is valuable to others who may be thinking of attending our trainings. We appeciate any and all feedback from those who have participated in our training. Thanks!
-
-
-
\ No newline at end of file
diff --git a/_archive_reference/TT_TestPages/11A_Fail2.html b/_archive_reference/TT_TestPages/11A_Fail2.html
deleted file mode 100644
index 9b0823c7..00000000
--- a/_archive_reference/TT_TestPages/11A_Fail2.html
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-Language Example/Practice Page
-
-
-
-
-
Un tirador activo es un individuo involucrado activamente en la tarea de matar o intentar matar a otras personas que se encuentran en un area restringida y llena de gente; en la mayoria de los casos, los tiradores activos usan armas de fuego, y no tienen un patron ometodo para seleccionar a las victimas.
-
-
-
diff --git a/_archive_reference/TT_TestPages/11B_DNA2.html b/_archive_reference/TT_TestPages/11B_DNA2.html
deleted file mode 100644
index 0297b275..00000000
--- a/_archive_reference/TT_TestPages/11B_DNA2.html
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-Language of Parts DNA Example 2
-
-
-
-
Dinner Party
-
Our dinner menu will begin with hors d'oeuvres. We will serve tortilla soup and mini tacos.
-
This will be followed by a green salad.
-
Jose Estonia will then play a traditional Mexican folk song.
-
-
Our main course will be beef, chicken and shrimp fajitas.
-
We will end our meal with sopapillas topped with ice cream.
-
-
WE HOPE YOU CAN ATTEND!
-
-
diff --git a/_archive_reference/TT_TestPages/11B_Fail2.html b/_archive_reference/TT_TestPages/11B_Fail2.html
deleted file mode 100644
index c8d6ccb4..00000000
--- a/_archive_reference/TT_TestPages/11B_Fail2.html
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-Language of Parts Failing Example 2
-
-
-
-
WHAT'S THE WEATHER LIKE?
-
-
Veronica: Buongiorno ragazze! Sono le 7.30 e stamattina e una splendida giornata!
-
Maria: Che bello! Possiamo uscire in giro per la citta tutto il giorno!
-
Antonio: Ieri non era bello. La pioggia improvvisa ha rovinato i nostri piani.
-
-
-
diff --git a/_archive_reference/TT_TestPages/11B_Fail3.html b/_archive_reference/TT_TestPages/11B_Fail3.html
deleted file mode 100644
index e6777c79..00000000
--- a/_archive_reference/TT_TestPages/11B_Fail3.html
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-Language of Parts Failing Example 3
-
-
-
-
-
Gaming Around the World
-
-
German games
-
-
Der Softwarekonzern als Endgegner
-
-
Fans arbeiten jahrelang an Neuauflagen von Videospielen, die ihre Kindheit pragten. Sie investieren enorm viel Zeit und Geld - und werden manchmal kurz vor dem Ziel jah gestoppt.
-
-
-
-
-
Educational games
-
Contraption Maker
-
-
Solve problems, puzzles, brain teasers while creating wacky machines.
-
-
-
-
-
diff --git a/_archive_reference/TT_TestPages/11B_Pass2.html b/_archive_reference/TT_TestPages/11B_Pass2.html
deleted file mode 100644
index e6e6fa1f..00000000
--- a/_archive_reference/TT_TestPages/11B_Pass2.html
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-Language of Parts Passing Example 2
-
-
-
-
I want to learn how to be an expert tester for accessibility.
-
-
Carla vive en Brasil y quiere aprender a ser un experto probador de accesibilidad
-
-
There are over 2,000 trusted testers world-wide.
-
-
-
diff --git a/_archive_reference/TT_TestPages/12A_Pass4.html b/_archive_reference/TT_TestPages/12A_Pass4.html
deleted file mode 100644
index bfc64c29..00000000
--- a/_archive_reference/TT_TestPages/12A_Pass4.html
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-New Releases- Home
-Top ten movies of all time
-
-
-
-
Video-mania
-
Your spot for all things video-related
-
-
-
\ No newline at end of file
diff --git a/_archive_reference/TT_TestPages/12B_Fail2.html b/_archive_reference/TT_TestPages/12B_Fail2.html
deleted file mode 100644
index 23925b80..00000000
--- a/_archive_reference/TT_TestPages/12B_Fail2.html
+++ /dev/null
@@ -1,53 +0,0 @@
-
-
-
-
-
-
Feedback form from your recent visit
-
The purpose of this survey is to gauge your recent experience. The results are anonymous and will help us create a better experience for the future. We appreciate your feedback and hope to see you back soon!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/_archive_reference/TT_TestPages/12B_Fail3-1.html b/_archive_reference/TT_TestPages/12B_Fail3-1.html
deleted file mode 100644
index e70571b1..00000000
--- a/_archive_reference/TT_TestPages/12B_Fail3-1.html
+++ /dev/null
@@ -1,61 +0,0 @@
-
-
-
-Accessibility site
-
-
-
-
-
-
-
Note: the form element and buttons below do NOT provide any functionality. This page is provided for limited demonstration purposes only, as described in the Trusted Tester training course.
-
-
-
-
What is ICT?
-
Information technology and other equipment, systems, technologies, or processes, for which the principal function is the creation, manipulation, storage, display, receipt, or transmission of electronic data and information, as well as any associated content. Examples of ICT include, but are not limited to: computers and peripheral equipment; information kiosks and transaction machines; telecommunications equipment; customer premises equipment; multifunction office machines; software; applications; Web sites; videos; and, electronic documents.
-
-
-
\ No newline at end of file
diff --git a/_archive_reference/TT_TestPages/12B_Fail3-2.html b/_archive_reference/TT_TestPages/12B_Fail3-2.html
deleted file mode 100644
index 54bdaafb..00000000
--- a/_archive_reference/TT_TestPages/12B_Fail3-2.html
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-Accessibility site
-
-
-
-
-
-
Accessibility Testing: One Perspective
-
-
By the Accessibility Gurus.
-
In this blog, we will cover the highlights from the Section 508 Refresh. Then we will discuss testing methodologies and test tools. Finally we will discuss some test script changes.
-
-
-
-
-
-
\ No newline at end of file
diff --git a/_archive_reference/TT_TestPages/12B_Pass1.html b/_archive_reference/TT_TestPages/12B_Pass1.html
deleted file mode 100644
index 09be2ad2..00000000
--- a/_archive_reference/TT_TestPages/12B_Pass1.html
+++ /dev/null
@@ -1,37 +0,0 @@
-
-
-
-
- Top ten cities to travel to (2019 edition) | Home
-
-
-
-
-
-
Note: the links on this page do NOT provide any functionality. This page is provided for limited demonstration purposes only, as described in the Trusted Tester training course.
-
Top Ten cities to travel to (2019)
-
-
By the Travel Group.
-
2019 has proved an interesting year for the top 10 travel cities. Let's dive right in to what is on the list! Using this home page, you can navigate to specific pages showcasing the best of each city.
-
-
-
-
-
-
\ No newline at end of file
diff --git a/_archive_reference/TT_TestPages/12D_DNA3.html b/_archive_reference/TT_TestPages/12D_DNA3.html
deleted file mode 100644
index c8c6e24c..00000000
--- a/_archive_reference/TT_TestPages/12D_DNA3.html
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-iFrame DNA Example 3 - Interactive Sample
-
-
-
-
Note: This page is provided for limited demonstration purposes only, as described in the Trusted Tester training course.
-
The US Constitution
-
Below you can access the text of the US Constitution
-
This page is under construction so please come back soon to see new content!
-
-
-
\ No newline at end of file
diff --git a/_archive_reference/TT_TestPages/14A_Fail2img.jpg b/_archive_reference/TT_TestPages/14A_Fail2img.jpg
deleted file mode 100644
index d985cc1f..00000000
Binary files a/_archive_reference/TT_TestPages/14A_Fail2img.jpg and /dev/null differ
diff --git a/_archive_reference/TT_TestPages/14A_Pass1.html b/_archive_reference/TT_TestPages/14A_Pass1.html
deleted file mode 100644
index 92277588..00000000
--- a/_archive_reference/TT_TestPages/14A_Pass1.html
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
-Data Table Passing Example 1 - Interactive Sample
-
-
-
-
-
-
-
Homework
-
Exams
-
Projects
-
-
-
1
-
2
-
Final
-
1
-
2
-
Final
-
-
-
15%
-
15%
-
15%
-
20%
-
10%
-
10%
-
15%
-
-
-
-
-
-
\ No newline at end of file
diff --git a/_archive_reference/TT_TestPages/14B_Fail1.html b/_archive_reference/TT_TestPages/14B_Fail1.html
deleted file mode 100644
index 9dd03480..00000000
--- a/_archive_reference/TT_TestPages/14B_Fail1.html
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
-Cell Association Failing Example 1 - Interactive Sample
-
-
-
-
-
Weekly Schedule
-
-
-
-
Monday
-
Tuesday
-
Wednesday
-
Thursday
-
Friday
-
-
-
10:00-11:00 am
-
Brunch
-
-
Laundry
-
-
-
-
-
9:00-10:00 am
-
-
-
Pick up dog from vet
-
Pack
-
Grocery Shop
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/_archive_reference/TT_TestPages/14B_Fail2.html b/_archive_reference/TT_TestPages/14B_Fail2.html
deleted file mode 100644
index de7c1994..00000000
--- a/_archive_reference/TT_TestPages/14B_Fail2.html
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
-Cell Association Failing Example 2 - Interactive Sample
-
-
-
-
-
-
Contact Information
-
-
-
Name
-
Phone#
-
Fax#
-
City
-
-
1.
-
Joel Garner
-
412-212-5421
-
412-212-5400
-
Pittsburgh
-
-
2.
-
Clive Lloyd
-
410-306-1420
-
410-306-5400
-
Baltimore
-
-
3.
-
Gordon Greenidge
-
281-564-6720
-
281-511-6600
-
Houston
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/_archive_reference/TT_TestPages/14B_Pass1.html b/_archive_reference/TT_TestPages/14B_Pass1.html
deleted file mode 100644
index 69f074ad..00000000
--- a/_archive_reference/TT_TestPages/14B_Pass1.html
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-Cell Association Passing Example 1 - Interactive Sample
-
-
-
-
-
Bus Schedule
-
-
-
Main & Second
-
Fifth & Middlebrook
-
State & Market Square
-
First & Church
-
-
-
1:10 pm
-
1:25 pm
-
1:40 pm
-
2:00 pm
-
-
-
2:15 pm
-
2:30 pm
-
2:46 pm
-
3:02 pm
-
-
-
-
-
-
\ No newline at end of file
diff --git a/_archive_reference/TT_TestPages/14B_Pass2.html b/_archive_reference/TT_TestPages/14B_Pass2.html
deleted file mode 100644
index 76cb11ce..00000000
--- a/_archive_reference/TT_TestPages/14B_Pass2.html
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
-Cell Association Passing Example 2 - Interactive Sample
-
-
-
-
-
-
-
Homework
-
Exams
-
Projects
-
-
-
1
-
2
-
Final
-
1
-
2
-
Final
-
-
-
15%
-
15%
-
15%
-
20%
-
10%
-
10%
-
15%
-
-
-
-
-
-
\ No newline at end of file
diff --git a/_archive_reference/TT_TestPages/14B_Pass3.html b/_archive_reference/TT_TestPages/14B_Pass3.html
deleted file mode 100644
index dddaf317..00000000
--- a/_archive_reference/TT_TestPages/14B_Pass3.html
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
-
-Cell Association Passing Example 3 - Interactive Sample
-
-
-
-
-
Bus Schedule
-
-
Shelly's Daughters
-
-
-
Name
-
Age
-
Birthday
-
-
-
-
by birth
-
Jackie
-
5
-
April 5
-
-
-
-
Beth
-
8
-
January 14
-
-
-
-
by marriage
-
Anna
-
3
-
March 19
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/_archive_reference/TT_TestPages/14C_DNA2.html b/_archive_reference/TT_TestPages/14C_DNA2.html
deleted file mode 100644
index d7fbb81e..00000000
--- a/_archive_reference/TT_TestPages/14C_DNA2.html
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
-Layout Table DNA Example 2 - Interactive Sample
-
-
-
-
-
-
-
Homework
-
Exams
-
Projects
-
-
-
1
-
2
-
Final
-
1
-
2
-
Final
-
-
-
15%
-
15%
-
15%
-
20%
-
10%
-
10%
-
15%
-
-
-
-
-
-
\ No newline at end of file
diff --git a/_archive_reference/TT_TestPages/14C_Fail1.html b/_archive_reference/TT_TestPages/14C_Fail1.html
deleted file mode 100644
index adfcb50a..00000000
--- a/_archive_reference/TT_TestPages/14C_Fail1.html
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-Layout Table Failing Example 1 - Interactive Sample
-
-
-
-
-
-
Our Services :
-
-
-
Refer to the Accessibility Guideline requirements for each product and VPAT assistance.
-
Have your product tested, whether it is a document, mobile app, website, or software application.
-
Register for one of the many trainings we offer. Most are online!
-
Discuss results of the Section 508 testing with your development team, management, and contracting officers.
If your team needs help with any remediation or platform issues, reach out to our Help Desk for next steps and tailored helps.
-
Schedule time to work with our Accessibility specialists.
Contact Accessibility with any questions.
-
-
-
-
-
-
\ No newline at end of file
diff --git a/_archive_reference/TT_TestPages/14C_Fail2.html b/_archive_reference/TT_TestPages/14C_Fail2.html
deleted file mode 100644
index e20ae8a9..00000000
--- a/_archive_reference/TT_TestPages/14C_Fail2.html
+++ /dev/null
@@ -1,49 +0,0 @@
-
-
-
-Layout Table Failing Example 2 - Interactive Sample
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/_archive_reference/TT_TestPages/14C_Fail3.html b/_archive_reference/TT_TestPages/14C_Fail3.html
deleted file mode 100644
index 35cf6d36..00000000
--- a/_archive_reference/TT_TestPages/14C_Fail3.html
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-Layout Table Failing Example 3 - Interactive Sample
-
-
-
-
-
-
Ice Cream Flavors :
-
-
-
Chocolate
-
Vanilla
-
Lavender
-
Mocha
-
Strawberry
-
Cookies and Cream
-
Sweet Cream
-
Peanut Butter
-
Honey
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/_archive_reference/TT_TestPages/14C_Pass2.html b/_archive_reference/TT_TestPages/14C_Pass2.html
deleted file mode 100644
index c65ad95a..00000000
--- a/_archive_reference/TT_TestPages/14C_Pass2.html
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-Layout Table Passing Example 2 - Interactive Sample
-
-
-
-
-
Service Offerings
-
-
-
Refer to the Accessibility Guideline requirements for each product and VPAT assistance.
-
Have your product tested, whether it is a document, mobile app, website, or software application.
-
Register for one of the many trainings we offer. Most are online!
-
Discuss results of the Section 508 testing with your development team, management, and contracting officers.
If your team needs help with any remediation or platform issues, reach out to our Accessibility Help Desk for next steps and tailored helps.
-
Schedule time to work with our Accessibility specialists.
Contact DHS Accessibility with any questions.
-
-
-
-
-
-
\ No newline at end of file
diff --git a/_archive_reference/TT_TestPages/15A_Fail1.html b/_archive_reference/TT_TestPages/15A_Fail1.html
deleted file mode 100644
index 4fd1ab2a..00000000
--- a/_archive_reference/TT_TestPages/15A_Fail1.html
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-CSS Content Failing Example 1 - Interactive Sample
-
-
-
-
-
-
-
-
-What is your address?
-
-
-0001 Main Street.
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/_archive_reference/TT_TestPages/15A_Fail2.html b/_archive_reference/TT_TestPages/15A_Fail2.html
deleted file mode 100644
index 6e56c0d4..00000000
--- a/_archive_reference/TT_TestPages/15A_Fail2.html
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-CSS Content Failing Example 2 - Interactive Sample
-
-
-
-
-
-
-
-
-Squirrels plant tons of new trees each year by forgetting where they put their acorns.
-
-
- Jellyfish are the worst type of sea creature.
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/_archive_reference/TT_TestPages/15A_Fail3.html b/_archive_reference/TT_TestPages/15A_Fail3.html
deleted file mode 100644
index 66d9163f..00000000
--- a/_archive_reference/TT_TestPages/15A_Fail3.html
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-CSS Content Failing Example 3 - Interactive Sample
-
-
-
-
-
-
-
-
-
Facts about the Department of Homeland Security
-
Mission
-
The Department of Homeland Security's mission is broad and diverse and covers everything from counterterrorism to the Nation's maritime and border security, from protection of our national leaders to coordinating the federal government's response to natural disasters.
-
-
Myth vs. Fact
-
Myth
-
ICE allows for the transportation of detainees under inhumane conditions.
-
Fact
-
ICE has zero tolerance for inappropriate and inhumane treatment of anyone we encounter, under any circumstance. Every step possible is taken to ensure that these individuals are provided with food, water, restroom breaks and that they are processed as quickly as possible.
-
Myth
-
DHS does not provide language translators.
-
Fact
-
Both ICE and CBP have Language Access Plans in place to provide access to individuals with limited English proficiency. These plans include a process to identify the language spoken and the use of interpreters, either in-person or telephonically.
-
-
-
-
-
-
\ No newline at end of file
diff --git a/_archive_reference/TT_TestPages/15A_Pass1.html b/_archive_reference/TT_TestPages/15A_Pass1.html
deleted file mode 100644
index 163ad3af..00000000
--- a/_archive_reference/TT_TestPages/15A_Pass1.html
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-CSS Content Passing Example 1 - Interactive Sample
-
-
-
-
-
-
-
-
-What is your address? (asks Peter)
-
-
-0001 Main Street. (replies Jane)
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/_archive_reference/TT_TestPages/15A_Pass2.html b/_archive_reference/TT_TestPages/15A_Pass2.html
deleted file mode 100644
index fc75e46b..00000000
--- a/_archive_reference/TT_TestPages/15A_Pass2.html
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-CSS Content Passing Example 2 - Interactive Sample
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/_archive_reference/TT_TestPages/15A_Pass3.html b/_archive_reference/TT_TestPages/15A_Pass3.html
deleted file mode 100644
index d8f0d793..00000000
--- a/_archive_reference/TT_TestPages/15A_Pass3.html
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-CSS Content Passing Example 3 - Interactive Sample
-
-
-
-
-
-
-
Agency Seals
-
Some interesting facts you may not know about the Department of Homeland Security Seal:
-
The U.S. Department of Homeland Security Seal was created in 2003.
-
-
-
-
In the center of the seal, a styled white American eagle appears in a circular blue field. The eagle's outstretched wings break through an inner red ring into an outer white ring that contains the words "U.S. DEPARTMENT OF" in the top half and "HOMELAND SECURITY" in the bottom half in a circular placement. Centered on the eagle's breast is a shield divided into three sections containing elements that represent the American homeland - air, land, and sea. The top element, a dark blue sky, contains 22 stars representing the original 22 entities that have come together to form the department. The left shield element contains white mountains behind a green plain underneath a light blue sky. The right shield element contains four wave shapes representing the oceans alternating light and dark blue separated by white lines. The seal is usually accompanied by a logo of the words "Homeland Security".
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/_archive_reference/TT_TestPages/15B_Fail1.html b/_archive_reference/TT_TestPages/15B_Fail1.html
deleted file mode 100644
index 727ec7a3..00000000
--- a/_archive_reference/TT_TestPages/15B_Fail1.html
+++ /dev/null
@@ -1,84 +0,0 @@
-
-
-
-
-CSS Position Failing Example 1 - Interactive Sample
-
-
-
-
-
-
The tablular layout in this example was created via CSS. This demonstrates a Failure due to changing the meaning of content by positioning information with CSS since the reading order of the document can not be programmatically determined. If CSS is turned off, this content will not render properly
In 2012 The Federals lost 105 games. This is the most losses the team has
- suffered since it came to DC in 2005. This season The Federals are predicted
- to lose 120 games. The bullpen is worthless and cant hold a win, when the
- starting pitching hands one over to them. The fans in the ballpark are no
- longer there to see the Federals but to cheer on the away teams. Lets hope
- the GM and the owners do something about this next season.
-
In 2013 there have been some things to clear the dark clouds away for the
- Federals. John Doe had a 31 game hit streak that started the second
- day of the season. The Federals have also added long ball hitter John Smith
- to the lineup, who is sending them over the fence in bunches this season.
- Two rookie pitchers are also showing signs of being a threat in the league,
- Joe Black and Tom Man. If the Federals don't mess things up
- and can sign there #1 overall draft pick and pull in some free agents in the
- offseason 2014 could be a good year. But for now it appears that it will be
- another long season in Washington, but the future might be bright for this
- group of young ball players.
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/_archive_reference/TT_TestPages/2pager/indextest.html b/_archive_reference/TT_TestPages/2pager/indextest.html
deleted file mode 100644
index cb91d8c7..00000000
--- a/_archive_reference/TT_TestPages/2pager/indextest.html
+++ /dev/null
@@ -1,169 +0,0 @@
-
-
-
-
-DHS and the DC Federals
-
-
-
-
-
-
-
-
In 2012 The Federals lost 105 games. This is the most losses the team has
- suffered since it came to DC in 2005. This season The Federals are predicted
- to lose 120 games. The bullpen is worthless and cant hold a win, when the
- starting pitching hands one over to them. The fans in the ballpark are no
- longer there to see the Federals but to cheer on the away teams. Lets hope
- the GM and the owners do something about this next season.
-
In 2013 there have been some things to clear the dark clouds away for the
- Federals. John Doe had a 31 game hit streak that started the second
- day of the season. The Federals have also added long ball hitter John Smith
- to the lineup, who is sending them over the fence in bunches this season.
- Two rookie pitchers are also showing signs of being a threat in the league,
- Joe Black and Tom Man. If the Federals don't mess things up
- and can sign there #1 overall draft pick and pull in some free agents in the
- offseason 2014 could be a good year. But for now it appears that it will be
- another long season in Washington, but the future might be bright for this
- group of young ball players.
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/_archive_reference/TT_TestPages/2pager/indextest.txt b/_archive_reference/TT_TestPages/2pager/indextest.txt
deleted file mode 100644
index cb91d8c7..00000000
--- a/_archive_reference/TT_TestPages/2pager/indextest.txt
+++ /dev/null
@@ -1,169 +0,0 @@
-
-
-
-
-DHS and the DC Federals
-
-
-
-
-
-
-
-
In 2012 The Federals lost 105 games. This is the most losses the team has
- suffered since it came to DC in 2005. This season The Federals are predicted
- to lose 120 games. The bullpen is worthless and cant hold a win, when the
- starting pitching hands one over to them. The fans in the ballpark are no
- longer there to see the Federals but to cheer on the away teams. Lets hope
- the GM and the owners do something about this next season.
-
In 2013 there have been some things to clear the dark clouds away for the
- Federals. John Doe had a 31 game hit streak that started the second
- day of the season. The Federals have also added long ball hitter John Smith
- to the lineup, who is sending them over the fence in bunches this season.
- Two rookie pitchers are also showing signs of being a threat in the league,
- Joe Black and Tom Man. If the Federals don't mess things up
- and can sign there #1 overall draft pick and pull in some free agents in the
- offseason 2014 could be a good year. But for now it appears that it will be
- another long season in Washington, but the future might be bright for this
- group of young ball players.
-
-
-
-
diff --git a/_archive_reference/TT_TestPages/2pager/sorttable.js b/_archive_reference/TT_TestPages/2pager/sorttable.js
deleted file mode 100644
index c13f47e3..00000000
--- a/_archive_reference/TT_TestPages/2pager/sorttable.js
+++ /dev/null
@@ -1,495 +0,0 @@
-/*
- SortTable
- version 2
- 7th April 2007
- Stuart Langridge, http://www.kryogenix.org/code/browser/sorttable/
-
- Instructions:
- Download this file
- Add to your HTML
- Add class="sortable" to any table you'd like to make sortable
- Click on the headers to sort
-
- Thanks to many, many people for contributions and suggestions.
- Licenced as X11: http://www.kryogenix.org/code/browser/licence.html
- This basically means: do what you want with it.
-*/
-
-
-var stIsIE = /*@cc_on!@*/false;
-
-sorttable = {
- init: function() {
- // quit if this function has already been called
- if (arguments.callee.done) return;
- // flag this function so we don't do the same thing twice
- arguments.callee.done = true;
- // kill the timer
- if (_timer) clearInterval(_timer);
-
- if (!document.createElement || !document.getElementsByTagName) return;
-
- sorttable.DATE_RE = /^(\d\d?)[\/\.-](\d\d?)[\/\.-]((\d\d)?\d\d)$/;
-
- forEach(document.getElementsByTagName('table'), function(table) {
- if (table.className.search(/\bsortable\b/) != -1) {
- sorttable.makeSortable(table);
- }
- });
-
- },
-
- makeSortable: function(table) {
- if (table.getElementsByTagName('thead').length == 0) {
- // table doesn't have a tHead. Since it should have, create one and
- // put the first table row in it.
- the = document.createElement('thead');
- the.appendChild(table.rows[0]);
- table.insertBefore(the,table.firstChild);
- }
- // Safari doesn't support table.tHead, sigh
- if (table.tHead == null) table.tHead = table.getElementsByTagName('thead')[0];
-
- if (table.tHead.rows.length != 1) return; // can't cope with two header rows
-
- // Sorttable v1 put rows with a class of "sortbottom" at the bottom (as
- // "total" rows, for example). This is B&R, since what you're supposed
- // to do is put them in a tfoot. So, if there are sortbottom rows,
- // for backwards compatibility, move them to tfoot (creating it if needed).
- sortbottomrows = [];
- for (var i=0; i5' : ' ▴';
- this.appendChild(sortrevind);
- return;
- }
- if (this.className.search(/\bsorttable_sorted_reverse\b/) != -1) {
- // if we're already sorted by this column in reverse, just
- // re-reverse the table, which is quicker
- sorttable.reverse(this.sorttable_tbody);
- this.className = this.className.replace('sorttable_sorted_reverse',
- 'sorttable_sorted');
- this.removeChild(document.getElementById('sorttable_sortrevind'));
- sortfwdind = document.createElement('span');
- sortfwdind.id = "sorttable_sortfwdind";
- sortfwdind.innerHTML = stIsIE ? ' 6' : ' ▾';
- this.appendChild(sortfwdind);
- return;
- }
-
- // remove sorttable_sorted classes
- theadrow = this.parentNode;
- forEach(theadrow.childNodes, function(cell) {
- if (cell.nodeType == 1) { // an element
- cell.className = cell.className.replace('sorttable_sorted_reverse','');
- cell.className = cell.className.replace('sorttable_sorted','');
- }
- });
- sortfwdind = document.getElementById('sorttable_sortfwdind');
- if (sortfwdind) { sortfwdind.parentNode.removeChild(sortfwdind); }
- sortrevind = document.getElementById('sorttable_sortrevind');
- if (sortrevind) { sortrevind.parentNode.removeChild(sortrevind); }
-
- this.className += ' sorttable_sorted';
- sortfwdind = document.createElement('span');
- sortfwdind.id = "sorttable_sortfwdind";
- sortfwdind.innerHTML = stIsIE ? ' 6' : ' ▾';
- this.appendChild(sortfwdind);
-
- // build an array to sort. This is a Schwartzian transform thing,
- // i.e., we "decorate" each row with the actual sort key,
- // sort based on the sort keys, and then put the rows back in order
- // which is a lot faster because you only do getInnerText once per row
- row_array = [];
- col = this.sorttable_columnindex;
- rows = this.sorttable_tbody.rows;
- for (var j=0; j 12) {
- // definitely dd/mm
- return sorttable.sort_ddmm;
- } else if (second > 12) {
- return sorttable.sort_mmdd;
- } else {
- // looks like a date, but we can't tell which, so assume
- // that it's dd/mm (English imperialism!) and keep looking
- sortfn = sorttable.sort_ddmm;
- }
- }
- }
- }
- return sortfn;
- },
-
- getInnerText: function(node) {
- // gets the text we want to use for sorting for a cell.
- // strips leading and trailing whitespace.
- // this is *not* a generic getInnerText function; it's special to sorttable.
- // for example, you can override the cell text with a customkey attribute.
- // it also gets .value for fields.
-
- if (!node) return "";
-
- hasInputs = (typeof node.getElementsByTagName == 'function') &&
- node.getElementsByTagName('input').length;
-
- if (node.getAttribute("sorttable_customkey") != null) {
- return node.getAttribute("sorttable_customkey");
- }
- else if (typeof node.textContent != 'undefined' && !hasInputs) {
- return node.textContent.replace(/^\s+|\s+$/g, '');
- }
- else if (typeof node.innerText != 'undefined' && !hasInputs) {
- return node.innerText.replace(/^\s+|\s+$/g, '');
- }
- else if (typeof node.text != 'undefined' && !hasInputs) {
- return node.text.replace(/^\s+|\s+$/g, '');
- }
- else {
- switch (node.nodeType) {
- case 3:
- if (node.nodeName.toLowerCase() == 'input') {
- return node.value.replace(/^\s+|\s+$/g, '');
- }
- case 4:
- return node.nodeValue.replace(/^\s+|\s+$/g, '');
- break;
- case 1:
- case 11:
- var innerText = '';
- for (var i = 0; i < node.childNodes.length; i++) {
- innerText += sorttable.getInnerText(node.childNodes[i]);
- }
- return innerText.replace(/^\s+|\s+$/g, '');
- break;
- default:
- return '';
- }
- }
- },
-
- reverse: function(tbody) {
- // reverse the rows in a tbody
- newrows = [];
- for (var i=0; i=0; i--) {
- tbody.appendChild(newrows[i]);
- }
- delete newrows;
- },
-
- /* sort functions
- each sort function takes two parameters, a and b
- you are comparing a[0] and b[0] */
- sort_numeric: function(a,b) {
- aa = parseFloat(a[0].replace(/[^0-9.-]/g,''));
- if (isNaN(aa)) aa = 0;
- bb = parseFloat(b[0].replace(/[^0-9.-]/g,''));
- if (isNaN(bb)) bb = 0;
- return aa-bb;
- },
- sort_alpha: function(a,b) {
- if (a[0]==b[0]) return 0;
- if (a[0] 0 ) {
- var q = list[i]; list[i] = list[i+1]; list[i+1] = q;
- swap = true;
- }
- } // for
- t--;
-
- if (!swap) break;
-
- for(var i = t; i > b; --i) {
- if ( comp_func(list[i], list[i-1]) < 0 ) {
- var q = list[i]; list[i] = list[i-1]; list[i-1] = q;
- swap = true;
- }
- } // for
- b++;
-
- } // while(swap)
- }
-}
-
-/* ******************************************************************
- Supporting functions: bundled here to avoid depending on a library
- ****************************************************************** */
-
-// Dean Edwards/Matthias Miller/John Resig
-
-/* for Mozilla/Opera9 */
-if (document.addEventListener) {
- document.addEventListener("DOMContentLoaded", sorttable.init, false);
-}
-
-/* for Internet Explorer */
-/*@cc_on @*/
-/*@if (@_win32)
- document.write("
-
-
diff --git a/_archive_reference/TT_TestPages/4A_Fail2-1.html b/_archive_reference/TT_TestPages/4A_Fail2-1.html
deleted file mode 100644
index de435ed2..00000000
--- a/_archive_reference/TT_TestPages/4A_Fail2-1.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-Keyboard Access Failing Example 2 - Test Page 1
-
-
-
Keyboard users also need to be able to select this link so they can transition their email to the cloud. This link is only accessible by mouse.
-
-
-
\ No newline at end of file
diff --git a/_archive_reference/TT_TestPages/4A_Fail2-2.html b/_archive_reference/TT_TestPages/4A_Fail2-2.html
deleted file mode 100644
index 77dd1306..00000000
--- a/_archive_reference/TT_TestPages/4A_Fail2-2.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-Keyboard Access Failing Example 2 - Test Page 2
-
-
-
Keyboard users also need to be able to select the ProPlus link. This link is only accessible by mouse.
-
-
-
\ No newline at end of file
diff --git a/_archive_reference/TT_TestPages/4A_Fail2-3.html b/_archive_reference/TT_TestPages/4A_Fail2-3.html
deleted file mode 100644
index 34e3e04c..00000000
--- a/_archive_reference/TT_TestPages/4A_Fail2-3.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-Keyboard Access Failing Example 2 - Test Page 3
-
-
-
Keyboard users also need to be able to get the One Drive instructions. This link is only accessible by mouse.
-
-
-
\ No newline at end of file
diff --git a/_archive_reference/TT_TestPages/4A_Fail2-links.html b/_archive_reference/TT_TestPages/4A_Fail2-links.html
deleted file mode 100644
index a9f4732c..00000000
--- a/_archive_reference/TT_TestPages/4A_Fail2-links.html
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-Keyboard Access Failing Example 2 - Links Demo Page
-
-
-
The page is provided for demonstration purposes only.
*Note: this page provides only limited functionality, as described in the Trusted Tester training course.
-
-
-
-
-
-
-
-
-
What is Office 365?
-
Office 365 is a line of subscription services offered by Microsoft, as part of the Microsoft Office product line. The brand encompasses plans that allow use of the Microsoft Office software suite over the life of the subscription, as well as cloud-based software as a service products for business environments, such as hosted Exchange Server, Skype for Business Server, and SharePoint among others. All Office 365 plans include automatic updates to their respective software at no additional charge, as opposed to conventional licenses for these programs where new versions require purchase of a new license.
-
-
*Note: this page provides only limited functionality, as described in the Trusted Tester training course.
-
Dialog Box Example
-
-Modal dialog boxes should receive focus when they are opened. Focus needs to stay in the box until the information is complete. Users should not be able to navigate away from the modal dialog box while it is still open
-
-
-
-
-
-
-
diff --git a/_archive_reference/TT_TestPages/4E_Fail1_1.html b/_archive_reference/TT_TestPages/4E_Fail1_1.html
deleted file mode 100644
index b45a794a..00000000
--- a/_archive_reference/TT_TestPages/4E_Fail1_1.html
+++ /dev/null
@@ -1,15 +0,0 @@
-
- History of the Peanut
-
-
-
-
-
The History of the Peanut
-
-
-The peanut probably originated in Peru. It became popular in the United States in the early 1900s after the boll weevil had such a significant impact on the cotton crop in the South. Dr. George Washington Carver, a noted scientist, is credited with finding many uses for the peanut. Another American noted for his work with cereal as a breakfast food, Dr. John Harvey Kellogg is recognized as the inventor of peanut butter in 1895. It was initially used as a protein substitute for older people whose poor teeth could not chew meat. Both peanuts and peanut butter were used as rations in World War I and World War II by United States Armed Forces. It was this use that led to the current popular use of the peanut today in peanut butter and jelly sandwiches.
-
-
*Note: this page provides only limited functionality, as described in the Trusted Tester training course.
-
Dialog Box Example
-
-Modal dialog boxes should receive focus when they are opened. Focus needs to stay in the box until the information is complete. Users should not be able to navigate away from the modal dialog box while it is still open
-
Use the radio buttons below to select the country you want to learn more about.
-
-
-
-
-
-
England
-
England is a country that is part of the United Kingdom. It shares land borders with Wales to the west and Scotland to the north-northwest. The Irish Sea lies west of England and the Celtic Sea lies to the southwest. England is separated from continental Europe by the North Sea to the east and the English Channel to the south. The country covers five-eighths of the island of Great Britain, which lies in the North Atlantic, and includes over 100 smaller islands, such as the Isles of Scilly and the Isle of Wight.
Spain (Spanish: España [esˈpaɲa]), officially the Kingdom of Spain (Spanish: Reino de España), is a country mostly located on the Iberian Peninsula in Europe. Its territory also includes two archipelagoes: the Canary Islands off the coast of Africa, and the Balearic Islands in the Mediterranean Sea. The African enclaves of Ceuta and Melilla make Spain the only European country to have a physical border with an African country (Morocco). Several small islands in the Alboran Sea are also part of Spanish territory. The country's mainland is bordered to the south and east by the Mediterranean Sea except for a small land boundary with Gibraltar; to the north and northeast by France, Andorra, and the Bay of Biscay; and to the west and northwest by Portugal and the Atlantic Ocean.
France (French: [fʁɑ̃s]), officially the French Republic (French: République française, pronounced [ʁepyblik fʁɑ̃sɛːz]), is a country whose territory consists of metropolitan France in Western Europe and several overseas regions and territories. The metropolitan area of France extends from the Mediterranean Sea to the English Channel and the North Sea, and from the Rhine to the Atlantic Ocean. It is bordered by Belgium, Luxembourg and Germany to the northeast, Switzerland and Italy to the east, and Andorra and Spain to the south. The overseas territories include French Guiana in South America and several islands in the Atlantic, Pacific and Indian oceans. The country's 18 integral regions (five of which are situated overseas) span a combined area of 643,801 square kilometres (248,573 sq mi) and a total population of 67.3 million (as of October 2018). France, a sovereign state, is a unitary semi-presidential republic with its capital in Paris, the country's largest city and main cultural and commercial centre. Other major urban areas include Lyon, Marseille, Toulouse, Bordeaux, Lille and Nice.
Germany (German: Deutschland German pronunciation: [ˈdɔʏtʃlant]), officially the Federal Republic of Germany (German: Bundesrepublik Deutschland), is a country in Central and Western Europe, lying between the Baltic and North Seas to the north, and the Alps to the south. It borders Denmark to the north, Poland and the Czech Republic to the east, Austria and Switzerland to the south, France to the southwest, and Luxembourg, Belgium and the Netherlands to the west.
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/_archive_reference/TT_TestPages/5E_Pass1.js b/_archive_reference/TT_TestPages/5E_Pass1.js
deleted file mode 100644
index e86f2f20..00000000
--- a/_archive_reference/TT_TestPages/5E_Pass1.js
+++ /dev/null
@@ -1,17 +0,0 @@
-javascript:void((function(){andiScript=document.createElement('script');andiScript.setAttribute('src','https://www.dhs.gov/xlibrary/oast/ANDI/andi.js');document.body.appendChild(andiScript)})());
-
-$('input[name="lang"]').on('change',function(){
- var radios = document.getElementsByName('lang');
- for (var i = 0, length = radios.length; i < length; i++)
- {
- if (radios[i].checked)
- {
- // do whatever you want with the checked radio
- var selLang = radios[i].value;
- break;
- }
- }
- $('.langContent').removeClass("show");
- $('div[id|=' + selLang +']').addClass("show");
- $('.langContent:not([id|=' + selLang +'])').addClass("hide");
-});
\ No newline at end of file
diff --git a/_archive_reference/TT_TestPages/5G_Pass3.html b/_archive_reference/TT_TestPages/5G_Pass3.html
deleted file mode 100644
index 934a8601..00000000
--- a/_archive_reference/TT_TestPages/5G_Pass3.html
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
-5.G Passing Example 3
-
-
-
-
*Note: this page provides only limited functionality, as described in the Trusted Tester training course.
-
Please indicate your satisfaction with our customer service:
-
-
*Please input a number between 1 and 10:
-
-
-
-
-
-
-
-
-
-Please leave any comments regarding what we have exceeded expectations at or need improvement on:
-
-
-
diff --git a/_archive_reference/TT_TestPages/6A_Fail2.html b/_archive_reference/TT_TestPages/6A_Fail2.html
deleted file mode 100644
index fa16bdd7..00000000
--- a/_archive_reference/TT_TestPages/6A_Fail2.html
+++ /dev/null
@@ -1,72 +0,0 @@
-
-
-
-
-
-
- Button Failing Example 2 Interactive Sample
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Note: the form elements and buttons below do NOT provide any functionality. This page is provided for limited demonstration purposes only, as described in the Trusted Tester training course.
-
-
Use the input boxes below to enter your text for the document
Note: the links below do NOT provide any functionality or lead to any location. This page is provided for limited demonstration purposes only, as described in the Trusted Tester training course.
Note: the buttons in the table below do NOT perform any function. The table and buttons are provided for limited demonstration puruposes, as described in the Trusted Tester training course
Note: This page is provided for limited demonstration purposes only, as described in the Trusted Tester training course.
-
The Cutest and Cuddliest
-
-
This web site is dedicated to all things cute and cuddly.
-
-
Use the links on the left side navigation section of the web page to explore everything you ever wanted to know about the cutest and cuddliest creatures on the planet.
Note: the form elements and button below do NOT provide any functionality. This page is provided for limited demonstration purposes only, as described in the Trusted Tester training course.
-
- Greener Grass:The grass is always greener on the other side of the hill is a proverb that means "another situation may seem better than your own, but may not really be so".
-
-
Note: the buttons below do NOT provide any functionality. This page is provided for limited demonstration purposes only, as described in the Trusted Tester training course.
-
-
Documents
-
Uploaded Documents
-
- Delete
|| Jane_Doe_Resume
-
-
-
Training Requests
-
-
- Deny
|| Section 508: What is it and why is it important to you?
-
-
-
-
Vacation Requests
-
-
- Deny
|| November 23rd
-
-
-
-
\ No newline at end of file
diff --git a/_archive_reference/TT_TestPages/9C_Pass2.html b/_archive_reference/TT_TestPages/9C_Pass2.html
deleted file mode 100644
index cd43947d..00000000
--- a/_archive_reference/TT_TestPages/9C_Pass2.html
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-Consistent Identification Passing Example 2 Interactive Sample
-
-
-
-
';
- nSizer.childNodes[0].style.height = "0";
- nSizer.childNodes[0].style.overflow = "hidden";
- nSizer.style.width = footerWidths[i];
- }, footerSrcEls );
- }
-
- // Sanity check that the table is of a sensible width. If not then we are going to get
- // misalignment - try to prevent this by not allowing the table to shrink below its min width
- if ( table.outerWidth() < sanityWidth )
- {
- // The min width depends upon if we have a vertical scrollbar visible or not */
- correction = ((divBodyEl.scrollHeight > divBodyEl.offsetHeight ||
- divBody.css('overflow-y') == "scroll")) ?
- sanityWidth+barWidth :
- sanityWidth;
-
- // IE6/7 are a law unto themselves...
- if ( ie67 && (divBodyEl.scrollHeight >
- divBodyEl.offsetHeight || divBody.css('overflow-y') == "scroll")
- ) {
- tableStyle.width = _fnStringToCss( correction-barWidth );
- }
-
- // And give the user a warning that we've stopped the table getting too small
- if ( scrollX === "" || scrollXInner !== "" ) {
- _fnLog( settings, 1, 'Possible column misalignment', 6 );
- }
- }
- else
- {
- correction = '100%';
- }
-
- // Apply to the container elements
- divBodyStyle.width = _fnStringToCss( correction );
- divHeaderStyle.width = _fnStringToCss( correction );
-
- if ( footer ) {
- settings.nScrollFoot.style.width = _fnStringToCss( correction );
- }
-
-
- /*
- * 4. Clean up
- */
- if ( ! scrollY ) {
- /* IE7< puts a vertical scrollbar in place (when it shouldn't be) due to subtracting
- * the scrollbar height from the visible display, rather than adding it on. We need to
- * set the height in order to sort this. Don't want to do it in any other browsers.
- */
- if ( ie67 ) {
- divBodyStyle.height = _fnStringToCss( tableEl.offsetHeight+barWidth );
- }
- }
-
- /* Finally set the width's of the header and footer tables */
- var iOuterWidth = table.outerWidth();
- divHeaderTable[0].style.width = _fnStringToCss( iOuterWidth );
- divHeaderInnerStyle.width = _fnStringToCss( iOuterWidth );
-
- // Figure out if there are scrollbar present - if so then we need a the header and footer to
- // provide a bit more space to allow "overflow" scrolling (i.e. past the scrollbar)
- var bScrolling = table.height() > divBodyEl.clientHeight || divBody.css('overflow-y') == "scroll";
- var padding = 'padding' + (browser.bScrollbarLeft ? 'Left' : 'Right' );
- divHeaderInnerStyle[ padding ] = bScrolling ? barWidth+"px" : "0px";
-
- if ( footer ) {
- divFooterTable[0].style.width = _fnStringToCss( iOuterWidth );
- divFooterInner[0].style.width = _fnStringToCss( iOuterWidth );
- divFooterInner[0].style[padding] = bScrolling ? barWidth+"px" : "0px";
- }
-
- // Correct DOM ordering for colgroup - comes before the thead
- table.children('colgroup').insertBefore( table.children('thead') );
-
- /* Adjust the position of the header in case we loose the y-scrollbar */
- divBody.scroll();
-
- // If sorting or filtering has occurred, jump the scrolling back to the top
- // only if we aren't holding the position
- if ( (settings.bSorted || settings.bFiltered) && ! settings._drawHold ) {
- divBodyEl.scrollTop = 0;
- }
- }
-
-
-
- /**
- * Apply a given function to the display child nodes of an element array (typically
- * TD children of TR rows
- * @param {function} fn Method to apply to the objects
- * @param array {nodes} an1 List of elements to look through for display children
- * @param array {nodes} an2 Another list (identical structure to the first) - optional
- * @memberof DataTable#oApi
- */
- function _fnApplyToChildren( fn, an1, an2 )
- {
- var index=0, i=0, iLen=an1.length;
- var nNode1, nNode2;
-
- while ( i < iLen ) {
- nNode1 = an1[i].firstChild;
- nNode2 = an2 ? an2[i].firstChild : null;
-
- while ( nNode1 ) {
- if ( nNode1.nodeType === 1 ) {
- if ( an2 ) {
- fn( nNode1, nNode2, index );
- }
- else {
- fn( nNode1, index );
- }
-
- index++;
- }
-
- nNode1 = nNode1.nextSibling;
- nNode2 = an2 ? nNode2.nextSibling : null;
- }
-
- i++;
- }
- }
-
-
-
- var __re_html_remove = /<.*?>/g;
-
-
- /**
- * Calculate the width of columns for the table
- * @param {object} oSettings dataTables settings object
- * @memberof DataTable#oApi
- */
- function _fnCalculateColumnWidths ( oSettings )
- {
- var
- table = oSettings.nTable,
- columns = oSettings.aoColumns,
- scroll = oSettings.oScroll,
- scrollY = scroll.sY,
- scrollX = scroll.sX,
- scrollXInner = scroll.sXInner,
- columnCount = columns.length,
- visibleColumns = _fnGetColumns( oSettings, 'bVisible' ),
- headerCells = $('th', oSettings.nTHead),
- tableWidthAttr = table.getAttribute('width'), // from DOM element
- tableContainer = table.parentNode,
- userInputs = false,
- i, column, columnIdx, width, outerWidth,
- browser = oSettings.oBrowser,
- ie67 = browser.bScrollOversize;
-
- var styleWidth = table.style.width;
- if ( styleWidth && styleWidth.indexOf('%') !== -1 ) {
- tableWidthAttr = styleWidth;
- }
-
- /* Convert any user input sizes into pixel sizes */
- for ( i=0 ; i').appendTo( tmpTable.find('tbody') );
-
- // Clone the table header and footer - we can't use the header / footer
- // from the cloned table, since if scrolling is active, the table's
- // real header and footer are contained in different table tags
- tmpTable.find('thead, tfoot').remove();
- tmpTable
- .append( $(oSettings.nTHead).clone() )
- .append( $(oSettings.nTFoot).clone() );
-
- // Remove any assigned widths from the footer (from scrolling)
- tmpTable.find('tfoot th, tfoot td').css('width', '');
-
- // Apply custom sizing to the cloned header
- headerCells = _fnGetUniqueThs( oSettings, tmpTable.find('thead')[0] );
-
- for ( i=0 ; i').css( {
- width: column.sWidthOrig,
- margin: 0,
- padding: 0,
- border: 0,
- height: 1
- } ) );
- }
- }
-
- // Find the widest cell for each column and put it into the table
- if ( oSettings.aoData.length ) {
- for ( i=0 ; i').css( scrollX || scrollY ?
- {
- position: 'absolute',
- top: 0,
- left: 0,
- height: 1,
- right: 0,
- overflow: 'hidden'
- } :
- {}
- )
- .append( tmpTable )
- .appendTo( tableContainer );
-
- // When scrolling (X or Y) we want to set the width of the table as
- // appropriate. However, when not scrolling leave the table width as it
- // is. This results in slightly different, but I think correct behaviour
- if ( scrollX && scrollXInner ) {
- tmpTable.width( scrollXInner );
- }
- else if ( scrollX ) {
- tmpTable.css( 'width', 'auto' );
- tmpTable.removeAttr('width');
-
- // If there is no width attribute or style, then allow the table to
- // collapse
- if ( tmpTable.width() < tableContainer.clientWidth && tableWidthAttr ) {
- tmpTable.width( tableContainer.clientWidth );
- }
- }
- else if ( scrollY ) {
- tmpTable.width( tableContainer.clientWidth );
- }
- else if ( tableWidthAttr ) {
- tmpTable.width( tableWidthAttr );
- }
-
- // Get the width of each column in the constructed table - we need to
- // know the inner width (so it can be assigned to the other table's
- // cells) and the outer width so we can calculate the full width of the
- // table. This is safe since DataTables requires a unique cell for each
- // column, but if ever a header can span multiple columns, this will
- // need to be modified.
- var total = 0;
- for ( i=0 ; i')
- .css( 'width', _fnStringToCss( width ) )
- .appendTo( parent || document.body );
-
- var val = n[0].offsetWidth;
- n.remove();
-
- return val;
- }
-
-
- /**
- * Get the widest node
- * @param {object} settings dataTables settings object
- * @param {int} colIdx column of interest
- * @returns {node} widest table node
- * @memberof DataTable#oApi
- */
- function _fnGetWidestNode( settings, colIdx )
- {
- var idx = _fnGetMaxLenString( settings, colIdx );
- if ( idx < 0 ) {
- return null;
- }
-
- var data = settings.aoData[ idx ];
- return ! data.nTr ? // Might not have been created when deferred rendering
- $('
').html( _fnGetCellData( settings, idx, colIdx, 'display' ) )[0] :
- data.anCells[ colIdx ];
- }
-
-
- /**
- * Get the maximum strlen for each data column
- * @param {object} settings dataTables settings object
- * @param {int} colIdx column of interest
- * @returns {string} max string length for each column
- * @memberof DataTable#oApi
- */
- function _fnGetMaxLenString( settings, colIdx )
- {
- var s, max=-1, maxIdx = -1;
-
- for ( var i=0, ien=settings.aoData.length ; i max ) {
- max = s.length;
- maxIdx = i;
- }
- }
-
- return maxIdx;
- }
-
-
- /**
- * Append a CSS unit (only if required) to a string
- * @param {string} value to css-ify
- * @returns {string} value with css unit
- * @memberof DataTable#oApi
- */
- function _fnStringToCss( s )
- {
- if ( s === null ) {
- return '0px';
- }
-
- if ( typeof s == 'number' ) {
- return s < 0 ?
- '0px' :
- s+'px';
- }
-
- // Check it has a unit character already
- return s.match(/\d$/) ?
- s+'px' :
- s;
- }
-
-
-
- function _fnSortFlatten ( settings )
- {
- var
- i, iLen, k, kLen,
- aSort = [],
- aiOrig = [],
- aoColumns = settings.aoColumns,
- aDataSort, iCol, sType, srcCol,
- fixed = settings.aaSortingFixed,
- fixedObj = $.isPlainObject( fixed ),
- nestedSort = [],
- add = function ( a ) {
- if ( a.length && ! $.isArray( a[0] ) ) {
- // 1D array
- nestedSort.push( a );
- }
- else {
- // 2D array
- $.merge( nestedSort, a );
- }
- };
-
- // Build the sort array, with pre-fix and post-fix options if they have been
- // specified
- if ( $.isArray( fixed ) ) {
- add( fixed );
- }
-
- if ( fixedObj && fixed.pre ) {
- add( fixed.pre );
- }
-
- add( settings.aaSorting );
-
- if (fixedObj && fixed.post ) {
- add( fixed.post );
- }
-
- for ( i=0 ; iy ? 1 : 0;
- if ( test !== 0 ) {
- return sort.dir === 'asc' ? test : -test;
- }
- }
-
- x = aiOrig[a];
- y = aiOrig[b];
- return xy ? 1 : 0;
- } );
- }
- else {
- // Depreciated - remove in 1.11 (providing a plug-in option)
- // Not all sort types have formatting methods, so we have to call their sorting
- // methods.
- displayMaster.sort( function ( a, b ) {
- var
- x, y, k, l, test, sort, fn,
- len=aSort.length,
- dataA = aoData[a]._aSortData,
- dataB = aoData[b]._aSortData;
-
- for ( k=0 ; ky ? 1 : 0;
- } );
- }
- }
-
- /* Tell the draw function that we have sorted the data */
- oSettings.bSorted = true;
- }
-
-
- function _fnSortAria ( settings )
- {
- var label;
- var nextSort;
- var columns = settings.aoColumns;
- var aSort = _fnSortFlatten( settings );
- var oAria = settings.oLanguage.oAria;
-
- // ARIA attributes - need to loop all columns, to update all (removing old
- // attributes as needed)
- for ( var i=0, iLen=columns.length ; i/g, "" );
- var th = col.nTh;
-
- // IE7 is throwing an error when setting these properties with jQuery's
- // attr() and removeAttr() methods...
- th.removeAttribute('aria-sort');
-
- /* In ARIA only the first sorting column can be marked as sorting - no multi-sort option */
- if ( col.bSortable ) {
- if ( aSort.length > 0 && aSort[0].col == i ) {
- th.setAttribute('aria-sort', aSort[0].dir=="asc" ? "ascending" : "descending" );
- nextSort = asSorting[ aSort[0].index+1 ] || asSorting[0];
- }
- else {
- nextSort = asSorting[0];
- }
-
- label = sTitle + ( nextSort === "asc" ?
- oAria.sSortAscending :
- oAria.sSortDescending
- );
- }
- else {
- label = sTitle;
- }
-
- th.setAttribute('aria-label', label);
- }
- }
-
-
- /**
- * Function to run on user sort request
- * @param {object} settings dataTables settings object
- * @param {node} attachTo node to attach the handler to
- * @param {int} colIdx column sorting index
- * @param {boolean} [append=false] Append the requested sort to the existing
- * sort if true (i.e. multi-column sort)
- * @param {function} [callback] callback function
- * @memberof DataTable#oApi
- */
- function _fnSortListener ( settings, colIdx, append, callback )
- {
- var col = settings.aoColumns[ colIdx ];
- var sorting = settings.aaSorting;
- var asSorting = col.asSorting;
- var nextSortIdx;
- var next = function ( a, overflow ) {
- var idx = a._idx;
- if ( idx === undefined ) {
- idx = $.inArray( a[1], asSorting );
- }
-
- return idx+1 < asSorting.length ?
- idx+1 :
- overflow ?
- null :
- 0;
- };
-
- // Convert to 2D array if needed
- if ( typeof sorting[0] === 'number' ) {
- sorting = settings.aaSorting = [ sorting ];
- }
-
- // If appending the sort then we are multi-column sorting
- if ( append && settings.oFeatures.bSortMulti ) {
- // Are we already doing some kind of sort on this column?
- var sortIdx = $.inArray( colIdx, _pluck(sorting, '0') );
-
- if ( sortIdx !== -1 ) {
- // Yes, modify the sort
- nextSortIdx = next( sorting[sortIdx], true );
-
- if ( nextSortIdx === null && sorting.length === 1 ) {
- nextSortIdx = 0; // can't remove sorting completely
- }
-
- if ( nextSortIdx === null ) {
- sorting.splice( sortIdx, 1 );
- }
- else {
- sorting[sortIdx][1] = asSorting[ nextSortIdx ];
- sorting[sortIdx]._idx = nextSortIdx;
- }
- }
- else {
- // No sort on this column yet
- sorting.push( [ colIdx, asSorting[0], 0 ] );
- sorting[sorting.length-1]._idx = 0;
- }
- }
- else if ( sorting.length && sorting[0][0] == colIdx ) {
- // Single column - already sorting on this column, modify the sort
- nextSortIdx = next( sorting[0] );
-
- sorting.length = 1;
- sorting[0][1] = asSorting[ nextSortIdx ];
- sorting[0]._idx = nextSortIdx;
- }
- else {
- // Single column - sort only on this column
- sorting.length = 0;
- sorting.push( [ colIdx, asSorting[0] ] );
- sorting[0]._idx = 0;
- }
-
- // Run the sort by calling a full redraw
- _fnReDraw( settings );
-
- // callback used for async user interaction
- if ( typeof callback == 'function' ) {
- callback( settings );
- }
- }
-
-
- /**
- * Attach a sort handler (click) to a node
- * @param {object} settings dataTables settings object
- * @param {node} attachTo node to attach the handler to
- * @param {int} colIdx column sorting index
- * @param {function} [callback] callback function
- * @memberof DataTable#oApi
- */
- function _fnSortAttachListener ( settings, attachTo, colIdx, callback )
- {
- var col = settings.aoColumns[ colIdx ];
-
- _fnBindAction( attachTo, {}, function (e) {
- /* If the column is not sortable - don't to anything */
- if ( col.bSortable === false ) {
- return;
- }
-
- // If processing is enabled use a timeout to allow the processing
- // display to be shown - otherwise to it synchronously
- if ( settings.oFeatures.bProcessing ) {
- _fnProcessingDisplay( settings, true );
-
- setTimeout( function() {
- _fnSortListener( settings, colIdx, e.shiftKey, callback );
-
- // In server-side processing, the draw callback will remove the
- // processing display
- if ( _fnDataSource( settings ) !== 'ssp' ) {
- _fnProcessingDisplay( settings, false );
- }
- }, 0 );
- }
- else {
- _fnSortListener( settings, colIdx, e.shiftKey, callback );
- }
- } );
- }
-
-
- /**
- * Set the sorting classes on table's body, Note: it is safe to call this function
- * when bSort and bSortClasses are false
- * @param {object} oSettings dataTables settings object
- * @memberof DataTable#oApi
- */
- function _fnSortingClasses( settings )
- {
- var oldSort = settings.aLastSort;
- var sortClass = settings.oClasses.sSortColumn;
- var sort = _fnSortFlatten( settings );
- var features = settings.oFeatures;
- var i, ien, colIdx;
-
- if ( features.bSort && features.bSortClasses ) {
- // Remove old sorting classes
- for ( i=0, ien=oldSort.length ; i 0 && s.time < +new Date() - (duration*1000) ) {
- callback();
- return;
- }
-
- // Number of columns have changed - all bets are off, no restore of settings
- if ( s.columns && columns.length !== s.columns.length ) {
- callback();
- return;
- }
-
- // Store the saved state so it might be accessed at any time
- settings.oLoadedState = $.extend( true, {}, s );
-
- // Restore key features - todo - for 1.11 this needs to be done by
- // subscribed events
- if ( s.start !== undefined ) {
- settings._iDisplayStart = s.start;
- settings.iInitDisplayStart = s.start;
- }
- if ( s.length !== undefined ) {
- settings._iDisplayLength = s.length;
- }
-
- // Order
- if ( s.order !== undefined ) {
- settings.aaSorting = [];
- $.each( s.order, function ( i, col ) {
- settings.aaSorting.push( col[0] >= columns.length ?
- [ 0, col[1] ] :
- col
- );
- } );
- }
-
- // Search
- if ( s.search !== undefined ) {
- $.extend( settings.oPreviousSearch, _fnSearchToHung( s.search ) );
- }
-
- // Columns
- //
- if ( s.columns ) {
- for ( i=0, ien=s.columns.length ; i= end )
- {
- start = end - len;
- }
-
- // Keep the start record on the current page
- start -= (start % len);
-
- if ( len === -1 || start < 0 )
- {
- start = 0;
- }
-
- settings._iDisplayStart = start;
- }
-
-
- function _fnRenderer( settings, type )
- {
- var renderer = settings.renderer;
- var host = DataTable.ext.renderer[type];
-
- if ( $.isPlainObject( renderer ) && renderer[type] ) {
- // Specific renderer for this type. If available use it, otherwise use
- // the default.
- return host[renderer[type]] || host._;
- }
- else if ( typeof renderer === 'string' ) {
- // Common renderer - if there is one available for this type use it,
- // otherwise use the default
- return host[renderer] || host._;
- }
-
- // Use the default
- return host._;
- }
-
-
- /**
- * Detect the data source being used for the table. Used to simplify the code
- * a little (ajax) and to make it compress a little smaller.
- *
- * @param {object} settings dataTables settings object
- * @returns {string} Data source
- * @memberof DataTable#oApi
- */
- function _fnDataSource ( settings )
- {
- if ( settings.oFeatures.bServerSide ) {
- return 'ssp';
- }
- else if ( settings.ajax || settings.sAjaxSource ) {
- return 'ajax';
- }
- return 'dom';
- }
-
-
-
-
- /**
- * Computed structure of the DataTables API, defined by the options passed to
- * `DataTable.Api.register()` when building the API.
- *
- * The structure is built in order to speed creation and extension of the Api
- * objects since the extensions are effectively pre-parsed.
- *
- * The array is an array of objects with the following structure, where this
- * base array represents the Api prototype base:
- *
- * [
- * {
- * name: 'data' -- string - Property name
- * val: function () {}, -- function - Api method (or undefined if just an object
- * methodExt: [ ... ], -- array - Array of Api object definitions to extend the method result
- * propExt: [ ... ] -- array - Array of Api object definitions to extend the property
- * },
- * {
- * name: 'row'
- * val: {},
- * methodExt: [ ... ],
- * propExt: [
- * {
- * name: 'data'
- * val: function () {},
- * methodExt: [ ... ],
- * propExt: [ ... ]
- * },
- * ...
- * ]
- * }
- * ]
- *
- * @type {Array}
- * @ignore
- */
- var __apiStruct = [];
-
-
- /**
- * `Array.prototype` reference.
- *
- * @type object
- * @ignore
- */
- var __arrayProto = Array.prototype;
-
-
- /**
- * Abstraction for `context` parameter of the `Api` constructor to allow it to
- * take several different forms for ease of use.
- *
- * Each of the input parameter types will be converted to a DataTables settings
- * object where possible.
- *
- * @param {string|node|jQuery|object} mixed DataTable identifier. Can be one
- * of:
- *
- * * `string` - jQuery selector. Any DataTables' matching the given selector
- * with be found and used.
- * * `node` - `TABLE` node which has already been formed into a DataTable.
- * * `jQuery` - A jQuery object of `TABLE` nodes.
- * * `object` - DataTables settings object
- * * `DataTables.Api` - API instance
- * @return {array|null} Matching DataTables settings objects. `null` or
- * `undefined` is returned if no matching DataTable is found.
- * @ignore
- */
- var _toSettings = function ( mixed )
- {
- var idx, jq;
- var settings = DataTable.settings;
- var tables = $.map( settings, function (el, i) {
- return el.nTable;
- } );
-
- if ( ! mixed ) {
- return [];
- }
- else if ( mixed.nTable && mixed.oApi ) {
- // DataTables settings object
- return [ mixed ];
- }
- else if ( mixed.nodeName && mixed.nodeName.toLowerCase() === 'table' ) {
- // Table node
- idx = $.inArray( mixed, tables );
- return idx !== -1 ? [ settings[idx] ] : null;
- }
- else if ( mixed && typeof mixed.settings === 'function' ) {
- return mixed.settings().toArray();
- }
- else if ( typeof mixed === 'string' ) {
- // jQuery selector
- jq = $(mixed);
- }
- else if ( mixed instanceof $ ) {
- // jQuery object (also DataTables instance)
- jq = mixed;
- }
-
- if ( jq ) {
- return jq.map( function(i) {
- idx = $.inArray( this, tables );
- return idx !== -1 ? settings[idx] : null;
- } ).toArray();
- }
- };
-
-
- /**
- * DataTables API class - used to control and interface with one or more
- * DataTables enhanced tables.
- *
- * The API class is heavily based on jQuery, presenting a chainable interface
- * that you can use to interact with tables. Each instance of the API class has
- * a "context" - i.e. the tables that it will operate on. This could be a single
- * table, all tables on a page or a sub-set thereof.
- *
- * Additionally the API is designed to allow you to easily work with the data in
- * the tables, retrieving and manipulating it as required. This is done by
- * presenting the API class as an array like interface. The contents of the
- * array depend upon the actions requested by each method (for example
- * `rows().nodes()` will return an array of nodes, while `rows().data()` will
- * return an array of objects or arrays depending upon your table's
- * configuration). The API object has a number of array like methods (`push`,
- * `pop`, `reverse` etc) as well as additional helper methods (`each`, `pluck`,
- * `unique` etc) to assist your working with the data held in a table.
- *
- * Most methods (those which return an Api instance) are chainable, which means
- * the return from a method call also has all of the methods available that the
- * top level object had. For example, these two calls are equivalent:
- *
- * // Not chained
- * api.row.add( {...} );
- * api.draw();
- *
- * // Chained
- * api.row.add( {...} ).draw();
- *
- * @class DataTable.Api
- * @param {array|object|string|jQuery} context DataTable identifier. This is
- * used to define which DataTables enhanced tables this API will operate on.
- * Can be one of:
- *
- * * `string` - jQuery selector. Any DataTables' matching the given selector
- * with be found and used.
- * * `node` - `TABLE` node which has already been formed into a DataTable.
- * * `jQuery` - A jQuery object of `TABLE` nodes.
- * * `object` - DataTables settings object
- * @param {array} [data] Data to initialise the Api instance with.
- *
- * @example
- * // Direct initialisation during DataTables construction
- * var api = $('#example').DataTable();
- *
- * @example
- * // Initialisation using a DataTables jQuery object
- * var api = $('#example').dataTable().api();
- *
- * @example
- * // Initialisation as a constructor
- * var api = new $.fn.DataTable.Api( 'table.dataTable' );
- */
- _Api = function ( context, data )
- {
- if ( ! (this instanceof _Api) ) {
- return new _Api( context, data );
- }
-
- var settings = [];
- var ctxSettings = function ( o ) {
- var a = _toSettings( o );
- if ( a ) {
- settings = settings.concat( a );
- }
- };
-
- if ( $.isArray( context ) ) {
- for ( var i=0, ien=context.length ; i idx ?
- new _Api( ctx[idx], this[idx] ) :
- null;
- },
-
-
- filter: function ( fn )
- {
- var a = [];
-
- if ( __arrayProto.filter ) {
- a = __arrayProto.filter.call( this, fn, this );
- }
- else {
- // Compatibility for browsers without EMCA-252-5 (JS 1.6)
- for ( var i=0, ien=this.length ; i 0 ) {
- return ctx[0].json;
- }
-
- // else return undefined;
- } );
-
-
- /**
- * Get the data submitted in the last Ajax request
- */
- _api_register( 'ajax.params()', function () {
- var ctx = this.context;
-
- if ( ctx.length > 0 ) {
- return ctx[0].oAjaxData;
- }
-
- // else return undefined;
- } );
-
-
- /**
- * Reload tables from the Ajax data source. Note that this function will
- * automatically re-draw the table when the remote data has been loaded.
- *
- * @param {boolean} [reset=true] Reset (default) or hold the current paging
- * position. A full re-sort and re-filter is performed when this method is
- * called, which is why the pagination reset is the default action.
- * @returns {DataTables.Api} this
- */
- _api_register( 'ajax.reload()', function ( callback, resetPaging ) {
- return this.iterator( 'table', function (settings) {
- __reload( settings, resetPaging===false, callback );
- } );
- } );
-
-
- /**
- * Get the current Ajax URL. Note that this returns the URL from the first
- * table in the current context.
- *
- * @return {string} Current Ajax source URL
- *//**
- * Set the Ajax URL. Note that this will set the URL for all tables in the
- * current context.
- *
- * @param {string} url URL to set.
- * @returns {DataTables.Api} this
- */
- _api_register( 'ajax.url()', function ( url ) {
- var ctx = this.context;
-
- if ( url === undefined ) {
- // get
- if ( ctx.length === 0 ) {
- return undefined;
- }
- ctx = ctx[0];
-
- return ctx.ajax ?
- $.isPlainObject( ctx.ajax ) ?
- ctx.ajax.url :
- ctx.ajax :
- ctx.sAjaxSource;
- }
-
- // set
- return this.iterator( 'table', function ( settings ) {
- if ( $.isPlainObject( settings.ajax ) ) {
- settings.ajax.url = url;
- }
- else {
- settings.ajax = url;
- }
- // No need to consider sAjaxSource here since DataTables gives priority
- // to `ajax` over `sAjaxSource`. So setting `ajax` here, renders any
- // value of `sAjaxSource` redundant.
- } );
- } );
-
-
- /**
- * Load data from the newly set Ajax URL. Note that this method is only
- * available when `ajax.url()` is used to set a URL. Additionally, this method
- * has the same effect as calling `ajax.reload()` but is provided for
- * convenience when setting a new URL. Like `ajax.reload()` it will
- * automatically redraw the table once the remote data has been loaded.
- *
- * @returns {DataTables.Api} this
- */
- _api_register( 'ajax.url().load()', function ( callback, resetPaging ) {
- // Same as a reload, but makes sense to present it for easy access after a
- // url change
- return this.iterator( 'table', function ( ctx ) {
- __reload( ctx, resetPaging===false, callback );
- } );
- } );
-
-
-
-
- var _selector_run = function ( type, selector, selectFn, settings, opts )
- {
- var
- out = [], res,
- a, i, ien, j, jen,
- selectorType = typeof selector;
-
- // Can't just check for isArray here, as an API or jQuery instance might be
- // given with their array like look
- if ( ! selector || selectorType === 'string' || selectorType === 'function' || selector.length === undefined ) {
- selector = [ selector ];
- }
-
- for ( i=0, ien=selector.length ; i 0 ) {
- // Assign the first element to the first item in the instance
- // and truncate the instance and context
- inst[0] = inst[i];
- inst[0].length = 1;
- inst.length = 1;
- inst.context = [ inst.context[i] ];
-
- return inst;
- }
- }
-
- // Not found - return an empty instance
- inst.length = 0;
- return inst;
- };
-
-
- var _selector_row_indexes = function ( settings, opts )
- {
- var
- i, ien, tmp, a=[],
- displayFiltered = settings.aiDisplay,
- displayMaster = settings.aiDisplayMaster;
-
- var
- search = opts.search, // none, applied, removed
- order = opts.order, // applied, current, index (original - compatibility with 1.9)
- page = opts.page; // all, current
-
- if ( _fnDataSource( settings ) == 'ssp' ) {
- // In server-side processing mode, most options are irrelevant since
- // rows not shown don't exist and the index order is the applied order
- // Removed is a special case - for consistency just return an empty
- // array
- return search === 'removed' ?
- [] :
- _range( 0, displayMaster.length );
- }
- else if ( page == 'current' ) {
- // Current page implies that order=current and fitler=applied, since it is
- // fairly senseless otherwise, regardless of what order and search actually
- // are
- for ( i=settings._iDisplayStart, ien=settings.fnDisplayEnd() ; i= 0 && search == 'applied') )
- {
- a.push( i );
- }
- }
- }
- }
-
- return a;
- };
-
-
- /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * Rows
- *
- * {} - no selector - use all available rows
- * {integer} - row aoData index
- * {node} - TR node
- * {string} - jQuery selector to apply to the TR elements
- * {array} - jQuery array of nodes, or simply an array of TR nodes
- *
- */
- var __row_selector = function ( settings, selector, opts )
- {
- var rows;
- var run = function ( sel ) {
- var selInt = _intVal( sel );
- var i, ien;
- var aoData = settings.aoData;
-
- // Short cut - selector is a number and no options provided (default is
- // all records, so no need to check if the index is in there, since it
- // must be - dev error if the index doesn't exist).
- if ( selInt !== null && ! opts ) {
- return [ selInt ];
- }
-
- if ( ! rows ) {
- rows = _selector_row_indexes( settings, opts );
- }
-
- if ( selInt !== null && $.inArray( selInt, rows ) !== -1 ) {
- // Selector - integer
- return [ selInt ];
- }
- else if ( sel === null || sel === undefined || sel === '' ) {
- // Selector - none
- return rows;
- }
-
- // Selector - function
- if ( typeof sel === 'function' ) {
- return $.map( rows, function (idx) {
- var row = aoData[ idx ];
- return sel( idx, row._aData, row.nTr ) ? idx : null;
- } );
- }
-
- // Selector - node
- if ( sel.nodeName ) {
- var rowIdx = sel._DT_RowIndex; // Property added by DT for fast lookup
- var cellIdx = sel._DT_CellIndex;
-
- if ( rowIdx !== undefined ) {
- // Make sure that the row is actually still present in the table
- return aoData[ rowIdx ] && aoData[ rowIdx ].nTr === sel ?
- [ rowIdx ] :
- [];
- }
- else if ( cellIdx ) {
- return aoData[ cellIdx.row ] && aoData[ cellIdx.row ].nTr === sel ?
- [ cellIdx.row ] :
- [];
- }
- else {
- var host = $(sel).closest('*[data-dt-row]');
- return host.length ?
- [ host.data('dt-row') ] :
- [];
- }
- }
-
- // ID selector. Want to always be able to select rows by id, regardless
- // of if the tr element has been created or not, so can't rely upon
- // jQuery here - hence a custom implementation. This does not match
- // Sizzle's fast selector or HTML4 - in HTML5 the ID can be anything,
- // but to select it using a CSS selector engine (like Sizzle or
- // querySelect) it would need to need to be escaped for some characters.
- // DataTables simplifies this for row selectors since you can select
- // only a row. A # indicates an id any anything that follows is the id -
- // unescaped.
- if ( typeof sel === 'string' && sel.charAt(0) === '#' ) {
- // get row index from id
- var rowObj = settings.aIds[ sel.replace( /^#/, '' ) ];
- if ( rowObj !== undefined ) {
- return [ rowObj.idx ];
- }
-
- // need to fall through to jQuery in case there is DOM id that
- // matches
- }
-
- // Get nodes in the order from the `rows` array with null values removed
- var nodes = _removeEmpty(
- _pluck_order( settings.aoData, rows, 'nTr' )
- );
-
- // Selector - jQuery selector string, array of nodes or jQuery object/
- // As jQuery's .filter() allows jQuery objects to be passed in filter,
- // it also allows arrays, so this will cope with all three options
- return $(nodes)
- .filter( sel )
- .map( function () {
- return this._DT_RowIndex;
- } )
- .toArray();
- };
-
- return _selector_run( 'row', selector, run, settings, opts );
- };
-
-
- _api_register( 'rows()', function ( selector, opts ) {
- // argument shifting
- if ( selector === undefined ) {
- selector = '';
- }
- else if ( $.isPlainObject( selector ) ) {
- opts = selector;
- selector = '';
- }
-
- opts = _selector_opts( opts );
-
- var inst = this.iterator( 'table', function ( settings ) {
- return __row_selector( settings, selector, opts );
- }, 1 );
-
- // Want argument shifting here and in __row_selector?
- inst.selector.rows = selector;
- inst.selector.opts = opts;
-
- return inst;
- } );
-
- _api_register( 'rows().nodes()', function () {
- return this.iterator( 'row', function ( settings, row ) {
- return settings.aoData[ row ].nTr || undefined;
- }, 1 );
- } );
-
- _api_register( 'rows().data()', function () {
- return this.iterator( true, 'rows', function ( settings, rows ) {
- return _pluck_order( settings.aoData, rows, '_aData' );
- }, 1 );
- } );
-
- _api_registerPlural( 'rows().cache()', 'row().cache()', function ( type ) {
- return this.iterator( 'row', function ( settings, row ) {
- var r = settings.aoData[ row ];
- return type === 'search' ? r._aFilterData : r._aSortData;
- }, 1 );
- } );
-
- _api_registerPlural( 'rows().invalidate()', 'row().invalidate()', function ( src ) {
- return this.iterator( 'row', function ( settings, row ) {
- _fnInvalidate( settings, row, src );
- } );
- } );
-
- _api_registerPlural( 'rows().indexes()', 'row().index()', function () {
- return this.iterator( 'row', function ( settings, row ) {
- return row;
- }, 1 );
- } );
-
- _api_registerPlural( 'rows().ids()', 'row().id()', function ( hash ) {
- var a = [];
- var context = this.context;
-
- // `iterator` will drop undefined values, but in this case we want them
- for ( var i=0, ien=context.length ; i 0 ) {
- settings._iRecordsDisplay--;
- }
-
- // Check for an 'overflow' they case for displaying the table
- _fnLengthOverflow( settings );
-
- // Remove the row's ID reference if there is one
- var id = settings.rowIdFn( rowData._aData );
- if ( id !== undefined ) {
- delete settings.aIds[ id ];
- }
- } );
-
- this.iterator( 'table', function ( settings ) {
- for ( var i=0, ien=settings.aoData.length ; i
').addClass( k );
- $('td', created)
- .addClass( k )
- .html( r )
- [0].colSpan = _fnVisbleColumns( ctx );
-
- rows.push( created[0] );
- }
- };
-
- addRow( data, klass );
-
- if ( row._details ) {
- row._details.detach();
- }
-
- row._details = $(rows);
-
- // If the children were already shown, that state should be retained
- if ( row._detailsShow ) {
- row._details.insertAfter( row.nTr );
- }
- };
-
-
- var __details_remove = function ( api, idx )
- {
- var ctx = api.context;
-
- if ( ctx.length ) {
- var row = ctx[0].aoData[ idx !== undefined ? idx : api[0] ];
-
- if ( row && row._details ) {
- row._details.remove();
-
- row._detailsShow = undefined;
- row._details = undefined;
- }
- }
- };
-
-
- var __details_display = function ( api, show ) {
- var ctx = api.context;
-
- if ( ctx.length && api.length ) {
- var row = ctx[0].aoData[ api[0] ];
-
- if ( row._details ) {
- row._detailsShow = show;
-
- if ( show ) {
- row._details.insertAfter( row.nTr );
- }
- else {
- row._details.detach();
- }
-
- __details_events( ctx[0] );
- }
- }
- };
-
-
- var __details_events = function ( settings )
- {
- var api = new _Api( settings );
- var namespace = '.dt.DT_details';
- var drawEvent = 'draw'+namespace;
- var colvisEvent = 'column-visibility'+namespace;
- var destroyEvent = 'destroy'+namespace;
- var data = settings.aoData;
-
- api.off( drawEvent +' '+ colvisEvent +' '+ destroyEvent );
-
- if ( _pluck( data, '_details' ).length > 0 ) {
- // On each draw, insert the required elements into the document
- api.on( drawEvent, function ( e, ctx ) {
- if ( settings !== ctx ) {
- return;
- }
-
- api.rows( {page:'current'} ).eq(0).each( function (idx) {
- // Internal data grab
- var row = data[ idx ];
-
- if ( row._detailsShow ) {
- row._details.insertAfter( row.nTr );
- }
- } );
- } );
-
- // Column visibility change - update the colspan
- api.on( colvisEvent, function ( e, ctx, idx, vis ) {
- if ( settings !== ctx ) {
- return;
- }
-
- // Update the colspan for the details rows (note, only if it already has
- // a colspan)
- var row, visible = _fnVisbleColumns( ctx );
-
- for ( var i=0, ien=data.length ; i=0 count from left, <0 count from right)
- * "{integer}:visIdx" - visible column index (i.e. translate to column index) (>=0 count from left, <0 count from right)
- * "{integer}:visible" - alias for {integer}:visIdx (>=0 count from left, <0 count from right)
- * "{string}:name" - column name
- * "{string}" - jQuery selector on column header nodes
- *
- */
-
- // can be an array of these items, comma separated list, or an array of comma
- // separated lists
-
- var __re_column_selector = /^([^:]+):(name|visIdx|visible)$/;
-
-
- // r1 and r2 are redundant - but it means that the parameters match for the
- // iterator callback in columns().data()
- var __columnData = function ( settings, column, r1, r2, rows ) {
- var a = [];
- for ( var row=0, ien=rows.length ; row= 0 ?
- selInt : // Count from left
- columns.length + selInt // Count from right (+ because its a negative value)
- ];
- }
-
- // Selector = function
- if ( typeof s === 'function' ) {
- var rows = _selector_row_indexes( settings, opts );
-
- return $.map( columns, function (col, idx) {
- return s(
- idx,
- __columnData( settings, idx, 0, 0, rows ),
- nodes[ idx ]
- ) ? idx : null;
- } );
- }
-
- // jQuery or string selector
- var match = typeof s === 'string' ?
- s.match( __re_column_selector ) :
- '';
-
- if ( match ) {
- switch( match[2] ) {
- case 'visIdx':
- case 'visible':
- var idx = parseInt( match[1], 10 );
- // Visible index given, convert to column index
- if ( idx < 0 ) {
- // Counting from the right
- var visColumns = $.map( columns, function (col,i) {
- return col.bVisible ? i : null;
- } );
- return [ visColumns[ visColumns.length + idx ] ];
- }
- // Counting from the left
- return [ _fnVisibleToColumnIndex( settings, idx ) ];
-
- case 'name':
- // match by name. `names` is column index complete and in order
- return $.map( names, function (name, i) {
- return name === match[1] ? i : null;
- } );
-
- default:
- return [];
- }
- }
-
- // Cell in the table body
- if ( s.nodeName && s._DT_CellIndex ) {
- return [ s._DT_CellIndex.column ];
- }
-
- // jQuery selector on the TH elements for the columns
- var jqResult = $( nodes )
- .filter( s )
- .map( function () {
- return $.inArray( this, nodes ); // `nodes` is column index complete and in order
- } )
- .toArray();
-
- if ( jqResult.length || ! s.nodeName ) {
- return jqResult;
- }
-
- // Otherwise a node which might have a `dt-column` data attribute, or be
- // a child or such an element
- var host = $(s).closest('*[data-dt-column]');
- return host.length ?
- [ host.data('dt-column') ] :
- [];
- };
-
- return _selector_run( 'column', selector, run, settings, opts );
- };
-
-
- var __setColumnVis = function ( settings, column, vis ) {
- var
- cols = settings.aoColumns,
- col = cols[ column ],
- data = settings.aoData,
- row, cells, i, ien, tr;
-
- // Get
- if ( vis === undefined ) {
- return col.bVisible;
- }
-
- // Set
- // No change
- if ( col.bVisible === vis ) {
- return;
- }
-
- if ( vis ) {
- // Insert column
- // Need to decide if we should use appendChild or insertBefore
- var insertBefore = $.inArray( true, _pluck(cols, 'bVisible'), column+1 );
-
- for ( i=0, ien=data.length ; i iThat;
- }
-
- return true;
- };
-
-
- /**
- * Check if a `
` node is a DataTable table already or not.
- *
- * @param {node|jquery|string} table Table node, jQuery object or jQuery
- * selector for the table to test. Note that if more than more than one
- * table is passed on, only the first will be checked
- * @returns {boolean} true the table given is a DataTable, or false otherwise
- * @static
- * @dtopt API-Static
- *
- * @example
- * if ( ! $.fn.DataTable.isDataTable( '#example' ) ) {
- * $('#example').dataTable();
- * }
- */
- DataTable.isDataTable = DataTable.fnIsDataTable = function ( table )
- {
- var t = $(table).get(0);
- var is = false;
-
- if ( table instanceof DataTable.Api ) {
- return true;
- }
-
- $.each( DataTable.settings, function (i, o) {
- var head = o.nScrollHead ? $('table', o.nScrollHead)[0] : null;
- var foot = o.nScrollFoot ? $('table', o.nScrollFoot)[0] : null;
-
- if ( o.nTable === t || head === t || foot === t ) {
- is = true;
- }
- } );
-
- return is;
- };
-
-
- /**
- * Get all DataTable tables that have been initialised - optionally you can
- * select to get only currently visible tables.
- *
- * @param {boolean} [visible=false] Flag to indicate if you want all (default)
- * or visible tables only.
- * @returns {array} Array of `table` nodes (not DataTable instances) which are
- * DataTables
- * @static
- * @dtopt API-Static
- *
- * @example
- * $.each( $.fn.dataTable.tables(true), function () {
- * $(table).DataTable().columns.adjust();
- * } );
- */
- DataTable.tables = DataTable.fnTables = function ( visible )
- {
- var api = false;
-
- if ( $.isPlainObject( visible ) ) {
- api = visible.api;
- visible = visible.visible;
- }
-
- var a = $.map( DataTable.settings, function (o) {
- if ( !visible || (visible && $(o.nTable).is(':visible')) ) {
- return o.nTable;
- }
- } );
-
- return api ?
- new _Api( a ) :
- a;
- };
-
-
- /**
- * Convert from camel case parameters to Hungarian notation. This is made public
- * for the extensions to provide the same ability as DataTables core to accept
- * either the 1.9 style Hungarian notation, or the 1.10+ style camelCase
- * parameters.
- *
- * @param {object} src The model object which holds all parameters that can be
- * mapped.
- * @param {object} user The object to convert from camel case to Hungarian.
- * @param {boolean} force When set to `true`, properties which already have a
- * Hungarian value in the `user` object will be overwritten. Otherwise they
- * won't be.
- */
- DataTable.camelToHungarian = _fnCamelToHungarian;
-
-
-
- /**
- *
- */
- _api_register( '$()', function ( selector, opts ) {
- var
- rows = this.rows( opts ).nodes(), // Get all rows
- jqRows = $(rows);
-
- return $( [].concat(
- jqRows.filter( selector ).toArray(),
- jqRows.find( selector ).toArray()
- ) );
- } );
-
-
- // jQuery functions to operate on the tables
- $.each( [ 'on', 'one', 'off' ], function (i, key) {
- _api_register( key+'()', function ( /* event, handler */ ) {
- var args = Array.prototype.slice.call(arguments);
-
- // Add the `dt` namespace automatically if it isn't already present
- args[0] = $.map( args[0].split( /\s/ ), function ( e ) {
- return ! e.match(/\.dt\b/) ?
- e+'.dt' :
- e;
- } ).join( ' ' );
-
- var inst = $( this.tables().nodes() );
- inst[key].apply( inst, args );
- return this;
- } );
- } );
-
-
- _api_register( 'clear()', function () {
- return this.iterator( 'table', function ( settings ) {
- _fnClearTable( settings );
- } );
- } );
-
-
- _api_register( 'settings()', function () {
- return new _Api( this.context, this.context );
- } );
-
-
- _api_register( 'init()', function () {
- var ctx = this.context;
- return ctx.length ? ctx[0].oInit : null;
- } );
-
-
- _api_register( 'data()', function () {
- return this.iterator( 'table', function ( settings ) {
- return _pluck( settings.aoData, '_aData' );
- } ).flatten();
- } );
-
-
- _api_register( 'destroy()', function ( remove ) {
- remove = remove || false;
-
- return this.iterator( 'table', function ( settings ) {
- var orig = settings.nTableWrapper.parentNode;
- var classes = settings.oClasses;
- var table = settings.nTable;
- var tbody = settings.nTBody;
- var thead = settings.nTHead;
- var tfoot = settings.nTFoot;
- var jqTable = $(table);
- var jqTbody = $(tbody);
- var jqWrapper = $(settings.nTableWrapper);
- var rows = $.map( settings.aoData, function (r) { return r.nTr; } );
- var i, ien;
-
- // Flag to note that the table is currently being destroyed - no action
- // should be taken
- settings.bDestroying = true;
-
- // Fire off the destroy callbacks for plug-ins etc
- _fnCallbackFire( settings, "aoDestroyCallback", "destroy", [settings] );
-
- // If not being removed from the document, make all columns visible
- if ( ! remove ) {
- new _Api( settings ).columns().visible( true );
- }
-
- // Blitz all `DT` namespaced events (these are internal events, the
- // lowercase, `dt` events are user subscribed and they are responsible
- // for removing them
- jqWrapper.off('.DT').find(':not(tbody *)').off('.DT');
- $(window).off('.DT-'+settings.sInstance);
-
- // When scrolling we had to break the table up - restore it
- if ( table != thead.parentNode ) {
- jqTable.children('thead').detach();
- jqTable.append( thead );
- }
-
- if ( tfoot && table != tfoot.parentNode ) {
- jqTable.children('tfoot').detach();
- jqTable.append( tfoot );
- }
-
- settings.aaSorting = [];
- settings.aaSortingFixed = [];
- _fnSortingClasses( settings );
-
- $( rows ).removeClass( settings.asStripeClasses.join(' ') );
-
- $('th, td', thead).removeClass( classes.sSortable+' '+
- classes.sSortableAsc+' '+classes.sSortableDesc+' '+classes.sSortableNone
- );
-
- // Add the TR elements back into the table in their original order
- jqTbody.children().detach();
- jqTbody.append( rows );
-
- // Remove the DataTables generated nodes, events and classes
- var removedMethod = remove ? 'remove' : 'detach';
- jqTable[ removedMethod ]();
- jqWrapper[ removedMethod ]();
-
- // If we need to reattach the table to the document
- if ( ! remove && orig ) {
- // insertBefore acts like appendChild if !arg[1]
- orig.insertBefore( table, settings.nTableReinsertBefore );
-
- // Restore the width of the original table - was read from the style property,
- // so we can restore directly to that
- jqTable
- .css( 'width', settings.sDestroyWidth )
- .removeClass( classes.sTable );
-
- // If the were originally stripe classes - then we add them back here.
- // Note this is not fool proof (for example if not all rows had stripe
- // classes - but it's a good effort without getting carried away
- ien = settings.asDestroyStripes.length;
-
- if ( ien ) {
- jqTbody.children().each( function (i) {
- $(this).addClass( settings.asDestroyStripes[i % ien] );
- } );
- }
- }
-
- /* Remove the settings object from the settings array */
- var idx = $.inArray( settings, DataTable.settings );
- if ( idx !== -1 ) {
- DataTable.settings.splice( idx, 1 );
- }
- } );
- } );
-
-
- // Add the `every()` method for rows, columns and cells in a compact form
- $.each( [ 'column', 'row', 'cell' ], function ( i, type ) {
- _api_register( type+'s().every()', function ( fn ) {
- var opts = this.selector.opts;
- var api = this;
-
- return this.iterator( type, function ( settings, arg1, arg2, arg3, arg4 ) {
- // Rows and columns:
- // arg1 - index
- // arg2 - table counter
- // arg3 - loop counter
- // arg4 - undefined
- // Cells:
- // arg1 - row index
- // arg2 - column index
- // arg3 - table counter
- // arg4 - loop counter
- fn.call(
- api[ type ](
- arg1,
- type==='cell' ? arg2 : opts,
- type==='cell' ? opts : undefined
- ),
- arg1, arg2, arg3, arg4
- );
- } );
- } );
- } );
-
-
- // i18n method for extensions to be able to use the language object from the
- // DataTable
- _api_register( 'i18n()', function ( token, def, plural ) {
- var ctx = this.context[0];
- var resolved = _fnGetObjectDataFn( token )( ctx.oLanguage );
-
- if ( resolved === undefined ) {
- resolved = def;
- }
-
- if ( plural !== undefined && $.isPlainObject( resolved ) ) {
- resolved = resolved[ plural ] !== undefined ?
- resolved[ plural ] :
- resolved._;
- }
-
- return resolved.replace( '%d', plural ); // nb: plural might be undefined,
- } );
-
- /**
- * Version string for plug-ins to check compatibility. Allowed format is
- * `a.b.c-d` where: a:int, b:int, c:int, d:string(dev|beta|alpha). `d` is used
- * only for non-release builds. See http://semver.org/ for more information.
- * @member
- * @type string
- * @default Version number
- */
- DataTable.version = "1.10.18";
-
- /**
- * Private data store, containing all of the settings objects that are
- * created for the tables on a given page.
- *
- * Note that the `DataTable.settings` object is aliased to
- * `jQuery.fn.dataTableExt` through which it may be accessed and
- * manipulated, or `jQuery.fn.dataTable.settings`.
- * @member
- * @type array
- * @default []
- * @private
- */
- DataTable.settings = [];
-
- /**
- * Object models container, for the various models that DataTables has
- * available to it. These models define the objects that are used to hold
- * the active state and configuration of the table.
- * @namespace
- */
- DataTable.models = {};
-
-
-
- /**
- * Template object for the way in which DataTables holds information about
- * search information for the global filter and individual column filters.
- * @namespace
- */
- DataTable.models.oSearch = {
- /**
- * Flag to indicate if the filtering should be case insensitive or not
- * @type boolean
- * @default true
- */
- "bCaseInsensitive": true,
-
- /**
- * Applied search term
- * @type string
- * @default Empty string
- */
- "sSearch": "",
-
- /**
- * Flag to indicate if the search term should be interpreted as a
- * regular expression (true) or not (false) and therefore and special
- * regex characters escaped.
- * @type boolean
- * @default false
- */
- "bRegex": false,
-
- /**
- * Flag to indicate if DataTables is to use its smart filtering or not.
- * @type boolean
- * @default true
- */
- "bSmart": true
- };
-
-
-
-
- /**
- * Template object for the way in which DataTables holds information about
- * each individual row. This is the object format used for the settings
- * aoData array.
- * @namespace
- */
- DataTable.models.oRow = {
- /**
- * TR element for the row
- * @type node
- * @default null
- */
- "nTr": null,
-
- /**
- * Array of TD elements for each row. This is null until the row has been
- * created.
- * @type array nodes
- * @default []
- */
- "anCells": null,
-
- /**
- * Data object from the original data source for the row. This is either
- * an array if using the traditional form of DataTables, or an object if
- * using mData options. The exact type will depend on the passed in
- * data from the data source, or will be an array if using DOM a data
- * source.
- * @type array|object
- * @default []
- */
- "_aData": [],
-
- /**
- * Sorting data cache - this array is ostensibly the same length as the
- * number of columns (although each index is generated only as it is
- * needed), and holds the data that is used for sorting each column in the
- * row. We do this cache generation at the start of the sort in order that
- * the formatting of the sort data need be done only once for each cell
- * per sort. This array should not be read from or written to by anything
- * other than the master sorting methods.
- * @type array
- * @default null
- * @private
- */
- "_aSortData": null,
-
- /**
- * Per cell filtering data cache. As per the sort data cache, used to
- * increase the performance of the filtering in DataTables
- * @type array
- * @default null
- * @private
- */
- "_aFilterData": null,
-
- /**
- * Filtering data cache. This is the same as the cell filtering cache, but
- * in this case a string rather than an array. This is easily computed with
- * a join on `_aFilterData`, but is provided as a cache so the join isn't
- * needed on every search (memory traded for performance)
- * @type array
- * @default null
- * @private
- */
- "_sFilterRow": null,
-
- /**
- * Cache of the class name that DataTables has applied to the row, so we
- * can quickly look at this variable rather than needing to do a DOM check
- * on className for the nTr property.
- * @type string
- * @default Empty string
- * @private
- */
- "_sRowStripe": "",
-
- /**
- * Denote if the original data source was from the DOM, or the data source
- * object. This is used for invalidating data, so DataTables can
- * automatically read data from the original source, unless uninstructed
- * otherwise.
- * @type string
- * @default null
- * @private
- */
- "src": null,
-
- /**
- * Index in the aoData array. This saves an indexOf lookup when we have the
- * object, but want to know the index
- * @type integer
- * @default -1
- * @private
- */
- "idx": -1
- };
-
-
- /**
- * Template object for the column information object in DataTables. This object
- * is held in the settings aoColumns array and contains all the information that
- * DataTables needs about each individual column.
- *
- * Note that this object is related to {@link DataTable.defaults.column}
- * but this one is the internal data store for DataTables's cache of columns.
- * It should NOT be manipulated outside of DataTables. Any configuration should
- * be done through the initialisation options.
- * @namespace
- */
- DataTable.models.oColumn = {
- /**
- * Column index. This could be worked out on-the-fly with $.inArray, but it
- * is faster to just hold it as a variable
- * @type integer
- * @default null
- */
- "idx": null,
-
- /**
- * A list of the columns that sorting should occur on when this column
- * is sorted. That this property is an array allows multi-column sorting
- * to be defined for a column (for example first name / last name columns
- * would benefit from this). The values are integers pointing to the
- * columns to be sorted on (typically it will be a single integer pointing
- * at itself, but that doesn't need to be the case).
- * @type array
- */
- "aDataSort": null,
-
- /**
- * Define the sorting directions that are applied to the column, in sequence
- * as the column is repeatedly sorted upon - i.e. the first value is used
- * as the sorting direction when the column if first sorted (clicked on).
- * Sort it again (click again) and it will move on to the next index.
- * Repeat until loop.
- * @type array
- */
- "asSorting": null,
-
- /**
- * Flag to indicate if the column is searchable, and thus should be included
- * in the filtering or not.
- * @type boolean
- */
- "bSearchable": null,
-
- /**
- * Flag to indicate if the column is sortable or not.
- * @type boolean
- */
- "bSortable": null,
-
- /**
- * Flag to indicate if the column is currently visible in the table or not
- * @type boolean
- */
- "bVisible": null,
-
- /**
- * Store for manual type assignment using the `column.type` option. This
- * is held in store so we can manipulate the column's `sType` property.
- * @type string
- * @default null
- * @private
- */
- "_sManualType": null,
-
- /**
- * Flag to indicate if HTML5 data attributes should be used as the data
- * source for filtering or sorting. True is either are.
- * @type boolean
- * @default false
- * @private
- */
- "_bAttrSrc": false,
-
- /**
- * Developer definable function that is called whenever a cell is created (Ajax source,
- * etc) or processed for input (DOM source). This can be used as a compliment to mRender
- * allowing you to modify the DOM element (add background colour for example) when the
- * element is available.
- * @type function
- * @param {element} nTd The TD node that has been created
- * @param {*} sData The Data for the cell
- * @param {array|object} oData The data for the whole row
- * @param {int} iRow The row index for the aoData data store
- * @default null
- */
- "fnCreatedCell": null,
-
- /**
- * Function to get data from a cell in a column. You should never
- * access data directly through _aData internally in DataTables - always use
- * the method attached to this property. It allows mData to function as
- * required. This function is automatically assigned by the column
- * initialisation method
- * @type function
- * @param {array|object} oData The data array/object for the array
- * (i.e. aoData[]._aData)
- * @param {string} sSpecific The specific data type you want to get -
- * 'display', 'type' 'filter' 'sort'
- * @returns {*} The data for the cell from the given row's data
- * @default null
- */
- "fnGetData": null,
-
- /**
- * Function to set data for a cell in the column. You should never
- * set the data directly to _aData internally in DataTables - always use
- * this method. It allows mData to function as required. This function
- * is automatically assigned by the column initialisation method
- * @type function
- * @param {array|object} oData The data array/object for the array
- * (i.e. aoData[]._aData)
- * @param {*} sValue Value to set
- * @default null
- */
- "fnSetData": null,
-
- /**
- * Property to read the value for the cells in the column from the data
- * source array / object. If null, then the default content is used, if a
- * function is given then the return from the function is used.
- * @type function|int|string|null
- * @default null
- */
- "mData": null,
-
- /**
- * Partner property to mData which is used (only when defined) to get
- * the data - i.e. it is basically the same as mData, but without the
- * 'set' option, and also the data fed to it is the result from mData.
- * This is the rendering method to match the data method of mData.
- * @type function|int|string|null
- * @default null
- */
- "mRender": null,
-
- /**
- * Unique header TH/TD element for this column - this is what the sorting
- * listener is attached to (if sorting is enabled.)
- * @type node
- * @default null
- */
- "nTh": null,
-
- /**
- * Unique footer TH/TD element for this column (if there is one). Not used
- * in DataTables as such, but can be used for plug-ins to reference the
- * footer for each column.
- * @type node
- * @default null
- */
- "nTf": null,
-
- /**
- * The class to apply to all TD elements in the table's TBODY for the column
- * @type string
- * @default null
- */
- "sClass": null,
-
- /**
- * When DataTables calculates the column widths to assign to each column,
- * it finds the longest string in each column and then constructs a
- * temporary table and reads the widths from that. The problem with this
- * is that "mmm" is much wider then "iiii", but the latter is a longer
- * string - thus the calculation can go wrong (doing it properly and putting
- * it into an DOM object and measuring that is horribly(!) slow). Thus as
- * a "work around" we provide this option. It will append its value to the
- * text that is found to be the longest string for the column - i.e. padding.
- * @type string
- */
- "sContentPadding": null,
-
- /**
- * Allows a default value to be given for a column's data, and will be used
- * whenever a null data source is encountered (this can be because mData
- * is set to null, or because the data source itself is null).
- * @type string
- * @default null
- */
- "sDefaultContent": null,
-
- /**
- * Name for the column, allowing reference to the column by name as well as
- * by index (needs a lookup to work by name).
- * @type string
- */
- "sName": null,
-
- /**
- * Custom sorting data type - defines which of the available plug-ins in
- * afnSortData the custom sorting will use - if any is defined.
- * @type string
- * @default std
- */
- "sSortDataType": 'std',
-
- /**
- * Class to be applied to the header element when sorting on this column
- * @type string
- * @default null
- */
- "sSortingClass": null,
-
- /**
- * Class to be applied to the header element when sorting on this column -
- * when jQuery UI theming is used.
- * @type string
- * @default null
- */
- "sSortingClassJUI": null,
-
- /**
- * Title of the column - what is seen in the TH element (nTh).
- * @type string
- */
- "sTitle": null,
-
- /**
- * Column sorting and filtering type
- * @type string
- * @default null
- */
- "sType": null,
-
- /**
- * Width of the column
- * @type string
- * @default null
- */
- "sWidth": null,
-
- /**
- * Width of the column when it was first "encountered"
- * @type string
- * @default null
- */
- "sWidthOrig": null
- };
-
-
- /*
- * Developer note: The properties of the object below are given in Hungarian
- * notation, that was used as the interface for DataTables prior to v1.10, however
- * from v1.10 onwards the primary interface is camel case. In order to avoid
- * breaking backwards compatibility utterly with this change, the Hungarian
- * version is still, internally the primary interface, but is is not documented
- * - hence the @name tags in each doc comment. This allows a Javascript function
- * to create a map from Hungarian notation to camel case (going the other direction
- * would require each property to be listed, which would at around 3K to the size
- * of DataTables, while this method is about a 0.5K hit.
- *
- * Ultimately this does pave the way for Hungarian notation to be dropped
- * completely, but that is a massive amount of work and will break current
- * installs (therefore is on-hold until v2).
- */
-
- /**
- * Initialisation options that can be given to DataTables at initialisation
- * time.
- * @namespace
- */
- DataTable.defaults = {
- /**
- * An array of data to use for the table, passed in at initialisation which
- * will be used in preference to any data which is already in the DOM. This is
- * particularly useful for constructing tables purely in Javascript, for
- * example with a custom Ajax call.
- * @type array
- * @default null
- *
- * @dtopt Option
- * @name DataTable.defaults.data
- *
- * @example
- * // Using a 2D array data source
- * $(document).ready( function () {
- * $('#example').dataTable( {
- * "data": [
- * ['Trident', 'Internet Explorer 4.0', 'Win 95+', 4, 'X'],
- * ['Trident', 'Internet Explorer 5.0', 'Win 95+', 5, 'C'],
- * ],
- * "columns": [
- * { "title": "Engine" },
- * { "title": "Browser" },
- * { "title": "Platform" },
- * { "title": "Version" },
- * { "title": "Grade" }
- * ]
- * } );
- * } );
- *
- * @example
- * // Using an array of objects as a data source (`data`)
- * $(document).ready( function () {
- * $('#example').dataTable( {
- * "data": [
- * {
- * "engine": "Trident",
- * "browser": "Internet Explorer 4.0",
- * "platform": "Win 95+",
- * "version": 4,
- * "grade": "X"
- * },
- * {
- * "engine": "Trident",
- * "browser": "Internet Explorer 5.0",
- * "platform": "Win 95+",
- * "version": 5,
- * "grade": "C"
- * }
- * ],
- * "columns": [
- * { "title": "Engine", "data": "engine" },
- * { "title": "Browser", "data": "browser" },
- * { "title": "Platform", "data": "platform" },
- * { "title": "Version", "data": "version" },
- * { "title": "Grade", "data": "grade" }
- * ]
- * } );
- * } );
- */
- "aaData": null,
-
-
- /**
- * If ordering is enabled, then DataTables will perform a first pass sort on
- * initialisation. You can define which column(s) the sort is performed
- * upon, and the sorting direction, with this variable. The `sorting` array
- * should contain an array for each column to be sorted initially containing
- * the column's index and a direction string ('asc' or 'desc').
- * @type array
- * @default [[0,'asc']]
- *
- * @dtopt Option
- * @name DataTable.defaults.order
- *
- * @example
- * // Sort by 3rd column first, and then 4th column
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "order": [[2,'asc'], [3,'desc']]
- * } );
- * } );
- *
- * // No initial sorting
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "order": []
- * } );
- * } );
- */
- "aaSorting": [[0,'asc']],
-
-
- /**
- * This parameter is basically identical to the `sorting` parameter, but
- * cannot be overridden by user interaction with the table. What this means
- * is that you could have a column (visible or hidden) which the sorting
- * will always be forced on first - any sorting after that (from the user)
- * will then be performed as required. This can be useful for grouping rows
- * together.
- * @type array
- * @default null
- *
- * @dtopt Option
- * @name DataTable.defaults.orderFixed
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "orderFixed": [[0,'asc']]
- * } );
- * } )
- */
- "aaSortingFixed": [],
-
-
- /**
- * DataTables can be instructed to load data to display in the table from a
- * Ajax source. This option defines how that Ajax call is made and where to.
- *
- * The `ajax` property has three different modes of operation, depending on
- * how it is defined. These are:
- *
- * * `string` - Set the URL from where the data should be loaded from.
- * * `object` - Define properties for `jQuery.ajax`.
- * * `function` - Custom data get function
- *
- * `string`
- * --------
- *
- * As a string, the `ajax` property simply defines the URL from which
- * DataTables will load data.
- *
- * `object`
- * --------
- *
- * As an object, the parameters in the object are passed to
- * [jQuery.ajax](http://api.jquery.com/jQuery.ajax/) allowing fine control
- * of the Ajax request. DataTables has a number of default parameters which
- * you can override using this option. Please refer to the jQuery
- * documentation for a full description of the options available, although
- * the following parameters provide additional options in DataTables or
- * require special consideration:
- *
- * * `data` - As with jQuery, `data` can be provided as an object, but it
- * can also be used as a function to manipulate the data DataTables sends
- * to the server. The function takes a single parameter, an object of
- * parameters with the values that DataTables has readied for sending. An
- * object may be returned which will be merged into the DataTables
- * defaults, or you can add the items to the object that was passed in and
- * not return anything from the function. This supersedes `fnServerParams`
- * from DataTables 1.9-.
- *
- * * `dataSrc` - By default DataTables will look for the property `data` (or
- * `aaData` for compatibility with DataTables 1.9-) when obtaining data
- * from an Ajax source or for server-side processing - this parameter
- * allows that property to be changed. You can use Javascript dotted
- * object notation to get a data source for multiple levels of nesting, or
- * it my be used as a function. As a function it takes a single parameter,
- * the JSON returned from the server, which can be manipulated as
- * required, with the returned value being that used by DataTables as the
- * data source for the table. This supersedes `sAjaxDataProp` from
- * DataTables 1.9-.
- *
- * * `success` - Should not be overridden it is used internally in
- * DataTables. To manipulate / transform the data returned by the server
- * use `ajax.dataSrc`, or use `ajax` as a function (see below).
- *
- * `function`
- * ----------
- *
- * As a function, making the Ajax call is left up to yourself allowing
- * complete control of the Ajax request. Indeed, if desired, a method other
- * than Ajax could be used to obtain the required data, such as Web storage
- * or an AIR database.
- *
- * The function is given four parameters and no return is required. The
- * parameters are:
- *
- * 1. _object_ - Data to send to the server
- * 2. _function_ - Callback function that must be executed when the required
- * data has been obtained. That data should be passed into the callback
- * as the only parameter
- * 3. _object_ - DataTables settings object for the table
- *
- * Note that this supersedes `fnServerData` from DataTables 1.9-.
- *
- * @type string|object|function
- * @default null
- *
- * @dtopt Option
- * @name DataTable.defaults.ajax
- * @since 1.10.0
- *
- * @example
- * // Get JSON data from a file via Ajax.
- * // Note DataTables expects data in the form `{ data: [ ...data... ] }` by default).
- * $('#example').dataTable( {
- * "ajax": "data.json"
- * } );
- *
- * @example
- * // Get JSON data from a file via Ajax, using `dataSrc` to change
- * // `data` to `tableData` (i.e. `{ tableData: [ ...data... ] }`)
- * $('#example').dataTable( {
- * "ajax": {
- * "url": "data.json",
- * "dataSrc": "tableData"
- * }
- * } );
- *
- * @example
- * // Get JSON data from a file via Ajax, using `dataSrc` to read data
- * // from a plain array rather than an array in an object
- * $('#example').dataTable( {
- * "ajax": {
- * "url": "data.json",
- * "dataSrc": ""
- * }
- * } );
- *
- * @example
- * // Manipulate the data returned from the server - add a link to data
- * // (note this can, should, be done using `render` for the column - this
- * // is just a simple example of how the data can be manipulated).
- * $('#example').dataTable( {
- * "ajax": {
- * "url": "data.json",
- * "dataSrc": function ( json ) {
- * for ( var i=0, ien=json.length ; i
- *
a string - class name will be matched on the TH for the column
- *
0 or a positive integer - column index counting from the left
- *
a negative integer - column index counting from the right
- *
the string "_all" - all columns (i.e. assign a default)
- *
- * @member
- *
- * @name DataTable.defaults.columnDefs
- */
- "aoColumnDefs": null,
-
-
- /**
- * Basically the same as `search`, this parameter defines the individual column
- * filtering state at initialisation time. The array must be of the same size
- * as the number of columns, and each element be an object with the parameters
- * `search` and `escapeRegex` (the latter is optional). 'null' is also
- * accepted and the default will be used.
- * @type array
- * @default []
- *
- * @dtopt Option
- * @name DataTable.defaults.searchCols
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "searchCols": [
- * null,
- * { "search": "My filter" },
- * null,
- * { "search": "^[0-9]", "escapeRegex": false }
- * ]
- * } );
- * } )
- */
- "aoSearchCols": [],
-
-
- /**
- * An array of CSS classes that should be applied to displayed rows. This
- * array may be of any length, and DataTables will apply each class
- * sequentially, looping when required.
- * @type array
- * @default null Will take the values determined by the `oClasses.stripe*`
- * options
- *
- * @dtopt Option
- * @name DataTable.defaults.stripeClasses
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "stripeClasses": [ 'strip1', 'strip2', 'strip3' ]
- * } );
- * } )
- */
- "asStripeClasses": null,
-
-
- /**
- * Enable or disable automatic column width calculation. This can be disabled
- * as an optimisation (it takes some time to calculate the widths) if the
- * tables widths are passed in using `columns`.
- * @type boolean
- * @default true
- *
- * @dtopt Features
- * @name DataTable.defaults.autoWidth
- *
- * @example
- * $(document).ready( function () {
- * $('#example').dataTable( {
- * "autoWidth": false
- * } );
- * } );
- */
- "bAutoWidth": true,
-
-
- /**
- * Deferred rendering can provide DataTables with a huge speed boost when you
- * are using an Ajax or JS data source for the table. This option, when set to
- * true, will cause DataTables to defer the creation of the table elements for
- * each row until they are needed for a draw - saving a significant amount of
- * time.
- * @type boolean
- * @default false
- *
- * @dtopt Features
- * @name DataTable.defaults.deferRender
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "ajax": "sources/arrays.txt",
- * "deferRender": true
- * } );
- * } );
- */
- "bDeferRender": false,
-
-
- /**
- * Replace a DataTable which matches the given selector and replace it with
- * one which has the properties of the new initialisation object passed. If no
- * table matches the selector, then the new DataTable will be constructed as
- * per normal.
- * @type boolean
- * @default false
- *
- * @dtopt Options
- * @name DataTable.defaults.destroy
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "srollY": "200px",
- * "paginate": false
- * } );
- *
- * // Some time later....
- * $('#example').dataTable( {
- * "filter": false,
- * "destroy": true
- * } );
- * } );
- */
- "bDestroy": false,
-
-
- /**
- * Enable or disable filtering of data. Filtering in DataTables is "smart" in
- * that it allows the end user to input multiple words (space separated) and
- * will match a row containing those words, even if not in the order that was
- * specified (this allow matching across multiple columns). Note that if you
- * wish to use filtering in DataTables this must remain 'true' - to remove the
- * default filtering input box and retain filtering abilities, please use
- * {@link DataTable.defaults.dom}.
- * @type boolean
- * @default true
- *
- * @dtopt Features
- * @name DataTable.defaults.searching
- *
- * @example
- * $(document).ready( function () {
- * $('#example').dataTable( {
- * "searching": false
- * } );
- * } );
- */
- "bFilter": true,
-
-
- /**
- * Enable or disable the table information display. This shows information
- * about the data that is currently visible on the page, including information
- * about filtered data if that action is being performed.
- * @type boolean
- * @default true
- *
- * @dtopt Features
- * @name DataTable.defaults.info
- *
- * @example
- * $(document).ready( function () {
- * $('#example').dataTable( {
- * "info": false
- * } );
- * } );
- */
- "bInfo": true,
-
-
- /**
- * Allows the end user to select the size of a formatted page from a select
- * menu (sizes are 10, 25, 50 and 100). Requires pagination (`paginate`).
- * @type boolean
- * @default true
- *
- * @dtopt Features
- * @name DataTable.defaults.lengthChange
- *
- * @example
- * $(document).ready( function () {
- * $('#example').dataTable( {
- * "lengthChange": false
- * } );
- * } );
- */
- "bLengthChange": true,
-
-
- /**
- * Enable or disable pagination.
- * @type boolean
- * @default true
- *
- * @dtopt Features
- * @name DataTable.defaults.paging
- *
- * @example
- * $(document).ready( function () {
- * $('#example').dataTable( {
- * "paging": false
- * } );
- * } );
- */
- "bPaginate": true,
-
-
- /**
- * Enable or disable the display of a 'processing' indicator when the table is
- * being processed (e.g. a sort). This is particularly useful for tables with
- * large amounts of data where it can take a noticeable amount of time to sort
- * the entries.
- * @type boolean
- * @default false
- *
- * @dtopt Features
- * @name DataTable.defaults.processing
- *
- * @example
- * $(document).ready( function () {
- * $('#example').dataTable( {
- * "processing": true
- * } );
- * } );
- */
- "bProcessing": false,
-
-
- /**
- * Retrieve the DataTables object for the given selector. Note that if the
- * table has already been initialised, this parameter will cause DataTables
- * to simply return the object that has already been set up - it will not take
- * account of any changes you might have made to the initialisation object
- * passed to DataTables (setting this parameter to true is an acknowledgement
- * that you understand this). `destroy` can be used to reinitialise a table if
- * you need.
- * @type boolean
- * @default false
- *
- * @dtopt Options
- * @name DataTable.defaults.retrieve
- *
- * @example
- * $(document).ready( function() {
- * initTable();
- * tableActions();
- * } );
- *
- * function initTable ()
- * {
- * return $('#example').dataTable( {
- * "scrollY": "200px",
- * "paginate": false,
- * "retrieve": true
- * } );
- * }
- *
- * function tableActions ()
- * {
- * var table = initTable();
- * // perform API operations with oTable
- * }
- */
- "bRetrieve": false,
-
-
- /**
- * When vertical (y) scrolling is enabled, DataTables will force the height of
- * the table's viewport to the given height at all times (useful for layout).
- * However, this can look odd when filtering data down to a small data set,
- * and the footer is left "floating" further down. This parameter (when
- * enabled) will cause DataTables to collapse the table's viewport down when
- * the result set will fit within the given Y height.
- * @type boolean
- * @default false
- *
- * @dtopt Options
- * @name DataTable.defaults.scrollCollapse
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "scrollY": "200",
- * "scrollCollapse": true
- * } );
- * } );
- */
- "bScrollCollapse": false,
-
-
- /**
- * Configure DataTables to use server-side processing. Note that the
- * `ajax` parameter must also be given in order to give DataTables a
- * source to obtain the required data for each draw.
- * @type boolean
- * @default false
- *
- * @dtopt Features
- * @dtopt Server-side
- * @name DataTable.defaults.serverSide
- *
- * @example
- * $(document).ready( function () {
- * $('#example').dataTable( {
- * "serverSide": true,
- * "ajax": "xhr.php"
- * } );
- * } );
- */
- "bServerSide": false,
-
-
- /**
- * Enable or disable sorting of columns. Sorting of individual columns can be
- * disabled by the `sortable` option for each column.
- * @type boolean
- * @default true
- *
- * @dtopt Features
- * @name DataTable.defaults.ordering
- *
- * @example
- * $(document).ready( function () {
- * $('#example').dataTable( {
- * "ordering": false
- * } );
- * } );
- */
- "bSort": true,
-
-
- /**
- * Enable or display DataTables' ability to sort multiple columns at the
- * same time (activated by shift-click by the user).
- * @type boolean
- * @default true
- *
- * @dtopt Options
- * @name DataTable.defaults.orderMulti
- *
- * @example
- * // Disable multiple column sorting ability
- * $(document).ready( function () {
- * $('#example').dataTable( {
- * "orderMulti": false
- * } );
- * } );
- */
- "bSortMulti": true,
-
-
- /**
- * Allows control over whether DataTables should use the top (true) unique
- * cell that is found for a single column, or the bottom (false - default).
- * This is useful when using complex headers.
- * @type boolean
- * @default false
- *
- * @dtopt Options
- * @name DataTable.defaults.orderCellsTop
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "orderCellsTop": true
- * } );
- * } );
- */
- "bSortCellsTop": false,
-
-
- /**
- * Enable or disable the addition of the classes `sorting\_1`, `sorting\_2` and
- * `sorting\_3` to the columns which are currently being sorted on. This is
- * presented as a feature switch as it can increase processing time (while
- * classes are removed and added) so for large data sets you might want to
- * turn this off.
- * @type boolean
- * @default true
- *
- * @dtopt Features
- * @name DataTable.defaults.orderClasses
- *
- * @example
- * $(document).ready( function () {
- * $('#example').dataTable( {
- * "orderClasses": false
- * } );
- * } );
- */
- "bSortClasses": true,
-
-
- /**
- * Enable or disable state saving. When enabled HTML5 `localStorage` will be
- * used to save table display information such as pagination information,
- * display length, filtering and sorting. As such when the end user reloads
- * the page the display display will match what thy had previously set up.
- *
- * Due to the use of `localStorage` the default state saving is not supported
- * in IE6 or 7. If state saving is required in those browsers, use
- * `stateSaveCallback` to provide a storage solution such as cookies.
- * @type boolean
- * @default false
- *
- * @dtopt Features
- * @name DataTable.defaults.stateSave
- *
- * @example
- * $(document).ready( function () {
- * $('#example').dataTable( {
- * "stateSave": true
- * } );
- * } );
- */
- "bStateSave": false,
-
-
- /**
- * This function is called when a TR element is created (and all TD child
- * elements have been inserted), or registered if using a DOM source, allowing
- * manipulation of the TR element (adding classes etc).
- * @type function
- * @param {node} row "TR" element for the current row
- * @param {array} data Raw data array for this row
- * @param {int} dataIndex The index of this row in the internal aoData array
- *
- * @dtopt Callbacks
- * @name DataTable.defaults.createdRow
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "createdRow": function( row, data, dataIndex ) {
- * // Bold the grade for all 'A' grade browsers
- * if ( data[4] == "A" )
- * {
- * $('td:eq(4)', row).html( 'A' );
- * }
- * }
- * } );
- * } );
- */
- "fnCreatedRow": null,
-
-
- /**
- * This function is called on every 'draw' event, and allows you to
- * dynamically modify any aspect you want about the created DOM.
- * @type function
- * @param {object} settings DataTables settings object
- *
- * @dtopt Callbacks
- * @name DataTable.defaults.drawCallback
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "drawCallback": function( settings ) {
- * alert( 'DataTables has redrawn the table' );
- * }
- * } );
- * } );
- */
- "fnDrawCallback": null,
-
-
- /**
- * Identical to fnHeaderCallback() but for the table footer this function
- * allows you to modify the table footer on every 'draw' event.
- * @type function
- * @param {node} foot "TR" element for the footer
- * @param {array} data Full table data (as derived from the original HTML)
- * @param {int} start Index for the current display starting point in the
- * display array
- * @param {int} end Index for the current display ending point in the
- * display array
- * @param {array int} display Index array to translate the visual position
- * to the full data array
- *
- * @dtopt Callbacks
- * @name DataTable.defaults.footerCallback
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "footerCallback": function( tfoot, data, start, end, display ) {
- * tfoot.getElementsByTagName('th')[0].innerHTML = "Starting index is "+start;
- * }
- * } );
- * } )
- */
- "fnFooterCallback": null,
-
-
- /**
- * When rendering large numbers in the information element for the table
- * (i.e. "Showing 1 to 10 of 57 entries") DataTables will render large numbers
- * to have a comma separator for the 'thousands' units (e.g. 1 million is
- * rendered as "1,000,000") to help readability for the end user. This
- * function will override the default method DataTables uses.
- * @type function
- * @member
- * @param {int} toFormat number to be formatted
- * @returns {string} formatted string for DataTables to show the number
- *
- * @dtopt Callbacks
- * @name DataTable.defaults.formatNumber
- *
- * @example
- * // Format a number using a single quote for the separator (note that
- * // this can also be done with the language.thousands option)
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "formatNumber": function ( toFormat ) {
- * return toFormat.toString().replace(
- * /\B(?=(\d{3})+(?!\d))/g, "'"
- * );
- * };
- * } );
- * } );
- */
- "fnFormatNumber": function ( toFormat ) {
- return toFormat.toString().replace(
- /\B(?=(\d{3})+(?!\d))/g,
- this.oLanguage.sThousands
- );
- },
-
-
- /**
- * This function is called on every 'draw' event, and allows you to
- * dynamically modify the header row. This can be used to calculate and
- * display useful information about the table.
- * @type function
- * @param {node} head "TR" element for the header
- * @param {array} data Full table data (as derived from the original HTML)
- * @param {int} start Index for the current display starting point in the
- * display array
- * @param {int} end Index for the current display ending point in the
- * display array
- * @param {array int} display Index array to translate the visual position
- * to the full data array
- *
- * @dtopt Callbacks
- * @name DataTable.defaults.headerCallback
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "fheaderCallback": function( head, data, start, end, display ) {
- * head.getElementsByTagName('th')[0].innerHTML = "Displaying "+(end-start)+" records";
- * }
- * } );
- * } )
- */
- "fnHeaderCallback": null,
-
-
- /**
- * The information element can be used to convey information about the current
- * state of the table. Although the internationalisation options presented by
- * DataTables are quite capable of dealing with most customisations, there may
- * be times where you wish to customise the string further. This callback
- * allows you to do exactly that.
- * @type function
- * @param {object} oSettings DataTables settings object
- * @param {int} start Starting position in data for the draw
- * @param {int} end End position in data for the draw
- * @param {int} max Total number of rows in the table (regardless of
- * filtering)
- * @param {int} total Total number of rows in the data set, after filtering
- * @param {string} pre The string that DataTables has formatted using it's
- * own rules
- * @returns {string} The string to be displayed in the information element.
- *
- * @dtopt Callbacks
- * @name DataTable.defaults.infoCallback
- *
- * @example
- * $('#example').dataTable( {
- * "infoCallback": function( settings, start, end, max, total, pre ) {
- * return start +" to "+ end;
- * }
- * } );
- */
- "fnInfoCallback": null,
-
-
- /**
- * Called when the table has been initialised. Normally DataTables will
- * initialise sequentially and there will be no need for this function,
- * however, this does not hold true when using external language information
- * since that is obtained using an async XHR call.
- * @type function
- * @param {object} settings DataTables settings object
- * @param {object} json The JSON object request from the server - only
- * present if client-side Ajax sourced data is used
- *
- * @dtopt Callbacks
- * @name DataTable.defaults.initComplete
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "initComplete": function(settings, json) {
- * alert( 'DataTables has finished its initialisation.' );
- * }
- * } );
- * } )
- */
- "fnInitComplete": null,
-
-
- /**
- * Called at the very start of each table draw and can be used to cancel the
- * draw by returning false, any other return (including undefined) results in
- * the full draw occurring).
- * @type function
- * @param {object} settings DataTables settings object
- * @returns {boolean} False will cancel the draw, anything else (including no
- * return) will allow it to complete.
- *
- * @dtopt Callbacks
- * @name DataTable.defaults.preDrawCallback
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "preDrawCallback": function( settings ) {
- * if ( $('#test').val() == 1 ) {
- * return false;
- * }
- * }
- * } );
- * } );
- */
- "fnPreDrawCallback": null,
-
-
- /**
- * This function allows you to 'post process' each row after it have been
- * generated for each table draw, but before it is rendered on screen. This
- * function might be used for setting the row class name etc.
- * @type function
- * @param {node} row "TR" element for the current row
- * @param {array} data Raw data array for this row
- * @param {int} displayIndex The display index for the current table draw
- * @param {int} displayIndexFull The index of the data in the full list of
- * rows (after filtering)
- *
- * @dtopt Callbacks
- * @name DataTable.defaults.rowCallback
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "rowCallback": function( row, data, displayIndex, displayIndexFull ) {
- * // Bold the grade for all 'A' grade browsers
- * if ( data[4] == "A" ) {
- * $('td:eq(4)', row).html( 'A' );
- * }
- * }
- * } );
- * } );
- */
- "fnRowCallback": null,
-
-
- /**
- * __Deprecated__ The functionality provided by this parameter has now been
- * superseded by that provided through `ajax`, which should be used instead.
- *
- * This parameter allows you to override the default function which obtains
- * the data from the server so something more suitable for your application.
- * For example you could use POST data, or pull information from a Gears or
- * AIR database.
- * @type function
- * @member
- * @param {string} source HTTP source to obtain the data from (`ajax`)
- * @param {array} data A key/value pair object containing the data to send
- * to the server
- * @param {function} callback to be called on completion of the data get
- * process that will draw the data on the page.
- * @param {object} settings DataTables settings object
- *
- * @dtopt Callbacks
- * @dtopt Server-side
- * @name DataTable.defaults.serverData
- *
- * @deprecated 1.10. Please use `ajax` for this functionality now.
- */
- "fnServerData": null,
-
-
- /**
- * __Deprecated__ The functionality provided by this parameter has now been
- * superseded by that provided through `ajax`, which should be used instead.
- *
- * It is often useful to send extra data to the server when making an Ajax
- * request - for example custom filtering information, and this callback
- * function makes it trivial to send extra information to the server. The
- * passed in parameter is the data set that has been constructed by
- * DataTables, and you can add to this or modify it as you require.
- * @type function
- * @param {array} data Data array (array of objects which are name/value
- * pairs) that has been constructed by DataTables and will be sent to the
- * server. In the case of Ajax sourced data with server-side processing
- * this will be an empty array, for server-side processing there will be a
- * significant number of parameters!
- * @returns {undefined} Ensure that you modify the data array passed in,
- * as this is passed by reference.
- *
- * @dtopt Callbacks
- * @dtopt Server-side
- * @name DataTable.defaults.serverParams
- *
- * @deprecated 1.10. Please use `ajax` for this functionality now.
- */
- "fnServerParams": null,
-
-
- /**
- * Load the table state. With this function you can define from where, and how, the
- * state of a table is loaded. By default DataTables will load from `localStorage`
- * but you might wish to use a server-side database or cookies.
- * @type function
- * @member
- * @param {object} settings DataTables settings object
- * @param {object} callback Callback that can be executed when done. It
- * should be passed the loaded state object.
- * @return {object} The DataTables state object to be loaded
- *
- * @dtopt Callbacks
- * @name DataTable.defaults.stateLoadCallback
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "stateSave": true,
- * "stateLoadCallback": function (settings, callback) {
- * $.ajax( {
- * "url": "/state_load",
- * "dataType": "json",
- * "success": function (json) {
- * callback( json );
- * }
- * } );
- * }
- * } );
- * } );
- */
- "fnStateLoadCallback": function ( settings ) {
- try {
- return JSON.parse(
- (settings.iStateDuration === -1 ? sessionStorage : localStorage).getItem(
- 'DataTables_'+settings.sInstance+'_'+location.pathname
- )
- );
- } catch (e) {}
- },
-
-
- /**
- * Callback which allows modification of the saved state prior to loading that state.
- * This callback is called when the table is loading state from the stored data, but
- * prior to the settings object being modified by the saved state. Note that for
- * plug-in authors, you should use the `stateLoadParams` event to load parameters for
- * a plug-in.
- * @type function
- * @param {object} settings DataTables settings object
- * @param {object} data The state object that is to be loaded
- *
- * @dtopt Callbacks
- * @name DataTable.defaults.stateLoadParams
- *
- * @example
- * // Remove a saved filter, so filtering is never loaded
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "stateSave": true,
- * "stateLoadParams": function (settings, data) {
- * data.oSearch.sSearch = "";
- * }
- * } );
- * } );
- *
- * @example
- * // Disallow state loading by returning false
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "stateSave": true,
- * "stateLoadParams": function (settings, data) {
- * return false;
- * }
- * } );
- * } );
- */
- "fnStateLoadParams": null,
-
-
- /**
- * Callback that is called when the state has been loaded from the state saving method
- * and the DataTables settings object has been modified as a result of the loaded state.
- * @type function
- * @param {object} settings DataTables settings object
- * @param {object} data The state object that was loaded
- *
- * @dtopt Callbacks
- * @name DataTable.defaults.stateLoaded
- *
- * @example
- * // Show an alert with the filtering value that was saved
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "stateSave": true,
- * "stateLoaded": function (settings, data) {
- * alert( 'Saved filter was: '+data.oSearch.sSearch );
- * }
- * } );
- * } );
- */
- "fnStateLoaded": null,
-
-
- /**
- * Save the table state. This function allows you to define where and how the state
- * information for the table is stored By default DataTables will use `localStorage`
- * but you might wish to use a server-side database or cookies.
- * @type function
- * @member
- * @param {object} settings DataTables settings object
- * @param {object} data The state object to be saved
- *
- * @dtopt Callbacks
- * @name DataTable.defaults.stateSaveCallback
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "stateSave": true,
- * "stateSaveCallback": function (settings, data) {
- * // Send an Ajax request to the server with the state object
- * $.ajax( {
- * "url": "/state_save",
- * "data": data,
- * "dataType": "json",
- * "method": "POST"
- * "success": function () {}
- * } );
- * }
- * } );
- * } );
- */
- "fnStateSaveCallback": function ( settings, data ) {
- try {
- (settings.iStateDuration === -1 ? sessionStorage : localStorage).setItem(
- 'DataTables_'+settings.sInstance+'_'+location.pathname,
- JSON.stringify( data )
- );
- } catch (e) {}
- },
-
-
- /**
- * Callback which allows modification of the state to be saved. Called when the table
- * has changed state a new state save is required. This method allows modification of
- * the state saving object prior to actually doing the save, including addition or
- * other state properties or modification. Note that for plug-in authors, you should
- * use the `stateSaveParams` event to save parameters for a plug-in.
- * @type function
- * @param {object} settings DataTables settings object
- * @param {object} data The state object to be saved
- *
- * @dtopt Callbacks
- * @name DataTable.defaults.stateSaveParams
- *
- * @example
- * // Remove a saved filter, so filtering is never saved
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "stateSave": true,
- * "stateSaveParams": function (settings, data) {
- * data.oSearch.sSearch = "";
- * }
- * } );
- * } );
- */
- "fnStateSaveParams": null,
-
-
- /**
- * Duration for which the saved state information is considered valid. After this period
- * has elapsed the state will be returned to the default.
- * Value is given in seconds.
- * @type int
- * @default 7200 (2 hours)
- *
- * @dtopt Options
- * @name DataTable.defaults.stateDuration
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "stateDuration": 60*60*24; // 1 day
- * } );
- * } )
- */
- "iStateDuration": 7200,
-
-
- /**
- * When enabled DataTables will not make a request to the server for the first
- * page draw - rather it will use the data already on the page (no sorting etc
- * will be applied to it), thus saving on an XHR at load time. `deferLoading`
- * is used to indicate that deferred loading is required, but it is also used
- * to tell DataTables how many records there are in the full table (allowing
- * the information element and pagination to be displayed correctly). In the case
- * where a filtering is applied to the table on initial load, this can be
- * indicated by giving the parameter as an array, where the first element is
- * the number of records available after filtering and the second element is the
- * number of records without filtering (allowing the table information element
- * to be shown correctly).
- * @type int | array
- * @default null
- *
- * @dtopt Options
- * @name DataTable.defaults.deferLoading
- *
- * @example
- * // 57 records available in the table, no filtering applied
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "serverSide": true,
- * "ajax": "scripts/server_processing.php",
- * "deferLoading": 57
- * } );
- * } );
- *
- * @example
- * // 57 records after filtering, 100 without filtering (an initial filter applied)
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "serverSide": true,
- * "ajax": "scripts/server_processing.php",
- * "deferLoading": [ 57, 100 ],
- * "search": {
- * "search": "my_filter"
- * }
- * } );
- * } );
- */
- "iDeferLoading": null,
-
-
- /**
- * Number of rows to display on a single page when using pagination. If
- * feature enabled (`lengthChange`) then the end user will be able to override
- * this to a custom setting using a pop-up menu.
- * @type int
- * @default 10
- *
- * @dtopt Options
- * @name DataTable.defaults.pageLength
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "pageLength": 50
- * } );
- * } )
- */
- "iDisplayLength": 10,
-
-
- /**
- * Define the starting point for data display when using DataTables with
- * pagination. Note that this parameter is the number of records, rather than
- * the page number, so if you have 10 records per page and want to start on
- * the third page, it should be "20".
- * @type int
- * @default 0
- *
- * @dtopt Options
- * @name DataTable.defaults.displayStart
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "displayStart": 20
- * } );
- * } )
- */
- "iDisplayStart": 0,
-
-
- /**
- * By default DataTables allows keyboard navigation of the table (sorting, paging,
- * and filtering) by adding a `tabindex` attribute to the required elements. This
- * allows you to tab through the controls and press the enter key to activate them.
- * The tabindex is default 0, meaning that the tab follows the flow of the document.
- * You can overrule this using this parameter if you wish. Use a value of -1 to
- * disable built-in keyboard navigation.
- * @type int
- * @default 0
- *
- * @dtopt Options
- * @name DataTable.defaults.tabIndex
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "tabIndex": 1
- * } );
- * } );
- */
- "iTabIndex": 0,
-
-
- /**
- * Classes that DataTables assigns to the various components and features
- * that it adds to the HTML table. This allows classes to be configured
- * during initialisation in addition to through the static
- * {@link DataTable.ext.oStdClasses} object).
- * @namespace
- * @name DataTable.defaults.classes
- */
- "oClasses": {},
-
-
- /**
- * All strings that DataTables uses in the user interface that it creates
- * are defined in this object, allowing you to modified them individually or
- * completely replace them all as required.
- * @namespace
- * @name DataTable.defaults.language
- */
- "oLanguage": {
- /**
- * Strings that are used for WAI-ARIA labels and controls only (these are not
- * actually visible on the page, but will be read by screenreaders, and thus
- * must be internationalised as well).
- * @namespace
- * @name DataTable.defaults.language.aria
- */
- "oAria": {
- /**
- * ARIA label that is added to the table headers when the column may be
- * sorted ascending by activing the column (click or return when focused).
- * Note that the column header is prefixed to this string.
- * @type string
- * @default : activate to sort column ascending
- *
- * @dtopt Language
- * @name DataTable.defaults.language.aria.sortAscending
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "language": {
- * "aria": {
- * "sortAscending": " - click/return to sort ascending"
- * }
- * }
- * } );
- * } );
- */
- "sSortAscending": ": activate to sort column ascending",
-
- /**
- * ARIA label that is added to the table headers when the column may be
- * sorted descending by activing the column (click or return when focused).
- * Note that the column header is prefixed to this string.
- * @type string
- * @default : activate to sort column ascending
- *
- * @dtopt Language
- * @name DataTable.defaults.language.aria.sortDescending
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "language": {
- * "aria": {
- * "sortDescending": " - click/return to sort descending"
- * }
- * }
- * } );
- * } );
- */
- "sSortDescending": ": activate to sort column descending"
- },
-
- /**
- * Pagination string used by DataTables for the built-in pagination
- * control types.
- * @namespace
- * @name DataTable.defaults.language.paginate
- */
- "oPaginate": {
- /**
- * Text to use when using the 'full_numbers' type of pagination for the
- * button to take the user to the first page.
- * @type string
- * @default First
- *
- * @dtopt Language
- * @name DataTable.defaults.language.paginate.first
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "language": {
- * "paginate": {
- * "first": "First page"
- * }
- * }
- * } );
- * } );
- */
- "sFirst": "First",
-
-
- /**
- * Text to use when using the 'full_numbers' type of pagination for the
- * button to take the user to the last page.
- * @type string
- * @default Last
- *
- * @dtopt Language
- * @name DataTable.defaults.language.paginate.last
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "language": {
- * "paginate": {
- * "last": "Last page"
- * }
- * }
- * } );
- * } );
- */
- "sLast": "Last",
-
-
- /**
- * Text to use for the 'next' pagination button (to take the user to the
- * next page).
- * @type string
- * @default Next
- *
- * @dtopt Language
- * @name DataTable.defaults.language.paginate.next
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "language": {
- * "paginate": {
- * "next": "Next page"
- * }
- * }
- * } );
- * } );
- */
- "sNext": "Next",
-
-
- /**
- * Text to use for the 'previous' pagination button (to take the user to
- * the previous page).
- * @type string
- * @default Previous
- *
- * @dtopt Language
- * @name DataTable.defaults.language.paginate.previous
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "language": {
- * "paginate": {
- * "previous": "Previous page"
- * }
- * }
- * } );
- * } );
- */
- "sPrevious": "Previous"
- },
-
- /**
- * This string is shown in preference to `zeroRecords` when the table is
- * empty of data (regardless of filtering). Note that this is an optional
- * parameter - if it is not given, the value of `zeroRecords` will be used
- * instead (either the default or given value).
- * @type string
- * @default No data available in table
- *
- * @dtopt Language
- * @name DataTable.defaults.language.emptyTable
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "language": {
- * "emptyTable": "No data available in table"
- * }
- * } );
- * } );
- */
- "sEmptyTable": "No data available in table",
-
-
- /**
- * This string gives information to the end user about the information
- * that is current on display on the page. The following tokens can be
- * used in the string and will be dynamically replaced as the table
- * display updates. This tokens can be placed anywhere in the string, or
- * removed as needed by the language requires:
- *
- * * `\_START\_` - Display index of the first record on the current page
- * * `\_END\_` - Display index of the last record on the current page
- * * `\_TOTAL\_` - Number of records in the table after filtering
- * * `\_MAX\_` - Number of records in the table without filtering
- * * `\_PAGE\_` - Current page number
- * * `\_PAGES\_` - Total number of pages of data in the table
- *
- * @type string
- * @default Showing _START_ to _END_ of _TOTAL_ entries
- *
- * @dtopt Language
- * @name DataTable.defaults.language.info
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "language": {
- * "info": "Showing page _PAGE_ of _PAGES_"
- * }
- * } );
- * } );
- */
- "sInfo": "Showing _START_ to _END_ of _TOTAL_ entries",
-
-
- /**
- * Display information string for when the table is empty. Typically the
- * format of this string should match `info`.
- * @type string
- * @default Showing 0 to 0 of 0 entries
- *
- * @dtopt Language
- * @name DataTable.defaults.language.infoEmpty
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "language": {
- * "infoEmpty": "No entries to show"
- * }
- * } );
- * } );
- */
- "sInfoEmpty": "Showing 0 to 0 of 0 entries",
-
-
- /**
- * When a user filters the information in a table, this string is appended
- * to the information (`info`) to give an idea of how strong the filtering
- * is. The variable _MAX_ is dynamically updated.
- * @type string
- * @default (filtered from _MAX_ total entries)
- *
- * @dtopt Language
- * @name DataTable.defaults.language.infoFiltered
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "language": {
- * "infoFiltered": " - filtering from _MAX_ records"
- * }
- * } );
- * } );
- */
- "sInfoFiltered": "(filtered from _MAX_ total entries)",
-
-
- /**
- * If can be useful to append extra information to the info string at times,
- * and this variable does exactly that. This information will be appended to
- * the `info` (`infoEmpty` and `infoFiltered` in whatever combination they are
- * being used) at all times.
- * @type string
- * @default Empty string
- *
- * @dtopt Language
- * @name DataTable.defaults.language.infoPostFix
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "language": {
- * "infoPostFix": "All records shown are derived from real information."
- * }
- * } );
- * } );
- */
- "sInfoPostFix": "",
-
-
- /**
- * This decimal place operator is a little different from the other
- * language options since DataTables doesn't output floating point
- * numbers, so it won't ever use this for display of a number. Rather,
- * what this parameter does is modify the sort methods of the table so
- * that numbers which are in a format which has a character other than
- * a period (`.`) as a decimal place will be sorted numerically.
- *
- * Note that numbers with different decimal places cannot be shown in
- * the same table and still be sortable, the table must be consistent.
- * However, multiple different tables on the page can use different
- * decimal place characters.
- * @type string
- * @default
- *
- * @dtopt Language
- * @name DataTable.defaults.language.decimal
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "language": {
- * "decimal": ","
- * "thousands": "."
- * }
- * } );
- * } );
- */
- "sDecimal": "",
-
-
- /**
- * DataTables has a build in number formatter (`formatNumber`) which is
- * used to format large numbers that are used in the table information.
- * By default a comma is used, but this can be trivially changed to any
- * character you wish with this parameter.
- * @type string
- * @default ,
- *
- * @dtopt Language
- * @name DataTable.defaults.language.thousands
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "language": {
- * "thousands": "'"
- * }
- * } );
- * } );
- */
- "sThousands": ",",
-
-
- /**
- * Detail the action that will be taken when the drop down menu for the
- * pagination length option is changed. The '_MENU_' variable is replaced
- * with a default select list of 10, 25, 50 and 100, and can be replaced
- * with a custom select box if required.
- * @type string
- * @default Show _MENU_ entries
- *
- * @dtopt Language
- * @name DataTable.defaults.language.lengthMenu
- *
- * @example
- * // Language change only
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "language": {
- * "lengthMenu": "Display _MENU_ records"
- * }
- * } );
- * } );
- *
- * @example
- * // Language and options change
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "language": {
- * "lengthMenu": 'Display records'
- * }
- * } );
- * } );
- */
- "sLengthMenu": "Show _MENU_ entries",
-
-
- /**
- * When using Ajax sourced data and during the first draw when DataTables is
- * gathering the data, this message is shown in an empty row in the table to
- * indicate to the end user the the data is being loaded. Note that this
- * parameter is not used when loading data by server-side processing, just
- * Ajax sourced data with client-side processing.
- * @type string
- * @default Loading...
- *
- * @dtopt Language
- * @name DataTable.defaults.language.loadingRecords
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "language": {
- * "loadingRecords": "Please wait - loading..."
- * }
- * } );
- * } );
- */
- "sLoadingRecords": "Loading...",
-
-
- /**
- * Text which is displayed when the table is processing a user action
- * (usually a sort command or similar).
- * @type string
- * @default Processing...
- *
- * @dtopt Language
- * @name DataTable.defaults.language.processing
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "language": {
- * "processing": "DataTables is currently busy"
- * }
- * } );
- * } );
- */
- "sProcessing": "Processing...",
-
-
- /**
- * Details the actions that will be taken when the user types into the
- * filtering input text box. The variable "_INPUT_", if used in the string,
- * is replaced with the HTML text box for the filtering input allowing
- * control over where it appears in the string. If "_INPUT_" is not given
- * then the input box is appended to the string automatically.
- * @type string
- * @default Search:
- *
- * @dtopt Language
- * @name DataTable.defaults.language.search
- *
- * @example
- * // Input text box will be appended at the end automatically
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "language": {
- * "search": "Filter records:"
- * }
- * } );
- * } );
- *
- * @example
- * // Specify where the filter should appear
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "language": {
- * "search": "Apply filter _INPUT_ to table"
- * }
- * } );
- * } );
- */
- "sSearch": "Search:",
-
-
- /**
- * Assign a `placeholder` attribute to the search `input` element
- * @type string
- * @default
- *
- * @dtopt Language
- * @name DataTable.defaults.language.searchPlaceholder
- */
- "sSearchPlaceholder": "",
-
-
- /**
- * All of the language information can be stored in a file on the
- * server-side, which DataTables will look up if this parameter is passed.
- * It must store the URL of the language file, which is in a JSON format,
- * and the object has the same properties as the oLanguage object in the
- * initialiser object (i.e. the above parameters). Please refer to one of
- * the example language files to see how this works in action.
- * @type string
- * @default Empty string - i.e. disabled
- *
- * @dtopt Language
- * @name DataTable.defaults.language.url
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "language": {
- * "url": "http://www.sprymedia.co.uk/dataTables/lang.txt"
- * }
- * } );
- * } );
- */
- "sUrl": "",
-
-
- /**
- * Text shown inside the table records when the is no information to be
- * displayed after filtering. `emptyTable` is shown when there is simply no
- * information in the table at all (regardless of filtering).
- * @type string
- * @default No matching records found
- *
- * @dtopt Language
- * @name DataTable.defaults.language.zeroRecords
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "language": {
- * "zeroRecords": "No records to display"
- * }
- * } );
- * } );
- */
- "sZeroRecords": "No matching records found"
- },
-
-
- /**
- * This parameter allows you to have define the global filtering state at
- * initialisation time. As an object the `search` parameter must be
- * defined, but all other parameters are optional. When `regex` is true,
- * the search string will be treated as a regular expression, when false
- * (default) it will be treated as a straight string. When `smart`
- * DataTables will use it's smart filtering methods (to word match at
- * any point in the data), when false this will not be done.
- * @namespace
- * @extends DataTable.models.oSearch
- *
- * @dtopt Options
- * @name DataTable.defaults.search
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "search": {"search": "Initial search"}
- * } );
- * } )
- */
- "oSearch": $.extend( {}, DataTable.models.oSearch ),
-
-
- /**
- * __Deprecated__ The functionality provided by this parameter has now been
- * superseded by that provided through `ajax`, which should be used instead.
- *
- * By default DataTables will look for the property `data` (or `aaData` for
- * compatibility with DataTables 1.9-) when obtaining data from an Ajax
- * source or for server-side processing - this parameter allows that
- * property to be changed. You can use Javascript dotted object notation to
- * get a data source for multiple levels of nesting.
- * @type string
- * @default data
- *
- * @dtopt Options
- * @dtopt Server-side
- * @name DataTable.defaults.ajaxDataProp
- *
- * @deprecated 1.10. Please use `ajax` for this functionality now.
- */
- "sAjaxDataProp": "data",
-
-
- /**
- * __Deprecated__ The functionality provided by this parameter has now been
- * superseded by that provided through `ajax`, which should be used instead.
- *
- * You can instruct DataTables to load data from an external
- * source using this parameter (use aData if you want to pass data in you
- * already have). Simply provide a url a JSON object can be obtained from.
- * @type string
- * @default null
- *
- * @dtopt Options
- * @dtopt Server-side
- * @name DataTable.defaults.ajaxSource
- *
- * @deprecated 1.10. Please use `ajax` for this functionality now.
- */
- "sAjaxSource": null,
-
-
- /**
- * This initialisation variable allows you to specify exactly where in the
- * DOM you want DataTables to inject the various controls it adds to the page
- * (for example you might want the pagination controls at the top of the
- * table). DIV elements (with or without a custom class) can also be added to
- * aid styling. The follow syntax is used:
- *
- * @type string
- * @default lfrtip (when `jQueryUI` is false)or
- * <"H"lfr>t<"F"ip> (when `jQueryUI` is true)
- *
- * @dtopt Options
- * @name DataTable.defaults.dom
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "dom": '<"top"i>rt<"bottom"flp><"clear">'
- * } );
- * } );
- */
- "sDom": "lfrtip",
-
-
- /**
- * Search delay option. This will throttle full table searches that use the
- * DataTables provided search input element (it does not effect calls to
- * `dt-api search()`, providing a delay before the search is made.
- * @type integer
- * @default 0
- *
- * @dtopt Options
- * @name DataTable.defaults.searchDelay
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "searchDelay": 200
- * } );
- * } )
- */
- "searchDelay": null,
-
-
- /**
- * DataTables features six different built-in options for the buttons to
- * display for pagination control:
- *
- * * `numbers` - Page number buttons only
- * * `simple` - 'Previous' and 'Next' buttons only
- * * 'simple_numbers` - 'Previous' and 'Next' buttons, plus page numbers
- * * `full` - 'First', 'Previous', 'Next' and 'Last' buttons
- * * `full_numbers` - 'First', 'Previous', 'Next' and 'Last' buttons, plus page numbers
- * * `first_last_numbers` - 'First' and 'Last' buttons, plus page numbers
- *
- * Further methods can be added using {@link DataTable.ext.oPagination}.
- * @type string
- * @default simple_numbers
- *
- * @dtopt Options
- * @name DataTable.defaults.pagingType
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "pagingType": "full_numbers"
- * } );
- * } )
- */
- "sPaginationType": "simple_numbers",
-
-
- /**
- * Enable horizontal scrolling. When a table is too wide to fit into a
- * certain layout, or you have a large number of columns in the table, you
- * can enable x-scrolling to show the table in a viewport, which can be
- * scrolled. This property can be `true` which will allow the table to
- * scroll horizontally when needed, or any CSS unit, or a number (in which
- * case it will be treated as a pixel measurement). Setting as simply `true`
- * is recommended.
- * @type boolean|string
- * @default blank string - i.e. disabled
- *
- * @dtopt Features
- * @name DataTable.defaults.scrollX
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "scrollX": true,
- * "scrollCollapse": true
- * } );
- * } );
- */
- "sScrollX": "",
-
-
- /**
- * This property can be used to force a DataTable to use more width than it
- * might otherwise do when x-scrolling is enabled. For example if you have a
- * table which requires to be well spaced, this parameter is useful for
- * "over-sizing" the table, and thus forcing scrolling. This property can by
- * any CSS unit, or a number (in which case it will be treated as a pixel
- * measurement).
- * @type string
- * @default blank string - i.e. disabled
- *
- * @dtopt Options
- * @name DataTable.defaults.scrollXInner
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "scrollX": "100%",
- * "scrollXInner": "110%"
- * } );
- * } );
- */
- "sScrollXInner": "",
-
-
- /**
- * Enable vertical scrolling. Vertical scrolling will constrain the DataTable
- * to the given height, and enable scrolling for any data which overflows the
- * current viewport. This can be used as an alternative to paging to display
- * a lot of data in a small area (although paging and scrolling can both be
- * enabled at the same time). This property can be any CSS unit, or a number
- * (in which case it will be treated as a pixel measurement).
- * @type string
- * @default blank string - i.e. disabled
- *
- * @dtopt Features
- * @name DataTable.defaults.scrollY
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "scrollY": "200px",
- * "paginate": false
- * } );
- * } );
- */
- "sScrollY": "",
-
-
- /**
- * __Deprecated__ The functionality provided by this parameter has now been
- * superseded by that provided through `ajax`, which should be used instead.
- *
- * Set the HTTP method that is used to make the Ajax call for server-side
- * processing or Ajax sourced data.
- * @type string
- * @default GET
- *
- * @dtopt Options
- * @dtopt Server-side
- * @name DataTable.defaults.serverMethod
- *
- * @deprecated 1.10. Please use `ajax` for this functionality now.
- */
- "sServerMethod": "GET",
-
-
- /**
- * DataTables makes use of renderers when displaying HTML elements for
- * a table. These renderers can be added or modified by plug-ins to
- * generate suitable mark-up for a site. For example the Bootstrap
- * integration plug-in for DataTables uses a paging button renderer to
- * display pagination buttons in the mark-up required by Bootstrap.
- *
- * For further information about the renderers available see
- * DataTable.ext.renderer
- * @type string|object
- * @default null
- *
- * @name DataTable.defaults.renderer
- *
- */
- "renderer": null,
-
-
- /**
- * Set the data property name that DataTables should use to get a row's id
- * to set as the `id` property in the node.
- * @type string
- * @default DT_RowId
- *
- * @name DataTable.defaults.rowId
- */
- "rowId": "DT_RowId"
- };
-
- _fnHungarianMap( DataTable.defaults );
-
-
-
- /*
- * Developer note - See note in model.defaults.js about the use of Hungarian
- * notation and camel case.
- */
-
- /**
- * Column options that can be given to DataTables at initialisation time.
- * @namespace
- */
- DataTable.defaults.column = {
- /**
- * Define which column(s) an order will occur on for this column. This
- * allows a column's ordering to take multiple columns into account when
- * doing a sort or use the data from a different column. For example first
- * name / last name columns make sense to do a multi-column sort over the
- * two columns.
- * @type array|int
- * @default null Takes the value of the column index automatically
- *
- * @name DataTable.defaults.column.orderData
- * @dtopt Columns
- *
- * @example
- * // Using `columnDefs`
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "columnDefs": [
- * { "orderData": [ 0, 1 ], "targets": [ 0 ] },
- * { "orderData": [ 1, 0 ], "targets": [ 1 ] },
- * { "orderData": 2, "targets": [ 2 ] }
- * ]
- * } );
- * } );
- *
- * @example
- * // Using `columns`
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "columns": [
- * { "orderData": [ 0, 1 ] },
- * { "orderData": [ 1, 0 ] },
- * { "orderData": 2 },
- * null,
- * null
- * ]
- * } );
- * } );
- */
- "aDataSort": null,
- "iDataSort": -1,
-
-
- /**
- * You can control the default ordering direction, and even alter the
- * behaviour of the sort handler (i.e. only allow ascending ordering etc)
- * using this parameter.
- * @type array
- * @default [ 'asc', 'desc' ]
- *
- * @name DataTable.defaults.column.orderSequence
- * @dtopt Columns
- *
- * @example
- * // Using `columnDefs`
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "columnDefs": [
- * { "orderSequence": [ "asc" ], "targets": [ 1 ] },
- * { "orderSequence": [ "desc", "asc", "asc" ], "targets": [ 2 ] },
- * { "orderSequence": [ "desc" ], "targets": [ 3 ] }
- * ]
- * } );
- * } );
- *
- * @example
- * // Using `columns`
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "columns": [
- * null,
- * { "orderSequence": [ "asc" ] },
- * { "orderSequence": [ "desc", "asc", "asc" ] },
- * { "orderSequence": [ "desc" ] },
- * null
- * ]
- * } );
- * } );
- */
- "asSorting": [ 'asc', 'desc' ],
-
-
- /**
- * Enable or disable filtering on the data in this column.
- * @type boolean
- * @default true
- *
- * @name DataTable.defaults.column.searchable
- * @dtopt Columns
- *
- * @example
- * // Using `columnDefs`
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "columnDefs": [
- * { "searchable": false, "targets": [ 0 ] }
- * ] } );
- * } );
- *
- * @example
- * // Using `columns`
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "columns": [
- * { "searchable": false },
- * null,
- * null,
- * null,
- * null
- * ] } );
- * } );
- */
- "bSearchable": true,
-
-
- /**
- * Enable or disable ordering on this column.
- * @type boolean
- * @default true
- *
- * @name DataTable.defaults.column.orderable
- * @dtopt Columns
- *
- * @example
- * // Using `columnDefs`
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "columnDefs": [
- * { "orderable": false, "targets": [ 0 ] }
- * ] } );
- * } );
- *
- * @example
- * // Using `columns`
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "columns": [
- * { "orderable": false },
- * null,
- * null,
- * null,
- * null
- * ] } );
- * } );
- */
- "bSortable": true,
-
-
- /**
- * Enable or disable the display of this column.
- * @type boolean
- * @default true
- *
- * @name DataTable.defaults.column.visible
- * @dtopt Columns
- *
- * @example
- * // Using `columnDefs`
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "columnDefs": [
- * { "visible": false, "targets": [ 0 ] }
- * ] } );
- * } );
- *
- * @example
- * // Using `columns`
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "columns": [
- * { "visible": false },
- * null,
- * null,
- * null,
- * null
- * ] } );
- * } );
- */
- "bVisible": true,
-
-
- /**
- * Developer definable function that is called whenever a cell is created (Ajax source,
- * etc) or processed for input (DOM source). This can be used as a compliment to mRender
- * allowing you to modify the DOM element (add background colour for example) when the
- * element is available.
- * @type function
- * @param {element} td The TD node that has been created
- * @param {*} cellData The Data for the cell
- * @param {array|object} rowData The data for the whole row
- * @param {int} row The row index for the aoData data store
- * @param {int} col The column index for aoColumns
- *
- * @name DataTable.defaults.column.createdCell
- * @dtopt Columns
- *
- * @example
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "columnDefs": [ {
- * "targets": [3],
- * "createdCell": function (td, cellData, rowData, row, col) {
- * if ( cellData == "1.7" ) {
- * $(td).css('color', 'blue')
- * }
- * }
- * } ]
- * });
- * } );
- */
- "fnCreatedCell": null,
-
-
- /**
- * This parameter has been replaced by `data` in DataTables to ensure naming
- * consistency. `dataProp` can still be used, as there is backwards
- * compatibility in DataTables for this option, but it is strongly
- * recommended that you use `data` in preference to `dataProp`.
- * @name DataTable.defaults.column.dataProp
- */
-
-
- /**
- * This property can be used to read data from any data source property,
- * including deeply nested objects / properties. `data` can be given in a
- * number of different ways which effect its behaviour:
- *
- * * `integer` - treated as an array index for the data source. This is the
- * default that DataTables uses (incrementally increased for each column).
- * * `string` - read an object property from the data source. There are
- * three 'special' options that can be used in the string to alter how
- * DataTables reads the data from the source object:
- * * `.` - Dotted Javascript notation. Just as you use a `.` in
- * Javascript to read from nested objects, so to can the options
- * specified in `data`. For example: `browser.version` or
- * `browser.name`. If your object parameter name contains a period, use
- * `\\` to escape it - i.e. `first\\.name`.
- * * `[]` - Array notation. DataTables can automatically combine data
- * from and array source, joining the data with the characters provided
- * between the two brackets. For example: `name[, ]` would provide a
- * comma-space separated list from the source array. If no characters
- * are provided between the brackets, the original array source is
- * returned.
- * * `()` - Function notation. Adding `()` to the end of a parameter will
- * execute a function of the name given. For example: `browser()` for a
- * simple function on the data source, `browser.version()` for a
- * function in a nested property or even `browser().version` to get an
- * object property if the function called returns an object. Note that
- * function notation is recommended for use in `render` rather than
- * `data` as it is much simpler to use as a renderer.
- * * `null` - use the original data source for the row rather than plucking
- * data directly from it. This action has effects on two other
- * initialisation options:
- * * `defaultContent` - When null is given as the `data` option and
- * `defaultContent` is specified for the column, the value defined by
- * `defaultContent` will be used for the cell.
- * * `render` - When null is used for the `data` option and the `render`
- * option is specified for the column, the whole data source for the
- * row is used for the renderer.
- * * `function` - the function given will be executed whenever DataTables
- * needs to set or get the data for a cell in the column. The function
- * takes three parameters:
- * * Parameters:
- * * `{array|object}` The data source for the row
- * * `{string}` The type call data requested - this will be 'set' when
- * setting data or 'filter', 'display', 'type', 'sort' or undefined
- * when gathering data. Note that when `undefined` is given for the
- * type DataTables expects to get the raw data for the object back<
- * * `{*}` Data to set when the second parameter is 'set'.
- * * Return:
- * * The return value from the function is not required when 'set' is
- * the type of call, but otherwise the return is what will be used
- * for the data requested.
- *
- * Note that `data` is a getter and setter option. If you just require
- * formatting of data for output, you will likely want to use `render` which
- * is simply a getter and thus simpler to use.
- *
- * Note that prior to DataTables 1.9.2 `data` was called `mDataProp`. The
- * name change reflects the flexibility of this property and is consistent
- * with the naming of mRender. If 'mDataProp' is given, then it will still
- * be used by DataTables, as it automatically maps the old name to the new
- * if required.
- *
- * @type string|int|function|null
- * @default null Use automatically calculated column index
- *
- * @name DataTable.defaults.column.data
- * @dtopt Columns
- *
- * @example
- * // Read table data from objects
- * // JSON structure for each row:
- * // {
- * // "engine": {value},
- * // "browser": {value},
- * // "platform": {value},
- * // "version": {value},
- * // "grade": {value}
- * // }
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "ajaxSource": "sources/objects.txt",
- * "columns": [
- * { "data": "engine" },
- * { "data": "browser" },
- * { "data": "platform" },
- * { "data": "version" },
- * { "data": "grade" }
- * ]
- * } );
- * } );
- *
- * @example
- * // Read information from deeply nested objects
- * // JSON structure for each row:
- * // {
- * // "engine": {value},
- * // "browser": {value},
- * // "platform": {
- * // "inner": {value}
- * // },
- * // "details": [
- * // {value}, {value}
- * // ]
- * // }
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "ajaxSource": "sources/deep.txt",
- * "columns": [
- * { "data": "engine" },
- * { "data": "browser" },
- * { "data": "platform.inner" },
- * { "data": "details.0" },
- * { "data": "details.1" }
- * ]
- * } );
- * } );
- *
- * @example
- * // Using `data` as a function to provide different information for
- * // sorting, filtering and display. In this case, currency (price)
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "columnDefs": [ {
- * "targets": [ 0 ],
- * "data": function ( source, type, val ) {
- * if (type === 'set') {
- * source.price = val;
- * // Store the computed dislay and filter values for efficiency
- * source.price_display = val=="" ? "" : "$"+numberFormat(val);
- * source.price_filter = val=="" ? "" : "$"+numberFormat(val)+" "+val;
- * return;
- * }
- * else if (type === 'display') {
- * return source.price_display;
- * }
- * else if (type === 'filter') {
- * return source.price_filter;
- * }
- * // 'sort', 'type' and undefined all just use the integer
- * return source.price;
- * }
- * } ]
- * } );
- * } );
- *
- * @example
- * // Using default content
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "columnDefs": [ {
- * "targets": [ 0 ],
- * "data": null,
- * "defaultContent": "Click to edit"
- * } ]
- * } );
- * } );
- *
- * @example
- * // Using array notation - outputting a list from an array
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "columnDefs": [ {
- * "targets": [ 0 ],
- * "data": "name[, ]"
- * } ]
- * } );
- * } );
- *
- */
- "mData": null,
-
-
- /**
- * This property is the rendering partner to `data` and it is suggested that
- * when you want to manipulate data for display (including filtering,
- * sorting etc) without altering the underlying data for the table, use this
- * property. `render` can be considered to be the the read only companion to
- * `data` which is read / write (then as such more complex). Like `data`
- * this option can be given in a number of different ways to effect its
- * behaviour:
- *
- * * `integer` - treated as an array index for the data source. This is the
- * default that DataTables uses (incrementally increased for each column).
- * * `string` - read an object property from the data source. There are
- * three 'special' options that can be used in the string to alter how
- * DataTables reads the data from the source object:
- * * `.` - Dotted Javascript notation. Just as you use a `.` in
- * Javascript to read from nested objects, so to can the options
- * specified in `data`. For example: `browser.version` or
- * `browser.name`. If your object parameter name contains a period, use
- * `\\` to escape it - i.e. `first\\.name`.
- * * `[]` - Array notation. DataTables can automatically combine data
- * from and array source, joining the data with the characters provided
- * between the two brackets. For example: `name[, ]` would provide a
- * comma-space separated list from the source array. If no characters
- * are provided between the brackets, the original array source is
- * returned.
- * * `()` - Function notation. Adding `()` to the end of a parameter will
- * execute a function of the name given. For example: `browser()` for a
- * simple function on the data source, `browser.version()` for a
- * function in a nested property or even `browser().version` to get an
- * object property if the function called returns an object.
- * * `object` - use different data for the different data types requested by
- * DataTables ('filter', 'display', 'type' or 'sort'). The property names
- * of the object is the data type the property refers to and the value can
- * defined using an integer, string or function using the same rules as
- * `render` normally does. Note that an `_` option _must_ be specified.
- * This is the default value to use if you haven't specified a value for
- * the data type requested by DataTables.
- * * `function` - the function given will be executed whenever DataTables
- * needs to set or get the data for a cell in the column. The function
- * takes three parameters:
- * * Parameters:
- * * {array|object} The data source for the row (based on `data`)
- * * {string} The type call data requested - this will be 'filter',
- * 'display', 'type' or 'sort'.
- * * {array|object} The full data source for the row (not based on
- * `data`)
- * * Return:
- * * The return value from the function is what will be used for the
- * data requested.
- *
- * @type string|int|function|object|null
- * @default null Use the data source value.
- *
- * @name DataTable.defaults.column.render
- * @dtopt Columns
- *
- * @example
- * // Create a comma separated list from an array of objects
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "ajaxSource": "sources/deep.txt",
- * "columns": [
- * { "data": "engine" },
- * { "data": "browser" },
- * {
- * "data": "platform",
- * "render": "[, ].name"
- * }
- * ]
- * } );
- * } );
- *
- * @example
- * // Execute a function to obtain data
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "columnDefs": [ {
- * "targets": [ 0 ],
- * "data": null, // Use the full data source object for the renderer's source
- * "render": "browserName()"
- * } ]
- * } );
- * } );
- *
- * @example
- * // As an object, extracting different data for the different types
- * // This would be used with a data source such as:
- * // { "phone": 5552368, "phone_filter": "5552368 555-2368", "phone_display": "555-2368" }
- * // Here the `phone` integer is used for sorting and type detection, while `phone_filter`
- * // (which has both forms) is used for filtering for if a user inputs either format, while
- * // the formatted phone number is the one that is shown in the table.
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "columnDefs": [ {
- * "targets": [ 0 ],
- * "data": null, // Use the full data source object for the renderer's source
- * "render": {
- * "_": "phone",
- * "filter": "phone_filter",
- * "display": "phone_display"
- * }
- * } ]
- * } );
- * } );
- *
- * @example
- * // Use as a function to create a link from the data source
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "columnDefs": [ {
- * "targets": [ 0 ],
- * "data": "download_link",
- * "render": function ( data, type, full ) {
- * return 'Download';
- * }
- * } ]
- * } );
- * } );
- */
- "mRender": null,
-
-
- /**
- * Change the cell type created for the column - either TD cells or TH cells. This
- * can be useful as TH cells have semantic meaning in the table body, allowing them
- * to act as a header for a row (you may wish to add scope='row' to the TH elements).
- * @type string
- * @default td
- *
- * @name DataTable.defaults.column.cellType
- * @dtopt Columns
- *
- * @example
- * // Make the first column use TH cells
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "columnDefs": [ {
- * "targets": [ 0 ],
- * "cellType": "th"
- * } ]
- * } );
- * } );
- */
- "sCellType": "td",
-
-
- /**
- * Class to give to each cell in this column.
- * @type string
- * @default Empty string
- *
- * @name DataTable.defaults.column.class
- * @dtopt Columns
- *
- * @example
- * // Using `columnDefs`
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "columnDefs": [
- * { "class": "my_class", "targets": [ 0 ] }
- * ]
- * } );
- * } );
- *
- * @example
- * // Using `columns`
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "columns": [
- * { "class": "my_class" },
- * null,
- * null,
- * null,
- * null
- * ]
- * } );
- * } );
- */
- "sClass": "",
-
- /**
- * When DataTables calculates the column widths to assign to each column,
- * it finds the longest string in each column and then constructs a
- * temporary table and reads the widths from that. The problem with this
- * is that "mmm" is much wider then "iiii", but the latter is a longer
- * string - thus the calculation can go wrong (doing it properly and putting
- * it into an DOM object and measuring that is horribly(!) slow). Thus as
- * a "work around" we provide this option. It will append its value to the
- * text that is found to be the longest string for the column - i.e. padding.
- * Generally you shouldn't need this!
- * @type string
- * @default Empty string
- *
- * @name DataTable.defaults.column.contentPadding
- * @dtopt Columns
- *
- * @example
- * // Using `columns`
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "columns": [
- * null,
- * null,
- * null,
- * {
- * "contentPadding": "mmm"
- * }
- * ]
- * } );
- * } );
- */
- "sContentPadding": "",
-
-
- /**
- * Allows a default value to be given for a column's data, and will be used
- * whenever a null data source is encountered (this can be because `data`
- * is set to null, or because the data source itself is null).
- * @type string
- * @default null
- *
- * @name DataTable.defaults.column.defaultContent
- * @dtopt Columns
- *
- * @example
- * // Using `columnDefs`
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "columnDefs": [
- * {
- * "data": null,
- * "defaultContent": "Edit",
- * "targets": [ -1 ]
- * }
- * ]
- * } );
- * } );
- *
- * @example
- * // Using `columns`
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "columns": [
- * null,
- * null,
- * null,
- * {
- * "data": null,
- * "defaultContent": "Edit"
- * }
- * ]
- * } );
- * } );
- */
- "sDefaultContent": null,
-
-
- /**
- * This parameter is only used in DataTables' server-side processing. It can
- * be exceptionally useful to know what columns are being displayed on the
- * client side, and to map these to database fields. When defined, the names
- * also allow DataTables to reorder information from the server if it comes
- * back in an unexpected order (i.e. if you switch your columns around on the
- * client-side, your server-side code does not also need updating).
- * @type string
- * @default Empty string
- *
- * @name DataTable.defaults.column.name
- * @dtopt Columns
- *
- * @example
- * // Using `columnDefs`
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "columnDefs": [
- * { "name": "engine", "targets": [ 0 ] },
- * { "name": "browser", "targets": [ 1 ] },
- * { "name": "platform", "targets": [ 2 ] },
- * { "name": "version", "targets": [ 3 ] },
- * { "name": "grade", "targets": [ 4 ] }
- * ]
- * } );
- * } );
- *
- * @example
- * // Using `columns`
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "columns": [
- * { "name": "engine" },
- * { "name": "browser" },
- * { "name": "platform" },
- * { "name": "version" },
- * { "name": "grade" }
- * ]
- * } );
- * } );
- */
- "sName": "",
-
-
- /**
- * Defines a data source type for the ordering which can be used to read
- * real-time information from the table (updating the internally cached
- * version) prior to ordering. This allows ordering to occur on user
- * editable elements such as form inputs.
- * @type string
- * @default std
- *
- * @name DataTable.defaults.column.orderDataType
- * @dtopt Columns
- *
- * @example
- * // Using `columnDefs`
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "columnDefs": [
- * { "orderDataType": "dom-text", "targets": [ 2, 3 ] },
- * { "type": "numeric", "targets": [ 3 ] },
- * { "orderDataType": "dom-select", "targets": [ 4 ] },
- * { "orderDataType": "dom-checkbox", "targets": [ 5 ] }
- * ]
- * } );
- * } );
- *
- * @example
- * // Using `columns`
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "columns": [
- * null,
- * null,
- * { "orderDataType": "dom-text" },
- * { "orderDataType": "dom-text", "type": "numeric" },
- * { "orderDataType": "dom-select" },
- * { "orderDataType": "dom-checkbox" }
- * ]
- * } );
- * } );
- */
- "sSortDataType": "std",
-
-
- /**
- * The title of this column.
- * @type string
- * @default null Derived from the 'TH' value for this column in the
- * original HTML table.
- *
- * @name DataTable.defaults.column.title
- * @dtopt Columns
- *
- * @example
- * // Using `columnDefs`
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "columnDefs": [
- * { "title": "My column title", "targets": [ 0 ] }
- * ]
- * } );
- * } );
- *
- * @example
- * // Using `columns`
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "columns": [
- * { "title": "My column title" },
- * null,
- * null,
- * null,
- * null
- * ]
- * } );
- * } );
- */
- "sTitle": null,
-
-
- /**
- * The type allows you to specify how the data for this column will be
- * ordered. Four types (string, numeric, date and html (which will strip
- * HTML tags before ordering)) are currently available. Note that only date
- * formats understood by Javascript's Date() object will be accepted as type
- * date. For example: "Mar 26, 2008 5:03 PM". May take the values: 'string',
- * 'numeric', 'date' or 'html' (by default). Further types can be adding
- * through plug-ins.
- * @type string
- * @default null Auto-detected from raw data
- *
- * @name DataTable.defaults.column.type
- * @dtopt Columns
- *
- * @example
- * // Using `columnDefs`
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "columnDefs": [
- * { "type": "html", "targets": [ 0 ] }
- * ]
- * } );
- * } );
- *
- * @example
- * // Using `columns`
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "columns": [
- * { "type": "html" },
- * null,
- * null,
- * null,
- * null
- * ]
- * } );
- * } );
- */
- "sType": null,
-
-
- /**
- * Defining the width of the column, this parameter may take any CSS value
- * (3em, 20px etc). DataTables applies 'smart' widths to columns which have not
- * been given a specific width through this interface ensuring that the table
- * remains readable.
- * @type string
- * @default null Automatic
- *
- * @name DataTable.defaults.column.width
- * @dtopt Columns
- *
- * @example
- * // Using `columnDefs`
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "columnDefs": [
- * { "width": "20%", "targets": [ 0 ] }
- * ]
- * } );
- * } );
- *
- * @example
- * // Using `columns`
- * $(document).ready( function() {
- * $('#example').dataTable( {
- * "columns": [
- * { "width": "20%" },
- * null,
- * null,
- * null,
- * null
- * ]
- * } );
- * } );
- */
- "sWidth": null
- };
-
- _fnHungarianMap( DataTable.defaults.column );
-
-
-
- /**
- * DataTables settings object - this holds all the information needed for a
- * given table, including configuration, data and current application of the
- * table options. DataTables does not have a single instance for each DataTable
- * with the settings attached to that instance, but rather instances of the
- * DataTable "class" are created on-the-fly as needed (typically by a
- * $().dataTable() call) and the settings object is then applied to that
- * instance.
- *
- * Note that this object is related to {@link DataTable.defaults} but this
- * one is the internal data store for DataTables's cache of columns. It should
- * NOT be manipulated outside of DataTables. Any configuration should be done
- * through the initialisation options.
- * @namespace
- * @todo Really should attach the settings object to individual instances so we
- * don't need to create new instances on each $().dataTable() call (if the
- * table already exists). It would also save passing oSettings around and
- * into every single function. However, this is a very significant
- * architecture change for DataTables and will almost certainly break
- * backwards compatibility with older installations. This is something that
- * will be done in 2.0.
- */
- DataTable.models.oSettings = {
- /**
- * Primary features of DataTables and their enablement state.
- * @namespace
- */
- "oFeatures": {
-
- /**
- * Flag to say if DataTables should automatically try to calculate the
- * optimum table and columns widths (true) or not (false).
- * Note that this parameter will be set by the initialisation routine. To
- * set a default use {@link DataTable.defaults}.
- * @type boolean
- */
- "bAutoWidth": null,
-
- /**
- * Delay the creation of TR and TD elements until they are actually
- * needed by a driven page draw. This can give a significant speed
- * increase for Ajax source and Javascript source data, but makes no
- * difference at all fro DOM and server-side processing tables.
- * Note that this parameter will be set by the initialisation routine. To
- * set a default use {@link DataTable.defaults}.
- * @type boolean
- */
- "bDeferRender": null,
-
- /**
- * Enable filtering on the table or not. Note that if this is disabled
- * then there is no filtering at all on the table, including fnFilter.
- * To just remove the filtering input use sDom and remove the 'f' option.
- * Note that this parameter will be set by the initialisation routine. To
- * set a default use {@link DataTable.defaults}.
- * @type boolean
- */
- "bFilter": null,
-
- /**
- * Table information element (the 'Showing x of y records' div) enable
- * flag.
- * Note that this parameter will be set by the initialisation routine. To
- * set a default use {@link DataTable.defaults}.
- * @type boolean
- */
- "bInfo": null,
-
- /**
- * Present a user control allowing the end user to change the page size
- * when pagination is enabled.
- * Note that this parameter will be set by the initialisation routine. To
- * set a default use {@link DataTable.defaults}.
- * @type boolean
- */
- "bLengthChange": null,
-
- /**
- * Pagination enabled or not. Note that if this is disabled then length
- * changing must also be disabled.
- * Note that this parameter will be set by the initialisation routine. To
- * set a default use {@link DataTable.defaults}.
- * @type boolean
- */
- "bPaginate": null,
-
- /**
- * Processing indicator enable flag whenever DataTables is enacting a
- * user request - typically an Ajax request for server-side processing.
- * Note that this parameter will be set by the initialisation routine. To
- * set a default use {@link DataTable.defaults}.
- * @type boolean
- */
- "bProcessing": null,
-
- /**
- * Server-side processing enabled flag - when enabled DataTables will
- * get all data from the server for every draw - there is no filtering,
- * sorting or paging done on the client-side.
- * Note that this parameter will be set by the initialisation routine. To
- * set a default use {@link DataTable.defaults}.
- * @type boolean
- */
- "bServerSide": null,
-
- /**
- * Sorting enablement flag.
- * Note that this parameter will be set by the initialisation routine. To
- * set a default use {@link DataTable.defaults}.
- * @type boolean
- */
- "bSort": null,
-
- /**
- * Multi-column sorting
- * Note that this parameter will be set by the initialisation routine. To
- * set a default use {@link DataTable.defaults}.
- * @type boolean
- */
- "bSortMulti": null,
-
- /**
- * Apply a class to the columns which are being sorted to provide a
- * visual highlight or not. This can slow things down when enabled since
- * there is a lot of DOM interaction.
- * Note that this parameter will be set by the initialisation routine. To
- * set a default use {@link DataTable.defaults}.
- * @type boolean
- */
- "bSortClasses": null,
-
- /**
- * State saving enablement flag.
- * Note that this parameter will be set by the initialisation routine. To
- * set a default use {@link DataTable.defaults}.
- * @type boolean
- */
- "bStateSave": null
- },
-
-
- /**
- * Scrolling settings for a table.
- * @namespace
- */
- "oScroll": {
- /**
- * When the table is shorter in height than sScrollY, collapse the
- * table container down to the height of the table (when true).
- * Note that this parameter will be set by the initialisation routine. To
- * set a default use {@link DataTable.defaults}.
- * @type boolean
- */
- "bCollapse": null,
-
- /**
- * Width of the scrollbar for the web-browser's platform. Calculated
- * during table initialisation.
- * @type int
- * @default 0
- */
- "iBarWidth": 0,
-
- /**
- * Viewport width for horizontal scrolling. Horizontal scrolling is
- * disabled if an empty string.
- * Note that this parameter will be set by the initialisation routine. To
- * set a default use {@link DataTable.defaults}.
- * @type string
- */
- "sX": null,
-
- /**
- * Width to expand the table to when using x-scrolling. Typically you
- * should not need to use this.
- * Note that this parameter will be set by the initialisation routine. To
- * set a default use {@link DataTable.defaults}.
- * @type string
- * @deprecated
- */
- "sXInner": null,
-
- /**
- * Viewport height for vertical scrolling. Vertical scrolling is disabled
- * if an empty string.
- * Note that this parameter will be set by the initialisation routine. To
- * set a default use {@link DataTable.defaults}.
- * @type string
- */
- "sY": null
- },
-
- /**
- * Language information for the table.
- * @namespace
- * @extends DataTable.defaults.oLanguage
- */
- "oLanguage": {
- /**
- * Information callback function. See
- * {@link DataTable.defaults.fnInfoCallback}
- * @type function
- * @default null
- */
- "fnInfoCallback": null
- },
-
- /**
- * Browser support parameters
- * @namespace
- */
- "oBrowser": {
- /**
- * Indicate if the browser incorrectly calculates width:100% inside a
- * scrolling element (IE6/7)
- * @type boolean
- * @default false
- */
- "bScrollOversize": false,
-
- /**
- * Determine if the vertical scrollbar is on the right or left of the
- * scrolling container - needed for rtl language layout, although not
- * all browsers move the scrollbar (Safari).
- * @type boolean
- * @default false
- */
- "bScrollbarLeft": false,
-
- /**
- * Flag for if `getBoundingClientRect` is fully supported or not
- * @type boolean
- * @default false
- */
- "bBounding": false,
-
- /**
- * Browser scrollbar width
- * @type integer
- * @default 0
- */
- "barWidth": 0
- },
-
-
- "ajax": null,
-
-
- /**
- * Array referencing the nodes which are used for the features. The
- * parameters of this object match what is allowed by sDom - i.e.
- *
- *
'l' - Length changing
- *
'f' - Filtering input
- *
't' - The table!
- *
'i' - Information
- *
'p' - Pagination
- *
'r' - pRocessing
- *
- * @type array
- * @default []
- */
- "aanFeatures": [],
-
- /**
- * Store data information - see {@link DataTable.models.oRow} for detailed
- * information.
- * @type array
- * @default []
- */
- "aoData": [],
-
- /**
- * Array of indexes which are in the current display (after filtering etc)
- * @type array
- * @default []
- */
- "aiDisplay": [],
-
- /**
- * Array of indexes for display - no filtering
- * @type array
- * @default []
- */
- "aiDisplayMaster": [],
-
- /**
- * Map of row ids to data indexes
- * @type object
- * @default {}
- */
- "aIds": {},
-
- /**
- * Store information about each column that is in use
- * @type array
- * @default []
- */
- "aoColumns": [],
-
- /**
- * Store information about the table's header
- * @type array
- * @default []
- */
- "aoHeader": [],
-
- /**
- * Store information about the table's footer
- * @type array
- * @default []
- */
- "aoFooter": [],
-
- /**
- * Store the applied global search information in case we want to force a
- * research or compare the old search to a new one.
- * Note that this parameter will be set by the initialisation routine. To
- * set a default use {@link DataTable.defaults}.
- * @namespace
- * @extends DataTable.models.oSearch
- */
- "oPreviousSearch": {},
-
- /**
- * Store the applied search for each column - see
- * {@link DataTable.models.oSearch} for the format that is used for the
- * filtering information for each column.
- * @type array
- * @default []
- */
- "aoPreSearchCols": [],
-
- /**
- * Sorting that is applied to the table. Note that the inner arrays are
- * used in the following manner:
- *
- *
Index 0 - column number
- *
Index 1 - current sorting direction
- *
- * Note that this parameter will be set by the initialisation routine. To
- * set a default use {@link DataTable.defaults}.
- * @type array
- * @todo These inner arrays should really be objects
- */
- "aaSorting": null,
-
- /**
- * Sorting that is always applied to the table (i.e. prefixed in front of
- * aaSorting).
- * Note that this parameter will be set by the initialisation routine. To
- * set a default use {@link DataTable.defaults}.
- * @type array
- * @default []
- */
- "aaSortingFixed": [],
-
- /**
- * Classes to use for the striping of a table.
- * Note that this parameter will be set by the initialisation routine. To
- * set a default use {@link DataTable.defaults}.
- * @type array
- * @default []
- */
- "asStripeClasses": null,
-
- /**
- * If restoring a table - we should restore its striping classes as well
- * @type array
- * @default []
- */
- "asDestroyStripes": [],
-
- /**
- * If restoring a table - we should restore its width
- * @type int
- * @default 0
- */
- "sDestroyWidth": 0,
-
- /**
- * Callback functions array for every time a row is inserted (i.e. on a draw).
- * @type array
- * @default []
- */
- "aoRowCallback": [],
-
- /**
- * Callback functions for the header on each draw.
- * @type array
- * @default []
- */
- "aoHeaderCallback": [],
-
- /**
- * Callback function for the footer on each draw.
- * @type array
- * @default []
- */
- "aoFooterCallback": [],
-
- /**
- * Array of callback functions for draw callback functions
- * @type array
- * @default []
- */
- "aoDrawCallback": [],
-
- /**
- * Array of callback functions for row created function
- * @type array
- * @default []
- */
- "aoRowCreatedCallback": [],
-
- /**
- * Callback functions for just before the table is redrawn. A return of
- * false will be used to cancel the draw.
- * @type array
- * @default []
- */
- "aoPreDrawCallback": [],
-
- /**
- * Callback functions for when the table has been initialised.
- * @type array
- * @default []
- */
- "aoInitComplete": [],
-
-
- /**
- * Callbacks for modifying the settings to be stored for state saving, prior to
- * saving state.
- * @type array
- * @default []
- */
- "aoStateSaveParams": [],
-
- /**
- * Callbacks for modifying the settings that have been stored for state saving
- * prior to using the stored values to restore the state.
- * @type array
- * @default []
- */
- "aoStateLoadParams": [],
-
- /**
- * Callbacks for operating on the settings object once the saved state has been
- * loaded
- * @type array
- * @default []
- */
- "aoStateLoaded": [],
-
- /**
- * Cache the table ID for quick access
- * @type string
- * @default Empty string
- */
- "sTableId": "",
-
- /**
- * The TABLE node for the main table
- * @type node
- * @default null
- */
- "nTable": null,
-
- /**
- * Permanent ref to the thead element
- * @type node
- * @default null
- */
- "nTHead": null,
-
- /**
- * Permanent ref to the tfoot element - if it exists
- * @type node
- * @default null
- */
- "nTFoot": null,
-
- /**
- * Permanent ref to the tbody element
- * @type node
- * @default null
- */
- "nTBody": null,
-
- /**
- * Cache the wrapper node (contains all DataTables controlled elements)
- * @type node
- * @default null
- */
- "nTableWrapper": null,
-
- /**
- * Indicate if when using server-side processing the loading of data
- * should be deferred until the second draw.
- * Note that this parameter will be set by the initialisation routine. To
- * set a default use {@link DataTable.defaults}.
- * @type boolean
- * @default false
- */
- "bDeferLoading": false,
-
- /**
- * Indicate if all required information has been read in
- * @type boolean
- * @default false
- */
- "bInitialised": false,
-
- /**
- * Information about open rows. Each object in the array has the parameters
- * 'nTr' and 'nParent'
- * @type array
- * @default []
- */
- "aoOpenRows": [],
-
- /**
- * Dictate the positioning of DataTables' control elements - see
- * {@link DataTable.model.oInit.sDom}.
- * Note that this parameter will be set by the initialisation routine. To
- * set a default use {@link DataTable.defaults}.
- * @type string
- * @default null
- */
- "sDom": null,
-
- /**
- * Search delay (in mS)
- * @type integer
- * @default null
- */
- "searchDelay": null,
-
- /**
- * Which type of pagination should be used.
- * Note that this parameter will be set by the initialisation routine. To
- * set a default use {@link DataTable.defaults}.
- * @type string
- * @default two_button
- */
- "sPaginationType": "two_button",
-
- /**
- * The state duration (for `stateSave`) in seconds.
- * Note that this parameter will be set by the initialisation routine. To
- * set a default use {@link DataTable.defaults}.
- * @type int
- * @default 0
- */
- "iStateDuration": 0,
-
- /**
- * Array of callback functions for state saving. Each array element is an
- * object with the following parameters:
- *
- *
function:fn - function to call. Takes two parameters, oSettings
- * and the JSON string to save that has been thus far created. Returns
- * a JSON string to be inserted into a json object
- * (i.e. '"param": [ 0, 1, 2]')
- *
string:sName - name of callback
- *
- * @type array
- * @default []
- */
- "aoStateSave": [],
-
- /**
- * Array of callback functions for state loading. Each array element is an
- * object with the following parameters:
- *
- *
function:fn - function to call. Takes two parameters, oSettings
- * and the object stored. May return false to cancel state loading
- * @type array
- * @default []
- */
- "aanFeatures": [],
-
- /**
- * Store data information - see {@link DataTable.models.oRow} for detailed
- * information.
- * @type array
- * @default []
- */
- "aoData": [],
-
- /**
- * Array of indexes which are in the current display (after filtering etc)
- * @type array
- * @default []
- */
- "aiDisplay": [],
-
- /**
- * Array of indexes for display - no filtering
- * @type array
- * @default []
- */
- "aiDisplayMaster": [],
-
- /**
- * Map of row ids to data indexes
- * @type object
- * @default {}
- */
- "aIds": {},
-
- /**
- * Store information about each column that is in use
- * @type array
- * @default []
- */
- "aoColumns": [],
-
- /**
- * Store information about the table's header
- * @type array
- * @default []
- */
- "aoHeader": [],
-
- /**
- * Store information about the table's footer
- * @type array
- * @default []
- */
- "aoFooter": [],
-
- /**
- * Store the applied global search information in case we want to force a
- * research or compare the old search to a new one.
- * Note that this parameter will be set by the initialisation routine. To
- * set a default use {@link DataTable.defaults}.
- * @namespace
- * @extends DataTable.models.oSearch
- */
- "oPreviousSearch": {},
-
- /**
- * Store the applied search for each column - see
- * {@link DataTable.models.oSearch} for the format that is used for the
- * filtering information for each column.
- * @type array
- * @default []
- */
- "aoPreSearchCols": [],
-
- /**
- * Sorting that is applied to the table. Note that the inner arrays are
- * used in the following manner:
- *
- *
Index 0 - column number
- *
Index 1 - current sorting direction
- *
- * Note that this parameter will be set by the initialisation routine. To
- * set a default use {@link DataTable.defaults}.
- * @type array
- * @todo These inner arrays should really be objects
- */
- "aaSorting": null,
-
- /**
- * Sorting that is always applied to the table (i.e. prefixed in front of
- * aaSorting).
- * Note that this parameter will be set by the initialisation routine. To
- * set a default use {@link DataTable.defaults}.
- * @type array
- * @default []
- */
- "aaSortingFixed": [],
-
- /**
- * Classes to use for the striping of a table.
- * Note that this parameter will be set by the initialisation routine. To
- * set a default use {@link DataTable.defaults}.
- * @type array
- * @default []
- */
- "asStripeClasses": null,
-
- /**
- * If restoring a table - we should restore its striping classes as well
- * @type array
- * @default []
- */
- "asDestroyStripes": [],
-
- /**
- * If restoring a table - we should restore its width
- * @type int
- * @default 0
- */
- "sDestroyWidth": 0,
-
- /**
- * Callback functions array for every time a row is inserted (i.e. on a draw).
- * @type array
- * @default []
- */
- "aoRowCallback": [],
-
- /**
- * Callback functions for the header on each draw.
- * @type array
- * @default []
- */
- "aoHeaderCallback": [],
-
- /**
- * Callback function for the footer on each draw.
- * @type array
- * @default []
- */
- "aoFooterCallback": [],
-
- /**
- * Array of callback functions for draw callback functions
- * @type array
- * @default []
- */
- "aoDrawCallback": [],
-
- /**
- * Array of callback functions for row created function
- * @type array
- * @default []
- */
- "aoRowCreatedCallback": [],
-
- /**
- * Callback functions for just before the table is redrawn. A return of
- * false will be used to cancel the draw.
- * @type array
- * @default []
- */
- "aoPreDrawCallback": [],
-
- /**
- * Callback functions for when the table has been initialised.
- * @type array
- * @default []
- */
- "aoInitComplete": [],
-
-
- /**
- * Callbacks for modifying the settings to be stored for state saving, prior to
- * saving state.
- * @type array
- * @default []
- */
- "aoStateSaveParams": [],
-
- /**
- * Callbacks for modifying the settings that have been stored for state saving
- * prior to using the stored values to restore the state.
- * @type array
- * @default []
- */
- "aoStateLoadParams": [],
-
- /**
- * Callbacks for operating on the settings object once the saved state has been
- * loaded
- * @type array
- * @default []
- */
- "aoStateLoaded": [],
-
- /**
- * Cache the table ID for quick access
- * @type string
- * @default Empty string
- */
- "sTableId": "",
-
- /**
- * The TABLE node for the main table
- * @type node
- * @default null
- */
- "nTable": null,
-
- /**
- * Permanent ref to the thead element
- * @type node
- * @default null
- */
- "nTHead": null,
-
- /**
- * Permanent ref to the tfoot element - if it exists
- * @type node
- * @default null
- */
- "nTFoot": null,
-
- /**
- * Permanent ref to the tbody element
- * @type node
- * @default null
- */
- "nTBody": null,
-
- /**
- * Cache the wrapper node (contains all DataTables controlled elements)
- * @type node
- * @default null
- */
- "nTableWrapper": null,
-
- /**
- * Indicate if when using server-side processing the loading of data
- * should be deferred until the second draw.
- * Note that this parameter will be set by the initialisation routine. To
- * set a default use {@link DataTable.defaults}.
- * @type boolean
- * @default false
- */
- "bDeferLoading": false,
-
- /**
- * Indicate if all required information has been read in
- * @type boolean
- * @default false
- */
- "bInitialised": false,
-
- /**
- * Information about open rows. Each object in the array has the parameters
- * 'nTr' and 'nParent'
- * @type array
- * @default []
- */
- "aoOpenRows": [],
-
- /**
- * Dictate the positioning of DataTables' control elements - see
- * {@link DataTable.model.oInit.sDom}.
- * Note that this parameter will be set by the initialisation routine. To
- * set a default use {@link DataTable.defaults}.
- * @type string
- * @default null
- */
- "sDom": null,
-
- /**
- * Search delay (in mS)
- * @type integer
- * @default null
- */
- "searchDelay": null,
-
- /**
- * Which type of pagination should be used.
- * Note that this parameter will be set by the initialisation routine. To
- * set a default use {@link DataTable.defaults}.
- * @type string
- * @default two_button
- */
- "sPaginationType": "two_button",
-
- /**
- * The state duration (for `stateSave`) in seconds.
- * Note that this parameter will be set by the initialisation routine. To
- * set a default use {@link DataTable.defaults}.
- * @type int
- * @default 0
- */
- "iStateDuration": 0,
-
- /**
- * Array of callback functions for state saving. Each array element is an
- * object with the following parameters:
- *
- *
function:fn - function to call. Takes two parameters, oSettings
- * and the JSON string to save that has been thus far created. Returns
- * a JSON string to be inserted into a json object
- * (i.e. '"param": [ 0, 1, 2]')
- *
string:sName - name of callback
- *
- * @type array
- * @default []
- */
- "aoStateSave": [],
-
- /**
- * Array of callback functions for state loading. Each array element is an
- * object with the following parameters:
- *
- *
function:fn - function to call. Takes two parameters, oSettings
- * and the object stored. May return false to cancel state loading
" ],
-
- _default: [ 0, "", "" ]
-};
-
-// Support: IE <=9 only
-wrapMap.optgroup = wrapMap.option;
-
-wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
-wrapMap.th = wrapMap.td;
-
-
-function getAll( context, tag ) {
-
- // Support: IE <=9 - 11 only
- // Use typeof to avoid zero-argument method invocation on host objects (#15151)
- var ret;
-
- if ( typeof context.getElementsByTagName !== "undefined" ) {
- ret = context.getElementsByTagName( tag || "*" );
-
- } else if ( typeof context.querySelectorAll !== "undefined" ) {
- ret = context.querySelectorAll( tag || "*" );
-
- } else {
- ret = [];
- }
-
- if ( tag === undefined || tag && nodeName( context, tag ) ) {
- return jQuery.merge( [ context ], ret );
- }
-
- return ret;
-}
-
-
-// Mark scripts as having already been evaluated
-function setGlobalEval( elems, refElements ) {
- var i = 0,
- l = elems.length;
-
- for ( ; i < l; i++ ) {
- dataPriv.set(
- elems[ i ],
- "globalEval",
- !refElements || dataPriv.get( refElements[ i ], "globalEval" )
- );
- }
-}
-
-
-var rhtml = /<|?\w+;/;
-
-function buildFragment( elems, context, scripts, selection, ignored ) {
- var elem, tmp, tag, wrap, attached, j,
- fragment = context.createDocumentFragment(),
- nodes = [],
- i = 0,
- l = elems.length;
-
- for ( ; i < l; i++ ) {
- elem = elems[ i ];
-
- if ( elem || elem === 0 ) {
-
- // Add nodes directly
- if ( toType( elem ) === "object" ) {
-
- // Support: Android <=4.0 only, PhantomJS 1 only
- // push.apply(_, arraylike) throws on ancient WebKit
- jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
-
- // Convert non-html into a text node
- } else if ( !rhtml.test( elem ) ) {
- nodes.push( context.createTextNode( elem ) );
-
- // Convert html into DOM nodes
- } else {
- tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
-
- // Deserialize a standard representation
- tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
- wrap = wrapMap[ tag ] || wrapMap._default;
- tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
-
- // Descend through wrappers to the right content
- j = wrap[ 0 ];
- while ( j-- ) {
- tmp = tmp.lastChild;
- }
-
- // Support: Android <=4.0 only, PhantomJS 1 only
- // push.apply(_, arraylike) throws on ancient WebKit
- jQuery.merge( nodes, tmp.childNodes );
-
- // Remember the top-level container
- tmp = fragment.firstChild;
-
- // Ensure the created nodes are orphaned (#12392)
- tmp.textContent = "";
- }
- }
- }
-
- // Remove wrapper from fragment
- fragment.textContent = "";
-
- i = 0;
- while ( ( elem = nodes[ i++ ] ) ) {
-
- // Skip elements already in the context collection (trac-4087)
- if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
- if ( ignored ) {
- ignored.push( elem );
- }
- continue;
- }
-
- attached = isAttached( elem );
-
- // Append to fragment
- tmp = getAll( fragment.appendChild( elem ), "script" );
-
- // Preserve script evaluation history
- if ( attached ) {
- setGlobalEval( tmp );
- }
-
- // Capture executables
- if ( scripts ) {
- j = 0;
- while ( ( elem = tmp[ j++ ] ) ) {
- if ( rscriptType.test( elem.type || "" ) ) {
- scripts.push( elem );
- }
- }
- }
- }
-
- return fragment;
-}
-
-
-( function() {
- var fragment = document.createDocumentFragment(),
- div = fragment.appendChild( document.createElement( "div" ) ),
- input = document.createElement( "input" );
-
- // Support: Android 4.0 - 4.3 only
- // Check state lost if the name is set (#11217)
- // Support: Windows Web Apps (WWA)
- // `name` and `type` must use .setAttribute for WWA (#14901)
- input.setAttribute( "type", "radio" );
- input.setAttribute( "checked", "checked" );
- input.setAttribute( "name", "t" );
-
- div.appendChild( input );
-
- // Support: Android <=4.1 only
- // Older WebKit doesn't clone checked state correctly in fragments
- support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
-
- // Support: IE <=11 only
- // Make sure textarea (and checkbox) defaultValue is properly cloned
- div.innerHTML = "";
- support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
-} )();
-
-
-var
- rkeyEvent = /^key/,
- rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
- rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
-
-function returnTrue() {
- return true;
-}
-
-function returnFalse() {
- return false;
-}
-
-// Support: IE <=9 - 11+
-// focus() and blur() are asynchronous, except when they are no-op.
-// So expect focus to be synchronous when the element is already active,
-// and blur to be synchronous when the element is not already active.
-// (focus and blur are always synchronous in other supported browsers,
-// this just defines when we can count on it).
-function expectSync( elem, type ) {
- return ( elem === safeActiveElement() ) === ( type === "focus" );
-}
-
-// Support: IE <=9 only
-// Accessing document.activeElement can throw unexpectedly
-// https://bugs.jquery.com/ticket/13393
-function safeActiveElement() {
- try {
- return document.activeElement;
- } catch ( err ) { }
-}
-
-function on( elem, types, selector, data, fn, one ) {
- var origFn, type;
-
- // Types can be a map of types/handlers
- if ( typeof types === "object" ) {
-
- // ( types-Object, selector, data )
- if ( typeof selector !== "string" ) {
-
- // ( types-Object, data )
- data = data || selector;
- selector = undefined;
- }
- for ( type in types ) {
- on( elem, type, selector, data, types[ type ], one );
- }
- return elem;
- }
-
- if ( data == null && fn == null ) {
-
- // ( types, fn )
- fn = selector;
- data = selector = undefined;
- } else if ( fn == null ) {
- if ( typeof selector === "string" ) {
-
- // ( types, selector, fn )
- fn = data;
- data = undefined;
- } else {
-
- // ( types, data, fn )
- fn = data;
- data = selector;
- selector = undefined;
- }
- }
- if ( fn === false ) {
- fn = returnFalse;
- } else if ( !fn ) {
- return elem;
- }
-
- if ( one === 1 ) {
- origFn = fn;
- fn = function( event ) {
-
- // Can use an empty set, since event contains the info
- jQuery().off( event );
- return origFn.apply( this, arguments );
- };
-
- // Use same guid so caller can remove using origFn
- fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
- }
- return elem.each( function() {
- jQuery.event.add( this, types, fn, data, selector );
- } );
-}
-
-/*
- * Helper functions for managing events -- not part of the public interface.
- * Props to Dean Edwards' addEvent library for many of the ideas.
- */
-jQuery.event = {
-
- global: {},
-
- add: function( elem, types, handler, data, selector ) {
-
- var handleObjIn, eventHandle, tmp,
- events, t, handleObj,
- special, handlers, type, namespaces, origType,
- elemData = dataPriv.get( elem );
-
- // Don't attach events to noData or text/comment nodes (but allow plain objects)
- if ( !elemData ) {
- return;
- }
-
- // Caller can pass in an object of custom data in lieu of the handler
- if ( handler.handler ) {
- handleObjIn = handler;
- handler = handleObjIn.handler;
- selector = handleObjIn.selector;
- }
-
- // Ensure that invalid selectors throw exceptions at attach time
- // Evaluate against documentElement in case elem is a non-element node (e.g., document)
- if ( selector ) {
- jQuery.find.matchesSelector( documentElement, selector );
- }
-
- // Make sure that the handler has a unique ID, used to find/remove it later
- if ( !handler.guid ) {
- handler.guid = jQuery.guid++;
- }
-
- // Init the element's event structure and main handler, if this is the first
- if ( !( events = elemData.events ) ) {
- events = elemData.events = {};
- }
- if ( !( eventHandle = elemData.handle ) ) {
- eventHandle = elemData.handle = function( e ) {
-
- // Discard the second event of a jQuery.event.trigger() and
- // when an event is called after a page has unloaded
- return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
- jQuery.event.dispatch.apply( elem, arguments ) : undefined;
- };
- }
-
- // Handle multiple events separated by a space
- types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
- t = types.length;
- while ( t-- ) {
- tmp = rtypenamespace.exec( types[ t ] ) || [];
- type = origType = tmp[ 1 ];
- namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
-
- // There *must* be a type, no attaching namespace-only handlers
- if ( !type ) {
- continue;
- }
-
- // If event changes its type, use the special event handlers for the changed type
- special = jQuery.event.special[ type ] || {};
-
- // If selector defined, determine special event api type, otherwise given type
- type = ( selector ? special.delegateType : special.bindType ) || type;
-
- // Update special based on newly reset type
- special = jQuery.event.special[ type ] || {};
-
- // handleObj is passed to all event handlers
- handleObj = jQuery.extend( {
- type: type,
- origType: origType,
- data: data,
- handler: handler,
- guid: handler.guid,
- selector: selector,
- needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
- namespace: namespaces.join( "." )
- }, handleObjIn );
-
- // Init the event handler queue if we're the first
- if ( !( handlers = events[ type ] ) ) {
- handlers = events[ type ] = [];
- handlers.delegateCount = 0;
-
- // Only use addEventListener if the special events handler returns false
- if ( !special.setup ||
- special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
-
- if ( elem.addEventListener ) {
- elem.addEventListener( type, eventHandle );
- }
- }
- }
-
- if ( special.add ) {
- special.add.call( elem, handleObj );
-
- if ( !handleObj.handler.guid ) {
- handleObj.handler.guid = handler.guid;
- }
- }
-
- // Add to the element's handler list, delegates in front
- if ( selector ) {
- handlers.splice( handlers.delegateCount++, 0, handleObj );
- } else {
- handlers.push( handleObj );
- }
-
- // Keep track of which events have ever been used, for event optimization
- jQuery.event.global[ type ] = true;
- }
-
- },
-
- // Detach an event or set of events from an element
- remove: function( elem, types, handler, selector, mappedTypes ) {
-
- var j, origCount, tmp,
- events, t, handleObj,
- special, handlers, type, namespaces, origType,
- elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );
-
- if ( !elemData || !( events = elemData.events ) ) {
- return;
- }
-
- // Once for each type.namespace in types; type may be omitted
- types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
- t = types.length;
- while ( t-- ) {
- tmp = rtypenamespace.exec( types[ t ] ) || [];
- type = origType = tmp[ 1 ];
- namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
-
- // Unbind all events (on this namespace, if provided) for the element
- if ( !type ) {
- for ( type in events ) {
- jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
- }
- continue;
- }
-
- special = jQuery.event.special[ type ] || {};
- type = ( selector ? special.delegateType : special.bindType ) || type;
- handlers = events[ type ] || [];
- tmp = tmp[ 2 ] &&
- new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );
-
- // Remove matching events
- origCount = j = handlers.length;
- while ( j-- ) {
- handleObj = handlers[ j ];
-
- if ( ( mappedTypes || origType === handleObj.origType ) &&
- ( !handler || handler.guid === handleObj.guid ) &&
- ( !tmp || tmp.test( handleObj.namespace ) ) &&
- ( !selector || selector === handleObj.selector ||
- selector === "**" && handleObj.selector ) ) {
- handlers.splice( j, 1 );
-
- if ( handleObj.selector ) {
- handlers.delegateCount--;
- }
- if ( special.remove ) {
- special.remove.call( elem, handleObj );
- }
- }
- }
-
- // Remove generic event handler if we removed something and no more handlers exist
- // (avoids potential for endless recursion during removal of special event handlers)
- if ( origCount && !handlers.length ) {
- if ( !special.teardown ||
- special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
-
- jQuery.removeEvent( elem, type, elemData.handle );
- }
-
- delete events[ type ];
- }
- }
-
- // Remove data and the expando if it's no longer used
- if ( jQuery.isEmptyObject( events ) ) {
- dataPriv.remove( elem, "handle events" );
- }
- },
-
- dispatch: function( nativeEvent ) {
-
- // Make a writable jQuery.Event from the native event object
- var event = jQuery.event.fix( nativeEvent );
-
- var i, j, ret, matched, handleObj, handlerQueue,
- args = new Array( arguments.length ),
- handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [],
- special = jQuery.event.special[ event.type ] || {};
-
- // Use the fix-ed jQuery.Event rather than the (read-only) native event
- args[ 0 ] = event;
-
- for ( i = 1; i < arguments.length; i++ ) {
- args[ i ] = arguments[ i ];
- }
-
- event.delegateTarget = this;
-
- // Call the preDispatch hook for the mapped type, and let it bail if desired
- if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
- return;
- }
-
- // Determine handlers
- handlerQueue = jQuery.event.handlers.call( this, event, handlers );
-
- // Run delegates first; they may want to stop propagation beneath us
- i = 0;
- while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
- event.currentTarget = matched.elem;
-
- j = 0;
- while ( ( handleObj = matched.handlers[ j++ ] ) &&
- !event.isImmediatePropagationStopped() ) {
-
- // If the event is namespaced, then each handler is only invoked if it is
- // specially universal or its namespaces are a superset of the event's.
- if ( !event.rnamespace || handleObj.namespace === false ||
- event.rnamespace.test( handleObj.namespace ) ) {
-
- event.handleObj = handleObj;
- event.data = handleObj.data;
-
- ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
- handleObj.handler ).apply( matched.elem, args );
-
- if ( ret !== undefined ) {
- if ( ( event.result = ret ) === false ) {
- event.preventDefault();
- event.stopPropagation();
- }
- }
- }
- }
- }
-
- // Call the postDispatch hook for the mapped type
- if ( special.postDispatch ) {
- special.postDispatch.call( this, event );
- }
-
- return event.result;
- },
-
- handlers: function( event, handlers ) {
- var i, handleObj, sel, matchedHandlers, matchedSelectors,
- handlerQueue = [],
- delegateCount = handlers.delegateCount,
- cur = event.target;
-
- // Find delegate handlers
- if ( delegateCount &&
-
- // Support: IE <=9
- // Black-hole SVG
diff --git a/testcases/TC08.1-2-fail-2.md b/testcases/TC08.1-2-fail-2.md
new file mode 100644
index 00000000..554d0725
--- /dev/null
+++ b/testcases/TC08.1-2-fail-2.md
@@ -0,0 +1,54 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: Contrast - Insufficient contrast ratio for 14 point, non-bold text
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC08.1-2-fail-2
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: Detect the foreground and background text and size contrast ratio. Determine whether contrast ratio is sufficient. The text in the code sample does not provide sufficient contrast between the foreground and background.
+
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [8.1 Test Procedure for Contrast Minimum](https://ictbaseline.access-board.gov/08Contrast/#81-test-procedure-for-contrast-minimum)
+
+ **Baseline Test ID:** 8.1-ContrastMinimum
+
+ **Test Instruction:** 2
+
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: Fail
+
+# Brief description of the rationale for the expected result
+result-descr: The foreground text in the code sample does not provide sufficient contrast (1.72:1) based on the text size (14 point), foreground color, and background color.
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF08/08.1-2-fail-2.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| IC | All visible text AND images of text (except those noted in Limitations, Assumptions, or Exceptions above) | The code sample includes text that is 14 pt, non-bold font |
+| 8.1-1 | Determine the contrast ratio of foreground text and background. | The contrast ratio for the text is 1.72:1 |
+| 8.1-2 | Check that the contrast ratio is at least 4.5:1. [SC 1.4.3] | **FAIL:** The contrast ratio is less than 4.5:1 (it is 1.72) |
+| 8.1-3 | f the contrast ratio is less than 4.5:1, check that the ratio is at least 3:1 AND the font meets one of the following criteria [SC 1.4.3]: At least 18 point (23.94 pixels); At least 14 point (18.62 pixels) AND bold (at least 700 font weight) | **FAIL:** the code sample does not satisfy the criteria necessary to allow a 3:1 contrast ratio and would fail even if it did with contrast ratio of 1.72:1 |
+| Results | If both of the above checks fail, then Baseline Test 8.1-ContrastMinimum fails. | **FAIL:** the code sample fails both checks |
\ No newline at end of file
diff --git a/testcases/TC08.1-2-fail-3.md b/testcases/TC08.1-2-fail-3.md
new file mode 100644
index 00000000..3aa0a30f
--- /dev/null
+++ b/testcases/TC08.1-2-fail-3.md
@@ -0,0 +1,55 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: Contrast - Insufficient contrast ratio for small text, when color changes on hover/focus
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC8.1-2-fail-3
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+
+# Baseline test
+descr: Detect the foreground and background text and size contrast ratio. Determine whether contrast ratio is sufficient. The text in the code sample provides sufficient contrast between the foreground and background in its initial state; however, the color of the heading changes on hover, which does not provide sufficient contrast ratio (2.32:1) between the text and the background.
+
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [8.1 Test Procedure for Contrast Minimum](https://ictbaseline.access-board.gov/08Contrast/#81-test-procedure-for-contrast-minimum)
+
+ **Baseline Test ID:** 8.1-Contrast
+
+ **Test Instruction:** 1
+
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: Fail
+
+# Brief description of the rationale for the expected result
+result-descr: The foreground and background text and size contrast ratio in the code sample provide sufficient contrast in the initial state of the text; however, the color of the heading changes on hover, which does not provide sufficient contrast ratio (2.32:1) between the text and the background.
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF08/08.1-2-fail-3.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| Identify Content | All visible text AND images of text (except those noted in Limitations, Assumptions, or Exceptions above) | The page contains text that is 15 point, bold font |
+| 8.1-1| Determine the contrast ratio of foreground text and background. | The contrast ratio for the text in its initial state is 21:1; the contrast of the text on hover is 2.32:1 |
+| 8.1-2| Check that the contrast ratio is at least 4.5:1. [SC 3.14] | **FAIL:** The contrast ratio of the text on hover is less than 4.5:1 (it is 2.32:1) |
+| 8.1-3| If the contrast ratio is less than 4.5:1, check that the ratio is at least 3:1 AND the font meets one of the following criteria [SC 1.4.3]: At least 18 point (23.94 pixels); At least 14 point (18.62 pixels) AND bold (at least 700 font weight) | **FAIL:** While the text is 15 point, bold font, the text on hover is less than 3:1 (it is 2.32:1) |
+| Test Results | Both of the above checks fail, then Baseline Test 8.1-Contrast Minimum. | **FAIL:** Both checks fail |
\ No newline at end of file
diff --git a/testcases/TC08.1-2-fail-4.md b/testcases/TC08.1-2-fail-4.md
new file mode 100644
index 00000000..ad86c26d
--- /dev/null
+++ b/testcases/TC08.1-2-fail-4.md
@@ -0,0 +1,51 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: Insufficient contrast ratio for small text in an image of text
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC8.1-2-fail-4
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: Detect the foreground and background text and size contrast ratio. Determine whether contrast ratio is sufficient. The text in the code sample does not provide sufficient contrast between the foreground and background.
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [8.1 Test Procedure for Contrast Minimum](https://ictbaseline.access-board.gov/08Contrast/#81-test-procedure-for-contrast-minimum)
+
+ **Baseline Test ID:** 8.1-ContrastMinimum
+
+ **Test Instruction:** 2
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: Fail
+
+# Brief description of the rationale for the expected result
+result-descr: The foreground and background text and size contrast ratio in the code sample does not provide sufficient contrast in an image of text.
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF08/08.1-2-fail-4.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| IC-1 | All visible text AND images of text (except those noted in Limitations, Assumptions, or Exceptions above) | The sample code contains an image of meaningful text. |
+| 8.1-1| Determine the contrast ratio of foreground and background in the image of text. | The contrast ratio for a portion of the text in the image is 2.8:1. |
+| 8.1-2| Check that the contrast ratio is at least 4.5:1. (SC 3.1.4) | Fail - The contrast ratio is less than 4.5:1 (it is 2.8:1) |
+| Results | Both of the above checks fail, then Baseline Test 8.1-Contrast Minimum. | Fail - one of the checks fails for minimum contrast ratio for an image in |
diff --git a/testcases/TC08.1-3-fail-2.md b/testcases/TC08.1-3-fail-2.md
new file mode 100644
index 00000000..bfe554f0
--- /dev/null
+++ b/testcases/TC08.1-3-fail-2.md
@@ -0,0 +1,55 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: Insufficient contrast ratio for 18 point text
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC8.1-3-fail-2
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+
+# Baseline test
+descr: Detect the foreground and background text and size contrast ratio. Determine whether contrast ratio is sufficient. The text in the code sample at 18 point font does not provide sufficient contrast between the foreground and background.
+
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [8.1 Test Procedure for Contrast Minimum](https://ictbaseline.access-board.gov/08Contrast/#81-test-procedure-for-contrast-minimum)
+
+ **Baseline Test ID:** 8.1-ContrastMinimum
+
+ **Test Instruction:** 3
+
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: Fail
+
+# Brief description of the rationale for the expected result
+result-descr: The foreground text in the code sample **DOES NOT** provide sufficient contrast (1.72:1) based on the text size (18 pt font), foreground color, and background color.
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF08/08.1-3-fail-2.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+|IC| All visible text AND images of text (except those noted in Limitations, Assumptions, or Exceptions above) | The sample code contains text that is 18 pt font |
+| 8.1-1 | Determine the contrast ratio of foreground text and background. | The contrast ratio for the text is 1.72:1 |
+| 8.1-2 | Check that the contrast ratio is at least 4.5:1. [SC 3.14] | **FAIL:** The contrast ratio is less than 3:1 (it is 1.72:1 ) |
+| 8.1-3 | If the contrast ratio is less than 4.5:1, check that the ratio is at least 3:1 AND the font meets one of the following criteria [SC 1.4.3]: At least 18 point (23.94 pixels); At least 14 point (18.62 pixels) AND bold (at least 700 font weight) | **FAIL:** The font is at least 18 point, but the contrast ratio is less than 3:1 (1.72:1) |
+| Results | Both of the above checks fail, then Baseline Test 8.1-Contrast Minimum. | **FAIL** - both checks fail |
diff --git a/testcases/TC08.1-3-pass-1.md b/testcases/TC08.1-3-pass-1.md
new file mode 100644
index 00000000..5ec8885f
--- /dev/null
+++ b/testcases/TC08.1-3-pass-1.md
@@ -0,0 +1,54 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: '3:1 contrast ratio for 18 point font'
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC8.1-3-pass-1
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+
+# Baseline test
+descr: Detect the foreground and background text and size contrast ratio. Determine whether contrast ratio is sufficient based on size and weight of the font. The text in the code sample is 18 point font with sufficient contrast at greater than 3:1 between the foreground and background.
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [8.1 Test Procedure for Contrast Minimum](https://ictbaseline.access-board.gov/08Contrast/#81-test-procedure-for-contrast-minimum)
+
+ **Baseline Test ID:** 8.1-ContrastMinimum
+
+ **Test Instruction:** 3
+
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: Pass
+
+# Brief description of the rationale for the expected result
+result-descr: The foreground text in the code sample provides sufficient contrast (greaer than 3:1) based on the text size (18 point font), foreground color, and background color.
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF08/08.1-3-pass-1.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+|IC| All visible text AND images of text (except those noted in Limitations, Assumptions, or Exceptions)| Sample code of text is present for this test |
+| 8.1-1| Determine the contrast ratio of foreground text and background. | The contrast ratio for the text is 3.8:1 |
+| 8.1-2| Check that the contrast ratio is at least 4.5:1. [SC 1.4.3] | The contrast ratio is less than 4.5:1 (it is 3.8:1) |
+| 8.1-3| If the contrast ratio is less than 4.5:1, check that the ratio is at least 3:1 AND the font meets one of the following criteria: [SC 1.4.3] At least 18 point (23.94 pixels); At least 14 point (18.62 pixels) AND bold (at least 700 font weight) | The contrast ratio is greater than 3:1 (it is 3.8:1) |
+| Test Results | If both of the above checks fail, then Baseline Test 8.1-ContrastMinimum fails. | The sample code passes check 8.1-3, therefore the code **PASSES** |
diff --git a/testcases/TC08.1-3-pass-2.md b/testcases/TC08.1-3-pass-2.md
new file mode 100644
index 00000000..9350db4e
--- /dev/null
+++ b/testcases/TC08.1-3-pass-2.md
@@ -0,0 +1,55 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: 3:1 contrast ratio for 14 point, bold font
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC8.1-3-pass-2
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: Determine size and weight of the text. Determine whether contrast ratio between foreground text and background is sufficient. The text in the code sample provides sufficient contrast (at least 3:1 for 14 point, bolded text) between the foreground and background.
+
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [8.1 Test Procedure for Contrast Minimum](https://ictbaseline.access-board.gov/08Contrast/#81-test-procedure-for-contrast-minimum)
+
+ **Baseline Test ID:** 8.1-ContrastMinimum
+
+ **Test Instruction:** 3
+
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: Pass
+
+# Brief description of the rationale for the expected result
+result-descr: The foreground text in the code sample provides sufficient contrast based on the text size and weight.
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF08/08.1-3-pass-2.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| IC | All visible text AND images of text (except those noted in Limitations, Assumptions, or Exceptions above) | The sample code contains text that is bold and at least 14 pt font (19px) |
+| 8.1-1 | Determine the contrast ratio of foreground text and background. | Contrast ratio is 4:1 |
+| 8.1-2 | Check that the contrast ratio is at least 4.5:1. [SC 1.4.3] | Fail - the contrast ratio is less than 4.5:1 |
+| 8.1-3 | If the contrast ratio is less than 4.5:1, check that the ratio is at least 3:1 AND the font meets one of the following criteria: [SC 1.4.3]: At least 18 point (23.94 pixels); At least 14 point (18.62 pixels) AND bold (at least 700 font weight) [SC 1.4.3] | Pass - the conrast ratio is greater than 3:1, and the text is at least 14 point AND bold |
+| Results | If both of the above checks fail, then Baseline Test 8.1-ContrastMinimum fails. | Pass - the text in the sample code passes one of the checks in Baseline 8.1-ContrastMinimum|
+
diff --git a/testcases/TC10.3-3-fail-1.md b/testcases/TC10.3-3-fail-1.md
new file mode 100644
index 00000000..61b5ba76
--- /dev/null
+++ b/testcases/TC10.3-3-fail-1.md
@@ -0,0 +1,57 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: On Input - form submitted unexpectedly after exiting form field
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC10.3-3-fail-1
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: |
+ The page has two textbox form elements.
+
+ When focus is moved away from the second textbox, a message appears saying that the the form has been submitted.
+
+ A successful test should identify a FAIL against Baseline 10.3 On Input.
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [10.3 Test Procedure for On Input](https://ictbaseline.access-board.gov/10Forms/#103-test-procedure-for-on-input)
+
+ **Baseline Test ID:** 10.3-OnInput
+
+ **Test Instruction:** 3
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: FAIL
+
+# Brief description of the rationale for the expected result
+result-descr: After input, there are unexpected changes to context
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF10/10.3-3-fail-1.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| IC-1 | Identify the elements on the page. Enter input into the elements. Move focus away from the elements. Observe for context changes. | There are text boxes on the page. |
+| 1 | Enter data in all form fields, and exit (tab out of) the field. | Enter data and tab out of or click away from each field. |
+| 2 | Change selections and/or values for form components, such as radio buttons, check boxes, select lists, etc. | Change value in the text boxes. |
+| 3 | Check that navigating away from a component and/or changing component values/selections (e.g., entering data in a text field, changing a radio button selection) does NOT initiate a change of context unless the user has been advised of the behavior before using the component. `[`SC 3.2.2`]` Examples of a change of context could include: Forms submitted automatically when exiting the field, Forms submitted automatically when exiting the last field in a form, New windows launched when changing a radio button selection, Focus is changed to another component when a select list item is selected | Fail: Tabbing out of or clicking away from the second form field causes a message to appear which states that the form has been submitted. |
+
diff --git a/testcases/TC10.3-3-fail-2.md b/testcases/TC10.3-3-fail-2.md
new file mode 100644
index 00000000..2eaa0820
--- /dev/null
+++ b/testcases/TC10.3-3-fail-2.md
@@ -0,0 +1,56 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: On Input - new window launched unexpectedly after exiting form field
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC10.3-3-fail-2
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: |
+ The page has 4 radio buttons and a button.
+
+ When focus is moved away from the fourth radio button, a new browser window or tab is opened.
+
+ A successful test should identify a FAIL against Baseline 10.3 On Input.
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [10.3 Test Procedure for On Input](https://ictbaseline.access-board.gov/10Forms/#103-test-procedure-for-on-input)
+
+ **Baseline Test ID:** 10.3-OnInput
+
+ **Test Instruction:** 3
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: FAIL
+
+# Brief description of the rationale for the expected result
+result-descr: After input, there are unexpected changes to context
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF10/10.3-3-fail-2.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| IC-1 | Identify the elements on the page. Enter input into the elements. Move focus away from the elements. Observe for context changes. | There are radio buttons on the page. |
+| 1 | Enter data in all form fields, and exit (tab out of) the field. | Make radio button selections using a mouse or keyboard. Tab away from the radio buttons. |
+| 2 | Change selections and/or values for form components, such as radio buttons, check boxes, select lists, etc. | Select each radio button in the group. |
+| 3 | Check that navigating away from a component and/or changing component values/selections (e.g., entering data in a text field, changing a radio button selection) does NOT initiate a change of context unless the user has been advised of the behavior before using the component. `[`SC 3.2.2`]` Examples of a change of context could include: Forms submitted automatically when exiting the field, Forms submitted automatically when exiting the last field in a form, New windows launched when changing a radio button selection, Focus is changed to another component when a select list item is selected | Fail: Tabbing out of the fourth radio button unexpectedly changes the context by opening a new browser window or tab. |
diff --git a/testcases/TC10.3-3-fail-3.md b/testcases/TC10.3-3-fail-3.md
new file mode 100644
index 00000000..24898e5e
--- /dev/null
+++ b/testcases/TC10.3-3-fail-3.md
@@ -0,0 +1,56 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: On Input - focus moved to unexpected component after select list item is selected
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC10.3-3-fail-3
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: |
+ The page has a select box and a button.
+
+ When the select box value is changed, focus is shifted to the button.
+
+ A successful test should identify a FAIL against Baseline 10.3 On Input.
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [10.3 Test Procedure for On Input](https://ictbaseline.access-board.gov/10Forms/#103-test-procedure-for-on-input)
+
+ **Baseline Test ID:** 10.3-OnInput
+
+ **Test Instruction:** 3
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: FAIL
+
+# Brief description of the rationale for the expected result
+result-descr: After input, there are unexpected changes to context
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF10/10.3-3-fail-3.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| IC-1 | Identify the elements on the page. Enter input into the elements. Move focus away from the elements. Observe for context changes. | There is a select box item on the page. |
+| 1 | Enter data in all form fields, and exit (tab out of) the field. | Make a selection in the select box using a mouse or keyboard. |
+| 2 | Change selections and/or values for form components, such as radio buttons, check boxes, select lists, etc. | Change the selection of the select box using a mouse or keyboard. |
+| 3 | Check that navigating away from a component and/or changing component values/selections (e.g., entering data in a text field, changing a radio button selection) does NOT initiate a change of context unless the user has been advised of the behavior before using the component. `[`SC 3.2.2`]` Examples of a change of context could include: Forms submitted automatically when exiting the field, Forms submitted automatically when exiting the last field in a form, New windows launched when changing a radio button selection, Focus is changed to another component when a select list item is selected | Fail: Changing the selection in the select box immediately moves focus to the button element. |
diff --git a/testcases/TC10.3-all-pass.md b/testcases/TC10.3-all-pass.md
new file mode 100644
index 00000000..dd36e8c2
--- /dev/null
+++ b/testcases/TC10.3-all-pass.md
@@ -0,0 +1,57 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: On Input - no change in context on input
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC10.3-all-pass-1
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: |
+ The page has two text box form elements.
+
+ There are no changes to context when text is entered or when focus is moved to or away from the elements.
+
+ A successful test should identify a PASS against Baseline 10.3 On Input.
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [10.3 Test Procedure for On Input](https://ictbaseline.access-board.gov/10Forms/#103-test-procedure-for-on-input)
+
+ **Baseline Test ID:** 10.3-OnInput
+
+ **Test Instruction:** all
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: Pass
+
+# Brief description of the rationale for the expected result
+result-descr: After input, there are no changes to context
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF10/10.3-all-pass-1.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| IC-1 | Identify the elements on the page. Enter input into the elements. Move focus away from the elements. Observe for context changes. | There are text box elements on the page. |
+| 1 | Enter data in all form fields, and exit (tab out of) the field. | Enter text and tab out of or click away from the field. |
+| 2 | Change selections and/or values for form components, such as radio buttons, check boxes, select lists, etc. | Change the values in the text boxes |
+| 3 | Check that navigating away from a component and/or changing component values/selections (e.g., entering data in a text field, changing a radio button selection) does NOT initiate a change of context unless the user has been advised of the behavior before using the component. `[`SC 3.2.2`]` Examples of a change of context could include: Forms submitted automatically when exiting the field, Forms submitted automatically when exiting the last field in a form, New windows launched when changing a radio button selection, Focus is changed to another component when a select list item is selected | Pass: No changes to context occur. |
+
diff --git a/testcases/TC10.3-ic-dna-1.md b/testcases/TC10.3-ic-dna-1.md
new file mode 100644
index 00000000..e2f019e9
--- /dev/null
+++ b/testcases/TC10.3-ic-dna-1.md
@@ -0,0 +1,52 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: On Input - no form components
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC10.3-ic-dna-1
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: |
+ The page has a single level 2 heading and no form components.
+
+ A successful test should identify a DNA against Baseline 10.3 On Input.
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [10.3 Test Procedure for On Input](https://ictbaseline.access-board.gov/10Forms/#103-test-procedure-for-on-input)
+
+ **Baseline Test ID:** 10.3-OnInput
+
+ **Test Instruction:** Identify Content
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: DNA
+
+# Brief description of the rationale for the expected result
+result-descr: There are no form elements, therefore there is nothing to input.
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF10/10.3-ic-dna-1.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| IC-1 | All active form components. | Identify the elements on the page. Enter input into the elements. Move focus away from the elements. Observe for context changes. | DNA: There are no form elements on the page. |
+
diff --git a/testcases/TC10.4-2-fail-1.md b/testcases/TC10.4-2-fail-1.md
new file mode 100644
index 00000000..2c214b63
--- /dev/null
+++ b/testcases/TC10.4-2-fail-1.md
@@ -0,0 +1,57 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: Error Identification - insufficient notification of error
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC10.4-2-fail-1
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: |
+ The page has a textbox labeled "Enter A Number" and a submit button.
+
+ When a non-numeric value is entered into the textbox and the user shifts focus away from the textbox or presses the submit button, then an error notification is displayed at the top of the screen.
+
+ The error notification is not contained in a live region and focus is not shifted to the error notification.
+
+ A successful test should identify a FAIL against Baseline 10.4 Error Identification.
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [10.4 Test Procedure for Error Identification](https://ictbaseline.access-board.gov/10Forms/#104-test-procedure-for-error-identification)
+
+ **Baseline Test ID:** 10.4-ErrorIdentification
+
+ **Test Instruction:** 2
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: Fail
+
+# Brief description of the rationale for the expected result
+result-descr: The user is not made aware of the error when focus is shifted away from the item in error or when trying to submit the form.
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF10/TC10.4-2-fail-1.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| IC-1 | Input form components with automatic error detection and notification. | Identifiy that there are form components with automatic error detection and notification. |
+| 1 | Enter incorrect values in input form components in order to trigger automatic error detection that results in error notifications. Examples include but are not limited to: required fields, date (format), state (abbreviations in an address), password | Pass: Entering incorrect values results in error notifications. |
+| 2 | If an input error is automatically detected, check that the error notification meets all of the following [SC 3.3.1]: The user is made aware of the error (whether immediately upon shifting focus away from the item in error or when trying to submit the form), and the error is described to the user in text, and the item that is in error is identified in text. | Fail: The user is not made aware of the error immediately upon shifting focus away from the item in error or when trying to submit the form. |
diff --git a/testcases/TC10.4-2-fail-2.md b/testcases/TC10.4-2-fail-2.md
new file mode 100644
index 00000000..c01b0630
--- /dev/null
+++ b/testcases/TC10.4-2-fail-2.md
@@ -0,0 +1,57 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: Error Identification - error not described in text
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC10.4-2-fail-2
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: |
+ The page has a textbox labeled "Enter A Number" and a submit button.
+
+ When a non-numeric value is entered into the textbox and the user shifts focus away from the textbox or presses the submit button, then the background color of the input element changes to red.
+
+ The error notification does not appear on screen in text.
+
+ A successful test should identify a FAIL against Baseline 10.4 Error Identification.
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [10.4 Test Procedure for Error Identification](https://ictbaseline.access-board.gov/10Forms/#104-test-procedure-for-error-identification)
+
+ **Baseline Test ID:** 10.4-ErrorIdentification
+
+ **Test Instruction:** 2
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: Fail
+
+# Brief description of the rationale for the expected result
+result-descr: The error is not described to the user in text.
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF10/TC10.4-2-fail-2.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| IC-1 | Input form components with automatic error detection and notification. | Identifiy that there are form components with automatic error detection and notification. |
+| 1 | Enter incorrect values in input form components in order to trigger automatic error detection that results in error notifications. Examples include but are not limited to: required fields, date (format), state (abbreviations in an address), password | Pass: Entering incorrect values results in error notifications. |
+| 2 | If an input error is automatically detected, check that the error notification meets all of the following [SC 3.3.1]: The user is made aware of the error (whether immediately upon shifting focus away from the item in error or when trying to submit the form), and the error is described to the user in text, and the item that is in error is identified in text. | Fail: The error is not described to the user in text. |
diff --git a/testcases/TC10.4-2-fail-3.md b/testcases/TC10.4-2-fail-3.md
new file mode 100644
index 00000000..211c2666
--- /dev/null
+++ b/testcases/TC10.4-2-fail-3.md
@@ -0,0 +1,57 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: Error Identification - item in error is not identified
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC10.4-2-fail-3
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: |
+ The page has two textboxes and a submit button. One textbox is labeled "Enter Anything" and the other is labeled "Enter A Number".
+
+ When a non-numeric value is entered into the "Enter A Number" textbox and the user shifts focus away from the textbox or presses the submit button, then an error notification appears at the top of the screen. The error notification is contained within a live region.
+
+ The error notification does not identify the input in error. The message is too generic.
+
+ A successful test should identify a FAIL against Baseline 10.4 Error Identification.
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [10.4 Test Procedure for Error Identification](https://ictbaseline.access-board.gov/10Forms/#104-test-procedure-for-error-identification)
+
+ **Baseline Test ID:** 10.4-ErrorIdentification
+
+ **Test Instruction:** 2
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: Fail
+
+# Brief description of the rationale for the expected result
+result-descr: The item in error is not identified in text.
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF10/TC10.4-2-fail-3.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| IC-1 | Input form components with automatic error detection and notification. | Identifiy that there are form components with automatic error detection and notification. |
+| 1 | Enter incorrect values in input form components in order to trigger automatic error detection that results in error notifications. Examples include but are not limited to: required fields, date (format), state (abbreviations in an address), password | Pass: Entering incorrect values results in error notifications. |
+| 2 | If an input error is automatically detected, check that the error notification meets all of the following [SC 3.3.1]. The user is made aware of the error (whether immediately upon shifting focus away from the item in error or when trying to submit the form), and the error is described to the user in text, and the item that is in error is identified in text. | Fail: The item in error is not identified in text. |
diff --git a/testcases/TC10.4-all-pass-1.md b/testcases/TC10.4-all-pass-1.md
new file mode 100644
index 00000000..9ea11e10
--- /dev/null
+++ b/testcases/TC10.4-all-pass-1.md
@@ -0,0 +1,55 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: Error Identification - error identified and described in alert dialog
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC10.4-all-pass-1
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: |
+ The page contains a textbox, a label for the textbox, and a button.
+
+ When the user enters text into the textbox and presses the button, the entry will be validated and an alert dialog will appear notifying the user whether the entry was valid or invalid.
+
+ A successful test should identify a PASS against Baseline 10.4 Error Identification.
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [10.4 Test Procedure for Error Identification](https://ictbaseline.access-board.gov/10Forms/#104-test-procedure-for-error-identification)
+
+ **Baseline Test ID:** 10.4-ErrorIdentification
+
+ **Test Instruction:** all
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: Pass
+
+# Brief description of the rationale for the expected result
+result-descr: An error is automatically detected and the error notification meets all requirements of 10.4
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF10/TC10.4-all-pass-1.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| IC-1 | Input form components with automatic error detection and notification. | Identifiy that there are form components with automatic error detection and notification. |
+| 1 | Enter incorrect values in input form components in order to trigger automatic error detection that results in error notifications. Examples include but are not limited to: required fields, date (format), state (abbreviations in an address), password | Pass: Entering incorrect values results in error notifications. |
+| 2 | If an input error is automatically detected, check that the error notification meets all of the following [SC 3.3.1]. The user is made aware of the error (whether immediately upon shifting focus away from the item in error or when trying to submit the form), and the error is described to the user in text, and the item that is in error is identified in text. | Pass: An alert dialog is displayed which includes a text description of the error and references the item in error. |
diff --git a/testcases/TC10.4-all-pass-2.md b/testcases/TC10.4-all-pass-2.md
new file mode 100644
index 00000000..fb3a687f
--- /dev/null
+++ b/testcases/TC10.4-all-pass-2.md
@@ -0,0 +1,55 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: Error Identification - error identified and described in ARIA live region
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC10.4-all-pass-2
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: |
+ The page contains a live region, a textbox, a label for the textbox, and a button.
+
+ When the user enters text into the textbox and presses the button, the entry will be validated and if the entry is invalid, an error notification appears on screen. The error notification is contained within a live region.
+
+ A successful test should identify a PASS against Baseline 10.4 Error Identification.
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [10.4 Test Procedure for Error Identification](https://ictbaseline.access-board.gov/10Forms/#104-test-procedure-for-error-identification)
+
+ **Baseline Test ID:** 10.4-ErrorIdentification
+
+ **Test Instruction:** all
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: Pass
+
+# Brief description of the rationale for the expected result
+result-descr: An error is automatically detected and the error notification meets all requirements of 10.4
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF10/TC10.4-all-pass-2.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| IC-1 | Input form components with automatic error detection and notification. | Identifiy that there are form components with automatic error detection and notification. |
+| 1 | Enter incorrect values in input form components in order to trigger automatic error detection that results in error notifications. Examples include but are not limited to: required fields, date (format), state (abbreviations in an address), password | Pass: Entering incorrect values results in error notifications. |
+| 2 | If an input error is automatically detected, check that the error notification meets all of the following [SC 3.3.1]. The user is made aware of the error (whether immediately upon shifting focus away from the item in error or when trying to submit the form), and the error is described to the user in text, and the item that is in error is identified in text. | Pass: An alert notifcation appears on screen within a live region and includes a text description of the error and references the item in error.|
diff --git a/testcases/TC10.4-all-pass-3.md b/testcases/TC10.4-all-pass-3.md
new file mode 100644
index 00000000..e28fe6ba
--- /dev/null
+++ b/testcases/TC10.4-all-pass-3.md
@@ -0,0 +1,55 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: Error Identification - focus sent to text that identifies and describes the error
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC10.4-all-pass-3
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: |
+ The page contains a textbox, a label for the textbox, and a button.
+
+ When the user enters text into the textbox and presses the button, the entry will be validated and if the entry is invalid, focus shifts to an error notification that appears on screen.
+
+ A successful test should identify a PASS against Baseline 10.4 Error Identification.
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [10.4 Test Procedure for Error Identification](https://ictbaseline.access-board.gov/10Forms/#104-test-procedure-for-error-identification)
+
+ **Baseline Test ID:** 10.4-ErrorIdentification
+
+ **Test Instruction:** all
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: Pass
+
+# Brief description of the rationale for the expected result
+result-descr: An error is automatically detected and the error notification meets all requirements of 10.4
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF10/TC10.4-all-pass-3.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| IC-1 | Input form components with automatic error detection and notification. | Identifiy that there are form components with automatic error detection and notification. |
+| 1 | Enter incorrect values in input form components in order to trigger automatic error detection that results in error notifications. Examples include but are not limited to: required fields, date (format), state (abbreviations in an address), password | Pass: Entering incorrect values results in error notifications. |
+| 2 | If an input error is automatically detected, check that the error notification meets all of the following [SC 3.3.1]. The user is made aware of the error (whether immediately upon shifting focus away from the item in error or when trying to submit the form), and the error is described to the user in text, and the item that is in error is identified in text. | Pass: When the alert notifcation appears on screen focus is automatically shifted to it and the notification includes a text description of the error and references the item in error. |
diff --git a/testcases/TC10.4-ic-dna-1.md b/testcases/TC10.4-ic-dna-1.md
new file mode 100644
index 00000000..326475bf
--- /dev/null
+++ b/testcases/TC10.4-ic-dna-1.md
@@ -0,0 +1,54 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: Error Identification - no automatic error detection/notification
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC10.4-ic-dna-1
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: |
+ The page contains a textbox, a label for the textbox, and a button.
+
+ When the user enters text into the textbox and presses the button, nothing happens. No validation is performed and no alert notification appears.
+
+ 10.4 Error Identification does not apply (DNA).
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [10.4 Test Procedure for Error Identification](https://ictbaseline.access-board.gov/10Forms/#104-test-procedure-for-error-identification)
+
+ **Baseline Test ID:** 10.4-ErrorIdentification
+
+ **Test Instruction:** Identify Content
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: DNA
+
+# Brief description of the rationale for the expected result
+result-descr: 10.4 does not apply because when incorrect values are entered/submitted, no alert notification are provided.
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF10/TC10.4-ic-dna-1.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| IC-1 | Input form components with automatic error detection and notification. | Identifiy that there are form components with automatic error detection and notification. |
+| 1 | Enter incorrect values in input form components in order to trigger automatic error detection that results in error notifications. Examples include but are not limited to: required fields, date (format), state (abbreviations in an address), password | DNA: Entering incorrect values does not result in alert notification. |
diff --git a/testcases/TC10.5-1-fail-1.md b/testcases/TC10.5-1-fail-1.md
new file mode 100644
index 00000000..b01bc877
--- /dev/null
+++ b/testcases/TC10.5-1-fail-1.md
@@ -0,0 +1,52 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: Form component with no label nor instructions
+
+# The Test Case ID should follow the pattern:
+# TC10.5-1-fail-1
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC10.5-1-fail-1
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: |
+ This form has a form field, we are looking for an identifiable label or prompt for that form field.
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [10.5 Test Procedure for Form has a Label](https://ictbaseline.access-board.gov/10Forms/#105-test-procedure-for-form-has-a-label)
+
+ **Baseline Test ID:** 10.5-FormHasLabel
+
+ **Test Instruction:** 1
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: FAIL
+
+# Brief description of the rationale for the expected result
+result-descr: |
+ The form component is unlabeled.
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF10/10.5-1-fail-1.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| IC-1| Find all form components. Examples include buttons, text fields, radio buttons, checkboxes, multi-select lists.| Input field found. |
+| IC-2| Find all instructions and cues (textual and graphical) that are related to form components, including groupings, order of completion, special conditions or qualifiers, format instructions, etc.| |
+| 10.5-1 | Check that each form component has label(s) or instructions. [SC 3.3.2] | Fail. There is no visible label or prompt. |
\ No newline at end of file
diff --git a/testcases/TC10.5-1-pass-1.md b/testcases/TC10.5-1-pass-1.md
new file mode 100644
index 00000000..e87fa6c5
--- /dev/null
+++ b/testcases/TC10.5-1-pass-1.md
@@ -0,0 +1,52 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: Form component with non-descriptive label
+
+# The Test Case ID should follow the pattern:
+# TC10.5-1-fail-1
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC10.5-1-pass-1
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: |
+ This form has a form component with a non-descriptive label, it passes standard 10.5, but it could be more descriptive.
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [10.5 Test Procedure for Form has a Label](https://ictbaseline.access-board.gov/10Forms/#105-test-procedure-for-form-has-a-label)
+
+ **Baseline Test ID:** 10.5-FormHasLabel
+
+ **Test Instruction:** 1
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: Pass
+
+# Brief description of the rationale for the expected result
+result-descr: |
+ The form component is labeled, but the prompt is not clear enough.
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF10/10.5-1-pass-1.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| IC-1| Find all form components. Examples include buttons, text fields, radio buttons, checkboxes, multi-select lists.| Input field found. |
+| IC-2| Find all instructions and cues (textual and graphical) that are related to form components, including groupings, order of completion, special conditions or qualifiers, format instructions, etc.| |
+| 10.5-1 | Check that each form component has label(s) or instructions. [SC 3.3.2] | Pass. Though there is an unclear prompt for this form component. |
\ No newline at end of file
diff --git a/testcases/TC10.5-1-pass-2.md b/testcases/TC10.5-1-pass-2.md
new file mode 100644
index 00000000..a4476264
--- /dev/null
+++ b/testcases/TC10.5-1-pass-2.md
@@ -0,0 +1,52 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: Form component with an instruction
+
+# The Test Case ID should follow the pattern:
+# TC10.5-1-fail-1
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC10.5-1-pass-2
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: |
+ This form has a form component with a brief prompt, it passes 10.5
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [10.5 Test Procedure for Form has a Label](https://ictbaseline.access-board.gov/10Forms/#105-test-procedure-for-form-has-a-label)
+
+ **Baseline Test ID:** 10.5-FormHasLabel
+
+ **Test Instruction:** 1
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: Pass
+
+# Brief description of the rationale for the expected result
+result-descr: |
+ The form component is labeled with a basic prompt for what it wants you to type.
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF10/10.5-1-pass-2.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| IC-1| Find all form components. Examples include buttons, text fields, radio buttons, checkboxes, multi-select lists.| Input field found. |
+| IC-2| Find all instructions and cues (textual and graphical) that are related to form components, including groupings, order of completion, special conditions or qualifiers, format instructions, etc.| |
+| 10.5-1 | Check that each form component has label(s) or instructions. [SC 3.3.2] | Pass. There is a brief prompt that tells you what to type in the form component. |
\ No newline at end of file
diff --git a/testcases/TC10.5-1-pass-3.md b/testcases/TC10.5-1-pass-3.md
new file mode 100644
index 00000000..706b9a91
--- /dev/null
+++ b/testcases/TC10.5-1-pass-3.md
@@ -0,0 +1,52 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: Form component with descriptive instructions
+
+# The Test Case ID should follow the pattern:
+# TC10.5-1-fail-1
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC10.5-1-pass-3
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: |
+ This form has a form component with a descriptive prompt to tell you what to type, it passes 10.5
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [10.5 Test Procedure for Form has a Label](https://ictbaseline.access-board.gov/10Forms/#105-test-procedure-for-form-has-a-label)
+
+ **Baseline Test ID:** 10.5-FormHasLabel
+
+ **Test Instruction:** 1
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: Pass
+
+# Brief description of the rationale for the expected result
+result-descr: |
+ The form component is labeled with a clear and descriptive label instead of a basic prompt.
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF10/10.5-1-pass-3.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| IC-1| Find all form components. Examples include buttons, text fields, radio buttons, checkboxes, multi-select lists.| Input field found. |
+| IC-2| Find all instructions and cues (textual and graphical) that are related to form components, including groupings, order of completion, special conditions or qualifiers, format instructions, etc.| |
+| 10.5-1 | Check that each form component has label(s) or instructions. [SC 3.3.2] | Pass. There is a descriptive prompt that tells you what to type in the form component. |
\ No newline at end of file
diff --git a/testcases/TC10.7-2.a-pass-1.md b/testcases/TC10.7-2.a-pass-1.md
new file mode 100644
index 00000000..95f4bdf3
--- /dev/null
+++ b/testcases/TC10.7-2.a-pass-1.md
@@ -0,0 +1,81 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: Error Prevention - form that results in a financial transaction is reversible
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC10.7-2.a-pass-1
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: |
+ The page has a form which contains two select boxes, and a submit button.
+
+ Changing the selection in the select boxes causes no screen change and triggers no validation. When the submit button is pressed, the form disappears, a confirmation notification appears and receives focus. A button appears below the confirmation which offers the opportunity to reverse the transaction.
+
+ The system did not give the user a mechanism to review, confirm, or correct information before the submission. The system does not provide an opportunity to correct input errors. However, the system does provide a way to reverse the submission.
+
+ A successful test should identify a Pass against Baseline 10.7 Error Prevention (Legal, Financial, Data)
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [10.7 Test Procedure for Error Prevention (Legal, Financial, Data)](https://ictbaseline.access-board.gov/10Forms/#107-test-procedure-for-error-prevention-legal-financial-data)
+
+ **Baseline Test ID:** 10.7-ErrorPrevention
+
+ **Test Instruction:** 2.a
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: Pass
+
+# Brief description of the rationale for the expected result
+result-descr: A financial transaction occurs and the opportunity to reverse the transaction is available.
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF10/TC10.7-2.a-pass-1.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+
+
+
+
Test Instruction
+
Instruction Detail
+
Expected Test Case Result
+
+
+
+
IC-1
+
Page that causes legal commitments or financial transactions for the user to occur, that modify or delete user-controllable data in data storage systems, or that submit user test responses.
+
Identifiy that the page causes a financial transaction for the user to occur that will modify user-controllable data in data storage systems.
+
+
+
1
+
Complete the form components necessary to submit. Include errors.
+
Pass: Fill out the form and press the submit button.
+
+
+
2
+
Check that at least one of the following is true [SC 3.3.4]
+
+
Reversible: Submissions are reversible.
+
Checked: Data entered by the user is checked for input errors and the user is provided an opportunity to correct them.
+
Confirmed: A mechanism is available for reviewing, confirming, and correcting information before finalizing the submission.
+
+
Pass: a. The system provides a way to reverse the submission.
+
+
diff --git a/testcases/TC10.7-2.b-pass-1.md b/testcases/TC10.7-2.b-pass-1.md
new file mode 100644
index 00000000..981e26e5
--- /dev/null
+++ b/testcases/TC10.7-2.b-pass-1.md
@@ -0,0 +1,85 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: Error Prevention - form that results in a financial transaction provides opportunity to correct input errors
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC10.7-2.b-pass-1
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: |
+ The page has a form, which contains two select boxes and a submit button.
+
+ Changing the selection in the select boxes causes no screen change and triggers no validation. When the submit button is pressed, the form is validated.
+
+ When entry is valid, the form disappears, a confirmation notification appears and receives focus. The confirmation notification says that a financial transaction has occured.
+
+ When entry is invalid, an error notification appears on screen. The error notification is within a live region. The financial transaction does not occur until the user corrects the invalid entry.
+
+ The system provides an opportunity to correct input errors.
+
+ A successful test should identify a Pass against Baseline 10.7 Error Prevention (Legal, Financial, Data)
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [10.7 Test Procedure for Error Prevention (Legal, Financial, Data)](https://ictbaseline.access-board.gov/10Forms/#107-test-procedure-for-error-prevention-legal-financial-data)
+
+ **Baseline Test ID:** 10.7-ErrorPrevention
+
+ **Test Instruction:** 2b
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: Pass
+
+# Brief description of the rationale for the expected result
+result-descr: Data entered by the user is checked for input errors and the user is provided an opportunity to correct them before the financial transaction occurs.
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF10/TC10.7-2.b-pass-1.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+
+
+
+
Test Instruction
+
Instruction Detail
+
Expected Test Case Result
+
+
+
+
IC-1
+
Page that causes legal commitments or financial transactions for the user to occur, that modify or delete user-controllable data in data storage systems, or that submit user test responses.
+
Identifiy that the page causes a financial transaction for the user to occur that will modify user-controllable data in data storage systems.
+
+
+
1
+
Complete the form components necessary to submit. Include errors.
+
Pass: Fill out the form and create an input error (attempt to order zero pizzas). Press the submit button.
+
+
+
2
+
Check that at least one of the following is true [SC 3.3.4]
+
+
Reversible: Submissions are reversible.
+
Checked: Data entered by the user is checked for input errors and the user is provided an opportunity to correct them.
+
Confirmed: A mechanism is available for reviewing, confirming, and correcting information before finalizing the submission.
+
+
Pass: b. The system checks for input errors and provides the user an opportunity to correct them.
+
+
diff --git a/testcases/TC10.7-2.c-pass-1.md b/testcases/TC10.7-2.c-pass-1.md
new file mode 100644
index 00000000..29b3c5eb
--- /dev/null
+++ b/testcases/TC10.7-2.c-pass-1.md
@@ -0,0 +1,83 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: Error Prevention - form that results in a financial transaction is confirmed before final submission
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC10.7-2.c-pass-1
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: |
+ The page has a form, which contains two select boxes and a submit button.
+
+ Changing the selection in the select boxes causes no screen change and triggers no validation. When the button is pressed, the form disappears and a mechanism to review and confirm the entries appears and receives focus.
+
+ Once reviewed, the page has a button which allows the user to return to the form to change the entries and a button to finalize the submission.
+
+ When the submission is finalized, the review information dissapears, and a confirmation notification appears and receives focus. The confirmation notification says that a financial transaction has occured.
+
+ A successful test should identify a Pass against Baseline 10.7 Error Prevention (Legal, Financial, Data)
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [10.7 Test Procedure for Error Prevention (Legal, Financial, Data)](https://ictbaseline.access-board.gov/10Forms/#107-test-procedure-for-error-prevention-legal-financial-data)
+
+ **Baseline Test ID:** 10.7-ErrorPrevention
+
+ **Test Instruction:** 2c
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: Pass
+
+# Brief description of the rationale for the expected result
+result-descr: The system provides a mechanism for reviewing, confirming, and correcting information before finalizing a financial transaction.
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF10/TC10.7-2.c-pass-1.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+
+
+
+
Test Instruction
+
Instruction Detail
+
Expected Test Case Result
+
+
+
+
IC-1
+
Page that causes legal commitments or financial transactions for the user to occur, that modify or delete user-controllable data in data storage systems, or that submit user test responses.
+
Identifiy that the page causes a financial transaction for the user to occur that will modify user-controllable data in data storage systems.
+
+
+
1
+
Complete the form components necessary to submit. Include errors.
+
Pass: Fill out the form. Press the button.
+
+
+
2
+
Check that at least one of the following is true [SC 3.3.4]
+
+
Reversible: Submissions are reversible.
+
Checked: Data entered by the user is checked for input errors and the user is provided an opportunity to correct them.
+
Confirmed: A mechanism is available for reviewing, confirming, and correcting information before finalizing the submission.
+
+
Pass: c. The system provides a mechanism for reviewing, confirming, and correcting information before finalizing a financial transaction.
+
+
\ No newline at end of file
diff --git a/testcases/TC10.7-all-fail-1.md b/testcases/TC10.7-all-fail-1.md
new file mode 100644
index 00000000..65b99f04
--- /dev/null
+++ b/testcases/TC10.7-all-fail-1.md
@@ -0,0 +1,88 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: Error Prevention - form that results in a financial transaction is not reversible, checked, nor confirmed
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC10.7-all-fail-1
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: |
+ The page has a form, which contains two select boxes and a submit button.
+
+ Changing the selection in the select boxes causes no screen change and triggers no validation. When the submit button is pressed, the form disappears, a confirmation notification appears and receives focus. The notification message says that an irreversable financial transaction has occured.
+
+ The system did not give the user a mechanism to review, confirm, or correct information before the submission. The system does not provide an opportunity to correct input errors. The system provides no way to reverse the submission.
+
+ A successful test should identify a FAIL against Baseline 10.7 Error Prevention (Legal, Financial, Data)
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [10.7 Test Procedure for Error Prevention (Legal, Financial, Data)](https://ictbaseline.access-board.gov/10Forms/#107-test-procedure-for-error-prevention-legal-financial-data)
+
+ **Baseline Test ID:** 10.7-ErrorPrevention
+
+ **Test Instruction:** all
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: Fail
+
+# Brief description of the rationale for the expected result
+result-descr: A financial transaction occurs without opportunity to reverse, check, or confirm.
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF10/TC10.7-all-fail-1.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+
+
+
+
Test Instruction
+
Instruction Detail
+
Expected Test Case Result
+
+
+
+
IC-1
+
Page that causes legal commitments or financial transactions for the user to occur, that modify or delete user-controllable data in data storage systems, or that submit user test responses.
+
Identifiy that the page causes a financial transaction for the user to occur that will modify user-controllable data in data storage systems.
+
+
+
1
+
Complete the form components necessary to submit. Include errors.
+
Pass: Fill out the form and press the submit button.
+
+
+
2
+
Check that at least one of the following is true [SC 3.3.4]
+
+
Reversible: Submissions are reversible.
+
Checked: Data entered by the user is checked for input errors and the user is provided an opportunity to correct them.
+
Confirmed: A mechanism is available for reviewing, confirming, and correcting information before finalizing the submission.
+
+
+
Fail:
+
+
The system provides no option to reverse the submission.
+
The system does not prompt the user to correct input errors.
+
The system provides no mechanism for reviewing, confirming, and correcting information before finalizing the submission.
+
+
+
+
\ No newline at end of file
diff --git a/testcases/TC10.7-ic-dna-1.md b/testcases/TC10.7-ic-dna-1.md
new file mode 100644
index 00000000..32cc1b17
--- /dev/null
+++ b/testcases/TC10.7-ic-dna-1.md
@@ -0,0 +1,51 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: Error Prevention - no forms
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC10.7-ic-dna-1
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: |
+ The page does not have a form.
+
+ A successful test should identify a DNA against Baseline 10.7 Error Prevention (Legal, Financial, Data)
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [10.7 Test Procedure for Error Prevention (Legal, Financial, Data)](https://ictbaseline.access-board.gov/10Forms/#107-test-procedure-for-error-prevention-legal-financial-data)
+
+ **Baseline Test ID:** 10.7-ErrorPrevention
+
+ **Test Instruction:** Identify Content
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: DNA
+
+# Brief description of the rationale for the expected result
+result-descr: The page does not have a form, therefore this test procedure does not apply
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF10/TC10.7-ic-dna-1.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| IC-1 | Page that causes legal commitments or financial transactions for the user to occur, that modify or delete user-controllable data in data storage systems, or that submit user test responses. | DNA: Identifiy that the page does not have a form and does not cause legal commitments nor financial transactions nor modifies/deletes user-controllable data in a storage system. |
diff --git a/testcases/TC10.7-ic-dna-2.md b/testcases/TC10.7-ic-dna-2.md
new file mode 100644
index 00000000..3627ed2b
--- /dev/null
+++ b/testcases/TC10.7-ic-dna-2.md
@@ -0,0 +1,51 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: Error Prevention - form field, but does not cause legal commitment, financial transactions, nor modifies/deletes user-controllable data in a storage system
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC10.7-ic-dna-2
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: |
+ The page has a form, but it does not cause a legal commitment, financial transactions, nor modifies/deletes user-controllable data in a storage system
+
+ A successful test should identify a DNA against Baseline 10.7 Error Prevention (Legal, Financial, Data)
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [10.7 Test Procedure for Error Prevention (Legal, Financial, Data)](https://ictbaseline.access-board.gov/10Forms/#107-test-procedure-for-error-prevention-legal-financial-data)
+
+ **Baseline Test ID:** 10.7-ErrorPrevention
+
+ **Test Instruction:** Identify Content
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: DNA
+
+# Brief description of the rationale for the expected result
+result-descr: The page does not cause a legal commitment, financial transactions, nor modifies/deletes user-controllable data in a storage system, therefore this test procedure does not apply
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF10/TC10.7-ic-dna-2.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| IC-1 | Page that causes legal commitments or financial transactions for the user to occur, that modify or delete user-controllable data in data storage systems, or that submit user test responses. | DNA: Identifiy that the page has a form but does not cause legal commitments nor financial transactions nor modifies/deletes user-controllable data in a storage system. |
diff --git a/testcases/TC11.1-1-fail-1.md b/testcases/TC11.1-1-fail-1.md
new file mode 100644
index 00000000..91912795
--- /dev/null
+++ b/testcases/TC11.1-1-fail-1.md
@@ -0,0 +1,55 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: Page Titles - no element
+
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC11.1-1-fail-1
+
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: |
+ The `` element defines the title of the document, and is required in all HTML/XHTML documents. This test evaluates the presence of the `` element on the Web page.
+
+ The code sample presents a page with no `` element. A successful test should identify a failure against Baseline Test 11.1-PageTitled.
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [11.1 Test Procedure for Page Titled](https://ictbaseline.access-board.gov/11PageTitles/#111-test-procedure-for-page-titled)
+
+ **Baseline Test ID:** 11.1-PageTitled
+
+ **Test Instruction:** 1
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: FAIL
+
+# Brief description of the rationale for the expected result
+result-descr: No `` element is defined for the page.
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF11/11.1-1-fail-1.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| **IC-1** | Page `` element for the page. | Applicable; page is an HTML web page with text. |
+| **11.1-1** | Check that a page `` element is defined for the page. [SC 2.4.2] | Fail: No `` element is defined |
+| **Result** | If any of the above checks fail, then Baseline Test 11.1-PageTitled fails. | Fail: 11.1-1 check fails. |
\ No newline at end of file
diff --git a/testcases/TC11.1-2-fail-1.md b/testcases/TC11.1-2-fail-1.md
new file mode 100644
index 00000000..48a902aa
--- /dev/null
+++ b/testcases/TC11.1-2-fail-1.md
@@ -0,0 +1,56 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: Page Titles - Inaccurate element
+
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC11.1-2-fail-1
+
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: |
+ The `` element defines the title of the document, and is required in all HTML/XHTML documents. This test evaluates the accuracy of the element on the Web page.
+
+ The code sample presents a page with an inaccurate `` element. A successful test should identify a failure against Baseline Test 11.1-PageTitled.
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [11.1 Test Procedure for Page Titled](https://github.com/Section508Coordinators/ICTTestingBaseline/blob/master/11PageTitles.md#111-test-procedure-for-page-titled)
+
+ **Baseline Test ID:** 11.1 Test Procedure for Page Titled
+
+ **Test Instruction:** 2
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: FAIL
+
+# Brief description of the rationale for the expected result
+result-descr: An inaccurate `` element is defined for the page.
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF11/11.1-2-fail-1.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| **IC-1** | Page `` element for the page. | Applicable; page is an HTML web page with text and a `` element. |
+| **11.1-1** | Check that a page `` element is defined for the page. [SC 2.4.2] | Pass: `` element is defined |
+| **11.1-2** | Check that the Page Title identifies the contents or purpose of the Web page. `[SC 2.4.2`] | Fail: the Page Title does not identify the contents or purpose of the Web page. |
+| **Result** | If any of the above checks fail, then Baseline Test 11.1-PageTitled fails. | 11.1-2 check fails |
\ No newline at end of file
diff --git a/testcases/TC11.1-all-pass-1.md b/testcases/TC11.1-all-pass-1.md
new file mode 100644
index 00000000..ce54c26e
--- /dev/null
+++ b/testcases/TC11.1-all-pass-1.md
@@ -0,0 +1,56 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: Page Titles - has correct descriptive element
+
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC11.1-all-pass-1
+
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: |
+ The `` element defines the title of the document, and is required in all HTML/XHTML documents. This test evaluates the presence of the `` element on the Web page.
+
+ The code sample presents a page with a `` element that correctly describes the page content/purpose. A successful test should identify a pass against Baseline Test 11.1-PageTitled.
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [11.1 Test Procedure for Page Titled](https://ictbaseline.access-board.gov/11PageTitles/#111-test-procedure-for-page-titled)
+
+ **Baseline Test ID:** 11.1-PageTitled
+
+ **Test Instruction:** 1, 2
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: PASS
+
+# Brief description of the rationale for the expected result
+result-descr: Correct descriptive `` element is defined for the page.
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF11/11.1-all-pass-1.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| **IC-1** | Page `` element for the page.| Applicable; page is an HTML web page with text. |
+| **11.1** | Check that a page `` element is defined for the page. `[SC 2.4.2]` | Pass: `` element is defined |
+| **11.2** | Check that the Page Title identifies the contents or purpose of the Web page. `[SC 2.4.2]` | Pass: the Page Title correctly identifies the contents or purpose of the Web page. |
+| **Result** | If any of the above checks fail, then Baseline Test 11.1-PageTitled fails. | Pass: all checks pass |
\ No newline at end of file
diff --git a/testcases/TC13.3-1-fail-1.md b/testcases/TC13.3-1-fail-1.md
new file mode 100644
index 00000000..1376db38
--- /dev/null
+++ b/testcases/TC13.3-1-fail-1.md
@@ -0,0 +1,53 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: Programmatic Heading - non-visual heading has heading structure
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC13.3-1-fail-1
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: |
+ Programmatic headings should only be used on visual headings, which denote sections of content.
+
+ The code sample provides a programmatic heading on content that is not a visual heading and within a paragraph. A successful test should identify a FAIL against Baseline 13.3-ProgHeadingVisual.
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [13.3 Test Procedure for Descriptive Headings](https://section508coordinators.github.io/ICTTestingBaseline/13Structure.html#133-test-procedure-for-programmatic-headings-visual)
+
+ **Baseline Test ID:** 13.3-ProgHeadingVisual
+
+ **Test Instruction:** 1
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: FAIL
+
+# Brief description of the rationale for the expected result
+result-descr: The programmatic heading in the code sample is not a visual heading
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF13/13.3-1-fail-1.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| **IC-1** | Programmatically determined headings: `
` to `
` or ARIA `role="heading"`. | `
` found|
+| **13.3-1** | Check that each programmatically determinable heading is also serving as a visual heading on the page. Content that is not a visual heading cannot have a role of heading. [SC 1.3.1] | There is a `
` within a paragraph of text. It is not a visual heading.|
+| **Result** | If the above check fails, then Baseline Test 13.3-ProgHeadingVisual fails. | FAIL |
diff --git a/testcases/TC13.3-1-fail-2.md b/testcases/TC13.3-1-fail-2.md
new file mode 100644
index 00000000..789e6fa7
--- /dev/null
+++ b/testcases/TC13.3-1-fail-2.md
@@ -0,0 +1,53 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: Programmatic Heading - menu items have heading structure
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC13.3-1-fail-2
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: |
+ Programmatic headings should only be used on visual headings, which denote sections of content.
+
+ The code sample provides a programmatic heading on navigation links that are not visual headings. A successful test should identify a FAIL against Baseline 13.3-ProgHeadingVisual.
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [13.3 Test Procedure for Descriptive Headings](https://section508coordinators.github.io/ICTTestingBaseline/13Structure.html#133-test-procedure-for-programmatic-headings-visual)
+
+ **Baseline Test ID:** 13.3-ProgHeadingVisual
+
+ **Test Instruction:** 1
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: FAIL
+
+# Brief description of the rationale for the expected result
+result-descr: The programmatic heading in the code sample is not a visual heading
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF13/13.3-1-fail-2.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| **IC-1** | Programmatically determined headings: `
` to `
` or ARIA `role="heading"`. | `
` found|
+| **13.3-1** | Check that each programmatically determinable heading is also serving as a visual heading on the page. Content that is not a visual heading cannot have a role of heading. [SC 1.3.1] | There are `
` headings used for links in a navigation menu. These are not visual headings.|
+| **Result** | If the above check fails, then Baseline Test 13.3-ProgHeadingVisual fails. | FAIL |
diff --git a/testcases/TC13.3-1-pass-1.md b/testcases/TC13.3-1-pass-1.md
new file mode 100644
index 00000000..ce904406
--- /dev/null
+++ b/testcases/TC13.3-1-pass-1.md
@@ -0,0 +1,52 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: Programmatic Heading - correct structure and levels
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC13.3-1-pass-1
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: |
+ Programmatic headings should only be used on visual headings, which denote sections of content.
+
+ The code sample provides a programmatic headings and appropriate levels for all visual headings. A successful test should identify a PASS against Baseline 13.3-ProgHeadingVisual.
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [13.3 Test Procedure for Descriptive Headings](https://section508coordinators.github.io/ICTTestingBaseline/13Structure.html#133-test-procedure-for-programmatic-headings-visual)
+
+ **Baseline Test ID:** 13.3-ProgHeadingVisual
+
+ **Test Instruction:** 1
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: PASS
+
+# Brief description of the rationale for the expected result
+result-descr: The programmatic headings in the code sample are visual headings
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF13/13.3-1-pass-1.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| **IC-1** | Programmatically determined headings: `
` to `
` or ARIA `role="heading"`. | `
` and `
` found|
+| **13.3-1** | Check that each programmatically determinable heading is also serving as a visual heading on the page. Content that is not a visual heading cannot have a role of heading. [SC 1.3.1] | All programmatic headings are visual headings.|
+| **Result** | If the above check fails, then Baseline Test 13.3-ProgHeadingVisual fails. | PASS |
diff --git a/testcases/TC13.3-ic-dna-1.md b/testcases/TC13.3-ic-dna-1.md
new file mode 100644
index 00000000..46bcd0c3
--- /dev/null
+++ b/testcases/TC13.3-ic-dna-1.md
@@ -0,0 +1,51 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: '13.3 Programmatic Headings - DNA: no programmatic headings'
+
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC13.3-ic-dna-1
+
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: |
+ The code sample presents a page with no programmatic headings. A successful test should identify a DNA against Baseline Test 13.3 Programmatic Headings Visual.
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [13.3 Test Procedure for Programmatic Headings Visual](https://github.com/Section508Coordinators/ICTTestingBaseline/blob/section508coordinators301/13Structure.md#133-test-procedure-for-programmatic-headings-visual)
+
+ **Baseline Test ID:** 13.3-ProgHeadingVisual
+
+ **Test Instruction:** Identify Content
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: DNA
+
+# Brief description of the rationale for the expected result
+result-descr: There are no programmatic headings.
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF13/13.3-ic-dna-1.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| **IC-1** | Programmatically determined headings: <h1> to <h6> or ARIA role="heading".| Does Not Apply; page has text content but no programmatic headings. |
diff --git a/testcases/TC13.3-ic-dna-2.md b/testcases/TC13.3-ic-dna-2.md
new file mode 100644
index 00000000..e4c31acf
--- /dev/null
+++ b/testcases/TC13.3-ic-dna-2.md
@@ -0,0 +1,50 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: Programmatic Heading - visually apparent headings but no programmatic headings
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC13.3-ic-dna-2
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: |
+ Programmatic headings should only be used on visual headings, which denote sections of content.
+
+ The code sample provides visual headings but no programmatic headings. A successful test should identify a DOES NOT APPLY against Baseline 13.3-ProgHeadingVisual.
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [13.3 Test Procedure for Descriptive Headings](https://section508coordinators.github.io/ICTTestingBaseline/13Structure.html#133-test-procedure-for-programmatic-headings-visual)
+
+ **Baseline Test ID:** 13.3-ProgHeadingVisual
+
+ **Test Instruction:** IC
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: DNA
+
+# Brief description of the rationale for the expected result
+result-descr: The are no programmatic headings in the code sample
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF13/13.3-ic-dna-2.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| **IC-1** | Programmatically determined headings: `
` to `
` or ARIA `role="heading"`. | No programmatic headings found|
diff --git a/testcases/TC13.4-1.a-fail-1.md b/testcases/TC13.4-1-fail-1.md
similarity index 85%
rename from testcases/TC13.4-1.a-fail-1.md
rename to testcases/TC13.4-1-fail-1.md
index 8d91c7b7..2ecd604f 100644
--- a/testcases/TC13.4-1.a-fail-1.md
+++ b/testcases/TC13.4-1-fail-1.md
@@ -1,52 +1,52 @@
----
-# The layout must be 'testcase'; DO NOT Change
-layout: testcase
-
-# Brief, descriptive title for the test case
-title: Visually apparent unordered list not identified as a list programmatically
-
-
-# The Test Case ID should follow the pattern:
-# TC[Baseline Test Procedure #]-[Test Instruction #]-
-# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
-tcid: TC13.4-1.a-fail-1
-
-# Description of the Test Case, the included code sample, test considerations,
-# and rationale for the expected result according to the applicable ICT
-# Baseline test
-descr: |
- Visually apparent lists must also provide indication programatically that the informaton is included in a list. In the code sample included in this test case a visually apparent list is not defined as a list programatically.
-
-# Reference and link to the applicable ICT Baseline test
-app-baseline: |
- [13.4 Test Procedure for Visually Apparent Lists](https://ictbaseline.access-board.gov/13Structure/#134-test-procedure-for-visually-apparent-lists)
-
- **Baseline Test ID:** 13.4-List
-
- **Test Instruction:** 1.a
-
-# Expected result that the ICT Baseline would predict
-# [Pass | Fail | DNA]
-result: FAIL
-
-# Brief description of the rationale for the expected result
-result-descr: Because the information presented visually in a list is not defined as a list programatically the content fails baseline test 13.4.
-
-# URL for the code sample
-# In the sample code file, add id="tc_code" to the
-# element that contains the relevant code snippet.
-#
-# Then upload the code sample to the 'testfiles' folder
-# and provide the link (and only the url) below.
-sample: /testfiles/TF13/13.4-1.a-fail-1.html
-
-# Table of test instructions, including the following table headers:
-# Test Instruction #; Instruction Detail; Expected Test Case Result
-#
-# Include the table in the content section below
----
-| Test Instruction | Instruction Detail | Expected Test Case Result |
-|------------------|--------------------|---------------------------|
-| **IC-1** | Visually apparent lists. For each list, determine if it appears to be ordered, unordered, or a description list. Ordered lists `` are numbered sequentially and, if necessary, hierarchically (e.g., 1, 2, 2a, 2ai, etc.) and are used where sequence or the ability to reference specific items by number/letter is important. Unordered lists `
` are not numbered and are used where sequence or the ability to reference specific items by number/letter is not important. Description lists `
` are used to group terms with their descriptions. | This code sample includes one visually apparent unordered list. |
-| **13.4-1.a** | For each visually apparent list: Check that content that has the visual appearance of a list (with or without bullets) that has no special order or sequence is marked as an unordered list. [SC 1.3.1] | Fail - the visually apparent list is not defined programatically as a list. |
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: Visually apparent unordered list not identified as a list programmatically
+
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC13.4-1-fail-1
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: |
+ Visually apparent lists must also provide indication programatically that the informaton is included in a list. In the code sample included in this test case a visually apparent list is not defined as a list programatically.
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [13.4 Test Procedure for Visually Apparent Lists](https://ictbaseline.access-board.gov/13Structure/#134-test-procedure-for-visually-apparent-lists)
+
+ **Baseline Test ID:** 13.4-List
+
+ **Test Instruction:** 1
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: FAIL
+
+# Brief description of the rationale for the expected result
+result-descr: Because the information presented visually in a list is not defined as a list programatically the content fails baseline test 13.4.
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF13/13.4-1-fail-1.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| **IC-1** | Visually apparent lists. For each list, determine if it appears to be ordered, unordered, or a description list. Ordered lists `` are numbered sequentially and, if necessary, hierarchically (e.g., 1, 2, 2a, 2ai, etc.) and are used where sequence or the ability to reference specific items by number/letter is important. Unordered lists `
` are not numbered and are used where sequence or the ability to reference specific items by number/letter is not important. Description lists `
` are used to group terms with their descriptions. | This code sample includes one visually apparent unordered list. |
+| **13.4-1** | For each visually apparent list: Check that content that has the visual appearance of a list (with or without bullets) that has no special order or sequence is marked as an unordered list. [SC 1.3.1] | Fail - the visually apparent list is not defined programatically as a list. |
| **Result** | If the above check fails, Baseline Test 13.4-List fails. | FAIL; the check fails. |
\ No newline at end of file
diff --git a/testcases/TC13.4-1-pass-1.md b/testcases/TC13.4-1-pass-1.md
new file mode 100644
index 00000000..92fb4950
--- /dev/null
+++ b/testcases/TC13.4-1-pass-1.md
@@ -0,0 +1,54 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: Visually apparent unordered list correctly identified as a list programmatically
+
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC13.4-1-pass-1
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: |
+ Visually apparent lists must also provide indication programatically that the informaton is included in a list. In the code sample included in this test case a visually apparent list is correctly defined as a list programatically.
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [13.4 Test Procedure for Visually Apparent Lists](https://ictbaseline.access-board.gov/13Structure/#134-test-procedure-for-visually-apparent-lists)
+
+ **Baseline Test ID:** 13.4-List
+
+ **Test Instruction:** 1
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: Pass
+
+# Brief description of the rationale for the expected result
+result-descr: The visually apparent list is defined as an unordered list programatically.
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF13/13.4-1-pass-1.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| **IC-1** | Visually apparent lists. For each list, determine if it appears to be ordered, unordered, or a description list. Ordered lists `` are numbered sequentially and, if necessary, hierarchically (e.g., 1, 2, 2a, 2ai, etc.) and are used where sequence or the ability to reference specific items by number/letter is important. Unordered lists `
` are not numbered and are used where sequence or the ability to reference specific items by number/letter is not important. Description lists `
` are used to group terms with their descriptions. | This code sample includes one visually apparent unordered list. |
+| **13.4-1** | For each visually apparent list: Check that content that has the visual appearance of a list (with or without bullets) that has no special order or sequence is marked as an unordered list. [SC 1.3.1] | Pass - the visually apparent list is correctly defined programatically with `
`. |
+| **13.4-2** | For each visually apparent list: Check that content that has the visual appearance of a numbered list is marked as an ordered list. [SC 1.3.1] | Not applicable |
+| **13.4-3** | Check that content is marked as a description list when terms and their descriptions are presented in the form of a list. [SC 1.3.1] | Not applicable |
+| **Result** | If the above check fails, Baseline Test 13.4-List fails. | PASS |
\ No newline at end of file
diff --git a/testcases/TC13.4-1.b-fail-1.md b/testcases/TC13.4-2-fail-1.md
similarity index 86%
rename from testcases/TC13.4-1.b-fail-1.md
rename to testcases/TC13.4-2-fail-1.md
index 751b5e32..e25c2363 100644
--- a/testcases/TC13.4-1.b-fail-1.md
+++ b/testcases/TC13.4-2-fail-1.md
@@ -1,52 +1,52 @@
----
-# The layout must be 'testcase'; DO NOT Change
-layout: testcase
-
-# Brief, descriptive title for the test case
-title: Visually apparent ordered list not identified as a list programmatically
-
-
-# The Test Case ID should follow the pattern:
-# TC[Baseline Test Procedure #]-[Test Instruction #]-
-# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
-tcid: TC13.4-1.b-fail-1
-
-# Description of the Test Case, the included code sample, test considerations,
-# and rationale for the expected result according to the applicable ICT
-# Baseline test
-descr: |
- Visually apparent ordered lists must also provide indication programatically that the informaton is included in a list. In the code sample included in this test case a visually apparent ordered list is not defined as a list programatically.
-
-# Reference and link to the applicable ICT Baseline test
-app-baseline: |
- [13.4 Test Procedure for Visually Apparent Lists](https://ictbaseline.access-board.gov/13Structure/#134-test-procedure-for-visually-apparent-lists)
-
- **Baseline Test ID:** 13.4-List
-
- **Test Instruction:** 1.b
-
-# Expected result that the ICT Baseline would predict
-# [Pass | Fail | DNA]
-result: FAIL
-
-# Brief description of the rationale for the expected result
-result-descr: Because the information presented visually in an ordered list is not defined as a list programatically the content fails baseline test 13.4.
-
-# URL for the code sample
-# In the sample code file, add id="tc_code" to the
-# element that contains the relevant code snippet.
-#
-# Then upload the code sample to the 'testfiles' folder
-# and provide the link (and only the url) below.
-sample: /testfiles/TF13/13.4-1.b-fail-1.html
-
-# Table of test instructions, including the following table headers:
-# Test Instruction #; Instruction Detail; Expected Test Case Result
-#
-# Include the table in the content section below
----
-| Test Instruction | Instruction Detail | Expected Test Case Result |
-|------------------|--------------------|---------------------------|
-| **IC-1** | Visually apparent lists. For each list, determine if it appears to be ordered, unordered, or a description list. Ordered lists `` are numbered sequentially and, if necessary, hierarchically (e.g., 1, 2, 2a, 2ai, etc.) and are used where sequence or the ability to reference specific items by number/letter is important. Unordered lists `
` are not numbered and are used where sequence or the ability to reference specific items by number/letter is not important. Description lists `
` are used to group terms with their descriptions. | This code sample includes one visually apparent unordered list. |
-| **13.4-1.b** | For each visually apparent list: Check that content that has the visual appearance of a numbered list is marked as an ordered list. [SC 1.3.1] | Fail - the visually apparent ordered list is not defined programatically as a list. |
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: Visually apparent ordered list not identified as a list programmatically
+
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC13.4-2-fail-1
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: |
+ Visually apparent ordered lists must also provide indication programatically that the informaton is included in a list. In the code sample included in this test case a visually apparent ordered list is not defined as a list programatically.
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [13.4 Test Procedure for Visually Apparent Lists](https://ictbaseline.access-board.gov/13Structure/#134-test-procedure-for-visually-apparent-lists)
+
+ **Baseline Test ID:** 13.4-List
+
+ **Test Instruction:** 2
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: FAIL
+
+# Brief description of the rationale for the expected result
+result-descr: Because the information presented visually in an ordered list is not defined as a list programatically the content fails baseline test 13.4.
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF13/13.4-2-fail-1.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| **IC-1** | Visually apparent lists. For each list, determine if it appears to be ordered, unordered, or a description list. Ordered lists `` are numbered sequentially and, if necessary, hierarchically (e.g., 1, 2, 2a, 2ai, etc.) and are used where sequence or the ability to reference specific items by number/letter is important. Unordered lists `
` are not numbered and are used where sequence or the ability to reference specific items by number/letter is not important. Description lists `
` are used to group terms with their descriptions. | This code sample includes one visually apparent unordered list. |
+| **13.4-2** | For each visually apparent list: Check that content that has the visual appearance of a numbered list is marked as an ordered list. [SC 1.3.1] | Fail - the visually apparent ordered list is not defined programatically as a list. |
| **Result** | If the above check fails, Baseline Test 13.4-List fails. | FAIL; the check fails. |
\ No newline at end of file
diff --git a/testcases/TC13.4-2-fail-2.md b/testcases/TC13.4-2-fail-2.md
new file mode 100644
index 00000000..17045570
--- /dev/null
+++ b/testcases/TC13.4-2-fail-2.md
@@ -0,0 +1,52 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: List - Visually apparent ordered list programmatically identified as an unordered list
+
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC13.4-2-fail-2
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: |
+ Visually apparent ordered lists must be programatically identified with the correct list type. In the code sample included in this test case a visually apparent ordered list is defined programatically with
, an unordered list.
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [13.4 Test Procedure for Visually Apparent Lists](https://ictbaseline.access-board.gov/13Structure/#134-test-procedure-for-visually-apparent-lists)
+
+ **Baseline Test ID:** 13.4-List
+
+ **Test Instruction:** 2
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: FAIL
+
+# Brief description of the rationale for the expected result
+result-descr: The incorrect list type is used for the visually apparent list.
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF13/13.4-2-fail-2.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| **IC-1** | Visually apparent lists. For each list, determine if it appears to be ordered, unordered, or a description list. Ordered lists `` are numbered sequentially and, if necessary, hierarchically (e.g., 1, 2, 2a, 2ai, etc.) and are used where sequence or the ability to reference specific items by number/letter is important. Unordered lists `
` are not numbered and are used where sequence or the ability to reference specific items by number/letter is not important. Description lists `
` are used to group terms with their descriptions. | This code sample includes one visually apparent ordered list. |
+| **13.4-2** | For each visually apparent list: Check that content that has the visual appearance of a numbered list is marked as an ordered list. [SC 1.3.1] | Fail - the visually apparent ordered list is defined programatically as an unordered list. |
+| **Result** | If the above check fails, Baseline Test 13.4-List fails. | FAIL; the check fails. |
\ No newline at end of file
diff --git a/testcases/TC13.4-2-pass-2.md b/testcases/TC13.4-2-pass-2.md
new file mode 100644
index 00000000..840465b3
--- /dev/null
+++ b/testcases/TC13.4-2-pass-2.md
@@ -0,0 +1,54 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: List - Visually apparent ordered list programmatically identified correctly
+
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC13.4-2-pass-2
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: |
+ Visually apparent ordered lists must be programatically identified with the correct list type. In the code sample included in this test case a visually apparent ordered list is correctly defined programatically with , an ordered list.
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [13.4 Test Procedure for Visually Apparent Lists](https://ictbaseline.access-board.gov/13Structure/#134-test-procedure-for-visually-apparent-lists)
+
+ **Baseline Test ID:** 13.4-List
+
+ **Test Instruction:** 2
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: PASS
+
+# Brief description of the rationale for the expected result
+result-descr: The correct list type is used for the visually apparent list.
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF13/13.4-2-pass-2.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| **IC-1** | Visually apparent lists. For each list, determine if it appears to be ordered, unordered, or a description list. Ordered lists `` are numbered sequentially and, if necessary, hierarchically (e.g., 1, 2, 2a, 2ai, etc.) and are used where sequence or the ability to reference specific items by number/letter is important. Unordered lists `
` are not numbered and are used where sequence or the ability to reference specific items by number/letter is not important. Description lists `
` are used to group terms with their descriptions. | This code sample includes one visually apparent ordered list. |
+| **13.4-1** | Check that content that has the visual appearance of a list (with or without bullets) that has no special order or sequence is marked as an unordered list. [SC 1.3.1] | Not applicable |
+| **13.4-2** | For each visually apparent list: Check that content that has the visual appearance of a numbered list is marked as an ordered list. [SC 1.3.1] | Pass - the visually apparent ordered list is correctly defined programatically as an ordered list. |
+| **13.4-3** | Check that content is marked as a description list when terms and their descriptions are presented in the form of a list. [SC 1.3.1] | Not applicable |
+| **Result** | If the above check fails, Baseline Test 13.4-List fails. | PASS |
\ No newline at end of file
diff --git a/testcases/TC13.4-3-fail-2.md b/testcases/TC13.4-3-fail-2.md
new file mode 100644
index 00000000..41fc6e04
--- /dev/null
+++ b/testcases/TC13.4-3-fail-2.md
@@ -0,0 +1,52 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: Description List - Visually apparent description list not identified programmatically
+
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC13.4-3-fail-2
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: |
+ Visually apparent description lists must be programatically identified. In the code sample included in this test case a visually apparent description list is not defined programatically.
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [13.4 Test Procedure for Visually Apparent Lists](https://ictbaseline.access-board.gov/13Structure/#134-test-procedure-for-visually-apparent-lists)
+
+ **Baseline Test ID:** 13.4-List
+
+ **Test Instruction:** 3
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: FAIL
+
+# Brief description of the rationale for the expected result
+result-descr: The visually apparent description list is not identified programmatically.
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF13/13.4-3-fail-2.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| **IC-1** | Visually apparent lists. For each list, determine if it appears to be ordered, unordered, or a description list. Ordered lists `` are numbered sequentially and, if necessary, hierarchically (e.g., 1, 2, 2a, 2ai, etc.) and are used where sequence or the ability to reference specific items by number/letter is important. Unordered lists `
` are not numbered and are used where sequence or the ability to reference specific items by number/letter is not important. Description lists `
` are used to group terms with their descriptions. | This code sample includes one visually apparent description list. |
+| **13.4-3** | Check that content is marked as a description list when terms and their descriptions are presented in the form of a list. [SC 1.3.1] | Fail - the visually apparent description list is not defined programatically. |
+| **Result** | If the above check fails, Baseline Test 13.4-List fails. | FAIL; the check fails. |
\ No newline at end of file
diff --git a/testcases/TC13.4-3-pass-2.md b/testcases/TC13.4-3-pass-2.md
new file mode 100644
index 00000000..8d05f67c
--- /dev/null
+++ b/testcases/TC13.4-3-pass-2.md
@@ -0,0 +1,54 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: Description List - Visually apparent description list identified programmatically
+
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC13.4-3-pass-2
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: |
+ Visually apparent description lists must be programatically identified. In the code sample included in this test case a visually apparent description list is defined programatically.
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [13.4 Test Procedure for Visually Apparent Lists](https://ictbaseline.access-board.gov/13Structure/#134-test-procedure-for-visually-apparent-lists)
+
+ **Baseline Test ID:** 13.4-List
+
+ **Test Instruction:** 3
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: PASS
+
+# Brief description of the rationale for the expected result
+result-descr: The visually apparent description list is identified programmatically.
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF13/13.4-3-pass-2.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| **IC-1** | Visually apparent lists. For each list, determine if it appears to be ordered, unordered, or a description list. Ordered lists `` are numbered sequentially and, if necessary, hierarchically (e.g., 1, 2, 2a, 2ai, etc.) and are used where sequence or the ability to reference specific items by number/letter is important. Unordered lists `
` are not numbered and are used where sequence or the ability to reference specific items by number/letter is not important. Description lists `
` are used to group terms with their descriptions. | This code sample includes one visually apparent description list. |
+| **13.4-1** | For each visually apparent list: Check that content that has the visual appearance of a list (with or without bullets) that has no special order or sequence is marked as an unordered list. [SC 1.3.1] | Not applicable |
+| **13.4-2** | For each visually apparent list: Check that content that has the visual appearance of a numbered list is marked as an ordered list. [SC 1.3.1] | Not applicable |
+| **13.4-3** | Check that content is marked as a description list when terms and their descriptions are presented in the form of a list. [SC 1.3.1] | Pass - the visually apparent description list is correctly defined programatically. |
+| **Result** | If the above check fails, Baseline Test 13.4-List fails. | PASS |
\ No newline at end of file
diff --git a/testcases/TC13.4-ic-dna-1.md b/testcases/TC13.4-ic-dna-1.md
new file mode 100644
index 00000000..fe5d53ee
--- /dev/null
+++ b/testcases/TC13.4-ic-dna-1.md
@@ -0,0 +1,50 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: No visually apparent list
+
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC13.4-ic-dna-1
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: |
+ Visually apparent lists must also provide indication programatically that the informaton is included in a list. In the code sample there is no visually apparent list.
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [13.4 Test Procedure for Visually Apparent Lists](https://ictbaseline.access-board.gov/13Structure/#134-test-procedure-for-visually-apparent-lists)
+
+ **Baseline Test ID:** 13.4-List
+
+ **Test Instruction:** ic
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: DNA
+
+# Brief description of the rationale for the expected result
+result-descr: Because the information presented visually in a list is not defined as a list programatically the content fails baseline test 13.4.
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF13/13.2-ic-dna-1.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| **IC-1** | Visually apparent lists. For each list, determine if it appears to be ordered, unordered, or a description list. Ordered lists `` are numbered sequentially and, if necessary, hierarchically (e.g., 1, 2, 2a, 2ai, etc.) and are used where sequence or the ability to reference specific items by number/letter is important. Unordered lists `
` are not numbered and are used where sequence or the ability to reference specific items by number/letter is not important. Description lists `
` are used to group terms with their descriptions. | DNA - no visually apparent list |
diff --git a/testcases/TC14.1-1-fail-1.md b/testcases/TC14.1-1-fail-1.md
new file mode 100644
index 00000000..4f3b581f
--- /dev/null
+++ b/testcases/TC14.1-1-fail-1.md
@@ -0,0 +1,51 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: Link Purpose (In Context) - Image/link has an empty accessible name and description (TC14.1-1-fail-1)
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC14.1-1-fail-1
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: The sample code inlcudes an iamge/link with an empty accessible name and description. A successful test should identify a FAIL against Baseline 14.1-LinkPurpose
+
+
+# Reference and link to the applicable ICT Baseline test
+app-basline: |
+ [14.1 Test Procedure for Link Purpose (In Context)](https://ictbaseline.access-board.gov/14Links/#141-test-procedure-for-link-purpose-in-context)
+
+ **Baseline Test ID:** 14.1-LinkPurpose
+
+ **Test Instruction:** 1
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: Fail
+
+# Brief description of the rationale for the expected result
+result-descr: The code sample includes an image/link with no accessible name or description.
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF14/14.1-1-fail-1.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| IC-1 | All links including those that are scripted elements and assigned a role of a link.| The sample code includes one link on the page. |
+| 14.1-1 | Check that the combination of accessible name and accessible description is not empty. [SC 4.1.2] | FAIL - the image/link does not provide any alternative text for the image nor any other content or attributes that contribute to the accessible name or description |
+| Result | If any of the above checks fail, then Baseline Test 14.1-Links. No accessible name or description. | FAIL - the image/link fails the check for non-empty accessible name and description. |
diff --git a/testcases/TC14.1-2-fail-1.md b/testcases/TC14.1-2-fail-1.md
new file mode 100644
index 00000000..2fc40726
--- /dev/null
+++ b/testcases/TC14.1-2-fail-1.md
@@ -0,0 +1,51 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: Link Purpose (In Context) - Link does not sufficiently describe its purpose
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC14.1-2-fail-1
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: |
+ Detect the existence of a `` element and determine if the link text sufficiently describes of its purpose. The code sample includes a link that does adequately describe the link's purpose. A successful test should identify a Fail for Baseline 14.1-LinkPurpose.
+
+# Reference and link to the applicable ICT Baseline test
+app-basline: |
+ [14.1 Test Procedure for Link Purpose (In Context)](https://ictbaseline.access-board.gov/14Links/#141-test-procedure-for-link-purpose-in-context)
+
+ **Baseline Test ID:** 14.1-LinkPurpose
+
+ **Test Instruction:** 2
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: Fail
+
+# Brief description of the rationale for the expected result
+result-descr: A link in the code sample does not sufficiently describe the purpose of the link.
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF14/14.1-2-fail-1.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| IC-1|All links including those that are scripted elements and assigned a role of a link.| The sample code includes multiple links on the page. |
+| 14.1-1 | Check that the combination of accessible name and accessible description is not empty. [SC 4.1.2] | Pass - each of the links has a non-empty accessible name and description. |
+| 14.1-2 | Check that the purpose of each link can be determined from any combination of the link text, accessible name and accessible description, and preceding page context (same paragraph, list, or table cell as the link or in a table header cell that is associated with the table cell that contains the link). [SC 2.4.4] | Fail - a link provides an accessible name and description that does not sufficiently describe the link's purpose. |
+| Result | If any of the above checks fail, then Baseline Test 14.1-Links. | Fail - one of the checks fails. |
diff --git a/testcases/TC14.1-all-pass-1.md b/testcases/TC14.1-all-pass-1.md
new file mode 100644
index 00000000..4b69f859
--- /dev/null
+++ b/testcases/TC14.1-all-pass-1.md
@@ -0,0 +1,47 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: Link Purpose (In Context) - The purpose of each link can be determined from the link text
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC14.1-all-pass-1
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: |
+ Detect the existence of a `` element and determine if the link's text and context sufficiently describes its purpose. The code sample provides links that describes the intent of each link when combined with context from each link's list hierarchy. A successful test should identify a **PASS** for Baseline 14.1-LinkPurpose.
+
+# Reference and link to the applicable ICT Baseline test
+app-basline: |
+ [14.1 Test Procedure for Link Purpose (In Context)](https://ictbaseline.access-board.gov/14Links/#141-test-procedure-for-link-purpose-in-context)
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: Pass
+
+# Brief description of the rationale for the expected result
+result-descr: The inner text and context of each link in the code sample sufficiently describes the purpose of the link.
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF14/14.1-all-pass-1.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| IC-1 | All links including those that are scripted elements and assigned a role of a link.| The sample code contains multiple links. |
+| 14.1-1 | Check that the combination of accessible name and accessible description is not empty. [SC 4.1.2] | Pass - each link provides an accessible name and description. |
+| 14.1-2 | Check that the purpose of each link can be determined from any combination of the link text, accessible name and accessible description, and preceding page context (same paragraph, list, or table cell as the link or in a table header cell that is associated with the table cell that contains the link). [SC 2.4.4] | Pass - each link's inner text combined with the context of the list hierarchy sufficiently describes the link's purpose. |
+| Result | If any of the above checks passes, then Baseline Test 14.1-Links. | Pass - all checks pass. |
diff --git a/testcases/TC14.1-ic-dna-1.md b/testcases/TC14.1-ic-dna-1.md
new file mode 100644
index 00000000..ec5cddc7
--- /dev/null
+++ b/testcases/TC14.1-ic-dna-1.md
@@ -0,0 +1,50 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: Link Purpose (In Context) - Page with no links
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC14.1-ic-dna-1
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: |
+ The sample code does not include any links on the page. Therefore Baseline Test 14.1-LinkPurpose does not apply (DNA).
+
+# Reference and link to the applicable ICT Baseline test
+app-basline: |
+ [14.1 Test Procedure for Link Purpose (In Context)](https://ictbaseline.access-board.gov/14Links/#141-test-procedure-for-link-purpose-in-context)
+
+ **Baseline Test ID:** 14.1-LinkPurpose
+
+ **Test Instruction:** Identify Content
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: DNA
+
+# Brief description of the rationale for the expected result
+result-descr: The code sample shows that there are no links present.
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF14/14.1-ic-dna-1.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| IC-1 | All links including those that are scripted elements and assigned a role of a link.| The sample code does not contain any links. |
+| Result | If any of the above checks fail, then Baseline Test 14.1-Links. No links are present. | DNA - the page has no links. |
diff --git a/testcases/TC16.1-2-fail-2.md b/testcases/TC16.1-2-fail-2.md
new file mode 100644
index 00000000..9a895365
--- /dev/null
+++ b/testcases/TC16.1-2-fail-2.md
@@ -0,0 +1,55 @@
+---
+# The layout must be 'testcase'; DO NOT Change
+layout: testcase
+
+# Brief, descriptive title for the test case
+title: Audio-Only (Prerecorded) - Transcript provided as an image of text (with equivalent text alternative)
+
+
+# The Test Case ID should follow the pattern:
+# TC[Baseline Test Procedure #]-[Test Instruction #]-
+# [Expected Result (pass/fail/dna)]-[example #], e.g., TC05.1-1-fail-1
+tcid: TC16.1-2-fail-2
+
+# Description of the Test Case, the included code sample, test considerations,
+# and rationale for the expected result according to the applicable ICT
+# Baseline test
+descr: |
+ Detect existence of a text transcript for audio-only content.
+
+ The code sample contains audio-only content and an image of text for the transcript with equivalent text description. A successful test should identify a fail for Baseline 16.1-AudioOnlyTranscript because the transcript is not text.
+
+# Reference and link to the applicable ICT Baseline test
+app-baseline: |
+ [16.1 Test Procedure for Audio-only (Prerecorded)](https://section508coordinators.github.io/ICTTestingBaseline/16AudioVideo.html#161-test-procedure-for-audio-only-prerecorded)
+
+ **Baseline Test ID:** 16.1-AudioOnlyTranscript
+
+ **Test Instruction:** 2
+
+# Expected result that the ICT Baseline would predict
+# [Pass | Fail | DNA]
+result: FAIL
+
+# Brief description of the rationale for the expected result
+result-descr: The transcript provided for audio-only content is an image.
+
+# URL for the code sample
+# In the sample code file, add id="tc_code" to the
+# element that contains the relevant code snippet.
+#
+# Then upload the code sample to the 'testfiles' folder
+# and provide the link (and only the url) below.
+sample: /testfiles/TF16/16.1-2-fail-2.html
+
+# Table of test instructions, including the following table headers:
+# Test Instruction #; Instruction Detail; Expected Test Case Result
+#
+# Include the table in the content section below
+---
+| Test Instruction | Instruction Detail | Expected Test Case Result |
+|------------------|--------------------|---------------------------|
+| **IC-1** | Pre-recorded audio-only content. | There is audio-only content. |
+| **16.1-1** | Check that the content provides transcript(s) for audio-only content. [SC 1.2.1] | Pass |
+| **16.1-2** | Check that the transcript is text (i.e., an image of a transcript would not be sufficient to pass this test). | Fail, the transcript is not text. It is an image with equivalent alternative text. |
+| **Result** | If any of the above checks fail, then Baseline Test 16.1-AudioOnlyTranscript fails. | Fail |
\ No newline at end of file
diff --git a/testcases/oldTestCases/TC10-002-pass.html b/testcases/oldTestCases/TC10-002-pass.html
deleted file mode 100644
index a42e4c80..00000000
--- a/testcases/oldTestCases/TC10-002-pass.html
+++ /dev/null
@@ -1,228 +0,0 @@
-
-
-
-
-
- Input text element - placeholder attribute
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Skip to Content
- Skip to Page Table of Contents
-
-
- ICT Accessibility Testing Baseline Alignment
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Input text element: placeholder attribute
-
Test Case Summary
-
Test Case ID
-
TC10-002-pass
-
Test Case Description
-
Detect attributes that would contribute to the accessible name and accessible description computation and calculate the text alternative for the input element. The code sample data presents a placeholder attributes that contributes to the accessible name output. A successful test should identify a passing implementation against Baseline 10. Forms.
Complete and programmatically associated form labels and instructions
-
Test Instructions
-
-
-
-
1.3.1 Info and Relationships and 4.1.2 Name, Role, Value
-
-
Check that the combination of the accessible name and accessible description is not empty.
-
Check that the combination of the accessible name, accessible description, and other programmatic associations (e.g., table column and/or row associations) describes each input field and includes all relevant instructions and cues (textual and graphical). Refer to HTML Accessibility API Mappings 1.0 for input type="text" for details on techniques that contribute to the computation of the accessible name and accessible description.
-
-
-
-
Test Results
-
-
-
-
-
If any of the above checks fail, then SC 1.3.1, SC 4.1.2, and Baseline Requirement 10 fail.
-
-
-
-
-
Applicable WCAG/508 Requirement
-
-
-
WCAG2 1.3.1 Info and Relationships: Information, structure, and relationships conveyed through presentation can be programmatically determined or are available in text.
-
WCAG2 4.1.2 Name, Role, Value: For all user interface components (including but not limited to: form elements, links and components generated by scripts), the name and role can be programmatically determined; states, properties, and values that can be set by the user can be programmatically set; and notification of changes to these items is available to user agents, including assistive technologies.
-
-
-
-
-
-
-
-
-
-
Test Case Detail
-
Expected Baseline Result
-
-
-
- Pass
-
-
-
-
-
- [The input element in the code sample provides an accessible name value via implementation of the placeholder attribute.
-
-
-
-
Test Data (code/link)
-
Code
-
-
-
-<input placeholder="Enter First and Last Name" type="text" size="25">
-
-
-
Detect attributes that would contribute to the accessible name and accessible description computation and calculate the text alternative for the input element. The code sample data presents a label/for= binding of an on-screen label that contributes to the accessible name output. A successful test should identify a passing implementation against Baseline 10. Forms.
Complete and programmatically associated form labels and instructions
-
Test Instructions
-
-
-
-
1.3.1 Info and Relationships and 4.1.2 Name, Role, Value
-
-
Check that the combination of the accessible name and accessible description is not empty.
-
Check that the combination of the accessible name, accessible description, and other programmatic associations (e.g., table column and/or row associations) describes each input field and includes all relevant instructions and cues (textual and graphical). Refer to HTML Accessibility API Mappings 1.0 for input type="text" for details on techniques that contribute to the computation of the accessible name and accessible description.
-
-
-
-
Test Results
-
-
-
-
-
If any of the above checks fail, then SC 1.3.1, SC 4.1.2, and Baseline Requirement 10 fail.
-
-
-
-
-
Applicable WCAG/508 Requirement
-
-
-
WCAG2 1.3.1 Info and Relationships: Information, structure, and relationships conveyed through presentation can be programmatically determined or are available in text.
-
WCAG2 4.1.2 Name, Role, Value: For all user interface components (including but not limited to: form elements, links and components generated by scripts), the name and role can be programmatically determined; states, properties, and values that can be set by the user can be programmatically set; and notification of changes to these items is available to user agents, including assistive technologies.
-
-
-
-
-
-
-
-
-
-
Test Case Detail
-
Expected Baseline Result
-
-
-
- Pass
-
-
-
-
-
- [The input element in the code sample provides an accessible name value via implementation of label/for = binding of an on-screen label.
-
-
One <input> element exists in the test data code sample.
-
-
-
2
-
Find all instructions and cues (textual and graphical) that are related to form components/controls
-
The <input> control has a visual prompt to the left of the control
-
-
-
3
-
Check that the combination of the accessible name and accessible description is not empty.
-
The output for the accessible name and accessible descriptions computations is populated via the binding of the on-screen label using label/for=.
-
-
-
4
-
Determine whether any checks fail according to the 10. Forms test instructions.
-
The third check passes due to a valid accessible name in the text alternative computation output.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/testcases/oldTestCases/TC10-004-pass.html b/testcases/oldTestCases/TC10-004-pass.html
deleted file mode 100644
index 6a95b4cb..00000000
--- a/testcases/oldTestCases/TC10-004-pass.html
+++ /dev/null
@@ -1,228 +0,0 @@
-
-
-
-
-
- Input text element - title attribute
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Skip to Content
- Skip to Page Table of Contents
-
-
- ICT Accessibility Testing Baseline Alignment
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Input text element: title attribute
-
Test Case Summary
-
Test Case ID
-
TC10-004-pass
-
Test Case Description
-
Detect attributes that would contribute to the accessible name and accessible description computation and calculate the text alternative for the input element. The code sample data presents a title attribute that contributes to the accessible name output. A successful test should identify a passing implementation against Baseline 10. Forms.
Complete and programmatically associated form labels and instructions
-
Test Instructions
-
-
-
-
1.3.1 Info and Relationships and 4.1.2 Name, Role, Value
-
-
Check that the combination of the accessible name and accessible description is not empty.
-
Check that the combination of the accessible name, accessible description, and other programmatic associations (e.g., table column and/or row associations) describes each input field and includes all relevant instructions and cues (textual and graphical). Refer to HTML Accessibility API Mappings 1.0 for input type="text" for details on techniques that contribute to the computation of the accessible name and accessible description.
-
-
-
-
Test Results
-
-
-
-
-
If any of the above checks fail, then SC 1.3.1, SC 4.1.2, and Baseline Requirement 10 fail.
-
-
-
-
-
Applicable WCAG/508 Requirement
-
-
-
WCAG2 1.3.1 Info and Relationships: Information, structure, and relationships conveyed through presentation can be programmatically determined or are available in text.
-
WCAG2 4.1.2 Name, Role, Value: For all user interface components (including but not limited to: form elements, links and components generated by scripts), the name and role can be programmatically determined; states, properties, and values that can be set by the user can be programmatically set; and notification of changes to these items is available to user agents, including assistive technologies.
-
-
-
-
-
-
-
-
-
-
Test Case Detail
-
Expected Baseline Result
-
-
-
- Pass
-
-
-
-
-
- [The input element in the code sample provides an accessible name value via implementation of a title attribute.
-
-
Detect attributes that would contribute to the accessible name and accessible description computation and calculate the text alternative for the input element. The code sample data presents an aria-label attribute that contributes to the accessible name output. A successful test should identify a passing implementation against Baseline 10. Forms.
Complete and programmatically associated form labels and instructions
-
Test Instructions
-
-
-
-
1.3.1 Info and Relationships and 4.1.2 Name, Role, Value
-
-
Check that the combination of the accessible name and accessible description is not empty.
-
Check that the combination of the accessible name, accessible description, and other programmatic associations (e.g., table column and/or row associations) describes each input field and includes all relevant instructions and cues (textual and graphical). Refer to HTML Accessibility API Mappings 1.0 for input type="text" for details on techniques that contribute to the computation of the accessible name and accessible description.
-
-
-
-
Test Results
-
-
-
-
-
If any of the above checks fail, then SC 1.3.1, SC 4.1.2, and Baseline Requirement 10 fail.
-
-
-
-
-
Applicable WCAG/508 Requirement
-
-
-
WCAG2 1.3.1 Info and Relationships: Information, structure, and relationships conveyed through presentation can be programmatically determined or are available in text.
-
WCAG2 4.1.2 Name, Role, Value: For all user interface components (including but not limited to: form elements, links and components generated by scripts), the name and role can be programmatically determined; states, properties, and values that can be set by the user can be programmatically set; and notification of changes to these items is available to user agents, including assistive technologies.
-
-
-
-
-
-
-
-
-
-
Test Case Detail
-
Expected Baseline Result
-
-
-
- Pass
-
-
-
-
-
- [The input element in the code sample provides an accessible name value via implementation of an aria-label attribute.
-
-
Detect attributes that would contribute to the accessible name and accessible description computation and calculate the text alternative for the input element. The code sample data presents an aria-labelledby attribute that contributes to the accessible name output. A successful test should identify a passing implementation against Baseline 10. Forms.
Complete and programmatically associated form labels and instructions
-
Test Instructions
-
-
-
-
1.3.1 Info and Relationships and 4.1.2 Name, Role, Value
-
-
Check that the combination of the accessible name and accessible description is not empty.
-
Check that the combination of the accessible name, accessible description, and other programmatic associations (e.g., table column and/or row associations) describes each input field and includes all relevant instructions and cues (textual and graphical). Refer to HTML Accessibility API Mappings 1.0 for input type="text" for details on techniques that contribute to the computation of the accessible name and accessible description.
-
-
-
-
Test Results
-
-
-
-
-
If any of the above checks fail, then SC 1.3.1, SC 4.1.2, and Baseline Requirement 10 fail.
-
-
-
-
-
Applicable WCAG/508 Requirement
-
-
-
WCAG2 1.3.1 Info and Relationships: Information, structure, and relationships conveyed through presentation can be programmatically determined or are available in text.
-
WCAG2 4.1.2 Name, Role, Value: For all user interface components (including but not limited to: form elements, links and components generated by scripts), the name and role can be programmatically determined; states, properties, and values that can be set by the user can be programmatically set; and notification of changes to these items is available to user agents, including assistive technologies.
-
-
-
-
-
-
-
-
-
-
Test Case Detail
-
Expected Baseline Result
-
-
-
- Pass
-
-
-
-
-
- [The input element in the code sample provides an accessible name value via implementation of an aria-labelledby attribute.
-
-
Detect attributes that would contribute to the accessible name and accessible description computation and calculate the text alternative for the input element. The code sample data presents an aria-describedby attribute that contributes to the accessible name output. A successful test should identify a passing implementation against Baseline 10. Forms.
Complete and programmatically associated form labels and instructions
-
Test Instructions
-
-
-
-
1.3.1 Info and Relationships and 4.1.2 Name, Role, Value
-
-
Check that the combination of the accessible name and accessible description is not empty.
-
Check that the combination of the accessible name, accessible description, and other programmatic associations (e.g., table column and/or row associations) describes each input field and includes all relevant instructions and cues (textual and graphical). Refer to HTML Accessibility API Mappings 1.0 for input type="text" for details on techniques that contribute to the computation of the accessible name and accessible description.
-
-
-
-
Test Results
-
-
-
-
-
If any of the above checks fail, then SC 1.3.1, SC 4.1.2, and Baseline Requirement 10 fail.
-
-
-
-
-
Applicable WCAG/508 Requirement
-
-
-
WCAG2 1.3.1 Info and Relationships: Information, structure, and relationships conveyed through presentation can be programmatically determined or are available in text.
-
WCAG2 4.1.2 Name, Role, Value: For all user interface components (including but not limited to: form elements, links and components generated by scripts), the name and role can be programmatically determined; states, properties, and values that can be set by the user can be programmatically set; and notification of changes to these items is available to user agents, including assistive technologies.
-
-
-
-
-
-
-
-
-
-
Test Case Detail
-
Expected Baseline Result
-
-
-
- Pass
-
-
-
-
-
- [The input element in the code sample provides an accessible name value via implementation of an aria-describedby attribute.
-
-
One <input> element exists in the test data code sample.
-
-
-
2
-
Find all instructions and cues (textual and graphical) that are related to form components/controls
-
The <input> control has a visual prompt to the left of the control
-
-
-
3
-
Check that the combination of the accessible name and accessible description is not empty.
-
The output for the accessible name and accessible descriptions computations is populated via the aria-describedby attribute.
-
-
-
4
-
Determine whether any checks fail according to the 10. Forms test instructions.
-
The third check passes due to a valid text alternative computation output.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/testcases/oldTestCases/TC10-008-dna.html b/testcases/oldTestCases/TC10-008-dna.html
deleted file mode 100644
index 3e206fa8..00000000
--- a/testcases/oldTestCases/TC10-008-dna.html
+++ /dev/null
@@ -1,236 +0,0 @@
-
-
-
-
-
- Input text element - Accessibility tree visibility (visibility:hidden)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Skip to Content
- Skip to Page Table of Contents
-
-
- ICT Accessibility Testing Baseline Alignment
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Input text element - Accessibility tree visibility (visibility:hidden)
-
Test Case Summary
-
Test Case ID
-
TC10-008-DNA
-
Test Case Description
-
The purpose of this test case is to detect attributes that would contribute to the accessible name and accessible description computation and calculate the text alternative for input elements. The code sample does not present itself via the Accessibility tree/Accessibility object model (AOM), visually, or programmatically and consequently cannot be identified by the tester within the current test process. Consequently, a successful test should indicate that this test does not apply to Baseline Test 10 Forms.
-
- Note: If the intent of the developer is to make the input element available to users as a part of meaningful ICT functionality, then the CSS property visibility:hidden should not be used with interactive elements.
Find all form components. Examples include buttons, text fields, radio buttons, checkboxes, read-only fields, and multi-select lists.
-
Find all instructions and cues (textual and graphical) that are related to form components, including groupings, order of completion, special conditions or qualifiers, format instructions, etc.
-
-
-
-
-
Test Instructions
-
-
-
-
-
Check that the combination of the accessible name and accessible description is not empty. [SC 4.1.2]
-
Check that the non-empty combination of the accessible name and accessible description and other programmatic associations (e.g., table column and/or row associations) describes each form component and includes all relevant instructions and cues (textual and graphical). [SC 1.3.1] For details on the computation of the accessible name and accessible description, references include:
-
-
-
-
- If any of the above checks fail, then Baseline Test 10.1-FormName fails.
-
-
-
-
Applicable WCAG/508 Requirement
-
-
-
WCAG2 1.3.1 Info and Relationships: Information, structure, and relationships conveyed through presentation can be programmatically determined or are available in text.
-
WCAG2 4.1.2 Name, Role, Value: For all user interface components (including but not limited to: form elements, links and components generated by scripts), the name and role can be programmatically determined; states, properties, and values that can be set by the user can be programmatically set; and notification of changes to these items is available to user agents, including assistive technologies.
-
-
-
-
-
-
-
-
-
-
Test Case Detail
-
Expected Baseline Result
-
-
-
- DNA
-
-
-
-
-
- [The input element in the code sample does not provide any attributes that would contribute to an accessible name or description.
-
-
Find all form components. Examples include buttons, text fields, radio buttons, checkboxes, read-only fields, and multi-select lists.
-
The single input element in this test case is enclosed in the visibility:hidden CSS property which removes it from the accessibility tree, visible, and programmatic detection. Even though the code exists in the DOM, this property renders the element undetectable and therefore not applicable to this Baseline Test based on the results of test step 1.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/testcases/oldTestCases/TC10-009-dna.html b/testcases/oldTestCases/TC10-009-dna.html
deleted file mode 100644
index 858133a7..00000000
--- a/testcases/oldTestCases/TC10-009-dna.html
+++ /dev/null
@@ -1,236 +0,0 @@
-
-
-
-
-
- Input text element - Accessibility tree visibility (display:none)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Skip to Content
- Skip to Page Table of Contents
-
-
- ICT Accessibility Testing Baseline Alignment
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Input text element - Accessibility tree visibility (display:none)
-
Test Case Summary
-
Test Case ID
-
TC10-009-DNA
-
Test Case Description
-
The purpose of this test case is to detect attributes that would contribute to the accessible name and accessible description computation and calculate the text alternative for input elements. The code sample does not present itself via the Accessibility tree/Accessibility object model (AOM), visually, or programmatically and consequently cannot be identified by the tester within the current test process. Consequently, a successful test should indicate that this test does not apply to Baseline Test 10 Forms.
-
- Note: If the intent of the developer is to make the input element available to users as a part of meaningful ICT functionality, then the CSS property display:none should not be used with interactive elements.
Find all form components. Examples include buttons, text fields, radio buttons, checkboxes, read-only fields, and multi-select lists.
-
Find all instructions and cues (textual and graphical) that are related to form components, including groupings, order of completion, special conditions or qualifiers, format instructions, etc.
-
-
-
-
-
Test Instructions
-
-
-
-
-
Check that the combination of the accessible name and accessible description is not empty. [SC 4.1.2]
-
Check that the non-empty combination of the accessible name and accessible description and other programmatic associations (e.g., table column and/or row associations) describes each form component and includes all relevant instructions and cues (textual and graphical). [SC 1.3.1] For details on the computation of the accessible name and accessible description, references include:
-
-
-
-
- If any of the above checks fail, then Baseline Test 10.1-FormName fails.
-
-
-
-
Applicable WCAG/508 Requirement
-
-
-
WCAG2 1.3.1 Info and Relationships: Information, structure, and relationships conveyed through presentation can be programmatically determined or are available in text.
-
WCAG2 4.1.2 Name, Role, Value: For all user interface components (including but not limited to: form elements, links and components generated by scripts), the name and role can be programmatically determined; states, properties, and values that can be set by the user can be programmatically set; and notification of changes to these items is available to user agents, including assistive technologies.
-
-
-
-
-
-
-
-
-
-
Test Case Detail
-
Expected Baseline Result
-
-
-
- DNA
-
-
-
-
-
- [The input element in the code sample does not provide any attributes that would contribute to an accessible name or description.
-
-
Find all form components. Examples include buttons, text fields, radio buttons, checkboxes, read-only fields, and multi-select lists.
-
The single input element in this test case is enclosed in the display:none CSS property which removes it from the accessibility tree, visible, and programmatic detection. Even though the code exists in the DOM, this property renders the element undetectable and therefore not applicable to this Baseline Test based on the results of test step 1.
The aria-live politeness setting is used to set the priority with which screen readers should announce updates to designated live regions. The options are off, polite and assertive. With the exceptions of the ARIA roles of alert, log, and status (with default option settings of assertive, polite, and polite respectively), the default aria-live option is off. For any live region meant to convey meaningful information to assistive technology, the off setting, being the same as the omission of the live region altogether, would represent a failure of accessibility. The code sample presents aria-live='off'. A successful test should identify a failure against Baseline Test 5.1-ChangeContent.
-
- After content change, the text updated in the code sample is neither programmatically bound, given focus, nor included in a live region.
-
-
-
-
Test Data (code/link)
-
-
Single-Page URL
-
-
-
-
-
-
-
-
-
Embedded Code
-
-
-
-
-
Code
-
-
-
-
-
-
-
-
-
-
-
Baseline Test Identify Content
-
-
Evaluate Baseline Test's Identify Content to determine applicability to the test case.
-
-
-
Identify Content
-
Test Case Applicability
-
-
-
-
-
Identify changes in presented content (both user driven and automatic). Examples include changes to images, navigation trees, data table sort controls, automatic information updates, form elements, revealed content, etc.
-
-
It may be necessary to use the mouse to determine whether state changes occur on hover or on click.
-
Depending on the component, a change of state may be triggered by various actions, such as changing values or states of other components, toggling a function, entering data in the component, mouseover, etc.
-
-
-
APPLICABLE: The content (text) changes on selection of a button element - either by mouse or keyboard selection. The value of HTML text changes in response to a clicking the "Update" button element.
-
-
-
-
-
-
Baseline Test Instructions
-
-
-
-
Test case's results for the Baseline Test instructions. Asterisk (*) indicates the test instruction for which this test case was developed.
-
-
-
Test Instruction
-
Instruction Detail
-
Test Case Result
-
-
-
-
-
-
*5.1-1
-
Check that the page provides a notification of the change in content programmatically. [SC 4.1.2]
-
-
Programmatic event notifications include alert dialogs, focus shifts to the content that changed, and ARIA live regions.
-
-
This test case fails the check in Test Instruction 5.1-1.
The test case does not provide a programmatic notification of change in content through alerts, shift in focus, or use of ARIA live regions. The aria-live region attribute is set to "off" and does not provide a programmatic notification.
-
-
-
5.1-2
-
For each change in content, check that the combination of name, role, state, and value of the changed content is accurate. [SC 4.1.2]
-
-
Detect existence of attributes that would contribute to the accessible name and accessible description computation and calculate the text alternative for the image.
-
The code sample data input does not include any attributes that would contribute to accessible name or accessible description output. A successful test should identify a failure against Baseline 6. Images.
Identify any image that conveys information (include images of text; functional images used to initiate action, convey meaning, or prompting a response; image maps, etc.).
-
-
-
Test Instructions
-
-
Check that the combination of the accessible name and accessible description is not empty. [SC 1.1.1]
-
Check that the non-empty combination of accessible name and accessible description provides an equivalent description. Numerous attributes contribute to the computation of the accessible name and accessible description. Refer to HTML Accessibility API Mappings 1.0 for img. [SC 1.1.1]
-
-
Descriptions of the image that are provided by page content must be programmatically associated.
-
When an image is updated to convey a new meaning, check that its text alternative is updated at the same time. [SCs 1.1.1 and 4.1.2]
-
-
-
Check that the ARIA role is NOT “presentation”.
-
Check that the ARIA role is NOT “none”.
-
Check that aria-hidden is NOT set to “true”.
-
-
-
Test Results
-
-
If any of the above checks fail, then Baseline Test 6.1-MeaningfulImage fails.
-
-
Applicable WCAG/508 Requirement
-
-
WCAG2 SC: 1.1.1. Non-Text – All non-text content that is presented to the user has a text alternative that serves the equivalent purpose, except for [specific] situations listed.
-
WCAG2 SC: 4.1.2 Name, Role, Value – For all user interface components (including but not limited to: form elements, links and components generated by scripts), the name and role can be programmatically determined; states, properties, and values that can be set by the user can be programmatically set; and notification of changes to these items is available to user agents, including assistive technologies.
-
-
-
-
-
-
Test Case Detail
-
Expected Baseline Result
-
FAIL
-
The image in the code sample does not provide any attributes that would contribute to an accessible name or description text alternative output.
-
Test Data (code/link)
-
Code
-
-
- <body>
- <img src="../assets/images/corplogo.png" width="50" height="50" class="">
- <p>This is a meaningful image of our company logo</p>
- </body>
-
-
Detect existence of attributes that would contribute to the accessible name and accessible description computation and calculate the text alternative for the image. Then determine whether the text alternative output for the image provides an equivalent description of the image.
-
The code sample provides an equivalent description of the image in an ALT attribute. A successful test should identify a PASS against Baseline 6. Images.
Identify any image that conveys information (include images of text; functional images used to initiate action, convey meaning, or prompting a response; image maps, etc.).
-
-
-
Test Instructions
-
-
Check that the combination of the accessible name and accessible description is not empty. [SC 1.1.1]
-
Check that the non-empty combination of accessible name and accessible description provides an equivalent description. Numerous attributes contribute to the computation of the accessible name and accessible description. Refer to HTML Accessibility API Mappings 1.0 for img. [SC 1.1.1]
-
-
Descriptions of the image that are provided by page content must be programmatically associated.
-
When an image is updated to convey a new meaning, check that its text alternative is updated at the same time. [SCs 1.1.1 and 4.1.2]
-
-
-
Check that the ARIA role is NOT “presentation”.
-
Check that the ARIA role is NOT “none”.
-
Check that aria-hidden is NOT set to “true”.
-
-
-
Test Results
-
-
If any of the above checks fail, then Baseline Test 6.1-MeaningfulImage fails.
-
-
Applicable WCAG/508 Requirement
-
-
WCAG2 SC: 1.1.1. Non-Text – All non-text content that is presented to the user has a text alternative that serves the equivalent purpose, except for [specific] situations listed.
-
WCAG2 SC: 4.1.2 Name, Role, Value – For all user interface components (including but not limited to: form elements, links and components generated by scripts), the name and role can be programmatically determined; states, properties, and values that can be set by the user can be programmatically set; and notification of changes to these items is available to user agents, including assistive technologies.
-
-
-
-
-
-
Test Case Detail
-
Expected Baseline Result
-
PASS
-
The image in the code sample provides an ALT attribute with a value that provides an equivalent text alternative description of the image.
-
Test Data (code/link)
-
Code
-
-
- <body>
- <img src="../assets/images/corplogo.png" width="50" height="50"
- class="" alt="Bland Corp. logo">
- <p>This is a meaningful image of our company logo</p>
- </body>
-
-
The output for the accessible name and accessible description computations is "Bland Corp. logo". In this case, the text alternative is provided via an alt attribute.
-
-
-
4.
-
Determine whether the text alternative provides an equivalent description of the image.
-
Based on the page context, the text alternative provides an equivalent description of the image.
-
-
-
5.
-
Check that the <img> DOES NOT include role="presentation".
-
There is no role attribute defined for the <img> element.
-
-
-
6.
-
Check that the <img> DOES NOT include role="none".
-
There is no role attribute defined for the <img> element.
-
-
-
7.
-
Check that the <img> DOES NOT have aria-hidden set to "true".
-
There is no aria-hidden attribute defined for the <img> element.
Detect existence of attributes that would contribute to the accessible name and accessible description computation and calculate the text alternative output for the image. Then determine whether the text alternative output for the image provides an equivalent description of the image.
-
The code sample provides an equivalent description of the image in a title attribute. A successful test should identify a PASS against Baseline 6. Images.
Identify any image that conveys information (include images of text; functional images used to initiate action, convey meaning, or prompting a response; image maps, etc.).
-
-
-
Test Instructions
-
-
Check that the combination of the accessible name and accessible description is not empty. [SC 1.1.1]
-
Check that the non-empty combination of accessible name and accessible description provides an equivalent description. Numerous attributes contribute to the computation of the accessible name and accessible description. Refer to HTML Accessibility API Mappings 1.0 for img. [SC 1.1.1]
-
-
Descriptions of the image that are provided by page content must be programmatically associated.
-
When an image is updated to convey a new meaning, check that its text alternative is updated at the same time. [SCs 1.1.1 and 4.1.2]
-
-
-
Check that the ARIA role is NOT “presentation”.
-
Check that the ARIA role is NOT “none”.
-
Check that aria-hidden is NOT set to “true”.
-
-
-
Test Results
-
-
If any of the above checks fail, then Baseline Test 6.1-MeaningfulImage fails.
-
-
Applicable WCAG/508 Requirement
-
-
WCAG2 SC: 1.1.1. Non-Text – All non-text content that is presented to the user has a text alternative that serves the equivalent purpose, except for [specific] situations listed.
-
WCAG2 SC: 4.1.2 Name, Role, Value – For all user interface components (including but not limited to: form elements, links and components generated by scripts), the name and role can be programmatically determined; states, properties, and values that can be set by the user can be programmatically set; and notification of changes to these items is available to user agents, including assistive technologies.
-
-
-
-
-
-
Test Case Detail
-
Expected Baseline Result
-
PASS
-
The image in the code sample does not provide any attributes that would contribute to an accessible name or description text alternative output.
-
Test Data (code/link)
-
Code
-
-
- <body>
- <img src="../assets/images/corplogo.png" width="50" height="50"
- class="" title="Bland Corp. logo">
- <p>This is a meaningful image of our company logo</p>
- </body>
-
-
The output for the accessible name and accessible description computations is "Bland Corp. logo". In this case, the text alternative is provided via a title attribute.
-
-
-
4.
-
Determine whether the text alternative provides an equivalent description of the the image.
-
Based on the page context, the text alternative provides an equivalent description of the image.
-
-
-
5.
-
Check that the <img> DOES NOT include role="presentation".
-
There is no role attribute defined for the <img> element.
-
-
-
6.
-
Check that the <img> DOES NOT include role="none".
-
There is no role attribute defined for the <img> element.
-
-
-
7.
-
Check that the <img> DOES NOT have aria-hidden set to "true".
-
There is no aria-hidden attribute defined for the <img> element.
Detect existence of attributes that would contribute to the accessible name and accessible description computation and calculate the text alternative output for the image. Then determine whether the text alternative output for the image provides an equivalent description of the image.
-
The code sample provides an equivalent description of the image in an aria-label attribute. A successful test should identify a PASS against Baseline 6. Images.
Identify any image that conveys information (include images of text; functional images used to initiate action, convey meaning, or prompting a response; image maps, etc.).
-
-
-
Test Instructions
-
-
Check that the combination of the accessible name and accessible description is not empty. [SC 1.1.1]
-
Check that the non-empty combination of accessible name and accessible description provides an equivalent description. Numerous attributes contribute to the computation of the accessible name and accessible description. Refer to HTML Accessibility API Mappings 1.0 for img. [SC 1.1.1]
-
-
Descriptions of the image that are provided by page content must be programmatically associated.
-
When an image is updated to convey a new meaning, check that its text alternative is updated at the same time. [SCs 1.1.1 and 4.1.2]
-
-
-
Check that the ARIA role is NOT “presentation”.
-
Check that the ARIA role is NOT “none”.
-
Check that aria-hidden is NOT set to “true”.
-
-
-
Test Results
-
-
If any of the above checks fail, then Baseline Test 6.1-MeaningfulImage fails.
-
-
Applicable WCAG/508 Requirement
-
-
WCAG2 SC: 1.1.1. Non-Text – All non-text content that is presented to the user has a text alternative that serves the equivalent purpose, except for [specific] situations listed.
-
WCAG2 SC: 4.1.2 Name, Role, Value – For all user interface components (including but not limited to: form elements, links and components generated by scripts), the name and role can be programmatically determined; states, properties, and values that can be set by the user can be programmatically set; and notification of changes to these items is available to user agents, including assistive technologies.
-
-
-
-
-
-
Test Case Detail
-
Expected Baseline Result
-
PASS
-
The image in the code sample provides an aria-label attribute with a value that provides an equivalent text alternative description of the image.
-
Test Data (code/link)
-
Code
-
-
- <body>
- <img src="../assets/images/corplogo.png" width="50" height="50"
- class="" aria-label="Bland Corp. logo">
- <p>This is a meaningful image of our company logo</p>
- </body>
-
-
The output for the accessible name and accessible description computations is "Bland Corp. logo". In this case, the text alternative is provided via an aria-label attribute.
-
-
-
4.
-
Determine whether the text alternative provides an equivalent description of the the image.
-
Based on the page context, the text alternative provides an equivalent description of the image.
-
-
- <
5.
-
Check that the <img> DOES NOT include role="presentation".
-
There is no role attribute defined for the <img> element.
-
-
-
6.
-
Check that the <img> DOES NOT include role="none".
-
There is no role attribute defined for the <img> element.
-
-
-
7.
-
Check that the <img> DOES NOT have aria-hidden set to "true".
-
There is no aria-hidden attribute defined for the <img> element.
Image - text equivalent via aria-labelledby attribute
-
Test Case Summary
-
Test Case ID
-
TC06-005-pass
-
Test Case Description
-
Detect existence of attributes that would contribute to the accessible name and accessible description computation and calculate the text alternative output for the image. Then determine whether the text alternative output for the image provides an equivalent description of the image.
-
The code sample provides an equivalent description of the image via an aria-labelledby attribute. A successful test should identify a PASS against Baseline 6. Images.
Identify any image that conveys information (include images of text; functional images used to initiate action, convey meaning, or prompting a response; image maps, etc.).
-
-
-
Test Instructions
-
-
Check that the combination of the accessible name and accessible description is not empty. [SC 1.1.1]
-
Check that the non-empty combination of accessible name and accessible description provides an equivalent description. Numerous attributes contribute to the computation of the accessible name and accessible description. Refer to HTML Accessibility API Mappings 1.0 for img. [SC 1.1.1]
-
-
Descriptions of the image that are provided by page content must be programmatically associated.
-
When an image is updated to convey a new meaning, check that its text alternative is updated at the same time. [SCs 1.1.1 and 4.1.2]
-
-
-
Check that the ARIA role is NOT “presentation”.
-
Check that the ARIA role is NOT “none”.
-
Check that aria-hidden is NOT set to “true”.
-
-
-
Test Results
-
-
If any of the above checks fail, then Baseline Test 6.1-MeaningfulImage fails.
-
-
Applicable WCAG/508 Requirement
-
-
WCAG2 SC: 1.1.1. Non-Text – All non-text content that is presented to the user has a text alternative that serves the equivalent purpose, except for [specific] situations listed.
-
WCAG2 SC: 4.1.2 Name, Role, Value – For all user interface components (including but not limited to: form elements, links and components generated by scripts), the name and role can be programmatically determined; states, properties, and values that can be set by the user can be programmatically set; and notification of changes to these items is available to user agents, including assistive technologies.
-
-
-
-
-
-
Test Case Detail
-
Expected Baseline Result
-
PASS
-
The image in the code sample provides an aria-label attribute with a value that provides an equivalent text alternative description of the image.
-
Test Data (code/link)
-
Code
-
-
- <body>
- <img src="../assets/images/corplogo.png" width="50" height="50"
- aria-labelledby="imgLbl">
- <p>This is a meaningful image of our company logo</p>
- <p style="display:none" id="imgLbl">Bland Corp. logo</p>
- </body>
-
-
The output for the accessible name and accessible description computations is "Bland Corp. logo". In this case, the text alternative is provided via an aria-labelledyby attribute, mapped to a hidden parapgraph of text (using style="display:none").
-
-
-
4.
-
Determine whether the text alternative provides an equivalent description of the the image.
-
Based on the page context, the text alternative provides an equivalent description of the image.
-
-
5.
-
Check that the <img> DOES NOT include role="presentation".
-
There is no role attribute defined for the <img> element.
-
-
-
6.
-
Check that the <img> DOES NOT include role="none".
-
There is no role attribute defined for the <img> element.
-
-
-
7.
-
Check that the <img> DOES NOT have aria-hidden set to "true".
-
There is no aria-hidden attribute defined for the <img> element.
All checks pass; therefore, the result for Baseline 6. Images is a PASS.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/testcases/oldTestCases/oldTC06-006-pass.html b/testcases/oldTestCases/oldTC06-006-pass.html
deleted file mode 100644
index d18a5ca7..00000000
--- a/testcases/oldTestCases/oldTC06-006-pass.html
+++ /dev/null
@@ -1,210 +0,0 @@
-
-
-
-
-
- Image - text equivalent via aria-describedby attribute
-
-
-
-
-
-
-
-
-
-
-
-
-
- Skip to Content
- Skip to Page Table of Contents
-
-
- ICT Accessibility Testing Baseline Alignment
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Image - text equivalent via aria-describedby attribute
-
Test Case Summary
-
Test Case ID
-
TC06-006-pass
-
Test Case Description
-
Detect existence of attributes that would contribute to the accessible name and accessible description computation and calculate the text alternative output for the image. Then determine whether the text alternative output for the image provides an equivalent description of the image.
-
The code sample provides an equivalent description of the image via an aria-describedby attribute. A successful test should identify a PASS against Baseline 6. Images.
Identify any image that conveys information (include images of text; functional images used to initiate action, convey meaning, or prompting a response; image maps, etc.).
-
-
-
Test Instructions
-
-
Check that the combination of the accessible name and accessible description is not empty. [SC 1.1.1]
-
Check that the non-empty combination of accessible name and accessible description provides an equivalent description. Numerous attributes contribute to the computation of the accessible name and accessible description. Refer to HTML Accessibility API Mappings 1.0 for img. [SC 1.1.1]
-
-
Descriptions of the image that are provided by page content must be programmatically associated.
-
When an image is updated to convey a new meaning, check that its text alternative is updated at the same time. [SCs 1.1.1 and 4.1.2]
-
-
-
Check that the ARIA role is NOT “presentation”.
-
Check that the ARIA role is NOT “none”.
-
Check that aria-hidden is NOT set to “true”.
-
-
-
Test Results
-
-
If any of the above checks fail, then Baseline Test 6.1-MeaningfulImage fails.
-
-
Applicable WCAG/508 Requirement
-
-
WCAG2 SC: 1.1.1. Non-Text – All non-text content that is presented to the user has a text alternative that serves the equivalent purpose, except for [specific] situations listed.
-
WCAG2 SC: 4.1.2 Name, Role, Value – For all user interface components (including but not limited to: form elements, links and components generated by scripts), the name and role can be programmatically determined; states, properties, and values that can be set by the user can be programmatically set; and notification of changes to these items is available to user agents, including assistive technologies.
-
-
-
-
-
-
Test Case Detail
-
Expected Baseline Result
-
PASS
-
The image in the code sample provides an aria-label attribute with a value that provides an equivalent text alternative description of the image.
-
Test Data (code/link)
-
Code
-
-
- <body>
- <img src="../assets/images/corplogo.png" width="50" height="50"
- aria-describedby="imgLbl">
- <p>This is a meaningful image of our company logo</p>
- <p style="display:none" id="imgLbl">Bland Corp. logo</p>
- </body>
-
-
The output for the accessible name and accessible description computations is "Bland Corp. logo". In this case, the text alternative is provided via an aria-describedby attribute, mapped to a hidden parapgraph of text (using style="display:none"). Even though aria-describedby contributes to the accessible description component of the text alternative, and generally should be used to supplement an accessible name, it nevertheless provides adequate description.
-
-
-
4.
-
Determine whether the text alternative provides an equivalent description of the the image.
-
Based on the page context, the text alternative provides an equivalent description of the image.
-
-
5.
-
Check that the <img> DOES NOT include role="presentation".
-
There is no role attribute defined for the <img> element.
-
-
-
6.
-
Check that the <img> DOES NOT include role="none".
-
There is no role attribute defined for the <img> element.
-
-
-
7.
-
Check that the <img> DOES NOT have aria-hidden set to "true".
-
There is no aria-hidden attribute defined for the <img> element.
Detect existence of attributes that would contribute to the accessible name and accessible description computation and calculate the text alternative for the image. Then determine whether the text alternative output for the image provides an equivalent description of the image.
-
The code sample provides an equivalent description of the image in an ALT attribute. However, because it includes role="presentation", Assistive Technologies should ignore the presence of the image. A successful test should identify a FAIL against Baseline 6. Images because the meaningful image DOES NOT provide an equivalent text description.
Identify any image that conveys information (include images of text; functional images used to initiate action, convey meaning, or prompting a response; image maps, etc.).
-
-
-
Test Instructions
-
-
Check that the combination of the accessible name and accessible description is not empty. [SC 1.1.1]
-
Check that the non-empty combination of accessible name and accessible description provides an equivalent description. Numerous attributes contribute to the computation of the accessible name and accessible description. Refer to HTML Accessibility API Mappings 1.0 for img. [SC 1.1.1]
-
-
Descriptions of the image that are provided by page content must be programmatically associated.
-
When an image is updated to convey a new meaning, check that its text alternative is updated at the same time. [SCs 1.1.1 and 4.1.2]
-
-
-
Check that the ARIA role is NOT “presentation”.
-
Check that the ARIA role is NOT “none”.
-
Check that aria-hidden is NOT set to “true”.
-
-
-
Test Results
-
-
If any of the above checks fail, then Baseline Test 6.1-MeaningfulImage fails.
-
-
Applicable WCAG/508 Requirement
-
-
WCAG2 SC: 1.1.1. Non-Text – All non-text content that is presented to the user has a text alternative that serves the equivalent purpose, except for [specific] situations listed.
-
WCAG2 SC: 4.1.2 Name, Role, Value – For all user interface components (including but not limited to: form elements, links and components generated by scripts), the name and role can be programmatically determined; states, properties, and values that can be set by the user can be programmatically set; and notification of changes to these items is available to user agents, including assistive technologies.
-
-
-
-
-
-
Test Case Detail
-
Expected Baseline Result
-
FAIL
-
The image in the code sample provides an ALT attribute with a value that provides an equivalent text alternative description of the image. However, the image also includes role="presentation", which would prompt Assistive Technologies to ignore the image and its text alternative description.
-
Test Data (code/link)
-
Code
-
-
- <body>
- <img src="../assets/images/corplogo.png" width="50" height="50"
- class="" alt="Bland Corp. logo" role="presentation">
- <p>This is a meaningful image of our company logo</p>
- </body>
-
-
Without role="presentation", the output for the accessible name and accessible description computations would be "Bland Corp. logo". In this case, the text alternative is provided via an alt attribute.
-
-
-
4.
-
Determine whether the text alternative provides an equivalent description of the the image.
-
Based on the page context, the text alternative provides an equivalent description of the image.
-
-
-
5.
-
Check that the <img> DOES NOT include role="presentation".
Because the image includes role="presentation", it is not necessary to complete the remaining checks in the test instructions. The result for Baseline 6. Images is a FAIL.
Detect existence of attributes that would contribute to the accessible name and accessible description computation and calculate the text alternative for the image. Then determine whether the text alternative output for the image provides an equivalent description of the image.
-
The code sample provides an equivalent description of the image in an ALT attribute. However, because it includes role="none", Assistive Technologies should ignore the presence of the image. A successful test should identify a FAIL against Baseline 6. Images because the meaningful image DOES NOT provide an equivalent text description.
Identify any image that conveys information (include images of text; functional images used to initiate action, convey meaning, or prompting a response; image maps, etc.).
-
-
-
Test Instructions
-
-
Check that the combination of the accessible name and accessible description is not empty. [SC 1.1.1]
-
Check that the non-empty combination of accessible name and accessible description provides an equivalent description. Numerous attributes contribute to the computation of the accessible name and accessible description. Refer to HTML Accessibility API Mappings 1.0 for img. [SC 1.1.1]
-
-
Descriptions of the image that are provided by page content must be programmatically associated.
-
When an image is updated to convey a new meaning, check that its text alternative is updated at the same time. [SCs 1.1.1 and 4.1.2]
-
-
-
Check that the ARIA role is NOT “presentation”.
-
Check that the ARIA role is NOT “none”.
-
Check that aria-hidden is NOT set to “true”.
-
-
-
Test Results
-
-
If any of the above checks fail, then Baseline Test 6.1-MeaningfulImage fails.
-
-
Applicable WCAG/508 Requirement
-
-
WCAG2 SC: 1.1.1. Non-Text – All non-text content that is presented to the user has a text alternative that serves the equivalent purpose, except for [specific] situations listed.
-
WCAG2 SC: 4.1.2 Name, Role, Value – For all user interface components (including but not limited to: form elements, links and components generated by scripts), the name and role can be programmatically determined; states, properties, and values that can be set by the user can be programmatically set; and notification of changes to these items is available to user agents, including assistive technologies.
-
-
-
-
-
-
Test Case Detail
-
Expected Baseline Result
-
FAIL
-
The image in the code sample provides an ALT attribute with a value that provides an equivalent text alternative description of the image. However, the image also includes role="none", which would prompt Assistive Technologies to ignore the image and its text alternative description.
-
Test Data (code/link)
-
Code
-
-
- <body>
- <img src="../assets/images/corplogo.png" width="50" height="50"
- class="" alt="Bland Corp. logo" role="none">
- <p>This is a meaningful image of our company logo</p>
- </body>
-
-
Without role="none", the output for the accessible name and accessible description computations would be "Bland Corp. logo". In this case, the text alternative is provided via an alt attribute.
-
-
-
4.
-
Determine whether the text alternative provides an equivalent description of the the image.
-
Based on the page context, the text alternative provides an equivalent description of the image.
-
-
-
5.
-
Check that the <img> DOES NOT include role="presentation".
-
The <img> does not include role="presentation".
-
-
-
6.
-
Check that the <img> DOES NOT include role="none".
Because the image includes role="none", it is not necessary to complete the remaining checks in the test instructions. The result for Baseline 6. Images is a FAIL.
Detect existence of attributes that would contribute to the accessible name and accessible description computation and calculate the text alternative for the image. Then determine whether the text alternative output for the image provides an equivalent description of the image.
-
The code sample provides an equivalent description of the image in an ALT attribute. However, because it includes aria-hidden="true", Assistive Technologies should ignore the presence of the image. A successful test should identify a FAIL against Baseline 6. Images because the meaningful image DOES NOT provide an equivalent text description.
Identify any image that conveys information (include images of text; functional images used to initiate action, convey meaning, or prompting a response; image maps, etc.).
-
-
-
Test Instructions
-
-
Check that the combination of the accessible name and accessible description is not empty. [SC 1.1.1]
-
Check that the non-empty combination of accessible name and accessible description provides an equivalent description. Numerous attributes contribute to the computation of the accessible name and accessible description. Refer to HTML Accessibility API Mappings 1.0 for img. [SC 1.1.1]
-
-
Descriptions of the image that are provided by page content must be programmatically associated.
-
When an image is updated to convey a new meaning, check that its text alternative is updated at the same time. [SCs 1.1.1 and 4.1.2]
-
-
-
Check that the ARIA role is NOT “presentation”.
-
Check that the ARIA role is NOT “none”.
-
Check that aria-hidden is NOT set to “true”.
-
-
-
Test Results
-
-
If any of the above checks fail, then Baseline Test 6.1-MeaningfulImage fails.
-
-
Applicable WCAG/508 Requirement
-
-
WCAG2 SC: 1.1.1. Non-Text – All non-text content that is presented to the user has a text alternative that serves the equivalent purpose, except for [specific] situations listed.
-
WCAG2 SC: 4.1.2 Name, Role, Value – For all user interface components (including but not limited to: form elements, links and components generated by scripts), the name and role can be programmatically determined; states, properties, and values that can be set by the user can be programmatically set; and notification of changes to these items is available to user agents, including assistive technologies.
-
-
-
-
-
-
Test Case Detail
-
Expected Baseline Result
-
FAIL
-
The image in the code sample provides an ALT attribute with a value that provides an equivalent text alternative description of the image. However, the image also includes aria-hidden="true", which would prompt Assistive Technologies to ignore the image and its text alternative description.
-
Test Data (code/link)
-
Code
-
-
- <body>
- <img src="../assets/images/corplogo.png" width="50" height="50"
- class="" alt="Bland Corp. logo" aria-hidden="true">
- <p>This is a meaningful image of our company logo</p>
- </body>
-
-
Without aria-hidden="true", the output for the accessible name and accessible description computations would be "Bland Corp. logo". In this case, the text alternative is provided via an alt attribute.
-
-
-
4.
-
Determine whether the text alternative provides an equivalent description of the the image.
-
Based on the page context, the text alternative provides an equivalent description of the image.
-
-
-
5.
-
Check that the <img> DOES NOT include role="presentation".
-
There is no role attribute defined for the <img> element.
-
-
-
6.
-
Check that the <img> DOES NOT include role="none".
-
There is no role attribute defined for the <img> element.
-
-
-
7.
-
Check that the <img> DOES NOT have aria-hidden set to "true".
-
There <img>> includes aria-hidden="true". Therefore, this check fails.
Detect existence of attributes that would contribute to the accessible name and accessible description computation and calculate the text alternative for the image. Then determine whether the text alternative output for the image provides an equivalent description of the image.
-
The code sample provides a text alternative in an ALT attribute. However, the text alternative DOES NOT provide an equivalent description.
Identify any image that conveys information (include images of text; functional images used to initiate action, convey meaning, or prompting a response; image maps, etc.).
-
-
-
Test Instructions
-
-
Check that the combination of the accessible name and accessible description is not empty. [SC 1.1.1]
-
Check that the non-empty combination of accessible name and accessible description provides an equivalent description. Numerous attributes contribute to the computation of the accessible name and accessible description. Refer to HTML Accessibility API Mappings 1.0 for img. [SC 1.1.1]
-
-
Descriptions of the image that are provided by page content must be programmatically associated.
-
When an image is updated to convey a new meaning, check that its text alternative is updated at the same time. [SCs 1.1.1 and 4.1.2]
-
-
-
Check that the ARIA role is NOT “presentation”.
-
Check that the ARIA role is NOT “none”.
-
Check that aria-hidden is NOT set to “true”.
-
-
-
Test Results
-
-
If any of the above checks fail, then Baseline Test 6.1-MeaningfulImage fails.
-
-
Applicable WCAG/508 Requirement
-
-
WCAG2 SC: 1.1.1. Non-Text – All non-text content that is presented to the user has a text alternative that serves the equivalent purpose, except for [specific] situations listed.
-
WCAG2 SC: 4.1.2 Name, Role, Value – For all user interface components (including but not limited to: form elements, links and components generated by scripts), the name and role can be programmatically determined; states, properties, and values that can be set by the user can be programmatically set; and notification of changes to these items is available to user agents, including assistive technologies.
-
-
-
-
-
-
Test Case Detail
-
Expected Baseline Result
-
FAIL
-
The image in the code sample provides an ALT attribute with a value that DOES NOT provide an equivalent text alternative description of the image.
-
Test Data (code/link)
-
Code
-
-
- <body>
- <img src="../assets/images/corplogo.png" width="50" height="50"
- class="" alt="pngfilelogo">
- <p>This is a meaningful image of our company logo</p>
- </body>
-
-
Because the text alternative does not provide an equivalent description of the image, it is not necessary to complete the remaining checks in the test instructions. The image fails step two of the test instructions, and the result for Baseline 6. Images is a FAIL.
Input text element: no accessible name or description
-
Test Case Summary
-
Test Case ID
-
TC10-001-fail
-
Test Case Description
-
Detect attributes that would contribute to the accessible name and accessible description computation and calculate the text alternative for the input element. The code sample data does not include attributes that contribute to accessible name or accessible description output. A successful test should identify a failure against Baseline Test 10.1 FormName.
Find all form components. Examples include buttons, text fields, radio buttons, checkboxes, read-only fields, and multi-select lists.
-
Find all instructions and cues (textual and graphical) that are related to form components, including groupings, order of completion, special conditions or qualifiers, format instructions, etc.
-
-
-
-
-
Test Instructions
-
-
-
-
-
Check that the combination of the accessible name and accessible description is not empty. [SC 4.1.2]
-
Check that the non-empty combination of the accessible name and accessible description and other programmatic associations (e.g., table column and/or row associations) describes each form component and includes all relevant instructions and cues (textual and graphical). [SC 1.3.1] For details on the computation of the accessible name and accessible description, references include:
-
-
-
-
- If any of the above checks fail, then Baseline Test 10.1-FormName fails.
-
-
-
-
Applicable WCAG/508 Requirement
-
-
-
WCAG2 1.3.1 Info and Relationships: Information, structure, and relationships conveyed through presentation can be programmatically determined or are available in text.
-
WCAG2 4.1.2 Name, Role, Value: For all user interface components (including but not limited to: form elements, links and components generated by scripts), the name and role can be programmatically determined; states, properties, and values that can be set by the user can be programmatically set; and notification of changes to these items is available to user agents, including assistive technologies.
-
-
-
-
-
-
-
-
-
-
Test Case Detail
-
Expected Baseline Result
-
-
-
- FAIL
-
-
-
-
-
- [The input element in the code sample does not provide any attributes that would contribute to an accessible name or description.
-
-
Find all form components. Examples include buttons, text fields, radio buttons, checkboxes, read-only fields, and multi-select lists.
-
One input element exists in the test data code sample.
-
-
-
2
-
Find all instructions and cues (textual and graphical) that are related to form components, including groupings, order of completion, special conditions or qualifiers, format instructions, etc.
-
The input control has a visual label in the form of the text directly to the left of the control.
-
-
-
3
-
Check that the combination of the accessible name and accessible description is not empty. [SC 4.1.2].
-
The output for the accessible name and accessible descriptions computations is empty.
-
-
-
4
-
If any of the above checks fail, then Baseline Test 10.1-FormName fails.
-
Test step 3 fails due to an empty accessible name and/or description in the text alternative computation output and therefore Baseline Test 10.1-FormName fails.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/testfiles/08.1-3-fail-1.html b/testfiles/08.1-3-fail-1.html
deleted file mode 100644
index 2e24c84e..00000000
--- a/testfiles/08.1-3-fail-1.html
+++ /dev/null
@@ -1,54 +0,0 @@
-
-
-
-
-
-
-
- Color Contrast Tests
-
-
-
-
-
+
+
+
\ No newline at end of file
diff --git a/testfiles/TF01/1.1-1-fail-1.html b/testfiles/TF01/1.1-1-fail-1.html
new file mode 100644
index 00000000..f252df40
--- /dev/null
+++ b/testfiles/TF01/1.1-1-fail-1.html
@@ -0,0 +1,18 @@
+
+
+
+Keyboard Access Failing Example 1
+
+
+
Shipping Information
+
+
+
diff --git a/_archive_reference/TT_TestPages/4B_Fail3.html b/testfiles/TF01/1.1-2-fail-1.html
similarity index 75%
rename from _archive_reference/TT_TestPages/4B_Fail3.html
rename to testfiles/TF01/1.1-2-fail-1.html
index b0d5f6fd..8e7a6f1d 100644
--- a/_archive_reference/TT_TestPages/4B_Fail3.html
+++ b/testfiles/TF01/1.1-2-fail-1.html
@@ -10,11 +10,12 @@
*Note: this page provides only limited functionality, as described in the Trusted Tester training course.
-User Name:
+
+
-Password:
+
-
+
To change the button from Request Password Reset to Request User Name, tab to the button,
press and hold the space bar for 3 seconds, and release the spacebar.
@@ -22,7 +23,11 @@
-
+
-
+
This page has no CAPTCHAs and should be DNA for 6.3 CAPTCHAs.
+
Sign up and get a free $2000 gift card!
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/testfiles/TF06/06.4-1-fail-1.html b/testfiles/TF06/06.4-1-fail-1.html
new file mode 100644
index 00000000..ccf2c60a
--- /dev/null
+++ b/testfiles/TF06/06.4-1-fail-1.html
@@ -0,0 +1,24 @@
+
+
+
+
+ 6.4 Images of Text - FAIL: image of text that could easily be just text
+
+
+
+
This code sample presents a page with an image of text that could easily be just text.
+A successful test should identify a FAIL against Baseline Test 6.4 Images of Text.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/testfiles/TF06/06.4-ic-dna-1.html b/testfiles/TF06/06.4-ic-dna-1.html
new file mode 100644
index 00000000..17bd8a12
--- /dev/null
+++ b/testfiles/TF06/06.4-ic-dna-1.html
@@ -0,0 +1,22 @@
+
+
+
+
+ 6.4 Images of Text: DNA; no images of text
+
+
+
+
This page has no images of text and should be DNA for 6.4 Images of Text.
+
Sign up and get a free $2000 gift card!
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/testfiles/TF07/07.2-ic-dna-1.html b/testfiles/TF07/07.2-ic-dna-1.html
new file mode 100644
index 00000000..06a3d4a3
--- /dev/null
+++ b/testfiles/TF07/07.2-ic-dna-1.html
@@ -0,0 +1,22 @@
+
+
+
+
+ 7.2 Sensory Characteristics: DNA; no instructions that rely on Sensory Characteristics
+
+
+
+
This page has no instructions that rely on Sensory Characteristics and should be
+DNA for 7.2 Sensory Characteristics.
+
Sign up by filling out the form below!
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/testfiles/TF08/08.1-2-fail-2.html b/testfiles/TF08/08.1-2-fail-2.html
new file mode 100644
index 00000000..c94ff9ae
--- /dev/null
+++ b/testfiles/TF08/08.1-2-fail-2.html
@@ -0,0 +1,29 @@
+
+
+
+
+ Color Contrast Tests
+
+
+
+
+
Text for Testing
+
+
+
+
\ No newline at end of file
diff --git a/testfiles/TF08/08.1-2-fail-3.html b/testfiles/TF08/08.1-2-fail-3.html
new file mode 100644
index 00000000..27fc545e
--- /dev/null
+++ b/testfiles/TF08/08.1-2-fail-3.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
I am heading!
+
+
\ No newline at end of file
diff --git a/testfiles/TF08/08.1-2-fail-4.html b/testfiles/TF08/08.1-2-fail-4.html
new file mode 100644
index 00000000..785c90d1
--- /dev/null
+++ b/testfiles/TF08/08.1-2-fail-4.html
@@ -0,0 +1,13 @@
+
+
+
+Image of text with insufficient contrast
+
+
+
+
+It's time to dust off those resumes. We're hiring again!
+
+
+
+
\ No newline at end of file
diff --git a/testfiles/TF08/08.1-3-fail-2.html b/testfiles/TF08/08.1-3-fail-2.html
new file mode 100644
index 00000000..24f082d1
--- /dev/null
+++ b/testfiles/TF08/08.1-3-fail-2.html
@@ -0,0 +1,29 @@
+
+
+
+ Insufficient Color Contrast for 18 Point Font
+
+
+
+
+
Text for Testing
+
+
+
+
\ No newline at end of file
diff --git a/testfiles/TF08/08.1-3-pass-1.html b/testfiles/TF08/08.1-3-pass-1.html
new file mode 100644
index 00000000..483692de
--- /dev/null
+++ b/testfiles/TF08/08.1-3-pass-1.html
@@ -0,0 +1,25 @@
+
+
+
+ Color Contrast Tests
+
+
+
+
+
Text for Testing
+
+
+
diff --git a/testfiles/TF08/08.1-3-pass-2.html b/testfiles/TF08/08.1-3-pass-2.html
new file mode 100644
index 00000000..fc107ccf
--- /dev/null
+++ b/testfiles/TF08/08.1-3-pass-2.html
@@ -0,0 +1,13 @@
+
+
+
+
+Sufficient contrast for 14pt, bold font
+
+
+
+ This page has a title element (Fast Food Recipes) which does not identify the contents
+ or purpose of the page, which is actually about HTML.
+
+ HTML is good. It is super nice. Everyone loves HTML.
+
+
+
+
diff --git a/testfiles/TF11/11.1-all-pass-1.html b/testfiles/TF11/11.1-all-pass-1.html
new file mode 100644
index 00000000..4251d30a
--- /dev/null
+++ b/testfiles/TF11/11.1-all-pass-1.html
@@ -0,0 +1,26 @@
+
+
+
+
+ Some thoughts on HTML
+
+
+
+
+
+ This page has a title element (Some thoughts on HTML) which identifies
+ the contents or purpose of the page, which is thoughts about HTML.
+
+
+ HTML is good. It is super nice. Everyone loves HTML.
+
+
+
+
+
diff --git a/testfiles/TF12/12.1-3-fail-1.html b/testfiles/TF12/12.1-3-fail-1.html
index a867d727..75c1bfc9 100644
--- a/testfiles/TF12/12.1-3-fail-1.html
+++ b/testfiles/TF12/12.1-3-fail-1.html
@@ -1,7 +1,7 @@
-Data Table element with an overlaping ARIA role
+Data Table element with an overlapping ARIA role
+
+
+
+ Local boards in communities will review applications from local agencies and make recommendations to the National Board on which eligible organizations should be awarded funds.
The EFSP National Board will review recommendations
from the local boards and state set-aside committees (acting as local boards), make the final award determinations, and disburse funds directly to the awarded organizations. Funding disbursement to local organizations is expected to begin as soon as a month after the application period is opened, or approximately mid-May 2021. Most of the funding is anticipated to be awarded to service organizations from southern border states where the greatest needs are expected to be met, but organizations in all states nationwide may apply if they are serving this population of vulnerable people.
+
+
+
diff --git a/testfiles/TF13/13.3-1-fail-2.html b/testfiles/TF13/13.3-1-fail-2.html
new file mode 100644
index 00000000..2bc5c5df
--- /dev/null
+++ b/testfiles/TF13/13.3-1-fail-2.html
@@ -0,0 +1,23 @@
+
+
+
+
+ Programmatic Heading - menu items have heading structure (TC13.3-1-fail-2)
+
+
+
+
+
National Heritage Areas (NHAs) are designated by Congress as places where natural, cultural, and historic resources combine to form a cohesive, nationally important landscape. Through their resources NHAs tell nationally important stories that celebrate our nation's diverse heritage. NHAs are lived-in landscapes. Consequently, NHA entities collaborate with communities to determine how to make heritage relevant to local interests and needs.
A reasonable accommodation is any change to the application or hiring process, to the job, to the way the job is done, or the work environment that allows a person with a disability who is qualified for the job to perform the essential functions of that job and enjoy equal employment opportunities. Accommodations are considered “reasonable” if they do not create an undue hardship or a direct threat.
+
+
Who is an “individual with a disability?”
+
An individual meets the Americans with Disabilities with Act definition act of “disability” that would qualify them for reasonable accommodations if they have “a physical or mental impairment that substantially limits one or more major life activities (sometimes referred to in the regulations as an “actual disability”).” If a disability is not obvious to an employer, they can ask for medical documentation from a health care provider to confirm the need for an accommodation.
+
+
Individuals who solely are “regarded as” having a disability but do not have a disability, are not qualified to receive reasonable accommodations.
+
+
+
\ No newline at end of file
diff --git a/testfiles/TF13/13.3-ic-dna-1.html b/testfiles/TF13/13.3-ic-dna-1.html
new file mode 100644
index 00000000..0c36a7f5
--- /dev/null
+++ b/testfiles/TF13/13.3-ic-dna-1.html
@@ -0,0 +1,26 @@
+
+
+
+
+ Jabberwocky with no programmatic headings
+
+
+
+ This page has no programmatic headings and should be DNA for 13.3 Programmatic Headings Visual.
+
+ ’Twas brillig, and the slithy toves
+ Did gyre and gimble in the wabe:
+ All mimsy were the borogoves,
+ And the mome raths outgrabe.
+
+
+ “Beware the Jabberwock, my son!
+ The jaws that bite, the claws that catch!
+ Beware the Jubjub bird, and shun
+ The frumious Bandersnatch!”
+
+
+
+
+
+
\ No newline at end of file
diff --git a/testfiles/TF13/13.3-ic-dna-2.html b/testfiles/TF13/13.3-ic-dna-2.html
new file mode 100644
index 00000000..dd259511
--- /dev/null
+++ b/testfiles/TF13/13.3-ic-dna-2.html
@@ -0,0 +1,36 @@
+
+
+
+
+ Programmatic Heading - visually apparent headings but no programmatic headings (TC13.3-ic-dna-2)
+
+
+
+
+
+
Key Definitions
+
What is a reasonable accommodation?
+
A reasonable accommodation is any change to the application or hiring process, to the job, to the way the job is done, or the work environment that allows a person with a disability who is qualified for the job to perform the essential functions of that job and enjoy equal employment opportunities. Accommodations are considered “reasonable” if they do not create an undue hardship or a direct threat.
+
+
Who is an “individual with a disability?”
+
An individual meets the Americans with Disabilities with Act definition act of “disability” that would qualify them for reasonable accommodations if they have “a physical or mental impairment that substantially limits one or more major life activities (sometimes referred to in the regulations as an “actual disability”).” If a disability is not obvious to an employer, they can ask for medical documentation from a health care provider to confirm the need for an accommodation.
+
+
Individuals who solely are “regarded as” having a disability but do not have a disability, are not qualified to receive reasonable accommodations.
+
+
+
\ No newline at end of file
diff --git a/testfiles/TF13/13.4-1.a-fail-1.html b/testfiles/TF13/13.4-1-fail-1.html
similarity index 78%
rename from testfiles/TF13/13.4-1.a-fail-1.html
rename to testfiles/TF13/13.4-1-fail-1.html
index a195aaea..4685e025 100644
--- a/testfiles/TF13/13.4-1.a-fail-1.html
+++ b/testfiles/TF13/13.4-1-fail-1.html
@@ -1,19 +1,19 @@
-
-
-
-
- Code Sample - Visually apparent unordered list not identified as a list programmatically (TC13.4-1.a-fail-1)
-
-
-
-
Dog breeds
-
-
- -Doberman
- -Labrador
- -Collie
- -Shih Tzu
-
-
-
+
+
+
+
+ Code Sample - Visually apparent unordered list not identified as a list programmatically (TC13.4-1-fail-1)
+
+
+
+
Dog breeds
+
+
+ -Doberman
+ -Labrador
+ -Collie
+ -Shih Tzu
+
+
+
\ No newline at end of file
diff --git a/testfiles/TF13/13.4-1-pass-1.html b/testfiles/TF13/13.4-1-pass-1.html
new file mode 100644
index 00000000..64f8b757
--- /dev/null
+++ b/testfiles/TF13/13.4-1-pass-1.html
@@ -0,0 +1,19 @@
+
+
+
+
+ Visually apparent unordered list correctly identified as a list programmatically (TC13.4-1-pass-1)
+
+
+
+
Dog breeds
+
+
Doberman
+
Labrador
+
Collie
+
Corgi
+
+
+
+
+
\ No newline at end of file
diff --git a/testfiles/TF13/13.4-1.b-fail-1.html b/testfiles/TF13/13.4-2-fail-1.html
similarity index 79%
rename from testfiles/TF13/13.4-1.b-fail-1.html
rename to testfiles/TF13/13.4-2-fail-1.html
index a2b973d9..dab4bc35 100644
--- a/testfiles/TF13/13.4-1.b-fail-1.html
+++ b/testfiles/TF13/13.4-2-fail-1.html
@@ -1,18 +1,18 @@
-
-
-
-
- Code Sample - Visually apparent ordered list not identified as a list programmatically (TC13.4-1.b-fail-1)
-
-
-
+
\ No newline at end of file
diff --git a/testfiles/TF13/13.4-2-fail-2.html b/testfiles/TF13/13.4-2-fail-2.html
new file mode 100644
index 00000000..1bcc37e6
--- /dev/null
+++ b/testfiles/TF13/13.4-2-fail-2.html
@@ -0,0 +1,19 @@
+
+
+
+
+ Visually apparent ordered list not identified as a list programmatically (TC13.4-2-fail-2)
+
+
+
+
+
Cookie Preparation
+
+
1. In a large bowl, whisk together the sugars, salt, and butter until a paste forms with no lumps.
+
2. Whisk in the egg and vanilla, beating until light ribbons fall off the whisk and remain for a short while before falling back into the mixture.
+
3. Sift in the flour and baking soda, then fold the mixture with a spatula.
+
+
+
+
+
\ No newline at end of file
diff --git a/testfiles/TF13/13.4-2-pass-2.html b/testfiles/TF13/13.4-2-pass-2.html
new file mode 100644
index 00000000..f588452f
--- /dev/null
+++ b/testfiles/TF13/13.4-2-pass-2.html
@@ -0,0 +1,19 @@
+
+
+
+
+ Visually apparent ordered list correctly identified as a list programmatically (TC13.4-2-pass-2)
+
+
+
+
+
Cookie Preparation
+
+
In a large bowl, whisk together the sugars, salt, and butter until a paste forms with no lumps.
+
Whisk in the egg and vanilla, beating until light ribbons fall off the whisk and remain for a short while before falling back into the mixture.
+
Sift in the flour and baking soda, then fold the mixture with a spatula.
+
+
+
+
+
\ No newline at end of file
diff --git a/testfiles/TF13/13.4-3-fail-2.html b/testfiles/TF13/13.4-3-fail-2.html
new file mode 100644
index 00000000..7374e64c
--- /dev/null
+++ b/testfiles/TF13/13.4-3-fail-2.html
@@ -0,0 +1,28 @@
+
+
+
+
+ Visually apparent description list not identified programmatically (TC13.4-3-fail-2)
+
+
+
+
+
+
For the purpose of the Revised 508 Standards, the terms defined in E103.4 have the indicated meaning.
+
+
Agency
+
Any agency or department of the United States as defined in 44 U.S.C. 3502, and the United States Postal Service.
+
Alteration
+
A change to existing ICT that affects interoperability, the user interface, or access to information or data.
+
Application
+
Software designed to perform, or to help the user to perform, a specific task or tasks.
+
+
+
\ No newline at end of file
diff --git a/testfiles/TF13/13.4-3-pass-2.html b/testfiles/TF13/13.4-3-pass-2.html
new file mode 100644
index 00000000..dc44ab7a
--- /dev/null
+++ b/testfiles/TF13/13.4-3-pass-2.html
@@ -0,0 +1,27 @@
+
+
+
+
+ Visually apparent description list not identified programmatically (TC13.4-3-fail-2)
+
+
+
+
+
+
For the purpose of the Revised 508 Standards, the terms defined in E103.4 have the indicated meaning.
+
+
Agency
+
Any agency or department of the United States as defined in 44 U.S.C. 3502, and the United States Postal Service.
+
Alteration
+
A change to existing ICT that affects interoperability, the user interface, or access to information or data.
+
Application
+
Software designed to perform, or to help the user to perform, a specific task or tasks.
+
+
+
+
\ No newline at end of file
diff --git a/testfiles/TF14/14.1-1-fail-1.html b/testfiles/TF14/14.1-1-fail-1.html
new file mode 100644
index 00000000..01f7b147
--- /dev/null
+++ b/testfiles/TF14/14.1-1-fail-1.html
@@ -0,0 +1,15 @@
+
+
+
+ TC14.1-1-fail-1 Image Hyperlink Example
+
+
+
Note: This page is provided for limited demonstration purposes only
+
The Cutest and Cuddliest
+
This web site is dedicated to all things cute and cuddly.
+
Use the links on the left side navigation section of the web page to explore everything you ever wanted to know about the cutest and cuddliest creatures on the planet.
Note: the links below do NOT provide any function or lead to any location. They are provided for limited demonstration purposes only, as described in the Trusted Tester training course
+
+
diff --git a/testfiles/TF14/Button Click Example.jpg b/testfiles/TF14/Button Click Example.jpg
new file mode 100644
index 00000000..47c84432
Binary files /dev/null and b/testfiles/TF14/Button Click Example.jpg differ
diff --git a/testfiles/TF16/16.1-2-fail-2.html b/testfiles/TF16/16.1-2-fail-2.html
new file mode 100644
index 00000000..4e767e7c
--- /dev/null
+++ b/testfiles/TF16/16.1-2-fail-2.html
@@ -0,0 +1,343 @@
+
+
+
+ Media Player Controls - media player on page, but it does not play synchronized media (only audio-only) (TC17.2-ic-dna-2)
+
+
+
+
+
+
+
Audio-only Segment
+
+
+
+
+
+
+
+
+
diff --git a/testfiles/TF17/17.1-1-fail-1.html b/testfiles/TF17/17.1-1-fail-1.html
index 12e96376..d03fedee 100644
--- a/testfiles/TF17/17.1-1-fail-1.html
+++ b/testfiles/TF17/17.1-1-fail-1.html
@@ -3,7 +3,7 @@
Media Player Controls - no controls for captions or for audio descriptions (TC17.1-1-fail-1)
-
+
diff --git a/testfiles/TF17/17.1-1-fail-2.html b/testfiles/TF17/17.1-1-fail-2.html
index 95d80f0d..80eefa4b 100644
--- a/testfiles/TF17/17.1-1-fail-2.html
+++ b/testfiles/TF17/17.1-1-fail-2.html
@@ -3,7 +3,7 @@
Media Player Controls - controls for captions, but not for audio descriptions (TC17.1-1-fail-2)
-
+
diff --git a/testfiles/TF17/17.1-1-fail-3.html b/testfiles/TF17/17.1-1-fail-3.html
index fc4b22bd..877a874b 100644
--- a/testfiles/TF17/17.1-1-fail-3.html
+++ b/testfiles/TF17/17.1-1-fail-3.html
@@ -3,7 +3,7 @@
Media Player Controls - controls for audio descriptions, but not for captions (TC17.1-1-fail-3)
-
+
diff --git a/testfiles/TF17/17.4-2-fail-1.html b/testfiles/TF17/17.4-2-fail-1.html
index 5c8025bd..552b261a 100644
--- a/testfiles/TF17/17.4-2-fail-1.html
+++ b/testfiles/TF17/17.4-2-fail-1.html
@@ -5,7 +5,7 @@
Captions (Prerecorded) - no captions (TC17.4-2-fail-1)
-
+
diff --git a/testfiles/TF17/17.4-3b-fail-2.html b/testfiles/TF17/17.4-3b-fail-2.html
index 381aa592..524f91a0 100644
--- a/testfiles/TF17/17.4-3b-fail-2.html
+++ b/testfiles/TF17/17.4-3b-fail-2.html
@@ -3,7 +3,7 @@
Captions (Prerecorded) - caption are not synchronized (TC17.4-3b-fail-2)
-
+
diff --git a/testfiles/TF17/17.4-all-pass-1.html b/testfiles/TF17/17.4-all-pass-1.html
index 38730ba3..98bace12 100644
--- a/testfiles/TF17/17.4-all-pass-1.html
+++ b/testfiles/TF17/17.4-all-pass-1.html
@@ -3,7 +3,7 @@
Captions (Prerecorded) - captions are complete, accurate, synchronized, and do not obscure other important on-screen text (TC17.4-all-pass-1)
-
+
diff --git a/testfiles/TF17/17.5-3-fail-1.html b/testfiles/TF17/17.5-3-fail-1.html
index 2f695b9f..134235de 100644
--- a/testfiles/TF17/17.5-3-fail-1.html
+++ b/testfiles/TF17/17.5-3-fail-1.html
@@ -3,7 +3,7 @@
Media Player Controls - audio descriptions do not adequately describe important visual content (TC17.5-3-fail-1)
-
+
diff --git a/testfiles/TF17/17.5-all-pass-1.html b/testfiles/TF17/17.5-all-pass-1.html
index ac68a5c3..593d99b4 100644
--- a/testfiles/TF17/17.5-all-pass-1.html
+++ b/testfiles/TF17/17.5-all-pass-1.html
@@ -3,7 +3,7 @@
Media Player Controls - audio descriptions do not adequately describe important visual content (TC17.5-all-pass-1)
-
+
diff --git a/testfiles/TF17/caption_adtf.html b/testfiles/TF17/caption_adtf.html
index 2ea051f8..aa437c8b 100644
--- a/testfiles/TF17/caption_adtf.html
+++ b/testfiles/TF17/caption_adtf.html
@@ -3,7 +3,7 @@
Captions (Prerecorded) - no captions (TC17.4-1-fail-1)
-
+
diff --git a/testfiles/assets/ableplayer/build/ableplayer.dist.js b/testfiles/assets/ableplayer/build/ableplayer.dist.js
index 382b46c6..bfeab981 100644
--- a/testfiles/assets/ableplayer/build/ableplayer.dist.js
+++ b/testfiles/assets/ableplayer/build/ableplayer.dist.js
@@ -38,6 +38,41 @@
var AblePlayerInstances = [];
(function ($) {
+
+ // Helper function to encode HTML entities
+ function escapeHtml(text) {
+ return String(text)
+ .replace(/&/g, '&')
+ .replace(//g, '>')
+ .replace(/"/g, '"')
+ .replace(/'/g, ''');
+ }
+
+ // Helper function to validate media src URLs
+ function isSafeMediaSrc(src) {
+ // Only allow http(s), relative URLs, and disallow javascript: and data: schemes
+ // Restrict to only allow certain file extensions (e.g., .mp4, .webm, .ogg, .mp3, .wav)
+ var pattern = /^(https?:\/\/|\.{0,2}\/|\/)[^<>"]+$/i;
+ if (!pattern.test(src)) {
+ return false;
+ }
+ // Disallow javascript: and data: schemes explicitly
+ if (/^\s*(javascript:|data:)/i.test(src)) {
+ return false;
+ }
+ // Only allow certain file extensions
+ var allowedExtensions = ['.mp4', '.webm', '.ogg', '.mp3', '.wav', '.m4a'];
+ var lowerSrc = src.toLowerCase();
+ var hasAllowedExtension = allowedExtensions.some(function(ext) {
+ return lowerSrc.endsWith(ext);
+ });
+ if (!hasAllowedExtension) {
+ return false;
+ }
+ return true;
+ }
+
$(document).ready(function () {
$('video, audio').each(function (index, element) {
@@ -1062,12 +1097,16 @@ var AblePlayerInstances = [];
var $youTubeVideos = $(this).find('li[data-youtube-id]');
$youTubeVideos.each(function() {
var youTubeId = $(this).attr('data-youtube-id');
- var youTubePoster = thisObj.getYouTubePosterUrl(youTubeId,'120');
- var $youTubeImg = $('',{
- 'src': youTubePoster,
- 'alt': ''
- });
- $(this).find('button').prepend($youTubeImg);
+ // Validate YouTube video ID: 11 chars, letters, numbers, - and _
+ if (/^[A-Za-z0-9_-]{11}$/.test(youTubeId)) {
+ var youTubePoster = thisObj.getYouTubePosterUrl(youTubeId,'120');
+ var $youTubeImg = $('',{
+ 'src': youTubePoster,
+ 'alt': ''
+ });
+ $(this).find('button').prepend($youTubeImg);
+ }
+ // else: invalid ID, do not inject image
});
// add accessibility to the list markup
@@ -4750,20 +4789,24 @@ var AblePlayerInstances = [];
if ($sourceSpans.length) {
$sourceSpans.each(function() {
if (thisObj.hasAttr($(this),'data-src')) {
- // this is the only required attribute
- var $newSource = $('',{
- 'src': $(this).attr('data-src')
- });
- if (thisObj.hasAttr($(this),'data-type')) {
- $newSource.attr('type',$(this).attr('data-type'));
- }
- if (thisObj.hasAttr($(this),'data-desc-src')) {
- $newSource.attr('data-desc-src',$(this).attr('data-desc-src'));
- }
- if (thisObj.hasAttr($(this),'data-sign-src')) {
- $newSource.attr('data-sign-src',$(this).attr('data-sign-src'));
+ var dataSrc = $(this).attr('data-src');
+ if (isSafeMediaSrc(dataSrc)) {
+ // this is the only required attribute
+ var $newSource = $('',{
+ 'src': escapeHtml(dataSrc)
+ });
+ if (thisObj.hasAttr($(this),'data-type')) {
+ $newSource.attr('type',$(this).attr('data-type'));
+ }
+ if (thisObj.hasAttr($(this),'data-desc-src')) {
+ $newSource.attr('data-desc-src',$(this).attr('data-desc-src'));
+ }
+ if (thisObj.hasAttr($(this),'data-sign-src')) {
+ $newSource.attr('data-sign-src',$(this).attr('data-sign-src'));
+ }
+ thisObj.$media.append($newSource);
}
- thisObj.$media.append($newSource);
+ // else: invalid src, do not add
}
});
}
@@ -4777,11 +4820,15 @@ var AblePlayerInstances = [];
thisObj.hasAttr($(this),'data-kind') &&
thisObj.hasAttr($(this),'data-srclang')) {
// all required attributes are present
- var $newTrack = $('