This library provides a wrapper, including a builder class and specific abstractions, to create Plotly.js plots from your Seaside canvas classes.
renderContentOn: html
| plotly |
html div id: 'plotContainer'.
plotly := html plotly: 'plotContainer'.
plotly
data:
{(PlotlyTrace scatter
name: 'Scatter series';
showlegend: true;
mode: 'markers';
x: (1 to: 10);
y: ((1 to: 10) collect: [ :each | 10 atRandom / 2 ]);
yourself).
(PlotlyTrace scatter
name: 'Line series';
showlegend: true;
x: (1 to: 10);
y: ((1 to: 10) collect: [ :each | 10 atRandom / 2 ]);
yourself)};
layout:
(PlotlyLayout new
title: (PlotlyText text: 'Simple plot');
width: 500 height: 300;
yourself).
plotly config beResponsive.
html document addLoadScript: plotly
renderContentOn: html
| plotly |
html div id: 'plotContainer'.
plotly := html plotly: 'plotContainer'.
plotly
data:
{(PlotlyTrace pie
hole: 0.4;
values: #(19 , 26 , 55);
labels: #('Residential' , 'Non-Residential' , 'Utility'))};
layout:
(PlotlyLayout new
title: (PlotlyText text: 'Donut Chart');
width: 500 height: 300;
yourself).
plotly config beResponsive.
html document addLoadScript: plotly
Metacello new
repository: 'github://emaringolo/seaside-plotlyjs/src';
baseline: 'Plotly';
load.
- Load
ENVY/Image Tonel support
feature - Load
ST: Server Smalltalk (SST) - Seaside
feature - Clone this repository to a local drive
| loader path |
path := (CfsPath named: 'path\to\repository'). "Path to the cloned repository"
loader := TonelLoader readFromPath: path.
loader
createsHookMethods: true;
beUnattended;
useGitVersion;
loadApplicationsForPackagesNamed: #('Seaside-Plotly-Core' 'Seaside-Plotly-Examples').
Given that the full Plotly.js library is heavy (~3.5MB mimized) and it is common to build a custom bundle with only the plots used, this wrapper doesn't provide a FileLibrary, and instead you have to link to the library, either by using a CDN or downloading it and linking to the file location.
updateRoot: anHtmlRoot
super updateRoot: anHtmlRoot.
anHtmlRoot script url: 'https://cdn.plot.ly/plotly-2.4.2.min.js'.
"..."
After installing the default group, you can access http://localhost:8080/plotly
to access an example component showing the different kind of plots, and the smalltalk code to produce them.
Add more examples about how to create other kind of plots (Surface, Mesh), and multiple plots, axis sharing, etc.