All Projects β†’ Raathigesh β†’ Dazzle

Raathigesh / Dazzle

Licence: mit
πŸš€ Dashboards made easy in React JS.

Programming Languages

javascript
184084 projects - #8 most used programming language
CSS
56736 projects

Projects that are alternatives of or similar to Dazzle

Abixen Platform
Abixen Platform
Stars: ✭ 530 (-62.78%)
Mutual labels:  analytics, dashboard
Dashblocks
Enable Analytics in your Apps
Stars: ✭ 48 (-96.63%)
Mutual labels:  analytics, dashboard
Flask Profiler
a flask profiler which watches endpoint calls and tries to make some analysis.
Stars: ✭ 622 (-56.32%)
Mutual labels:  analytics, dashboard
Vudash
Powerful, Flexible, Open Source dashboards for anything
Stars: ✭ 363 (-74.51%)
Mutual labels:  analytics, dashboard
Docker Superset
Repository for Docker Image of Apache-Superset. [Docker Image: https://hub.docker.com/r/abhioncbr/docker-superset]
Stars: ✭ 86 (-93.96%)
Mutual labels:  analytics, dashboard
Redash
Make Your Company Data Driven. Connect to any data source, easily visualize, dashboard and share your data.
Stars: ✭ 20,147 (+1314.82%)
Mutual labels:  analytics, dashboard
Eda miner
Swiss army knife, but for visualization, analytics, and machine learning. View docs here: http://edaminer.com/docs/ and a demo (don't abuse) here: http://edaminer.com/
Stars: ✭ 13 (-99.09%)
Mutual labels:  analytics, dashboard
Mprove
Open source Business Intelligence tool πŸŽ‰
Stars: ✭ 212 (-85.11%)
Mutual labels:  analytics, dashboard
Sing App
πŸ’₯Free and open-source admin dashboard template built with Bootstrap 4.5 πŸ’₯
Stars: ✭ 1,187 (-16.64%)
Mutual labels:  analytics, dashboard
Dashboard Extension Online Map Item
β›” DEPRECATED. This project was moved to a new repository. Visit https://github.com/DevExpress/dashboard-extensions to find an updated version.
Stars: ✭ 65 (-95.44%)
Mutual labels:  analytics, dashboard
Netdata
Real-time performance monitoring, done right! https://www.netdata.cloud
Stars: ✭ 57,056 (+3906.74%)
Mutual labels:  analytics, dashboard
Dashboards
Drag & drop dashboard builder!
Stars: ✭ 97 (-93.19%)
Mutual labels:  drag-and-drop, dashboard
Kube Opex Analytics
🎨 Kubernetes Cost Allocation and Capacity Planning Analytics Tool. Hourly, daily, monthly reports - Prometheus exporter - Built-in & Grafana dashboard.
Stars: ✭ 232 (-83.71%)
Mutual labels:  analytics, dashboard
Countly Server
Countly helps you get insights from your application. Available self-hosted or on private cloud.
Stars: ✭ 4,857 (+241.08%)
Mutual labels:  analytics, dashboard
Chartbrew
Open-source web platform for creating charts out of different data sources (databases and APIs) πŸ“ˆπŸ“Š
Stars: ✭ 199 (-86.03%)
Mutual labels:  analytics, dashboard
Metabase
The simplest, fastest way to get business intelligence and analytics to everyone in your company πŸ˜‹
Stars: ✭ 26,803 (+1782.23%)
Mutual labels:  analytics, dashboard
Swiv
For the open source UI formerly know as Pivot
Stars: ✭ 165 (-88.41%)
Mutual labels:  analytics, dashboard
Goaccess
GoAccess is a real-time web log analyzer and interactive viewer that runs in a terminal in *nix systems or through your browser.
Stars: ✭ 14,096 (+889.89%)
Mutual labels:  analytics, dashboard
Dashboard Extension Webpage Item
β›” DEPRECATED. This project was moved to a new repository. Visit https://github.com/DevExpress/dashboard-extensions to find an updated version.
Stars: ✭ 62 (-95.65%)
Mutual labels:  analytics, dashboard
Laravel Analytics
Analytics for the Laravel framework.
Stars: ✭ 91 (-93.61%)
Mutual labels:  analytics, dashboard

Dazzle
React Dazzle

Dashboards made easy in React JS

License NPM Version Travis Build Coverage via Codecov


Looking for maintainers https://github.com/Raathigesh/dazzle/issues/41

Dazzle is a library for building dashboards with React JS. Dazzle does not depend on any front-end libraries but it makes it easier to integrate with them.

Dazzle's goal is to be flexible and simple. Even though there are some UI components readily available out of the box, you have the complete control to override them as you wish with your own styles and layout.

Features

  • Grid based layout
  • Add/Remove widgets
  • Drag and drop widget re-ordering
  • UI framework agnostic
  • Simple yet flexible
  • Well documented (It's a feature! Don't you think?)

Installation

$ npm install react-dazzle --save

Dazzle me

Here is a demo. Widgets shows fake data though but they look so damn cool (At least for me).

Repository of the demo is available here.

Usage

import React, { Component } from 'react';
import Dashboard from 'react-dazzle';

// Your widget. Just another react component.
import CounterWidget from './widgets/CounterWidget';

// Default styles.
import 'react-dazzle/lib/style/style.css';

class App extends Component {
  constructor() {
    this.state = {      
      widgets: {
        WordCounter: {
          type: CounterWidget,
          title: 'Counter widget',
        }
      },
      layout: {
        rows: [{
          columns: [{
            className: 'col-md-12',
            widgets: [{key: 'WordCounter'}],
          }],
        }],
      }
    };
  }

  render() {
    return <Dashboard  widgets={this.state.widgets} layout={this.state.layout}  />
  }
}

Dazzle uses react-dnd. The default Dashboard component of Dazzle is wrapped by DragDropContext of react-dnd. So you may want to use react-dnd in your React component hierarchy upper than where you use the Dashboard component of Dazzle. If you do so then you can't let Dazzle creating the DragDropContext because you want to create it yourself upper in the React component hierarchy of your application. So forth please use the DashboardWithoutDndContext component of Dazzle and wrapped your own component with DragDropContext(HTML5Backend):

import React, { Component } from 'react';
import { DashboardWithoutDndContext } from 'react-dazzle';

// react-dnd
import { DragDropContext } from 'react-dnd';
import HTML5Backend from 'react-dnd-html5-backend';

// Your widget. Just another react component.
import CounterWidget from './widgets/CounterWidget';

// Default styles.
import 'react-dazzle/lib/style/style.css';

class App extends Component {
  constructor() {
    this.state = {      
      widgets: {
        WordCounter: {
          type: CounterWidget,
          title: 'Counter widget',
        }
      },
      layout: {
        rows: [{
          columns: [{
            className: 'col-md-12',
            widgets: [{key: 'WordCounter'}],
          }],
        }],
      }
    };
  }

  render() {
    return <DashboardWithoutDndContext  widgets={this.state.widgets} layout={this.state.layout}  />
  }
}

export default DragDropContext(HTML5Backend)(App);

API

Props Type Description Required
layout Object Layout of the dashboard. Yes
widgets Object Widgets that could be added to the dashboard. Yes
editable Boolean Indicates whether the dashboard is in editable mode. No
rowClass String CSS class name(s) that should be given to the row div element. Default is row. No
editableColumnClass String CSS class name(s) that should be used when a column is in editable mode. No
droppableColumnClass String CSS class name(s) that should be used when a widget is about to be dropped in a column. No
frameComponent Component Customized frame component which should be used instead of the default frame. More on custom frame component. No
addWidgetComponent Component Customized add widget component which should be used instead of the default AddWidget component. More on custom add widget component. No
addWidgetComponentText String Text that should be displayed in the Add Widget component. Default is Add Widget. No
onAdd(layout, rowIndex, columnIndex) function Will be called when user clicks the AddWidget component. No
onRemove(layout) function Will be called when a widget is removed. No
onMove(layout) function Will be called when a widget is moved. No

Providing widgets

widgets prop of the dashboard component takes an object. A sample widgets object would look like below. This object holds all the widgets that could be used in the dashboard.

{
  HelloWorldWidget: {
    type: HelloWorld,
    title: 'Hello World Title',
    props: {
      text: 'Hello Humans!'
    }
  },
  AnotherWidget: {
    type: AnotherWidget,
    title: 'Another Widget Title'
  }
 }
  • type property - Should be a React component function or class.
  • title property - Title of the widget that should be displayed on top of the widget.
  • props property - Props that should be provided to the widget.

Dashboard layout

The layout prop takes the current layout of the dashboard. Layout could have multiple rows and columns. A sample layout object with a single row and two columns would look like below.

{
  rows: [{
    columns: [{
      className: 'col-md-6 col-sm-6 col-xs-12',
      widgets: [{key: 'HelloWorldWidget'}]
    }, {
      className: 'col-md-6 col-sm-6 col-xs-12',
      widgets: [{key: 'AnotherWidget'}]
    }]
  }]
}
  • className property - CSS class(es) that should be given to the column in the grid layout. Above sample layout uses the classes from bootstrap library. You could use the classes of your CSS library.
  • widgets property - An array of widgets that should be rendered in that particular column. key property of the widgets array should be a key from the widgets object.

Edit mode

Setting editable prop to true will make the dashboard editable.

Add new widget

When user tries to add a new widget, the onAdd callback will be called. More info here on how to handle widget addition.

Remove a widget

When a widget is removed, onRemove method will be called and new layout (The layout with the widget removed) will be available as an argument of onRemove method. Set the provided layout again to the dashboard to complete the widget removal. The Sample repository has the this feature implemented.

Customization

Implementing custom WidgetFrame component

A frame is the component which surrounds a widget. A frame has the title and the close button. Dazzle provides a default frame out of the box. But if you want, you can customize the frame as you like. More info here.

Implementing custom AddWidget component

Dazzle also allows you to customize the Add Widget component which appears when you enter edit mode. More info here.

Issues

  • Improve drag and drop experience (#1)

License

MIT Β© Raathigeshan

Sponsor
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].