https://github.com/cmudig/data-navigator

A JavaScript library that allows for accessible navigation of data structures.

https://github.com/cmudig/data-navigator

Science Score: 13.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (10.6%) to scientific vocabulary

Keywords

accessibility data-structures data-visualization input-method visualization

Keywords from Contributors

interaction projection archival embedding packaging generic sequences profiles genomics observability
Last synced: 5 months ago · JSON representation

Repository

A JavaScript library that allows for accessible navigation of data structures.

Basic Info
Statistics
  • Stars: 47
  • Watchers: 6
  • Forks: 1
  • Open Issues: 0
  • Releases: 13
Topics
accessibility data-structures data-visualization input-method visualization
Created almost 4 years ago · Last pushed 12 months ago
Metadata Files
Readme Contributing License

README.md

Data Navigator

Data Navigator provides visualization toolkits with rich, accessible navigation structures, robust input handling, and flexible, semantic rendering.

Data Navigator is a JavaScript library that allows for navigation of data structures. Data Navigator makes png, svg, canvas, and even webgl graphics accessible to a wide array of assistive technologies and input modalities.

Check out our online, interactive demo for a video introduction and to try out Data Navigator hands-on.

Check out our docs to learn more about getting started.

Data Navigator's approach

Data Navigator has abstracted navigation into commands, which enables it to easily receive input from screen readers and keyboards to more interesting modalities like touch and mouse swiping, spoken commands, hand gestures, and even fabricated or totally novel interfaces, like bananas.

Image in two parts. First part: Inputs: A. Hand swiping. B: Speaking "left." C. A hand gesture on camera. D. Bananas. Second part: Output: (focus moves left) A focus indicator has moved on a bar chart from one stacked bar to another on its left.

Data Navigator is expressive for builders and enables entire toolkits or ecosystems to become more accessible. The system provides low-level control over narratives, interaction paths, and journeys a user might want to take through an image or graphic.

Developers can build schemas that scale to work with any chart in a charting library or a single, bespoke implemetation for use in story-telling contexts like journalism, reports, presentations, and interactive infographics.

Image in two parts. First part: A schema for navigation that works with any stacked bar chart. Great for libraries! A complex schema is shown over a stacked bar chart with up, down, left, and right directions. Second part: A bespoke, guided journey through a visual. Great for storytelling! A simple navigation path is shown going through the image.

Not only are paths through an image customizeable but so are the visual indications that are rendered alongside those journeys. These visual indications use semantically rich, native HTML elements for maximized accessibility.

Code used to render a path that looks like an outline and then place that outline over visual elements on a data visualization.

Visit our landing page to try our demo, which shows a png image made into navigable experience. A variety of input modalities are enabled, including touch and mouse swiping, keyboard, screen reader, text input, voice control, and hand gesture recognition.

We also have a vega-lite demo online, which (under the hood) shows how someone could write one schema that serves any chart in an ecosystem.

System design

Data Navigator is organized into 3 separately composable modules: the first is a graph-based structure of nodes and edges, the second handles input and navigation logic, and the third renders the structure. These may be leveraged together or independently. Read our paper to learn more!

Types

Our types are consolidated into a single types export file, designed (mostly) as a grammar. Each major module is broken down into subparts, each with their own types, all the way to the primitive-most types used.

Getting started

We have a thorough introduction to building a navigable visualization on our docs site. But for basic installation, see below:

You can install or use both esm and cjs modules in a variety of ways, in addition to importing all of data-navigator or just one part.

```

to install into a project

npm install data-navigator ```

```js // to use it in a .js or .ts file import { default as dataNavigator } from 'data-navigator';

// whole ecosystem console.log('dataNavigator', dataNavigator);

// one module in the ecosystem console.log('dataNavigator.rendering', dataNavigator.rendering); ```

html <!-- and even as a script tag module loaded from a cdn --> <script type="module"> // pay attention to the version! the latest may be higher than this example import dataNavigator from 'https://cdn.jsdelivr.net/npm/data-navigator@2.2.0/dist/index.mjs'; console.log(dataNavigator); </script>

Credit

Data-Navigator was developed at CMU's Data Interaction Group (CMU DIG), primarily by Frank Elavsky.

Citing Data Navigator

bib @article{2023-data-navigator, year = {2023}, author = {Frank Elavsky and Lucas Nadolskis and Dominik Moritz}, title = {{Data Navigator:} An Accessibility-Centered Data Navigation Toolkit}, journal = {{IEEE} {VIS}} }

Owner

  • Name: CMU Data Interaction Group
  • Login: cmudig
  • Kind: organization
  • Location: Pittsburgh, PA

People, Visualization, Analysis, Machine Learning

GitHub Events

Total
  • Release event: 5
  • Watch event: 9
  • Delete event: 7
  • Issue comment event: 1
  • Push event: 35
  • Pull request event: 12
  • Create event: 9
Last Year
  • Release event: 5
  • Watch event: 9
  • Delete event: 7
  • Issue comment event: 1
  • Push event: 35
  • Pull request event: 12
  • Create event: 9

Committers

Last synced: 6 months ago

All Time
  • Total Commits: 178
  • Total Committers: 3
  • Avg Commits per committer: 59.333
  • Development Distribution Score (DDS): 0.011
Past Year
  • Commits: 63
  • Committers: 1
  • Avg Commits per committer: 63.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Frank Elavsky f****y@g****m 176
dependabot[bot] 4****] 1
Dominik Moritz d****z@g****m 1

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 6
  • Total pull requests: 68
  • Average time to close issues: 5 days
  • Average time to close pull requests: 2 days
  • Total issue authors: 2
  • Total pull request authors: 3
  • Average comments per issue: 1.67
  • Average comments per pull request: 0.04
  • Merged pull requests: 67
  • Bot issues: 0
  • Bot pull requests: 2
Past Year
  • Issues: 4
  • Pull requests: 14
  • Average time to close issues: 1 day
  • Average time to close pull requests: 12 days
  • Issue authors: 1
  • Pull request authors: 2
  • Average comments per issue: 2.0
  • Average comments per pull request: 0.21
  • Merged pull requests: 13
  • Bot issues: 0
  • Bot pull requests: 2
Top Authors
Issue Authors
  • majornista (2)
  • frankelavsky (1)
Pull Request Authors
  • frankelavsky (47)
  • dependabot[bot] (2)
  • domoritz (1)
Top Labels
Issue Labels
bug (3)
Pull Request Labels
dependencies (2)

Dependencies

package.json npm
  • prettier ^2.6.2
  • webpack ^5.72.0
  • webpack-cli ^4.9.2
yarn.lock npm
  • 121 dependencies