All Projects → skalinichev → uplot-wrappers

skalinichev / uplot-wrappers

Licence: MIT license
React and Vue.js wrappers for uPlot that allow you to work with charts declaratively inside your favorite framework

Programming Languages

typescript
32286 projects
javascript
184084 projects - #8 most used programming language
HTML
75241 projects

Projects that are alternatives of or similar to uplot-wrappers

CallofDuty.py
Asynchronous, object-oriented Python wrapper for the Call of Duty API.
Stars: ✭ 86 (+132.43%)
Mutual labels:  wrapper
gopherjs-frappe-charts
[experimental/outdated; frappe v0.07] GopherJS bindings for frappe/charts - simple Go charts for your frontend
Stars: ✭ 20 (-45.95%)
Mutual labels:  charts
moGL
Modern OpenGL wrapper, thin C++14 header-only layer on top of the OpenGL 4.5+ API
Stars: ✭ 27 (-27.03%)
Mutual labels:  wrapper
routeros-client
Abstraction layer over the node-routeros API
Stars: ✭ 63 (+70.27%)
Mutual labels:  wrapper
XUSG
XUSG, XU's supreme graphics lib, is a handy wrapper currently for DirectX 12. It can be a good reference for designing your own DX12 wrapper APIs.
Stars: ✭ 57 (+54.05%)
Mutual labels:  wrapper
PSEventViewer
PSEventViewer (Get-Events) is really useful PowerShell wrapper around Get-WinEvent. One of the features you may be interested in is a simple way of getting “hidden” events data
Stars: ✭ 74 (+100%)
Mutual labels:  wrapper
advcash
node.js wrapper for advcash cryptocurrency exchange
Stars: ✭ 14 (-62.16%)
Mutual labels:  wrapper
google-workspace
A unofficial high level Python API wrapper for some of the productivity based Google APIs, that is focused on simplicity.
Stars: ✭ 74 (+100%)
Mutual labels:  wrapper
FinMesh
A python package that brings together financial and economic data.
Stars: ✭ 20 (-45.95%)
Mutual labels:  wrapper
harfbuzz rs
A fully safe Rust wrapper for the harfbuzz text shaping library.
Stars: ✭ 26 (-29.73%)
Mutual labels:  wrapper
Discord-Netflix
A updated and improved version from the original Discord-Netflix from Nirewen.
Stars: ✭ 26 (-29.73%)
Mutual labels:  wrapper
igdb
Laravel PHP Facade/Wrapper for the IGDB API
Stars: ✭ 30 (-18.92%)
Mutual labels:  wrapper
v-cupertino
A Vue 3 Wrapper for Cupertino Pane Library
Stars: ✭ 17 (-54.05%)
Mutual labels:  wrapper
nimCEF
Nim wrapper for the Chromium Embedded Framework
Stars: ✭ 27 (-27.03%)
Mutual labels:  wrapper
HerePy
A library that provides a Python interface to the HERE APIs.
Stars: ✭ 73 (+97.3%)
Mutual labels:  wrapper
mira
The fantastic Golang Reddit API wrapper for gophers
Stars: ✭ 54 (+45.95%)
Mutual labels:  wrapper
react-native-mp-android-chart
React Native wrapper of popular android charting library MPAndroidChart
Stars: ✭ 51 (+37.84%)
Mutual labels:  charts
Invoke-Terraform
A cross-platform PowerShell module for downloading and invoking terraform binaries.
Stars: ✭ 14 (-62.16%)
Mutual labels:  wrapper
FivePD-API
A wrapper that allows you to create FivePD callouts/plugins.
Stars: ✭ 17 (-54.05%)
Mutual labels:  wrapper
Samples-NET.Core-MVC-CSharp
ASP.NET Core 2.0 MVC C# samples for Stimulsoft Reports.Web reporting tool.
Stars: ✭ 28 (-24.32%)
Mutual labels:  charts

uPlot wrappers

A collection of uPlot wrappers that allow you to work with charts declaratively inside your favorite framework.

Table of Contents

Motivation

While several other uPlot wrappers already exist, all of them have one of the following limitations:

  1. They create uPlot instance once, during component mount phase, and expect you to handle all the update logic yourself.
  2. They recreate uPlot instance anew whenever the props change, even if the instance can be updated to reflect the changes.

In comparison this library tries it's best not to recreate the uPlot instance once the props change. Instead of recreation it tries to use uPlot public API to keep it up to date with the props.

Getting started

See React or Vue.js sections below depending on what framework you're using. Also see API documentation common to both frameworks.

React

Installation

Install uplot-react package with uplot dependency:

  • Using npm: $ npm install uplot-react uplot
  • Using yarn: $ yarn add uplot-react uplot

You also need React 16.8 or above to be installed inside your project tree.

How to use

import React from 'react';
import uPlot from 'uplot';
import UplotReact from 'uplot-react';
import 'uplot/dist/uPlot.min.css';

const Chart = () =>
    (<UplotReact
        options={options}
        data={data}
        target={target}
        onCreate={(chart) => {}}
        onDelete={(chart) => {}}
    />);

Demo

See the live demo

You can also run the demo app locally:

$ git clone https://github.com/skalinichev/uplot-wrappers.git

$ cd uplot-wrappers && yarn install && yarn run serveReact

Vue.js

Installation

Install uplot-vue package with uplot dependency:

  • Using npm: $ npm install uplot-vue uplot
  • Using yarn: $ yarn add uplot-vue uplot

You also need Vue.js to be installed inside your project tree (both 2.6 and 3.x versions are supported).

How to use

Using template

<template>
    <UplotVue
        :data="data"
        :options="options"
        :target="target"
        @create="onCreate"
        @delete="onDelete"
    />
 </template>
 <script>
    // Vue.js 2
    import Vue from 'vue';
    // Vue.js 3
    import {createApp} from 'vue';
    import uPlot from 'uplot';
    import UplotVue from 'uplot-vue';
    import 'uplot/dist/uPlot.min.css';

    // Vue.js 2
    const Chart = Vue.extend({components: {uplotvue: UplotVue}});
    // Vue.js 3
    const Chart = createApp({components: {uplotvue: UplotVue}});
 </script>

Using JSX

// Vue.js 2
import Vue from 'vue';
// Vue.js 3
import {createApp} from 'vue';
import uPlot from 'uplot';
import UplotVue from 'uplot-vue';
import 'uplot/dist/uPlot.min.css';

{
    ...,
    render() {
        return (
            <UplotVue
                options={options}
                data={data}
                target={target}
                onDelete={(chart) => {}}
                onCreate={(chart) => {}}
            />
        );
    }
}

Note: Property changes by mutation are not supported due to Vue limitation You have to create a copy of the property, i.e. replace it instead, see an example for the general idea.

Demo

See the Vue.js 2 live demo

You can also run the demo app locally:

$ git clone https://github.com/skalinichev/uplot-wrappers.git

$ cd uplot-wrappers && yarn install

Vue.js 2:

$ yarn run serveVue

Vue.js 3:

$ yarn run serveVue3

Documentation

Parameter Requirement Description
options required Options for uPlot. Passed as the first argument to uPlot constructor: new uPlot(options)
data required Data for uPlot. Passed as the second argument to uPlot constructor: new uPlot(options, data)
target optional Target html element or init function for uPlot. Passed as the third argument to uPlot constructor: new uPlot(options, data, target) A new div target element will be created automatically if none is passed in the props
onCreate optional Callback function, invoked upon uPlot instance creation or recreation
onDelete optional Callback function, invoked before uPlot instance gets destroyed, either because the props has changed so much it's impossible to update the chart or because the component is about to be unmounted
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].