Skip to content

Quick Start

Get up and running with Tuva Data Tools in minutes.

Prerequisites

  • React 15.6.1+ or React 16+
  • jQuery 3.2.1+ (will be removed in future versions)
  • A modern browser (Chrome, Firefox, Safari, Edge)

Step 1: Import Dependencies

Add React, React DOM, and jQuery to your page:

html
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script src="https://unpkg.com/react@16/umd/react.production.min.js"></script>
<script src="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js"></script>

Step 2: Add Tuva Data Tools

Import the library and stylesheet:

html
<link rel="stylesheet" href="/assets/tools/tuva-data-tools.min.css">
<script src="/assets/tools/tuva-data-tools.min.js"></script>

Step 3: Prepare Your Data

Tuva Data Tools expects data in a specific format:

javascript
// Column identifiers (used internally)
const columnIds = ['id', 'name', 'age', 'score'];

// Human-readable column names
const columnNames = ['Case', 'Name', 'Age', 'Score'];

// Row data as 2D array
const rowData = [
  [1, 'Alice', '12', '85'],
  [2, 'Bob', '13', '90'],
  [3, 'Charlie', '12', '88'],
  [4, 'David', '11', '92'],
  [5, 'Eve', '13', '87']
];

// Metadata describing each field
const metaData = {
  fields: [
    { id: 'id', name: 'Case' },
    { id: 'name', name: 'Name' },
    { id: 'age', name: 'Age', type: 'numeric' },
    { id: 'score', name: 'Score', type: 'numeric' }
  ]
};

Step 4: Create the Component

Use ReactDOM.render() which returns the component instance. Access API methods via the actions property:

javascript
// Render the component
const tuvaDataTools = ReactDOM.render(
  React.createElement(TuvaDataTools, {
    columnIds: columnIds,
    columnNames: columnNames,
    rowData: rowData,
    metaData: metaData
  }),
  document.getElementById('root')
);

// Access API methods via .actions
tuvaDataTools.actions.changeTheme('dark');
tuvaDataTools.actions.setGridLines(true);

Step 5: Using the API

Access methods through the actions property:

javascript
// Change appearance
tuvaDataTools.actions.changeTheme('dark');
tuvaDataTools.actions.setFontSize(1.2); // multiplier, not pixels
tuvaDataTools.actions.setGridLines(true);

// Get data
const data = tuvaDataTools.actions.getRawData();
const columns = tuvaDataTools.actions.getColumnNames();

// Save/restore state
const state = tuvaDataTools.actions.getPlotState();
localStorage.setItem('savedState', JSON.stringify(state));

// Later...
const saved = JSON.parse(localStorage.getItem('savedState'));
tuvaDataTools.actions.setPlotState(saved);

Try It Out

JavaScript Editor
Result / Preview

Complete Example

Here's a full working example:

html
<!DOCTYPE html>
<html>
<head>
  <title>Tuva Data Tools Demo</title>
  <link rel="stylesheet" href="/assets/tools/tuva-data-tools.min.css">
</head>
<body>
  <div id="root" style="width: 100%; height: 600px;"></div>

  <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
  <script src="https://unpkg.com/react@16/umd/react.production.min.js"></script>
  <script src="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js"></script>
  <script src="/assets/tools/tuva-data-tools.min.js"></script>
  
  <script>
    const columnIds = ['id', 'name', 'age', 'score'];
    const columnNames = ['Case', 'Name', 'Age', 'Score'];
    const rowData = [
      [1, 'Alice', '12', '85'],
      [2, 'Bob', '13', '90'],
      [3, 'Charlie', '12', '88'],
      [4, 'David', '11', '92'],
      [5, 'Eve', '13', '87']
    ];
    const metaData = {
      fields: [
        { id: 'id', name: 'Case' },
        { id: 'name', name: 'Name' },
        { id: 'age', name: 'Age', type: 'numeric' },
        { id: 'score', name: 'Score', type: 'numeric' }
      ]
    };

    // Render component
    const tuvaDataTools = ReactDOM.render(
      React.createElement(TuvaDataTools, {
        columnIds: columnIds,
        columnNames: columnNames,
        rowData: rowData,
        metaData: metaData
      }),
      document.getElementById('root')
    );

    // Configure after render
    setTimeout(() => {
      tuvaDataTools.actions.changeTheme('tuva');
      tuvaDataTools.actions.setGridLines(true);
      tuvaDataTools.actions.setAnimation(true);
    }, 500);
  </script>
</body>
</html>

Next Steps

Tuva Data Tools Documentation