DynoStaticAdmin sign in
Documentation

Data Table

Data Table

Data Table is a first-party, self-hosted widget for inventories, schedules, reference lists, directories, and other bounded tabular data. Rendering and queries use the published snapshot stored in DynoStatic; visitors do not send the dataset to a third party.

Columns and typed cells

A table has between one and 30 columns. Each column has a stable key, a heading of at most 100 characters, and one type:

  • Text displays plain text.
  • Number accepts finite decimal or exponent notation and sorts numerically.
  • Date accepts the unambiguous YYYY-MM-DD format and sorts chronologically.
  • URL accepts secure https:// links or safe relative links. External links open separately with noopener noreferrer protection.

Rows have stable keys and an ordered cell for each column. A cell contains at most 2,000 characters. Cells are scalar plain text—not HTML, objects, formulas, or executable spreadsheet content.

Editing and large datasets

The visual builder edits up to 100 rows. It submits one bounded rows-JSON field rather than thousands of individually named inputs, so ordinary shared-host max_input_vars limits cannot silently truncate a table. The advanced disclosure is also the no-JavaScript fallback.

Use Dataset import / export for larger tables. The dedicated importer accepts upload files up to 3 MiB containing at most 1,000 rows and 2 MiB of canonical row JSON. The separate upload allowance includes the DynoStatic JSON envelope, so a valid maximum-size export remains importable. It parses CSV or DynoStatic Data Table JSON incrementally into private temporary storage, validates the entire dataset, and then performs one revision-checked draft update. A malformed, oversized, stale, or conflicting import changes nothing. Import never publishes automatically.

CSV uses its first line for headings. Add a type in square brackets when needed:

Product,Quantity [number],Updated [date],Details [url]
Notebook,24,2026-01-15,/products/notebook

JSON exports carry the dynostatic-data-table format name and version 1. CSV exports neutralize spreadsheet-leading =, +, -, and @ characters; importing a DynoStatic export restores the original valid value before applying the type and formula policy.

Search, sorting, and pages

The published widget initially renders only its selected first page. Visitors may choose 10, 25, 50, or 100 rows per page. Search is capped at 200 characters, sorting is stable, and Reset restores original row order. Empty tables and searches with no matches have distinct visible status messages.

Wide tables stay inside a keyboard-focusable horizontal scroll region instead of expanding the host page. Sort state is exposed through aria-sort, status changes use a polite live region, and controls retain logical focus after a page request.

The browser runtime requests bounded pages from the physical, subfolder-safe endpoint:

api/?action=widget-data-table&widget=<public-id>

The endpoint reuses the widget's exact-origin authorization, reads only the immutable publication resolved for that website, and returns privately revalidated ETagged JSON. It never exposes a draft or another website's publication. URL rewriting and a hosted Node process are not required.

Templates

Simple Data Table is a general three-column starter. Inventory Data Table provides product, stock, update-date, and details-link fields. Both are ordinary editable drafts and obey the same limits and publication lifecycle.