@deephaven/jsapi-types 1.0.0-dev0.35.2 → 1.0.0-dev0.35.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.d.ts +1715 -1715
  2. package/package.json +1 -1
package/dist/index.d.ts CHANGED
@@ -1,10 +1,6 @@
1
1
  // Minimum TypeScript Version: 4.3
2
2
  // Generated using com.vertispan.tsdefs.doclet.TsDoclet
3
3
 
4
- export interface IIterableResult<T> {
5
- value:T;
6
- done:boolean;
7
- }
8
4
  /**
9
5
  * This is part of EcmaScript 2015, documented here for completeness. It supports a single method, <b>next()</b>, which
10
6
  * returns an object with a <b>boolean</b> named <b>done</b> (true if there are no more items to return; false
@@ -15,6 +11,10 @@ export interface Iterator<T> {
15
11
  hasNext():boolean;
16
12
  next():IIterableResult<T>;
17
13
  }
14
+ export interface IIterableResult<T> {
15
+ value:T;
16
+ done:boolean;
17
+ }
18
18
  export namespace dh.storage {
19
19
 
20
20
  /**
@@ -117,62 +117,86 @@ export namespace dh.storage {
117
117
 
118
118
  export namespace dh {
119
119
 
120
+ export interface ColumnGroup {
121
+ get name():string|null;
122
+ get children():string[]|null;
123
+ get color():string|null;
124
+ }
120
125
  /**
121
- * Row implementation that also provides additional read-only properties. represents visible rows in the table,
122
- * but with additional properties to reflect the tree structure.
126
+ * Javascript wrapper for {@link io.deephaven.web.shared.data.ColumnStatistics} This class holds the results of a call to generate statistics on a
127
+ * table column.
123
128
  */
124
- export interface TreeRow extends ViewportRow {
129
+ export interface ColumnStatistics {
125
130
  /**
126
- * True if this node is currently expanded to show its children; false otherwise. Those children will be the
127
- * rows below this one with a greater depth than this one
128
- * @return boolean
131
+ * Gets the type of formatting that should be used for given statistic.
132
+ * <p>
133
+ * the format type for a statistic. A null return value means that the column formatting should be used.
134
+ * @param name - the display name of the statistic
135
+ * @return String
129
136
  */
130
- get isExpanded():boolean;
137
+ getType(name:string):string;
131
138
  /**
132
- * The number of levels above this node; zero for top level nodes. Generally used by the UI to indent the
133
- * row and its expand/collapse icon
134
- * @return int
139
+ * Gets a map with the name of each unique value as key and the count as the value. A map of each unique value's
140
+ * name to the count of how many times it occurred in the column. This map will be empty for tables containing more
141
+ * than 19 unique values.
142
+ * @return Map of String double
135
143
  */
136
- get depth():number;
144
+ get uniqueValues():Map<string, number>;
137
145
  /**
138
- * True if this node has children and can be expanded; false otherwise. Note that this value may change when
139
- * the table updates, depending on the table's configuration
140
- * @return boolean
146
+ * Gets a map with the display name of statistics as keys and the numeric stat as a value.
147
+ * <p>
148
+ * A map of each statistic's name to its value.
149
+ * @return Map of String and Object
141
150
  */
142
- get hasChildren():boolean;
143
- get index():LongWrapper;
151
+ get statisticsMap():Map<string, object>;
144
152
  }
145
153
  /**
146
- * Represents the contents of a single widget data message from the server, with a binary data paylod and exported
147
- * objects. Implemented both by Widget itself and by the `event.details` when data is received by the client.
154
+ * Wrap LocalDate values for use in JS. Provides text formatting for display and access to the underlying value.
155
+ */
156
+ export interface LocalDateWrapper {
157
+ valueOf():string;
158
+ getYear():number;
159
+ getMonthValue():number;
160
+ getDayOfMonth():number;
161
+ toString():string;
162
+ }
163
+ /**
164
+ * Event data, describing the indexes that were added/removed/updated, and providing access to Rows (and thus data
165
+ * in columns) either by index, or scanning the complete present index.
148
166
  *
149
- * Terminology note: the name of this type should probably use "Data" instead of "Message", and the methods should use
150
- * "payload" rather than "data" to match other platforms and the protobuf itself. These names are instead used for
151
- * backwards compatibility and to better follow JS expectations.
167
+ * This class supports two ways of reading the table - checking the changes made since the last update, and reading
168
+ * all data currently in the table. While it is more expensive to always iterate over every single row in the table,
169
+ * it may in some cases actually be cheaper than maintaining state separately and updating only the changes, though
170
+ * both options should be considered.
171
+ *
172
+ * The RangeSet objects allow iterating over the LongWrapper indexes in the table. Note that these "indexes" are not
173
+ * necessarily contiguous and may be negative, and represent some internal state on the server, allowing it to keep
174
+ * track of data efficiently. Those LongWrapper objects can be passed to the various methods on this instance to
175
+ * read specific rows or cells out of the table.
152
176
  */
153
- export interface WidgetMessageDetails {
154
- /**
155
- * Returns the data from this message as a base64-encoded string.
156
- */
157
- getDataAsBase64():string;
177
+ export interface SubscriptionTableData extends TableData {
178
+ get fullIndex():RangeSet;
158
179
  /**
159
- * Returns the data from this message as a Uint8Array.
180
+ * The ordered set of row indexes removed since the last update
181
+ * @return dh.RangeSet
160
182
  */
161
- getDataAsU8():Uint8Array;
183
+ get removed():RangeSet;
162
184
  /**
163
- * Returns the data from this message as a utf-8 string.
185
+ * The ordered set of row indexes added since the last update
186
+ * @return dh.RangeSet
164
187
  */
165
- getDataAsString():string;
188
+ get added():RangeSet;
189
+ get columns():Array<Column>;
166
190
  /**
167
- * Returns an array of exported objects sent from the server. The plugin implementation is now responsible for these
168
- * objects, and should close them when no longer needed.
191
+ * The ordered set of row indexes updated since the last update
192
+ * @return dh.RangeSet
169
193
  */
170
- get exportedObjects():WidgetExportedObject[];
194
+ get modified():RangeSet;
195
+ get rows():Array<Row>;
171
196
  }
172
- export interface Row {
173
- get(column:Column):any;
174
- getFormat(column:Column):Format;
175
- get index():LongWrapper;
197
+ export interface RefreshToken {
198
+ get bytes():string;
199
+ get expiry():number;
176
200
  }
177
201
  export interface LayoutHints {
178
202
  readonly searchDisplayMode?:SearchDisplayModeType|null;
@@ -185,26 +209,93 @@ export namespace dh {
185
209
  get backColumns():string[]|null;
186
210
  }
187
211
  /**
188
- * Contains data in the current viewport. Also contains the offset to this data, so that the actual row number may be
189
- * determined. Do not assume that the first row in `rows` is the first visible row, because extra rows may be provided
190
- * for easier scrolling without going to the server.
212
+ * Represents a table which can be joined to another table. Current implementations are {@link dh.Table} and
213
+ * {@link dh.TotalsTable}.
191
214
  */
192
- export interface ViewportData extends TableData {
215
+ export interface JoinableTable {
216
+ freeze():Promise<Table>;
217
+ snapshot(baseTable:Table, doInitialSnapshot?:boolean, stampColumns?:string[]):Promise<Table>;
193
218
  /**
194
- * The index of the first returned row
195
- * @return double
219
+ * Joins this table to the provided table, using one of the specified join types:
220
+ * <ul>
221
+ * <li><code>AJ</code>, <code>ReverseAJ</code> (or <code>RAJ</code>) - inexact timeseries joins, based on the
222
+ * provided matching rule.</li>
223
+ * <li><code>CROSS_JOIN</code> (or <code>Join</code>) - cross join of all rows that have matching values in both
224
+ * tables.</li>
225
+ * <li><code>EXACT_JOIN</code> (or <code>ExactJoin</code> - matches values in exactly one row in the right table,
226
+ * with errors if there is not exactly one.</li>
227
+ * <li><code>NATURAL_JOIN</code> (or <code>Natural</code> - matches values in at most one row in the right table,
228
+ * with nulls if there is no match or errors if there are multiple matches.</li>
229
+ * </ul>
230
+ *
231
+ * Note that <code>Left</code> join is not supported here, unlike DHE.
232
+ * <p>
233
+ * See the <a href="https://deephaven.io/core/docs/conceptual/choose-joins/">Choose a join method</a> document for
234
+ * more guidance on picking a join operation.
235
+ * @deprecated Instead, call the specific method for the join type.
236
+ * @param joinType - The type of join to perform, see the list above.
237
+ * @param rightTable - The table to match to values in this table
238
+ * @param columnsToMatch - Columns that should match
239
+ * @param columnsToAdd - Columns from the right table to add to the result - empty/null/absent to add all columns
240
+ * @param asOfMatchRule - If joinType is AJ/RAJ/ReverseAJ, the match rule to use
241
+ * @return a promise that will resolve to the joined table
196
242
  */
197
- get offset():number;
243
+ join(joinType:string, rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null, asOfMatchRule?:string|undefined|null):Promise<Table>;
198
244
  /**
199
- * A list of columns describing the data types in each row
200
- * @return {@link dh.Column} array.
245
+ * Performs an inexact timeseries join, where rows in this table will have columns added from the closest matching
246
+ * row from the right table.
247
+ * <p>
248
+ * The `asOfMatchRule` value can be one of:
249
+ * <ul>
250
+ * <li>LESS_THAN_EQUAL</li>
251
+ * <li>LESS_THAN</li>
252
+ * <li>GREATER_THAN_EQUAL</li>
253
+ * <li>GREATER_THAN</li>
254
+ * </ul>
255
+ * @param rightTable - the table to match to values in this table
256
+ * @param columnsToMatch - the columns that should match, according to the asOfMatchRole
257
+ * @param columnsToAdd - columns from the right table to add to the resulting table, empty/null/absent to add all
258
+ * columns
259
+ * @param asOfMatchRule - the match rule to use, see above
260
+ * @return a promise that will resolve to the joined table
201
261
  */
202
- get columns():Array<Column>;
262
+ asOfJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null, asOfMatchRule?:string|undefined|null):Promise<Table>;
203
263
  /**
204
- * An array of rows of data
205
- * @return {@link dh.ViewportRow} array.
264
+ * a promise that will be resolved with the newly created table holding the results of the specified cross join
265
+ * operation. The <b>columnsToAdd</b> parameter is optional, not specifying it will result in all columns from the
266
+ * right table being added to the output. The <b>reserveBits</b> optional parameter lets the client control how the
267
+ * key space is distributed between the rows in the two tables, see the Java <b>Table</b> class for details.
268
+ * @param rightTable - the table to match to values in this table
269
+ * @param columnsToMatch - the columns that should match exactly
270
+ * @param columnsToAdd - columns from the right table to add to the resulting table, empty/null/absent to add all
271
+ * columns
272
+ * @param reserveBits - the number of bits of key-space to initially reserve per group, null/absent will let the
273
+ * server select a value
274
+ * @return a promise that will resolve to the joined table
206
275
  */
207
- get rows():Array<ViewportRow>;
276
+ crossJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null, reserveBits?:number|undefined|null):Promise<Table>;
277
+ /**
278
+ * a promise that will be resolved with the newly created table holding the results of the specified exact join
279
+ * operation. The `columnsToAdd` parameter is optional, not specifying it will result in all columns from the right
280
+ * table being added to the output.
281
+ * @param rightTable - the table to match to values in this table
282
+ * @param columnsToMatch - the columns that should match exactly
283
+ * @param columnsToAdd - columns from the right table to add to the resulting table, empty/null/absent to add all
284
+ * columns
285
+ * @return a promise that will resolve to the joined table
286
+ */
287
+ exactJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null):Promise<Table>;
288
+ /**
289
+ * a promise that will be resolved with the newly created table holding the results of the specified natural join
290
+ * operation. The <b>columnsToAdd</b> parameter is optional, not specifying it will result in all columns from the
291
+ * right table being added to the output.
292
+ * @param rightTable - the table to match to values in this table
293
+ * @param columnsToMatch - the columns that should match exactly
294
+ * @param columnsToAdd - columns from the right table to add to the resulting table, empty/null/absent to add all
295
+ * columns
296
+ * @return a promise that will resolve to the joined table
297
+ */
298
+ naturalJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null):Promise<Table>;
208
299
  }
209
300
  /**
210
301
  * Behaves like a Table, but doesn't expose all of its API for changing the internal state. Instead, state is driven by
@@ -336,225 +427,142 @@ export namespace dh {
336
427
  get isRefreshing():boolean;
337
428
  }
338
429
  /**
339
- * Common interface for various ways of accessing table data and formatting.
340
- *
341
- * Java note: this interface contains some extra overloads that aren't available in JS. Implementations are expected to
342
- * implement only abstract methods, and default methods present in this interface will dispatch accordingly.
343
- */
344
- export interface TableData {
345
- get(index:LongWrapper|number):Row;
346
- getData(index:LongWrapper|number, column:Column):any;
347
- getFormat(index:LongWrapper|number, column:Column):Format;
348
- get columns():Array<Column>;
349
- get rows():Array<Row>;
350
- }
351
- /**
352
- * Encapsulates event handling around table subscriptions by "cheating" and wrapping up a JsTable instance to do the
353
- * real dirty work. This allows a viewport to stay open on the old table if desired, while this one remains open.
354
- * <p>
355
- * As this just wraps a JsTable (and thus a CTS), it holds its own flattened, pUT'd handle to get deltas from the
356
- * server. The setViewport method can be used to adjust this table instead of creating a new one.
357
- * <p>
358
- * Existing methods on JsTable like setViewport and getViewportData are intended to proxy to this, which then will talk
359
- * to the underlying handle and accumulated data.
360
- * <p>
361
- * As long as we keep the existing methods/events on JsTable, close() is not required if no other method is called, with
362
- * the idea then that the caller did not actually use this type. This means that for every exported method (which then
363
- * will mark the instance of "actually being used, please don't automatically close me"), there must be an internal
364
- * version called by those existing JsTable method, which will allow this instance to be cleaned up once the JsTable
365
- * deems it no longer in use.
366
- * <p>
367
- * Note that if the caller does close an instance, this shuts down the JsTable's use of this (while the converse is not
368
- * true), providing a way to stop the server from streaming updates to the client.
369
- *
370
- * This object serves as a "handle" to a subscription, allowing it to be acted on directly or canceled outright. If you
371
- * retain an instance of this, you have two choices - either only use it to call `close()` on it to stop the table's
372
- * viewport without creating a new one, or listen directly to this object instead of the table for data events, and
373
- * always call `close()` when finished. Calling any method on this object other than close() will result in it
374
- * continuing to live on after `setViewport` is called on the original table, or after the table is modified.
430
+ * Represents a server-side object that may not yet have been fetched by the client. When this object will no longer be
431
+ * used, if {@link fetch} is not called on this object, then {@link close} must be to ensure server-side resources
432
+ * are correctly freed.
375
433
  */
376
- export interface TableViewportSubscription extends HasEventHandling {
434
+ export interface WidgetExportedObject {
377
435
  /**
378
- * Changes the rows and columns set on this viewport. This cannot be used to change the update interval.
379
- * @param firstRow -
380
- * @param lastRow -
381
- * @param columns -
382
- * @param updateIntervalMs -
436
+ * Returns the type of this export, typically one of {@link dh.VariableType}, but may also include plugin types. If
437
+ * null, this object cannot be fetched, but can be passed to the server, such as via
438
+ * {@link Widget.sendMessage}.
439
+ * @return the string type of this server-side object, or null.
383
440
  */
384
- setViewport(firstRow:number, lastRow:number, columns?:Column[]|undefined|null, updateIntervalMs?:number|undefined|null):void;
441
+ readonly type?:string|null;
442
+
385
443
  /**
386
- * Stops this viewport from running, stopping all events on itself and on the table that created it.
444
+ * Exports another copy of this reference, allowing it to be fetched separately. Results in rejection if the ticket
445
+ * was already closed (either by calling {@link WidgetExportedObject.close} or closing the object returned from {@link WidgetExportedObject.fetch}).
446
+ * @return a promise returning a reexported copy of this object, still referencing the same server-side object.
447
+ */
448
+ reexport():Promise<WidgetExportedObject>;
449
+ /**
450
+ * Returns a promise that will fetch the object represented by this reference. Multiple calls to this will return
451
+ * the same instance.
452
+ * @return a promise that will resolve to a client side object that represents the reference on the server.
453
+ */
454
+ fetch():Promise<any>;
455
+ /**
456
+ * Releases the server-side resources associated with this object, regardless of whether other client-side objects
457
+ * exist that also use that object. Should not be called after fetch() has been invoked.
387
458
  */
388
459
  close():void;
460
+ }
461
+ export interface WorkerHeapInfo {
389
462
  /**
390
- * Gets the data currently visible in this viewport
391
- * @return Promise of {@link dh.TableData}.
463
+ * Total heap size available for this worker.
392
464
  */
393
- getViewportData():Promise<TableData>;
394
- snapshot(rows:RangeSet, columns:Column[]):Promise<TableData>;
465
+ get totalHeapSize():number;
466
+ get freeMemory():number;
467
+ get maximumHeapSize():number;
395
468
  }
396
469
  /**
397
- * This object may be pooled internally or discarded and not updated. Do not retain references to it.
470
+ * Represents the contents of a single widget data message from the server, with a binary data paylod and exported
471
+ * objects. Implemented both by Widget itself and by the `event.details` when data is received by the client.
472
+ *
473
+ * Terminology note: the name of this type should probably use "Data" instead of "Message", and the methods should use
474
+ * "payload" rather than "data" to match other platforms and the protobuf itself. These names are instead used for
475
+ * backwards compatibility and to better follow JS expectations.
398
476
  */
399
- export interface Format {
477
+ export interface WidgetMessageDetails {
400
478
  /**
401
- * The format string to apply to the value of this cell.
402
- * @return String
479
+ * Returns the data from this message as a base64-encoded string.
403
480
  */
404
- readonly formatString?:string|null;
481
+ getDataAsBase64():string;
405
482
  /**
406
- * Color to apply to the cell's background, in <b>#rrggbb</b> format.
407
- * @return String
483
+ * Returns the data from this message as a Uint8Array.
408
484
  */
409
- readonly backgroundColor?:string|null;
485
+ getDataAsU8():Uint8Array;
410
486
  /**
411
- * Color to apply to the text, in <b>#rrggbb</b> format.
412
- * @return String
487
+ * Returns the data from this message as a utf-8 string.
413
488
  */
414
- readonly color?:string|null;
489
+ getDataAsString():string;
415
490
  /**
416
- *
417
- * @deprecated Prefer formatString. Number format string to apply to the value in this cell.
491
+ * Returns an array of exported objects sent from the server. The plugin implementation is now responsible for these
492
+ * objects, and should close them when no longer needed.
418
493
  */
419
- readonly numberFormat?:string|null;
420
- }
421
- /**
422
- * Wrap LocalTime values for use in JS. Provides text formatting for display and access to the underlying value.
423
- */
424
- export interface LocalTimeWrapper {
425
- valueOf():string;
426
- getHour():number;
427
- getMinute():number;
428
- getSecond():number;
429
- getNano():number;
430
- toString():string;
494
+ get exportedObjects():WidgetExportedObject[];
431
495
  }
432
496
  /**
433
- * Javascript wrapper for {@link io.deephaven.web.shared.data.ColumnStatistics} This class holds the results of a call to generate statistics on a
434
- * table column.
497
+ * Contains data in the current viewport. Also contains the offset to this data, so that the actual row number may be
498
+ * determined. Do not assume that the first row in `rows` is the first visible row, because extra rows may be provided
499
+ * for easier scrolling without going to the server.
435
500
  */
436
- export interface ColumnStatistics {
437
- /**
438
- * Gets the type of formatting that should be used for given statistic.
439
- * <p>
440
- * the format type for a statistic. A null return value means that the column formatting should be used.
441
- * @param name - the display name of the statistic
442
- * @return String
443
- */
444
- getType(name:string):string;
501
+ export interface ViewportData extends TableData {
445
502
  /**
446
- * Gets a map with the name of each unique value as key and the count as the value. A map of each unique value's
447
- * name to the count of how many times it occurred in the column. This map will be empty for tables containing more
448
- * than 19 unique values.
449
- * @return Map of String double
503
+ * The index of the first returned row
504
+ * @return double
450
505
  */
451
- get uniqueValues():Map<string, number>;
506
+ get offset():number;
452
507
  /**
453
- * Gets a map with the display name of statistics as keys and the numeric stat as a value.
454
- * <p>
455
- * A map of each statistic's name to its value.
456
- * @return Map of String and Object
508
+ * A list of columns describing the data types in each row
509
+ * @return {@link dh.Column} array.
457
510
  */
458
- get statisticsMap():Map<string, object>;
459
- }
460
- export interface ColumnGroup {
461
- get name():string|null;
462
- get children():string[]|null;
463
- get color():string|null;
464
- }
465
- export interface WorkerHeapInfo {
511
+ get columns():Array<Column>;
466
512
  /**
467
- * Total heap size available for this worker.
513
+ * An array of rows of data
514
+ * @return {@link dh.ViewportRow} array.
468
515
  */
469
- get totalHeapSize():number;
470
- get freeMemory():number;
471
- get maximumHeapSize():number;
472
- }
473
- export interface RefreshToken {
474
- get bytes():string;
475
- get expiry():number;
516
+ get rows():Array<ViewportRow>;
476
517
  }
477
518
  /**
478
- * Wrap LocalDate values for use in JS. Provides text formatting for display and access to the underlying value.
519
+ * Common interface for various ways of accessing table data and formatting.
520
+ *
521
+ * Java note: this interface contains some extra overloads that aren't available in JS. Implementations are expected to
522
+ * implement only abstract methods, and default methods present in this interface will dispatch accordingly.
479
523
  */
480
- export interface LocalDateWrapper {
481
- valueOf():string;
482
- getYear():number;
483
- getMonthValue():number;
484
- getDayOfMonth():number;
485
- toString():string;
524
+ export interface TableData {
525
+ get(index:LongWrapper|number):Row;
526
+ getData(index:LongWrapper|number, column:Column):any;
527
+ getFormat(index:LongWrapper|number, column:Column):Format;
528
+ get columns():Array<Column>;
529
+ get rows():Array<Row>;
486
530
  }
487
531
  /**
488
- * Represents a server-side object that may not yet have been fetched by the client. When this object will no longer be
489
- * used, if {@link fetch} is not called on this object, then {@link close} must be to ensure server-side resources
490
- * are correctly freed.
532
+ * This object may be pooled internally or discarded and not updated. Do not retain references to it.
491
533
  */
492
- export interface WidgetExportedObject {
534
+ export interface Format {
493
535
  /**
494
- * Returns the type of this export, typically one of {@link dh.VariableType}, but may also include plugin types. If
495
- * null, this object cannot be fetched, but can be passed to the server, such as via
496
- * {@link Widget.sendMessage}.
497
- * @return the string type of this server-side object, or null.
536
+ * The format string to apply to the value of this cell.
537
+ * @return String
498
538
  */
499
- readonly type?:string|null;
500
-
539
+ readonly formatString?:string|null;
501
540
  /**
502
- * Exports another copy of this reference, allowing it to be fetched separately. Results in rejection if the ticket
503
- * was already closed (either by calling {@link WidgetExportedObject.close} or closing the object returned from {@link WidgetExportedObject.fetch}).
504
- * @return a promise returning a reexported copy of this object, still referencing the same server-side object.
541
+ * Color to apply to the cell's background, in <b>#rrggbb</b> format.
542
+ * @return String
505
543
  */
506
- reexport():Promise<WidgetExportedObject>;
544
+ readonly backgroundColor?:string|null;
507
545
  /**
508
- * Returns a promise that will fetch the object represented by this reference. Multiple calls to this will return
509
- * the same instance.
510
- * @return a promise that will resolve to a client side object that represents the reference on the server.
546
+ * Color to apply to the text, in <b>#rrggbb</b> format.
547
+ * @return String
511
548
  */
512
- fetch():Promise<any>;
549
+ readonly color?:string|null;
513
550
  /**
514
- * Releases the server-side resources associated with this object, regardless of whether other client-side objects
515
- * exist that also use that object. Should not be called after fetch() has been invoked.
551
+ *
552
+ * @deprecated Prefer formatString. Number format string to apply to the value in this cell.
516
553
  */
517
- close():void;
554
+ readonly numberFormat?:string|null;
555
+ }
556
+ export interface Row {
557
+ get(column:Column):any;
558
+ getFormat(column:Column):Format;
559
+ get index():LongWrapper;
518
560
  }
519
561
  export interface TreeViewportData extends TableData {
520
562
  get offset():number;
521
563
  get columns():Array<Column>;
522
564
  get rows():Array<TreeRow>;
523
565
  }
524
- /**
525
- * Event data, describing the indexes that were added/removed/updated, and providing access to Rows (and thus data
526
- * in columns) either by index, or scanning the complete present index.
527
- *
528
- * This class supports two ways of reading the table - checking the changes made since the last update, and reading
529
- * all data currently in the table. While it is more expensive to always iterate over every single row in the table,
530
- * it may in some cases actually be cheaper than maintaining state separately and updating only the changes, though
531
- * both options should be considered.
532
- *
533
- * The RangeSet objects allow iterating over the LongWrapper indexes in the table. Note that these "indexes" are not
534
- * necessarily contiguous and may be negative, and represent some internal state on the server, allowing it to keep
535
- * track of data efficiently. Those LongWrapper objects can be passed to the various methods on this instance to
536
- * read specific rows or cells out of the table.
537
- */
538
- export interface SubscriptionTableData extends TableData {
539
- get fullIndex():RangeSet;
540
- /**
541
- * The ordered set of row indexes removed since the last update
542
- * @return dh.RangeSet
543
- */
544
- get removed():RangeSet;
545
- /**
546
- * The ordered set of row indexes added since the last update
547
- * @return dh.RangeSet
548
- */
549
- get added():RangeSet;
550
- get columns():Array<Column>;
551
- /**
552
- * The ordered set of row indexes updated since the last update
553
- * @return dh.RangeSet
554
- */
555
- get modified():RangeSet;
556
- get rows():Array<Row>;
557
- }
558
566
  export interface HasEventHandling {
559
567
  /**
560
568
  * Listen for events on this object.
@@ -583,337 +591,183 @@ export namespace dh {
583
591
  get index():LongWrapper;
584
592
  }
585
593
  /**
586
- * Represents a table which can be joined to another table. Current implementations are {@link dh.Table} and
587
- * {@link dh.TotalsTable}.
594
+ * Encapsulates event handling around table subscriptions by "cheating" and wrapping up a JsTable instance to do the
595
+ * real dirty work. This allows a viewport to stay open on the old table if desired, while this one remains open.
596
+ * <p>
597
+ * As this just wraps a JsTable (and thus a CTS), it holds its own flattened, pUT'd handle to get deltas from the
598
+ * server. The setViewport method can be used to adjust this table instead of creating a new one.
599
+ * <p>
600
+ * Existing methods on JsTable like setViewport and getViewportData are intended to proxy to this, which then will talk
601
+ * to the underlying handle and accumulated data.
602
+ * <p>
603
+ * As long as we keep the existing methods/events on JsTable, close() is not required if no other method is called, with
604
+ * the idea then that the caller did not actually use this type. This means that for every exported method (which then
605
+ * will mark the instance of "actually being used, please don't automatically close me"), there must be an internal
606
+ * version called by those existing JsTable method, which will allow this instance to be cleaned up once the JsTable
607
+ * deems it no longer in use.
608
+ * <p>
609
+ * Note that if the caller does close an instance, this shuts down the JsTable's use of this (while the converse is not
610
+ * true), providing a way to stop the server from streaming updates to the client.
611
+ *
612
+ * This object serves as a "handle" to a subscription, allowing it to be acted on directly or canceled outright. If you
613
+ * retain an instance of this, you have two choices - either only use it to call `close()` on it to stop the table's
614
+ * viewport without creating a new one, or listen directly to this object instead of the table for data events, and
615
+ * always call `close()` when finished. Calling any method on this object other than close() will result in it
616
+ * continuing to live on after `setViewport` is called on the original table, or after the table is modified.
588
617
  */
589
- export interface JoinableTable {
590
- freeze():Promise<Table>;
591
- snapshot(baseTable:Table, doInitialSnapshot?:boolean, stampColumns?:string[]):Promise<Table>;
618
+ export interface TableViewportSubscription extends HasEventHandling {
592
619
  /**
593
- * Joins this table to the provided table, using one of the specified join types:
594
- * <ul>
595
- * <li><code>AJ</code>, <code>ReverseAJ</code> (or <code>RAJ</code>) - inexact timeseries joins, based on the
596
- * provided matching rule.</li>
597
- * <li><code>CROSS_JOIN</code> (or <code>Join</code>) - cross join of all rows that have matching values in both
598
- * tables.</li>
599
- * <li><code>EXACT_JOIN</code> (or <code>ExactJoin</code> - matches values in exactly one row in the right table,
600
- * with errors if there is not exactly one.</li>
601
- * <li><code>NATURAL_JOIN</code> (or <code>Natural</code> - matches values in at most one row in the right table,
602
- * with nulls if there is no match or errors if there are multiple matches.</li>
603
- * </ul>
604
- *
605
- * Note that <code>Left</code> join is not supported here, unlike DHE.
606
- * <p>
607
- * See the <a href="https://deephaven.io/core/docs/conceptual/choose-joins/">Choose a join method</a> document for
608
- * more guidance on picking a join operation.
609
- * @deprecated Instead, call the specific method for the join type.
610
- * @param joinType - The type of join to perform, see the list above.
611
- * @param rightTable - The table to match to values in this table
612
- * @param columnsToMatch - Columns that should match
613
- * @param columnsToAdd - Columns from the right table to add to the result - empty/null/absent to add all columns
614
- * @param asOfMatchRule - If joinType is AJ/RAJ/ReverseAJ, the match rule to use
615
- * @return a promise that will resolve to the joined table
616
- */
617
- join(joinType:string, rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null, asOfMatchRule?:string|undefined|null):Promise<Table>;
620
+ * Changes the rows and columns set on this viewport. This cannot be used to change the update interval.
621
+ * @param firstRow -
622
+ * @param lastRow -
623
+ * @param columns -
624
+ * @param updateIntervalMs -
625
+ */
626
+ setViewport(firstRow:number, lastRow:number, columns?:Column[]|undefined|null, updateIntervalMs?:number|undefined|null):void;
618
627
  /**
619
- * Performs an inexact timeseries join, where rows in this table will have columns added from the closest matching
620
- * row from the right table.
621
- * <p>
622
- * The `asOfMatchRule` value can be one of:
623
- * <ul>
624
- * <li>LESS_THAN_EQUAL</li>
625
- * <li>LESS_THAN</li>
626
- * <li>GREATER_THAN_EQUAL</li>
627
- * <li>GREATER_THAN</li>
628
- * </ul>
629
- * @param rightTable - the table to match to values in this table
630
- * @param columnsToMatch - the columns that should match, according to the asOfMatchRole
631
- * @param columnsToAdd - columns from the right table to add to the resulting table, empty/null/absent to add all
632
- * columns
633
- * @param asOfMatchRule - the match rule to use, see above
634
- * @return a promise that will resolve to the joined table
628
+ * Stops this viewport from running, stopping all events on itself and on the table that created it.
635
629
  */
636
- asOfJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null, asOfMatchRule?:string|undefined|null):Promise<Table>;
630
+ close():void;
637
631
  /**
638
- * a promise that will be resolved with the newly created table holding the results of the specified cross join
639
- * operation. The <b>columnsToAdd</b> parameter is optional, not specifying it will result in all columns from the
640
- * right table being added to the output. The <b>reserveBits</b> optional parameter lets the client control how the
641
- * key space is distributed between the rows in the two tables, see the Java <b>Table</b> class for details.
642
- * @param rightTable - the table to match to values in this table
643
- * @param columnsToMatch - the columns that should match exactly
644
- * @param columnsToAdd - columns from the right table to add to the resulting table, empty/null/absent to add all
645
- * columns
646
- * @param reserveBits - the number of bits of key-space to initially reserve per group, null/absent will let the
647
- * server select a value
648
- * @return a promise that will resolve to the joined table
632
+ * Gets the data currently visible in this viewport
633
+ * @return Promise of {@link dh.TableData}.
649
634
  */
650
- crossJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null, reserveBits?:number|undefined|null):Promise<Table>;
635
+ getViewportData():Promise<TableData>;
636
+ snapshot(rows:RangeSet, columns:Column[]):Promise<TableData>;
637
+ }
638
+ /**
639
+ * Row implementation that also provides additional read-only properties. represents visible rows in the table,
640
+ * but with additional properties to reflect the tree structure.
641
+ */
642
+ export interface TreeRow extends ViewportRow {
651
643
  /**
652
- * a promise that will be resolved with the newly created table holding the results of the specified exact join
653
- * operation. The `columnsToAdd` parameter is optional, not specifying it will result in all columns from the right
654
- * table being added to the output.
655
- * @param rightTable - the table to match to values in this table
656
- * @param columnsToMatch - the columns that should match exactly
657
- * @param columnsToAdd - columns from the right table to add to the resulting table, empty/null/absent to add all
658
- * columns
659
- * @return a promise that will resolve to the joined table
644
+ * True if this node is currently expanded to show its children; false otherwise. Those children will be the
645
+ * rows below this one with a greater depth than this one
646
+ * @return boolean
660
647
  */
661
- exactJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null):Promise<Table>;
648
+ get isExpanded():boolean;
662
649
  /**
663
- * a promise that will be resolved with the newly created table holding the results of the specified natural join
664
- * operation. The <b>columnsToAdd</b> parameter is optional, not specifying it will result in all columns from the
665
- * right table being added to the output.
666
- * @param rightTable - the table to match to values in this table
667
- * @param columnsToMatch - the columns that should match exactly
668
- * @param columnsToAdd - columns from the right table to add to the resulting table, empty/null/absent to add all
669
- * columns
670
- * @return a promise that will resolve to the joined table
650
+ * The number of levels above this node; zero for top level nodes. Generally used by the UI to indent the
651
+ * row and its expand/collapse icon
652
+ * @return int
671
653
  */
672
- naturalJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null):Promise<Table>;
654
+ get depth():number;
655
+ /**
656
+ * True if this node has children and can be expanded; false otherwise. Note that this value may change when
657
+ * the table updates, depending on the table's configuration
658
+ * @return boolean
659
+ */
660
+ get hasChildren():boolean;
661
+ get index():LongWrapper;
673
662
  }
674
-
675
663
  /**
676
- * Event fired when a command is issued from the client.
664
+ * Wrap LocalTime values for use in JS. Provides text formatting for display and access to the underlying value.
677
665
  */
678
- export class CommandInfo {
679
- constructor(code:string, result:Promise<dh.ide.CommandResult>);
680
-
681
- get result():Promise<dh.ide.CommandResult>;
682
- get code():string;
666
+ export interface LocalTimeWrapper {
667
+ valueOf():string;
668
+ getHour():number;
669
+ getMinute():number;
670
+ getSecond():number;
671
+ getNano():number;
672
+ toString():string;
683
673
  }
684
674
 
685
675
  /**
686
- * Deprecated for use in Deephaven Core.
687
- * @deprecated
676
+ * Describes how a Totals Table will be generated from its parent table. Each table has a default (which may be null)
677
+ * indicating how that table was configured when it was declared, and each Totals Table has a similar property
678
+ * describing how it was created. Both the <b>Table.getTotalsTable</b> and <b>Table.getGrandTotalsTable</b> methods take
679
+ * this config as an optional parameter - without it, the table's default will be used, or if null, a default instance
680
+ * of <b>TotalsTableConfig</b> will be supplied.
681
+ *
682
+ * This class has a no-arg constructor, allowing an instance to be made with the default values provided. However, any
683
+ * JS object can be passed in to the methods which accept instances of this type, provided their values adhere to the
684
+ * expected formats.
688
685
  */
689
- export class Client {
690
- static readonly EVENT_REQUEST_FAILED:string;
691
- static readonly EVENT_REQUEST_STARTED:string;
692
- static readonly EVENT_REQUEST_SUCCEEDED:string;
693
-
694
- constructor();
695
- }
696
-
697
- export class Ide {
698
- constructor();
699
-
686
+ export class TotalsTableConfig {
700
687
  /**
701
688
  * @deprecated
702
689
  */
703
- getExistingSession(websocketUrl:string, authToken:string, serviceId:string, language:string):Promise<IdeSession>;
690
+ static readonly COUNT:string;
704
691
  /**
705
692
  * @deprecated
706
693
  */
707
- static getExistingSession(websocketUrl:string, authToken:string, serviceId:string, language:string):Promise<IdeSession>;
708
- }
709
-
710
- export class CustomColumn {
711
- static readonly TYPE_FORMAT_COLOR:string;
712
- static readonly TYPE_FORMAT_NUMBER:string;
713
- static readonly TYPE_FORMAT_DATE:string;
714
- static readonly TYPE_NEW:string;
715
-
716
- protected constructor();
717
-
718
- valueOf():string;
719
- toString():string;
694
+ static readonly MIN:string;
720
695
  /**
721
- * The expression to evaluate this custom column.
722
- * @return String
696
+ * @deprecated
723
697
  */
724
- get expression():string;
698
+ static readonly MAX:string;
725
699
  /**
726
- * The name of the column to use.
727
- * @return String
700
+ * @deprecated
728
701
  */
729
- get name():string;
702
+ static readonly SUM:string;
730
703
  /**
731
- * Type of custom column. One of
732
- *
733
- * <ul>
734
- * <li>FORMAT_COLOR</li>
735
- * <li>FORMAT_NUMBER</li>
736
- * <li>FORMAT_DATE</li>
737
- * <li>NEW</li>
738
- * </ul>
739
- * @return String
704
+ * @deprecated
740
705
  */
741
- get type():string;
742
- }
743
-
744
- /**
745
- * Represents a non-viewport subscription to a table, and all data currently known to be present in the subscribed
746
- * columns. This class handles incoming snapshots and deltas, and fires events to consumers to notify of data changes.
747
- *
748
- * Unlike {@link dh.TableViewportSubscription}, the "original" table does not have a reference to this instance, only the
749
- * "private" table instance does, since the original cannot modify the subscription, and the private instance must
750
- * forward data to it.
751
- *
752
- * Represents a subscription to the table on the server. Changes made to the table will not be reflected here - the
753
- * subscription must be closed and a new one optioned to see those changes. The event model is slightly different from
754
- * viewports to make it less expensive to compute for large tables.
755
- */
756
- export class TableSubscription implements HasEventHandling {
706
+ static readonly ABS_SUM:string;
757
707
  /**
758
- * Indicates that some new data is available on the client, either an initial snapshot or a delta update. The
759
- * <b>detail</b> field of the event will contain a TableSubscriptionEventData detailing what has changed, or
760
- * allowing access to the entire range of items currently in the subscribed columns.
708
+ * @deprecated
761
709
  */
762
- static readonly EVENT_UPDATED:string;
763
-
764
- protected constructor();
765
-
710
+ static readonly VAR:string;
766
711
  /**
767
- * Stops the subscription on the server.
712
+ * @deprecated
768
713
  */
769
- close():void;
770
- addEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):()=>void;
771
- nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<CustomEvent<T>>;
772
- hasListeners(name:string):boolean;
773
- removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
714
+ static readonly AVG:string;
774
715
  /**
775
- * The columns that were subscribed to when this subscription was created
776
- * @return {@link dh.Column}
716
+ * @deprecated
777
717
  */
778
- get columns():Array<Column>;
779
- }
780
-
781
- /**
782
- * A js type for operating on input tables.
783
- *
784
- * Represents a User Input Table, which can have data added to it from other sources.
785
- *
786
- * You may add rows using dictionaries of key-value tuples (representing columns by name), add tables containing all the
787
- * key/value columns to add, or delete tables containing the keys to delete. Each operation is atomic, and will either
788
- * succeed completely or fail completely. To guarantee order of operations, apply an operation and wait for the response
789
- * before sending the next operation.
790
- *
791
- * Each table has one or more key columns, where each unique combination of keys will appear at most once in the table.
792
- *
793
- * To view the results of the Input Table, you should use standard table operations on the InputTable's source Table
794
- * object.
795
- */
796
- export class InputTable {
797
- protected constructor();
798
-
718
+ static readonly STD:string;
799
719
  /**
800
- * Adds a single row to the table. For each key or value column name in the Input Table, we retrieve that javascript
801
- * property at that name and validate it can be put into the given column type.
802
- * @param row -
803
- * @param userTimeZone -
804
- * @return Promise of dh.InputTable
720
+ * @deprecated
805
721
  */
806
- addRow(row:{ [key: string]: any; }, userTimeZone?:string):Promise<InputTable>;
722
+ static readonly FIRST:string;
807
723
  /**
808
- * Add multiple rows to a table.
809
- * @param rows -
810
- * @param userTimeZone -
811
- * @return Promise of dh.InputTable
724
+ * @deprecated
812
725
  */
813
- addRows(rows:{ [key: string]: any; }[], userTimeZone?:string):Promise<InputTable>;
726
+ static readonly LAST:string;
814
727
  /**
815
- * Add an entire table to this Input Table. Only column names that match the definition of the input table will be
816
- * copied, and all key columns must have values filled in. This only copies the current state of the source table;
817
- * future updates to the source table will not be reflected in the Input Table. The returned promise will be
818
- * resolved to the same InputTable instance this method was called upon once the server returns.
819
- * @param tableToAdd -
820
- * @return Promise of dh.InputTable
728
+ * @deprecated
821
729
  */
822
- addTable(tableToAdd:Table):Promise<InputTable>;
730
+ static readonly SKIP:string;
823
731
  /**
824
- * Add multiple tables to this Input Table.
825
- * @param tablesToAdd -
826
- * @return Promise of dh.InputTable
732
+ * Specifies if a Totals Table should be expanded by default in the UI. Defaults to false.
827
733
  */
828
- addTables(tablesToAdd:Table[]):Promise<InputTable>;
734
+ showTotalsByDefault:boolean;
829
735
  /**
830
- * Deletes an entire table from this Input Table. Key columns must match the Input Table.
831
- * @param tableToDelete -
832
- * @return Promise of dh.InputTable
736
+ * Specifies if a Grand Totals Table should be expanded by default in the UI. Defaults to false.
833
737
  */
834
- deleteTable(tableToDelete:Table):Promise<InputTable>;
738
+ showGrandTotalsByDefault:boolean;
835
739
  /**
836
- * Delete multiple tables from this Input Table.
837
- * @param tablesToDelete -
838
- * @return
740
+ * Specifies the default operation for columns that do not have a specific operation applied; defaults to "Sum".
839
741
  */
840
- deleteTables(tablesToDelete:Table[]):Promise<InputTable>;
742
+ defaultOperation:AggregationOperationType;
841
743
  /**
842
- * A list of the key columns, by name
843
- * @return String array.
844
- */
845
- get keys():string[];
846
- /**
847
- * A list of the value columns, by name
848
- * @return String array.
849
- */
850
- get values():string[];
851
- /**
852
- * A list of the key columns.
853
- * @return Column array.
854
- */
855
- get keyColumns():Column[];
856
- /**
857
- * A list of the value Column objects
858
- * @return {@link dh.Column} array.
744
+ * Mapping from each column name to the aggregation(s) that should be applied to that column in the resulting Totals
745
+ * Table. If a column is omitted, the defaultOperation is used.
859
746
  */
860
- get valueColumns():Column[];
747
+ operationMap:{ [key: string]: Array<AggregationOperationType>; };
861
748
  /**
862
- * The source table for this Input Table
863
- * @return dh.table
749
+ * Groupings to use when generating the Totals Table. One row will exist for each unique set of values observed in
750
+ * these columns. See also `Table.selectDistinct`.
864
751
  */
865
- get table():Table;
866
- }
752
+ groupBy:Array<string>;
867
753
 
868
- export class QueryInfo {
869
- static readonly EVENT_TABLE_OPENED:string;
870
- static readonly EVENT_DISCONNECT:string;
871
- static readonly EVENT_RECONNECT:string;
872
- static readonly EVENT_CONNECT:string;
754
+ constructor();
873
755
 
874
- protected constructor();
756
+ toString():string;
875
757
  }
876
758
 
877
- export class CoreClient implements HasEventHandling {
878
- static readonly EVENT_CONNECT:string;
759
+ /**
760
+ * Exists to keep the dh.TableMap namespace so that the web UI can remain compatible with the DHE API, which still calls
761
+ * this type TableMap.
762
+ * @deprecated
763
+ */
764
+ export class TableMap {
765
+ static readonly EVENT_KEYADDED:string;
879
766
  static readonly EVENT_DISCONNECT:string;
880
767
  static readonly EVENT_RECONNECT:string;
881
- static readonly EVENT_RECONNECT_AUTH_FAILED:string;
882
- static readonly EVENT_REFRESH_TOKEN_UPDATED:string;
883
- static readonly EVENT_REQUEST_FAILED:string;
884
- static readonly EVENT_REQUEST_STARTED:string;
885
- static readonly EVENT_REQUEST_SUCCEEDED:string;
886
- static readonly LOGIN_TYPE_PASSWORD:string;
887
- static readonly LOGIN_TYPE_ANONYMOUS:string;
888
-
889
- constructor(serverUrl:string, connectOptions?:ConnectOptions);
890
-
891
- running():Promise<CoreClient>;
892
- getServerUrl():string;
893
- getAuthConfigValues():Promise<string[][]>;
894
- login(credentials:LoginCredentials):Promise<void>;
895
- relogin(token:RefreshToken):Promise<void>;
896
- onConnected(timeoutInMillis?:number):Promise<void>;
897
- getServerConfigValues():Promise<string[][]>;
898
- getStorageService():dh.storage.StorageService;
899
- getAsIdeConnection():Promise<IdeConnection>;
900
- disconnect():void;
901
- addEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):()=>void;
902
- nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<CustomEvent<T>>;
903
- hasListeners(name:string):boolean;
904
- removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
905
- }
768
+ static readonly EVENT_RECONNECTFAILED:string;
906
769
 
907
- /**
908
- * Wrap BigDecimal values for use in JS. Provides text formatting for display and access to the underlying value.
909
- */
910
- export class BigDecimalWrapper {
911
770
  protected constructor();
912
-
913
- static ofString(value:string):BigDecimalWrapper;
914
- asNumber():number;
915
- valueOf():string;
916
- toString():string;
917
771
  }
918
772
 
919
773
  export class DateWrapper extends LongWrapper {
@@ -924,133 +778,322 @@ export namespace dh {
924
778
  }
925
779
 
926
780
  /**
927
- * Wrap BigInteger values for use in JS. Provides text formatting for display and access to the underlying value.
781
+ * Presently, this is the entrypoint into the Deephaven JS API. By creating an instance of this with the server URL and
782
+ * some options, JS applications can run code on the server, and interact with available exportable objects.
928
783
  */
929
- export class BigIntegerWrapper {
930
- protected constructor();
784
+ export class IdeConnection implements HasEventHandling {
785
+ /**
786
+ * @deprecated
787
+ */
788
+ static readonly HACK_CONNECTION_FAILURE:string;
789
+ static readonly EVENT_DISCONNECT:string;
790
+ static readonly EVENT_RECONNECT:string;
791
+ static readonly EVENT_SHUTDOWN:string;
931
792
 
932
- static ofString(str:string):BigIntegerWrapper;
933
- asNumber():number;
934
- valueOf():string;
935
- toString():string;
936
- }
793
+ /**
794
+ * creates a new instance, from which console sessions can be made. <b>options</b> are optional.
795
+ * @param serverUrl - The url used when connecting to the server. Read-only.
796
+ * @param connectOptions - Optional Object
797
+ * @param fromJava - Optional boolean
798
+ * @deprecated
799
+ */
800
+ constructor(serverUrl:string, connectOptions?:ConnectOptions, fromJava?:boolean);
937
801
 
938
- /**
939
- * Configuration object for running Table.treeTable to produce a hierarchical view of a given "flat" table.
940
- *
941
- * Like TotalsTableConfig, `TreeTableConfig` supports an operation map indicating how to aggregate the data, as well as
942
- * an array of column names which will be the layers in the roll-up tree, grouped at each level. An additional optional
943
- * value can be provided describing the strategy the engine should use when grouping the rows.
944
- */
945
- export class TreeTableConfig {
946
802
  /**
947
- * The column representing the unique ID for each item
803
+ * closes the current connection, releasing any resources on the server or client.
948
804
  */
949
- idColumn:string;
805
+ close():void;
806
+ running():Promise<IdeConnection>;
807
+ getObject(definitionObject:dh.ide.VariableDescriptor):Promise<any>;
808
+ subscribeToFieldUpdates(callback:(arg0:dh.ide.VariableChanges)=>void):()=>void;
950
809
  /**
951
- * The column representing the parent ID for each item
810
+ * Register a callback function to handle any log messages that are emitted on the server. Returns a function ,
811
+ * which can be invoked to remove this log handler. Any log handler registered in this way will receive as many old
812
+ * log messages as are presently available.
813
+ * @param callback -
814
+ * @return {@link io.deephaven.web.shared.fu.JsRunnable}
952
815
  */
953
- parentColumn:string;
816
+ onLogMessage(callback:(arg0:dh.ide.LogItem)=>void):()=>void;
817
+ startSession(type:string):Promise<IdeSession>;
818
+ getConsoleTypes():Promise<Array<string>>;
819
+ getWorkerHeapInfo():Promise<WorkerHeapInfo>;
954
820
  /**
955
- * Optional parameter indicating if items with an invalid parent ID should be promoted to root. Defaults to false.
821
+ * Listen for events on this object.
822
+ * @param name - the name of the event to listen for
823
+ * @param callback - a function to call when the event occurs
824
+ * @return Returns a cleanup function.
825
+ * @typeParam T - the type of the data that the event will provide
956
826
  */
957
- promoteOrphansToRoot:boolean;
958
-
959
- constructor();
960
- }
961
-
962
- /**
963
- * Presently optional and not used by the server, this allows the client to specify some authentication details. String
964
- * authToken <i>- base 64 encoded auth token. String serviceId -</i> The service ID to use for the connection.
965
- */
966
- export class ConnectOptions {
967
- headers:{ [key: string]: string; };
968
-
969
- constructor();
827
+ addEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):()=>void;
828
+ nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<CustomEvent<T>>;
829
+ hasListeners(name:string):boolean;
830
+ /**
831
+ * Removes an event listener added to this table.
832
+ * @param name -
833
+ * @param callback -
834
+ * @return
835
+ * @typeParam T -
836
+ */
837
+ removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
970
838
  }
971
839
 
972
840
  /**
973
- * Describes how a Totals Table will be generated from its parent table. Each table has a default (which may be null)
974
- * indicating how that table was configured when it was declared, and each Totals Table has a similar property
975
- * describing how it was created. Both the <b>Table.getTotalsTable</b> and <b>Table.getGrandTotalsTable</b> methods take
976
- * this config as an optional parameter - without it, the table's default will be used, or if null, a default instance
977
- * of <b>TotalsTableConfig</b> will be supplied.
841
+ * A js type for operating on input tables.
978
842
  *
979
- * This class has a no-arg constructor, allowing an instance to be made with the default values provided. However, any
980
- * JS object can be passed in to the methods which accept instances of this type, provided their values adhere to the
981
- * expected formats.
843
+ * Represents a User Input Table, which can have data added to it from other sources.
844
+ *
845
+ * You may add rows using dictionaries of key-value tuples (representing columns by name), add tables containing all the
846
+ * key/value columns to add, or delete tables containing the keys to delete. Each operation is atomic, and will either
847
+ * succeed completely or fail completely. To guarantee order of operations, apply an operation and wait for the response
848
+ * before sending the next operation.
849
+ *
850
+ * Each table has one or more key columns, where each unique combination of keys will appear at most once in the table.
851
+ *
852
+ * To view the results of the Input Table, you should use standard table operations on the InputTable's source Table
853
+ * object.
982
854
  */
983
- export class TotalsTableConfig {
984
- /**
985
- * @deprecated
986
- */
987
- static readonly COUNT:string;
855
+ export class InputTable {
856
+ protected constructor();
857
+
988
858
  /**
989
- * @deprecated
859
+ * Adds a single row to the table. For each key or value column name in the Input Table, we retrieve that javascript
860
+ * property at that name and validate it can be put into the given column type.
861
+ * @param row -
862
+ * @param userTimeZone -
863
+ * @return Promise of dh.InputTable
990
864
  */
991
- static readonly MIN:string;
865
+ addRow(row:{ [key: string]: any; }, userTimeZone?:string):Promise<InputTable>;
992
866
  /**
993
- * @deprecated
867
+ * Add multiple rows to a table.
868
+ * @param rows -
869
+ * @param userTimeZone -
870
+ * @return Promise of dh.InputTable
994
871
  */
995
- static readonly MAX:string;
872
+ addRows(rows:{ [key: string]: any; }[], userTimeZone?:string):Promise<InputTable>;
996
873
  /**
997
- * @deprecated
874
+ * Add an entire table to this Input Table. Only column names that match the definition of the input table will be
875
+ * copied, and all key columns must have values filled in. This only copies the current state of the source table;
876
+ * future updates to the source table will not be reflected in the Input Table. The returned promise will be
877
+ * resolved to the same InputTable instance this method was called upon once the server returns.
878
+ * @param tableToAdd -
879
+ * @return Promise of dh.InputTable
998
880
  */
999
- static readonly SUM:string;
881
+ addTable(tableToAdd:Table):Promise<InputTable>;
1000
882
  /**
1001
- * @deprecated
883
+ * Add multiple tables to this Input Table.
884
+ * @param tablesToAdd -
885
+ * @return Promise of dh.InputTable
1002
886
  */
1003
- static readonly ABS_SUM:string;
887
+ addTables(tablesToAdd:Table[]):Promise<InputTable>;
1004
888
  /**
1005
- * @deprecated
889
+ * Deletes an entire table from this Input Table. Key columns must match the Input Table.
890
+ * @param tableToDelete -
891
+ * @return Promise of dh.InputTable
1006
892
  */
1007
- static readonly VAR:string;
893
+ deleteTable(tableToDelete:Table):Promise<InputTable>;
1008
894
  /**
1009
- * @deprecated
895
+ * Delete multiple tables from this Input Table.
896
+ * @param tablesToDelete -
897
+ * @return
1010
898
  */
1011
- static readonly AVG:string;
899
+ deleteTables(tablesToDelete:Table[]):Promise<InputTable>;
1012
900
  /**
1013
- * @deprecated
901
+ * A list of the key columns, by name
902
+ * @return String array.
1014
903
  */
1015
- static readonly STD:string;
904
+ get keys():string[];
1016
905
  /**
1017
- * @deprecated
906
+ * A list of the value columns, by name
907
+ * @return String array.
1018
908
  */
1019
- static readonly FIRST:string;
909
+ get values():string[];
1020
910
  /**
1021
- * @deprecated
911
+ * A list of the key columns.
912
+ * @return Column array.
1022
913
  */
1023
- static readonly LAST:string;
914
+ get keyColumns():Column[];
1024
915
  /**
1025
- * @deprecated
916
+ * A list of the value Column objects
917
+ * @return {@link dh.Column} array.
1026
918
  */
1027
- static readonly SKIP:string;
919
+ get valueColumns():Column[];
1028
920
  /**
1029
- * Specifies if a Totals Table should be expanded by default in the UI. Defaults to false.
921
+ * The source table for this Input Table
922
+ * @return dh.table
1030
923
  */
1031
- showTotalsByDefault:boolean;
924
+ get table():Table;
925
+ }
926
+
927
+ /**
928
+ * Describes a filter which can be applied to a table. Replacing these instances may be more expensive than reusing
929
+ * them. These instances are immutable - all operations that compose them to build bigger expressions return a new
930
+ * instance.
931
+ */
932
+ export class FilterCondition {
933
+ protected constructor();
934
+
1032
935
  /**
1033
- * Specifies if a Grand Totals Table should be expanded by default in the UI. Defaults to false.
936
+ * the opposite of this condition
937
+ * @return FilterCondition
1034
938
  */
1035
- showGrandTotalsByDefault:boolean;
939
+ not():FilterCondition;
1036
940
  /**
1037
- * Specifies the default operation for columns that do not have a specific operation applied; defaults to "Sum".
941
+ * a condition representing the current condition logically ANDed with the other parameters
942
+ * @param filters -
943
+ * @return FilterCondition
1038
944
  */
1039
- defaultOperation:AggregationOperationType;
945
+ and(...filters:FilterCondition[]):FilterCondition;
1040
946
  /**
1041
- * Mapping from each column name to the aggregation(s) that should be applied to that column in the resulting Totals
1042
- * Table. If a column is omitted, the defaultOperation is used.
947
+ * a condition representing the current condition logically ORed with the other parameters
948
+ * @param filters -
949
+ * @return FilterCondition.
1043
950
  */
1044
- operationMap:{ [key: string]: Array<AggregationOperationType>; };
951
+ or(...filters:FilterCondition[]):FilterCondition;
1045
952
  /**
1046
- * Groupings to use when generating the Totals Table. One row will exist for each unique set of values observed in
1047
- * these columns. See also `Table.selectDistinct`.
953
+ * a string suitable for debugging showing the details of this condition.
954
+ * @return String.
1048
955
  */
1049
- groupBy:Array<string>;
956
+ toString():string;
957
+ get columns():Array<Column>;
958
+ /**
959
+ * a filter condition invoking a static function with the given parameters. Currently supported Deephaven static
960
+ * functions:
961
+ * <ul>
962
+ * <li><b>inRange</b>: Given three comparable values, returns true if the first is less than the second but greater
963
+ * than the third</li>
964
+ * <li><b>isInf</b>:Returns true if the given number is <i>infinity</i></li>
965
+ * <li><b>isNaN</b>:Returns true if the given number is <i>not a number</i></li>
966
+ * <li><b>isNormal</b>:Returns true if the given number <i>is not null</i>, <i>is not infinity</i>, and <i>is not
967
+ * "not a number"</i></li>
968
+ * <li><b>startsWith</b>:Returns true if the first string starts with the second string</li>
969
+ * <li><b>endsWith</b>Returns true if the first string ends with the second string</li>
970
+ * <li><b>matches</b>:Returns true if the first string argument matches the second string used as a Java regular
971
+ * expression</li>
972
+ * <li><b>contains</b>:Returns true if the first string argument contains the second string as a substring</li>
973
+ * <li><b>in</b>:Returns true if the first string argument can be found in the second array argument.
974
+ * <p>
975
+ * Note that the array can only be specified as a column reference at this time - typically the `FilterValue.in`
976
+ * method should be used in other cases
977
+ * </p>
978
+ * </li>
979
+ * </ul>
980
+ * @param function -
981
+ * @param args -
982
+ * @return dh.FilterCondition
983
+ */
984
+ static invoke(func:string, ...args:FilterValue[]):FilterCondition;
985
+ /**
986
+ * a filter condition which will check if the given value can be found in any supported column on whatever table
987
+ * this FilterCondition is passed to. This FilterCondition is somewhat unique in that it need not be given a column
988
+ * instance, but will adapt to any table. On numeric columns, with a value passed in which can be parsed as a
989
+ * number, the column will be filtered to numbers which equal, or can be "rounded" effectively to this number. On
990
+ * String columns, the given value will match any column which contains this string in a case-insensitive search. An
991
+ * optional second argument can be passed, an array of `FilterValue` from the columns to limit this search to (see
992
+ * {@link dh.Column.filter}).
993
+ * @param value -
994
+ * @param columns -
995
+ * @return dh.FilterCondition
996
+ */
997
+ static search(value:FilterValue, columns?:FilterValue[]):FilterCondition;
998
+ }
999
+
1000
+ export class LoginCredentials {
1001
+ type?:string|null;
1002
+ username?:string|null;
1003
+ token?:string|null;
1050
1004
 
1051
1005
  constructor();
1006
+ }
1007
+
1008
+ /**
1009
+ * Describes the structure of the column, and if desired can be used to get access to the data to be rendered in this
1010
+ * column.
1011
+ */
1012
+ export class Column {
1013
+ /**
1014
+ * If this column is part of a roll-up tree table, represents the type of the row data that can be found in this
1015
+ * column for leaf nodes if includeConstituents is enabled. Otherwise, it is <b>null</b>.
1016
+ * @return String
1017
+ */
1018
+ readonly constituentType?:string|null;
1019
+ readonly description?:string|null;
1052
1020
 
1021
+ protected constructor();
1022
+
1023
+ /**
1024
+ * the value for this column in the given row. Type will be consistent with the type of the Column.
1025
+ * @param row -
1026
+ * @return Any
1027
+ */
1028
+ get(row:Row):any;
1029
+ getFormat(row:Row):Format;
1030
+ /**
1031
+ * Creates a sort builder object, to be used when sorting by this column.
1032
+ * @return {@link dh.Sort}
1033
+ */
1034
+ sort():Sort;
1035
+ /**
1036
+ * Creates a new value for use in filters based on this column. Used either as a parameter to another filter
1037
+ * operation, or as a builder to create a filter operation.
1038
+ * @return {@link dh.FilterValue}
1039
+ */
1040
+ filter():FilterValue;
1041
+ /**
1042
+ * a <b>CustomColumn</b> object to apply using `applyCustomColumns` with the expression specified.
1043
+ * @param expression -
1044
+ * @return {@link dh.CustomColumn}
1045
+ */
1046
+ formatColor(expression:string):CustomColumn;
1047
+ /**
1048
+ * a <b>CustomColumn</b> object to apply using <b>applyCustomColumns</b> with the expression specified.
1049
+ * @param expression -
1050
+ * @return {@link dh.CustomColumn}
1051
+ */
1052
+ formatNumber(expression:string):CustomColumn;
1053
+ /**
1054
+ * a <b>CustomColumn</b> object to apply using <b>applyCustomColumns</b> with the expression specified.
1055
+ * @param expression -
1056
+ * @return {@link dh.CustomColumn}
1057
+ */
1058
+ formatDate(expression:string):CustomColumn;
1053
1059
  toString():string;
1060
+ /**
1061
+ * Label for this column.
1062
+ * @return String
1063
+ */
1064
+ get name():string;
1065
+ /**
1066
+ * True if this column is a partition column. Partition columns are used for filtering uncoalesced tables (see
1067
+ * <b>isUncoalesced</b> property on <b>Table</b>)
1068
+ * @return boolean
1069
+ */
1070
+ get isPartitionColumn():boolean;
1071
+ /**
1072
+ *
1073
+ * @deprecated do not use. Internal index of the column in the table, to be used as a key on the Row.
1074
+ * @return int
1075
+ */
1076
+ get index():number;
1077
+ get isSortable():boolean;
1078
+ /**
1079
+ * Type of the row data that can be found in this column.
1080
+ * @return String
1081
+ */
1082
+ get type():string;
1083
+ /**
1084
+ * Format entire rows colors using the expression specified. Returns a <b>CustomColumn</b> object to apply to a
1085
+ * table using <b>applyCustomColumns</b> with the parameters specified.
1086
+ * @param expression -
1087
+ * @return {@link dh.CustomColumn}
1088
+ */
1089
+ static formatRowColor(expression:string):CustomColumn;
1090
+ /**
1091
+ * a <b>CustomColumn</b> object to apply using <b>applyCustomColumns</b> with the expression specified.
1092
+ * @param name -
1093
+ * @param expression -
1094
+ * @return {@link dh.CustomColumn}
1095
+ */
1096
+ static createCustomColumn(name:string, expression:string):CustomColumn;
1054
1097
  }
1055
1098
 
1056
1099
  export class LongWrapper {
@@ -1063,31 +1106,13 @@ export namespace dh {
1063
1106
  }
1064
1107
 
1065
1108
  /**
1066
- * Describes a grouping and aggregations for a roll-up table. Pass to the <b>Table.rollup</b> function to create a
1067
- * roll-up table.
1109
+ * Deprecated for use in Deephaven Core.
1110
+ * @deprecated
1068
1111
  */
1069
- export class RollupConfig {
1070
- /**
1071
- * Ordered list of columns to group by to form the hierarchy of the resulting roll-up table.
1072
- */
1073
- groupingColumns:Array<String>;
1074
- /**
1075
- * Mapping from each aggregation name to the ordered list of columns it should be applied to in the resulting
1076
- * roll-up table.
1077
- */
1078
- aggregations:{ [key: string]: Array<AggregationOperationType>; };
1079
- /**
1080
- * Optional parameter indicating if an extra leaf node should be added at the bottom of the hierarchy, showing the
1081
- * rows in the underlying table which make up that grouping. Since these values might be a different type from the
1082
- * rest of the column, any client code must check if TreeRow.hasChildren = false, and if so, interpret those values
1083
- * as if they were Column.constituentType instead of Column.type. Defaults to false.
1084
- */
1085
- includeConstituents:boolean;
1086
- includeOriginalColumns?:boolean|null;
1087
- /**
1088
- * Optional parameter indicating if original column descriptions should be included. Defaults to true.
1089
- */
1090
- includeDescriptions:boolean;
1112
+ export class Client {
1113
+ static readonly EVENT_REQUEST_FAILED:string;
1114
+ static readonly EVENT_REQUEST_STARTED:string;
1115
+ static readonly EVENT_REQUEST_SUCCEEDED:string;
1091
1116
 
1092
1117
  constructor();
1093
1118
  }
@@ -1185,427 +1210,236 @@ export namespace dh {
1185
1210
 
1186
1211
 
1187
1212
  /**
1188
- * Provides access to data in a table. Note that several methods present their response through Promises. This allows
1189
- * the client to both avoid actually connecting to the server until necessary, and also will permit some changes not to
1190
- * inform the UI right away that they have taken place.
1213
+ * Event fired when a command is issued from the client.
1191
1214
  */
1192
- export class Table implements JoinableTable, HasEventHandling {
1193
- readonly description?:string|null;
1194
- readonly pluginName?:string|null;
1195
- readonly layoutHints?:null|LayoutHints;
1196
- static readonly EVENT_SIZECHANGED:string;
1197
- static readonly EVENT_UPDATED:string;
1198
- static readonly EVENT_ROWADDED:string;
1199
- static readonly EVENT_ROWREMOVED:string;
1200
- static readonly EVENT_ROWUPDATED:string;
1201
- static readonly EVENT_SORTCHANGED:string;
1202
- static readonly EVENT_FILTERCHANGED:string;
1203
- static readonly EVENT_CUSTOMCOLUMNSCHANGED:string;
1204
- static readonly EVENT_DISCONNECT:string;
1205
- static readonly EVENT_RECONNECT:string;
1206
- static readonly EVENT_RECONNECTFAILED:string;
1207
- static readonly EVENT_REQUEST_FAILED:string;
1208
- static readonly EVENT_REQUEST_SUCCEEDED:string;
1209
- static readonly SIZE_UNCOALESCED:number;
1215
+ export class CommandInfo {
1216
+ constructor(code:string, result:Promise<dh.ide.CommandResult>);
1210
1217
 
1211
- protected constructor();
1218
+ get result():Promise<dh.ide.CommandResult>;
1219
+ get code():string;
1220
+ }
1212
1221
 
1213
- batch(userCode:(arg0:unknown)=>void):Promise<Table>;
1214
- /**
1215
- * Retrieve a column by the given name. You should prefer to always retrieve a new Column instance instead of
1216
- * caching a returned value.
1217
- * @param key -
1218
- * @return {@link dh.Column}
1219
- */
1220
- findColumn(key:string):Column;
1221
- /**
1222
- * Retrieve multiple columns specified by the given names.
1223
- * @param keys -
1224
- * @return {@link dh.Column} array
1225
- */
1226
- findColumns(keys:string[]):Column[];
1227
- isBlinkTable():boolean;
1228
- /**
1229
- * If .hasInputTable is true, you may call this method to gain access to an InputTable object which can be used to
1230
- * mutate the data within the table. If the table is not an Input Table, the promise will be immediately rejected.
1231
- * @return Promise of dh.InputTable
1232
- */
1233
- inputTable():Promise<InputTable>;
1234
- /**
1235
- * Indicates that this Table instance will no longer be used, and its connection to the server can be cleaned up.
1236
- */
1237
- close():void;
1238
- getAttributes():string[];
1239
- /**
1240
- * null if no property exists, a string if it is an easily serializable property, or a ```Promise
1241
- * &lt;Table&gt;``` that will either resolve with a table or error out if the object can't be passed to JS.
1242
- * @param attributeName -
1243
- * @return Object
1244
- */
1245
- getAttribute(attributeName:string):unknown|undefined|null;
1246
- /**
1247
- * Replace the currently set sort on this table. Returns the previously set value. Note that the sort property will
1248
- * immediately return the new value, but you may receive update events using the old sort before the new sort is
1249
- * applied, and the <b>sortchanged</b> event fires. Reusing existing, applied sorts may enable this to perform
1250
- * better on the server. The <b>updated</b> event will also fire, but <b>rowadded</b> and <b>rowremoved</b> will
1251
- * not.
1252
- * @param sort -
1253
- * @return {@link dh.Sort} array
1254
- */
1255
- applySort(sort:Sort[]):Array<Sort>;
1256
- /**
1257
- * Replace the currently set filters on the table. Returns the previously set value. Note that the filter property
1258
- * will immediately return the new value, but you may receive update events using the old filter before the new one
1259
- * is applied, and the <b>filterchanged</b> event fires. Reusing existing, applied filters may enable this to
1260
- * perform better on the server. The <b>updated</b> event will also fire, but <b>rowadded</b> and <b>rowremoved</b>
1261
- * will not.
1262
- * @param filter -
1263
- * @return {@link dh.FilterCondition} array
1264
- */
1265
- applyFilter(filter:FilterCondition[]):Array<FilterCondition>;
1266
- /**
1267
- * used when adding new filter and sort operations to the table, as long as they are present.
1268
- * @param customColumns -
1269
- * @return {@link dh.CustomColumn} array
1270
- */
1271
- applyCustomColumns(customColumns:Array<string|CustomColumn>):Array<CustomColumn>;
1272
- /**
1273
- * If the columns parameter is not provided, all columns will be used. If the updateIntervalMs parameter is not
1274
- * provided, a default of one second will be used. Until this is called, no data will be available. Invoking this
1275
- * will result in events to be fired once data becomes available, starting with an `updated` event and a
1276
- * <b>rowadded</b> event per row in that range. The returned object allows the viewport to be closed when no longer
1277
- * needed.
1278
- * @param firstRow -
1279
- * @param lastRow -
1280
- * @param columns -
1281
- * @param updateIntervalMs -
1282
- * @return {@link dh.TableViewportSubscription}
1283
- */
1284
- setViewport(firstRow:number, lastRow:number, columns?:Array<Column>|undefined|null, updateIntervalMs?:number|undefined|null):TableViewportSubscription;
1285
- /**
1286
- * Gets the currently visible viewport. If the current set of operations has not yet resulted in data, it will not
1287
- * resolve until that data is ready. If this table is closed before the promise resolves, it will be rejected - to
1288
- * separate the lifespan of this promise from the table itself, call
1289
- * {@link TableViewportSubscription.getViewportData} on the result from {@link Table.setViewport}.
1290
- * @return Promise of {@link dh.TableData}
1291
- */
1292
- getViewportData():Promise<TableData>;
1293
- /**
1294
- * Creates a subscription to the specified columns, across all rows in the table. The optional parameter
1295
- * updateIntervalMs may be specified to indicate how often the server should send updates, defaulting to one second
1296
- * if omitted. Useful for charts or taking a snapshot of the table atomically. The initial snapshot will arrive in a
1297
- * single event, but later changes will be sent as updates. However, this may still be very expensive to run from a
1298
- * browser for very large tables. Each call to subscribe creates a new subscription, which must have <b>close()</b>
1299
- * called on it to stop it, and all events are fired from the TableSubscription instance.
1300
- * @param columns -
1301
- * @param updateIntervalMs -
1302
- * @return {@link dh.TableSubscription}
1303
- */
1304
- subscribe(columns:Array<Column>, updateIntervalMs?:number):TableSubscription;
1305
- /**
1306
- * a new table containing the distinct tuples of values from the given columns that are present in the original
1307
- * table. This table can be manipulated as any other table. Sorting is often desired as the default sort is the
1308
- * order of appearance of values from the original table.
1309
- * @param columns -
1310
- * @return Promise of dh.Table
1311
- */
1312
- selectDistinct(columns:Column[]):Promise<Table>;
1313
- /**
1314
- * Creates a new copy of this table, so it can be sorted and filtered separately, and maintain a different viewport.
1315
- * @return Promise of dh.Table
1316
- */
1317
- copy():Promise<Table>;
1318
- /**
1319
- * a promise that will resolve to a Totals Table of this table. This table will obey the configurations provided as
1320
- * a parameter, or will use the table's default if no parameter is provided, and be updated once per second as
1321
- * necessary. Note that multiple calls to this method will each produce a new TotalsTable which must have close()
1322
- * called on it when not in use.
1323
- * @param config -
1324
- * @return Promise of dh.TotalsTable
1325
- */
1326
- getTotalsTable(config?:TotalsTableConfig|undefined|null):Promise<TotalsTable>;
1222
+ /**
1223
+ * Behaves like a {@link dh.Table} externally, but data, state, and viewports are managed by an entirely different
1224
+ * mechanism, and so reimplemented here.
1225
+ * <p>
1226
+ * Any time a change is made, we build a new request and send it to the server, and wait for the updated state.
1227
+ * <p>
1228
+ * Semantics around getting updates from the server are slightly different - we don't "unset" the viewport here after
1229
+ * operations are performed, but encourage the client code to re-set them to the desired position.
1230
+ * <p>
1231
+ * The table size will be -1 until a viewport has been fetched.
1232
+ * <p>
1233
+ * Similar to a table, a Tree Table provides access to subscribed viewport data on the current hierarchy. A different
1234
+ * Row type is used within that viewport, showing the depth of that node within the tree and indicating details about
1235
+ * whether it has children or is expanded. The Tree Table itself then provides the ability to change if a row is
1236
+ * expanded or not. Methods used to control or check if a row should be expanded or not can be invoked on a TreeRow
1237
+ * instance, or on the number of the row (thus allowing for expanding/collapsing rows which are not currently visible in
1238
+ * the viewport).
1239
+ * <p>
1240
+ * Events and viewports are somewhat different from tables, due to the expense of computing the expanded/collapsed rows
1241
+ * and count of children at each level of the hierarchy, and differences in the data that is available.
1242
+ * <p>
1243
+ * <ul>
1244
+ * <li>There is no {@link Table.totalSize | totalSize} property.</li>
1245
+ * <li>The viewport is not un-set when changes are made to filter or sort, but changes will continue to be streamed in.
1246
+ * It is suggested that the viewport be changed to the desired position (usually the first N rows) after any filter/sort
1247
+ * change is made. Likewise, {@link getViewportData} will always return the most recent data, and will not wait if a
1248
+ * new operation is pending.</li>
1249
+ * <li>Custom columns are not directly supported. If the TreeTable was created client-side, the original Table can have
1250
+ * custom columns applied, and the TreeTable can be recreated.</li>
1251
+ * <li>Whereas Table has a {@link Table.totalsTableConfig} property, it is defined here as a method,
1252
+ * {@link getTotalsTableConfig}. This returns a promise so the config can be fetched asynchronously.</li>
1253
+ * <li>Totals Tables for trees vary in behavior between tree tables and roll-up tables. This behavior is based on the
1254
+ * original flat table used to produce the Tree Table - for a hierarchical table (i.e. Table.treeTable in the query
1255
+ * config), the totals will include non-leaf nodes (since they are themselves actual rows in the table), but in a
1256
+ * roll-up table, the totals only include leaf nodes (as non-leaf nodes are generated through grouping the contents of
1257
+ * the original table). Roll-ups also have the {@link dh.includeConstituents} property, indicating that a
1258
+ * {@link dh.Column} in the tree may have a {@link Column.constituentType} property reflecting that the type of cells
1259
+ * where {@link TreeRow.hasChildren} is false will be different from usual.</li>
1260
+ * </ul>
1261
+ */
1262
+ export class TreeTable implements HasEventHandling {
1327
1263
  /**
1328
- * a promise that will resolve to a Totals Table of this table, ignoring any filters. See <b>getTotalsTable()</b>
1329
- * above for more specifics.
1330
- * @param config -
1331
- * @return promise of dh.TotalsTable
1264
+ * event.detail is the currently visible viewport data based on the active viewport configuration.
1332
1265
  */
1333
- getGrandTotalsTable(config?:TotalsTableConfig|undefined|null):Promise<TotalsTable>;
1266
+ static readonly EVENT_UPDATED:string;
1334
1267
  /**
1335
- * a promise that will resolve to a new roll-up <b>TreeTable</b> of this table. Multiple calls to this method will
1336
- * each produce a new <b>TreeTable</b> which must have close() called on it when not in use.
1337
- * @param configObject -
1338
- * @return Promise of dh.TreeTable
1268
+ * event.detail is the currently visible viewport data based on the active viewport configuration.
1339
1269
  */
1340
- rollup(configObject:RollupConfig):Promise<TreeTable>;
1270
+ static readonly EVENT_DISCONNECT:string;
1341
1271
  /**
1342
- * a promise that will resolve to a new `TreeTable` of this table. Multiple calls to this method will each produce a
1343
- * new `TreeTable` which must have close() called on it when not in use.
1344
- * @param configObject -
1345
- * @return Promise dh.TreeTable
1272
+ * event.detail is the currently visible viewport data based on the active viewport configuration.
1346
1273
  */
1347
- treeTable(configObject:TreeTableConfig):Promise<TreeTable>;
1274
+ static readonly EVENT_RECONNECT:string;
1348
1275
  /**
1349
- * a "frozen" version of this table (a server-side snapshot of the entire source table). Viewports on the frozen
1350
- * table will not update. This does not change the original table, and the new table will not have any of the client
1351
- * side sorts/filters/columns. New client side sorts/filters/columns can be added to the frozen copy.
1352
- * @return Promise of dh.Table
1276
+ * event.detail is the currently visible viewport data based on the active viewport configuration.
1353
1277
  */
1354
- freeze():Promise<Table>;
1355
- snapshot(baseTable:Table, doInitialSnapshot?:boolean, stampColumns?:string[]):Promise<Table>;
1278
+ static readonly EVENT_RECONNECTFAILED:string;
1356
1279
  /**
1357
- *
1358
- * @inheritDoc
1359
- * @deprecated
1280
+ * event.detail is the currently visible viewport data based on the active viewport configuration.
1360
1281
  */
1361
- join(joinType:string, rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null, asOfMatchRule?:string|undefined|null):Promise<Table>;
1362
- asOfJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null, asOfMatchRule?:string|undefined|null):Promise<Table>;
1363
- crossJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null, reserveBits?:number|undefined|null):Promise<Table>;
1364
- exactJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>):Promise<Table>;
1365
- naturalJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>):Promise<Table>;
1366
- byExternal(keys:object, dropKeys?:boolean):Promise<PartitionedTable>;
1282
+ static readonly EVENT_REQUEST_FAILED:string;
1283
+ readonly description?:string|null;
1284
+ readonly layoutHints?:null|LayoutHints;
1285
+
1286
+ protected constructor();
1287
+
1367
1288
  /**
1368
- * Creates a new PartitionedTable from the contents of the current table, partitioning data based on the specified
1369
- * keys.
1370
- * @param keys -
1371
- * @param dropKeys -
1372
- * @return Promise dh.PartitionedTable
1289
+ * Expands the given node, so that its children are visible when they are in the viewport. The parameter can be the
1290
+ * row index, or the row object itself. The second parameter is a boolean value, false by default, specifying if the
1291
+ * row and all descendants should be fully expanded. Equivalent to `setExpanded(row, true)` with an optional third
1292
+ * boolean parameter.
1293
+ * @param row -
1294
+ * @param expandDescendants -
1373
1295
  */
1374
- partitionBy(keys:object, dropKeys?:boolean):Promise<PartitionedTable>;
1296
+ expand(row:TreeRow|number, expandDescendants?:boolean):void;
1375
1297
  /**
1376
- * a promise that will resolve to ColumnStatistics for the column of this table.
1377
- * @param column -
1378
- * @return Promise of dh.ColumnStatistics
1298
+ * Collapses the given node, so that its children and descendants are not visible in the size or the viewport. The
1299
+ * parameter can be the row index, or the row object itself. Equivalent to <b>setExpanded(row, false, false)</b>.
1300
+ * @param row -
1379
1301
  */
1380
- getColumnStatistics(column:Column):Promise<ColumnStatistics>;
1302
+ collapse(row:TreeRow|number):void;
1381
1303
  /**
1382
- * Seek the row matching the data provided
1383
- * @param startingRow - Row to start the seek from
1384
- * @param column - Column to seek for value on
1385
- * @param valueType - Type of value provided
1386
- * @param seekValue - Value to seek
1387
- * @param insensitive - Optional value to flag a search as case-insensitive. Defaults to `false`.
1388
- * @param contains - Optional value to have the seek value do a contains search instead of exact equality. Defaults to
1389
- * `false`.
1390
- * @param isBackwards - Optional value to seek backwards through the table instead of forwards. Defaults to `false`.
1391
- * @return A promise that resolves to the row value found.
1304
+ * Specifies if the given node should be expanded or collapsed. If this node has children, and the value is changed,
1305
+ * the size of the table will change. If node is to be expanded and the third parameter, <b>expandDescendants</b>,
1306
+ * is true, then its children will also be expanded.
1307
+ * @param row -
1308
+ * @param isExpanded -
1309
+ * @param expandDescendants -
1392
1310
  */
1393
- seekRow(startingRow:number, column:Column, valueType:ValueTypeType, seekValue:any, insensitive?:boolean|undefined|null, contains?:boolean|undefined|null, isBackwards?:boolean|undefined|null):Promise<number>;
1394
- toString():string;
1311
+ setExpanded(row:TreeRow|number, isExpanded:boolean, expandDescendants?:boolean):void;
1312
+ expandAll():void;
1313
+ collapseAll():void;
1395
1314
  /**
1396
- * True if this table represents a user Input Table (created by InputTable.newInputTable). When true, you may call
1397
- * .inputTable() to add or remove data from the underlying table.
1315
+ * true if the given row is expanded, false otherwise. Equivalent to `TreeRow.isExpanded`, if an instance of the row
1316
+ * is available
1317
+ * @param row -
1398
1318
  * @return boolean
1399
1319
  */
1400
- get hasInputTable():boolean;
1401
- /**
1402
- * The columns that are present on this table. This is always all possible columns. If you specify fewer columns in
1403
- * .setViewport(), you will get only those columns in your ViewportData. <b>Number size</b> The total count of rows
1404
- * in the table. The size can and will change; see the <b>sizechanged</b> event for details. Size will be negative
1405
- * in exceptional cases (eg. the table is uncoalesced, see the <b>isUncoalesced</b> property for details).
1406
- * @return {@link dh.Column} array
1407
- */
1408
- get columns():Array<Column>;
1320
+ isExpanded(row:TreeRow|number):boolean;
1321
+ setViewport(firstRow:number, lastRow:number, columns?:Array<Column>|undefined|null, updateInterval?:number|undefined|null):void;
1322
+ getViewportData():Promise<TreeViewportData>;
1409
1323
  /**
1410
- * The default configuration to be used when building a <b>TotalsTable</b> for this table.
1411
- * @return dh.TotalsTableConfig
1324
+ * Indicates that the table will no longer be used, and server resources can be freed.
1412
1325
  */
1413
- get totalsTableConfig():TotalsTableConfig;
1326
+ close():void;
1327
+ typedTicket():dhinternal.io.deephaven.proto.ticket_pb.TypedTicket;
1414
1328
  /**
1415
- * An ordered list of Sorts to apply to the table. To update, call <b>applySort()</b>. Note that this getter will
1416
- * return the new value immediately, even though it may take a little time to update on the server. You may listen
1417
- * for the <b>sortchanged</b> event to know when to update the UI.
1329
+ * Applies the given sort to all levels of the tree. Returns the previous sort in use.
1330
+ * @param sort -
1418
1331
  * @return {@link dh.Sort} array
1419
1332
  */
1420
- get sort():Array<Sort>;
1421
- /**
1422
- * An ordered list of custom column formulas to add to the table, either adding new columns or replacing existing
1423
- * ones. To update, call <b>applyCustomColumns()</b>.
1424
- * @return {@link dh.CustomColumn} array
1425
- */
1426
- get customColumns():Array<CustomColumn>;
1427
- /**
1428
- * True if this table may receive updates from the server, including size changed events, updated events after
1429
- * initial snapshot.
1430
- * @return boolean
1431
- */
1432
- get isRefreshing():boolean;
1333
+ applySort(sort:Sort[]):Array<Sort>;
1433
1334
  /**
1434
- * An ordered list of Filters to apply to the table. To update, call applyFilter(). Note that this getter will
1435
- * return the new value immediately, even though it may take a little time to update on the server. You may listen
1436
- * for the <b>filterchanged</b> event to know when to update the UI.
1335
+ * Applies the given filter to the contents of the tree in such a way that if any node is visible, then any parent
1336
+ * node will be visible as well even if that parent node would not normally be visible due to the filter's
1337
+ * condition. Returns the previous sort in use.
1338
+ * @param filter -
1437
1339
  * @return {@link dh.FilterCondition} array
1438
1340
  */
1439
- get filter():Array<FilterCondition>;
1440
- /**
1441
- * The total count of the rows in the table, excluding any filters. Unlike <b>size</b>, changes to this value will
1442
- * not result in any event. <b>Sort[] sort</b> an ordered list of Sorts to apply to the table. To update, call
1443
- * applySort(). Note that this getter will return the new value immediately, even though it may take a little time
1444
- * to update on the server. You may listen for the <b>sortchanged</b> event to know when to update the UI.
1445
- * @return double
1446
- */
1447
- get totalSize():number;
1448
- /**
1449
- * The total count of rows in the table. The size can and will change; see the <b>sizechanged</b> event for details.
1450
- * Size will be negative in exceptional cases (e.g., the table is uncoalesced; see the <b>isUncoalesced</b>
1451
- * property). for details).
1452
- * @return double
1453
- */
1454
- get size():number;
1455
- /**
1456
- * True if this table has been closed.
1457
- * @return boolean
1458
- */
1459
- get isClosed():boolean;
1460
- /**
1461
- * Read-only. True if this table is uncoalesced. Set a viewport or filter on the partition columns to coalesce the
1462
- * table. Check the <b>isPartitionColumn</b> property on the table columns to retrieve the partition columns. Size
1463
- * will be unavailable until table is coalesced.
1464
- * @return boolean
1465
- */
1466
- get isUncoalesced():boolean;
1467
- /**
1468
- * Listen for events on this object.
1469
- * @param name - the name of the event to listen for
1470
- * @param callback - a function to call when the event occurs
1471
- * @return Returns a cleanup function.
1472
- * @typeParam T - the type of the data that the event will provide
1473
- */
1474
- addEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):()=>void;
1475
- nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<CustomEvent<T>>;
1476
- hasListeners(name:string):boolean;
1341
+ applyFilter(filter:FilterCondition[]):Array<FilterCondition>;
1477
1342
  /**
1478
- * Removes an event listener added to this table.
1479
- * @param name -
1480
- * @param callback -
1481
- * @return
1482
- * @typeParam T -
1343
+ * a column with the given name, or throws an exception if it cannot be found
1344
+ * @param key -
1345
+ * @return {@link dh.Column}
1483
1346
  */
1484
- removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
1347
+ findColumn(key:string):Column;
1485
1348
  /**
1486
- * a Sort than can be used to reverse a table. This can be passed into n array in applySort. Note that Tree Tables
1487
- * do not support reverse.
1488
- * @return {@link dh.Sort}
1349
+ * an array with all of the named columns in order, or throws an exception if one cannot be found.
1350
+ * @param keys -
1351
+ * @return {@link dh.Column} array
1489
1352
  */
1490
- static reverse():Sort;
1491
- }
1492
-
1493
- /**
1494
- * Describes a Sort present on the table. No visible constructor, created through the use of Column.sort(), will be tied
1495
- * to that particular column data. Sort instances are immutable, and use a builder pattern to make modifications. All
1496
- * methods return a new Sort instance.
1497
- */
1498
- export class Sort {
1499
- static readonly ASCENDING:string;
1500
- static readonly DESCENDING:string;
1501
- static readonly REVERSE:string;
1502
-
1503
- protected constructor();
1504
-
1353
+ findColumns(keys:string[]):Column[];
1505
1354
  /**
1506
- * Builds a Sort instance to sort values in ascending order.
1507
- * @return {@link dh.Sort}
1355
+ * Provides Table-like selectDistinct functionality, but with a few quirks, since it is only fetching the distinct
1356
+ * values for the given columns in the source table:
1357
+ * <ul>
1358
+ * <li>Rollups may make no sense, since values are aggregated.</li>
1359
+ * <li>Values found on orphaned (and removed) nodes will show up in the resulting table, even though they are not in
1360
+ * the tree.</li>
1361
+ * <li>Values found on parent nodes which are only present in the tree since a child is visible will not be present
1362
+ * in the resulting table.</li>
1363
+ * </ul>
1508
1364
  */
1509
- asc():Sort;
1365
+ selectDistinct(columns:Column[]):Promise<Table>;
1366
+ getTotalsTableConfig():Promise<TotalsTableConfig>;
1367
+ getTotalsTable(config?:object):Promise<TotalsTable>;
1368
+ getGrandTotalsTable(config?:object):Promise<TotalsTable>;
1510
1369
  /**
1511
- * Builds a Sort instance to sort values in descending order.
1512
- * @return {@link dh.Sort}
1370
+ * a new copy of this treetable, so it can be sorted and filtered separately, and maintain a different viewport.
1371
+ * Unlike Table, this will _not_ copy the filter or sort, since tree table viewport semantics differ, and without a
1372
+ * viewport set, the treetable doesn't evaluate these settings, and they aren't readable on the properties. Expanded
1373
+ * state is also not copied.
1374
+ * @return Promise of dh.TreeTable
1513
1375
  */
1514
- desc():Sort;
1376
+ copy():Promise<TreeTable>;
1515
1377
  /**
1516
- * Builds a Sort instance which takes the absolute value before applying order.
1517
- * @return {@link dh.Sort}
1378
+ * The current filter configuration of this Tree Table.
1379
+ * @return {@link dh.FilterCondition} array
1518
1380
  */
1519
- abs():Sort;
1520
- toString():string;
1381
+ get filter():Array<FilterCondition>;
1521
1382
  /**
1522
- * True if the absolute value of the column should be used when sorting; defaults to false.
1383
+ * True if this is a roll-up and will provide the original rows that make up each grouping.
1523
1384
  * @return boolean
1524
1385
  */
1525
- get isAbs():boolean;
1526
- /**
1527
- * The column which is sorted.
1528
- * @return {@link dh.Column}
1529
- */
1530
- get column():Column;
1386
+ get includeConstituents():boolean;
1387
+ get groupedColumns():Array<Column>;
1531
1388
  /**
1532
- * The direction of this sort, either <b>ASC</b>, <b>DESC</b>, or <b>REVERSE</b>.
1533
- * @return String
1389
+ * True if this table has been closed.
1390
+ * @return boolean
1534
1391
  */
1535
- get direction():string;
1536
- }
1537
-
1538
- /**
1539
- * Describes a filter which can be applied to a table. Replacing these instances may be more expensive than reusing
1540
- * them. These instances are immutable - all operations that compose them to build bigger expressions return a new
1541
- * instance.
1542
- */
1543
- export class FilterCondition {
1544
- protected constructor();
1545
-
1392
+ get isClosed():boolean;
1546
1393
  /**
1547
- * the opposite of this condition
1548
- * @return FilterCondition
1394
+ * The current number of rows given the table's contents and the various expand/collapse states of each node. (No
1395
+ * totalSize is provided at this time; its definition becomes unclear between roll-up and tree tables, especially
1396
+ * when considering collapse/expand states).
1397
+ * @return double
1549
1398
  */
1550
- not():FilterCondition;
1399
+ get size():number;
1551
1400
  /**
1552
- * a condition representing the current condition logically ANDed with the other parameters
1553
- * @param filters -
1554
- * @return FilterCondition
1401
+ * The columns that can be shown in this Tree Table.
1402
+ * @return {@link dh.Column} array
1555
1403
  */
1556
- and(...filters:FilterCondition[]):FilterCondition;
1404
+ get columns():Array<Column>;
1557
1405
  /**
1558
- * a condition representing the current condition logically ORed with the other parameters
1559
- * @param filters -
1560
- * @return FilterCondition.
1406
+ * The current sort configuration of this Tree Table
1407
+ * @return {@link dh.Sort} array.
1561
1408
  */
1562
- or(...filters:FilterCondition[]):FilterCondition;
1409
+ get sort():Array<Sort>;
1563
1410
  /**
1564
- * a string suitable for debugging showing the details of this condition.
1565
- * @return String.
1411
+ * True if this table may receive updates from the server, including size changed events, updated events after
1412
+ * initial snapshot.
1413
+ * @return boolean
1566
1414
  */
1567
- toString():string;
1568
- get columns():Array<Column>;
1415
+ get isRefreshing():boolean;
1569
1416
  /**
1570
- * a filter condition invoking a static function with the given parameters. Currently supported Deephaven static
1571
- * functions:
1572
- * <ul>
1573
- * <li><b>inRange</b>: Given three comparable values, returns true if the first is less than the second but greater
1574
- * than the third</li>
1575
- * <li><b>isInf</b>:Returns true if the given number is <i>infinity</i></li>
1576
- * <li><b>isNaN</b>:Returns true if the given number is <i>not a number</i></li>
1577
- * <li><b>isNormal</b>:Returns true if the given number <i>is not null</i>, <i>is not infinity</i>, and <i>is not
1578
- * "not a number"</i></li>
1579
- * <li><b>startsWith</b>:Returns true if the first string starts with the second string</li>
1580
- * <li><b>endsWith</b>Returns true if the first string ends with the second string</li>
1581
- * <li><b>matches</b>:Returns true if the first string argument matches the second string used as a Java regular
1582
- * expression</li>
1583
- * <li><b>contains</b>:Returns true if the first string argument contains the second string as a substring</li>
1584
- * <li><b>in</b>:Returns true if the first string argument can be found in the second array argument.
1585
- * <p>
1586
- * Note that the array can only be specified as a column reference at this time - typically the `FilterValue.in`
1587
- * method should be used in other cases
1588
- * </p>
1589
- * </li>
1590
- * </ul>
1591
- * @param function -
1592
- * @param args -
1593
- * @return dh.FilterCondition
1417
+ * Listen for events on this object.
1418
+ * @param name - the name of the event to listen for
1419
+ * @param callback - a function to call when the event occurs
1420
+ * @return Returns a cleanup function.
1421
+ * @typeParam T - the type of the data that the event will provide
1594
1422
  */
1595
- static invoke(func:string, ...args:FilterValue[]):FilterCondition;
1423
+ addEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):()=>void;
1424
+ nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<CustomEvent<T>>;
1425
+ hasListeners(name:string):boolean;
1596
1426
  /**
1597
- * a filter condition which will check if the given value can be found in any supported column on whatever table
1598
- * this FilterCondition is passed to. This FilterCondition is somewhat unique in that it need not be given a column
1599
- * instance, but will adapt to any table. On numeric columns, with a value passed in which can be parsed as a
1600
- * number, the column will be filtered to numbers which equal, or can be "rounded" effectively to this number. On
1601
- * String columns, the given value will match any column which contains this string in a case-insensitive search. An
1602
- * optional second argument can be passed, an array of `FilterValue` from the columns to limit this search to (see
1603
- * {@link dh.Column.filter}).
1604
- * @param value -
1605
- * @param columns -
1606
- * @return dh.FilterCondition
1427
+ * Removes an event listener added to this table.
1428
+ * @param name -
1429
+ * @param callback -
1430
+ * @return
1431
+ * @typeParam T -
1607
1432
  */
1608
- static search(value:FilterValue, columns?:FilterValue[]):FilterCondition;
1433
+ removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
1434
+ }
1435
+
1436
+ export class QueryInfo {
1437
+ static readonly EVENT_TABLE_OPENED:string;
1438
+ static readonly EVENT_DISCONNECT:string;
1439
+ static readonly EVENT_RECONNECT:string;
1440
+ static readonly EVENT_CONNECT:string;
1441
+
1442
+ protected constructor();
1609
1443
  }
1610
1444
 
1611
1445
  /**
@@ -1705,380 +1539,542 @@ export namespace dh {
1705
1539
  */
1706
1540
  notInIgnoreCase(terms:FilterValue[]):FilterCondition;
1707
1541
  /**
1708
- * a filter condition checking if the given value contains the given string value
1709
- * @param term -
1710
- * @return {@link dh.FilterCondition}
1542
+ * a filter condition checking if the given value contains the given string value
1543
+ * @param term -
1544
+ * @return {@link dh.FilterCondition}
1545
+ */
1546
+ contains(term:FilterValue):FilterCondition;
1547
+ /**
1548
+ * a filter condition checking if the given value contains the given string value, ignoring differences of upper vs
1549
+ * lower case
1550
+ * @param term -
1551
+ * @return {@link dh.FilterCondition}
1552
+ */
1553
+ containsIgnoreCase(term:FilterValue):FilterCondition;
1554
+ /**
1555
+ * a filter condition checking if the given value matches the provided regular expressions string. Regex patterns
1556
+ * use Java regex syntax
1557
+ * @param pattern -
1558
+ * @return {@link dh.FilterCondition}
1559
+ */
1560
+ matches(pattern:FilterValue):FilterCondition;
1561
+ /**
1562
+ * a filter condition checking if the given value matches the provided regular expressions string, ignoring
1563
+ * differences of upper vs lower case. Regex patterns use Java regex syntax
1564
+ * @param pattern -
1565
+ * @return {@link dh.FilterCondition}
1566
+ */
1567
+ matchesIgnoreCase(pattern:FilterValue):FilterCondition;
1568
+ /**
1569
+ * a filter condition checking if the current value is a true boolean
1570
+ * @return {@link dh.FilterCondition}
1571
+ */
1572
+ isTrue():FilterCondition;
1573
+ /**
1574
+ * a filter condition checking if the current value is a false boolean
1575
+ * @return {@link dh.FilterCondition}
1576
+ */
1577
+ isFalse():FilterCondition;
1578
+ /**
1579
+ * a filter condition checking if the current value is a null value
1580
+ * @return {@link dh.FilterCondition}
1581
+ */
1582
+ isNull():FilterCondition;
1583
+ /**
1584
+ * a filter condition invoking the given method on the current value, with the given parameters. Currently supported
1585
+ * functions that can be invoked on a String:
1586
+ * <ul>
1587
+ * <li><b>startsWith</b>: Returns true if the current string value starts with the supplied string argument</li>
1588
+ * <li><b>endsWith</b>: Returns true if the current string value ends with the supplied string argument</li>
1589
+ * <li><b>matches</b>: Returns true if the current string value matches the supplied string argument used as a Java
1590
+ * regular expression</li>
1591
+ * <li><b>contains</b>: Returns true if the current string value contains the supplied string argument
1592
+ * <p>
1593
+ * When invoking against a constant, this should be avoided in favor of FilterValue.contains
1594
+ * </p>
1595
+ * </li>
1596
+ * </ul>
1597
+ * @param method -
1598
+ * @param args -
1599
+ * @return
1600
+ */
1601
+ invoke(method:string, ...args:FilterValue[]):FilterCondition;
1602
+ toString():string;
1603
+ /**
1604
+ * Constructs a string for the filter API from the given parameter.
1605
+ * @param input -
1606
+ * @return
1607
+ */
1608
+ static ofString(input:any):FilterValue;
1609
+ /**
1610
+ * Constructs a boolean for the filter API from the given parameter.
1611
+ * @param b -
1612
+ * @return
1613
+ */
1614
+ static ofBoolean(b:boolean):FilterValue;
1615
+ }
1616
+
1617
+ /**
1618
+ * This class allows iteration over non-contiguous indexes. In the future, this will support the EcmaScript 2015
1619
+ * Iteration protocol, but for now has one method which returns an iterator, and also supports querying the size.
1620
+ * Additionally, we may add support for creating RangeSet objects to better serve some use cases.
1621
+ */
1622
+ export class RangeSet {
1623
+ protected constructor();
1624
+
1625
+ static ofRange(first:number, last:number):RangeSet;
1626
+ static ofItems(rows:number[]):RangeSet;
1627
+ static ofRanges(ranges:RangeSet[]):RangeSet;
1628
+ static ofSortedRanges(ranges:RangeSet[]):RangeSet;
1629
+ /**
1630
+ * a new iterator over all indexes in this collection.
1631
+ * @return Iterator of {@link dh.LongWrapper}
1632
+ */
1633
+ iterator():Iterator<LongWrapper>;
1634
+ /**
1635
+ * The total count of items contained in this collection. In some cases this can be expensive to compute, and
1636
+ * generally should not be needed except for debugging purposes, or preallocating space (i.e., do not call this
1637
+ * property each time through a loop).
1638
+ * @return double
1639
+ */
1640
+ get size():number;
1641
+ }
1642
+
1643
+ /**
1644
+ * Wrap BigInteger values for use in JS. Provides text formatting for display and access to the underlying value.
1645
+ */
1646
+ export class BigIntegerWrapper {
1647
+ protected constructor();
1648
+
1649
+ static ofString(str:string):BigIntegerWrapper;
1650
+ asNumber():number;
1651
+ valueOf():string;
1652
+ toString():string;
1653
+ }
1654
+
1655
+ export class CoreClient implements HasEventHandling {
1656
+ static readonly EVENT_CONNECT:string;
1657
+ static readonly EVENT_DISCONNECT:string;
1658
+ static readonly EVENT_RECONNECT:string;
1659
+ static readonly EVENT_RECONNECT_AUTH_FAILED:string;
1660
+ static readonly EVENT_REFRESH_TOKEN_UPDATED:string;
1661
+ static readonly EVENT_REQUEST_FAILED:string;
1662
+ static readonly EVENT_REQUEST_STARTED:string;
1663
+ static readonly EVENT_REQUEST_SUCCEEDED:string;
1664
+ static readonly LOGIN_TYPE_PASSWORD:string;
1665
+ static readonly LOGIN_TYPE_ANONYMOUS:string;
1666
+
1667
+ constructor(serverUrl:string, connectOptions?:ConnectOptions);
1668
+
1669
+ running():Promise<CoreClient>;
1670
+ getServerUrl():string;
1671
+ getAuthConfigValues():Promise<string[][]>;
1672
+ login(credentials:LoginCredentials):Promise<void>;
1673
+ relogin(token:RefreshToken):Promise<void>;
1674
+ onConnected(timeoutInMillis?:number):Promise<void>;
1675
+ getServerConfigValues():Promise<string[][]>;
1676
+ getStorageService():dh.storage.StorageService;
1677
+ getAsIdeConnection():Promise<IdeConnection>;
1678
+ disconnect():void;
1679
+ addEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):()=>void;
1680
+ nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<CustomEvent<T>>;
1681
+ hasListeners(name:string):boolean;
1682
+ removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
1683
+ }
1684
+
1685
+ export class CustomColumn {
1686
+ static readonly TYPE_FORMAT_COLOR:string;
1687
+ static readonly TYPE_FORMAT_NUMBER:string;
1688
+ static readonly TYPE_FORMAT_DATE:string;
1689
+ static readonly TYPE_NEW:string;
1690
+
1691
+ protected constructor();
1692
+
1693
+ valueOf():string;
1694
+ toString():string;
1695
+ /**
1696
+ * The expression to evaluate this custom column.
1697
+ * @return String
1711
1698
  */
1712
- contains(term:FilterValue):FilterCondition;
1699
+ get expression():string;
1713
1700
  /**
1714
- * a filter condition checking if the given value contains the given string value, ignoring differences of upper vs
1715
- * lower case
1716
- * @param term -
1717
- * @return {@link dh.FilterCondition}
1701
+ * The name of the column to use.
1702
+ * @return String
1718
1703
  */
1719
- containsIgnoreCase(term:FilterValue):FilterCondition;
1704
+ get name():string;
1720
1705
  /**
1721
- * a filter condition checking if the given value matches the provided regular expressions string. Regex patterns
1722
- * use Java regex syntax
1723
- * @param pattern -
1724
- * @return {@link dh.FilterCondition}
1706
+ * Type of custom column. One of
1707
+ *
1708
+ * <ul>
1709
+ * <li>FORMAT_COLOR</li>
1710
+ * <li>FORMAT_NUMBER</li>
1711
+ * <li>FORMAT_DATE</li>
1712
+ * <li>NEW</li>
1713
+ * </ul>
1714
+ * @return String
1725
1715
  */
1726
- matches(pattern:FilterValue):FilterCondition;
1716
+ get type():string;
1717
+ }
1718
+
1719
+ /**
1720
+ * Wrap BigDecimal values for use in JS. Provides text formatting for display and access to the underlying value.
1721
+ */
1722
+ export class BigDecimalWrapper {
1723
+ protected constructor();
1724
+
1725
+ static ofString(value:string):BigDecimalWrapper;
1726
+ asNumber():number;
1727
+ valueOf():string;
1728
+ toString():string;
1729
+ }
1730
+
1731
+ /**
1732
+ * Represents a non-viewport subscription to a table, and all data currently known to be present in the subscribed
1733
+ * columns. This class handles incoming snapshots and deltas, and fires events to consumers to notify of data changes.
1734
+ *
1735
+ * Unlike {@link dh.TableViewportSubscription}, the "original" table does not have a reference to this instance, only the
1736
+ * "private" table instance does, since the original cannot modify the subscription, and the private instance must
1737
+ * forward data to it.
1738
+ *
1739
+ * Represents a subscription to the table on the server. Changes made to the table will not be reflected here - the
1740
+ * subscription must be closed and a new one optioned to see those changes. The event model is slightly different from
1741
+ * viewports to make it less expensive to compute for large tables.
1742
+ */
1743
+ export class TableSubscription implements HasEventHandling {
1727
1744
  /**
1728
- * a filter condition checking if the given value matches the provided regular expressions string, ignoring
1729
- * differences of upper vs lower case. Regex patterns use Java regex syntax
1730
- * @param pattern -
1731
- * @return {@link dh.FilterCondition}
1745
+ * Indicates that some new data is available on the client, either an initial snapshot or a delta update. The
1746
+ * <b>detail</b> field of the event will contain a TableSubscriptionEventData detailing what has changed, or
1747
+ * allowing access to the entire range of items currently in the subscribed columns.
1732
1748
  */
1733
- matchesIgnoreCase(pattern:FilterValue):FilterCondition;
1749
+ static readonly EVENT_UPDATED:string;
1750
+
1751
+ protected constructor();
1752
+
1734
1753
  /**
1735
- * a filter condition checking if the current value is a true boolean
1736
- * @return {@link dh.FilterCondition}
1754
+ * Stops the subscription on the server.
1737
1755
  */
1738
- isTrue():FilterCondition;
1756
+ close():void;
1757
+ addEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):()=>void;
1758
+ nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<CustomEvent<T>>;
1759
+ hasListeners(name:string):boolean;
1760
+ removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
1739
1761
  /**
1740
- * a filter condition checking if the current value is a false boolean
1741
- * @return {@link dh.FilterCondition}
1762
+ * The columns that were subscribed to when this subscription was created
1763
+ * @return {@link dh.Column}
1742
1764
  */
1743
- isFalse():FilterCondition;
1765
+ get columns():Array<Column>;
1766
+ }
1767
+
1768
+ /**
1769
+ * Describes a grouping and aggregations for a roll-up table. Pass to the <b>Table.rollup</b> function to create a
1770
+ * roll-up table.
1771
+ */
1772
+ export class RollupConfig {
1744
1773
  /**
1745
- * a filter condition checking if the current value is a null value
1746
- * @return {@link dh.FilterCondition}
1774
+ * Ordered list of columns to group by to form the hierarchy of the resulting roll-up table.
1747
1775
  */
1748
- isNull():FilterCondition;
1776
+ groupingColumns:Array<String>;
1749
1777
  /**
1750
- * a filter condition invoking the given method on the current value, with the given parameters. Currently supported
1751
- * functions that can be invoked on a String:
1752
- * <ul>
1753
- * <li><b>startsWith</b>: Returns true if the current string value starts with the supplied string argument</li>
1754
- * <li><b>endsWith</b>: Returns true if the current string value ends with the supplied string argument</li>
1755
- * <li><b>matches</b>: Returns true if the current string value matches the supplied string argument used as a Java
1756
- * regular expression</li>
1757
- * <li><b>contains</b>: Returns true if the current string value contains the supplied string argument
1758
- * <p>
1759
- * When invoking against a constant, this should be avoided in favor of FilterValue.contains
1760
- * </p>
1761
- * </li>
1762
- * </ul>
1763
- * @param method -
1764
- * @param args -
1765
- * @return
1778
+ * Mapping from each aggregation name to the ordered list of columns it should be applied to in the resulting
1779
+ * roll-up table.
1766
1780
  */
1767
- invoke(method:string, ...args:FilterValue[]):FilterCondition;
1768
- toString():string;
1781
+ aggregations:{ [key: string]: Array<AggregationOperationType>; };
1769
1782
  /**
1770
- * Constructs a string for the filter API from the given parameter.
1771
- * @param input -
1772
- * @return
1783
+ * Optional parameter indicating if an extra leaf node should be added at the bottom of the hierarchy, showing the
1784
+ * rows in the underlying table which make up that grouping. Since these values might be a different type from the
1785
+ * rest of the column, any client code must check if TreeRow.hasChildren = false, and if so, interpret those values
1786
+ * as if they were Column.constituentType instead of Column.type. Defaults to false.
1773
1787
  */
1774
- static ofString(input:any):FilterValue;
1788
+ includeConstituents:boolean;
1789
+ includeOriginalColumns?:boolean|null;
1775
1790
  /**
1776
- * Constructs a boolean for the filter API from the given parameter.
1777
- * @param b -
1778
- * @return
1791
+ * Optional parameter indicating if original column descriptions should be included. Defaults to true.
1779
1792
  */
1780
- static ofBoolean(b:boolean):FilterValue;
1793
+ includeDescriptions:boolean;
1794
+
1795
+ constructor();
1781
1796
  }
1782
1797
 
1783
1798
  /**
1784
- * Exists to keep the dh.TableMap namespace so that the web UI can remain compatible with the DHE API, which still calls
1785
- * this type TableMap.
1786
- * @deprecated
1799
+ * Provides access to data in a table. Note that several methods present their response through Promises. This allows
1800
+ * the client to both avoid actually connecting to the server until necessary, and also will permit some changes not to
1801
+ * inform the UI right away that they have taken place.
1787
1802
  */
1788
- export class TableMap {
1789
- static readonly EVENT_KEYADDED:string;
1803
+ export class Table implements JoinableTable, HasEventHandling {
1804
+ readonly description?:string|null;
1805
+ readonly pluginName?:string|null;
1806
+ readonly layoutHints?:null|LayoutHints;
1807
+ static readonly EVENT_SIZECHANGED:string;
1808
+ static readonly EVENT_UPDATED:string;
1809
+ static readonly EVENT_ROWADDED:string;
1810
+ static readonly EVENT_ROWREMOVED:string;
1811
+ static readonly EVENT_ROWUPDATED:string;
1812
+ static readonly EVENT_SORTCHANGED:string;
1813
+ static readonly EVENT_FILTERCHANGED:string;
1814
+ static readonly EVENT_CUSTOMCOLUMNSCHANGED:string;
1790
1815
  static readonly EVENT_DISCONNECT:string;
1791
1816
  static readonly EVENT_RECONNECT:string;
1792
1817
  static readonly EVENT_RECONNECTFAILED:string;
1793
-
1794
- protected constructor();
1795
- }
1796
-
1797
- /**
1798
- * Describes the structure of the column, and if desired can be used to get access to the data to be rendered in this
1799
- * column.
1800
- */
1801
- export class Column {
1802
- /**
1803
- * If this column is part of a roll-up tree table, represents the type of the row data that can be found in this
1804
- * column for leaf nodes if includeConstituents is enabled. Otherwise, it is <b>null</b>.
1805
- * @return String
1806
- */
1807
- readonly constituentType?:string|null;
1808
- readonly description?:string|null;
1818
+ static readonly EVENT_REQUEST_FAILED:string;
1819
+ static readonly EVENT_REQUEST_SUCCEEDED:string;
1820
+ static readonly SIZE_UNCOALESCED:number;
1809
1821
 
1810
1822
  protected constructor();
1811
1823
 
1824
+ batch(userCode:(arg0:unknown)=>void):Promise<Table>;
1812
1825
  /**
1813
- * the value for this column in the given row. Type will be consistent with the type of the Column.
1814
- * @param row -
1815
- * @return Any
1816
- */
1817
- get(row:Row):any;
1818
- getFormat(row:Row):Format;
1819
- /**
1820
- * Creates a sort builder object, to be used when sorting by this column.
1821
- * @return {@link dh.Sort}
1822
- */
1823
- sort():Sort;
1824
- /**
1825
- * Creates a new value for use in filters based on this column. Used either as a parameter to another filter
1826
- * operation, or as a builder to create a filter operation.
1827
- * @return {@link dh.FilterValue}
1826
+ * Retrieve a column by the given name. You should prefer to always retrieve a new Column instance instead of
1827
+ * caching a returned value.
1828
+ * @param key -
1829
+ * @return {@link dh.Column}
1828
1830
  */
1829
- filter():FilterValue;
1831
+ findColumn(key:string):Column;
1830
1832
  /**
1831
- * a <b>CustomColumn</b> object to apply using `applyCustomColumns` with the expression specified.
1832
- * @param expression -
1833
- * @return {@link dh.CustomColumn}
1833
+ * Retrieve multiple columns specified by the given names.
1834
+ * @param keys -
1835
+ * @return {@link dh.Column} array
1834
1836
  */
1835
- formatColor(expression:string):CustomColumn;
1837
+ findColumns(keys:string[]):Column[];
1838
+ isBlinkTable():boolean;
1836
1839
  /**
1837
- * a <b>CustomColumn</b> object to apply using <b>applyCustomColumns</b> with the expression specified.
1838
- * @param expression -
1839
- * @return {@link dh.CustomColumn}
1840
+ * If .hasInputTable is true, you may call this method to gain access to an InputTable object which can be used to
1841
+ * mutate the data within the table. If the table is not an Input Table, the promise will be immediately rejected.
1842
+ * @return Promise of dh.InputTable
1840
1843
  */
1841
- formatNumber(expression:string):CustomColumn;
1844
+ inputTable():Promise<InputTable>;
1842
1845
  /**
1843
- * a <b>CustomColumn</b> object to apply using <b>applyCustomColumns</b> with the expression specified.
1844
- * @param expression -
1845
- * @return {@link dh.CustomColumn}
1846
+ * Indicates that this Table instance will no longer be used, and its connection to the server can be cleaned up.
1846
1847
  */
1847
- formatDate(expression:string):CustomColumn;
1848
- toString():string;
1848
+ close():void;
1849
+ getAttributes():string[];
1849
1850
  /**
1850
- * Label for this column.
1851
- * @return String
1851
+ * null if no property exists, a string if it is an easily serializable property, or a ```Promise
1852
+ * &lt;Table&gt;``` that will either resolve with a table or error out if the object can't be passed to JS.
1853
+ * @param attributeName -
1854
+ * @return Object
1852
1855
  */
1853
- get name():string;
1856
+ getAttribute(attributeName:string):unknown|undefined|null;
1854
1857
  /**
1855
- * True if this column is a partition column. Partition columns are used for filtering uncoalesced tables (see
1856
- * <b>isUncoalesced</b> property on <b>Table</b>)
1857
- * @return boolean
1858
+ * Replace the currently set sort on this table. Returns the previously set value. Note that the sort property will
1859
+ * immediately return the new value, but you may receive update events using the old sort before the new sort is
1860
+ * applied, and the <b>sortchanged</b> event fires. Reusing existing, applied sorts may enable this to perform
1861
+ * better on the server. The <b>updated</b> event will also fire, but <b>rowadded</b> and <b>rowremoved</b> will
1862
+ * not.
1863
+ * @param sort -
1864
+ * @return {@link dh.Sort} array
1858
1865
  */
1859
- get isPartitionColumn():boolean;
1866
+ applySort(sort:Sort[]):Array<Sort>;
1860
1867
  /**
1861
- *
1862
- * @deprecated do not use. Internal index of the column in the table, to be used as a key on the Row.
1863
- * @return int
1868
+ * Replace the currently set filters on the table. Returns the previously set value. Note that the filter property
1869
+ * will immediately return the new value, but you may receive update events using the old filter before the new one
1870
+ * is applied, and the <b>filterchanged</b> event fires. Reusing existing, applied filters may enable this to
1871
+ * perform better on the server. The <b>updated</b> event will also fire, but <b>rowadded</b> and <b>rowremoved</b>
1872
+ * will not.
1873
+ * @param filter -
1874
+ * @return {@link dh.FilterCondition} array
1864
1875
  */
1865
- get index():number;
1866
- get isSortable():boolean;
1876
+ applyFilter(filter:FilterCondition[]):Array<FilterCondition>;
1867
1877
  /**
1868
- * Type of the row data that can be found in this column.
1869
- * @return String
1878
+ * used when adding new filter and sort operations to the table, as long as they are present.
1879
+ * @param customColumns -
1880
+ * @return {@link dh.CustomColumn} array
1870
1881
  */
1871
- get type():string;
1882
+ applyCustomColumns(customColumns:Array<string|CustomColumn>):Array<CustomColumn>;
1872
1883
  /**
1873
- * Format entire rows colors using the expression specified. Returns a <b>CustomColumn</b> object to apply to a
1874
- * table using <b>applyCustomColumns</b> with the parameters specified.
1875
- * @param expression -
1876
- * @return {@link dh.CustomColumn}
1884
+ * If the columns parameter is not provided, all columns will be used. If the updateIntervalMs parameter is not
1885
+ * provided, a default of one second will be used. Until this is called, no data will be available. Invoking this
1886
+ * will result in events to be fired once data becomes available, starting with an `updated` event and a
1887
+ * <b>rowadded</b> event per row in that range. The returned object allows the viewport to be closed when no longer
1888
+ * needed.
1889
+ * @param firstRow -
1890
+ * @param lastRow -
1891
+ * @param columns -
1892
+ * @param updateIntervalMs -
1893
+ * @return {@link dh.TableViewportSubscription}
1877
1894
  */
1878
- static formatRowColor(expression:string):CustomColumn;
1895
+ setViewport(firstRow:number, lastRow:number, columns?:Array<Column>|undefined|null, updateIntervalMs?:number|undefined|null):TableViewportSubscription;
1879
1896
  /**
1880
- * a <b>CustomColumn</b> object to apply using <b>applyCustomColumns</b> with the expression specified.
1881
- * @param name -
1882
- * @param expression -
1883
- * @return {@link dh.CustomColumn}
1897
+ * Gets the currently visible viewport. If the current set of operations has not yet resulted in data, it will not
1898
+ * resolve until that data is ready. If this table is closed before the promise resolves, it will be rejected - to
1899
+ * separate the lifespan of this promise from the table itself, call
1900
+ * {@link TableViewportSubscription.getViewportData} on the result from {@link Table.setViewport}.
1901
+ * @return Promise of {@link dh.TableData}
1884
1902
  */
1885
- static createCustomColumn(name:string, expression:string):CustomColumn;
1886
- }
1887
-
1888
- /**
1889
- * Behaves like a {@link dh.Table} externally, but data, state, and viewports are managed by an entirely different
1890
- * mechanism, and so reimplemented here.
1891
- * <p>
1892
- * Any time a change is made, we build a new request and send it to the server, and wait for the updated state.
1893
- * <p>
1894
- * Semantics around getting updates from the server are slightly different - we don't "unset" the viewport here after
1895
- * operations are performed, but encourage the client code to re-set them to the desired position.
1896
- * <p>
1897
- * The table size will be -1 until a viewport has been fetched.
1898
- * <p>
1899
- * Similar to a table, a Tree Table provides access to subscribed viewport data on the current hierarchy. A different
1900
- * Row type is used within that viewport, showing the depth of that node within the tree and indicating details about
1901
- * whether it has children or is expanded. The Tree Table itself then provides the ability to change if a row is
1902
- * expanded or not. Methods used to control or check if a row should be expanded or not can be invoked on a TreeRow
1903
- * instance, or on the number of the row (thus allowing for expanding/collapsing rows which are not currently visible in
1904
- * the viewport).
1905
- * <p>
1906
- * Events and viewports are somewhat different from tables, due to the expense of computing the expanded/collapsed rows
1907
- * and count of children at each level of the hierarchy, and differences in the data that is available.
1908
- * <p>
1909
- * <ul>
1910
- * <li>There is no {@link Table.totalSize | totalSize} property.</li>
1911
- * <li>The viewport is not un-set when changes are made to filter or sort, but changes will continue to be streamed in.
1912
- * It is suggested that the viewport be changed to the desired position (usually the first N rows) after any filter/sort
1913
- * change is made. Likewise, {@link getViewportData} will always return the most recent data, and will not wait if a
1914
- * new operation is pending.</li>
1915
- * <li>Custom columns are not directly supported. If the TreeTable was created client-side, the original Table can have
1916
- * custom columns applied, and the TreeTable can be recreated.</li>
1917
- * <li>Whereas Table has a {@link Table.totalsTableConfig} property, it is defined here as a method,
1918
- * {@link getTotalsTableConfig}. This returns a promise so the config can be fetched asynchronously.</li>
1919
- * <li>Totals Tables for trees vary in behavior between tree tables and roll-up tables. This behavior is based on the
1920
- * original flat table used to produce the Tree Table - for a hierarchical table (i.e. Table.treeTable in the query
1921
- * config), the totals will include non-leaf nodes (since they are themselves actual rows in the table), but in a
1922
- * roll-up table, the totals only include leaf nodes (as non-leaf nodes are generated through grouping the contents of
1923
- * the original table). Roll-ups also have the {@link dh.includeConstituents} property, indicating that a
1924
- * {@link dh.Column} in the tree may have a {@link Column.constituentType} property reflecting that the type of cells
1925
- * where {@link TreeRow.hasChildren} is false will be different from usual.</li>
1926
- * </ul>
1927
- */
1928
- export class TreeTable implements HasEventHandling {
1903
+ getViewportData():Promise<TableData>;
1929
1904
  /**
1930
- * event.detail is the currently visible viewport data based on the active viewport configuration.
1905
+ * Creates a subscription to the specified columns, across all rows in the table. The optional parameter
1906
+ * updateIntervalMs may be specified to indicate how often the server should send updates, defaulting to one second
1907
+ * if omitted. Useful for charts or taking a snapshot of the table atomically. The initial snapshot will arrive in a
1908
+ * single event, but later changes will be sent as updates. However, this may still be very expensive to run from a
1909
+ * browser for very large tables. Each call to subscribe creates a new subscription, which must have <b>close()</b>
1910
+ * called on it to stop it, and all events are fired from the TableSubscription instance.
1911
+ * @param columns -
1912
+ * @param updateIntervalMs -
1913
+ * @return {@link dh.TableSubscription}
1931
1914
  */
1932
- static readonly EVENT_UPDATED:string;
1915
+ subscribe(columns:Array<Column>, updateIntervalMs?:number):TableSubscription;
1933
1916
  /**
1934
- * event.detail is the currently visible viewport data based on the active viewport configuration.
1917
+ * a new table containing the distinct tuples of values from the given columns that are present in the original
1918
+ * table. This table can be manipulated as any other table. Sorting is often desired as the default sort is the
1919
+ * order of appearance of values from the original table.
1920
+ * @param columns -
1921
+ * @return Promise of dh.Table
1935
1922
  */
1936
- static readonly EVENT_DISCONNECT:string;
1923
+ selectDistinct(columns:Column[]):Promise<Table>;
1937
1924
  /**
1938
- * event.detail is the currently visible viewport data based on the active viewport configuration.
1925
+ * Creates a new copy of this table, so it can be sorted and filtered separately, and maintain a different viewport.
1926
+ * @return Promise of dh.Table
1939
1927
  */
1940
- static readonly EVENT_RECONNECT:string;
1928
+ copy():Promise<Table>;
1941
1929
  /**
1942
- * event.detail is the currently visible viewport data based on the active viewport configuration.
1930
+ * a promise that will resolve to a Totals Table of this table. This table will obey the configurations provided as
1931
+ * a parameter, or will use the table's default if no parameter is provided, and be updated once per second as
1932
+ * necessary. Note that multiple calls to this method will each produce a new TotalsTable which must have close()
1933
+ * called on it when not in use.
1934
+ * @param config -
1935
+ * @return Promise of dh.TotalsTable
1943
1936
  */
1944
- static readonly EVENT_RECONNECTFAILED:string;
1937
+ getTotalsTable(config?:TotalsTableConfig|undefined|null):Promise<TotalsTable>;
1945
1938
  /**
1946
- * event.detail is the currently visible viewport data based on the active viewport configuration.
1939
+ * a promise that will resolve to a Totals Table of this table, ignoring any filters. See <b>getTotalsTable()</b>
1940
+ * above for more specifics.
1941
+ * @param config -
1942
+ * @return promise of dh.TotalsTable
1947
1943
  */
1948
- static readonly EVENT_REQUEST_FAILED:string;
1949
- readonly description?:string|null;
1950
- readonly layoutHints?:null|LayoutHints;
1951
-
1952
- protected constructor();
1953
-
1944
+ getGrandTotalsTable(config?:TotalsTableConfig|undefined|null):Promise<TotalsTable>;
1954
1945
  /**
1955
- * Expands the given node, so that its children are visible when they are in the viewport. The parameter can be the
1956
- * row index, or the row object itself. The second parameter is a boolean value, false by default, specifying if the
1957
- * row and all descendants should be fully expanded. Equivalent to `setExpanded(row, true)` with an optional third
1958
- * boolean parameter.
1959
- * @param row -
1960
- * @param expandDescendants -
1946
+ * a promise that will resolve to a new roll-up <b>TreeTable</b> of this table. Multiple calls to this method will
1947
+ * each produce a new <b>TreeTable</b> which must have close() called on it when not in use.
1948
+ * @param configObject -
1949
+ * @return Promise of dh.TreeTable
1961
1950
  */
1962
- expand(row:TreeRow|number, expandDescendants?:boolean):void;
1951
+ rollup(configObject:RollupConfig):Promise<TreeTable>;
1963
1952
  /**
1964
- * Collapses the given node, so that its children and descendants are not visible in the size or the viewport. The
1965
- * parameter can be the row index, or the row object itself. Equivalent to <b>setExpanded(row, false, false)</b>.
1966
- * @param row -
1953
+ * a promise that will resolve to a new `TreeTable` of this table. Multiple calls to this method will each produce a
1954
+ * new `TreeTable` which must have close() called on it when not in use.
1955
+ * @param configObject -
1956
+ * @return Promise dh.TreeTable
1967
1957
  */
1968
- collapse(row:TreeRow|number):void;
1958
+ treeTable(configObject:TreeTableConfig):Promise<TreeTable>;
1969
1959
  /**
1970
- * Specifies if the given node should be expanded or collapsed. If this node has children, and the value is changed,
1971
- * the size of the table will change. If node is to be expanded and the third parameter, <b>expandDescendants</b>,
1972
- * is true, then its children will also be expanded.
1973
- * @param row -
1974
- * @param isExpanded -
1975
- * @param expandDescendants -
1960
+ * a "frozen" version of this table (a server-side snapshot of the entire source table). Viewports on the frozen
1961
+ * table will not update. This does not change the original table, and the new table will not have any of the client
1962
+ * side sorts/filters/columns. New client side sorts/filters/columns can be added to the frozen copy.
1963
+ * @return Promise of dh.Table
1976
1964
  */
1977
- setExpanded(row:TreeRow|number, isExpanded:boolean, expandDescendants?:boolean):void;
1978
- expandAll():void;
1979
- collapseAll():void;
1965
+ freeze():Promise<Table>;
1966
+ snapshot(baseTable:Table, doInitialSnapshot?:boolean, stampColumns?:string[]):Promise<Table>;
1980
1967
  /**
1981
- * true if the given row is expanded, false otherwise. Equivalent to `TreeRow.isExpanded`, if an instance of the row
1982
- * is available
1983
- * @param row -
1984
- * @return boolean
1968
+ *
1969
+ * @inheritDoc
1970
+ * @deprecated
1985
1971
  */
1986
- isExpanded(row:TreeRow|number):boolean;
1987
- setViewport(firstRow:number, lastRow:number, columns?:Array<Column>|undefined|null, updateInterval?:number|undefined|null):void;
1988
- getViewportData():Promise<TreeViewportData>;
1972
+ join(joinType:string, rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null, asOfMatchRule?:string|undefined|null):Promise<Table>;
1973
+ asOfJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null, asOfMatchRule?:string|undefined|null):Promise<Table>;
1974
+ crossJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null, reserveBits?:number|undefined|null):Promise<Table>;
1975
+ exactJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>):Promise<Table>;
1976
+ naturalJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>):Promise<Table>;
1977
+ byExternal(keys:object, dropKeys?:boolean):Promise<PartitionedTable>;
1989
1978
  /**
1990
- * Indicates that the table will no longer be used, and server resources can be freed.
1979
+ * Creates a new PartitionedTable from the contents of the current table, partitioning data based on the specified
1980
+ * keys.
1981
+ * @param keys -
1982
+ * @param dropKeys -
1983
+ * @return Promise dh.PartitionedTable
1991
1984
  */
1992
- close():void;
1993
- typedTicket():dhinternal.io.deephaven.proto.ticket_pb.TypedTicket;
1985
+ partitionBy(keys:object, dropKeys?:boolean):Promise<PartitionedTable>;
1994
1986
  /**
1995
- * Applies the given sort to all levels of the tree. Returns the previous sort in use.
1996
- * @param sort -
1997
- * @return {@link dh.Sort} array
1987
+ * a promise that will resolve to ColumnStatistics for the column of this table.
1988
+ * @param column -
1989
+ * @return Promise of dh.ColumnStatistics
1998
1990
  */
1999
- applySort(sort:Sort[]):Array<Sort>;
1991
+ getColumnStatistics(column:Column):Promise<ColumnStatistics>;
2000
1992
  /**
2001
- * Applies the given filter to the contents of the tree in such a way that if any node is visible, then any parent
2002
- * node will be visible as well even if that parent node would not normally be visible due to the filter's
2003
- * condition. Returns the previous sort in use.
2004
- * @param filter -
2005
- * @return {@link dh.FilterCondition} array
1993
+ * Seek the row matching the data provided
1994
+ * @param startingRow - Row to start the seek from
1995
+ * @param column - Column to seek for value on
1996
+ * @param valueType - Type of value provided
1997
+ * @param seekValue - Value to seek
1998
+ * @param insensitive - Optional value to flag a search as case-insensitive. Defaults to `false`.
1999
+ * @param contains - Optional value to have the seek value do a contains search instead of exact equality. Defaults to
2000
+ * `false`.
2001
+ * @param isBackwards - Optional value to seek backwards through the table instead of forwards. Defaults to `false`.
2002
+ * @return A promise that resolves to the row value found.
2006
2003
  */
2007
- applyFilter(filter:FilterCondition[]):Array<FilterCondition>;
2004
+ seekRow(startingRow:number, column:Column, valueType:ValueTypeType, seekValue:any, insensitive?:boolean|undefined|null, contains?:boolean|undefined|null, isBackwards?:boolean|undefined|null):Promise<number>;
2005
+ toString():string;
2008
2006
  /**
2009
- * a column with the given name, or throws an exception if it cannot be found
2010
- * @param key -
2011
- * @return {@link dh.Column}
2007
+ * True if this table represents a user Input Table (created by InputTable.newInputTable). When true, you may call
2008
+ * .inputTable() to add or remove data from the underlying table.
2009
+ * @return boolean
2012
2010
  */
2013
- findColumn(key:string):Column;
2011
+ get hasInputTable():boolean;
2014
2012
  /**
2015
- * an array with all of the named columns in order, or throws an exception if one cannot be found.
2016
- * @param keys -
2013
+ * The columns that are present on this table. This is always all possible columns. If you specify fewer columns in
2014
+ * .setViewport(), you will get only those columns in your ViewportData. <b>Number size</b> The total count of rows
2015
+ * in the table. The size can and will change; see the <b>sizechanged</b> event for details. Size will be negative
2016
+ * in exceptional cases (eg. the table is uncoalesced, see the <b>isUncoalesced</b> property for details).
2017
2017
  * @return {@link dh.Column} array
2018
2018
  */
2019
- findColumns(keys:string[]):Column[];
2019
+ get columns():Array<Column>;
2020
2020
  /**
2021
- * Provides Table-like selectDistinct functionality, but with a few quirks, since it is only fetching the distinct
2022
- * values for the given columns in the source table:
2023
- * <ul>
2024
- * <li>Rollups may make no sense, since values are aggregated.</li>
2025
- * <li>Values found on orphaned (and removed) nodes will show up in the resulting table, even though they are not in
2026
- * the tree.</li>
2027
- * <li>Values found on parent nodes which are only present in the tree since a child is visible will not be present
2028
- * in the resulting table.</li>
2029
- * </ul>
2021
+ * The default configuration to be used when building a <b>TotalsTable</b> for this table.
2022
+ * @return dh.TotalsTableConfig
2030
2023
  */
2031
- selectDistinct(columns:Column[]):Promise<Table>;
2032
- getTotalsTableConfig():Promise<TotalsTableConfig>;
2033
- getTotalsTable(config?:object):Promise<TotalsTable>;
2034
- getGrandTotalsTable(config?:object):Promise<TotalsTable>;
2024
+ get totalsTableConfig():TotalsTableConfig;
2035
2025
  /**
2036
- * a new copy of this treetable, so it can be sorted and filtered separately, and maintain a different viewport.
2037
- * Unlike Table, this will _not_ copy the filter or sort, since tree table viewport semantics differ, and without a
2038
- * viewport set, the treetable doesn't evaluate these settings, and they aren't readable on the properties. Expanded
2039
- * state is also not copied.
2040
- * @return Promise of dh.TreeTable
2026
+ * An ordered list of Sorts to apply to the table. To update, call <b>applySort()</b>. Note that this getter will
2027
+ * return the new value immediately, even though it may take a little time to update on the server. You may listen
2028
+ * for the <b>sortchanged</b> event to know when to update the UI.
2029
+ * @return {@link dh.Sort} array
2041
2030
  */
2042
- copy():Promise<TreeTable>;
2031
+ get sort():Array<Sort>;
2043
2032
  /**
2044
- * The current filter configuration of this Tree Table.
2045
- * @return {@link dh.FilterCondition} array
2033
+ * An ordered list of custom column formulas to add to the table, either adding new columns or replacing existing
2034
+ * ones. To update, call <b>applyCustomColumns()</b>.
2035
+ * @return {@link dh.CustomColumn} array
2046
2036
  */
2047
- get filter():Array<FilterCondition>;
2037
+ get customColumns():Array<CustomColumn>;
2048
2038
  /**
2049
- * True if this is a roll-up and will provide the original rows that make up each grouping.
2039
+ * True if this table may receive updates from the server, including size changed events, updated events after
2040
+ * initial snapshot.
2050
2041
  * @return boolean
2051
2042
  */
2052
- get includeConstituents():boolean;
2053
- get groupedColumns():Array<Column>;
2043
+ get isRefreshing():boolean;
2054
2044
  /**
2055
- * True if this table has been closed.
2056
- * @return boolean
2045
+ * An ordered list of Filters to apply to the table. To update, call applyFilter(). Note that this getter will
2046
+ * return the new value immediately, even though it may take a little time to update on the server. You may listen
2047
+ * for the <b>filterchanged</b> event to know when to update the UI.
2048
+ * @return {@link dh.FilterCondition} array
2057
2049
  */
2058
- get isClosed():boolean;
2050
+ get filter():Array<FilterCondition>;
2059
2051
  /**
2060
- * The current number of rows given the table's contents and the various expand/collapse states of each node. (No
2061
- * totalSize is provided at this time; its definition becomes unclear between roll-up and tree tables, especially
2062
- * when considering collapse/expand states).
2052
+ * The total count of the rows in the table, excluding any filters. Unlike <b>size</b>, changes to this value will
2053
+ * not result in any event. <b>Sort[] sort</b> an ordered list of Sorts to apply to the table. To update, call
2054
+ * applySort(). Note that this getter will return the new value immediately, even though it may take a little time
2055
+ * to update on the server. You may listen for the <b>sortchanged</b> event to know when to update the UI.
2063
2056
  * @return double
2064
2057
  */
2065
- get size():number;
2058
+ get totalSize():number;
2066
2059
  /**
2067
- * The columns that can be shown in this Tree Table.
2068
- * @return {@link dh.Column} array
2060
+ * The total count of rows in the table. The size can and will change; see the <b>sizechanged</b> event for details.
2061
+ * Size will be negative in exceptional cases (e.g., the table is uncoalesced; see the <b>isUncoalesced</b>
2062
+ * property). for details).
2063
+ * @return double
2069
2064
  */
2070
- get columns():Array<Column>;
2065
+ get size():number;
2071
2066
  /**
2072
- * The current sort configuration of this Tree Table
2073
- * @return {@link dh.Sort} array.
2067
+ * True if this table has been closed.
2068
+ * @return boolean
2074
2069
  */
2075
- get sort():Array<Sort>;
2070
+ get isClosed():boolean;
2076
2071
  /**
2077
- * True if this table may receive updates from the server, including size changed events, updated events after
2078
- * initial snapshot.
2072
+ * Read-only. True if this table is uncoalesced. Set a viewport or filter on the partition columns to coalesce the
2073
+ * table. Check the <b>isPartitionColumn</b> property on the table columns to retrieve the partition columns. Size
2074
+ * will be unavailable until table is coalesced.
2079
2075
  * @return boolean
2080
2076
  */
2081
- get isRefreshing():boolean;
2077
+ get isUncoalesced():boolean;
2082
2078
  /**
2083
2079
  * Listen for events on this object.
2084
2080
  * @param name - the name of the event to listen for
@@ -2097,6 +2093,22 @@ export namespace dh {
2097
2093
  * @typeParam T -
2098
2094
  */
2099
2095
  removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
2096
+ /**
2097
+ * a Sort than can be used to reverse a table. This can be passed into n array in applySort. Note that Tree Tables
2098
+ * do not support reverse.
2099
+ * @return {@link dh.Sort}
2100
+ */
2101
+ static reverse():Sort;
2102
+ }
2103
+
2104
+ /**
2105
+ * Presently optional and not used by the server, this allows the client to specify some authentication details. String
2106
+ * authToken <i>- base 64 encoded auth token. String serviceId -</i> The service ID to use for the connection.
2107
+ */
2108
+ export class ConnectOptions {
2109
+ headers:{ [key: string]: string; };
2110
+
2111
+ constructor();
2100
2112
  }
2101
2113
 
2102
2114
  /**
@@ -2188,6 +2200,51 @@ export namespace dh {
2188
2200
  removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
2189
2201
  }
2190
2202
 
2203
+ /**
2204
+ * Describes a Sort present on the table. No visible constructor, created through the use of Column.sort(), will be tied
2205
+ * to that particular column data. Sort instances are immutable, and use a builder pattern to make modifications. All
2206
+ * methods return a new Sort instance.
2207
+ */
2208
+ export class Sort {
2209
+ static readonly ASCENDING:string;
2210
+ static readonly DESCENDING:string;
2211
+ static readonly REVERSE:string;
2212
+
2213
+ protected constructor();
2214
+
2215
+ /**
2216
+ * Builds a Sort instance to sort values in ascending order.
2217
+ * @return {@link dh.Sort}
2218
+ */
2219
+ asc():Sort;
2220
+ /**
2221
+ * Builds a Sort instance to sort values in descending order.
2222
+ * @return {@link dh.Sort}
2223
+ */
2224
+ desc():Sort;
2225
+ /**
2226
+ * Builds a Sort instance which takes the absolute value before applying order.
2227
+ * @return {@link dh.Sort}
2228
+ */
2229
+ abs():Sort;
2230
+ toString():string;
2231
+ /**
2232
+ * True if the absolute value of the column should be used when sorting; defaults to false.
2233
+ * @return boolean
2234
+ */
2235
+ get isAbs():boolean;
2236
+ /**
2237
+ * The column which is sorted.
2238
+ * @return {@link dh.Column}
2239
+ */
2240
+ get column():Column;
2241
+ /**
2242
+ * The direction of this sort, either <b>ASC</b>, <b>DESC</b>, or <b>REVERSE</b>.
2243
+ * @return String
2244
+ */
2245
+ get direction():string;
2246
+ }
2247
+
2191
2248
  export class IdeSession implements HasEventHandling {
2192
2249
  static readonly EVENT_COMMANDSTARTED:string;
2193
2250
  static readonly EVENT_REQUEST_FAILED:string;
@@ -2256,132 +2313,44 @@ export namespace dh {
2256
2313
  removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
2257
2314
  }
2258
2315
 
2259
- /**
2260
- * This class allows iteration over non-contiguous indexes. In the future, this will support the EcmaScript 2015
2261
- * Iteration protocol, but for now has one method which returns an iterator, and also supports querying the size.
2262
- * Additionally, we may add support for creating RangeSet objects to better serve some use cases.
2263
- */
2264
- export class RangeSet {
2265
- protected constructor();
2266
-
2267
- static ofRange(first:number, last:number):RangeSet;
2268
- static ofItems(rows:number[]):RangeSet;
2269
- static ofRanges(ranges:RangeSet[]):RangeSet;
2270
- static ofSortedRanges(ranges:RangeSet[]):RangeSet;
2271
- /**
2272
- * a new iterator over all indexes in this collection.
2273
- * @return Iterator of {@link dh.LongWrapper}
2274
- */
2275
- iterator():Iterator<LongWrapper>;
2276
- /**
2277
- * The total count of items contained in this collection. In some cases this can be expensive to compute, and
2278
- * generally should not be needed except for debugging purposes, or preallocating space (i.e., do not call this
2279
- * property each time through a loop).
2280
- * @return double
2281
- */
2282
- get size():number;
2283
- }
2284
-
2285
- export class LoginCredentials {
2286
- type?:string|null;
2287
- username?:string|null;
2288
- token?:string|null;
2289
-
2316
+ export class Ide {
2290
2317
  constructor();
2291
- }
2292
2318
 
2293
- /**
2294
- * Presently, this is the entrypoint into the Deephaven JS API. By creating an instance of this with the server URL and
2295
- * some options, JS applications can run code on the server, and interact with available exportable objects.
2296
- */
2297
- export class IdeConnection implements HasEventHandling {
2298
2319
  /**
2299
2320
  * @deprecated
2300
2321
  */
2301
- static readonly HACK_CONNECTION_FAILURE:string;
2302
- static readonly EVENT_DISCONNECT:string;
2303
- static readonly EVENT_RECONNECT:string;
2304
- static readonly EVENT_SHUTDOWN:string;
2305
-
2322
+ getExistingSession(websocketUrl:string, authToken:string, serviceId:string, language:string):Promise<IdeSession>;
2306
2323
  /**
2307
- * creates a new instance, from which console sessions can be made. <b>options</b> are optional.
2308
- * @param serverUrl - The url used when connecting to the server. Read-only.
2309
- * @param connectOptions - Optional Object
2310
- * @param fromJava - Optional boolean
2311
2324
  * @deprecated
2312
2325
  */
2313
- constructor(serverUrl:string, connectOptions?:ConnectOptions, fromJava?:boolean);
2326
+ static getExistingSession(websocketUrl:string, authToken:string, serviceId:string, language:string):Promise<IdeSession>;
2327
+ }
2314
2328
 
2329
+ /**
2330
+ * Configuration object for running Table.treeTable to produce a hierarchical view of a given "flat" table.
2331
+ *
2332
+ * Like TotalsTableConfig, `TreeTableConfig` supports an operation map indicating how to aggregate the data, as well as
2333
+ * an array of column names which will be the layers in the roll-up tree, grouped at each level. An additional optional
2334
+ * value can be provided describing the strategy the engine should use when grouping the rows.
2335
+ */
2336
+ export class TreeTableConfig {
2315
2337
  /**
2316
- * closes the current connection, releasing any resources on the server or client.
2317
- */
2318
- close():void;
2319
- running():Promise<IdeConnection>;
2320
- getObject(definitionObject:dh.ide.VariableDescriptor):Promise<any>;
2321
- subscribeToFieldUpdates(callback:(arg0:dh.ide.VariableChanges)=>void):()=>void;
2322
- /**
2323
- * Register a callback function to handle any log messages that are emitted on the server. Returns a function ,
2324
- * which can be invoked to remove this log handler. Any log handler registered in this way will receive as many old
2325
- * log messages as are presently available.
2326
- * @param callback -
2327
- * @return {@link io.deephaven.web.shared.fu.JsRunnable}
2338
+ * The column representing the unique ID for each item
2328
2339
  */
2329
- onLogMessage(callback:(arg0:dh.ide.LogItem)=>void):()=>void;
2330
- startSession(type:string):Promise<IdeSession>;
2331
- getConsoleTypes():Promise<Array<string>>;
2332
- getWorkerHeapInfo():Promise<WorkerHeapInfo>;
2340
+ idColumn:string;
2333
2341
  /**
2334
- * Listen for events on this object.
2335
- * @param name - the name of the event to listen for
2336
- * @param callback - a function to call when the event occurs
2337
- * @return Returns a cleanup function.
2338
- * @typeParam T - the type of the data that the event will provide
2342
+ * The column representing the parent ID for each item
2339
2343
  */
2340
- addEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):()=>void;
2341
- nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<CustomEvent<T>>;
2342
- hasListeners(name:string):boolean;
2344
+ parentColumn:string;
2343
2345
  /**
2344
- * Removes an event listener added to this table.
2345
- * @param name -
2346
- * @param callback -
2347
- * @return
2348
- * @typeParam T -
2346
+ * Optional parameter indicating if items with an invalid parent ID should be promoted to root. Defaults to false.
2349
2347
  */
2350
- removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
2351
- }
2352
-
2353
-
2354
- /**
2355
- * This enum describes the name of each supported operation/aggregation type when creating a `TreeTable`.
2356
- */
2357
- type AggregationOperationType = string;
2358
- export class AggregationOperation {
2359
- static readonly COUNT:AggregationOperationType;
2360
- static readonly COUNT_DISTINCT:AggregationOperationType;
2361
- static readonly DISTINCT:AggregationOperationType;
2362
- static readonly MIN:AggregationOperationType;
2363
- static readonly MAX:AggregationOperationType;
2364
- static readonly SUM:AggregationOperationType;
2365
- static readonly ABS_SUM:AggregationOperationType;
2366
- static readonly VAR:AggregationOperationType;
2367
- static readonly AVG:AggregationOperationType;
2368
- static readonly STD:AggregationOperationType;
2369
- static readonly FIRST:AggregationOperationType;
2370
- static readonly LAST:AggregationOperationType;
2371
- static readonly UNIQUE:AggregationOperationType;
2372
- static readonly SKIP:AggregationOperationType;
2373
- }
2374
-
2375
- type ValueTypeType = string;
2376
- export class ValueType {
2377
- static readonly STRING:ValueTypeType;
2378
- static readonly NUMBER:ValueTypeType;
2379
- static readonly DOUBLE:ValueTypeType;
2380
- static readonly LONG:ValueTypeType;
2381
- static readonly DATETIME:ValueTypeType;
2382
- static readonly BOOLEAN:ValueTypeType;
2348
+ promoteOrphansToRoot:boolean;
2349
+
2350
+ constructor();
2383
2351
  }
2384
2352
 
2353
+
2385
2354
  type SearchDisplayModeType = string;
2386
2355
  export class SearchDisplayMode {
2387
2356
  static readonly SEARCH_DISPLAY_DEFAULT:SearchDisplayModeType;
@@ -2405,6 +2374,37 @@ export namespace dh {
2405
2374
  static readonly TREEMAP:VariableTypeType;
2406
2375
  }
2407
2376
 
2377
+ type ValueTypeType = string;
2378
+ export class ValueType {
2379
+ static readonly STRING:ValueTypeType;
2380
+ static readonly NUMBER:ValueTypeType;
2381
+ static readonly DOUBLE:ValueTypeType;
2382
+ static readonly LONG:ValueTypeType;
2383
+ static readonly DATETIME:ValueTypeType;
2384
+ static readonly BOOLEAN:ValueTypeType;
2385
+ }
2386
+
2387
+ /**
2388
+ * This enum describes the name of each supported operation/aggregation type when creating a `TreeTable`.
2389
+ */
2390
+ type AggregationOperationType = string;
2391
+ export class AggregationOperation {
2392
+ static readonly COUNT:AggregationOperationType;
2393
+ static readonly COUNT_DISTINCT:AggregationOperationType;
2394
+ static readonly DISTINCT:AggregationOperationType;
2395
+ static readonly MIN:AggregationOperationType;
2396
+ static readonly MAX:AggregationOperationType;
2397
+ static readonly SUM:AggregationOperationType;
2398
+ static readonly ABS_SUM:AggregationOperationType;
2399
+ static readonly VAR:AggregationOperationType;
2400
+ static readonly AVG:AggregationOperationType;
2401
+ static readonly STD:AggregationOperationType;
2402
+ static readonly FIRST:AggregationOperationType;
2403
+ static readonly LAST:AggregationOperationType;
2404
+ static readonly UNIQUE:AggregationOperationType;
2405
+ static readonly SKIP:AggregationOperationType;
2406
+ }
2407
+
2408
2408
  }
2409
2409
 
2410
2410
  export namespace dh.ide {
@@ -2418,6 +2418,45 @@ export namespace dh.ide {
2418
2418
  name?:string|null;
2419
2419
  }
2420
2420
  /**
2421
+ * Indicates the result of code run on the server.
2422
+ */
2423
+ export interface CommandResult {
2424
+ /**
2425
+ * Describes changes made in the course of this command.
2426
+ * @return {@link dh.ide.VariableChanges}.
2427
+ */
2428
+ get changes():VariableChanges;
2429
+ /**
2430
+ * If the command failed, the error message will be provided here.
2431
+ * @return String
2432
+ */
2433
+ get error():string;
2434
+ }
2435
+ /**
2436
+ * Describes changes in the current set of variables in the script session. Note that variables that changed value
2437
+ * without changing type will be included as <b>updated</b>, but if a new value with one type replaces an old value with
2438
+ * a different type, this will be included as an entry in both <b>removed</b> and <b>created</b> to indicate the old and
2439
+ * new types.
2440
+ */
2441
+ export interface VariableChanges {
2442
+ /**
2443
+ *
2444
+ * @return The variables that no longer exist after this operation, or were replaced by some variable with a
2445
+ * different type.
2446
+ */
2447
+ get removed():Array<VariableDefinition>;
2448
+ /**
2449
+ *
2450
+ * @return The variables that were created by this operation, or have a new type.
2451
+ */
2452
+ get created():Array<VariableDefinition>;
2453
+ /**
2454
+ *
2455
+ * @return The variables that changed value during this operation.
2456
+ */
2457
+ get updated():Array<VariableDefinition>;
2458
+ }
2459
+ /**
2421
2460
  * Represents a serialized fishlib LogRecord, suitable for display on javascript clients. A log entry sent from the
2422
2461
  * server.
2423
2462
  */
@@ -2479,103 +2518,10 @@ export namespace dh.ide {
2479
2518
  */
2480
2519
  get applicationName():string;
2481
2520
  }
2482
- /**
2483
- * Describes changes in the current set of variables in the script session. Note that variables that changed value
2484
- * without changing type will be included as <b>updated</b>, but if a new value with one type replaces an old value with
2485
- * a different type, this will be included as an entry in both <b>removed</b> and <b>created</b> to indicate the old and
2486
- * new types.
2487
- */
2488
- export interface VariableChanges {
2489
- /**
2490
- *
2491
- * @return The variables that no longer exist after this operation, or were replaced by some variable with a
2492
- * different type.
2493
- */
2494
- get removed():Array<VariableDefinition>;
2495
- /**
2496
- *
2497
- * @return The variables that were created by this operation, or have a new type.
2498
- */
2499
- get created():Array<VariableDefinition>;
2500
- /**
2501
- *
2502
- * @return The variables that changed value during this operation.
2503
- */
2504
- get updated():Array<VariableDefinition>;
2505
- }
2506
- /**
2507
- * Indicates the result of code run on the server.
2508
- */
2509
- export interface CommandResult {
2510
- /**
2511
- * Describes changes made in the course of this command.
2512
- * @return {@link dh.ide.VariableChanges}.
2513
- */
2514
- get changes():VariableChanges;
2515
- /**
2516
- * If the command failed, the error message will be provided here.
2517
- * @return String
2518
- */
2519
- get error():string;
2520
- }
2521
2521
  }
2522
2522
 
2523
2523
  export namespace dh.i18n {
2524
2524
 
2525
- /**
2526
- * Exported wrapper of the GWT NumberFormat, plus LongWrapper support
2527
- *
2528
- * Utility class to parse and format numbers, using the same format patterns as are supported by the standard Java
2529
- * implementation used in the Deephaven server and swing client. Works for numeric types including BigInteger and
2530
- * BigDecimal.
2531
- */
2532
- export class NumberFormat {
2533
- /**
2534
- * Creates a new number format instance. This generally should be avoided in favor of the static `getFormat`
2535
- * function, which will create and cache an instance so that later calls share the same instance.
2536
- * @param pattern -
2537
- */
2538
- constructor(pattern:string);
2539
-
2540
- /**
2541
- * a number format instance matching the specified format. If this format has not been specified before, a new
2542
- * instance will be created and cached for later reuse. Prefer this method to calling the constructor directly to
2543
- * take advantage of caching
2544
- * @param pattern -
2545
- * @return dh.i18n.NumberFormat
2546
- */
2547
- static getFormat(pattern:string):NumberFormat;
2548
- /**
2549
- * Parses the given text using the cached format matching the given pattern.
2550
- * @param pattern -
2551
- * @param text -
2552
- * @return double
2553
- */
2554
- static parse(pattern:string, text:string):number;
2555
- /**
2556
- * Formats the specified number (or Java <b>long</b>, <b>BigInteger</b> or <b>BigDecimal</b> value) using the cached
2557
- * format matching the given pattern string.
2558
- * @param pattern -
2559
- * @param number -
2560
- * @return String
2561
- */
2562
- static format(pattern:string, number:number|dh.BigIntegerWrapper|dh.BigDecimalWrapper|dh.LongWrapper):string;
2563
- /**
2564
- * Parses the given text using this instance's pattern into a JS Number.
2565
- * @param text -
2566
- * @return double
2567
- */
2568
- parse(text:string):number;
2569
- /**
2570
- * Formats the specified number (or Java `long`, `BigInteger` or `BigDecimal` value) using this instance's pattern.
2571
- * @param number -
2572
- * @return String
2573
- */
2574
- format(number:number|dh.BigIntegerWrapper|dh.BigDecimalWrapper|dh.LongWrapper):string;
2575
- toString():string;
2576
- }
2577
-
2578
-
2579
2525
  /**
2580
2526
  * Largely an exported wrapper for the GWT DateFormat, but also includes support for formatting nanoseconds as an
2581
2527
  * additional 6 decimal places after the rest of the number.
@@ -2768,27 +2714,125 @@ export namespace dh.i18n {
2768
2714
  protected constructor();
2769
2715
 
2770
2716
  /**
2771
- * Factory method which creates timezone instances from one of the supported keys.
2772
- * @param tzCode -
2773
- * @return dh.i18n.TimeZone
2717
+ * Factory method which creates timezone instances from one of the supported keys.
2718
+ * @param tzCode -
2719
+ * @return dh.i18n.TimeZone
2720
+ */
2721
+ static getTimeZone(tzCode:string):TimeZone;
2722
+ /**
2723
+ * the standard offset of this timezone, in minutes
2724
+ * @return int
2725
+ */
2726
+ get standardOffset():number;
2727
+ /**
2728
+ * the timezone code that represents this `TimeZone`, usually the same key as was use to create this instance
2729
+ * @return String
2730
+ */
2731
+ get id():string;
2732
+ }
2733
+
2734
+ /**
2735
+ * Exported wrapper of the GWT NumberFormat, plus LongWrapper support
2736
+ *
2737
+ * Utility class to parse and format numbers, using the same format patterns as are supported by the standard Java
2738
+ * implementation used in the Deephaven server and swing client. Works for numeric types including BigInteger and
2739
+ * BigDecimal.
2740
+ */
2741
+ export class NumberFormat {
2742
+ /**
2743
+ * Creates a new number format instance. This generally should be avoided in favor of the static `getFormat`
2744
+ * function, which will create and cache an instance so that later calls share the same instance.
2745
+ * @param pattern -
2746
+ */
2747
+ constructor(pattern:string);
2748
+
2749
+ /**
2750
+ * a number format instance matching the specified format. If this format has not been specified before, a new
2751
+ * instance will be created and cached for later reuse. Prefer this method to calling the constructor directly to
2752
+ * take advantage of caching
2753
+ * @param pattern -
2754
+ * @return dh.i18n.NumberFormat
2755
+ */
2756
+ static getFormat(pattern:string):NumberFormat;
2757
+ /**
2758
+ * Parses the given text using the cached format matching the given pattern.
2759
+ * @param pattern -
2760
+ * @param text -
2761
+ * @return double
2762
+ */
2763
+ static parse(pattern:string, text:string):number;
2764
+ /**
2765
+ * Formats the specified number (or Java <b>long</b>, <b>BigInteger</b> or <b>BigDecimal</b> value) using the cached
2766
+ * format matching the given pattern string.
2767
+ * @param pattern -
2768
+ * @param number -
2769
+ * @return String
2770
+ */
2771
+ static format(pattern:string, number:number|dh.BigIntegerWrapper|dh.BigDecimalWrapper|dh.LongWrapper):string;
2772
+ /**
2773
+ * Parses the given text using this instance's pattern into a JS Number.
2774
+ * @param text -
2775
+ * @return double
2776
+ */
2777
+ parse(text:string):number;
2778
+ /**
2779
+ * Formats the specified number (or Java `long`, `BigInteger` or `BigDecimal` value) using this instance's pattern.
2780
+ * @param number -
2781
+ * @return String
2782
+ */
2783
+ format(number:number|dh.BigIntegerWrapper|dh.BigDecimalWrapper|dh.LongWrapper):string;
2784
+ toString():string;
2785
+ }
2786
+
2787
+
2788
+ }
2789
+
2790
+ export namespace dh.plot {
2791
+
2792
+ /**
2793
+ * Provides access to the data for displaying in a figure.
2794
+ */
2795
+ export interface Series {
2796
+ readonly isLinesVisible?:boolean|null;
2797
+ readonly pointLabelFormat?:string|null;
2798
+ readonly yToolTipPattern?:string|null;
2799
+ readonly shapeSize?:number|null;
2800
+ readonly xToolTipPattern?:string|null;
2801
+ readonly isShapesVisible?:boolean|null;
2802
+
2803
+ subscribe(forceDisableDownsample?:DownsampleOptions):void;
2804
+ /**
2805
+ * Disable updates for this Series.
2806
+ */
2807
+ unsubscribe():void;
2808
+ get shape():string;
2809
+ /**
2810
+ * Contains details on how to access data within the chart for this series. keyed with the way that this series uses
2811
+ * the axis.
2812
+ * @return {@link dh.plot.SeriesDataSource}
2774
2813
  */
2775
- static getTimeZone(tzCode:string):TimeZone;
2814
+ get sources():SeriesDataSource[];
2815
+ get lineColor():string;
2776
2816
  /**
2777
- * the standard offset of this timezone, in minutes
2817
+ * The plotting style to use for this series. See <b>SeriesPlotStyle</b> enum for more details.
2778
2818
  * @return int
2779
2819
  */
2780
- get standardOffset():number;
2820
+ get plotStyle():SeriesPlotStyleType;
2821
+ get oneClick():OneClick;
2822
+ get gradientVisible():boolean;
2823
+ get shapeColor():string;
2781
2824
  /**
2782
- * the timezone code that represents this `TimeZone`, usually the same key as was use to create this instance
2825
+ * The name for this series.
2783
2826
  * @return String
2784
2827
  */
2785
- get id():string;
2828
+ get name():string;
2829
+ /**
2830
+ * indicates that this series belongs to a MultiSeries, null otherwise
2831
+ * @return dh.plot.MultiSeries
2832
+ */
2833
+ get multiSeries():MultiSeries;
2834
+ get shapeLabel():string;
2786
2835
  }
2787
-
2788
- }
2789
-
2790
- export namespace dh.plot {
2791
-
2792
2836
  /**
2793
2837
  * Defines one axis used with by series. These instances will be found both on the Chart and the Series instances, and
2794
2838
  * may be shared between Series instances.
@@ -2858,26 +2902,6 @@ export namespace dh.plot {
2858
2902
  get minRange():number;
2859
2903
  }
2860
2904
  /**
2861
- * Describes how to access and display data required within a series.
2862
- */
2863
- export interface SeriesDataSource {
2864
- /**
2865
- * the type of data stored in the underlying table's Column.
2866
- * @return String
2867
- */
2868
- get columnType():string;
2869
- /**
2870
- * the axis that this source should be drawn on.
2871
- * @return dh.plot.Axis
2872
- */
2873
- get axis():Axis;
2874
- /**
2875
- * the feature of this series represented by this source. See the <b>SourceType</b> enum for more details.
2876
- * @return int
2877
- */
2878
- get type():SourceTypeType;
2879
- }
2880
- /**
2881
2905
  * Describes a template that will be used to make new series instances when a new table added to a plotBy.
2882
2906
  */
2883
2907
  export interface MultiSeries {
@@ -2892,83 +2916,54 @@ export namespace dh.plot {
2892
2916
  */
2893
2917
  get plotStyle():SeriesPlotStyleType;
2894
2918
  }
2919
+ export interface OneClick {
2920
+ setValueForColumn(columnName:string, value:any):void;
2921
+ getValueForColumn(columName:string):any;
2922
+ get requireAllFiltersToDisplay():boolean;
2923
+ get columns():dh.Column[];
2924
+ }
2925
+ export interface FigureDataUpdatedEvent {
2926
+ getArray(series:Series, sourceType:number, mappingFunc?:(arg0:any)=>any):Array<any>;
2927
+ get series():Series[];
2928
+ }
2895
2929
  /**
2896
- * Provides access to the data for displaying in a figure.
2930
+ * Describes how to access and display data required within a series.
2897
2931
  */
2898
- export interface Series {
2899
- readonly isLinesVisible?:boolean|null;
2900
- readonly pointLabelFormat?:string|null;
2901
- readonly yToolTipPattern?:string|null;
2902
- readonly shapeSize?:number|null;
2903
- readonly xToolTipPattern?:string|null;
2904
- readonly isShapesVisible?:boolean|null;
2905
-
2906
- subscribe(forceDisableDownsample?:DownsampleOptions):void;
2932
+ export interface SeriesDataSource {
2907
2933
  /**
2908
- * Disable updates for this Series.
2934
+ * the type of data stored in the underlying table's Column.
2935
+ * @return String
2909
2936
  */
2910
- unsubscribe():void;
2911
- get shape():string;
2937
+ get columnType():string;
2912
2938
  /**
2913
- * Contains details on how to access data within the chart for this series. keyed with the way that this series uses
2914
- * the axis.
2915
- * @return {@link dh.plot.SeriesDataSource}
2939
+ * the axis that this source should be drawn on.
2940
+ * @return dh.plot.Axis
2916
2941
  */
2917
- get sources():SeriesDataSource[];
2918
- get lineColor():string;
2942
+ get axis():Axis;
2919
2943
  /**
2920
- * The plotting style to use for this series. See <b>SeriesPlotStyle</b> enum for more details.
2944
+ * the feature of this series represented by this source. See the <b>SourceType</b> enum for more details.
2921
2945
  * @return int
2922
2946
  */
2923
- get plotStyle():SeriesPlotStyleType;
2924
- get oneClick():OneClick;
2925
- get gradientVisible():boolean;
2926
- get shapeColor():string;
2927
- /**
2928
- * The name for this series.
2929
- * @return String
2930
- */
2931
- get name():string;
2932
- /**
2933
- * indicates that this series belongs to a MultiSeries, null otherwise
2934
- * @return dh.plot.MultiSeries
2935
- */
2936
- get multiSeries():MultiSeries;
2937
- get shapeLabel():string;
2938
- }
2939
- export interface FigureDataUpdatedEvent {
2940
- getArray(series:Series, sourceType:number, mappingFunc?:(arg0:any)=>any):Array<any>;
2941
- get series():Series[];
2942
- }
2943
- export interface OneClick {
2944
- setValueForColumn(columnName:string, value:any):void;
2945
- getValueForColumn(columName:string):any;
2946
- get requireAllFiltersToDisplay():boolean;
2947
- get columns():dh.Column[];
2947
+ get type():SourceTypeType;
2948
2948
  }
2949
2949
 
2950
- export class AxisDescriptor {
2951
- formatType:string;
2952
- type:string;
2953
- position:string;
2954
- log?:boolean|null;
2955
- label?:string|null;
2956
- labelFont?:string|null;
2957
- ticksFont?:string|null;
2958
- formatPattern?:string|null;
2959
- color?:string|null;
2960
- minRange?:number|null;
2961
- maxRange?:number|null;
2962
- minorTicksVisible?:boolean|null;
2963
- majorTicksVisible?:boolean|null;
2964
- minorTickCount?:number|null;
2965
- gapBetweenMajorTicks?:number|null;
2966
- majorTickLocations?:Array<number>|null;
2967
- tickLabelAngle?:number|null;
2968
- invert?:boolean|null;
2969
- isTimeAxis?:boolean|null;
2950
+ /**
2951
+ * Helper class for plot downsampling methods.
2952
+ */
2953
+ export class Downsample {
2954
+ protected constructor();
2970
2955
 
2971
- constructor();
2956
+ /**
2957
+ * Downsamples a table so that the data can be used for a time-series line plot. The downsampled table should have
2958
+ * the same visual fidelity as the original table, but with fewer rows.
2959
+ * @param table - The table to downsample.
2960
+ * @param xCol - The name of the X column to downsample. Must be an Instant or long.
2961
+ * @param yCols - The names of the Y columns to downsample.
2962
+ * @param width - The width of the visible area in pixels.
2963
+ * @param xRange - The visible range as `[start, end]` or null to always use all data.
2964
+ * @return A promise that resolves to the downsampled table.
2965
+ */
2966
+ static runChartDownsample(table:dh.Table, xCol:string, yCols:string[], width:number, xRange?:dh.LongWrapper[]|undefined|null):Promise<dh.Table>;
2972
2967
  }
2973
2968
 
2974
2969
  /**
@@ -3091,6 +3086,61 @@ export namespace dh.plot {
3091
3086
  static create(config:FigureDescriptor):Promise<Figure>;
3092
3087
  }
3093
3088
 
3089
+ export class FigureSourceException {
3090
+ table:dh.Table;
3091
+ source:SeriesDataSource;
3092
+
3093
+ protected constructor();
3094
+ }
3095
+
3096
+ export class AxisDescriptor {
3097
+ formatType:string;
3098
+ type:string;
3099
+ position:string;
3100
+ log?:boolean|null;
3101
+ label?:string|null;
3102
+ labelFont?:string|null;
3103
+ ticksFont?:string|null;
3104
+ formatPattern?:string|null;
3105
+ color?:string|null;
3106
+ minRange?:number|null;
3107
+ maxRange?:number|null;
3108
+ minorTicksVisible?:boolean|null;
3109
+ majorTicksVisible?:boolean|null;
3110
+ minorTickCount?:number|null;
3111
+ gapBetweenMajorTicks?:number|null;
3112
+ majorTickLocations?:Array<number>|null;
3113
+ tickLabelAngle?:number|null;
3114
+ invert?:boolean|null;
3115
+ isTimeAxis?:boolean|null;
3116
+
3117
+ constructor();
3118
+ }
3119
+
3120
+ /**
3121
+ * A descriptor used with JsFigureFactory.create to create a figure from JS.
3122
+ */
3123
+ export class FigureDescriptor {
3124
+ title?:string|null;
3125
+ titleFont?:string|null;
3126
+ titleColor?:string|null;
3127
+ isResizable?:boolean|null;
3128
+ isDefaultTheme?:boolean|null;
3129
+ updateInterval?:number|null;
3130
+ cols?:number|null;
3131
+ rows?:number|null;
3132
+ charts:Array<ChartDescriptor>;
3133
+
3134
+ constructor();
3135
+ }
3136
+
3137
+ export class FigureFetchError {
3138
+ error:object;
3139
+ errors:Array<string>;
3140
+
3141
+ protected constructor();
3142
+ }
3143
+
3094
3144
  /**
3095
3145
  * Provide the details for a chart.
3096
3146
  */
@@ -3130,67 +3180,16 @@ export namespace dh.plot {
3130
3180
  */
3131
3181
  get chartType():ChartTypeType;
3132
3182
  get row():number;
3133
- get legendColor():string;
3134
- get legendFont():string;
3135
- get multiSeries():MultiSeries[];
3136
- }
3137
-
3138
- export class DownsampleOptions {
3139
- /**
3140
- * Max number of items in the series before DEFAULT will not attempt to load the series without downsampling. Above
3141
- * this size if downsample fails or is not applicable, the series won't be loaded unless DISABLE is passed to
3142
- * series.subscribe().
3143
- */
3144
- static MAX_SERIES_SIZE:number;
3145
- /**
3146
- * Max number of items in the series where the subscription will be allowed at all. Above this limit, even with
3147
- * downsampling disabled, the series will not load data.
3148
- */
3149
- static MAX_SUBSCRIPTION_SIZE:number;
3150
- /**
3151
- * Flag to let the API decide what data will be available, based on the nature of the data, the series, and how the
3152
- * axes are configured.
3153
- */
3154
- static readonly DEFAULT:DownsampleOptions;
3155
- /**
3156
- * Flat to entirely disable downsampling, and force all data to load, no matter how many items that would be, up to
3157
- * the limit of MAX_SUBSCRIPTION_SIZE.
3158
- */
3159
- static readonly DISABLE:DownsampleOptions;
3160
-
3161
- protected constructor();
3162
- }
3163
-
3164
- /**
3165
- * A descriptor used with JsFigureFactory.create to create a figure from JS.
3166
- */
3167
- export class FigureDescriptor {
3168
- title?:string|null;
3169
- titleFont?:string|null;
3170
- titleColor?:string|null;
3171
- isResizable?:boolean|null;
3172
- isDefaultTheme?:boolean|null;
3173
- updateInterval?:number|null;
3174
- cols?:number|null;
3175
- rows?:number|null;
3176
- charts:Array<ChartDescriptor>;
3177
-
3178
- constructor();
3183
+ get legendColor():string;
3184
+ get legendFont():string;
3185
+ get multiSeries():MultiSeries[];
3179
3186
  }
3180
3187
 
3181
- export class ChartDescriptor {
3182
- colspan?:number|null;
3183
- rowspan?:number|null;
3184
- series:Array<SeriesDescriptor>;
3185
- axes:Array<AxisDescriptor>;
3186
- chartType:string;
3187
- title?:string|null;
3188
- titleFont?:string|null;
3189
- titleColor?:string|null;
3190
- showLegend?:boolean|null;
3191
- legendFont?:string|null;
3192
- legendColor?:string|null;
3193
- is3d?:boolean|null;
3188
+ export class SourceDescriptor {
3189
+ axis:AxisDescriptor;
3190
+ table:dh.Table;
3191
+ columnName:string;
3192
+ type:string;
3194
3193
 
3195
3194
  constructor();
3196
3195
  }
@@ -3212,13 +3211,6 @@ export namespace dh.plot {
3212
3211
  removeColumn(columnName:string, mappingFunc:(arg0:any)=>any):void;
3213
3212
  }
3214
3213
 
3215
- export class FigureSourceException {
3216
- table:dh.Table;
3217
- source:SeriesDataSource;
3218
-
3219
- protected constructor();
3220
- }
3221
-
3222
3214
  export class SeriesDescriptor {
3223
3215
  plotStyle:string;
3224
3216
  name?:string|null;
@@ -3238,13 +3230,6 @@ export namespace dh.plot {
3238
3230
  constructor();
3239
3231
  }
3240
3232
 
3241
- export class FigureFetchError {
3242
- error:object;
3243
- errors:Array<string>;
3244
-
3245
- protected constructor();
3246
- }
3247
-
3248
3233
  export class SeriesDataSourceException {
3249
3234
  protected constructor();
3250
3235
 
@@ -3252,48 +3237,73 @@ export namespace dh.plot {
3252
3237
  get message():string;
3253
3238
  }
3254
3239
 
3255
- export class SourceDescriptor {
3256
- axis:AxisDescriptor;
3257
- table:dh.Table;
3258
- columnName:string;
3259
- type:string;
3240
+ export class ChartDescriptor {
3241
+ colspan?:number|null;
3242
+ rowspan?:number|null;
3243
+ series:Array<SeriesDescriptor>;
3244
+ axes:Array<AxisDescriptor>;
3245
+ chartType:string;
3246
+ title?:string|null;
3247
+ titleFont?:string|null;
3248
+ titleColor?:string|null;
3249
+ showLegend?:boolean|null;
3250
+ legendFont?:string|null;
3251
+ legendColor?:string|null;
3252
+ is3d?:boolean|null;
3260
3253
 
3261
3254
  constructor();
3262
3255
  }
3263
3256
 
3264
- /**
3265
- * Helper class for plot downsampling methods.
3266
- */
3267
- export class Downsample {
3268
- protected constructor();
3269
-
3257
+ export class DownsampleOptions {
3270
3258
  /**
3271
- * Downsamples a table so that the data can be used for a time-series line plot. The downsampled table should have
3272
- * the same visual fidelity as the original table, but with fewer rows.
3273
- * @param table - The table to downsample.
3274
- * @param xCol - The name of the X column to downsample. Must be an Instant or long.
3275
- * @param yCols - The names of the Y columns to downsample.
3276
- * @param width - The width of the visible area in pixels.
3277
- * @param xRange - The visible range as `[start, end]` or null to always use all data.
3278
- * @return A promise that resolves to the downsampled table.
3259
+ * Max number of items in the series before DEFAULT will not attempt to load the series without downsampling. Above
3260
+ * this size if downsample fails or is not applicable, the series won't be loaded unless DISABLE is passed to
3261
+ * series.subscribe().
3279
3262
  */
3280
- static runChartDownsample(table:dh.Table, xCol:string, yCols:string[], width:number, xRange?:dh.LongWrapper[]|undefined|null):Promise<dh.Table>;
3263
+ static MAX_SERIES_SIZE:number;
3264
+ /**
3265
+ * Max number of items in the series where the subscription will be allowed at all. Above this limit, even with
3266
+ * downsampling disabled, the series will not load data.
3267
+ */
3268
+ static MAX_SUBSCRIPTION_SIZE:number;
3269
+ /**
3270
+ * Flag to let the API decide what data will be available, based on the nature of the data, the series, and how the
3271
+ * axes are configured.
3272
+ */
3273
+ static readonly DEFAULT:DownsampleOptions;
3274
+ /**
3275
+ * Flat to entirely disable downsampling, and force all data to load, no matter how many items that would be, up to
3276
+ * the limit of MAX_SUBSCRIPTION_SIZE.
3277
+ */
3278
+ static readonly DISABLE:DownsampleOptions;
3279
+
3280
+ protected constructor();
3281
3281
  }
3282
3282
 
3283
3283
 
3284
- type AxisFormatTypeType = number;
3285
- export class AxisFormatType {
3286
- static readonly CATEGORY:AxisFormatTypeType;
3287
- static readonly NUMBER:AxisFormatTypeType;
3284
+ type AxisTypeType = number;
3285
+ export class AxisType {
3286
+ static readonly X:AxisTypeType;
3287
+ static readonly Y:AxisTypeType;
3288
+ static readonly SHAPE:AxisTypeType;
3289
+ static readonly SIZE:AxisTypeType;
3290
+ static readonly LABEL:AxisTypeType;
3291
+ static readonly COLOR:AxisTypeType;
3288
3292
  }
3289
3293
 
3290
- type AxisPositionType = number;
3291
- export class AxisPosition {
3292
- static readonly TOP:AxisPositionType;
3293
- static readonly BOTTOM:AxisPositionType;
3294
- static readonly LEFT:AxisPositionType;
3295
- static readonly RIGHT:AxisPositionType;
3296
- static readonly NONE:AxisPositionType;
3294
+ /**
3295
+ * This enum describes what kind of chart is being drawn. This may limit what kinds of series can be found on it, or how
3296
+ * those series should be rendered.
3297
+ */
3298
+ type ChartTypeType = number;
3299
+ export class ChartType {
3300
+ static readonly XY:ChartTypeType;
3301
+ static readonly PIE:ChartTypeType;
3302
+ static readonly OHLC:ChartTypeType;
3303
+ static readonly CATEGORY:ChartTypeType;
3304
+ static readonly XYZ:ChartTypeType;
3305
+ static readonly CATEGORY_3D:ChartTypeType;
3306
+ static readonly TREEMAP:ChartTypeType;
3297
3307
  }
3298
3308
 
3299
3309
  type SeriesPlotStyleType = number;
@@ -3312,19 +3322,13 @@ export namespace dh.plot {
3312
3322
  static readonly TREEMAP:SeriesPlotStyleType;
3313
3323
  }
3314
3324
 
3315
- /**
3316
- * This enum describes what kind of chart is being drawn. This may limit what kinds of series can be found on it, or how
3317
- * those series should be rendered.
3318
- */
3319
- type ChartTypeType = number;
3320
- export class ChartType {
3321
- static readonly XY:ChartTypeType;
3322
- static readonly PIE:ChartTypeType;
3323
- static readonly OHLC:ChartTypeType;
3324
- static readonly CATEGORY:ChartTypeType;
3325
- static readonly XYZ:ChartTypeType;
3326
- static readonly CATEGORY_3D:ChartTypeType;
3327
- static readonly TREEMAP:ChartTypeType;
3325
+ type AxisPositionType = number;
3326
+ export class AxisPosition {
3327
+ static readonly TOP:AxisPositionType;
3328
+ static readonly BOTTOM:AxisPositionType;
3329
+ static readonly LEFT:AxisPositionType;
3330
+ static readonly RIGHT:AxisPositionType;
3331
+ static readonly NONE:AxisPositionType;
3328
3332
  }
3329
3333
 
3330
3334
  /**
@@ -3356,52 +3360,34 @@ export namespace dh.plot {
3356
3360
  static readonly HOVER_TEXT:SourceTypeType;
3357
3361
  }
3358
3362
 
3359
- type AxisTypeType = number;
3360
- export class AxisType {
3361
- static readonly X:AxisTypeType;
3362
- static readonly Y:AxisTypeType;
3363
- static readonly SHAPE:AxisTypeType;
3364
- static readonly SIZE:AxisTypeType;
3365
- static readonly LABEL:AxisTypeType;
3366
- static readonly COLOR:AxisTypeType;
3363
+ type AxisFormatTypeType = number;
3364
+ export class AxisFormatType {
3365
+ static readonly CATEGORY:AxisFormatTypeType;
3366
+ static readonly NUMBER:AxisFormatTypeType;
3367
3367
  }
3368
3368
 
3369
3369
  }
3370
3370
 
3371
3371
  export namespace dh.lsp {
3372
3372
 
3373
- export class ParameterInformation {
3374
- label:string;
3375
- documentation:MarkupContent;
3376
-
3377
- constructor();
3378
- }
3379
-
3380
- export class Range {
3381
- start:Position;
3382
- end:Position;
3373
+ export class TextDocumentContentChangeEvent {
3374
+ range:Range;
3375
+ rangeLength:number;
3376
+ text:string;
3383
3377
 
3384
3378
  constructor();
3385
-
3386
- isInside(innerStart:Position, innerEnd:Position):boolean;
3387
3379
  }
3388
3380
 
3389
- export class Position {
3390
- line:number;
3391
- character:number;
3381
+ export class Hover {
3382
+ contents:MarkupContent;
3383
+ range:Range;
3392
3384
 
3393
3385
  constructor();
3394
-
3395
- lessThan(start:Position):boolean;
3396
- lessOrEqual(start:Position):boolean;
3397
- greaterThan(end:Position):boolean;
3398
- greaterOrEqual(end:Position):boolean;
3399
- copy():Position;
3400
3386
  }
3401
3387
 
3402
- export class MarkupContent {
3403
- kind:string;
3404
- value:string;
3388
+ export class TextEdit {
3389
+ range:Range;
3390
+ text:string;
3405
3391
 
3406
3392
  constructor();
3407
3393
  }
@@ -3423,41 +3409,67 @@ export namespace dh.lsp {
3423
3409
  constructor();
3424
3410
  }
3425
3411
 
3426
- export class TextDocumentContentChangeEvent {
3427
- range:Range;
3428
- rangeLength:number;
3429
- text:string;
3412
+ export class ParameterInformation {
3413
+ label:string;
3414
+ documentation:MarkupContent;
3430
3415
 
3431
3416
  constructor();
3432
3417
  }
3433
3418
 
3434
- export class TextEdit {
3435
- range:Range;
3436
- text:string;
3419
+ export class SignatureInformation {
3420
+ label:string;
3421
+ documentation:MarkupContent;
3422
+ parameters:Array<ParameterInformation>;
3423
+ activeParameter:number;
3437
3424
 
3438
3425
  constructor();
3439
3426
  }
3440
3427
 
3441
- export class Hover {
3442
- contents:MarkupContent;
3443
- range:Range;
3428
+ export class MarkupContent {
3429
+ kind:string;
3430
+ value:string;
3444
3431
 
3445
3432
  constructor();
3446
3433
  }
3447
3434
 
3448
- export class SignatureInformation {
3449
- label:string;
3450
- documentation:MarkupContent;
3451
- parameters:Array<ParameterInformation>;
3452
- activeParameter:number;
3435
+ export class Range {
3436
+ start:Position;
3437
+ end:Position;
3438
+
3439
+ constructor();
3440
+
3441
+ isInside(innerStart:Position, innerEnd:Position):boolean;
3442
+ }
3443
+
3444
+ export class Position {
3445
+ line:number;
3446
+ character:number;
3453
3447
 
3454
3448
  constructor();
3449
+
3450
+ lessThan(start:Position):boolean;
3451
+ lessOrEqual(start:Position):boolean;
3452
+ greaterThan(end:Position):boolean;
3453
+ greaterOrEqual(end:Position):boolean;
3454
+ copy():Position;
3455
3455
  }
3456
3456
 
3457
3457
  }
3458
3458
 
3459
3459
  export namespace dh.calendar {
3460
3460
 
3461
+ export interface Holiday {
3462
+ /**
3463
+ * The date of the Holiday.
3464
+ * @return {@link dh.LocalDateWrapper}
3465
+ */
3466
+ get date():dh.LocalDateWrapper;
3467
+ /**
3468
+ * The business periods that are open on the holiday.
3469
+ * @return dh.calendar.BusinessPeriod
3470
+ */
3471
+ get businessPeriods():Array<BusinessPeriod>;
3472
+ }
3461
3473
  /**
3462
3474
  * Defines a calendar with business hours and holidays.
3463
3475
  */
@@ -3488,18 +3500,6 @@ export namespace dh.calendar {
3488
3500
  */
3489
3501
  get businessPeriods():Array<BusinessPeriod>;
3490
3502
  }
3491
- export interface Holiday {
3492
- /**
3493
- * The date of the Holiday.
3494
- * @return {@link dh.LocalDateWrapper}
3495
- */
3496
- get date():dh.LocalDateWrapper;
3497
- /**
3498
- * The business periods that are open on the holiday.
3499
- * @return dh.calendar.BusinessPeriod
3500
- */
3501
- get businessPeriods():Array<BusinessPeriod>;
3502
- }
3503
3503
  export interface BusinessPeriod {
3504
3504
  get close():string;
3505
3505
  get open():string;