Class JsFigure
java.lang.Object
io.deephaven.web.client.api.event.HasEventHandling
io.deephaven.web.client.api.lifecycle.HasLifecycle
io.deephaven.web.client.api.widget.plot.JsFigure
Provides the details for a figure.
The Deephaven JS API supports automatic lossless downsampling of time-series data, when that data is plotted in one
or more line series. Using a scatter plot or a X-axis of some type other than DateTime will prevent this feature from
being applied to a series. To enable this feature, invoke Axis.range(...) to specify the length in pixels of
the axis on the screen, and the range of values that are visible, and the server will use that width (and range, if
any) to reduce the number of points sent to the client.
Downsampling can also be controlled when calling either Figure.subscribe() or Series.subscribe() - both
can be given an optional dh.plot.DownsampleOptions argument. Presently only two valid values exist,
DEFAULT, and DISABLE, and if no argument is specified, DEFAULT is assumed. If there are more
than 30,000 rows in a table, downsampling will be encouraged - data will not load without calling
subscribe(DISABLE) or enabling downsampling via Axis.range(...). If there are more than 200,000 rows,
data will refuse to load without downsampling and subscribe(DISABLE) would have no effect.
Downsampled data looks like normal data, except that select items have been removed if they would be redundant in the
UI given the current configuration. Individual rows are intact, so that a tooltip or some other UI item is sure to be
accurate and consistent, and at least the highest and lowest value for each axis will be retained as well, to ensure
that the "important" values are visible.
Four events exist to help with interacting with downsampled data, all fired from the Figure instance itself.
First, downsampleneeded indicates that more than 30,000 rows would be fetched, and so specifying downsampling
is no longer optional - it must either be enabled (calling axis.range(...)), or disabled. If the figure is
configured for downsampling, when a change takes place that requires that the server perform some downsampling work,
the downsamplestarted event will first be fired, which can be used to present a brief loading message,
indicating to the user why data is not ready yet - when the server side process is complete,
downsamplefinished will be fired. These events will repeat when the range changes, such as when zooming,
panning, or resizing the figure. Finally, downsamplefailed indicates that something when wrong when
downsampling, or possibly that downsampling cannot be disabled due to the number of rows in the table.
At this time, not marked as a ServerObject, due to internal implementation issues which leave the door open to
client-created figures.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic class
static class
Tracks ranges that an axis has registered for.static class
static interface
static interface
class
class
static interface
static class
Nested classes/interfaces inherited from class io.deephaven.web.client.api.event.HasEventHandling
HasEventHandling.EventPair<T>
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final String
The data within this figure was updated.static final String
The data within this figure was updated.static final String
The data within this figure was updated.static final String
The data within this figure was updated.static final String
The data within this figure was updated.static final String
The data within this figure was updated.static final String
The data within this figure was updated.static final String
The data within this figure was updated.static final String
The data within this figure was updated.Fields inherited from class io.deephaven.web.client.api.event.HasEventHandling
INTERNAL_EVENT_RELEASED
-
Constructor Summary
ConstructorsConstructorDescriptionJsFigure
(JsFigure.FigureFetch fetch, JsFigure.FigureTableFetch tableFetch) JsFigure
(WorkerConnection connection, JsFigure.FigureFetch fetch) -
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
Close the figure, and clean up subscriptions.void
downsampleFailed
(String message, Set<JsSeries> series, double tableSize) void
downsampleNeeded
(String message, Set<JsSeries> series, double tableSize) void
JsChart[]
The charts to draw.int
getCols()
elemental2.core.JsArray<String>
int
getRows()
@JsNullable String
getTitle()
The title of the figure.double
void
Asks the figure to fire a reconnect event after its tables are ready.elemental2.promise.Promise<JsFigure>
refetch()
Indicate that a new session has been created on the server, and this object should re-create its corresponding server-side object if possible.int
registerTable
(JsTable table) void
Enable updates for all series in this figure.void
subscribe
(DownsampleOptions forceDisableDownsample) void
Disable updates for all series in this figure.void
updateDownsampleRange
(AxisDescriptor axis, Integer pixels, Long min, Long max) void
Verifies that the underlying tables have the columns the series are expected.Methods inherited from class io.deephaven.web.client.api.lifecycle.HasLifecycle
die, disconnected, nextReconnect
Methods inherited from class io.deephaven.web.client.api.event.HasEventHandling
addEventListener, addEventListenerOneShot, addEventListenerOneShot, failureHandled, fireCriticalEvent, fireCriticalEvent, fireEvent, fireEvent, fireEvent, hasListener, hasListeners, isSuppress, logPrefix, nextEvent, removeEventListener, suppressEvents, unsuppressEvents
-
Field Details
-
EVENT_UPDATED
The data within this figure was updated. event.detail is FigureUpdateEventData- See Also:
-
EVENT_SERIES_ADDED
The data within this figure was updated. event.detail is FigureUpdateEventData- See Also:
-
EVENT_DISCONNECT
The data within this figure was updated. event.detail is FigureUpdateEventData- See Also:
-
EVENT_RECONNECT
The data within this figure was updated. event.detail is FigureUpdateEventData- See Also:
-
EVENT_RECONNECTFAILED
The data within this figure was updated. event.detail is FigureUpdateEventData- See Also:
-
EVENT_DOWNSAMPLESTARTED
The data within this figure was updated. event.detail is FigureUpdateEventData- See Also:
-
EVENT_DOWNSAMPLEFINISHED
The data within this figure was updated. event.detail is FigureUpdateEventData- See Also:
-
EVENT_DOWNSAMPLEFAILED
The data within this figure was updated. event.detail is FigureUpdateEventData- See Also:
-
EVENT_DOWNSAMPLENEEDED
The data within this figure was updated. event.detail is FigureUpdateEventData- See Also:
-
-
Constructor Details
-
JsFigure
-
JsFigure
-
-
Method Details
-
refetch
Description copied from class:HasLifecycle
Indicate that a new session has been created on the server, and this object should re-create its corresponding server-side object if possible. Override this to implement custom behavior, being sure to call reconnect() when finished.- Overrides:
refetch
in classHasLifecycle
- Returns:
- a promise that will resolve when this object is reconnected
-
reconnect
@JsIgnore public void reconnect()Asks the figure to fire a reconnect event after its tables are ready.- Overrides:
reconnect
in classHasLifecycle
-
getTitle
The title of the figure.- Returns:
- String
-
getTitleFont
-
getTitleColor
-
getUpdateInterval
@JsProperty public double getUpdateInterval() -
getCols
@JsProperty public int getCols() -
getRows
@JsProperty public int getRows() -
getCharts
The charts to draw.- Returns:
- dh.plot.Chart
-
getErrors
-
subscribe
@JsIgnore public void subscribe()Enable updates for all series in this figure. -
subscribe
-
unsubscribe
public void unsubscribe()Disable updates for all series in this figure. -
downsampleNeeded
-
downsampleFailed
-
enqueueSubscriptionCheck
@JsIgnore public void enqueueSubscriptionCheck() -
verifyTables
@JsIgnore public void verifyTables()Verifies that the underlying tables have the columns the series are expected. Throws an FigureSourceException if not found -
close
public void close()Close the figure, and clean up subscriptions. -
registerTable
-
updateDownsampleRange
@JsIgnore public void updateDownsampleRange(AxisDescriptor axis, Integer pixels, Long min, Long max)
-