Table Improvements

Summary

Mentor(s): Dr. Mike Murphy
Project Type: Software development
Technologies: Python, HTML, Git
Undergraduate Credit: CSCI 399, CSCI 490
Graduate Credit: IST 659
Locality: Main campus and/or remote

Purpose

TealSite can generate a basic table from comma-separated value data, as shown in Table 2. Notice that several columns repeat information from the previous column, while a few consecutive rows contain "Skipped" and "None" entries.

Table 2: Travel methods between cities. [Download Data]
DestinationOriginal ModeRevised ModeCompleted Mode
Florence, SCCarCarCar
Alexandria, VAAmtrak PalmettoAmtrak PalmettoAmtrak Palmetto
Chicago, ILAmtrak FloridianAmtrak FloridianAmtrak Floridian
Los Angeles, CAAmtrak Southwest ChiefDelta Air Lines ORD-SLC-LAXDelta Air Lines MDW-DTW-LAX
Seattle, WAAmtrak Coast StarlightDelta Air Lines LAX-SEADelta Air Lines LAX-SEA
Chicago, ILAmtrak Empire BuilderSkippedNone
Alexandria, VAAmtrak FloridianSkippedNone
Florence, SCAmtrak PalmettoSkippedNone
Myrtle Beach, SCCarDelta Air Lines SEA-ATL-MYRDelta Air Lines SEA-ATL-MYR

According to the HTML 5 specification for the td element, table data can span more than one row or column by using the rowspan and colspan attributes, respectively. In addition, tables can support groups of columns using the colgroup tag and footers by applying the tfoot tag. None of these capabilities are currently supported by the ts-table tag, but they would improve table generation if added.

Scope of Work

Extend the ts-table tag to support data spanning rows and columns. Also support column groups and table footers. For row and column spanning, the current table data input format is comma-separated value (CSV). TealSite will need to be extended to detect the same value in two adjacent cell locations in order to perform merging. Column groups and footer support will require attribute and/or sub-tag additions to ts-tag. Attributes should also be added to control column spanning, so that it can be disabled by the author if it is not appropriate for the presentation.