jsa-aerial / saite

Interactive document creation for exploratory graphics and visualizations. 咲いて (in bloom). Built on top of hanami vega/vega-lite library with CodeMirror and self hosted ClojureScript
MIT License
138 stars 4 forks source link
charting-application clojure clojurescript codemirror plotting reagent recom vega vega-lite visualization-tools

Clojars Project

saite

Data exploration, dashboards and interactive documents; with editor support (emacs, vim, sublime, and paredit), graphics and visualization; markdown; and LaTex. 咲いて (in bloom). Built on top of Hanami Vega/Vega-Lite library, CodeMiror, MathJax, amd Specter.

saite logo

Saite is a Clojure(Script) client/server application for the dynamic exploration of data and the creation and sharing of interactive documents and dashboards. Documents fully support creation of interactive visualizations, coupled with editors, markdown and LaTex. Dashboards can use any Re-com component for interactive widgets mixed with Vega/Vega-Lite visualizations. These documents and dashboards are saved as simple text and thus may be shared via any number of ways. End user creation of documents is highly declarative in form and nature. Dashboards may use of mixture of client side widgets and visualization and server side dataset processing for the final data to use.

Table of Contents

toc

Introduction

Saite is a Clojure(Script) client/server application for dynamic interactive data exploration, mixed server/client dashboard creation, and the creation of live shareable documents. Documents and dashboards fully support creation of interactive visualizations, coupled with editors, Re-com components, markdown and LaTex. These documents and dashboards are saved as simple text and thus may be shared via any number of ways. End user creation of documents is highly declarative in form and nature, while dashboards are a mix of declarative forms and reactive functions.

Vega-Lite (VGL) and/or Vega (VG) specifications. These specifications are declarative and completely specified by data (JSON maps). VGL compiles into the lower level grammar of VG which in turn compiles to a runtime format utilizting lower level runtime environments such as D3, HTML5 Canvas, and WebGL.

Visualizations are formed from parameterized templates which are recursively transformed into legal VGL or VG specifications. In Saite, creating and transforming these templates is generally done on the server side in typical REPL style development. Transformed templates (with their data or data source) are sent to one or more sessions (brower viewers) for rendering.

Saite also functions as an example application built with Hanami. As such it has all the capability of Hanami's template system and recursive transformation of parameterized templates.

Saite also uses the tab system provided by Hanami for automatic tab construction and updates, plus the application specific tab capabilities of that system. Further, Saite makes use of Hanami's visualization messaging system, in particular, the user-msg multimethod with implementations for application initialization, namespace creation, server side code execution, saving and reading of documents and code files, saving all visualizations, et.al.

Installation

Uberjar

There is a self installing/updating uberjar that makes a plug and play application of Saite. This is the quickest and easiest way to simply use Saite as a kind of "super notebook" or Clojure(Script) analog of RStudio. See aerosaite for more on this.

Library

To install, add the following to your project :dependencies:

[aerial.saite "1.1.0"]

Running

To get a full running system, you will first need to activate the server:

(ns aerial.saite.examples

  (:require
           ...
           [aerial.saite.core :as saite]
           ...))

(saite/start 3000) ; start the server on port 3000
;;;
;;; To stop the server:
;;; (saite/stop)

Once the server is running, in your browser, navigate to the port you used when starting it. The client will initialize and show the starting page. The default starting page is determined on the client via the header function aerial.saite.core/saite-header. The 'on page load' initialization code block is the final piece of code in aerial.saite.core.cljs.

Outline

[total new documentation being written]

An attempt at an outline for the documentation

Overview

Videos

Tutorials