Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

hpcc-systems/Visualization

Open more actions menu

Repository files navigation

@hpcc-js (aka Viz Framework 2.0)

Test PR Join the chat at https://gitter.im/hpcc-systems/Visualization

The HPCC Visualization Framework is a comprehensive TypeScript/JavaScript-based data visualization library that provides charting, graphing, and dashboard capabilities. Published as scoped NPM packages under @hpcc-js, this framework is designed to work seamlessly with the HPCC Systems big data platform while being flexible enough for general-purpose visualization needs.

How to get started?

  1. Quick Start: Covers the basics on how to include the framework into your web application.
  2. Tutorials: Starting with a simple "hello world", the tutorials walk through the basics of instantiating visualizations, fetching data and creating dashboards.
  3. Gallery: Interactive gallery with live code examples and a property editor for discovering the capabilities of each visualization.

Architecture & Overview

Monorepo Structure

This is a Lerna-based monorepo with packages organized in the /packages/ directory. Each package has its own package.json, build configuration, and TypeScript setup. Packages are published independently to NPM under the @hpcc-js/ scope.

Build System

  • Vite is the primary compiler and bundler for all packages
  • TypeScript source code with strict configuration
  • Multiple module formats: ESM, UMD, and IIFE
  • Source maps generated for all builds
  • PostCSS for CSS processing and minification

Package Categories

Core Packages

  • @hpcc-js/common - Base widgets, utilities, and D3 re-exports
  • @hpcc-js/api - TypeScript interfaces and API definitions
  • @hpcc-js/util - Utility functions and helpers

Visualization Packages

  • @hpcc-js/chart - Charts (Bar, Line, Pie, Scatter, etc.)
  • @hpcc-js/graph - Graph visualizations and network diagrams
  • @hpcc-js/map - Geographic visualizations with Leaflet integration
  • @hpcc-js/tree - Tree and hierarchy visualizations
  • @hpcc-js/timeline - Timeline and temporal visualizations

UI & Layout Packages

  • @hpcc-js/layout - Layout containers and dashboard components
  • @hpcc-js/form - Form controls and input widgets
  • @hpcc-js/html - HTML-based components and React integration

Integration Packages

  • @hpcc-js/marshaller - Data marshalling and dashboard orchestration
  • @hpcc-js/comms - Communication with HPCC Systems platform
  • @hpcc-js/codemirror - Code editors for various languages

Browser & Module Support

Target Environments

  • Modern browsers (Chrome, Firefox, Edge, Safari)
  • Node.js for server-side rendering and data processing

Module Formats

  • ES6 modules (primary format for tree-shaking and modern bundlers)
  • UMD (Universal Module Definition for broad compatibility)
  • IIFE (Immediately Invoked Function Expression for direct browser usage)
  • CommonJS support for Node.js environments

Bundler Compatibility

  • Vite (recommended)
  • Webpack
  • Rollup.js
  • Parcel
  • Direct CDN usage via unpkg

Installation

Via NPM (Recommended)

To install via npm, use npm install with the specific packages you need. Each package is scoped with "@hpcc-js":

npm install @hpcc-js/chart @hpcc-js/map @hpcc-js/common

Via CDN (Quick Start)

For quick prototyping, you can load packages directly from unpkg CDN:

<script src="https://unpkg.com/@hpcc-js/util"></script>
<script src="https://unpkg.com/@hpcc-js/api"></script>
<script src="https://unpkg.com/@hpcc-js/common"></script>
<script src="https://unpkg.com/@hpcc-js/chart"></script>

You can see all available packages at: https://www.npmjs.com/search?q=maintainer:hpcc-js

Usage Examples

ES6 Modules (Recommended)

import { Bar } from "@hpcc-js/chart";

const chart = new Bar()
    .target("placeholder")
    .columns(["Subject", "Year 1", "Year 2", "Year 3"])
    .data([
        ["Geography", 75, 68, 65],
        ["English", 45, 55, -52],
        ["Math", 98, 92, 90],
        ["Science", 66, 60, 72]
    ])
    .render();

AMD

require(["@hpcc-js/chart"], function(hpccChart) {
    const chart = new hpccChart.Bar()
        .target("placeholder")
        .columns(["Subject", "Year 1", "Year 2", "Year 3"])
        .data([
            ["Geography", 75, 68, 65],
            ["English", 45, 55, -52],
            ["Math", 98, 92, 90],
            ["Science", 66, 60, 72]
        ])
        .render();
});

IIFE (Browser Global)

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Simple Bar Chart</title>
    <script src="https://unpkg.com/@hpcc-js/util"></script>
    <script src="https://unpkg.com/@hpcc-js/common"></script>
    <script src="https://unpkg.com/@hpcc-js/api"></script>
    <script src="https://unpkg.com/@hpcc-js/chart"></script>
</head>
<body>
    <div id="placeholder" style="width:800px; height:600px;"></div>
    <script>
        const hpccChart = window["@hpcc-js/chart"];
        const chart = new hpccChart.Bar()
            .target("placeholder")
            .columns(["Subject", "Year 1", "Year 2", "Year 3"])
            .data([
                ["Geography", 75, 68, 65],
                ["English", 45, 55, -52],
                ["Math", 98, 92, 90],
                ["Science", 66, 60, 72]
            ])
            .render();
    </script>
</body>
</html>

Developer Zone

Prerequisites

  • Node.js LTS (18.x or later recommended)
  • Git for version control

Setting up a Development Environment

  1. Clone the repository:
git clone https://github.com/hpcc-systems/Visualization.git Visualization
cd Visualization
  1. Install dependencies:
npm install
  1. Build all packages:
npm run build
  1. Start the development server:
cd demos/gallery
npm run bundle-watch

The gallery will be available at http://localhost:5500 with hot reloading for development.

Common Development Tasks

Building

# Build all packages
npm run build

# Clean all build artifacts
npm run clean

Linting

# Lint all packages
npm run lint

# Fix linting issues automatically
npm run lint-fix

Testing

# Run all tests
npm run test

# Run browser tests
npm run test-browser

# Run Node.js tests  
npm run test-node

Working with Individual Packages

# Navigate to a specific package
cd packages/chart

# Build just this package
npm run build

# Run tests for this package
npm run test

Full Clean

To completely reset your development environment:

npm run clean
npm run uninstall
rm -rf node_modules
npm install

HPCC Platform Integration

This framework is designed to work with the HPCC Systems big data platform, providing:

  • ECL (Enterprise Control Language) integration
  • Roxie query integration through @hpcc-js/comms
  • Workunit result visualization
  • ESP (Enterprise Services Platform) connectivity
  • Real-time data streaming capabilities

Contributing

We welcome contributions! Please see our Contributing Guidelines.

License

This project is licensed under the Apache-2.0 License - see the LICENSE file for details.

Morty Proxy This is a proxified and sanitized view of the page, visit original site.