@deephaven/jsapi-types 1.0.0-dev0.33.1 → 1.0.0-dev0.33.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 +1994 -1994
  2. package/package.json +1 -1
package/dist/index.d.ts CHANGED
@@ -1,6 +1,10 @@
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
+ }
4
8
  /**
5
9
  * This is part of EcmaScript 2015, documented here for completeness. It supports a single method, <b>next()</b>, which
6
10
  * returns an object with a <b>boolean</b> named <b>done</b> (true if there are no more items to return; false
@@ -11,26 +15,8 @@ export interface Iterator<T> {
11
15
  hasNext():boolean;
12
16
  next():IIterableResult<T>;
13
17
  }
14
- export interface IIterableResult<T> {
15
- value:T;
16
- done:boolean;
17
- }
18
18
  export namespace dh.storage {
19
19
 
20
- /**
21
- * Storage service metadata about files and folders.
22
- */
23
- export class ItemDetails {
24
- protected constructor();
25
-
26
- get filename():string;
27
- get basename():string;
28
- get size():number;
29
- get etag():string;
30
- get type():ItemTypeType;
31
- get dirname():string;
32
- }
33
-
34
20
  /**
35
21
  * Represents a file's contents loaded from the server. If an etag was specified when loading, client should first test
36
22
  * if the etag of this instance matches - if so, the contents will be empty, and the client's existing contents should
@@ -105,6 +91,20 @@ export namespace dh.storage {
105
91
  createDirectory(path:string):Promise<void>;
106
92
  }
107
93
 
94
+ /**
95
+ * Storage service metadata about files and folders.
96
+ */
97
+ export class ItemDetails {
98
+ protected constructor();
99
+
100
+ get filename():string;
101
+ get basename():string;
102
+ get size():number;
103
+ get etag():string;
104
+ get type():ItemTypeType;
105
+ get dirname():string;
106
+ }
107
+
108
108
 
109
109
  type ItemTypeType = string;
110
110
  export class ItemType {
@@ -116,46 +116,9 @@ export namespace dh.storage {
116
116
 
117
117
  export namespace dh {
118
118
 
119
- /**
120
- * Common interface for various ways of accessing table data and formatting.
121
- *
122
- * Java note: this interface contains some extra overloads that aren't available in JS. Implementations are expected to
123
- * implement only abstract methods, and default methods present in this interface will dispatch accordingly.
124
- */
125
- export interface TableData {
126
- get(index:LongWrapper|number):Row;
127
- getData(index:LongWrapper|number, column:Column):any;
128
- getFormat(index:LongWrapper|number, column:Column):Format;
129
- get columns():Array<Column>;
130
- get rows():Array<Row>;
131
- }
132
- /**
133
- * Javascript wrapper for {@link io.deephaven.web.shared.data.ColumnStatistics} This class holds the results of a call to generate statistics on a
134
- * table column.
135
- */
136
- export interface ColumnStatistics {
137
- /**
138
- * Gets the type of formatting that should be used for given statistic.
139
- * <p>
140
- * the format type for a statistic. A null return value means that the column formatting should be used.
141
- * @param name - the display name of the statistic
142
- * @return String
143
- */
144
- getType(name:string):string;
145
- /**
146
- * 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
147
- * name to the count of how many times it occurred in the column. This map will be empty for tables containing more
148
- * than 19 unique values.
149
- * @return Map of String double
150
- */
151
- get uniqueValues():Map<string, number>;
152
- /**
153
- * Gets a map with the display name of statistics as keys and the numeric stat as a value.
154
- * <p>
155
- * A map of each statistic's name to its value.
156
- * @return Map of String and Object
157
- */
158
- get statisticsMap():Map<string, object>;
119
+ export interface RefreshToken {
120
+ get bytes():string;
121
+ get expiry():number;
159
122
  }
160
123
  /**
161
124
  * This object may be pooled internally or discarded and not updated. Do not retain references to it.
@@ -183,6 +146,19 @@ export namespace dh {
183
146
  readonly numberFormat?:string|null;
184
147
  }
185
148
  /**
149
+ * Common interface for various ways of accessing table data and formatting.
150
+ *
151
+ * Java note: this interface contains some extra overloads that aren't available in JS. Implementations are expected to
152
+ * implement only abstract methods, and default methods present in this interface will dispatch accordingly.
153
+ */
154
+ export interface TableData {
155
+ get(index:LongWrapper|number):Row;
156
+ getData(index:LongWrapper|number, column:Column):any;
157
+ getFormat(index:LongWrapper|number, column:Column):Format;
158
+ get columns():Array<Column>;
159
+ get rows():Array<Row>;
160
+ }
161
+ /**
186
162
  * Row implementation that also provides additional read-only properties. represents visible rows in the table,
187
163
  * but with additional properties to reflect the tree structure.
188
164
  */
@@ -217,22 +193,6 @@ export namespace dh {
217
193
  get frontColumns():string[]|null;
218
194
  get backColumns():string[]|null;
219
195
  }
220
- export interface Row {
221
- get(column:Column):any;
222
- getFormat(column:Column):Format;
223
- get index():LongWrapper;
224
- }
225
- /**
226
- * Wrap LocalTime values for use in JS. Provides text formatting for display and access to the underlying value.
227
- */
228
- export interface LocalTimeWrapper {
229
- valueOf():string;
230
- getHour():number;
231
- getMinute():number;
232
- getSecond():number;
233
- getNano():number;
234
- toString():string;
235
- }
236
196
  /**
237
197
  * Represents a server-side object that may not yet have been fetched by the client. When this object will no longer be
238
198
  * used, if {@link fetch} is not called on this object, then {@link close} must be to ensure server-side resources
@@ -266,6 +226,88 @@ export namespace dh {
266
226
  close():void;
267
227
  }
268
228
  /**
229
+ * Javascript wrapper for {@link io.deephaven.web.shared.data.ColumnStatistics} This class holds the results of a call to generate statistics on a
230
+ * table column.
231
+ */
232
+ export interface ColumnStatistics {
233
+ /**
234
+ * Gets the type of formatting that should be used for given statistic.
235
+ * <p>
236
+ * the format type for a statistic. A null return value means that the column formatting should be used.
237
+ * @param name - the display name of the statistic
238
+ * @return String
239
+ */
240
+ getType(name:string):string;
241
+ /**
242
+ * 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
243
+ * name to the count of how many times it occurred in the column. This map will be empty for tables containing more
244
+ * than 19 unique values.
245
+ * @return Map of String double
246
+ */
247
+ get uniqueValues():Map<string, number>;
248
+ /**
249
+ * Gets a map with the display name of statistics as keys and the numeric stat as a value.
250
+ * <p>
251
+ * A map of each statistic's name to its value.
252
+ * @return Map of String and Object
253
+ */
254
+ get statisticsMap():Map<string, object>;
255
+ }
256
+ /**
257
+ * Contains data in the current viewport. Also contains the offset to this data, so that the actual row number may be
258
+ * determined. Do not assume that the first row in `rows` is the first visible row, because extra rows may be provided
259
+ * for easier scrolling without going to the server.
260
+ */
261
+ export interface ViewportData extends TableData {
262
+ /**
263
+ * The index of the first returned row
264
+ * @return double
265
+ */
266
+ get offset():number;
267
+ /**
268
+ * A list of columns describing the data types in each row
269
+ * @return {@link dh.Column} array.
270
+ */
271
+ get columns():Array<Column>;
272
+ /**
273
+ * An array of rows of data
274
+ * @return {@link dh.ViewportRow} array.
275
+ */
276
+ get rows():Array<ViewportRow>;
277
+ }
278
+ export interface JoinableTable {
279
+ freeze():Promise<Table>;
280
+ snapshot(baseTable:Table, doInitialSnapshot?:boolean, stampColumns?:string[]):Promise<Table>;
281
+ /**
282
+ * @deprecated
283
+ */
284
+ join(joinType:object, rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>, asOfMatchRule?:object):Promise<Table>;
285
+ asOfJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>, asOfMatchRule?:string):Promise<Table>;
286
+ crossJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>, reserve_bits?:number):Promise<Table>;
287
+ exactJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>):Promise<Table>;
288
+ naturalJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>):Promise<Table>;
289
+ }
290
+ export interface HasEventHandling {
291
+ /**
292
+ * Listen for events on this object.
293
+ * @param name - the name of the event to listen for
294
+ * @param callback - a function to call when the event occurs
295
+ * @return Returns a cleanup function.
296
+ * @typeParam T - the type of the data that the event will provide
297
+ */
298
+ addEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):()=>void;
299
+ nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<CustomEvent<T>>;
300
+ hasListeners(name:string):boolean;
301
+ /**
302
+ * Removes an event listener added to this table.
303
+ * @param name -
304
+ * @param callback -
305
+ * @return
306
+ * @typeParam T -
307
+ */
308
+ removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
309
+ }
310
+ /**
269
311
  * Encapsulates event handling around table subscriptions by "cheating" and wrapping up a JsTable instance to do the
270
312
  * real dirty work. This allows a viewport to stay open on the old table if desired, while this one remains open.
271
313
  * <p>
@@ -311,68 +353,175 @@ export namespace dh {
311
353
  snapshot(rows:RangeSet, columns:Column[]):Promise<TableData>;
312
354
  }
313
355
  /**
314
- * Behaves like a Table, but doesn't expose all of its API for changing the internal state. Instead, state is driven by
315
- * the upstream table - when it changes handle, this listens and updates its own handle accordingly.
316
- *
317
- * Additionally, this is automatically subscribed to its one and only row, across all columns.
318
- *
319
- * A new config is returned any time it is accessed, to prevent accidental mutation, and to allow it to be used as a
320
- * template when fetching a new totals table, or changing the totals table in use.
321
- *
322
- * A simplistic Table, providing access to aggregation of the table it is sourced from. This table is always
323
- * automatically subscribed to its parent, and adopts changes automatically from it. This class has limited methods
324
- * found on Table. Instances of this type always have a size of one when no groupBy is set on the config, but may
325
- * potentially contain as few as zero rows, or as many as the parent table if each row gets its own group.
356
+ * Represents the contents of a single widget data message from the server, with a binary data paylod and exported
357
+ * objects. Implemented both by Widget itself and by the `event.details` when data is received by the client.
326
358
  *
327
- * When using the `groupBy` feature, it may be desireable to also provide a row to the user with all values across all
328
- * rows. To achieve this, request the same Totals Table again, but remove the `groupBy` setting.
359
+ * Terminology note: the name of this type should probably use "Data" instead of "Message", and the methods should use
360
+ * "payload" rather than "data" to match other platforms and the protobuf itself. These names are instead used for
361
+ * backwards compatibility and to better follow JS expectations.
329
362
  */
330
- export interface TotalsTable extends JoinableTable {
331
- /**
332
- * Specifies the range of items to pass to the client and update as they change. If the columns parameter is not
333
- * provided, all columns will be used. Until this is called, no data will be available. Invoking this will result in
334
- * events to be fired once data becomes available, starting with an <b>updated</b> event and one <b>rowadded</b>
335
- * event per row in that range.
336
- * @param firstRow -
337
- * @param lastRow -
338
- * @param columns -
339
- * @param updateIntervalMs -
340
- */
341
- setViewport(firstRow:number, lastRow:number, columns?:Array<Column>, updateIntervalMs?:number):void;
363
+ export interface WidgetMessageDetails {
342
364
  /**
343
- * the currently visible viewport. If the current set of operations has not yet resulted in data, it will not
344
- * resolve until that data is ready.
345
- * @return Promise of {@link dh.TableData}
365
+ * Returns the data from this message as a base64-encoded string.
346
366
  */
347
- getViewportData():Promise<TableData>;
367
+ getDataAsBase64():string;
348
368
  /**
349
- * a column by the given name. You should prefer to always retrieve a new Column instance instead of caching a
350
- * returned value.
351
- * @param key -
352
- * @return {@link dh.Column}
369
+ * Returns the data from this message as a Uint8Array.
353
370
  */
354
- findColumn(key:string):Column;
371
+ getDataAsU8():Uint8Array;
355
372
  /**
356
- * multiple columns specified by the given names.
357
- * @param keys -
358
- * @return {@link dh.Column} array
373
+ * Returns the data from this message as a utf-8 string.
359
374
  */
360
- findColumns(keys:string[]):Column[];
375
+ getDataAsString():string;
361
376
  /**
362
- * Indicates that the table will no longer be used, and resources used to provide it can be freed up on the server.
377
+ * Returns an array of exported objects sent from the server. The plugin implementation is now responsible for these
378
+ * objects, and should close them when no longer needed.
363
379
  */
364
- close():void;
365
- addEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):()=>void;
366
- removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
367
- nextEvent<T>(eventName:string, timeoutInMillis:number):Promise<CustomEvent<T>>;
368
- hasListeners(name:string):boolean;
369
- /**
370
- * Replace the currently set sort on this table. Returns the previously set value. Note that the sort property will
371
- * immediately return the new value, but you may receive update events using the old sort before the new sort is
372
- * applied, and the <b>sortchanged</b> event fires. Reusing existing, applied sorts may enable this to perform
373
- * better on the server. The <b>updated</b> event will also fire, but <b>rowadded</b> and <b>rowremoved</b> will
374
- * not.
375
- * @param sort -
380
+ get exportedObjects():WidgetExportedObject[];
381
+ }
382
+ export interface Row {
383
+ get(column:Column):any;
384
+ getFormat(column:Column):Format;
385
+ get index():LongWrapper;
386
+ }
387
+ /**
388
+ * This object may be pooled internally or discarded and not updated. Do not retain references to it. Instead, request
389
+ * the viewport again.
390
+ */
391
+ export interface ViewportRow extends Row {
392
+ get index():LongWrapper;
393
+ }
394
+ export interface ColumnGroup {
395
+ get name():string|null;
396
+ get children():string[]|null;
397
+ get color():string|null;
398
+ }
399
+ /**
400
+ * Wrap LocalTime values for use in JS. Provides text formatting for display and access to the underlying value.
401
+ */
402
+ export interface LocalTimeWrapper {
403
+ valueOf():string;
404
+ getHour():number;
405
+ getMinute():number;
406
+ getSecond():number;
407
+ getNano():number;
408
+ toString():string;
409
+ }
410
+ export interface WorkerHeapInfo {
411
+ /**
412
+ * Total heap size available for this worker.
413
+ */
414
+ get totalHeapSize():number;
415
+ get freeMemory():number;
416
+ get maximumHeapSize():number;
417
+ }
418
+ /**
419
+ * Wrap LocalDate values for use in JS. Provides text formatting for display and access to the underlying value.
420
+ */
421
+ export interface LocalDateWrapper {
422
+ valueOf():string;
423
+ getYear():number;
424
+ getMonthValue():number;
425
+ getDayOfMonth():number;
426
+ toString():string;
427
+ }
428
+ /**
429
+ * Event data, describing the indexes that were added/removed/updated, and providing access to Rows (and thus data
430
+ * in columns) either by index, or scanning the complete present index.
431
+ *
432
+ * This class supports two ways of reading the table - checking the changes made since the last update, and reading
433
+ * all data currently in the table. While it is more expensive to always iterate over every single row in the table,
434
+ * it may in some cases actually be cheaper than maintaining state separately and updating only the changes, though
435
+ * both options should be considered.
436
+ *
437
+ * The RangeSet objects allow iterating over the LongWrapper indexes in the table. Note that these "indexes" are not
438
+ * necessarily contiguous and may be negative, and represent some internal state on the server, allowing it to keep
439
+ * track of data efficiently. Those LongWrapper objects can be passed to the various methods on this instance to
440
+ * read specific rows or cells out of the table.
441
+ */
442
+ export interface SubscriptionTableData extends TableData {
443
+ get fullIndex():RangeSet;
444
+ /**
445
+ * The ordered set of row indexes removed since the last update
446
+ * @return dh.RangeSet
447
+ */
448
+ get removed():RangeSet;
449
+ /**
450
+ * The ordered set of row indexes added since the last update
451
+ * @return dh.RangeSet
452
+ */
453
+ get added():RangeSet;
454
+ get columns():Array<Column>;
455
+ /**
456
+ * The ordered set of row indexes updated since the last update
457
+ * @return dh.RangeSet
458
+ */
459
+ get modified():RangeSet;
460
+ get rows():Array<Row>;
461
+ }
462
+ /**
463
+ * Behaves like a Table, but doesn't expose all of its API for changing the internal state. Instead, state is driven by
464
+ * the upstream table - when it changes handle, this listens and updates its own handle accordingly.
465
+ *
466
+ * Additionally, this is automatically subscribed to its one and only row, across all columns.
467
+ *
468
+ * A new config is returned any time it is accessed, to prevent accidental mutation, and to allow it to be used as a
469
+ * template when fetching a new totals table, or changing the totals table in use.
470
+ *
471
+ * A simplistic Table, providing access to aggregation of the table it is sourced from. This table is always
472
+ * automatically subscribed to its parent, and adopts changes automatically from it. This class has limited methods
473
+ * found on Table. Instances of this type always have a size of one when no groupBy is set on the config, but may
474
+ * potentially contain as few as zero rows, or as many as the parent table if each row gets its own group.
475
+ *
476
+ * When using the `groupBy` feature, it may be desireable to also provide a row to the user with all values across all
477
+ * rows. To achieve this, request the same Totals Table again, but remove the `groupBy` setting.
478
+ */
479
+ export interface TotalsTable extends JoinableTable {
480
+ /**
481
+ * Specifies the range of items to pass to the client and update as they change. If the columns parameter is not
482
+ * provided, all columns will be used. Until this is called, no data will be available. Invoking this will result in
483
+ * events to be fired once data becomes available, starting with an <b>updated</b> event and one <b>rowadded</b>
484
+ * event per row in that range.
485
+ * @param firstRow -
486
+ * @param lastRow -
487
+ * @param columns -
488
+ * @param updateIntervalMs -
489
+ */
490
+ setViewport(firstRow:number, lastRow:number, columns?:Array<Column>, updateIntervalMs?:number):void;
491
+ /**
492
+ * the currently visible viewport. If the current set of operations has not yet resulted in data, it will not
493
+ * resolve until that data is ready.
494
+ * @return Promise of {@link dh.TableData}
495
+ */
496
+ getViewportData():Promise<TableData>;
497
+ /**
498
+ * a column by the given name. You should prefer to always retrieve a new Column instance instead of caching a
499
+ * returned value.
500
+ * @param key -
501
+ * @return {@link dh.Column}
502
+ */
503
+ findColumn(key:string):Column;
504
+ /**
505
+ * multiple columns specified by the given names.
506
+ * @param keys -
507
+ * @return {@link dh.Column} array
508
+ */
509
+ findColumns(keys:string[]):Column[];
510
+ /**
511
+ * Indicates that the table will no longer be used, and resources used to provide it can be freed up on the server.
512
+ */
513
+ close():void;
514
+ addEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):()=>void;
515
+ removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
516
+ nextEvent<T>(eventName:string, timeoutInMillis:number):Promise<CustomEvent<T>>;
517
+ hasListeners(name:string):boolean;
518
+ /**
519
+ * Replace the currently set sort on this table. Returns the previously set value. Note that the sort property will
520
+ * immediately return the new value, but you may receive update events using the old sort before the new sort is
521
+ * applied, and the <b>sortchanged</b> event fires. Reusing existing, applied sorts may enable this to perform
522
+ * better on the server. The <b>updated</b> event will also fire, but <b>rowadded</b> and <b>rowremoved</b> will
523
+ * not.
524
+ * @param sort -
376
525
  * @return {@link dh.Sort} array
377
526
  */
378
527
  applySort(sort:Sort[]):Array<Sort>;
@@ -439,844 +588,618 @@ export namespace dh {
439
588
  */
440
589
  get isRefreshing():boolean;
441
590
  }
442
- export interface HasEventHandling {
443
- /**
444
- * Listen for events on this object.
445
- * @param name - the name of the event to listen for
446
- * @param callback - a function to call when the event occurs
447
- * @return Returns a cleanup function.
448
- * @typeParam T - the type of the data that the event will provide
449
- */
450
- addEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):()=>void;
451
- nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<CustomEvent<T>>;
452
- hasListeners(name:string):boolean;
453
- /**
454
- * Removes an event listener added to this table.
455
- * @param name -
456
- * @param callback -
457
- * @return
458
- * @typeParam T -
459
- */
460
- removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
461
- }
462
- /**
463
- * Event data, describing the indexes that were added/removed/updated, and providing access to Rows (and thus data
464
- * in columns) either by index, or scanning the complete present index.
465
- *
466
- * This class supports two ways of reading the table - checking the changes made since the last update, and reading
467
- * all data currently in the table. While it is more expensive to always iterate over every single row in the table,
468
- * it may in some cases actually be cheaper than maintaining state separately and updating only the changes, though
469
- * both options should be considered.
470
- *
471
- * The RangeSet objects allow iterating over the LongWrapper indexes in the table. Note that these "indexes" are not
472
- * necessarily contiguous and may be negative, and represent some internal state on the server, allowing it to keep
473
- * track of data efficiently. Those LongWrapper objects can be passed to the various methods on this instance to
474
- * read specific rows or cells out of the table.
475
- */
476
- export interface SubscriptionTableData extends TableData {
477
- get fullIndex():RangeSet;
478
- /**
479
- * The ordered set of row indexes removed since the last update
480
- * @return dh.RangeSet
481
- */
482
- get removed():RangeSet;
483
- /**
484
- * The ordered set of row indexes added since the last update
485
- * @return dh.RangeSet
486
- */
487
- get added():RangeSet;
591
+ export interface TreeViewportData extends TableData {
592
+ get offset():number;
488
593
  get columns():Array<Column>;
489
- /**
490
- * The ordered set of row indexes updated since the last update
491
- * @return dh.RangeSet
492
- */
493
- get modified():RangeSet;
494
- get rows():Array<Row>;
594
+ get rows():Array<TreeRow>;
495
595
  }
596
+
496
597
  /**
497
- * This object may be pooled internally or discarded and not updated. Do not retain references to it. Instead, request
498
- * the viewport again.
598
+ * Deprecated for use in Deephaven Core.
599
+ * @deprecated
499
600
  */
500
- export interface ViewportRow extends Row {
501
- get index():LongWrapper;
601
+ export class Client {
602
+ static readonly EVENT_REQUEST_FAILED:string;
603
+ static readonly EVENT_REQUEST_STARTED:string;
604
+ static readonly EVENT_REQUEST_SUCCEEDED:string;
605
+
606
+ constructor();
502
607
  }
608
+
503
609
  /**
504
- * Represents the contents of a single widget data message from the server, with a binary data paylod and exported
505
- * objects. Implemented both by Widget itself and by the `event.details` when data is received by the client.
506
- *
507
- * Terminology note: the name of this type should probably use "Data" instead of "Message", and the methods should use
508
- * "payload" rather than "data" to match other platforms and the protobuf itself. These names are instead used for
509
- * backwards compatibility and to better follow JS expectations.
610
+ * Describes a filter which can be applied to a table. Replacing these instances may be more expensive than reusing
611
+ * them. These instances are immutable - all operations that compose them to build bigger expressions return a new
612
+ * instance.
510
613
  */
511
- export interface WidgetMessageDetails {
614
+ export class FilterCondition {
615
+ protected constructor();
616
+
512
617
  /**
513
- * Returns the data from this message as a base64-encoded string.
618
+ * the opposite of this condition
619
+ * @return FilterCondition
514
620
  */
515
- getDataAsBase64():string;
621
+ not():FilterCondition;
516
622
  /**
517
- * Returns the data from this message as a Uint8Array.
623
+ * a condition representing the current condition logically ANDed with the other parameters
624
+ * @param filters -
625
+ * @return FilterCondition
518
626
  */
519
- getDataAsU8():Uint8Array;
627
+ and(...filters:FilterCondition[]):FilterCondition;
520
628
  /**
521
- * Returns the data from this message as a utf-8 string.
629
+ * a condition representing the current condition logically ORed with the other parameters
630
+ * @param filters -
631
+ * @return FilterCondition.
522
632
  */
523
- getDataAsString():string;
633
+ or(...filters:FilterCondition[]):FilterCondition;
524
634
  /**
525
- * Returns an array of exported objects sent from the server. The plugin implementation is now responsible for these
526
- * objects, and should close them when no longer needed.
635
+ * a string suitable for debugging showing the details of this condition.
636
+ * @return String.
527
637
  */
528
- get exportedObjects():WidgetExportedObject[];
529
- }
530
- /**
531
- * Wrap LocalDate values for use in JS. Provides text formatting for display and access to the underlying value.
532
- */
533
- export interface LocalDateWrapper {
534
- valueOf():string;
535
- getYear():number;
536
- getMonthValue():number;
537
- getDayOfMonth():number;
538
638
  toString():string;
539
- }
540
- export interface WorkerHeapInfo {
639
+ get columns():Array<Column>;
541
640
  /**
542
- * Total heap size available for this worker.
641
+ * a filter condition invoking a static function with the given parameters. Currently supported Deephaven static
642
+ * functions:
643
+ * <ul>
644
+ * <li><b>inRange</b>: Given three comparable values, returns true if the first is less than the second but greater
645
+ * than the third</li>
646
+ * <li><b>isInf</b>:Returns true if the given number is <i>infinity</i></li>
647
+ * <li><b>isNaN</b>:Returns true if the given number is <i>not a number</i></li>
648
+ * <li><b>isNormal</b>:Returns true if the given number <i>is not null</i>, <i>is not infinity</i>, and <i>is not
649
+ * "not a number"</i></li>
650
+ * <li><b>startsWith</b>:Returns true if the first string starts with the second string</li>
651
+ * <li><b>endsWith</b>Returns true if the first string ends with the second string</li>
652
+ * <li><b>matches</b>:Returns true if the first string argument matches the second string used as a Java regular
653
+ * expression</li>
654
+ * <li><b>contains</b>:Returns true if the first string argument contains the second string as a substring</li>
655
+ * <li><b>in</b>:Returns true if the first string argument can be found in the second array argument.
656
+ * <p>
657
+ * Note that the array can only be specified as a column reference at this time - typically the `FilterValue.in`
658
+ * method should be used in other cases
659
+ * </p>
660
+ * </li>
661
+ * </ul>
662
+ * @param function -
663
+ * @param args -
664
+ * @return dh.FilterCondition
543
665
  */
544
- get totalHeapSize():number;
545
- get freeMemory():number;
546
- get maximumHeapSize():number;
666
+ static invoke(func:string, ...args:FilterValue[]):FilterCondition;
667
+ /**
668
+ * a filter condition which will check if the given value can be found in any supported column on whatever table
669
+ * this FilterCondition is passed to. This FilterCondition is somewhat unique in that it need not be given a column
670
+ * instance, but will adapt to any table. On numeric columns, with a value passed in which can be parsed as a
671
+ * number, the column will be filtered to numbers which equal, or can be "rounded" effectively to this number. On
672
+ * String columns, the given value will match any column which contains this string in a case-insensitive search. An
673
+ * optional second argument can be passed, an array of `FilterValue` from the columns to limit this search to (see
674
+ * {@link dh.Column.filter}).
675
+ * @param value -
676
+ * @param columns -
677
+ * @return dh.FilterCondition
678
+ */
679
+ static search(value:FilterValue, columns?:FilterValue[]):FilterCondition;
547
680
  }
681
+
548
682
  /**
549
- * Contains data in the current viewport. Also contains the offset to this data, so that the actual row number may be
550
- * determined. Do not assume that the first row in `rows` is the first visible row, because extra rows may be provided
551
- * for easier scrolling without going to the server.
683
+ * A js type for operating on input tables.
684
+ *
685
+ * Represents a User Input Table, which can have data added to it from other sources.
686
+ *
687
+ * You may add rows using dictionaries of key-value tuples (representing columns by name), add tables containing all the
688
+ * key/value columns to add, or delete tables containing the keys to delete. Each operation is atomic, and will either
689
+ * succeed completely or fail completely. To guarantee order of operations, apply an operation and wait for the response
690
+ * before sending the next operation.
691
+ *
692
+ * Each table has one or more key columns, where each unique combination of keys will appear at most once in the table.
693
+ *
694
+ * To view the results of the Input Table, you should use standard table operations on the InputTable's source Table
695
+ * object.
552
696
  */
553
- export interface ViewportData extends TableData {
697
+ export class InputTable {
698
+ protected constructor();
699
+
554
700
  /**
555
- * The index of the first returned row
556
- * @return double
701
+ * Adds a single row to the table. For each key or value column name in the Input Table, we retrieve that javascript
702
+ * property at that name and validate it can be put into the given column type.
703
+ * @param row -
704
+ * @param userTimeZone -
705
+ * @return Promise of dh.InputTable
557
706
  */
558
- get offset():number;
707
+ addRow(row:{ [key: string]: any; }, userTimeZone?:string):Promise<InputTable>;
559
708
  /**
560
- * A list of columns describing the data types in each row
561
- * @return {@link dh.Column} array.
709
+ * Add multiple rows to a table.
710
+ * @param rows -
711
+ * @param userTimeZone -
712
+ * @return Promise of dh.InputTable
562
713
  */
563
- get columns():Array<Column>;
714
+ addRows(rows:{ [key: string]: any; }[], userTimeZone?:string):Promise<InputTable>;
564
715
  /**
565
- * An array of rows of data
566
- * @return {@link dh.ViewportRow} array.
716
+ * Add an entire table to this Input Table. Only column names that match the definition of the input table will be
717
+ * copied, and all key columns must have values filled in. This only copies the current state of the source table;
718
+ * future updates to the source table will not be reflected in the Input Table. The returned promise will be
719
+ * resolved to the same InputTable instance this method was called upon once the server returns.
720
+ * @param tableToAdd -
721
+ * @return Promise of dh.InputTable
567
722
  */
568
- get rows():Array<ViewportRow>;
569
- }
570
- export interface RefreshToken {
571
- get bytes():string;
572
- get expiry():number;
573
- }
574
- export interface JoinableTable {
575
- freeze():Promise<Table>;
576
- snapshot(baseTable:Table, doInitialSnapshot?:boolean, stampColumns?:string[]):Promise<Table>;
723
+ addTable(tableToAdd:Table):Promise<InputTable>;
577
724
  /**
578
- * @deprecated
725
+ * Add multiple tables to this Input Table.
726
+ * @param tablesToAdd -
727
+ * @return Promise of dh.InputTable
579
728
  */
580
- join(joinType:object, rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>, asOfMatchRule?:object):Promise<Table>;
581
- asOfJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>, asOfMatchRule?:string):Promise<Table>;
582
- crossJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>, reserve_bits?:number):Promise<Table>;
583
- exactJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>):Promise<Table>;
584
- naturalJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>):Promise<Table>;
585
- }
586
- export interface ColumnGroup {
587
- get name():string|null;
588
- get children():string[]|null;
589
- get color():string|null;
590
- }
591
- export interface TreeViewportData extends TableData {
592
- get offset():number;
593
- get columns():Array<Column>;
594
- get rows():Array<TreeRow>;
595
- }
596
-
597
- export class IdeSession implements HasEventHandling {
598
- static readonly EVENT_COMMANDSTARTED:string;
599
- static readonly EVENT_REQUEST_FAILED:string;
600
-
601
- protected constructor();
602
-
729
+ addTables(tablesToAdd:Table[]):Promise<InputTable>;
603
730
  /**
604
- * Load the named table, with columns and size information already fully populated.
605
- * @param name -
606
- * @param applyPreviewColumns - optional boolean
607
- * @return {@link Promise} of {@link dh.Table}
731
+ * Deletes an entire table from this Input Table. Key columns must match the Input Table.
732
+ * @param tableToDelete -
733
+ * @return Promise of dh.InputTable
608
734
  */
609
- getTable(name:string, applyPreviewColumns?:boolean):Promise<Table>;
735
+ deleteTable(tableToDelete:Table):Promise<InputTable>;
610
736
  /**
611
- * Load the named Figure, including its tables and tablemaps as needed.
612
- * @param name -
613
- * @return promise of dh.plot.Figure
737
+ * Delete multiple tables from this Input Table.
738
+ * @param tablesToDelete -
739
+ * @return
614
740
  */
615
- getFigure(name:string):Promise<dh.plot.Figure>;
741
+ deleteTables(tablesToDelete:Table[]):Promise<InputTable>;
616
742
  /**
617
- * Loads the named tree table or roll-up table, with column data populated. All nodes are collapsed by default, and
618
- * size is presently not available until the viewport is first set.
619
- * @param name -
620
- * @return {@link Promise} of {@link dh.TreeTable}
743
+ * A list of the key columns, by name
744
+ * @return String array.
621
745
  */
622
- getTreeTable(name:string):Promise<TreeTable>;
623
- getHierarchicalTable(name:string):Promise<TreeTable>;
624
- getObject(definitionObject:dh.ide.VariableDescriptor):Promise<any>;
625
- newTable(columnNames:string[], types:string[], data:string[][], userTimeZone:string):Promise<Table>;
746
+ get keys():string[];
626
747
  /**
627
- * Merges the given tables into a single table. Assumes all tables have the same structure.
628
- * @param tables -
629
- * @return {@link Promise} of {@link dh.Table}
748
+ * A list of the value columns, by name
749
+ * @return String array.
630
750
  */
631
- mergeTables(tables:Table[]):Promise<Table>;
632
- bindTableToVariable(table:Table, name:string):Promise<void>;
633
- subscribeToFieldUpdates(callback:(arg0:dh.ide.VariableChanges)=>void):()=>void;
634
- close():void;
635
- runCode(code:string):Promise<dh.ide.CommandResult>;
636
- onLogMessage(callback:(arg0:dh.ide.LogItem)=>void):()=>void;
637
- openDocument(params:object):void;
638
- changeDocument(params:object):void;
639
- getCompletionItems(params:object):Promise<Array<dh.lsp.CompletionItem>>;
640
- getSignatureHelp(params:object):Promise<Array<dh.lsp.SignatureInformation>>;
641
- getHover(params:object):Promise<dh.lsp.Hover>;
642
- closeDocument(params:object):void;
751
+ get values():string[];
643
752
  /**
644
- * Creates an empty table with the specified number of rows. Optionally columns and types may be specified, but all
645
- * values will be null.
646
- * @param size -
647
- * @return {@link Promise} of {@link dh.Table}
753
+ * A list of the key Column objects
754
+ * @return {@link dh.Column} array.
648
755
  */
649
- emptyTable(size:number):Promise<Table>;
756
+ get keyColumns():Column[];
650
757
  /**
651
- * Creates a new table that ticks automatically every "periodNanos" nanoseconds. A start time may be provided; if so
652
- * the table will be populated with the interval from the specified date until now.
653
- * @param periodNanos -
654
- * @param startTime -
655
- * @return {@link Promise} of {@link dh.Table}
758
+ * A list of the value Column objects
759
+ * @return {@link dh.Column} array.
656
760
  */
657
- timeTable(periodNanos:number, startTime?:DateWrapper):Promise<Table>;
658
- addEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):()=>void;
659
- nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<CustomEvent<T>>;
660
- hasListeners(name:string):boolean;
661
- removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
761
+ get valueColumns():Column[];
762
+ /**
763
+ * The source table for this Input Table
764
+ * @return dh.table
765
+ */
766
+ get table():Table;
662
767
  }
663
768
 
664
769
  /**
665
- * Wrap BigInteger values for use in JS. Provides text formatting for display and access to the underlying value.
770
+ * Describes the structure of the column, and if desired can be used to get access to the data to be rendered in this
771
+ * column.
666
772
  */
667
- export class BigIntegerWrapper {
668
- protected constructor();
669
-
670
- static ofString(str:string):BigIntegerWrapper;
671
- asNumber():number;
672
- valueOf():string;
673
- toString():string;
674
- }
773
+ export class Column {
774
+ /**
775
+ * If this column is part of a roll-up tree table, represents the type of the row data that can be found in this
776
+ * column for leaf nodes if includeConstituents is enabled. Otherwise, it is <b>null</b>.
777
+ * @return String
778
+ */
779
+ readonly constituentType?:string|null;
780
+ readonly description?:string|null;
675
781
 
676
- /**
677
- * Describes data that can be filtered, either a column reference or a literal value. Used this way, the type of a value
678
- * can be specified so that values which are ambiguous or not well supported in JS will not be confused with Strings or
679
- * imprecise numbers (e.g., nanosecond-precision date values). Additionally, once wrapped in this way, methods can be
680
- * called on these value literal instances. These instances are immutable - any method called on them returns a new
681
- * instance.
682
- */
683
- export class FilterValue {
684
782
  protected constructor();
685
783
 
686
784
  /**
687
- * Constructs a number for the filter API from the given parameter. Can also be used on the values returned from
688
- * {@link TableData.get} for DateTime values. To create
689
- * a filter with a date, use <b>dh.DateWrapper.ofJsDate</b> or
690
- * {@link i18n.DateTimeFormat.parse}. To create a filter with a
691
- * 64-bit long integer, use {@link LongWrapper.ofString}.
692
- * @param input - the number to wrap as a FilterValue
693
- * @return an immutable FilterValue that can be built into a filter
785
+ * the value for this column in the given row. Type will be consistent with the type of the Column.
786
+ * @param row -
787
+ * @return Any
694
788
  */
695
- static ofNumber(input:LongWrapper|number):FilterValue;
789
+ get(row:Row):any;
790
+ getFormat(row:Row):Format;
696
791
  /**
697
- * a filter condition checking if the current value is equal to the given parameter
698
- * @param term -
699
- * @return {@link dh.FilterCondition}
792
+ * Creates a sort builder object, to be used when sorting by this column.
793
+ * @return {@link dh.Sort}
700
794
  */
701
- eq(term:FilterValue):FilterCondition;
795
+ sort():Sort;
702
796
  /**
703
- * a filter condition checking if the current value is equal to the given parameter, ignoring differences of upper
704
- * vs lower case
705
- * @param term -
706
- * @return {@link dh.FilterCondition}
707
- */
708
- eqIgnoreCase(term:FilterValue):FilterCondition;
797
+ * Creates a new value for use in filters based on this column. Used either as a parameter to another filter
798
+ * operation, or as a builder to create a filter operation.
799
+ * @return {@link dh.FilterValue}
800
+ */
801
+ filter():FilterValue;
709
802
  /**
710
- * a filter condition checking if the current value is not equal to the given parameter
711
- * @param term -
712
- * @return {@link dh.FilterCondition}
803
+ * a <b>CustomColumn</b> object to apply using `applyCustomColumns` with the expression specified.
804
+ * @param expression -
805
+ * @return {@link dh.CustomColumn}
713
806
  */
714
- notEq(term:FilterValue):FilterCondition;
807
+ formatColor(expression:string):CustomColumn;
715
808
  /**
716
- * a filter condition checking if the current value is not equal to the given parameter, ignoring differences of
717
- * upper vs lower case
718
- * @param term -
719
- * @return {@link dh.FilterCondition}
809
+ * a <b>CustomColumn</b> object to apply using <b>applyCustomColumns</b> with the expression specified.
810
+ * @param expression -
811
+ * @return {@link dh.CustomColumn}
720
812
  */
721
- notEqIgnoreCase(term:FilterValue):FilterCondition;
813
+ formatNumber(expression:string):CustomColumn;
722
814
  /**
723
- * a filter condition checking if the current value is greater than the given parameter
724
- * @param term -
725
- * @return {@link dh.FilterCondition}
815
+ * a <b>CustomColumn</b> object to apply using <b>applyCustomColumns</b> with the expression specified.
816
+ * @param expression -
817
+ * @return {@link dh.CustomColumn}
726
818
  */
727
- greaterThan(term:FilterValue):FilterCondition;
819
+ formatDate(expression:string):CustomColumn;
820
+ toString():string;
728
821
  /**
729
- * a filter condition checking if the current value is less than the given parameter
730
- * @param term -
731
- * @return {@link dh.FilterCondition}
822
+ * Label for this column.
823
+ * @return String
732
824
  */
733
- lessThan(term:FilterValue):FilterCondition;
825
+ get name():string;
734
826
  /**
735
- * a filter condition checking if the current value is greater than or equal to the given parameter
736
- * @param term -
737
- * @return {@link dh.FilterCondition}
827
+ * True if this column is a partition column. Partition columns are used for filtering uncoalesced tables (see
828
+ * <b>isUncoalesced</b> property on <b>Table</b>)
829
+ * @return boolean
738
830
  */
739
- greaterThanOrEqualTo(term:FilterValue):FilterCondition;
831
+ get isPartitionColumn():boolean;
740
832
  /**
741
- * a filter condition checking if the current value is less than or equal to the given parameter
742
- * @param term -
743
- * @return {@link dh.FilterCondition}
833
+ *
834
+ * @deprecated do not use. Internal index of the column in the table, to be used as a key on the Row.
835
+ * @return int
744
836
  */
745
- lessThanOrEqualTo(term:FilterValue):FilterCondition;
837
+ get index():number;
838
+ get isSortable():boolean;
746
839
  /**
747
- * a filter condition checking if the current value is in the given set of values
748
- * @param terms -
749
- * @return {@link dh.FilterCondition}
840
+ * Type of the row data that can be found in this column.
841
+ * @return String
750
842
  */
751
- in(terms:FilterValue[]):FilterCondition;
843
+ get type():string;
752
844
  /**
753
- * a filter condition checking if the current value is in the given set of values, ignoring differences of upper vs
754
- * lower case
755
- * @param terms -
756
- * @return {@link dh.FilterCondition}
845
+ * Format entire rows colors using the expression specified. Returns a <b>CustomColumn</b> object to apply to a
846
+ * table using <b>applyCustomColumns</b> with the parameters specified.
847
+ * @param expression -
848
+ * @return {@link dh.CustomColumn}
757
849
  */
758
- inIgnoreCase(terms:FilterValue[]):FilterCondition;
850
+ static formatRowColor(expression:string):CustomColumn;
759
851
  /**
760
- * a filter condition checking that the current value is not in the given set of values
761
- * @param terms -
762
- * @return {@link dh.FilterCondition}
852
+ * a <b>CustomColumn</b> object to apply using <b>applyCustomColumns</b> with the expression specified.
853
+ * @param name -
854
+ * @param expression -
855
+ * @return {@link dh.CustomColumn}
763
856
  */
764
- notIn(terms:FilterValue[]):FilterCondition;
857
+ static createCustomColumn(name:string, expression:string):CustomColumn;
858
+ }
859
+
860
+ /**
861
+ * Represents a set of Tables each corresponding to some key. The keys are available locally, but a call must be made to
862
+ * the server to get each Table. All tables will have the same structure.
863
+ */
864
+ export class PartitionedTable implements HasEventHandling {
765
865
  /**
766
- * a filter condition checking that the current value is not in the given set of values, ignoring differences of
767
- * upper vs lower case
768
- * @param terms -
769
- * @return {@link dh.FilterCondition}
866
+ * Indicates that a new key has been added to the array of keys, which can now be fetched with getTable.
770
867
  */
771
- notInIgnoreCase(terms:FilterValue[]):FilterCondition;
868
+ static readonly EVENT_KEYADDED:string;
772
869
  /**
773
- * a filter condition checking if the given value contains the given string value
774
- * @param term -
775
- * @return {@link dh.FilterCondition}
870
+ * Indicates that a new key has been added to the array of keys, which can now be fetched with getTable.
776
871
  */
777
- contains(term:FilterValue):FilterCondition;
872
+ static readonly EVENT_DISCONNECT:string;
778
873
  /**
779
- * a filter condition checking if the given value contains the given string value, ignoring differences of upper vs
780
- * lower case
781
- * @param term -
782
- * @return {@link dh.FilterCondition}
874
+ * Indicates that a new key has been added to the array of keys, which can now be fetched with getTable.
783
875
  */
784
- containsIgnoreCase(term:FilterValue):FilterCondition;
876
+ static readonly EVENT_RECONNECT:string;
785
877
  /**
786
- * a filter condition checking if the given value matches the provided regular expressions string. Regex patterns
787
- * use Java regex syntax
788
- * @param pattern -
789
- * @return {@link dh.FilterCondition}
878
+ * Indicates that a new key has been added to the array of keys, which can now be fetched with getTable.
790
879
  */
791
- matches(pattern:FilterValue):FilterCondition;
880
+ static readonly EVENT_RECONNECTFAILED:string;
881
+
882
+ protected constructor();
883
+
884
+ typedTicket():dhinternal.io.deephaven.proto.ticket_pb.TypedTicket;
792
885
  /**
793
- * a filter condition checking if the given value matches the provided regular expressions string, ignoring
794
- * differences of upper vs lower case. Regex patterns use Java regex syntax
795
- * @param pattern -
796
- * @return {@link dh.FilterCondition}
886
+ * Fetch the table with the given key.
887
+ * @param key - The key to fetch. An array of values for each key column, in the same order as the key columns are.
888
+ * @return Promise of dh.Table
797
889
  */
798
- matchesIgnoreCase(pattern:FilterValue):FilterCondition;
890
+ getTable(key:object):Promise<Table>;
799
891
  /**
800
- * a filter condition checking if the current value is a true boolean
801
- * @return {@link dh.FilterCondition}
892
+ * Open a new table that is the result of merging all constituent tables. See
893
+ * {@link io.deephaven.engine.table.PartitionedTable#merge()} for details.
894
+ * @return A merged representation of the constituent tables.
802
895
  */
803
- isTrue():FilterCondition;
896
+ getMergedTable():Promise<Table>;
804
897
  /**
805
- * a filter condition checking if the current value is a false boolean
806
- * @return {@link dh.FilterCondition}
898
+ * The set of all currently known keys. This is kept up to date, so getting the list after adding an event listener
899
+ * for <b>keyadded</b> will ensure no keys are missed.
900
+ * @return Set of Object
807
901
  */
808
- isFalse():FilterCondition;
902
+ getKeys():Set<object>;
809
903
  /**
810
- * a filter condition checking if the current value is a null value
811
- * @return {@link dh.FilterCondition}
904
+ * Fetch a table containing all the valid keys of the partitioned table.
905
+ * @return Promise of a Table
812
906
  */
813
- isNull():FilterCondition;
907
+ getKeyTable():Promise<Table>;
814
908
  /**
815
- * a filter condition invoking the given method on the current value, with the given parameters. Currently supported
816
- * functions that can be invoked on a String:
817
- * <ul>
818
- * <li><b>startsWith</b>: Returns true if the current string value starts with the supplied string argument</li>
819
- * <li><b>endsWith</b>: Returns true if the current string value ends with the supplied string argument</li>
820
- * <li><b>matches</b>: Returns true if the current string value matches the supplied string argument used as a Java
821
- * regular expression</li>
822
- * <li><b>contains</b>: Returns true if the current string value contains the supplied string argument
823
- * <p>
824
- * When invoking against a constant, this should be avoided in favor of FilterValue.contains
825
- * </p>
826
- * </li>
827
- * </ul>
828
- * @param method -
829
- * @param args -
830
- * @return
909
+ * Indicates that this PartitionedTable will no longer be used, removing subcriptions to updated keys, etc. This
910
+ * will not affect tables in use.
831
911
  */
832
- invoke(method:string, ...args:FilterValue[]):FilterCondition;
833
- toString():string;
912
+ close():void;
834
913
  /**
835
- * Constructs a string for the filter API from the given parameter.
836
- * @param input -
837
- * @return
914
+ * The count of known keys.
915
+ * @return int
838
916
  */
839
- static ofString(input:any):FilterValue;
917
+ get size():number;
840
918
  /**
841
- * Constructs a boolean for the filter API from the given parameter.
842
- * @param b -
919
+ * An array of the columns in the tables that can be retrieved from this partitioned table, including both key and
920
+ * non-key columns.
921
+ * @return Array of Column
922
+ */
923
+ get columns():Column[];
924
+ /**
925
+ * An array of all the key columns that the tables are partitioned by.
926
+ * @return Array of Column
927
+ */
928
+ get keyColumns():Column[];
929
+ /**
930
+ * Listen for events on this object.
931
+ * @param name - the name of the event to listen for
932
+ * @param callback - a function to call when the event occurs
933
+ * @return Returns a cleanup function.
934
+ * @typeParam T - the type of the data that the event will provide
935
+ */
936
+ addEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):()=>void;
937
+ nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<CustomEvent<T>>;
938
+ hasListeners(name:string):boolean;
939
+ /**
940
+ * Removes an event listener added to this table.
941
+ * @param name -
942
+ * @param callback -
843
943
  * @return
944
+ * @typeParam T -
844
945
  */
845
- static ofBoolean(b:boolean):FilterValue;
946
+ removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
846
947
  }
847
948
 
848
-
849
949
  /**
850
- * A Widget represents a server side object that sends one or more responses to the client. The client can then
851
- * interpret these responses to see what to render, or how to respond.
950
+ * Behaves like a {@link dh.Table} externally, but data, state, and viewports are managed by an entirely different
951
+ * mechanism, and so reimplemented here.
852
952
  * <p>
853
- * Most custom object types result in a single response being sent to the client, often with other exported objects, but
854
- * some will have streamed responses, and allow the client to send follow-up requests of its own. This class's API is
855
- * backwards compatible, but as such does not offer a way to tell the difference between a streaming or non-streaming
856
- * object type, the client code that handles the payloads is expected to know what to expect. See
857
- * {@link dh.WidgetMessageDetails} for more information.
953
+ * Any time a change is made, we build a new request and send it to the server, and wait for the updated state.
858
954
  * <p>
859
- * When the promise that returns this object resolves, it will have the first response assigned to its fields. Later
860
- * responses from the server will be emitted as "message" events. When the connection with the server ends, the "close"
861
- * event will be emitted. In this way, the connection will behave roughly in the same way as a WebSocket - either side
862
- * can close, and after close no more messages will be processed. There can be some latency in closing locally while
863
- * remote messages are still pending - it is up to implementations of plugins to handle this case.
955
+ * Semantics around getting updates from the server are slightly different - we don't "unset" the viewport here after
956
+ * operations are performed, but encourage the client code to re-set them to the desired position.
864
957
  * <p>
865
- * Also like WebSockets, the plugin API doesn't define how to serialize messages, and just handles any binary payloads.
866
- * What it does handle however, is allowing those messages to include references to server-side objects with those
867
- * payloads. Those server side objects might be tables or other built-in types in the Deephaven JS API, or could be
868
- * objects usable through their own plugins. They also might have no plugin at all, allowing the client to hold a
869
- * reference to them and pass them back to the server, either to the current plugin instance, or through another API.
870
- * The `Widget` type does not specify how those objects should be used or their lifecycle, but leaves that
871
- * entirely to the plugin. Messages will arrive in the order they were sent.
958
+ * The table size will be -1 until a viewport has been fetched.
959
+ * <p>
960
+ * Similar to a table, a Tree Table provides access to subscribed viewport data on the current hierarchy. A different
961
+ * Row type is used within that viewport, showing the depth of that node within the tree and indicating details about
962
+ * whether it has children or is expanded. The Tree Table itself then provides the ability to change if a row is
963
+ * expanded or not. Methods used to control or check if a row should be expanded or not can be invoked on a TreeRow
964
+ * instance, or on the number of the row (thus allowing for expanding/collapsing rows which are not currently visible in
965
+ * the viewport).
966
+ * <p>
967
+ * Events and viewports are somewhat different from tables, due to the expense of computing the expanded/collapsed rows
968
+ * and count of children at each level of the hierarchy, and differences in the data that is available.
872
969
  * <p>
873
- * This can suggest several patterns for how plugins operate:
874
970
  * <ul>
875
- * <li>The plugin merely exists to transport some other object to the client. This can be useful for objects which can
876
- * easily be translated to some other type (like a Table) when the user clicks on it. An example of this is
877
- * `pandas.DataFrame` will result in a widget that only contains a static
878
- * {@link dh.Table}. Presently, the widget is immediately closed, and only the Table is
879
- * provided to the JS API consumer.</li>
880
- * <li>The plugin provides references to Tables and other objects, and those objects can live longer than the object
881
- * which provided them. One concrete example of this could have been
882
- * {@link dh.PartitionedTable} when fetching constituent tables, but it was implemented
883
- * before bidirectional plugins were implemented. Another example of this is plugins that serve as a "factory", giving
884
- * the user access to table manipulation/creation methods not supported by gRPC or the JS API.</li>
885
- * <li>The plugin provides reference to Tables and other objects that only make sense within the context of the widget
886
- * instance, so when the widget goes away, those objects should be released as well. This is also an example of
887
- * {@link dh.PartitionedTable}, as the partitioned table tracks creation of new keys through
888
- * an internal table instance.</li>
889
- * </ul>
890
- *
891
- * Handling server objects in messages also has more than one potential pattern that can be used:
892
- * <ul>
893
- * <li>One object per message - the message clearly is about that object, no other details required.</li>
894
- * <li>Objects indexed within their message - as each message comes with a list of objects, those objects can be
895
- * referenced within the payload by index. This is roughly how {@link dh.plot.Figure}
896
- * behaves, where the figure descriptor schema includes an index for each created series, describing which table should
897
- * be used, which columns should be mapped to each axis.</li>
898
- * <li>Objects indexed since widget creation - each message would append its objects to a list created when the widget
899
- * was first made, and any new exports that arrive in a new message would be appended to that list. Then, subsequent
900
- * messages can reference objects already sent. This imposes a limitation where the client cannot release any exports
901
- * without the server somehow signaling that it will never reference that export again.</li>
971
+ * <li>There is no {@link Table.totalSize | totalSize} property.</li>
972
+ * <li>The viewport is not un-set when changes are made to filter or sort, but changes will continue to be streamed in.
973
+ * It is suggested that the viewport be changed to the desired position (usually the first N rows) after any filter/sort
974
+ * change is made. Likewise, {@link getViewportData} will always return the most recent data, and will not wait if a
975
+ * new operation is pending.</li>
976
+ * <li>Custom columns are not directly supported. If the TreeTable was created client-side, the original Table can have
977
+ * custom columns applied, and the TreeTable can be recreated.</li>
978
+ * <li>Whereas Table has a {@link Table.totalsTableConfig} property, it is defined here as a method,
979
+ * {@link getTotalsTableConfig}. This returns a promise so the config can be fetched asynchronously.</li>
980
+ * <li>Totals Tables for trees vary in behavior between tree tables and roll-up tables. This behavior is based on the
981
+ * original flat table used to produce the Tree Table - for a hierarchical table (i.e. Table.treeTable in the query
982
+ * config), the totals will include non-leaf nodes (since they are themselves actual rows in the table), but in a
983
+ * roll-up table, the totals only include leaf nodes (as non-leaf nodes are generated through grouping the contents of
984
+ * the original table). Roll-ups also have the {@link dh.includeConstituents} property, indicating that a
985
+ * {@link dh.Column} in the tree may have a {@link Column.constituentType} property reflecting that the type of cells
986
+ * where {@link TreeRow.hasChildren} is false will be different from usual.</li>
902
987
  * </ul>
903
988
  */
904
- export class Widget implements WidgetMessageDetails, HasEventHandling {
905
- static readonly EVENT_MESSAGE:string;
906
- static readonly EVENT_CLOSE:string;
907
-
908
- protected constructor();
909
-
989
+ export class TreeTable implements HasEventHandling {
910
990
  /**
911
- * Ends the client connection to the server.
991
+ * event.detail is the currently visible viewport data based on the active viewport configuration.
912
992
  */
913
- close():void;
914
- getDataAsBase64():string;
915
- getDataAsU8():Uint8Array;
916
- getDataAsString():string;
993
+ static readonly EVENT_UPDATED:string;
917
994
  /**
918
- * Sends a string/bytes payload to the server, along with references to objects that exist on the server.
919
- * @param msg - string/buffer/view instance that represents data to send
920
- * @param references - an array of objects that can be safely sent to the server
995
+ * event.detail is the currently visible viewport data based on the active viewport configuration.
921
996
  */
922
- sendMessage(msg:string|ArrayBuffer|ArrayBufferView, references?:Array<Table|Widget|WidgetExportedObject|PartitionedTable|TotalsTable|TreeTable>):void;
923
- addEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):()=>void;
924
- nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<CustomEvent<T>>;
925
- hasListeners(name:string):boolean;
926
- removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
997
+ static readonly EVENT_DISCONNECT:string;
927
998
  /**
928
- *
929
- * @return the exported objects sent in the initial message from the server. The client is responsible for closing
930
- * them when finished using them.
999
+ * event.detail is the currently visible viewport data based on the active viewport configuration.
931
1000
  */
932
- get exportedObjects():WidgetExportedObject[];
1001
+ static readonly EVENT_RECONNECT:string;
933
1002
  /**
934
- *
935
- * @return the type of this widget
1003
+ * event.detail is the currently visible viewport data based on the active viewport configuration.
936
1004
  */
937
- get type():string;
938
- }
939
-
940
- /**
941
- * Provides access to data in a table. Note that several methods present their response through Promises. This allows
942
- * the client to both avoid actually connecting to the server until necessary, and also will permit some changes not to
943
- * inform the UI right away that they have taken place.
944
- */
945
- export class Table implements JoinableTable, HasEventHandling {
946
- readonly description?:string|null;
947
- readonly pluginName?:string|null;
948
- readonly layoutHints?:null|LayoutHints;
949
- static readonly EVENT_SIZECHANGED:string;
950
- static readonly EVENT_UPDATED:string;
951
- static readonly EVENT_ROWADDED:string;
952
- static readonly EVENT_ROWREMOVED:string;
953
- static readonly EVENT_ROWUPDATED:string;
954
- static readonly EVENT_SORTCHANGED:string;
955
- static readonly EVENT_FILTERCHANGED:string;
956
- static readonly EVENT_CUSTOMCOLUMNSCHANGED:string;
957
- static readonly EVENT_DISCONNECT:string;
958
- static readonly EVENT_RECONNECT:string;
959
1005
  static readonly EVENT_RECONNECTFAILED:string;
1006
+ /**
1007
+ * event.detail is the currently visible viewport data based on the active viewport configuration.
1008
+ */
960
1009
  static readonly EVENT_REQUEST_FAILED:string;
961
- static readonly EVENT_REQUEST_SUCCEEDED:string;
962
- static readonly SIZE_UNCOALESCED:number;
1010
+ readonly description?:string|null;
963
1011
 
964
1012
  protected constructor();
965
1013
 
966
- batch(userCode:(arg0:unknown)=>void):Promise<Table>;
967
1014
  /**
968
- * Retrieve a column by the given name. You should prefer to always retrieve a new Column instance instead of
969
- * caching a returned value.
970
- * @param key -
971
- * @return {@link dh.Column}
1015
+ * Expands the given node, so that its children are visible when they are in the viewport. The parameter can be the
1016
+ * row index, or the row object itself. The second parameter is a boolean value, false by default, specifying if the
1017
+ * row and all descendants should be fully expanded. Equivalent to `setExpanded(row, true)` with an optional third
1018
+ * boolean parameter.
1019
+ * @param row -
1020
+ * @param expandDescendants -
972
1021
  */
973
- findColumn(key:string):Column;
1022
+ expand(row:TreeRow|number, expandDescendants?:boolean):void;
974
1023
  /**
975
- * Retrieve multiple columns specified by the given names.
976
- * @param keys -
977
- * @return {@link dh.Column} array
1024
+ * Collapses the given node, so that its children and descendants are not visible in the size or the viewport. The
1025
+ * parameter can be the row index, or the row object itself. Equivalent to <b>setExpanded(row, false, false)</b>.
1026
+ * @param row -
978
1027
  */
979
- findColumns(keys:string[]):Column[];
980
- isBlinkTable():boolean;
1028
+ collapse(row:TreeRow|number):void;
981
1029
  /**
982
- * If .hasInputTable is true, you may call this method to gain access to an InputTable object which can be used to
983
- * mutate the data within the table. If the table is not an Input Table, the promise will be immediately rejected.
984
- * @return Promise of dh.InputTable
1030
+ * Specifies if the given node should be expanded or collapsed. If this node has children, and the value is changed,
1031
+ * the size of the table will change. If node is to be expanded and the third parameter, <b>expandDescendants</b>,
1032
+ * is true, then its children will also be expanded.
1033
+ * @param row -
1034
+ * @param isExpanded -
1035
+ * @param expandDescendants -
985
1036
  */
986
- inputTable():Promise<InputTable>;
1037
+ setExpanded(row:TreeRow|number, isExpanded:boolean, expandDescendants?:boolean):void;
1038
+ expandAll():void;
1039
+ collapseAll():void;
987
1040
  /**
988
- * Indicates that this Table instance will no longer be used, and its connection to the server can be cleaned up.
1041
+ * true if the given row is expanded, false otherwise. Equivalent to `TreeRow.isExpanded`, if an instance of the row
1042
+ * is available
1043
+ * @param row -
1044
+ * @return boolean
989
1045
  */
990
- close():void;
991
- getAttributes():string[];
1046
+ isExpanded(row:TreeRow|number):boolean;
1047
+ setViewport(firstRow:number, lastRow:number, columns?:Array<Column>|undefined|null, updateInterval?:number|undefined|null):void;
1048
+ getViewportData():Promise<TreeViewportData>;
992
1049
  /**
993
- * null if no property exists, a string if it is an easily serializable property, or a ```Promise
994
- * &lt;Table&gt;``` that will either resolve with a table or error out if the object can't be passed to JS.
995
- * @param attributeName -
996
- * @return Object
1050
+ * Indicates that the table will no longer be used, and server resources can be freed.
997
1051
  */
998
- getAttribute(attributeName:string):unknown|undefined|null;
1052
+ close():void;
1053
+ typedTicket():dhinternal.io.deephaven.proto.ticket_pb.TypedTicket;
999
1054
  /**
1000
- * Replace the currently set sort on this table. Returns the previously set value. Note that the sort property will
1001
- * immediately return the new value, but you may receive update events using the old sort before the new sort is
1002
- * applied, and the <b>sortchanged</b> event fires. Reusing existing, applied sorts may enable this to perform
1003
- * better on the server. The <b>updated</b> event will also fire, but <b>rowadded</b> and <b>rowremoved</b> will
1004
- * not.
1055
+ * Applies the given sort to all levels of the tree. Returns the previous sort in use.
1005
1056
  * @param sort -
1006
1057
  * @return {@link dh.Sort} array
1007
1058
  */
1008
1059
  applySort(sort:Sort[]):Array<Sort>;
1009
1060
  /**
1010
- * Replace the currently set filters on the table. Returns the previously set value. Note that the filter property
1011
- * will immediately return the new value, but you may receive update events using the old filter before the new one
1012
- * is applied, and the <b>filterchanged</b> event fires. Reusing existing, applied filters may enable this to
1013
- * perform better on the server. The <b>updated</b> event will also fire, but <b>rowadded</b> and <b>rowremoved</b>
1014
- * will not.
1061
+ * Applies the given filter to the contents of the tree in such a way that if any node is visible, then any parent
1062
+ * node will be visible as well even if that parent node would not normally be visible due to the filter's
1063
+ * condition. Returns the previous sort in use.
1015
1064
  * @param filter -
1016
1065
  * @return {@link dh.FilterCondition} array
1017
1066
  */
1018
1067
  applyFilter(filter:FilterCondition[]):Array<FilterCondition>;
1019
1068
  /**
1020
- * used when adding new filter and sort operations to the table, as long as they are present.
1021
- * @param customColumns -
1022
- * @return {@link dh.CustomColumn} array
1069
+ * a column with the given name, or throws an exception if it cannot be found
1070
+ * @param key -
1071
+ * @return {@link dh.Column}
1023
1072
  */
1024
- applyCustomColumns(customColumns:Array<string|CustomColumn>):Array<CustomColumn>;
1073
+ findColumn(key:string):Column;
1025
1074
  /**
1026
- * If the columns parameter is not provided, all columns will be used. If the updateIntervalMs parameter is not
1027
- * provided, a default of one second will be used. Until this is called, no data will be available. Invoking this
1028
- * will result in events to be fired once data becomes available, starting with an `updated` event and a
1029
- * <b>rowadded</b> event per row in that range. The returned object allows the viewport to be closed when no longer
1030
- * needed.
1031
- * @param firstRow -
1032
- * @param lastRow -
1033
- * @param columns -
1034
- * @param updateIntervalMs -
1035
- * @return {@link dh.TableViewportSubscription}
1075
+ * an array with all of the named columns in order, or throws an exception if one cannot be found.
1076
+ * @param keys -
1077
+ * @return {@link dh.Column} array
1036
1078
  */
1037
- setViewport(firstRow:number, lastRow:number, columns?:Array<Column>|undefined|null, updateIntervalMs?:number|undefined|null):TableViewportSubscription;
1079
+ findColumns(keys:string[]):Column[];
1038
1080
  /**
1039
- * Gets the currently visible viewport. If the current set of operations has not yet resulted in data, it will not
1040
- * resolve until that data is ready. If this table is closed before the promise resolves, it will be rejected - to
1041
- * separate the lifespan of this promise from the table itself, call
1042
- * {@link TableViewportSubscription.getViewportData} on the result from {@link Table.setViewport}.
1043
- * @return Promise of {@link dh.TableData}
1081
+ * Provides Table-like selectDistinct functionality, but with a few quirks, since it is only fetching the distinct
1082
+ * values for the given columns in the source table:
1083
+ * <ul>
1084
+ * <li>Rollups may make no sense, since values are aggregated.</li>
1085
+ * <li>Values found on orphaned (and removed) nodes will show up in the resulting table, even though they are not in
1086
+ * the tree.</li>
1087
+ * <li>Values found on parent nodes which are only present in the tree since a child is visible will not be present
1088
+ * in the resulting table.</li>
1089
+ * </ul>
1044
1090
  */
1045
- getViewportData():Promise<TableData>;
1091
+ selectDistinct(columns:Column[]):Promise<Table>;
1092
+ getTotalsTableConfig():Promise<TotalsTableConfig>;
1093
+ getTotalsTable(config?:object):Promise<TotalsTable>;
1094
+ getGrandTotalsTable(config?:object):Promise<TotalsTable>;
1046
1095
  /**
1047
- * Creates a subscription to the specified columns, across all rows in the table. The optional parameter
1048
- * updateIntervalMs may be specified to indicate how often the server should send updates, defaulting to one second
1049
- * if omitted. Useful for charts or taking a snapshot of the table atomically. The initial snapshot will arrive in a
1050
- * single event, but later changes will be sent as updates. However, this may still be very expensive to run from a
1051
- * browser for very large tables. Each call to subscribe creates a new subscription, which must have <b>close()</b>
1052
- * called on it to stop it, and all events are fired from the TableSubscription instance.
1053
- * @param columns -
1054
- * @param updateIntervalMs -
1055
- * @return {@link dh.TableSubscription}
1096
+ * a new copy of this treetable, so it can be sorted and filtered separately, and maintain a different viewport.
1097
+ * Unlike Table, this will _not_ copy the filter or sort, since tree table viewport semantics differ, and without a
1098
+ * viewport set, the treetable doesn't evaluate these settings, and they aren't readable on the properties. Expanded
1099
+ * state is also not copied.
1100
+ * @return Promise of dh.TreeTable
1056
1101
  */
1057
- subscribe(columns:Array<Column>, updateIntervalMs?:number):TableSubscription;
1102
+ copy():Promise<TreeTable>;
1058
1103
  /**
1059
- * a new table containing the distinct tuples of values from the given columns that are present in the original
1060
- * table. This table can be manipulated as any other table. Sorting is often desired as the default sort is the
1061
- * order of appearance of values from the original table.
1062
- * @param columns -
1063
- * @return Promise of dh.Table
1104
+ * The current filter configuration of this Tree Table.
1105
+ * @return {@link dh.FilterCondition} array
1064
1106
  */
1065
- selectDistinct(columns:Column[]):Promise<Table>;
1107
+ get filter():Array<FilterCondition>;
1066
1108
  /**
1067
- * Creates a new copy of this table, so it can be sorted and filtered separately, and maintain a different viewport.
1068
- * @return Promise of dh.Table
1109
+ * True if this is a roll-up and will provide the original rows that make up each grouping.
1110
+ * @return boolean
1069
1111
  */
1070
- copy():Promise<Table>;
1112
+ get includeConstituents():boolean;
1113
+ get groupedColumns():Array<Column>;
1071
1114
  /**
1072
- * a promise that will resolve to a Totals Table of this table. This table will obey the configurations provided as
1073
- * a parameter, or will use the table's default if no parameter is provided, and be updated once per second as
1074
- * necessary. Note that multiple calls to this method will each produce a new TotalsTable which must have close()
1075
- * called on it when not in use.
1076
- * @param config -
1077
- * @return Promise of dh.TotalsTable
1115
+ * True if this table has been closed.
1116
+ * @return boolean
1078
1117
  */
1079
- getTotalsTable(config?:TotalsTableConfig|undefined|null):Promise<TotalsTable>;
1118
+ get isClosed():boolean;
1080
1119
  /**
1081
- * a promise that will resolve to a Totals Table of this table, ignoring any filters. See <b>getTotalsTable()</b>
1082
- * above for more specifics.
1083
- * @param config -
1084
- * @return promise of dh.TotalsTable
1120
+ * The current number of rows given the table's contents and the various expand/collapse states of each node. (No
1121
+ * totalSize is provided at this time; its definition becomes unclear between roll-up and tree tables, especially
1122
+ * when considering collapse/expand states).
1123
+ * @return double
1085
1124
  */
1086
- getGrandTotalsTable(config?:TotalsTableConfig|undefined|null):Promise<TotalsTable>;
1125
+ get size():number;
1087
1126
  /**
1088
- * a promise that will resolve to a new roll-up <b>TreeTable</b> of this table. Multiple calls to this method will
1089
- * each produce a new <b>TreeTable</b> which must have close() called on it when not in use.
1090
- * @param configObject -
1091
- * @return Promise of dh.TreeTable
1092
- */
1093
- rollup(configObject:RollupConfig):Promise<TreeTable>;
1094
- /**
1095
- * a promise that will resolve to a new `TreeTable` of this table. Multiple calls to this method will each produce a
1096
- * new `TreeTable` which must have close() called on it when not in use.
1097
- * @param configObject -
1098
- * @return Promise dh.TreeTable
1099
- */
1100
- treeTable(configObject:TreeTableConfig):Promise<TreeTable>;
1101
- /**
1102
- * a "frozen" version of this table (a server-side snapshot of the entire source table). Viewports on the frozen
1103
- * table will not update. This does not change the original table, and the new table will not have any of the client
1104
- * side sorts/filters/columns. New client side sorts/filters/columns can be added to the frozen copy.
1105
- * @return Promise of dh.Table
1106
- */
1107
- freeze():Promise<Table>;
1108
- snapshot(baseTable:Table, doInitialSnapshot?:boolean, stampColumns?:string[]):Promise<Table>;
1109
- /**
1110
- *
1111
- * @deprecated a promise that will be resolved with a newly created table holding the results of the join operation.
1112
- * The last parameter is optional, and if not specified or empty, all columns from the right table will
1113
- * be added to the output. Callers are responsible for ensuring that there are no duplicates - a match
1114
- * pair can be passed instead of a name to specify the new name for the column. Supported `joinType`
1115
- * values (consult Deephaven's "Joining Data from Multiple Tables for more detail): "Join" <a href='https://docs.deephaven.io/latest/Content/writeQueries/tableOperations/joins.htm#Joining_Data_from_Multiple_Tables'>Joining_Data_from_Multiple_Tables</a>
1116
- * "Natural" "AJ" "ReverseAJ" "ExactJoin" "LeftJoin"
1117
- * @param joinType -
1118
- * @param rightTable -
1119
- * @param columnsToMatch -
1120
- * @param columnsToAdd -
1121
- * @param asOfMatchRule -
1122
- * @return Promise of dh.Table
1123
- */
1124
- join(joinType:object, rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null, asOfMatchRule?:unknown|undefined|null):Promise<Table>;
1125
- /**
1126
- * a promise that will be resolved with the newly created table holding the results of the specified as-of join
1127
- * operation. The <b>columnsToAdd</b> parameter is optional, not specifying it will result in all columns from the
1128
- * right table being added to the output. The <b>asOfMatchRule</b> is optional, defaults to <b>LESS_THAN_EQUAL</b>
1129
- *
1130
- * <p>
1131
- * the allowed values are:
1132
- * </p>
1133
- *
1134
- * <ul>
1135
- * <li>LESS_THAN_EQUAL</li>
1136
- * <li>LESS_THAN</li>
1137
- * <li>GREATER_THAN_EQUAL</li>
1138
- * <li>GREATER_THAN</li>
1139
- * </ul>
1140
- * @param rightTable -
1141
- * @param columnsToMatch -
1142
- * @param columnsToAdd -
1143
- * @param asOfMatchRule -
1144
- * @return Promise og dh.Table
1145
- */
1146
- asOfJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null, asOfMatchRule?:string|undefined|null):Promise<Table>;
1147
- /**
1148
- * a promise that will be resolved with the newly created table holding the results of the specified cross join
1149
- * operation. The <b>columnsToAdd</b> parameter is optional, not specifying it will result in all columns from the
1150
- * right table being added to the output. The <b>reserveBits</b> optional parameter lets the client control how the
1151
- * key space is distributed between the rows in the two tables, see the Java <b>Table</b> class for details.
1152
- * @param rightTable -
1153
- * @param columnsToMatch -
1154
- * @param columnsToAdd -
1155
- * @param reserve_bits -
1156
- * @return Promise of dh.Table
1157
- */
1158
- crossJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>, reserve_bits?:number):Promise<Table>;
1159
- /**
1160
- * a promise that will be resolved with the newly created table holding the results of the specified exact join
1161
- * operation. The `columnsToAdd` parameter is optional, not specifying it will result in all columns from the right
1162
- * table being added to the output.
1163
- * @param rightTable -
1164
- * @param columnsToMatch -
1165
- * @param columnsToAdd -
1166
- * @return Promise of dh.Table
1167
- */
1168
- exactJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>):Promise<Table>;
1169
- /**
1170
- * a promise that will be resolved with the newly created table holding the results of the specified natural join
1171
- * operation. The <b>columnsToAdd</b> parameter is optional, not specifying it will result in all columns from the
1172
- * right table being added to the output.
1173
- * @param rightTable -
1174
- * @param columnsToMatch -
1175
- * @param columnsToAdd -
1176
- * @return Promise of dh.Table
1177
- */
1178
- naturalJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>):Promise<Table>;
1179
- byExternal(keys:object, dropKeys?:boolean):Promise<PartitionedTable>;
1180
- /**
1181
- * Creates a new PartitionedTable from the contents of the current table, partitioning data based on the specified
1182
- * keys.
1183
- * @param keys -
1184
- * @param dropKeys -
1185
- * @return Promise dh.PartitionedTable
1186
- */
1187
- partitionBy(keys:object, dropKeys?:boolean):Promise<PartitionedTable>;
1188
- /**
1189
- * a promise that will resolve to ColumnStatistics for the column of this table.
1190
- * @param column -
1191
- * @return Promise of dh.ColumnStatistics
1192
- */
1193
- getColumnStatistics(column:Column):Promise<ColumnStatistics>;
1194
- /**
1195
- * Seek the row matching the data provided
1196
- * @param startingRow - Row to start the seek from
1197
- * @param column - Column to seek for value on
1198
- * @param valueType - Type of value provided
1199
- * @param seekValue - Value to seek
1200
- * @param insensitive - Optional value to flag a search as case-insensitive. Defaults to `false`.
1201
- * @param contains - Optional value to have the seek value do a contains search instead of exact equality. Defaults to
1202
- * `false`.
1203
- * @param isBackwards - Optional value to seek backwards through the table instead of forwards. Defaults to `false`.
1204
- * @return A promise that resolves to the row value found.
1205
- */
1206
- seekRow(startingRow:number, column:Column, valueType:ValueTypeType, seekValue:any, insensitive?:boolean|undefined|null, contains?:boolean|undefined|null, isBackwards?:boolean|undefined|null):Promise<number>;
1207
- toString():string;
1208
- /**
1209
- * True if this table represents a user Input Table (created by InputTable.newInputTable). When true, you may call
1210
- * .inputTable() to add or remove data from the underlying table.
1211
- * @return boolean
1212
- */
1213
- get hasInputTable():boolean;
1214
- /**
1215
- * The columns that are present on this table. This is always all possible columns. If you specify fewer columns in
1216
- * .setViewport(), you will get only those columns in your ViewportData. <b>Number size</b> The total count of rows
1217
- * in the table. The size can and will change; see the <b>sizechanged</b> event for details. Size will be negative
1218
- * in exceptional cases (eg. the table is uncoalesced, see the <b>isUncoalesced</b> property for details).
1127
+ * The columns that can be shown in this Tree Table.
1219
1128
  * @return {@link dh.Column} array
1220
1129
  */
1221
1130
  get columns():Array<Column>;
1222
1131
  /**
1223
- * The default configuration to be used when building a <b>TotalsTable</b> for this table.
1224
- * @return dh.TotalsTableConfig
1225
- */
1226
- get totalsTableConfig():TotalsTableConfig;
1227
- /**
1228
- * An ordered list of Sorts to apply to the table. To update, call <b>applySort()</b>. Note that this getter will
1229
- * return the new value immediately, even though it may take a little time to update on the server. You may listen
1230
- * for the <b>sortchanged</b> event to know when to update the UI.
1231
- * @return {@link dh.Sort} array
1132
+ * The current sort configuration of this Tree Table
1133
+ * @return {@link dh.Sort} array.
1232
1134
  */
1233
1135
  get sort():Array<Sort>;
1234
1136
  /**
1235
- * An ordered list of custom column formulas to add to the table, either adding new columns or replacing existing
1236
- * ones. To update, call <b>applyCustomColumns()</b>.
1237
- * @return {@link dh.CustomColumn} array
1238
- */
1239
- get customColumns():Array<CustomColumn>;
1240
- /**
1241
1137
  * True if this table may receive updates from the server, including size changed events, updated events after
1242
1138
  * initial snapshot.
1243
1139
  * @return boolean
1244
1140
  */
1245
1141
  get isRefreshing():boolean;
1246
1142
  /**
1247
- * An ordered list of Filters to apply to the table. To update, call applyFilter(). Note that this getter will
1248
- * return the new value immediately, even though it may take a little time to update on the server. You may listen
1249
- * for the <b>filterchanged</b> event to know when to update the UI.
1250
- * @return {@link dh.FilterCondition} array
1143
+ * Listen for events on this object.
1144
+ * @param name - the name of the event to listen for
1145
+ * @param callback - a function to call when the event occurs
1146
+ * @return Returns a cleanup function.
1147
+ * @typeParam T - the type of the data that the event will provide
1251
1148
  */
1252
- get filter():Array<FilterCondition>;
1149
+ addEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):()=>void;
1150
+ nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<CustomEvent<T>>;
1151
+ hasListeners(name:string):boolean;
1253
1152
  /**
1254
- * The total count of the rows in the table, excluding any filters. Unlike <b>size</b>, changes to this value will
1255
- * not result in any event. <b>Sort[] sort</b> an ordered list of Sorts to apply to the table. To update, call
1256
- * applySort(). Note that this getter will return the new value immediately, even though it may take a little time
1257
- * to update on the server. You may listen for the <b>sortchanged</b> event to know when to update the UI.
1258
- * @return double
1153
+ * Removes an event listener added to this table.
1154
+ * @param name -
1155
+ * @param callback -
1156
+ * @return
1157
+ * @typeParam T -
1259
1158
  */
1260
- get totalSize():number;
1159
+ removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
1160
+ }
1161
+
1162
+
1163
+ /**
1164
+ * Presently, this is the entrypoint into the Deephaven JS API. By creating an instance of this with the server URL and
1165
+ * some options, JS applications can run code on the server, and interact with available exportable objects.
1166
+ */
1167
+ export class IdeConnection implements HasEventHandling {
1261
1168
  /**
1262
- * The total count of rows in the table. The size can and will change; see the <b>sizechanged</b> event for details.
1263
- * Size will be negative in exceptional cases (e.g., the table is uncoalesced; see the <b>isUncoalesced</b>
1264
- * property). for details).
1265
- * @return double
1169
+ * @deprecated
1266
1170
  */
1267
- get size():number;
1171
+ static readonly HACK_CONNECTION_FAILURE:string;
1172
+ static readonly EVENT_DISCONNECT:string;
1173
+ static readonly EVENT_RECONNECT:string;
1174
+ static readonly EVENT_SHUTDOWN:string;
1175
+
1268
1176
  /**
1269
- * True if this table has been closed.
1270
- * @return boolean
1177
+ * creates a new instance, from which console sessions can be made. <b>options</b> are optional.
1178
+ * @param serverUrl - The url used when connecting to the server. Read-only.
1179
+ * @param connectOptions - Optional Object
1180
+ * @param fromJava - Optional boolean
1181
+ * @deprecated
1271
1182
  */
1272
- get isClosed():boolean;
1183
+ constructor(serverUrl:string, connectOptions?:ConnectOptions, fromJava?:boolean);
1184
+
1273
1185
  /**
1274
- * Read-only. True if this table is uncoalesced. Set a viewport or filter on the partition columns to coalesce the
1275
- * table. Check the <b>isPartitionColumn</b> property on the table columns to retrieve the partition columns. Size
1276
- * will be unavailable until table is coalesced.
1277
- * @return boolean
1186
+ * closes the current connection, releasing any resources on the server or client.
1278
1187
  */
1279
- get isUncoalesced():boolean;
1188
+ close():void;
1189
+ running():Promise<IdeConnection>;
1190
+ getObject(definitionObject:dh.ide.VariableDescriptor):Promise<any>;
1191
+ subscribeToFieldUpdates(callback:(arg0:dh.ide.VariableChanges)=>void):()=>void;
1192
+ /**
1193
+ * Register a callback function to handle any log messages that are emitted on the server. Returns a function ,
1194
+ * which can be invoked to remove this log handler. Any log handler registered in this way will receive as many old
1195
+ * log messages as are presently available.
1196
+ * @param callback -
1197
+ * @return {@link io.deephaven.web.shared.fu.JsRunnable}
1198
+ */
1199
+ onLogMessage(callback:(arg0:dh.ide.LogItem)=>void):()=>void;
1200
+ startSession(type:string):Promise<IdeSession>;
1201
+ getConsoleTypes():Promise<Array<string>>;
1202
+ getWorkerHeapInfo():Promise<WorkerHeapInfo>;
1280
1203
  /**
1281
1204
  * Listen for events on this object.
1282
1205
  * @param name - the name of the event to listen for
@@ -1295,46 +1218,80 @@ export namespace dh {
1295
1218
  * @typeParam T -
1296
1219
  */
1297
1220
  removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
1298
- /**
1299
- * a Sort than can be used to reverse a table. This can be passed into n array in applySort. Note that Tree Tables
1300
- * do not support reverse.
1301
- * @return {@link dh.Sort}
1302
- */
1303
- static reverse():Sort;
1304
- }
1305
-
1306
- export class Ide {
1307
- constructor();
1308
-
1309
- /**
1310
- * @deprecated
1311
- */
1312
- getExistingSession(websocketUrl:string, authToken:string, serviceId:string, language:string):Promise<IdeSession>;
1313
- /**
1314
- * @deprecated
1315
- */
1316
- static getExistingSession(websocketUrl:string, authToken:string, serviceId:string, language:string):Promise<IdeSession>;
1317
1221
  }
1318
1222
 
1319
- /**
1320
- * Deprecated for use in Deephaven Core.
1321
- * @deprecated
1322
- */
1323
- export class Client {
1223
+ export class CoreClient implements HasEventHandling {
1224
+ static readonly EVENT_CONNECT:string;
1225
+ static readonly EVENT_DISCONNECT:string;
1226
+ static readonly EVENT_RECONNECT:string;
1227
+ static readonly EVENT_RECONNECT_AUTH_FAILED:string;
1228
+ static readonly EVENT_REFRESH_TOKEN_UPDATED:string;
1324
1229
  static readonly EVENT_REQUEST_FAILED:string;
1325
1230
  static readonly EVENT_REQUEST_STARTED:string;
1326
1231
  static readonly EVENT_REQUEST_SUCCEEDED:string;
1232
+ static readonly LOGIN_TYPE_PASSWORD:string;
1233
+ static readonly LOGIN_TYPE_ANONYMOUS:string;
1327
1234
 
1328
- constructor();
1329
- }
1235
+ constructor(serverUrl:string, connectOptions?:ConnectOptions);
1330
1236
 
1331
- export class LongWrapper {
1332
- protected constructor();
1237
+ running():Promise<CoreClient>;
1238
+ getServerUrl():string;
1239
+ getAuthConfigValues():Promise<string[][]>;
1240
+ login(credentials:LoginCredentials):Promise<void>;
1241
+ relogin(token:RefreshToken):Promise<void>;
1242
+ onConnected(timeoutInMillis?:number):Promise<void>;
1243
+ getServerConfigValues():Promise<string[][]>;
1244
+ getStorageService():dh.storage.StorageService;
1245
+ getAsIdeConnection():Promise<IdeConnection>;
1246
+ disconnect():void;
1247
+ addEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):()=>void;
1248
+ nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<CustomEvent<T>>;
1249
+ hasListeners(name:string):boolean;
1250
+ removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
1251
+ }
1252
+
1253
+ /**
1254
+ * Event fired when a command is issued from the client.
1255
+ */
1256
+ export class CommandInfo {
1257
+ constructor(code:string, result:Promise<dh.ide.CommandResult>);
1258
+
1259
+ get result():Promise<dh.ide.CommandResult>;
1260
+ get code():string;
1261
+ }
1262
+
1263
+ export class CustomColumn {
1264
+ static readonly TYPE_FORMAT_COLOR:string;
1265
+ static readonly TYPE_FORMAT_NUMBER:string;
1266
+ static readonly TYPE_FORMAT_DATE:string;
1267
+ static readonly TYPE_NEW:string;
1268
+
1269
+ protected constructor();
1333
1270
 
1334
- static ofString(str:string):LongWrapper;
1335
- asNumber():number;
1336
1271
  valueOf():string;
1337
1272
  toString():string;
1273
+ /**
1274
+ * The expression to evaluate this custom column.
1275
+ * @return String
1276
+ */
1277
+ get expression():string;
1278
+ /**
1279
+ * The name of the column to use.
1280
+ * @return String
1281
+ */
1282
+ get name():string;
1283
+ /**
1284
+ * Type of custom column. One of
1285
+ *
1286
+ * <ul>
1287
+ * <li>FORMAT_COLOR</li>
1288
+ * <li>FORMAT_NUMBER</li>
1289
+ * <li>FORMAT_DATE</li>
1290
+ * <li>NEW</li>
1291
+ * </ul>
1292
+ * @return String
1293
+ */
1294
+ get type():string;
1338
1295
  }
1339
1296
 
1340
1297
  /**
@@ -1362,346 +1319,209 @@ export namespace dh {
1362
1319
  }
1363
1320
 
1364
1321
  /**
1365
- * Describes how a Totals Table will be generated from its parent table. Each table has a default (which may be null)
1366
- * indicating how that table was configured when it was declared, and each Totals Table has a similar property
1367
- * describing how it was created. Both the <b>Table.getTotalsTable</b> and <b>Table.getGrandTotalsTable</b> methods take
1368
- * this config as an optional parameter - without it, the table's default will be used, or if null, a default instance
1369
- * of <b>TotalsTableConfig</b> will be supplied.
1370
- *
1371
- * This class has a no-arg constructor, allowing an instance to be made with the default values provided. However, any
1372
- * JS object can be passed in to the methods which accept instances of this type, provided their values adhere to the
1373
- * expected formats.
1322
+ * Wrap BigDecimal values for use in JS. Provides text formatting for display and access to the underlying value.
1374
1323
  */
1375
- export class TotalsTableConfig {
1324
+ export class BigDecimalWrapper {
1325
+ protected constructor();
1326
+
1327
+ static ofString(value:string):BigDecimalWrapper;
1328
+ asNumber():number;
1329
+ valueOf():string;
1330
+ toString():string;
1331
+ }
1332
+
1333
+ export class QueryInfo {
1334
+ static readonly EVENT_TABLE_OPENED:string;
1335
+ static readonly EVENT_DISCONNECT:string;
1336
+ static readonly EVENT_RECONNECT:string;
1337
+ static readonly EVENT_CONNECT:string;
1338
+
1339
+ protected constructor();
1340
+ }
1341
+
1342
+ export class Ide {
1343
+ constructor();
1344
+
1376
1345
  /**
1377
1346
  * @deprecated
1378
1347
  */
1379
- static readonly COUNT:string;
1348
+ getExistingSession(websocketUrl:string, authToken:string, serviceId:string, language:string):Promise<IdeSession>;
1380
1349
  /**
1381
1350
  * @deprecated
1382
1351
  */
1383
- static readonly MIN:string;
1352
+ static getExistingSession(websocketUrl:string, authToken:string, serviceId:string, language:string):Promise<IdeSession>;
1353
+ }
1354
+
1355
+ /**
1356
+ * Describes data that can be filtered, either a column reference or a literal value. Used this way, the type of a value
1357
+ * can be specified so that values which are ambiguous or not well supported in JS will not be confused with Strings or
1358
+ * imprecise numbers (e.g., nanosecond-precision date values). Additionally, once wrapped in this way, methods can be
1359
+ * called on these value literal instances. These instances are immutable - any method called on them returns a new
1360
+ * instance.
1361
+ */
1362
+ export class FilterValue {
1363
+ protected constructor();
1364
+
1384
1365
  /**
1385
- * @deprecated
1366
+ * Constructs a number for the filter API from the given parameter. Can also be used on the values returned from
1367
+ * {@link TableData.get} for DateTime values. To create
1368
+ * a filter with a date, use <b>dh.DateWrapper.ofJsDate</b> or
1369
+ * {@link i18n.DateTimeFormat.parse}. To create a filter with a
1370
+ * 64-bit long integer, use {@link LongWrapper.ofString}.
1371
+ * @param input - the number to wrap as a FilterValue
1372
+ * @return an immutable FilterValue that can be built into a filter
1386
1373
  */
1387
- static readonly MAX:string;
1374
+ static ofNumber(input:LongWrapper|number):FilterValue;
1388
1375
  /**
1389
- * @deprecated
1376
+ * a filter condition checking if the current value is equal to the given parameter
1377
+ * @param term -
1378
+ * @return {@link dh.FilterCondition}
1390
1379
  */
1391
- static readonly SUM:string;
1380
+ eq(term:FilterValue):FilterCondition;
1392
1381
  /**
1393
- * @deprecated
1382
+ * a filter condition checking if the current value is equal to the given parameter, ignoring differences of upper
1383
+ * vs lower case
1384
+ * @param term -
1385
+ * @return {@link dh.FilterCondition}
1394
1386
  */
1395
- static readonly ABS_SUM:string;
1387
+ eqIgnoreCase(term:FilterValue):FilterCondition;
1396
1388
  /**
1397
- * @deprecated
1389
+ * a filter condition checking if the current value is not equal to the given parameter
1390
+ * @param term -
1391
+ * @return {@link dh.FilterCondition}
1398
1392
  */
1399
- static readonly VAR:string;
1393
+ notEq(term:FilterValue):FilterCondition;
1400
1394
  /**
1401
- * @deprecated
1395
+ * a filter condition checking if the current value is not equal to the given parameter, ignoring differences of
1396
+ * upper vs lower case
1397
+ * @param term -
1398
+ * @return {@link dh.FilterCondition}
1402
1399
  */
1403
- static readonly AVG:string;
1400
+ notEqIgnoreCase(term:FilterValue):FilterCondition;
1404
1401
  /**
1405
- * @deprecated
1402
+ * a filter condition checking if the current value is greater than the given parameter
1403
+ * @param term -
1404
+ * @return {@link dh.FilterCondition}
1406
1405
  */
1407
- static readonly STD:string;
1406
+ greaterThan(term:FilterValue):FilterCondition;
1408
1407
  /**
1409
- * @deprecated
1408
+ * a filter condition checking if the current value is less than the given parameter
1409
+ * @param term -
1410
+ * @return {@link dh.FilterCondition}
1410
1411
  */
1411
- static readonly FIRST:string;
1412
+ lessThan(term:FilterValue):FilterCondition;
1412
1413
  /**
1413
- * @deprecated
1414
+ * a filter condition checking if the current value is greater than or equal to the given parameter
1415
+ * @param term -
1416
+ * @return {@link dh.FilterCondition}
1414
1417
  */
1415
- static readonly LAST:string;
1418
+ greaterThanOrEqualTo(term:FilterValue):FilterCondition;
1416
1419
  /**
1417
- * @deprecated
1420
+ * a filter condition checking if the current value is less than or equal to the given parameter
1421
+ * @param term -
1422
+ * @return {@link dh.FilterCondition}
1418
1423
  */
1419
- static readonly SKIP:string;
1424
+ lessThanOrEqualTo(term:FilterValue):FilterCondition;
1420
1425
  /**
1421
- * Specifies if a Totals Table should be expanded by default in the UI. Defaults to false.
1426
+ * a filter condition checking if the current value is in the given set of values
1427
+ * @param terms -
1428
+ * @return {@link dh.FilterCondition}
1422
1429
  */
1423
- showTotalsByDefault:boolean;
1430
+ in(terms:FilterValue[]):FilterCondition;
1424
1431
  /**
1425
- * Specifies if a Grand Totals Table should be expanded by default in the UI. Defaults to false.
1432
+ * a filter condition checking if the current value is in the given set of values, ignoring differences of upper vs
1433
+ * lower case
1434
+ * @param terms -
1435
+ * @return {@link dh.FilterCondition}
1426
1436
  */
1427
- showGrandTotalsByDefault:boolean;
1437
+ inIgnoreCase(terms:FilterValue[]):FilterCondition;
1428
1438
  /**
1429
- * Specifies the default operation for columns that do not have a specific operation applied; defaults to "Sum".
1439
+ * a filter condition checking that the current value is not in the given set of values
1440
+ * @param terms -
1441
+ * @return {@link dh.FilterCondition}
1430
1442
  */
1431
- defaultOperation:AggregationOperationType;
1443
+ notIn(terms:FilterValue[]):FilterCondition;
1432
1444
  /**
1433
- * Mapping from each column name to the aggregation(s) that should be applied to that column in the resulting Totals
1434
- * Table. If a column is omitted, the defaultOperation is used.
1445
+ * a filter condition checking that the current value is not in the given set of values, ignoring differences of
1446
+ * upper vs lower case
1447
+ * @param terms -
1448
+ * @return {@link dh.FilterCondition}
1435
1449
  */
1436
- operationMap:{ [key: string]: Array<AggregationOperationType>; };
1450
+ notInIgnoreCase(terms:FilterValue[]):FilterCondition;
1437
1451
  /**
1438
- * Groupings to use when generating the Totals Table. One row will exist for each unique set of values observed in
1439
- * these columns. See also `Table.selectDistinct`.
1452
+ * a filter condition checking if the given value contains the given string value
1453
+ * @param term -
1454
+ * @return {@link dh.FilterCondition}
1440
1455
  */
1441
- groupBy:Array<string>;
1442
-
1443
- constructor();
1444
-
1445
- toString():string;
1446
- }
1447
-
1448
- /**
1449
- * Describes a Sort present on the table. No visible constructor, created through the use of Column.sort(), will be tied
1450
- * to that particular column data. Sort instances are immutable, and use a builder pattern to make modifications. All
1451
- * methods return a new Sort instance.
1452
- */
1453
- export class Sort {
1454
- static readonly ASCENDING:string;
1455
- static readonly DESCENDING:string;
1456
- static readonly REVERSE:string;
1457
-
1458
- protected constructor();
1459
-
1456
+ contains(term:FilterValue):FilterCondition;
1460
1457
  /**
1461
- * Builds a Sort instance to sort values in ascending order.
1462
- * @return {@link dh.Sort}
1458
+ * a filter condition checking if the given value contains the given string value, ignoring differences of upper vs
1459
+ * lower case
1460
+ * @param term -
1461
+ * @return {@link dh.FilterCondition}
1463
1462
  */
1464
- asc():Sort;
1463
+ containsIgnoreCase(term:FilterValue):FilterCondition;
1465
1464
  /**
1466
- * Builds a Sort instance to sort values in descending order.
1467
- * @return {@link dh.Sort}
1465
+ * a filter condition checking if the given value matches the provided regular expressions string. Regex patterns
1466
+ * use Java regex syntax
1467
+ * @param pattern -
1468
+ * @return {@link dh.FilterCondition}
1468
1469
  */
1469
- desc():Sort;
1470
+ matches(pattern:FilterValue):FilterCondition;
1470
1471
  /**
1471
- * Builds a Sort instance which takes the absolute value before applying order.
1472
- * @return {@link dh.Sort}
1472
+ * a filter condition checking if the given value matches the provided regular expressions string, ignoring
1473
+ * differences of upper vs lower case. Regex patterns use Java regex syntax
1474
+ * @param pattern -
1475
+ * @return {@link dh.FilterCondition}
1473
1476
  */
1474
- abs():Sort;
1475
- toString():string;
1477
+ matchesIgnoreCase(pattern:FilterValue):FilterCondition;
1476
1478
  /**
1477
- * True if the absolute value of the column should be used when sorting; defaults to false.
1478
- * @return boolean
1479
+ * a filter condition checking if the current value is a true boolean
1480
+ * @return {@link dh.FilterCondition}
1479
1481
  */
1480
- get isAbs():boolean;
1482
+ isTrue():FilterCondition;
1481
1483
  /**
1482
- * The column which is sorted.
1483
- * @return {@link dh.Column}
1484
+ * a filter condition checking if the current value is a false boolean
1485
+ * @return {@link dh.FilterCondition}
1484
1486
  */
1485
- get column():Column;
1487
+ isFalse():FilterCondition;
1486
1488
  /**
1487
- * The direction of this sort, either <b>ASC</b>, <b>DESC</b>, or <b>REVERSE</b>.
1488
- * @return String
1489
- */
1490
- get direction():string;
1491
- }
1492
-
1493
- /**
1494
- * Represents a non-viewport subscription to a table, and all data currently known to be present in the subscribed
1495
- * columns. This class handles incoming snapshots and deltas, and fires events to consumers to notify of data changes.
1496
- *
1497
- * Unlike {@link dh.TableViewportSubscription}, the "original" table does not have a reference to this instance, only the
1498
- * "private" table instance does, since the original cannot modify the subscription, and the private instance must
1499
- * forward data to it.
1500
- *
1501
- * Represents a subscription to the table on the server. Changes made to the table will not be reflected here - the
1502
- * subscription must be closed and a new one optioned to see those changes. The event model is slightly different from
1503
- * viewports to make it less expensive to compute for large tables.
1504
- */
1505
- export class TableSubscription implements HasEventHandling {
1506
- /**
1507
- * Indicates that some new data is available on the client, either an initial snapshot or a delta update. The
1508
- * <b>detail</b> field of the event will contain a TableSubscriptionEventData detailing what has changed, or
1509
- * allowing access to the entire range of items currently in the subscribed columns.
1510
- */
1511
- static readonly EVENT_UPDATED:string;
1512
-
1513
- protected constructor();
1514
-
1515
- /**
1516
- * Stops the subscription on the server.
1517
- */
1518
- close():void;
1519
- addEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):()=>void;
1520
- nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<CustomEvent<T>>;
1521
- hasListeners(name:string):boolean;
1522
- removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
1523
- /**
1524
- * The columns that were subscribed to when this subscription was created
1525
- * @return {@link dh.Column}
1526
- */
1527
- get columns():Array<Column>;
1528
- }
1529
-
1530
- /**
1531
- * Event fired when a command is issued from the client.
1532
- */
1533
- export class CommandInfo {
1534
- constructor(code:string, result:Promise<dh.ide.CommandResult>);
1535
-
1536
- get result():Promise<dh.ide.CommandResult>;
1537
- get code():string;
1538
- }
1539
-
1540
- /**
1541
- * Exists to keep the dh.TableMap namespace so that the web UI can remain compatible with the DHE API, which still calls
1542
- * this type TableMap.
1543
- * @deprecated
1544
- */
1545
- export class TableMap {
1546
- static readonly EVENT_KEYADDED:string;
1547
- static readonly EVENT_DISCONNECT:string;
1548
- static readonly EVENT_RECONNECT:string;
1549
- static readonly EVENT_RECONNECTFAILED:string;
1550
-
1551
- protected constructor();
1552
- }
1553
-
1554
- export class DateWrapper extends LongWrapper {
1555
- protected constructor();
1556
-
1557
- static ofJsDate(date:Date):DateWrapper;
1558
- asDate():Date;
1559
- }
1560
-
1561
- export class QueryInfo {
1562
- static readonly EVENT_TABLE_OPENED:string;
1563
- static readonly EVENT_DISCONNECT:string;
1564
- static readonly EVENT_RECONNECT:string;
1565
- static readonly EVENT_CONNECT:string;
1566
-
1567
- protected constructor();
1568
- }
1569
-
1570
- export class LoginCredentials {
1571
- type?:string|null;
1572
- username?:string|null;
1573
- token?:string|null;
1574
-
1575
- constructor();
1576
- }
1577
-
1578
- export class CoreClient implements HasEventHandling {
1579
- static readonly EVENT_CONNECT:string;
1580
- static readonly EVENT_DISCONNECT:string;
1581
- static readonly EVENT_RECONNECT:string;
1582
- static readonly EVENT_RECONNECT_AUTH_FAILED:string;
1583
- static readonly EVENT_REFRESH_TOKEN_UPDATED:string;
1584
- static readonly EVENT_REQUEST_FAILED:string;
1585
- static readonly EVENT_REQUEST_STARTED:string;
1586
- static readonly EVENT_REQUEST_SUCCEEDED:string;
1587
- static readonly LOGIN_TYPE_PASSWORD:string;
1588
- static readonly LOGIN_TYPE_ANONYMOUS:string;
1589
-
1590
- constructor(serverUrl:string, connectOptions?:ConnectOptions);
1591
-
1592
- running():Promise<CoreClient>;
1593
- getServerUrl():string;
1594
- getAuthConfigValues():Promise<string[][]>;
1595
- login(credentials:LoginCredentials):Promise<void>;
1596
- relogin(token:RefreshToken):Promise<void>;
1597
- onConnected(timeoutInMillis?:number):Promise<void>;
1598
- getServerConfigValues():Promise<string[][]>;
1599
- getStorageService():dh.storage.StorageService;
1600
- getAsIdeConnection():Promise<IdeConnection>;
1601
- disconnect():void;
1602
- addEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):()=>void;
1603
- nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<CustomEvent<T>>;
1604
- hasListeners(name:string):boolean;
1605
- removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
1606
- }
1607
-
1608
- /**
1609
- * Describes a filter which can be applied to a table. Replacing these instances may be more expensive than reusing
1610
- * them. These instances are immutable - all operations that compose them to build bigger expressions return a new
1611
- * instance.
1612
- */
1613
- export class FilterCondition {
1614
- protected constructor();
1615
-
1616
- /**
1617
- * the opposite of this condition
1618
- * @return FilterCondition
1619
- */
1620
- not():FilterCondition;
1621
- /**
1622
- * a condition representing the current condition logically ANDed with the other parameters
1623
- * @param filters -
1624
- * @return FilterCondition
1625
- */
1626
- and(...filters:FilterCondition[]):FilterCondition;
1627
- /**
1628
- * a condition representing the current condition logically ORed with the other parameters
1629
- * @param filters -
1630
- * @return FilterCondition.
1631
- */
1632
- or(...filters:FilterCondition[]):FilterCondition;
1633
- /**
1634
- * a string suitable for debugging showing the details of this condition.
1635
- * @return String.
1489
+ * a filter condition checking if the current value is a null value
1490
+ * @return {@link dh.FilterCondition}
1636
1491
  */
1637
- toString():string;
1638
- get columns():Array<Column>;
1492
+ isNull():FilterCondition;
1639
1493
  /**
1640
- * a filter condition invoking a static function with the given parameters. Currently supported Deephaven static
1641
- * functions:
1494
+ * a filter condition invoking the given method on the current value, with the given parameters. Currently supported
1495
+ * functions that can be invoked on a String:
1642
1496
  * <ul>
1643
- * <li><b>inRange</b>: Given three comparable values, returns true if the first is less than the second but greater
1644
- * than the third</li>
1645
- * <li><b>isInf</b>:Returns true if the given number is <i>infinity</i></li>
1646
- * <li><b>isNaN</b>:Returns true if the given number is <i>not a number</i></li>
1647
- * <li><b>isNormal</b>:Returns true if the given number <i>is not null</i>, <i>is not infinity</i>, and <i>is not
1648
- * "not a number"</i></li>
1649
- * <li><b>startsWith</b>:Returns true if the first string starts with the second string</li>
1650
- * <li><b>endsWith</b>Returns true if the first string ends with the second string</li>
1651
- * <li><b>matches</b>:Returns true if the first string argument matches the second string used as a Java regular
1652
- * expression</li>
1653
- * <li><b>contains</b>:Returns true if the first string argument contains the second string as a substring</li>
1654
- * <li><b>in</b>:Returns true if the first string argument can be found in the second array argument.
1497
+ * <li><b>startsWith</b>: Returns true if the current string value starts with the supplied string argument</li>
1498
+ * <li><b>endsWith</b>: Returns true if the current string value ends with the supplied string argument</li>
1499
+ * <li><b>matches</b>: Returns true if the current string value matches the supplied string argument used as a Java
1500
+ * regular expression</li>
1501
+ * <li><b>contains</b>: Returns true if the current string value contains the supplied string argument
1655
1502
  * <p>
1656
- * Note that the array can only be specified as a column reference at this time - typically the `FilterValue.in`
1657
- * method should be used in other cases
1503
+ * When invoking against a constant, this should be avoided in favor of FilterValue.contains
1658
1504
  * </p>
1659
1505
  * </li>
1660
1506
  * </ul>
1661
- * @param function -
1507
+ * @param method -
1662
1508
  * @param args -
1663
- * @return dh.FilterCondition
1664
- */
1665
- static invoke(func:string, ...args:FilterValue[]):FilterCondition;
1666
- /**
1667
- * a filter condition which will check if the given value can be found in any supported column on whatever table
1668
- * this FilterCondition is passed to. This FilterCondition is somewhat unique in that it need not be given a column
1669
- * instance, but will adapt to any table. On numeric columns, with a value passed in which can be parsed as a
1670
- * number, the column will be filtered to numbers which equal, or can be "rounded" effectively to this number. On
1671
- * String columns, the given value will match any column which contains this string in a case-insensitive search. An
1672
- * optional second argument can be passed, an array of `FilterValue` from the columns to limit this search to (see
1673
- * {@link dh.Column.filter}).
1674
- * @param value -
1675
- * @param columns -
1676
- * @return dh.FilterCondition
1509
+ * @return
1677
1510
  */
1678
- static search(value:FilterValue, columns?:FilterValue[]):FilterCondition;
1679
- }
1680
-
1681
- /**
1682
- * This class allows iteration over non-contiguous indexes. In the future, this will support the EcmaScript 2015
1683
- * Iteration protocol, but for now has one method which returns an iterator, and also supports querying the size.
1684
- * Additionally, we may add support for creating RangeSet objects to better serve some use cases.
1685
- */
1686
- export class RangeSet {
1687
- protected constructor();
1688
-
1689
- static ofRange(first:number, last:number):RangeSet;
1690
- static ofItems(rows:number[]):RangeSet;
1691
- static ofRanges(ranges:RangeSet[]):RangeSet;
1692
- static ofSortedRanges(ranges:RangeSet[]):RangeSet;
1511
+ invoke(method:string, ...args:FilterValue[]):FilterCondition;
1512
+ toString():string;
1693
1513
  /**
1694
- * a new iterator over all indexes in this collection.
1695
- * @return Iterator of {@link dh.LongWrapper}
1514
+ * Constructs a string for the filter API from the given parameter.
1515
+ * @param input -
1516
+ * @return
1696
1517
  */
1697
- iterator():Iterator<LongWrapper>;
1518
+ static ofString(input:any):FilterValue;
1698
1519
  /**
1699
- * The total count of items contained in this collection. In some cases this can be expensive to compute, and
1700
- * generally should not be needed except for debugging purposes, or preallocating space (i.e., do not call this
1701
- * property each time through a loop).
1702
- * @return double
1520
+ * Constructs a boolean for the filter API from the given parameter.
1521
+ * @param b -
1522
+ * @return
1703
1523
  */
1704
- get size():number;
1524
+ static ofBoolean(b:boolean):FilterValue;
1705
1525
  }
1706
1526
 
1707
1527
  /**
@@ -1735,601 +1555,798 @@ export namespace dh {
1735
1555
  }
1736
1556
 
1737
1557
  /**
1738
- * Presently optional and not used by the server, this allows the client to specify some authentication details. String
1739
- * authToken <i>- base 64 encoded auth token. String serviceId -</i> The service ID to use for the connection.
1740
- */
1741
- export class ConnectOptions {
1742
- headers:{ [key: string]: string; };
1743
-
1744
- constructor();
1745
- }
1746
-
1747
- export class CustomColumn {
1748
- static readonly TYPE_FORMAT_COLOR:string;
1749
- static readonly TYPE_FORMAT_NUMBER:string;
1750
- static readonly TYPE_FORMAT_DATE:string;
1751
- static readonly TYPE_NEW:string;
1752
-
1753
- protected constructor();
1754
-
1755
- valueOf():string;
1756
- toString():string;
1757
- /**
1758
- * The expression to evaluate this custom column.
1759
- * @return String
1760
- */
1761
- get expression():string;
1762
- /**
1763
- * The name of the column to use.
1764
- * @return String
1765
- */
1766
- get name():string;
1767
- /**
1768
- * Type of custom column. One of
1769
- *
1770
- * <ul>
1771
- * <li>FORMAT_COLOR</li>
1772
- * <li>FORMAT_NUMBER</li>
1773
- * <li>FORMAT_DATE</li>
1774
- * <li>NEW</li>
1775
- * </ul>
1776
- * @return String
1777
- */
1778
- get type():string;
1779
- }
1780
-
1781
- /**
1782
- * Presently, this is the entrypoint into the Deephaven JS API. By creating an instance of this with the server URL and
1783
- * some options, JS applications can run code on the server, and interact with available exportable objects.
1558
+ * A Widget represents a server side object that sends one or more responses to the client. The client can then
1559
+ * interpret these responses to see what to render, or how to respond.
1560
+ * <p>
1561
+ * Most custom object types result in a single response being sent to the client, often with other exported objects, but
1562
+ * some will have streamed responses, and allow the client to send follow-up requests of its own. This class's API is
1563
+ * backwards compatible, but as such does not offer a way to tell the difference between a streaming or non-streaming
1564
+ * object type, the client code that handles the payloads is expected to know what to expect. See
1565
+ * {@link dh.WidgetMessageDetails} for more information.
1566
+ * <p>
1567
+ * When the promise that returns this object resolves, it will have the first response assigned to its fields. Later
1568
+ * responses from the server will be emitted as "message" events. When the connection with the server ends, the "close"
1569
+ * event will be emitted. In this way, the connection will behave roughly in the same way as a WebSocket - either side
1570
+ * can close, and after close no more messages will be processed. There can be some latency in closing locally while
1571
+ * remote messages are still pending - it is up to implementations of plugins to handle this case.
1572
+ * <p>
1573
+ * Also like WebSockets, the plugin API doesn't define how to serialize messages, and just handles any binary payloads.
1574
+ * What it does handle however, is allowing those messages to include references to server-side objects with those
1575
+ * payloads. Those server side objects might be tables or other built-in types in the Deephaven JS API, or could be
1576
+ * objects usable through their own plugins. They also might have no plugin at all, allowing the client to hold a
1577
+ * reference to them and pass them back to the server, either to the current plugin instance, or through another API.
1578
+ * The `Widget` type does not specify how those objects should be used or their lifecycle, but leaves that
1579
+ * entirely to the plugin. Messages will arrive in the order they were sent.
1580
+ * <p>
1581
+ * This can suggest several patterns for how plugins operate:
1582
+ * <ul>
1583
+ * <li>The plugin merely exists to transport some other object to the client. This can be useful for objects which can
1584
+ * easily be translated to some other type (like a Table) when the user clicks on it. An example of this is
1585
+ * `pandas.DataFrame` will result in a widget that only contains a static
1586
+ * {@link dh.Table}. Presently, the widget is immediately closed, and only the Table is
1587
+ * provided to the JS API consumer.</li>
1588
+ * <li>The plugin provides references to Tables and other objects, and those objects can live longer than the object
1589
+ * which provided them. One concrete example of this could have been
1590
+ * {@link dh.PartitionedTable} when fetching constituent tables, but it was implemented
1591
+ * before bidirectional plugins were implemented. Another example of this is plugins that serve as a "factory", giving
1592
+ * the user access to table manipulation/creation methods not supported by gRPC or the JS API.</li>
1593
+ * <li>The plugin provides reference to Tables and other objects that only make sense within the context of the widget
1594
+ * instance, so when the widget goes away, those objects should be released as well. This is also an example of
1595
+ * {@link dh.PartitionedTable}, as the partitioned table tracks creation of new keys through
1596
+ * an internal table instance.</li>
1597
+ * </ul>
1598
+ *
1599
+ * Handling server objects in messages also has more than one potential pattern that can be used:
1600
+ * <ul>
1601
+ * <li>One object per message - the message clearly is about that object, no other details required.</li>
1602
+ * <li>Objects indexed within their message - as each message comes with a list of objects, those objects can be
1603
+ * referenced within the payload by index. This is roughly how {@link dh.plot.Figure}
1604
+ * behaves, where the figure descriptor schema includes an index for each created series, describing which table should
1605
+ * be used, which columns should be mapped to each axis.</li>
1606
+ * <li>Objects indexed since widget creation - each message would append its objects to a list created when the widget
1607
+ * was first made, and any new exports that arrive in a new message would be appended to that list. Then, subsequent
1608
+ * messages can reference objects already sent. This imposes a limitation where the client cannot release any exports
1609
+ * without the server somehow signaling that it will never reference that export again.</li>
1610
+ * </ul>
1784
1611
  */
1785
- export class IdeConnection implements HasEventHandling {
1786
- /**
1787
- * @deprecated
1788
- */
1789
- static readonly HACK_CONNECTION_FAILURE:string;
1790
- static readonly EVENT_DISCONNECT:string;
1791
- static readonly EVENT_RECONNECT:string;
1792
- static readonly EVENT_SHUTDOWN:string;
1612
+ export class Widget implements WidgetMessageDetails, HasEventHandling {
1613
+ static readonly EVENT_MESSAGE:string;
1614
+ static readonly EVENT_CLOSE:string;
1793
1615
 
1794
- /**
1795
- * creates a new instance, from which console sessions can be made. <b>options</b> are optional.
1796
- * @param serverUrl - The url used when connecting to the server. Read-only.
1797
- * @param connectOptions - Optional Object
1798
- * @param fromJava - Optional boolean
1799
- * @deprecated
1800
- */
1801
- constructor(serverUrl:string, connectOptions?:ConnectOptions, fromJava?:boolean);
1616
+ protected constructor();
1802
1617
 
1803
1618
  /**
1804
- * closes the current connection, releasing any resources on the server or client.
1619
+ * Ends the client connection to the server.
1805
1620
  */
1806
1621
  close():void;
1807
- running():Promise<IdeConnection>;
1808
- getObject(definitionObject:dh.ide.VariableDescriptor):Promise<any>;
1809
- subscribeToFieldUpdates(callback:(arg0:dh.ide.VariableChanges)=>void):()=>void;
1810
- /**
1811
- * Register a callback function to handle any log messages that are emitted on the server. Returns a function ,
1812
- * which can be invoked to remove this log handler. Any log handler registered in this way will receive as many old
1813
- * log messages as are presently available.
1814
- * @param callback -
1815
- * @return {@link io.deephaven.web.shared.fu.JsRunnable}
1816
- */
1817
- onLogMessage(callback:(arg0:dh.ide.LogItem)=>void):()=>void;
1818
- startSession(type:string):Promise<IdeSession>;
1819
- getConsoleTypes():Promise<Array<string>>;
1820
- getWorkerHeapInfo():Promise<WorkerHeapInfo>;
1622
+ getDataAsBase64():string;
1623
+ getDataAsU8():Uint8Array;
1624
+ getDataAsString():string;
1821
1625
  /**
1822
- * Listen for events on this object.
1823
- * @param name - the name of the event to listen for
1824
- * @param callback - a function to call when the event occurs
1825
- * @return Returns a cleanup function.
1826
- * @typeParam T - the type of the data that the event will provide
1626
+ * Sends a string/bytes payload to the server, along with references to objects that exist on the server.
1627
+ * @param msg - string/buffer/view instance that represents data to send
1628
+ * @param references - an array of objects that can be safely sent to the server
1827
1629
  */
1630
+ sendMessage(msg:string|ArrayBuffer|ArrayBufferView, references?:Array<Table|Widget|WidgetExportedObject|PartitionedTable|TotalsTable|TreeTable>):void;
1828
1631
  addEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):()=>void;
1829
1632
  nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<CustomEvent<T>>;
1830
1633
  hasListeners(name:string):boolean;
1634
+ removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
1831
1635
  /**
1832
- * Removes an event listener added to this table.
1833
- * @param name -
1834
- * @param callback -
1835
- * @return
1836
- * @typeParam T -
1636
+ *
1637
+ * @return the exported objects sent in the initial message from the server. The client is responsible for closing
1638
+ * them when finished using them.
1837
1639
  */
1838
- removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
1640
+ get exportedObjects():WidgetExportedObject[];
1641
+ /**
1642
+ *
1643
+ * @return the type of this widget
1644
+ */
1645
+ get type():string;
1839
1646
  }
1840
1647
 
1841
1648
  /**
1842
- * A js type for operating on input tables.
1843
- *
1844
- * Represents a User Input Table, which can have data added to it from other sources.
1845
- *
1846
- * You may add rows using dictionaries of key-value tuples (representing columns by name), add tables containing all the
1847
- * key/value columns to add, or delete tables containing the keys to delete. Each operation is atomic, and will either
1848
- * succeed completely or fail completely. To guarantee order of operations, apply an operation and wait for the response
1849
- * before sending the next operation.
1850
- *
1851
- * Each table has one or more key columns, where each unique combination of keys will appear at most once in the table.
1852
- *
1853
- * To view the results of the Input Table, you should use standard table operations on the InputTable's source Table
1854
- * object.
1649
+ * Provides access to data in a table. Note that several methods present their response through Promises. This allows
1650
+ * the client to both avoid actually connecting to the server until necessary, and also will permit some changes not to
1651
+ * inform the UI right away that they have taken place.
1855
1652
  */
1856
- export class InputTable {
1653
+ export class Table implements JoinableTable, HasEventHandling {
1654
+ readonly description?:string|null;
1655
+ readonly pluginName?:string|null;
1656
+ readonly layoutHints?:null|LayoutHints;
1657
+ static readonly EVENT_SIZECHANGED:string;
1658
+ static readonly EVENT_UPDATED:string;
1659
+ static readonly EVENT_ROWADDED:string;
1660
+ static readonly EVENT_ROWREMOVED:string;
1661
+ static readonly EVENT_ROWUPDATED:string;
1662
+ static readonly EVENT_SORTCHANGED:string;
1663
+ static readonly EVENT_FILTERCHANGED:string;
1664
+ static readonly EVENT_CUSTOMCOLUMNSCHANGED:string;
1665
+ static readonly EVENT_DISCONNECT:string;
1666
+ static readonly EVENT_RECONNECT:string;
1667
+ static readonly EVENT_RECONNECTFAILED:string;
1668
+ static readonly EVENT_REQUEST_FAILED:string;
1669
+ static readonly EVENT_REQUEST_SUCCEEDED:string;
1670
+ static readonly SIZE_UNCOALESCED:number;
1671
+
1857
1672
  protected constructor();
1858
1673
 
1674
+ batch(userCode:(arg0:unknown)=>void):Promise<Table>;
1859
1675
  /**
1860
- * Adds a single row to the table. For each key or value column name in the Input Table, we retrieve that javascript
1861
- * property at that name and validate it can be put into the given column type.
1862
- * @param row -
1863
- * @param userTimeZone -
1864
- * @return Promise of dh.InputTable
1865
- */
1866
- addRow(row:{ [key: string]: any; }, userTimeZone?:string):Promise<InputTable>;
1867
- /**
1868
- * Add multiple rows to a table.
1869
- * @param rows -
1870
- * @param userTimeZone -
1871
- * @return Promise of dh.InputTable
1872
- */
1873
- addRows(rows:{ [key: string]: any; }[], userTimeZone?:string):Promise<InputTable>;
1874
- /**
1875
- * Add an entire table to this Input Table. Only column names that match the definition of the input table will be
1876
- * copied, and all key columns must have values filled in. This only copies the current state of the source table;
1877
- * future updates to the source table will not be reflected in the Input Table. The returned promise will be
1878
- * resolved to the same InputTable instance this method was called upon once the server returns.
1879
- * @param tableToAdd -
1880
- * @return Promise of dh.InputTable
1676
+ * Retrieve a column by the given name. You should prefer to always retrieve a new Column instance instead of
1677
+ * caching a returned value.
1678
+ * @param key -
1679
+ * @return {@link dh.Column}
1881
1680
  */
1882
- addTable(tableToAdd:Table):Promise<InputTable>;
1681
+ findColumn(key:string):Column;
1883
1682
  /**
1884
- * Add multiple tables to this Input Table.
1885
- * @param tablesToAdd -
1886
- * @return Promise of dh.InputTable
1683
+ * Retrieve multiple columns specified by the given names.
1684
+ * @param keys -
1685
+ * @return {@link dh.Column} array
1887
1686
  */
1888
- addTables(tablesToAdd:Table[]):Promise<InputTable>;
1687
+ findColumns(keys:string[]):Column[];
1688
+ isBlinkTable():boolean;
1889
1689
  /**
1890
- * Deletes an entire table from this Input Table. Key columns must match the Input Table.
1891
- * @param tableToDelete -
1690
+ * If .hasInputTable is true, you may call this method to gain access to an InputTable object which can be used to
1691
+ * mutate the data within the table. If the table is not an Input Table, the promise will be immediately rejected.
1892
1692
  * @return Promise of dh.InputTable
1893
1693
  */
1894
- deleteTable(tableToDelete:Table):Promise<InputTable>;
1694
+ inputTable():Promise<InputTable>;
1895
1695
  /**
1896
- * Delete multiple tables from this Input Table.
1897
- * @param tablesToDelete -
1898
- * @return
1696
+ * Indicates that this Table instance will no longer be used, and its connection to the server can be cleaned up.
1899
1697
  */
1900
- deleteTables(tablesToDelete:Table[]):Promise<InputTable>;
1698
+ close():void;
1699
+ getAttributes():string[];
1901
1700
  /**
1902
- * A list of the key columns, by name
1903
- * @return String array.
1701
+ * null if no property exists, a string if it is an easily serializable property, or a ```Promise
1702
+ * &lt;Table&gt;``` that will either resolve with a table or error out if the object can't be passed to JS.
1703
+ * @param attributeName -
1704
+ * @return Object
1904
1705
  */
1905
- get keys():string[];
1706
+ getAttribute(attributeName:string):unknown|undefined|null;
1906
1707
  /**
1907
- * A list of the value columns, by name
1908
- * @return String array.
1708
+ * Replace the currently set sort on this table. Returns the previously set value. Note that the sort property will
1709
+ * immediately return the new value, but you may receive update events using the old sort before the new sort is
1710
+ * applied, and the <b>sortchanged</b> event fires. Reusing existing, applied sorts may enable this to perform
1711
+ * better on the server. The <b>updated</b> event will also fire, but <b>rowadded</b> and <b>rowremoved</b> will
1712
+ * not.
1713
+ * @param sort -
1714
+ * @return {@link dh.Sort} array
1909
1715
  */
1910
- get values():string[];
1716
+ applySort(sort:Sort[]):Array<Sort>;
1911
1717
  /**
1912
- * A list of the key Column objects
1913
- * @return {@link dh.Column} array.
1718
+ * Replace the currently set filters on the table. Returns the previously set value. Note that the filter property
1719
+ * will immediately return the new value, but you may receive update events using the old filter before the new one
1720
+ * is applied, and the <b>filterchanged</b> event fires. Reusing existing, applied filters may enable this to
1721
+ * perform better on the server. The <b>updated</b> event will also fire, but <b>rowadded</b> and <b>rowremoved</b>
1722
+ * will not.
1723
+ * @param filter -
1724
+ * @return {@link dh.FilterCondition} array
1914
1725
  */
1915
- get keyColumns():Column[];
1726
+ applyFilter(filter:FilterCondition[]):Array<FilterCondition>;
1916
1727
  /**
1917
- * A list of the value Column objects
1918
- * @return {@link dh.Column} array.
1728
+ * used when adding new filter and sort operations to the table, as long as they are present.
1729
+ * @param customColumns -
1730
+ * @return {@link dh.CustomColumn} array
1919
1731
  */
1920
- get valueColumns():Column[];
1732
+ applyCustomColumns(customColumns:Array<string|CustomColumn>):Array<CustomColumn>;
1921
1733
  /**
1922
- * The source table for this Input Table
1923
- * @return dh.table
1734
+ * If the columns parameter is not provided, all columns will be used. If the updateIntervalMs parameter is not
1735
+ * provided, a default of one second will be used. Until this is called, no data will be available. Invoking this
1736
+ * will result in events to be fired once data becomes available, starting with an `updated` event and a
1737
+ * <b>rowadded</b> event per row in that range. The returned object allows the viewport to be closed when no longer
1738
+ * needed.
1739
+ * @param firstRow -
1740
+ * @param lastRow -
1741
+ * @param columns -
1742
+ * @param updateIntervalMs -
1743
+ * @return {@link dh.TableViewportSubscription}
1924
1744
  */
1925
- get table():Table;
1926
- }
1927
-
1928
- /**
1929
- * Wrap BigDecimal values for use in JS. Provides text formatting for display and access to the underlying value.
1930
- */
1931
- export class BigDecimalWrapper {
1932
- protected constructor();
1933
-
1934
- static ofString(value:string):BigDecimalWrapper;
1935
- asNumber():number;
1936
- valueOf():string;
1937
- toString():string;
1938
- }
1939
-
1940
- /**
1941
- * Describes the structure of the column, and if desired can be used to get access to the data to be rendered in this
1942
- * column.
1943
- */
1944
- export class Column {
1745
+ setViewport(firstRow:number, lastRow:number, columns?:Array<Column>|undefined|null, updateIntervalMs?:number|undefined|null):TableViewportSubscription;
1945
1746
  /**
1946
- * If this column is part of a roll-up tree table, represents the type of the row data that can be found in this
1947
- * column for leaf nodes if includeConstituents is enabled. Otherwise, it is <b>null</b>.
1948
- * @return String
1747
+ * Gets the currently visible viewport. If the current set of operations has not yet resulted in data, it will not
1748
+ * resolve until that data is ready. If this table is closed before the promise resolves, it will be rejected - to
1749
+ * separate the lifespan of this promise from the table itself, call
1750
+ * {@link TableViewportSubscription.getViewportData} on the result from {@link Table.setViewport}.
1751
+ * @return Promise of {@link dh.TableData}
1949
1752
  */
1950
- readonly constituentType?:string|null;
1951
- readonly description?:string|null;
1952
-
1953
- protected constructor();
1954
-
1753
+ getViewportData():Promise<TableData>;
1955
1754
  /**
1956
- * the value for this column in the given row. Type will be consistent with the type of the Column.
1957
- * @param row -
1958
- * @return Any
1755
+ * Creates a subscription to the specified columns, across all rows in the table. The optional parameter
1756
+ * updateIntervalMs may be specified to indicate how often the server should send updates, defaulting to one second
1757
+ * if omitted. Useful for charts or taking a snapshot of the table atomically. The initial snapshot will arrive in a
1758
+ * single event, but later changes will be sent as updates. However, this may still be very expensive to run from a
1759
+ * browser for very large tables. Each call to subscribe creates a new subscription, which must have <b>close()</b>
1760
+ * called on it to stop it, and all events are fired from the TableSubscription instance.
1761
+ * @param columns -
1762
+ * @param updateIntervalMs -
1763
+ * @return {@link dh.TableSubscription}
1959
1764
  */
1960
- get(row:Row):any;
1961
- getFormat(row:Row):Format;
1765
+ subscribe(columns:Array<Column>, updateIntervalMs?:number):TableSubscription;
1962
1766
  /**
1963
- * Creates a sort builder object, to be used when sorting by this column.
1964
- * @return {@link dh.Sort}
1767
+ * a new table containing the distinct tuples of values from the given columns that are present in the original
1768
+ * table. This table can be manipulated as any other table. Sorting is often desired as the default sort is the
1769
+ * order of appearance of values from the original table.
1770
+ * @param columns -
1771
+ * @return Promise of dh.Table
1965
1772
  */
1966
- sort():Sort;
1773
+ selectDistinct(columns:Column[]):Promise<Table>;
1967
1774
  /**
1968
- * Creates a new value for use in filters based on this column. Used either as a parameter to another filter
1969
- * operation, or as a builder to create a filter operation.
1970
- * @return {@link dh.FilterValue}
1775
+ * Creates a new copy of this table, so it can be sorted and filtered separately, and maintain a different viewport.
1776
+ * @return Promise of dh.Table
1971
1777
  */
1972
- filter():FilterValue;
1778
+ copy():Promise<Table>;
1973
1779
  /**
1974
- * a <b>CustomColumn</b> object to apply using `applyCustomColumns` with the expression specified.
1975
- * @param expression -
1976
- * @return {@link dh.CustomColumn}
1780
+ * a promise that will resolve to a Totals Table of this table. This table will obey the configurations provided as
1781
+ * a parameter, or will use the table's default if no parameter is provided, and be updated once per second as
1782
+ * necessary. Note that multiple calls to this method will each produce a new TotalsTable which must have close()
1783
+ * called on it when not in use.
1784
+ * @param config -
1785
+ * @return Promise of dh.TotalsTable
1977
1786
  */
1978
- formatColor(expression:string):CustomColumn;
1787
+ getTotalsTable(config?:TotalsTableConfig|undefined|null):Promise<TotalsTable>;
1979
1788
  /**
1980
- * a <b>CustomColumn</b> object to apply using <b>applyCustomColumns</b> with the expression specified.
1981
- * @param expression -
1982
- * @return {@link dh.CustomColumn}
1789
+ * a promise that will resolve to a Totals Table of this table, ignoring any filters. See <b>getTotalsTable()</b>
1790
+ * above for more specifics.
1791
+ * @param config -
1792
+ * @return promise of dh.TotalsTable
1983
1793
  */
1984
- formatNumber(expression:string):CustomColumn;
1794
+ getGrandTotalsTable(config?:TotalsTableConfig|undefined|null):Promise<TotalsTable>;
1985
1795
  /**
1986
- * a <b>CustomColumn</b> object to apply using <b>applyCustomColumns</b> with the expression specified.
1987
- * @param expression -
1988
- * @return {@link dh.CustomColumn}
1796
+ * a promise that will resolve to a new roll-up <b>TreeTable</b> of this table. Multiple calls to this method will
1797
+ * each produce a new <b>TreeTable</b> which must have close() called on it when not in use.
1798
+ * @param configObject -
1799
+ * @return Promise of dh.TreeTable
1989
1800
  */
1990
- formatDate(expression:string):CustomColumn;
1991
- toString():string;
1801
+ rollup(configObject:RollupConfig):Promise<TreeTable>;
1992
1802
  /**
1993
- * Label for this column.
1994
- * @return String
1803
+ * a promise that will resolve to a new `TreeTable` of this table. Multiple calls to this method will each produce a
1804
+ * new `TreeTable` which must have close() called on it when not in use.
1805
+ * @param configObject -
1806
+ * @return Promise dh.TreeTable
1995
1807
  */
1996
- get name():string;
1808
+ treeTable(configObject:TreeTableConfig):Promise<TreeTable>;
1997
1809
  /**
1998
- * True if this column is a partition column. Partition columns are used for filtering uncoalesced tables (see
1999
- * <b>isUncoalesced</b> property on <b>Table</b>)
2000
- * @return boolean
1810
+ * a "frozen" version of this table (a server-side snapshot of the entire source table). Viewports on the frozen
1811
+ * table will not update. This does not change the original table, and the new table will not have any of the client
1812
+ * side sorts/filters/columns. New client side sorts/filters/columns can be added to the frozen copy.
1813
+ * @return Promise of dh.Table
2001
1814
  */
2002
- get isPartitionColumn():boolean;
1815
+ freeze():Promise<Table>;
1816
+ snapshot(baseTable:Table, doInitialSnapshot?:boolean, stampColumns?:string[]):Promise<Table>;
2003
1817
  /**
2004
1818
  *
2005
- * @deprecated do not use. Internal index of the column in the table, to be used as a key on the Row.
2006
- * @return int
1819
+ * @deprecated a promise that will be resolved with a newly created table holding the results of the join operation.
1820
+ * The last parameter is optional, and if not specified or empty, all columns from the right table will
1821
+ * be added to the output. Callers are responsible for ensuring that there are no duplicates - a match
1822
+ * pair can be passed instead of a name to specify the new name for the column. Supported `joinType`
1823
+ * values (consult Deephaven's "Joining Data from Multiple Tables for more detail): "Join" <a href='https://docs.deephaven.io/latest/Content/writeQueries/tableOperations/joins.htm#Joining_Data_from_Multiple_Tables'>Joining_Data_from_Multiple_Tables</a>
1824
+ * "Natural" "AJ" "ReverseAJ" "ExactJoin" "LeftJoin"
1825
+ * @param joinType -
1826
+ * @param rightTable -
1827
+ * @param columnsToMatch -
1828
+ * @param columnsToAdd -
1829
+ * @param asOfMatchRule -
1830
+ * @return Promise of dh.Table
2007
1831
  */
2008
- get index():number;
2009
- get isSortable():boolean;
1832
+ join(joinType:object, rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null, asOfMatchRule?:unknown|undefined|null):Promise<Table>;
2010
1833
  /**
2011
- * Type of the row data that can be found in this column.
2012
- * @return String
1834
+ * a promise that will be resolved with the newly created table holding the results of the specified as-of join
1835
+ * operation. The <b>columnsToAdd</b> parameter is optional, not specifying it will result in all columns from the
1836
+ * right table being added to the output. The <b>asOfMatchRule</b> is optional, defaults to <b>LESS_THAN_EQUAL</b>
1837
+ *
1838
+ * <p>
1839
+ * the allowed values are:
1840
+ * </p>
1841
+ *
1842
+ * <ul>
1843
+ * <li>LESS_THAN_EQUAL</li>
1844
+ * <li>LESS_THAN</li>
1845
+ * <li>GREATER_THAN_EQUAL</li>
1846
+ * <li>GREATER_THAN</li>
1847
+ * </ul>
1848
+ * @param rightTable -
1849
+ * @param columnsToMatch -
1850
+ * @param columnsToAdd -
1851
+ * @param asOfMatchRule -
1852
+ * @return Promise og dh.Table
2013
1853
  */
2014
- get type():string;
1854
+ asOfJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null, asOfMatchRule?:string|undefined|null):Promise<Table>;
2015
1855
  /**
2016
- * Format entire rows colors using the expression specified. Returns a <b>CustomColumn</b> object to apply to a
2017
- * table using <b>applyCustomColumns</b> with the parameters specified.
2018
- * @param expression -
2019
- * @return {@link dh.CustomColumn}
1856
+ * a promise that will be resolved with the newly created table holding the results of the specified cross join
1857
+ * operation. The <b>columnsToAdd</b> parameter is optional, not specifying it will result in all columns from the
1858
+ * right table being added to the output. The <b>reserveBits</b> optional parameter lets the client control how the
1859
+ * key space is distributed between the rows in the two tables, see the Java <b>Table</b> class for details.
1860
+ * @param rightTable -
1861
+ * @param columnsToMatch -
1862
+ * @param columnsToAdd -
1863
+ * @param reserve_bits -
1864
+ * @return Promise of dh.Table
2020
1865
  */
2021
- static formatRowColor(expression:string):CustomColumn;
1866
+ crossJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>, reserve_bits?:number):Promise<Table>;
2022
1867
  /**
2023
- * a <b>CustomColumn</b> object to apply using <b>applyCustomColumns</b> with the expression specified.
2024
- * @param name -
2025
- * @param expression -
2026
- * @return {@link dh.CustomColumn}
1868
+ * a promise that will be resolved with the newly created table holding the results of the specified exact join
1869
+ * operation. The `columnsToAdd` parameter is optional, not specifying it will result in all columns from the right
1870
+ * table being added to the output.
1871
+ * @param rightTable -
1872
+ * @param columnsToMatch -
1873
+ * @param columnsToAdd -
1874
+ * @return Promise of dh.Table
2027
1875
  */
2028
- static createCustomColumn(name:string, expression:string):CustomColumn;
2029
- }
2030
-
2031
- /**
2032
- * Behaves like a {@link dh.Table} externally, but data, state, and viewports are managed by an entirely different
2033
- * mechanism, and so reimplemented here.
2034
- * <p>
2035
- * Any time a change is made, we build a new request and send it to the server, and wait for the updated state.
2036
- * <p>
2037
- * Semantics around getting updates from the server are slightly different - we don't "unset" the viewport here after
2038
- * operations are performed, but encourage the client code to re-set them to the desired position.
2039
- * <p>
2040
- * The table size will be -1 until a viewport has been fetched.
2041
- * <p>
2042
- * Similar to a table, a Tree Table provides access to subscribed viewport data on the current hierarchy. A different
2043
- * Row type is used within that viewport, showing the depth of that node within the tree and indicating details about
2044
- * whether it has children or is expanded. The Tree Table itself then provides the ability to change if a row is
2045
- * expanded or not. Methods used to control or check if a row should be expanded or not can be invoked on a TreeRow
2046
- * instance, or on the number of the row (thus allowing for expanding/collapsing rows which are not currently visible in
2047
- * the viewport).
2048
- * <p>
2049
- * Events and viewports are somewhat different from tables, due to the expense of computing the expanded/collapsed rows
2050
- * and count of children at each level of the hierarchy, and differences in the data that is available.
2051
- * <p>
2052
- * <ul>
2053
- * <li>There is no {@link Table.totalSize | totalSize} property.</li>
2054
- * <li>The viewport is not un-set when changes are made to filter or sort, but changes will continue to be streamed in.
2055
- * It is suggested that the viewport be changed to the desired position (usually the first N rows) after any filter/sort
2056
- * change is made. Likewise, {@link getViewportData} will always return the most recent data, and will not wait if a
2057
- * new operation is pending.</li>
2058
- * <li>Custom columns are not directly supported. If the TreeTable was created client-side, the original Table can have
2059
- * custom columns applied, and the TreeTable can be recreated.</li>
2060
- * <li>Whereas Table has a {@link Table.totalsTableConfig} property, it is defined here as a method,
2061
- * {@link getTotalsTableConfig}. This returns a promise so the config can be fetched asynchronously.</li>
2062
- * <li>Totals Tables for trees vary in behavior between tree tables and roll-up tables. This behavior is based on the
2063
- * original flat table used to produce the Tree Table - for a hierarchical table (i.e. Table.treeTable in the query
2064
- * config), the totals will include non-leaf nodes (since they are themselves actual rows in the table), but in a
2065
- * roll-up table, the totals only include leaf nodes (as non-leaf nodes are generated through grouping the contents of
2066
- * the original table). Roll-ups also have the {@link dh.includeConstituents} property, indicating that a
2067
- * {@link dh.Column} in the tree may have a {@link Column.constituentType} property reflecting that the type of cells
2068
- * where {@link TreeRow.hasChildren} is false will be different from usual.</li>
2069
- * </ul>
2070
- */
2071
- export class TreeTable implements HasEventHandling {
1876
+ exactJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>):Promise<Table>;
2072
1877
  /**
2073
- * event.detail is the currently visible viewport data based on the active viewport configuration.
1878
+ * a promise that will be resolved with the newly created table holding the results of the specified natural join
1879
+ * operation. The <b>columnsToAdd</b> parameter is optional, not specifying it will result in all columns from the
1880
+ * right table being added to the output.
1881
+ * @param rightTable -
1882
+ * @param columnsToMatch -
1883
+ * @param columnsToAdd -
1884
+ * @return Promise of dh.Table
2074
1885
  */
2075
- static readonly EVENT_UPDATED:string;
1886
+ naturalJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>):Promise<Table>;
1887
+ byExternal(keys:object, dropKeys?:boolean):Promise<PartitionedTable>;
2076
1888
  /**
2077
- * event.detail is the currently visible viewport data based on the active viewport configuration.
1889
+ * Creates a new PartitionedTable from the contents of the current table, partitioning data based on the specified
1890
+ * keys.
1891
+ * @param keys -
1892
+ * @param dropKeys -
1893
+ * @return Promise dh.PartitionedTable
2078
1894
  */
2079
- static readonly EVENT_DISCONNECT:string;
1895
+ partitionBy(keys:object, dropKeys?:boolean):Promise<PartitionedTable>;
2080
1896
  /**
2081
- * event.detail is the currently visible viewport data based on the active viewport configuration.
1897
+ * a promise that will resolve to ColumnStatistics for the column of this table.
1898
+ * @param column -
1899
+ * @return Promise of dh.ColumnStatistics
2082
1900
  */
2083
- static readonly EVENT_RECONNECT:string;
1901
+ getColumnStatistics(column:Column):Promise<ColumnStatistics>;
2084
1902
  /**
2085
- * event.detail is the currently visible viewport data based on the active viewport configuration.
1903
+ * Seek the row matching the data provided
1904
+ * @param startingRow - Row to start the seek from
1905
+ * @param column - Column to seek for value on
1906
+ * @param valueType - Type of value provided
1907
+ * @param seekValue - Value to seek
1908
+ * @param insensitive - Optional value to flag a search as case-insensitive. Defaults to `false`.
1909
+ * @param contains - Optional value to have the seek value do a contains search instead of exact equality. Defaults to
1910
+ * `false`.
1911
+ * @param isBackwards - Optional value to seek backwards through the table instead of forwards. Defaults to `false`.
1912
+ * @return A promise that resolves to the row value found.
2086
1913
  */
2087
- static readonly EVENT_RECONNECTFAILED:string;
1914
+ seekRow(startingRow:number, column:Column, valueType:ValueTypeType, seekValue:any, insensitive?:boolean|undefined|null, contains?:boolean|undefined|null, isBackwards?:boolean|undefined|null):Promise<number>;
1915
+ toString():string;
2088
1916
  /**
2089
- * event.detail is the currently visible viewport data based on the active viewport configuration.
1917
+ * True if this table represents a user Input Table (created by InputTable.newInputTable). When true, you may call
1918
+ * .inputTable() to add or remove data from the underlying table.
1919
+ * @return boolean
2090
1920
  */
2091
- static readonly EVENT_REQUEST_FAILED:string;
2092
- readonly description?:string|null;
2093
-
2094
- protected constructor();
2095
-
1921
+ get hasInputTable():boolean;
2096
1922
  /**
2097
- * Expands the given node, so that its children are visible when they are in the viewport. The parameter can be the
2098
- * row index, or the row object itself. The second parameter is a boolean value, false by default, specifying if the
2099
- * row and all descendants should be fully expanded. Equivalent to `setExpanded(row, true)` with an optional third
2100
- * boolean parameter.
2101
- * @param row -
2102
- * @param expandDescendants -
1923
+ * The columns that are present on this table. This is always all possible columns. If you specify fewer columns in
1924
+ * .setViewport(), you will get only those columns in your ViewportData. <b>Number size</b> The total count of rows
1925
+ * in the table. The size can and will change; see the <b>sizechanged</b> event for details. Size will be negative
1926
+ * in exceptional cases (eg. the table is uncoalesced, see the <b>isUncoalesced</b> property for details).
1927
+ * @return {@link dh.Column} array
2103
1928
  */
2104
- expand(row:TreeRow|number, expandDescendants?:boolean):void;
1929
+ get columns():Array<Column>;
2105
1930
  /**
2106
- * Collapses the given node, so that its children and descendants are not visible in the size or the viewport. The
2107
- * parameter can be the row index, or the row object itself. Equivalent to <b>setExpanded(row, false, false)</b>.
2108
- * @param row -
1931
+ * The default configuration to be used when building a <b>TotalsTable</b> for this table.
1932
+ * @return dh.TotalsTableConfig
2109
1933
  */
2110
- collapse(row:TreeRow|number):void;
1934
+ get totalsTableConfig():TotalsTableConfig;
2111
1935
  /**
2112
- * Specifies if the given node should be expanded or collapsed. If this node has children, and the value is changed,
2113
- * the size of the table will change. If node is to be expanded and the third parameter, <b>expandDescendants</b>,
2114
- * is true, then its children will also be expanded.
2115
- * @param row -
2116
- * @param isExpanded -
2117
- * @param expandDescendants -
1936
+ * An ordered list of Sorts to apply to the table. To update, call <b>applySort()</b>. Note that this getter will
1937
+ * return the new value immediately, even though it may take a little time to update on the server. You may listen
1938
+ * for the <b>sortchanged</b> event to know when to update the UI.
1939
+ * @return {@link dh.Sort} array
2118
1940
  */
2119
- setExpanded(row:TreeRow|number, isExpanded:boolean, expandDescendants?:boolean):void;
2120
- expandAll():void;
2121
- collapseAll():void;
1941
+ get sort():Array<Sort>;
1942
+ /**
1943
+ * An ordered list of custom column formulas to add to the table, either adding new columns or replacing existing
1944
+ * ones. To update, call <b>applyCustomColumns()</b>.
1945
+ * @return {@link dh.CustomColumn} array
1946
+ */
1947
+ get customColumns():Array<CustomColumn>;
1948
+ /**
1949
+ * True if this table may receive updates from the server, including size changed events, updated events after
1950
+ * initial snapshot.
1951
+ * @return boolean
1952
+ */
1953
+ get isRefreshing():boolean;
1954
+ /**
1955
+ * An ordered list of Filters to apply to the table. To update, call applyFilter(). Note that this getter will
1956
+ * return the new value immediately, even though it may take a little time to update on the server. You may listen
1957
+ * for the <b>filterchanged</b> event to know when to update the UI.
1958
+ * @return {@link dh.FilterCondition} array
1959
+ */
1960
+ get filter():Array<FilterCondition>;
1961
+ /**
1962
+ * The total count of the rows in the table, excluding any filters. Unlike <b>size</b>, changes to this value will
1963
+ * not result in any event. <b>Sort[] sort</b> an ordered list of Sorts to apply to the table. To update, call
1964
+ * applySort(). Note that this getter will return the new value immediately, even though it may take a little time
1965
+ * to update on the server. You may listen for the <b>sortchanged</b> event to know when to update the UI.
1966
+ * @return double
1967
+ */
1968
+ get totalSize():number;
1969
+ /**
1970
+ * The total count of rows in the table. The size can and will change; see the <b>sizechanged</b> event for details.
1971
+ * Size will be negative in exceptional cases (e.g., the table is uncoalesced; see the <b>isUncoalesced</b>
1972
+ * property). for details).
1973
+ * @return double
1974
+ */
1975
+ get size():number;
1976
+ /**
1977
+ * True if this table has been closed.
1978
+ * @return boolean
1979
+ */
1980
+ get isClosed():boolean;
1981
+ /**
1982
+ * Read-only. True if this table is uncoalesced. Set a viewport or filter on the partition columns to coalesce the
1983
+ * table. Check the <b>isPartitionColumn</b> property on the table columns to retrieve the partition columns. Size
1984
+ * will be unavailable until table is coalesced.
1985
+ * @return boolean
1986
+ */
1987
+ get isUncoalesced():boolean;
1988
+ /**
1989
+ * Listen for events on this object.
1990
+ * @param name - the name of the event to listen for
1991
+ * @param callback - a function to call when the event occurs
1992
+ * @return Returns a cleanup function.
1993
+ * @typeParam T - the type of the data that the event will provide
1994
+ */
1995
+ addEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):()=>void;
1996
+ nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<CustomEvent<T>>;
1997
+ hasListeners(name:string):boolean;
1998
+ /**
1999
+ * Removes an event listener added to this table.
2000
+ * @param name -
2001
+ * @param callback -
2002
+ * @return
2003
+ * @typeParam T -
2004
+ */
2005
+ removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
2006
+ /**
2007
+ * a Sort than can be used to reverse a table. This can be passed into n array in applySort. Note that Tree Tables
2008
+ * do not support reverse.
2009
+ * @return {@link dh.Sort}
2010
+ */
2011
+ static reverse():Sort;
2012
+ }
2013
+
2014
+ export class DateWrapper extends LongWrapper {
2015
+ protected constructor();
2016
+
2017
+ static ofJsDate(date:Date):DateWrapper;
2018
+ asDate():Date;
2019
+ }
2020
+
2021
+ export class IdeSession implements HasEventHandling {
2022
+ static readonly EVENT_COMMANDSTARTED:string;
2023
+ static readonly EVENT_REQUEST_FAILED:string;
2024
+
2025
+ protected constructor();
2026
+
2122
2027
  /**
2123
- * true if the given row is expanded, false otherwise. Equivalent to `TreeRow.isExpanded`, if an instance of the row
2124
- * is available
2125
- * @param row -
2126
- * @return boolean
2028
+ * Load the named table, with columns and size information already fully populated.
2029
+ * @param name -
2030
+ * @param applyPreviewColumns - optional boolean
2031
+ * @return {@link Promise} of {@link dh.Table}
2127
2032
  */
2128
- isExpanded(row:TreeRow|number):boolean;
2129
- setViewport(firstRow:number, lastRow:number, columns?:Array<Column>|undefined|null, updateInterval?:number|undefined|null):void;
2130
- getViewportData():Promise<TreeViewportData>;
2033
+ getTable(name:string, applyPreviewColumns?:boolean):Promise<Table>;
2131
2034
  /**
2132
- * Indicates that the table will no longer be used, and server resources can be freed.
2035
+ * Load the named Figure, including its tables and tablemaps as needed.
2036
+ * @param name -
2037
+ * @return promise of dh.plot.Figure
2133
2038
  */
2134
- close():void;
2135
- typedTicket():dhinternal.io.deephaven.proto.ticket_pb.TypedTicket;
2039
+ getFigure(name:string):Promise<dh.plot.Figure>;
2136
2040
  /**
2137
- * Applies the given sort to all levels of the tree. Returns the previous sort in use.
2138
- * @param sort -
2139
- * @return {@link dh.Sort} array
2041
+ * Loads the named tree table or roll-up table, with column data populated. All nodes are collapsed by default, and
2042
+ * size is presently not available until the viewport is first set.
2043
+ * @param name -
2044
+ * @return {@link Promise} of {@link dh.TreeTable}
2140
2045
  */
2141
- applySort(sort:Sort[]):Array<Sort>;
2046
+ getTreeTable(name:string):Promise<TreeTable>;
2047
+ getHierarchicalTable(name:string):Promise<TreeTable>;
2048
+ getObject(definitionObject:dh.ide.VariableDescriptor):Promise<any>;
2049
+ newTable(columnNames:string[], types:string[], data:string[][], userTimeZone:string):Promise<Table>;
2142
2050
  /**
2143
- * Applies the given filter to the contents of the tree in such a way that if any node is visible, then any parent
2144
- * node will be visible as well even if that parent node would not normally be visible due to the filter's
2145
- * condition. Returns the previous sort in use.
2146
- * @param filter -
2147
- * @return {@link dh.FilterCondition} array
2051
+ * Merges the given tables into a single table. Assumes all tables have the same structure.
2052
+ * @param tables -
2053
+ * @return {@link Promise} of {@link dh.Table}
2148
2054
  */
2149
- applyFilter(filter:FilterCondition[]):Array<FilterCondition>;
2055
+ mergeTables(tables:Table[]):Promise<Table>;
2056
+ bindTableToVariable(table:Table, name:string):Promise<void>;
2057
+ subscribeToFieldUpdates(callback:(arg0:dh.ide.VariableChanges)=>void):()=>void;
2058
+ close():void;
2059
+ runCode(code:string):Promise<dh.ide.CommandResult>;
2060
+ onLogMessage(callback:(arg0:dh.ide.LogItem)=>void):()=>void;
2061
+ openDocument(params:object):void;
2062
+ changeDocument(params:object):void;
2063
+ getCompletionItems(params:object):Promise<Array<dh.lsp.CompletionItem>>;
2064
+ getSignatureHelp(params:object):Promise<Array<dh.lsp.SignatureInformation>>;
2065
+ getHover(params:object):Promise<dh.lsp.Hover>;
2066
+ closeDocument(params:object):void;
2150
2067
  /**
2151
- * a column with the given name, or throws an exception if it cannot be found
2152
- * @param key -
2153
- * @return {@link dh.Column}
2068
+ * Creates an empty table with the specified number of rows. Optionally columns and types may be specified, but all
2069
+ * values will be null.
2070
+ * @param size -
2071
+ * @return {@link Promise} of {@link dh.Table}
2154
2072
  */
2155
- findColumn(key:string):Column;
2073
+ emptyTable(size:number):Promise<Table>;
2156
2074
  /**
2157
- * an array with all of the named columns in order, or throws an exception if one cannot be found.
2158
- * @param keys -
2159
- * @return {@link dh.Column} array
2075
+ * Creates a new table that ticks automatically every "periodNanos" nanoseconds. A start time may be provided; if so
2076
+ * the table will be populated with the interval from the specified date until now.
2077
+ * @param periodNanos -
2078
+ * @param startTime -
2079
+ * @return {@link Promise} of {@link dh.Table}
2160
2080
  */
2161
- findColumns(keys:string[]):Column[];
2081
+ timeTable(periodNanos:number, startTime?:DateWrapper):Promise<Table>;
2082
+ addEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):()=>void;
2083
+ nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<CustomEvent<T>>;
2084
+ hasListeners(name:string):boolean;
2085
+ removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
2086
+ }
2087
+
2088
+ /**
2089
+ * Describes a Sort present on the table. No visible constructor, created through the use of Column.sort(), will be tied
2090
+ * to that particular column data. Sort instances are immutable, and use a builder pattern to make modifications. All
2091
+ * methods return a new Sort instance.
2092
+ */
2093
+ export class Sort {
2094
+ static readonly ASCENDING:string;
2095
+ static readonly DESCENDING:string;
2096
+ static readonly REVERSE:string;
2097
+
2098
+ protected constructor();
2099
+
2162
2100
  /**
2163
- * Provides Table-like selectDistinct functionality, but with a few quirks, since it is only fetching the distinct
2164
- * values for the given columns in the source table:
2165
- * <ul>
2166
- * <li>Rollups may make no sense, since values are aggregated.</li>
2167
- * <li>Values found on orphaned (and removed) nodes will show up in the resulting table, even though they are not in
2168
- * the tree.</li>
2169
- * <li>Values found on parent nodes which are only present in the tree since a child is visible will not be present
2170
- * in the resulting table.</li>
2171
- * </ul>
2101
+ * Builds a Sort instance to sort values in ascending order.
2102
+ * @return {@link dh.Sort}
2172
2103
  */
2173
- selectDistinct(columns:Column[]):Promise<Table>;
2174
- getTotalsTableConfig():Promise<TotalsTableConfig>;
2175
- getTotalsTable(config?:object):Promise<TotalsTable>;
2176
- getGrandTotalsTable(config?:object):Promise<TotalsTable>;
2104
+ asc():Sort;
2177
2105
  /**
2178
- * a new copy of this treetable, so it can be sorted and filtered separately, and maintain a different viewport.
2179
- * Unlike Table, this will _not_ copy the filter or sort, since tree table viewport semantics differ, and without a
2180
- * viewport set, the treetable doesn't evaluate these settings, and they aren't readable on the properties. Expanded
2181
- * state is also not copied.
2182
- * @return Promise of dh.TreeTable
2106
+ * Builds a Sort instance to sort values in descending order.
2107
+ * @return {@link dh.Sort}
2183
2108
  */
2184
- copy():Promise<TreeTable>;
2109
+ desc():Sort;
2185
2110
  /**
2186
- * The current filter configuration of this Tree Table.
2187
- * @return {@link dh.FilterCondition} array
2111
+ * Builds a Sort instance which takes the absolute value before applying order.
2112
+ * @return {@link dh.Sort}
2188
2113
  */
2189
- get filter():Array<FilterCondition>;
2114
+ abs():Sort;
2115
+ toString():string;
2190
2116
  /**
2191
- * True if this is a roll-up and will provide the original rows that make up each grouping.
2117
+ * True if the absolute value of the column should be used when sorting; defaults to false.
2192
2118
  * @return boolean
2193
2119
  */
2194
- get includeConstituents():boolean;
2195
- get groupedColumns():Array<Column>;
2120
+ get isAbs():boolean;
2196
2121
  /**
2197
- * True if this table has been closed.
2198
- * @return boolean
2122
+ * The column which is sorted.
2123
+ * @return {@link dh.Column}
2199
2124
  */
2200
- get isClosed():boolean;
2125
+ get column():Column;
2201
2126
  /**
2202
- * The current number of rows given the table's contents and the various expand/collapse states of each node. (No
2203
- * totalSize is provided at this time; its definition becomes unclear between roll-up and tree tables, especially
2204
- * when considering collapse/expand states).
2205
- * @return double
2127
+ * The direction of this sort, either <b>ASC</b>, <b>DESC</b>, or <b>REVERSE</b>.
2128
+ * @return String
2206
2129
  */
2207
- get size():number;
2130
+ get direction():string;
2131
+ }
2132
+
2133
+ /**
2134
+ * Represents a non-viewport subscription to a table, and all data currently known to be present in the subscribed
2135
+ * columns. This class handles incoming snapshots and deltas, and fires events to consumers to notify of data changes.
2136
+ *
2137
+ * Unlike {@link dh.TableViewportSubscription}, the "original" table does not have a reference to this instance, only the
2138
+ * "private" table instance does, since the original cannot modify the subscription, and the private instance must
2139
+ * forward data to it.
2140
+ *
2141
+ * Represents a subscription to the table on the server. Changes made to the table will not be reflected here - the
2142
+ * subscription must be closed and a new one optioned to see those changes. The event model is slightly different from
2143
+ * viewports to make it less expensive to compute for large tables.
2144
+ */
2145
+ export class TableSubscription implements HasEventHandling {
2208
2146
  /**
2209
- * The columns that can be shown in this Tree Table.
2210
- * @return {@link dh.Column} array
2147
+ * Indicates that some new data is available on the client, either an initial snapshot or a delta update. The
2148
+ * <b>detail</b> field of the event will contain a TableSubscriptionEventData detailing what has changed, or
2149
+ * allowing access to the entire range of items currently in the subscribed columns.
2211
2150
  */
2212
- get columns():Array<Column>;
2151
+ static readonly EVENT_UPDATED:string;
2152
+
2153
+ protected constructor();
2154
+
2213
2155
  /**
2214
- * The current sort configuration of this Tree Table
2215
- * @return {@link dh.Sort} array.
2156
+ * Stops the subscription on the server.
2216
2157
  */
2217
- get sort():Array<Sort>;
2158
+ close():void;
2159
+ addEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):()=>void;
2160
+ nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<CustomEvent<T>>;
2161
+ hasListeners(name:string):boolean;
2162
+ removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
2218
2163
  /**
2219
- * True if this table may receive updates from the server, including size changed events, updated events after
2220
- * initial snapshot.
2221
- * @return boolean
2164
+ * The columns that were subscribed to when this subscription was created
2165
+ * @return {@link dh.Column}
2222
2166
  */
2223
- get isRefreshing():boolean;
2167
+ get columns():Array<Column>;
2168
+ }
2169
+
2170
+ /**
2171
+ * This class allows iteration over non-contiguous indexes. In the future, this will support the EcmaScript 2015
2172
+ * Iteration protocol, but for now has one method which returns an iterator, and also supports querying the size.
2173
+ * Additionally, we may add support for creating RangeSet objects to better serve some use cases.
2174
+ */
2175
+ export class RangeSet {
2176
+ protected constructor();
2177
+
2178
+ static ofRange(first:number, last:number):RangeSet;
2179
+ static ofItems(rows:number[]):RangeSet;
2180
+ static ofRanges(ranges:RangeSet[]):RangeSet;
2181
+ static ofSortedRanges(ranges:RangeSet[]):RangeSet;
2224
2182
  /**
2225
- * Listen for events on this object.
2226
- * @param name - the name of the event to listen for
2227
- * @param callback - a function to call when the event occurs
2228
- * @return Returns a cleanup function.
2229
- * @typeParam T - the type of the data that the event will provide
2183
+ * a new iterator over all indexes in this collection.
2184
+ * @return Iterator of {@link dh.LongWrapper}
2230
2185
  */
2231
- addEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):()=>void;
2232
- nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<CustomEvent<T>>;
2233
- hasListeners(name:string):boolean;
2186
+ iterator():Iterator<LongWrapper>;
2234
2187
  /**
2235
- * Removes an event listener added to this table.
2236
- * @param name -
2237
- * @param callback -
2238
- * @return
2239
- * @typeParam T -
2188
+ * The total count of items contained in this collection. In some cases this can be expensive to compute, and
2189
+ * generally should not be needed except for debugging purposes, or preallocating space (i.e., do not call this
2190
+ * property each time through a loop).
2191
+ * @return double
2240
2192
  */
2241
- removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
2193
+ get size():number;
2194
+ }
2195
+
2196
+ /**
2197
+ * Exists to keep the dh.TableMap namespace so that the web UI can remain compatible with the DHE API, which still calls
2198
+ * this type TableMap.
2199
+ * @deprecated
2200
+ */
2201
+ export class TableMap {
2202
+ static readonly EVENT_KEYADDED:string;
2203
+ static readonly EVENT_DISCONNECT:string;
2204
+ static readonly EVENT_RECONNECT:string;
2205
+ static readonly EVENT_RECONNECTFAILED:string;
2206
+
2207
+ protected constructor();
2208
+ }
2209
+
2210
+ /**
2211
+ * Presently optional and not used by the server, this allows the client to specify some authentication details. String
2212
+ * authToken <i>- base 64 encoded auth token. String serviceId -</i> The service ID to use for the connection.
2213
+ */
2214
+ export class ConnectOptions {
2215
+ headers:{ [key: string]: string; };
2216
+
2217
+ constructor();
2218
+ }
2219
+
2220
+ export class LoginCredentials {
2221
+ type?:string|null;
2222
+ username?:string|null;
2223
+ token?:string|null;
2224
+
2225
+ constructor();
2226
+ }
2227
+
2228
+ /**
2229
+ * Wrap BigInteger values for use in JS. Provides text formatting for display and access to the underlying value.
2230
+ */
2231
+ export class BigIntegerWrapper {
2232
+ protected constructor();
2233
+
2234
+ static ofString(str:string):BigIntegerWrapper;
2235
+ asNumber():number;
2236
+ valueOf():string;
2237
+ toString():string;
2238
+ }
2239
+
2240
+ export class LongWrapper {
2241
+ protected constructor();
2242
+
2243
+ static ofString(str:string):LongWrapper;
2244
+ asNumber():number;
2245
+ valueOf():string;
2246
+ toString():string;
2242
2247
  }
2243
2248
 
2244
2249
  /**
2245
- * Represents a set of Tables each corresponding to some key. The keys are available locally, but a call must be made to
2246
- * the server to get each Table. All tables will have the same structure.
2250
+ * Describes how a Totals Table will be generated from its parent table. Each table has a default (which may be null)
2251
+ * indicating how that table was configured when it was declared, and each Totals Table has a similar property
2252
+ * describing how it was created. Both the <b>Table.getTotalsTable</b> and <b>Table.getGrandTotalsTable</b> methods take
2253
+ * this config as an optional parameter - without it, the table's default will be used, or if null, a default instance
2254
+ * of <b>TotalsTableConfig</b> will be supplied.
2255
+ *
2256
+ * This class has a no-arg constructor, allowing an instance to be made with the default values provided. However, any
2257
+ * JS object can be passed in to the methods which accept instances of this type, provided their values adhere to the
2258
+ * expected formats.
2247
2259
  */
2248
- export class PartitionedTable implements HasEventHandling {
2260
+ export class TotalsTableConfig {
2249
2261
  /**
2250
- * Indicates that a new key has been added to the array of keys, which can now be fetched with getTable.
2262
+ * @deprecated
2251
2263
  */
2252
- static readonly EVENT_KEYADDED:string;
2264
+ static readonly COUNT:string;
2253
2265
  /**
2254
- * Indicates that a new key has been added to the array of keys, which can now be fetched with getTable.
2266
+ * @deprecated
2255
2267
  */
2256
- static readonly EVENT_DISCONNECT:string;
2268
+ static readonly MIN:string;
2257
2269
  /**
2258
- * Indicates that a new key has been added to the array of keys, which can now be fetched with getTable.
2270
+ * @deprecated
2259
2271
  */
2260
- static readonly EVENT_RECONNECT:string;
2272
+ static readonly MAX:string;
2261
2273
  /**
2262
- * Indicates that a new key has been added to the array of keys, which can now be fetched with getTable.
2274
+ * @deprecated
2263
2275
  */
2264
- static readonly EVENT_RECONNECTFAILED:string;
2265
-
2266
- protected constructor();
2267
-
2268
- typedTicket():dhinternal.io.deephaven.proto.ticket_pb.TypedTicket;
2276
+ static readonly SUM:string;
2269
2277
  /**
2270
- * Fetch the table with the given key.
2271
- * @param key - The key to fetch. An array of values for each key column, in the same order as the key columns are.
2272
- * @return Promise of dh.Table
2278
+ * @deprecated
2273
2279
  */
2274
- getTable(key:object):Promise<Table>;
2280
+ static readonly ABS_SUM:string;
2275
2281
  /**
2276
- * Open a new table that is the result of merging all constituent tables. See
2277
- * {@link io.deephaven.engine.table.PartitionedTable#merge()} for details.
2278
- * @return A merged representation of the constituent tables.
2282
+ * @deprecated
2279
2283
  */
2280
- getMergedTable():Promise<Table>;
2284
+ static readonly VAR:string;
2281
2285
  /**
2282
- * The set of all currently known keys. This is kept up to date, so getting the list after adding an event listener
2283
- * for <b>keyadded</b> will ensure no keys are missed.
2284
- * @return Set of Object
2286
+ * @deprecated
2285
2287
  */
2286
- getKeys():Set<object>;
2288
+ static readonly AVG:string;
2287
2289
  /**
2288
- * Fetch a table containing all the valid keys of the partitioned table.
2289
- * @return Promise of a Table
2290
+ * @deprecated
2290
2291
  */
2291
- getKeyTable():Promise<Table>;
2292
+ static readonly STD:string;
2292
2293
  /**
2293
- * Indicates that this PartitionedTable will no longer be used, removing subcriptions to updated keys, etc. This
2294
- * will not affect tables in use.
2294
+ * @deprecated
2295
2295
  */
2296
- close():void;
2296
+ static readonly FIRST:string;
2297
2297
  /**
2298
- * The count of known keys.
2299
- * @return int
2298
+ * @deprecated
2300
2299
  */
2301
- get size():number;
2300
+ static readonly LAST:string;
2302
2301
  /**
2303
- * An array of the columns in the tables that can be retrieved from this partitioned table, including both key and
2304
- * non-key columns.
2305
- * @return Array of Column
2302
+ * @deprecated
2306
2303
  */
2307
- get columns():Column[];
2304
+ static readonly SKIP:string;
2308
2305
  /**
2309
- * An array of all the key columns that the tables are partitioned by.
2310
- * @return Array of Column
2306
+ * Specifies if a Totals Table should be expanded by default in the UI. Defaults to false.
2311
2307
  */
2312
- get keyColumns():Column[];
2308
+ showTotalsByDefault:boolean;
2313
2309
  /**
2314
- * Listen for events on this object.
2315
- * @param name - the name of the event to listen for
2316
- * @param callback - a function to call when the event occurs
2317
- * @return Returns a cleanup function.
2318
- * @typeParam T - the type of the data that the event will provide
2310
+ * Specifies if a Grand Totals Table should be expanded by default in the UI. Defaults to false.
2319
2311
  */
2320
- addEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):()=>void;
2321
- nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<CustomEvent<T>>;
2322
- hasListeners(name:string):boolean;
2312
+ showGrandTotalsByDefault:boolean;
2323
2313
  /**
2324
- * Removes an event listener added to this table.
2325
- * @param name -
2326
- * @param callback -
2327
- * @return
2328
- * @typeParam T -
2314
+ * Specifies the default operation for columns that do not have a specific operation applied; defaults to "Sum".
2329
2315
  */
2330
- removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
2316
+ defaultOperation:AggregationOperationType;
2317
+ /**
2318
+ * Mapping from each column name to the aggregation(s) that should be applied to that column in the resulting Totals
2319
+ * Table. If a column is omitted, the defaultOperation is used.
2320
+ */
2321
+ operationMap:{ [key: string]: Array<AggregationOperationType>; };
2322
+ /**
2323
+ * Groupings to use when generating the Totals Table. One row will exist for each unique set of values observed in
2324
+ * these columns. See also `Table.selectDistinct`.
2325
+ */
2326
+ groupBy:Array<string>;
2327
+
2328
+ constructor();
2329
+
2330
+ toString():string;
2331
+ }
2332
+
2333
+
2334
+ type SearchDisplayModeType = string;
2335
+ export class SearchDisplayMode {
2336
+ static readonly SEARCH_DISPLAY_DEFAULT:SearchDisplayModeType;
2337
+ static readonly SEARCH_DISPLAY_HIDE:SearchDisplayModeType;
2338
+ static readonly SEARCH_DISPLAY_SHOW:SearchDisplayModeType;
2331
2339
  }
2332
2340
 
2341
+ type ValueTypeType = string;
2342
+ export class ValueType {
2343
+ static readonly STRING:ValueTypeType;
2344
+ static readonly NUMBER:ValueTypeType;
2345
+ static readonly DOUBLE:ValueTypeType;
2346
+ static readonly LONG:ValueTypeType;
2347
+ static readonly DATETIME:ValueTypeType;
2348
+ static readonly BOOLEAN:ValueTypeType;
2349
+ }
2333
2350
 
2334
2351
  /**
2335
2352
  * This enum describes the name of each supported operation/aggregation type when creating a `TreeTable`.
@@ -2368,27 +2385,34 @@ export namespace dh {
2368
2385
  static readonly TREEMAP:VariableTypeType;
2369
2386
  }
2370
2387
 
2371
- type ValueTypeType = string;
2372
- export class ValueType {
2373
- static readonly STRING:ValueTypeType;
2374
- static readonly NUMBER:ValueTypeType;
2375
- static readonly DOUBLE:ValueTypeType;
2376
- static readonly LONG:ValueTypeType;
2377
- static readonly DATETIME:ValueTypeType;
2378
- static readonly BOOLEAN:ValueTypeType;
2379
- }
2380
-
2381
- type SearchDisplayModeType = string;
2382
- export class SearchDisplayMode {
2383
- static readonly SEARCH_DISPLAY_DEFAULT:SearchDisplayModeType;
2384
- static readonly SEARCH_DISPLAY_HIDE:SearchDisplayModeType;
2385
- static readonly SEARCH_DISPLAY_SHOW:SearchDisplayModeType;
2386
- }
2387
-
2388
2388
  }
2389
2389
 
2390
2390
  export namespace dh.ide {
2391
2391
 
2392
+ /**
2393
+ * Describes changes in the current set of variables in the script session. Note that variables that changed value
2394
+ * without changing type will be included as <b>updated</b>, but if a new value with one type replaces an old value with
2395
+ * a different type, this will be included as an entry in both <b>removed</b> and <b>created</b> to indicate the old and
2396
+ * new types.
2397
+ */
2398
+ export interface VariableChanges {
2399
+ /**
2400
+ *
2401
+ * @return The variables that no longer exist after this operation, or were replaced by some variable with a
2402
+ * different type.
2403
+ */
2404
+ get removed():Array<VariableDefinition>;
2405
+ /**
2406
+ *
2407
+ * @return The variables that were created by this operation, or have a new type.
2408
+ */
2409
+ get created():Array<VariableDefinition>;
2410
+ /**
2411
+ *
2412
+ * @return The variables that changed value during this operation.
2413
+ */
2414
+ get updated():Array<VariableDefinition>;
2415
+ }
2392
2416
  /**
2393
2417
  * A format to describe a variable available to be read from the server. Application fields are optional, and only
2394
2418
  * populated when a variable is provided by application mode.
@@ -2460,47 +2484,77 @@ export namespace dh.ide {
2460
2484
  name?:string|null;
2461
2485
  }
2462
2486
  /**
2463
- * Describes changes in the current set of variables in the script session. Note that variables that changed value
2464
- * without changing type will be included as <b>updated</b>, but if a new value with one type replaces an old value with
2465
- * a different type, this will be included as an entry in both <b>removed</b> and <b>created</b> to indicate the old and
2466
- * new types.
2487
+ * Indicates the result of code run on the server.
2467
2488
  */
2468
- export interface VariableChanges {
2469
- /**
2470
- *
2471
- * @return The variables that no longer exist after this operation, or were replaced by some variable with a
2472
- * different type.
2473
- */
2474
- get removed():Array<VariableDefinition>;
2489
+ export interface CommandResult {
2475
2490
  /**
2476
- *
2477
- * @return The variables that were created by this operation, or have a new type.
2491
+ * Describes changes made in the course of this command.
2492
+ * @return {@link dh.ide.VariableChanges}.
2478
2493
  */
2479
- get created():Array<VariableDefinition>;
2494
+ get changes():VariableChanges;
2480
2495
  /**
2481
- *
2482
- * @return The variables that changed value during this operation.
2496
+ * If the command failed, the error message will be provided here.
2497
+ * @return String
2483
2498
  */
2484
- get updated():Array<VariableDefinition>;
2499
+ get error():string;
2485
2500
  }
2501
+ }
2502
+
2503
+ export namespace dh.i18n {
2504
+
2486
2505
  /**
2487
- * Indicates the result of code run on the server.
2506
+ * Exported wrapper of the GWT NumberFormat, plus LongWrapper support
2507
+ *
2508
+ * Utility class to parse and format numbers, using the same format patterns as are supported by the standard Java
2509
+ * implementation used in the Deephaven server and swing client. Works for numeric types including BigInteger and
2510
+ * BigDecimal.
2488
2511
  */
2489
- export interface CommandResult {
2512
+ export class NumberFormat {
2490
2513
  /**
2491
- * Describes changes made in the course of this command.
2492
- * @return {@link dh.ide.VariableChanges}.
2514
+ * Creates a new number format instance. This generally should be avoided in favor of the static `getFormat`
2515
+ * function, which will create and cache an instance so that later calls share the same instance.
2516
+ * @param pattern -
2493
2517
  */
2494
- get changes():VariableChanges;
2518
+ constructor(pattern:string);
2519
+
2520
+ /**
2521
+ * a number format instance matching the specified format. If this format has not been specified before, a new
2522
+ * instance will be created and cached for later reuse. Prefer this method to calling the constructor directly to
2523
+ * take advantage of caching
2524
+ * @param pattern -
2525
+ * @return dh.i18n.NumberFormat
2526
+ */
2527
+ static getFormat(pattern:string):NumberFormat;
2528
+ /**
2529
+ * Parses the given text using the cached format matching the given pattern.
2530
+ * @param pattern -
2531
+ * @param text -
2532
+ * @return double
2533
+ */
2534
+ static parse(pattern:string, text:string):number;
2535
+ /**
2536
+ * Formats the specified number (or Java <b>long</b>, <b>BigInteger</b> or <b>BigDecimal</b> value) using the cached
2537
+ * format matching the given pattern string.
2538
+ * @param pattern -
2539
+ * @param number -
2540
+ * @return String
2541
+ */
2542
+ static format(pattern:string, number:number|dh.BigIntegerWrapper|dh.BigDecimalWrapper|dh.LongWrapper):string;
2543
+ /**
2544
+ * Parses the given text using this instance's pattern into a JS Number.
2545
+ * @param text -
2546
+ * @return double
2547
+ */
2548
+ parse(text:string):number;
2495
2549
  /**
2496
- * If the command failed, the error message will be provided here.
2550
+ * Formats the specified number (or Java `long`, `BigInteger` or `BigDecimal` value) using this instance's pattern.
2551
+ * @param number -
2497
2552
  * @return String
2498
2553
  */
2499
- get error():string;
2554
+ format(number:number|dh.BigIntegerWrapper|dh.BigDecimalWrapper|dh.LongWrapper):string;
2555
+ toString():string;
2500
2556
  }
2501
- }
2502
2557
 
2503
- export namespace dh.i18n {
2504
2558
 
2505
2559
  /**
2506
2560
  * Largely an exported wrapper for the GWT DateFormat, but also includes support for formatting nanoseconds as an
@@ -2600,60 +2654,6 @@ export namespace dh.i18n {
2600
2654
  toString():string;
2601
2655
  }
2602
2656
 
2603
- /**
2604
- * Exported wrapper of the GWT NumberFormat, plus LongWrapper support
2605
- *
2606
- * Utility class to parse and format numbers, using the same format patterns as are supported by the standard Java
2607
- * implementation used in the Deephaven server and swing client. Works for numeric types including BigInteger and
2608
- * BigDecimal.
2609
- */
2610
- export class NumberFormat {
2611
- /**
2612
- * Creates a new number format instance. This generally should be avoided in favor of the static `getFormat`
2613
- * function, which will create and cache an instance so that later calls share the same instance.
2614
- * @param pattern -
2615
- */
2616
- constructor(pattern:string);
2617
-
2618
- /**
2619
- * a number format instance matching the specified format. If this format has not been specified before, a new
2620
- * instance will be created and cached for later reuse. Prefer this method to calling the constructor directly to
2621
- * take advantage of caching
2622
- * @param pattern -
2623
- * @return dh.i18n.NumberFormat
2624
- */
2625
- static getFormat(pattern:string):NumberFormat;
2626
- /**
2627
- * Parses the given text using the cached format matching the given pattern.
2628
- * @param pattern -
2629
- * @param text -
2630
- * @return double
2631
- */
2632
- static parse(pattern:string, text:string):number;
2633
- /**
2634
- * Formats the specified number (or Java <b>long</b>, <b>BigInteger</b> or <b>BigDecimal</b> value) using the cached
2635
- * format matching the given pattern string.
2636
- * @param pattern -
2637
- * @param number -
2638
- * @return String
2639
- */
2640
- static format(pattern:string, number:number|dh.BigIntegerWrapper|dh.BigDecimalWrapper|dh.LongWrapper):string;
2641
- /**
2642
- * Parses the given text using this instance's pattern into a JS Number.
2643
- * @param text -
2644
- * @return double
2645
- */
2646
- parse(text:string):number;
2647
- /**
2648
- * Formats the specified number (or Java `long`, `BigInteger` or `BigDecimal` value) using this instance's pattern.
2649
- * @param number -
2650
- * @return String
2651
- */
2652
- format(number:number|dh.BigIntegerWrapper|dh.BigDecimalWrapper|dh.LongWrapper):string;
2653
- toString():string;
2654
- }
2655
-
2656
-
2657
2657
  /**
2658
2658
  * Represents the timezones supported by Deephaven. Can be used to format dates, taking into account the offset changing
2659
2659
  * throughout the year (potentially changing each year). These instances mostly are useful at this time to pass to the
@@ -2769,6 +2769,26 @@ export namespace dh.i18n {
2769
2769
 
2770
2770
  export namespace dh.plot {
2771
2771
 
2772
+ /**
2773
+ * Describes how to access and display data required within a series.
2774
+ */
2775
+ export interface SeriesDataSource {
2776
+ /**
2777
+ * the type of data stored in the underlying table's Column.
2778
+ * @return String
2779
+ */
2780
+ get columnType():string;
2781
+ /**
2782
+ * the axis that this source should be drawn on.
2783
+ * @return dh.plot.Axis
2784
+ */
2785
+ get axis():Axis;
2786
+ /**
2787
+ * the feature of this series represented by this source. See the <b>SourceType</b> enum for more details.
2788
+ * @return int
2789
+ */
2790
+ get type():SourceTypeType;
2791
+ }
2772
2792
  /**
2773
2793
  * Provides access to the data for displaying in a figure.
2774
2794
  */
@@ -2818,264 +2838,93 @@ export namespace dh.plot {
2818
2838
  get series():Series[];
2819
2839
  }
2820
2840
  /**
2821
- * Describes a template that will be used to make new series instances when a new table added to a plotBy.
2822
- */
2823
- export interface MultiSeries {
2824
- /**
2825
- * The name for this multi-series.
2826
- * @return String
2827
- */
2828
- get name():string;
2829
- /**
2830
- * The plotting style to use for the series that will be created. See <b>SeriesPlotStyle</b> enum for more details.
2831
- * @return int
2832
- */
2833
- get plotStyle():SeriesPlotStyleType;
2834
- }
2835
- /**
2836
- * Describes how to access and display data required within a series.
2837
- */
2838
- export interface SeriesDataSource {
2839
- /**
2840
- * the type of data stored in the underlying table's Column.
2841
- * @return String
2842
- */
2843
- get columnType():string;
2844
- /**
2845
- * the axis that this source should be drawn on.
2846
- * @return dh.plot.Axis
2847
- */
2848
- get axis():Axis;
2849
- /**
2850
- * the feature of this series represented by this source. See the <b>SourceType</b> enum for more details.
2851
- * @return int
2852
- */
2853
- get type():SourceTypeType;
2854
- }
2855
- /**
2856
2841
  * Defines one axis used with by series. These instances will be found both on the Chart and the Series instances, and
2857
2842
  * may be shared between Series instances.
2858
2843
  */
2859
2844
  export interface Axis {
2860
2845
  /**
2861
2846
  * The format pattern to use with this axis. Use the type to determine which type of formatter to use.
2862
- * @return String
2863
- */
2864
- readonly formatPattern?:string|null;
2865
- readonly gapBetweenMajorTicks?:number|null;
2866
-
2867
- /**
2868
- * Indicates that this axis is only `widthInPixels` wide, so any extra data can be downsampled out, if this can be
2869
- * done losslessly. The second two arguments represent the current zoom range of this axis, and if provided, most of
2870
- * the data outside of this range will be filtered out automatically and the visible width mapped to that range.
2871
- * When the UI zooms, pans, or resizes, this method should be called again to update these three values to ensure
2872
- * that data is correct and current.
2873
- * @param pixelCount -
2874
- * @param min -
2875
- * @param max -
2876
- */
2877
- range(pixelCount?:number|undefined|null, min?:unknown|undefined|null, max?:unknown|undefined|null):void;
2878
- get tickLabelAngle():number;
2879
- get labelFont():string;
2880
- get color():string;
2881
- get invert():boolean;
2882
- get log():boolean;
2883
- get maxRange():number;
2884
- /**
2885
- * The label for this axis.
2886
- * @return String
2887
- */
2888
- get label():string;
2889
- get timeAxis():boolean;
2890
- /**
2891
- * The type for this axis, indicating how it will be drawn. See <b>AxisType</b> enum for more details.
2892
- * @return int
2893
- */
2894
- get type():AxisTypeType;
2895
- get minorTicksVisible():boolean;
2896
- get minorTickCount():number;
2897
- get majorTickLocations():number[];
2898
- get majorTicksVisible():boolean;
2899
- get ticksFont():string;
2900
- /**
2901
- * The unique id for this axis.
2902
- * @return String
2903
- */
2904
- get id():string;
2905
- /**
2906
- * The position for this axis. See <b>AxisPosition</b> enum for more details.
2907
- * @return int
2908
- */
2909
- get position():AxisPositionType;
2910
- /**
2911
- * The calendar with the business hours and holidays to transform plot data against. Defaults to null, or no
2912
- * transform.
2913
- * @return dh.calendar.BusinessCalendar
2914
- */
2915
- get businessCalendar():dh.calendar.BusinessCalendar;
2916
- /**
2917
- * The type for this axis. See <b>AxisFormatType</b> enum for more details.
2918
- * @return int
2919
- */
2920
- get formatType():AxisFormatTypeType;
2921
- get minRange():number;
2922
- }
2923
- export interface OneClick {
2924
- setValueForColumn(columnName:string, value:any):void;
2925
- getValueForColumn(columName:string):any;
2926
- get requireAllFiltersToDisplay():boolean;
2927
- get columns():dh.Column[];
2928
- }
2929
-
2930
- export class ChartDescriptor {
2931
- colspan?:number|null;
2932
- rowspan?:number|null;
2933
- series:Array<SeriesDescriptor>;
2934
- axes:Array<AxisDescriptor>;
2935
- chartType:string;
2936
- title?:string|null;
2937
- titleFont?:string|null;
2938
- titleColor?:string|null;
2939
- showLegend?:boolean|null;
2940
- legendFont?:string|null;
2941
- legendColor?:string|null;
2942
- is3d?:boolean|null;
2943
-
2944
- constructor();
2945
- }
2946
-
2947
- export class AxisDescriptor {
2948
- formatType:string;
2949
- type:string;
2950
- position:string;
2951
- log?:boolean|null;
2952
- label?:string|null;
2953
- labelFont?:string|null;
2954
- ticksFont?:string|null;
2955
- formatPattern?:string|null;
2956
- color?:string|null;
2957
- minRange?:number|null;
2958
- maxRange?:number|null;
2959
- minorTicksVisible?:boolean|null;
2960
- majorTicksVisible?:boolean|null;
2961
- minorTickCount?:number|null;
2962
- gapBetweenMajorTicks?:number|null;
2963
- majorTickLocations?:Array<number>|null;
2964
- tickLabelAngle?:number|null;
2965
- invert?:boolean|null;
2966
- isTimeAxis?:boolean|null;
2967
-
2968
- constructor();
2969
- }
2970
-
2971
- export class FigureFetchError {
2972
- error:object;
2973
- errors:Array<string>;
2974
-
2975
- protected constructor();
2976
- }
2977
-
2978
- /**
2979
- * Helper class to manage snapshots and deltas and keep not only a contiguous JS array of data per column in the
2980
- * underlying table, but also support a mapping function to let client code translate data in some way for display and
2981
- * keep that cached as well.
2982
- */
2983
- export class ChartData {
2984
- constructor(table:dh.Table);
2985
-
2986
- update(tableData:dh.SubscriptionTableData):void;
2987
- getColumn(columnName:string, mappingFunc:(arg0:any)=>any, currentUpdate:dh.TableData):Array<any>;
2988
- /**
2989
- * Removes some column from the cache, avoiding extra computation on incoming events, and possibly freeing some
2990
- * memory. If this pair of column name and map function are requested again, it will be recomputed from scratch.
2991
- */
2992
- removeColumn(columnName:string, mappingFunc:(arg0:any)=>any):void;
2993
- }
2994
-
2995
- export class SeriesDataSourceException {
2996
- protected constructor();
2997
-
2998
- get source():SeriesDataSource;
2999
- get message():string;
3000
- }
2847
+ * @return String
2848
+ */
2849
+ readonly formatPattern?:string|null;
2850
+ readonly gapBetweenMajorTicks?:number|null;
3001
2851
 
3002
- /**
3003
- * Provide the details for a chart.
3004
- */
3005
- export class Chart implements dh.HasEventHandling {
3006
2852
  /**
3007
- * a new series was added to this chart as part of a multi-series. The series instance is the detail for this event.
2853
+ * Indicates that this axis is only `widthInPixels` wide, so any extra data can be downsampled out, if this can be
2854
+ * done losslessly. The second two arguments represent the current zoom range of this axis, and if provided, most of
2855
+ * the data outside of this range will be filtered out automatically and the visible width mapped to that range.
2856
+ * When the UI zooms, pans, or resizes, this method should be called again to update these three values to ensure
2857
+ * that data is correct and current.
2858
+ * @param pixelCount -
2859
+ * @param min -
2860
+ * @param max -
3008
2861
  */
3009
- static readonly EVENT_SERIES_ADDED:string;
2862
+ range(pixelCount?:number|undefined|null, min?:unknown|undefined|null, max?:unknown|undefined|null):void;
2863
+ get tickLabelAngle():number;
2864
+ get labelFont():string;
2865
+ get color():string;
2866
+ get invert():boolean;
2867
+ get log():boolean;
2868
+ get maxRange():number;
3010
2869
  /**
3011
- * The title of the chart.
2870
+ * The label for this axis.
3012
2871
  * @return String
3013
2872
  */
3014
- readonly title?:string|null;
3015
-
3016
- protected constructor();
3017
-
3018
- addEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):()=>void;
3019
- nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<CustomEvent<T>>;
3020
- hasListeners(name:string):boolean;
3021
- removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
3022
- get column():number;
3023
- get showLegend():boolean;
2873
+ get label():string;
2874
+ get timeAxis():boolean;
3024
2875
  /**
3025
- * The axes used in this chart.
3026
- * @return dh.plot.Axis
2876
+ * The type for this axis, indicating how it will be drawn. See <b>AxisType</b> enum for more details.
2877
+ * @return int
3027
2878
  */
3028
- get axes():Axis[];
3029
- get is3d():boolean;
3030
- get titleFont():string;
3031
- get colspan():number;
3032
- get titleColor():string;
3033
- get series():Series[];
3034
- get rowspan():number;
2879
+ get type():AxisTypeType;
2880
+ get minorTicksVisible():boolean;
2881
+ get minorTickCount():number;
2882
+ get majorTickLocations():number[];
2883
+ get majorTicksVisible():boolean;
2884
+ get ticksFont():string;
3035
2885
  /**
3036
- * The type of this chart, see <b>ChartType</b> enum for more details.
2886
+ * The unique id for this axis.
2887
+ * @return String
2888
+ */
2889
+ get id():string;
2890
+ /**
2891
+ * The position for this axis. See <b>AxisPosition</b> enum for more details.
3037
2892
  * @return int
3038
2893
  */
3039
- get chartType():ChartTypeType;
3040
- get row():number;
3041
- get legendColor():string;
3042
- get legendFont():string;
3043
- get multiSeries():MultiSeries[];
3044
- }
3045
-
3046
- export class SourceDescriptor {
3047
- axis:AxisDescriptor;
3048
- table:dh.Table;
3049
- columnName:string;
3050
- type:string;
3051
-
3052
- constructor();
3053
- }
3054
-
3055
- export class DownsampleOptions {
2894
+ get position():AxisPositionType;
3056
2895
  /**
3057
- * Max number of items in the series before DEFAULT will not attempt to load the series without downsampling. Above
3058
- * this size if downsample fails or is not applicable, the series won't be loaded unless DISABLE is passed to
3059
- * series.subscribe().
2896
+ * The calendar with the business hours and holidays to transform plot data against. Defaults to null, or no
2897
+ * transform.
2898
+ * @return dh.calendar.BusinessCalendar
3060
2899
  */
3061
- static MAX_SERIES_SIZE:number;
2900
+ get businessCalendar():dh.calendar.BusinessCalendar;
3062
2901
  /**
3063
- * Max number of items in the series where the subscription will be allowed at all. Above this limit, even with
3064
- * downsampling disabled, the series will not load data.
2902
+ * The type for this axis. See <b>AxisFormatType</b> enum for more details.
2903
+ * @return int
3065
2904
  */
3066
- static MAX_SUBSCRIPTION_SIZE:number;
2905
+ get formatType():AxisFormatTypeType;
2906
+ get minRange():number;
2907
+ }
2908
+ export interface OneClick {
2909
+ setValueForColumn(columnName:string, value:any):void;
2910
+ getValueForColumn(columName:string):any;
2911
+ get requireAllFiltersToDisplay():boolean;
2912
+ get columns():dh.Column[];
2913
+ }
2914
+ /**
2915
+ * Describes a template that will be used to make new series instances when a new table added to a plotBy.
2916
+ */
2917
+ export interface MultiSeries {
3067
2918
  /**
3068
- * Flag to let the API decide what data will be available, based on the nature of the data, the series, and how the
3069
- * axes are configured.
2919
+ * The name for this multi-series.
2920
+ * @return String
3070
2921
  */
3071
- static readonly DEFAULT:DownsampleOptions;
2922
+ get name():string;
3072
2923
  /**
3073
- * Flat to entirely disable downsampling, and force all data to load, no matter how many items that would be, up to
3074
- * the limit of MAX_SUBSCRIPTION_SIZE.
2924
+ * The plotting style to use for the series that will be created. See <b>SeriesPlotStyle</b> enum for more details.
2925
+ * @return int
3075
2926
  */
3076
- static readonly DISABLE:DownsampleOptions;
3077
-
3078
- protected constructor();
2927
+ get plotStyle():SeriesPlotStyleType;
3079
2928
  }
3080
2929
 
3081
2930
  /**
@@ -3167,35 +3016,179 @@ export namespace dh.plot {
3167
3016
  */
3168
3017
  close():void;
3169
3018
  /**
3170
- * The charts to draw.
3171
- * @return dh.plot.Chart
3019
+ * The charts to draw.
3020
+ * @return dh.plot.Chart
3021
+ */
3022
+ get charts():Chart[];
3023
+ get updateInterval():number;
3024
+ get titleColor():string;
3025
+ get titleFont():string;
3026
+ get rows():number;
3027
+ get cols():number;
3028
+ get errors():Array<string>;
3029
+ /**
3030
+ * Listen for events on this object.
3031
+ * @param name - the name of the event to listen for
3032
+ * @param callback - a function to call when the event occurs
3033
+ * @return Returns a cleanup function.
3034
+ * @typeParam T - the type of the data that the event will provide
3035
+ */
3036
+ addEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):()=>void;
3037
+ nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<CustomEvent<T>>;
3038
+ hasListeners(name:string):boolean;
3039
+ /**
3040
+ * Removes an event listener added to this table.
3041
+ * @param name -
3042
+ * @param callback -
3043
+ * @return
3044
+ * @typeParam T -
3045
+ */
3046
+ removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
3047
+ static create(config:FigureDescriptor):Promise<Figure>;
3048
+ }
3049
+
3050
+ /**
3051
+ * Helper class to manage snapshots and deltas and keep not only a contiguous JS array of data per column in the
3052
+ * underlying table, but also support a mapping function to let client code translate data in some way for display and
3053
+ * keep that cached as well.
3054
+ */
3055
+ export class ChartData {
3056
+ constructor(table:dh.Table);
3057
+
3058
+ update(tableData:dh.SubscriptionTableData):void;
3059
+ getColumn(columnName:string, mappingFunc:(arg0:any)=>any, currentUpdate:dh.TableData):Array<any>;
3060
+ /**
3061
+ * Removes some column from the cache, avoiding extra computation on incoming events, and possibly freeing some
3062
+ * memory. If this pair of column name and map function are requested again, it will be recomputed from scratch.
3063
+ */
3064
+ removeColumn(columnName:string, mappingFunc:(arg0:any)=>any):void;
3065
+ }
3066
+
3067
+ export class ChartDescriptor {
3068
+ colspan?:number|null;
3069
+ rowspan?:number|null;
3070
+ series:Array<SeriesDescriptor>;
3071
+ axes:Array<AxisDescriptor>;
3072
+ chartType:string;
3073
+ title?:string|null;
3074
+ titleFont?:string|null;
3075
+ titleColor?:string|null;
3076
+ showLegend?:boolean|null;
3077
+ legendFont?:string|null;
3078
+ legendColor?:string|null;
3079
+ is3d?:boolean|null;
3080
+
3081
+ constructor();
3082
+ }
3083
+
3084
+ export class DownsampleOptions {
3085
+ /**
3086
+ * Max number of items in the series before DEFAULT will not attempt to load the series without downsampling. Above
3087
+ * this size if downsample fails or is not applicable, the series won't be loaded unless DISABLE is passed to
3088
+ * series.subscribe().
3089
+ */
3090
+ static MAX_SERIES_SIZE:number;
3091
+ /**
3092
+ * Max number of items in the series where the subscription will be allowed at all. Above this limit, even with
3093
+ * downsampling disabled, the series will not load data.
3094
+ */
3095
+ static MAX_SUBSCRIPTION_SIZE:number;
3096
+ /**
3097
+ * Flag to let the API decide what data will be available, based on the nature of the data, the series, and how the
3098
+ * axes are configured.
3099
+ */
3100
+ static readonly DEFAULT:DownsampleOptions;
3101
+ /**
3102
+ * Flat to entirely disable downsampling, and force all data to load, no matter how many items that would be, up to
3103
+ * the limit of MAX_SUBSCRIPTION_SIZE.
3104
+ */
3105
+ static readonly DISABLE:DownsampleOptions;
3106
+
3107
+ protected constructor();
3108
+ }
3109
+
3110
+ export class SeriesDataSourceException {
3111
+ protected constructor();
3112
+
3113
+ get source():SeriesDataSource;
3114
+ get message():string;
3115
+ }
3116
+
3117
+ export class AxisDescriptor {
3118
+ formatType:string;
3119
+ type:string;
3120
+ position:string;
3121
+ log?:boolean|null;
3122
+ label?:string|null;
3123
+ labelFont?:string|null;
3124
+ ticksFont?:string|null;
3125
+ formatPattern?:string|null;
3126
+ color?:string|null;
3127
+ minRange?:number|null;
3128
+ maxRange?:number|null;
3129
+ minorTicksVisible?:boolean|null;
3130
+ majorTicksVisible?:boolean|null;
3131
+ minorTickCount?:number|null;
3132
+ gapBetweenMajorTicks?:number|null;
3133
+ majorTickLocations?:Array<number>|null;
3134
+ tickLabelAngle?:number|null;
3135
+ invert?:boolean|null;
3136
+ isTimeAxis?:boolean|null;
3137
+
3138
+ constructor();
3139
+ }
3140
+
3141
+ export class SourceDescriptor {
3142
+ axis:AxisDescriptor;
3143
+ table:dh.Table;
3144
+ columnName:string;
3145
+ type:string;
3146
+
3147
+ constructor();
3148
+ }
3149
+
3150
+ /**
3151
+ * Provide the details for a chart.
3152
+ */
3153
+ export class Chart implements dh.HasEventHandling {
3154
+ /**
3155
+ * a new series was added to this chart as part of a multi-series. The series instance is the detail for this event.
3172
3156
  */
3173
- get charts():Chart[];
3174
- get updateInterval():number;
3175
- get titleColor():string;
3176
- get titleFont():string;
3177
- get rows():number;
3178
- get cols():number;
3179
- get errors():Array<string>;
3157
+ static readonly EVENT_SERIES_ADDED:string;
3180
3158
  /**
3181
- * Listen for events on this object.
3182
- * @param name - the name of the event to listen for
3183
- * @param callback - a function to call when the event occurs
3184
- * @return Returns a cleanup function.
3185
- * @typeParam T - the type of the data that the event will provide
3159
+ * The title of the chart.
3160
+ * @return String
3186
3161
  */
3162
+ readonly title?:string|null;
3163
+
3164
+ protected constructor();
3165
+
3187
3166
  addEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):()=>void;
3188
3167
  nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<CustomEvent<T>>;
3189
3168
  hasListeners(name:string):boolean;
3169
+ removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
3170
+ get column():number;
3171
+ get showLegend():boolean;
3190
3172
  /**
3191
- * Removes an event listener added to this table.
3192
- * @param name -
3193
- * @param callback -
3194
- * @return
3195
- * @typeParam T -
3173
+ * The axes used in this chart.
3174
+ * @return dh.plot.Axis
3196
3175
  */
3197
- removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
3198
- static create(config:FigureDescriptor):Promise<Figure>;
3176
+ get axes():Axis[];
3177
+ get is3d():boolean;
3178
+ get titleFont():string;
3179
+ get colspan():number;
3180
+ get titleColor():string;
3181
+ get series():Series[];
3182
+ get rowspan():number;
3183
+ /**
3184
+ * The type of this chart, see <b>ChartType</b> enum for more details.
3185
+ * @return int
3186
+ */
3187
+ get chartType():ChartTypeType;
3188
+ get row():number;
3189
+ get legendColor():string;
3190
+ get legendFont():string;
3191
+ get multiSeries():MultiSeries[];
3199
3192
  }
3200
3193
 
3201
3194
  export class FigureSourceException {
@@ -3205,23 +3198,6 @@ export namespace dh.plot {
3205
3198
  protected constructor();
3206
3199
  }
3207
3200
 
3208
- /**
3209
- * A descriptor used with JsFigureFactory.create to create a figure from JS.
3210
- */
3211
- export class FigureDescriptor {
3212
- title?:string|null;
3213
- titleFont?:string|null;
3214
- titleColor?:string|null;
3215
- isResizable?:boolean|null;
3216
- isDefaultTheme?:boolean|null;
3217
- updateInterval?:number|null;
3218
- cols?:number|null;
3219
- rows?:number|null;
3220
- charts:Array<ChartDescriptor>;
3221
-
3222
- constructor();
3223
- }
3224
-
3225
3201
  export class SeriesDescriptor {
3226
3202
  plotStyle:string;
3227
3203
  name?:string|null;
@@ -3241,11 +3217,45 @@ export namespace dh.plot {
3241
3217
  constructor();
3242
3218
  }
3243
3219
 
3220
+ export class FigureFetchError {
3221
+ error:object;
3222
+ errors:Array<string>;
3244
3223
 
3245
- type AxisFormatTypeType = number;
3246
- export class AxisFormatType {
3247
- static readonly CATEGORY:AxisFormatTypeType;
3248
- static readonly NUMBER:AxisFormatTypeType;
3224
+ protected constructor();
3225
+ }
3226
+
3227
+ /**
3228
+ * A descriptor used with JsFigureFactory.create to create a figure from JS.
3229
+ */
3230
+ export class FigureDescriptor {
3231
+ title?:string|null;
3232
+ titleFont?:string|null;
3233
+ titleColor?:string|null;
3234
+ isResizable?:boolean|null;
3235
+ isDefaultTheme?:boolean|null;
3236
+ updateInterval?:number|null;
3237
+ cols?:number|null;
3238
+ rows?:number|null;
3239
+ charts:Array<ChartDescriptor>;
3240
+
3241
+ constructor();
3242
+ }
3243
+
3244
+
3245
+ type SeriesPlotStyleType = number;
3246
+ export class SeriesPlotStyle {
3247
+ static readonly BAR:SeriesPlotStyleType;
3248
+ static readonly STACKED_BAR:SeriesPlotStyleType;
3249
+ static readonly LINE:SeriesPlotStyleType;
3250
+ static readonly AREA:SeriesPlotStyleType;
3251
+ static readonly STACKED_AREA:SeriesPlotStyleType;
3252
+ static readonly PIE:SeriesPlotStyleType;
3253
+ static readonly HISTOGRAM:SeriesPlotStyleType;
3254
+ static readonly OHLC:SeriesPlotStyleType;
3255
+ static readonly SCATTER:SeriesPlotStyleType;
3256
+ static readonly STEP:SeriesPlotStyleType;
3257
+ static readonly ERROR_BAR:SeriesPlotStyleType;
3258
+ static readonly TREEMAP:SeriesPlotStyleType;
3249
3259
  }
3250
3260
 
3251
3261
  type AxisPositionType = number;
@@ -3272,32 +3282,6 @@ export namespace dh.plot {
3272
3282
  static readonly TREEMAP:ChartTypeType;
3273
3283
  }
3274
3284
 
3275
- type AxisTypeType = number;
3276
- export class AxisType {
3277
- static readonly X:AxisTypeType;
3278
- static readonly Y:AxisTypeType;
3279
- static readonly SHAPE:AxisTypeType;
3280
- static readonly SIZE:AxisTypeType;
3281
- static readonly LABEL:AxisTypeType;
3282
- static readonly COLOR:AxisTypeType;
3283
- }
3284
-
3285
- type SeriesPlotStyleType = number;
3286
- export class SeriesPlotStyle {
3287
- static readonly BAR:SeriesPlotStyleType;
3288
- static readonly STACKED_BAR:SeriesPlotStyleType;
3289
- static readonly LINE:SeriesPlotStyleType;
3290
- static readonly AREA:SeriesPlotStyleType;
3291
- static readonly STACKED_AREA:SeriesPlotStyleType;
3292
- static readonly PIE:SeriesPlotStyleType;
3293
- static readonly HISTOGRAM:SeriesPlotStyleType;
3294
- static readonly OHLC:SeriesPlotStyleType;
3295
- static readonly SCATTER:SeriesPlotStyleType;
3296
- static readonly STEP:SeriesPlotStyleType;
3297
- static readonly ERROR_BAR:SeriesPlotStyleType;
3298
- static readonly TREEMAP:SeriesPlotStyleType;
3299
- }
3300
-
3301
3285
  /**
3302
3286
  * This enum describes the source it is in, and how this aspect of the data in the series should be used to render the
3303
3287
  * item. For example, a point in a error-bar plot might have a X value, three Y values (Y, Y_LOW, Y_HIGH), and some
@@ -3327,10 +3311,35 @@ export namespace dh.plot {
3327
3311
  static readonly HOVER_TEXT:SourceTypeType;
3328
3312
  }
3329
3313
 
3314
+ type AxisFormatTypeType = number;
3315
+ export class AxisFormatType {
3316
+ static readonly CATEGORY:AxisFormatTypeType;
3317
+ static readonly NUMBER:AxisFormatTypeType;
3318
+ }
3319
+
3320
+ type AxisTypeType = number;
3321
+ export class AxisType {
3322
+ static readonly X:AxisTypeType;
3323
+ static readonly Y:AxisTypeType;
3324
+ static readonly SHAPE:AxisTypeType;
3325
+ static readonly SIZE:AxisTypeType;
3326
+ static readonly LABEL:AxisTypeType;
3327
+ static readonly COLOR:AxisTypeType;
3328
+ }
3329
+
3330
3330
  }
3331
3331
 
3332
3332
  export namespace dh.lsp {
3333
3333
 
3334
+ export class SignatureInformation {
3335
+ label:string;
3336
+ documentation:MarkupContent;
3337
+ parameters:Array<ParameterInformation>;
3338
+ activeParameter:number;
3339
+
3340
+ constructor();
3341
+ }
3342
+
3334
3343
  export class Range {
3335
3344
  start:Position;
3336
3345
  end:Position;
@@ -3340,19 +3349,24 @@ export namespace dh.lsp {
3340
3349
  isInside(innerStart:Position, innerEnd:Position):boolean;
3341
3350
  }
3342
3351
 
3343
- export class CompletionItem {
3352
+ export class ParameterInformation {
3344
3353
  label:string;
3345
- kind:number;
3346
- detail:string;
3347
3354
  documentation:MarkupContent;
3348
- deprecated:boolean;
3349
- preselect:boolean;
3350
- textEdit:TextEdit;
3351
- sortText:string;
3352
- filterText:string;
3353
- insertTextFormat:number;
3354
- additionalTextEdits:Array<TextEdit>;
3355
- commitCharacters:Array<string>;
3355
+
3356
+ constructor();
3357
+ }
3358
+
3359
+ export class TextEdit {
3360
+ range:Range;
3361
+ text:string;
3362
+
3363
+ constructor();
3364
+ }
3365
+
3366
+ export class TextDocumentContentChangeEvent {
3367
+ range:Range;
3368
+ rangeLength:number;
3369
+ text:string;
3356
3370
 
3357
3371
  constructor();
3358
3372
  }
@@ -3370,20 +3384,6 @@ export namespace dh.lsp {
3370
3384
  copy():Position;
3371
3385
  }
3372
3386
 
3373
- export class ParameterInformation {
3374
- label:string;
3375
- documentation:MarkupContent;
3376
-
3377
- constructor();
3378
- }
3379
-
3380
- export class TextEdit {
3381
- range:Range;
3382
- text:string;
3383
-
3384
- constructor();
3385
- }
3386
-
3387
3387
  export class Hover {
3388
3388
  contents:MarkupContent;
3389
3389
  range:Range;
@@ -3398,19 +3398,19 @@ export namespace dh.lsp {
3398
3398
  constructor();
3399
3399
  }
3400
3400
 
3401
- export class TextDocumentContentChangeEvent {
3402
- range:Range;
3403
- rangeLength:number;
3404
- text:string;
3405
-
3406
- constructor();
3407
- }
3408
-
3409
- export class SignatureInformation {
3401
+ export class CompletionItem {
3410
3402
  label:string;
3403
+ kind:number;
3404
+ detail:string;
3411
3405
  documentation:MarkupContent;
3412
- parameters:Array<ParameterInformation>;
3413
- activeParameter:number;
3406
+ deprecated:boolean;
3407
+ preselect:boolean;
3408
+ textEdit:TextEdit;
3409
+ sortText:string;
3410
+ filterText:string;
3411
+ insertTextFormat:number;
3412
+ additionalTextEdits:Array<TextEdit>;
3413
+ commitCharacters:Array<string>;
3414
3414
 
3415
3415
  constructor();
3416
3416
  }
@@ -3419,22 +3419,6 @@ export namespace dh.lsp {
3419
3419
 
3420
3420
  export namespace dh.calendar {
3421
3421
 
3422
- export interface BusinessPeriod {
3423
- get close():string;
3424
- get open():string;
3425
- }
3426
- export interface Holiday {
3427
- /**
3428
- * The date of the Holiday.
3429
- * @return {@link dh.LocalDateWrapper}
3430
- */
3431
- get date():dh.LocalDateWrapper;
3432
- /**
3433
- * The business periods that are open on the holiday.
3434
- * @return dh.calendar.BusinessPeriod
3435
- */
3436
- get businessPeriods():Array<BusinessPeriod>;
3437
- }
3438
3422
  /**
3439
3423
  * Defines a calendar with business hours and holidays.
3440
3424
  */
@@ -3465,6 +3449,22 @@ export namespace dh.calendar {
3465
3449
  */
3466
3450
  get businessPeriods():Array<BusinessPeriod>;
3467
3451
  }
3452
+ export interface Holiday {
3453
+ /**
3454
+ * The date of the Holiday.
3455
+ * @return {@link dh.LocalDateWrapper}
3456
+ */
3457
+ get date():dh.LocalDateWrapper;
3458
+ /**
3459
+ * The business periods that are open on the holiday.
3460
+ * @return dh.calendar.BusinessPeriod
3461
+ */
3462
+ get businessPeriods():Array<BusinessPeriod>;
3463
+ }
3464
+ export interface BusinessPeriod {
3465
+ get close():string;
3466
+ get open():string;
3467
+ }
3468
3468
 
3469
3469
  type DayOfWeekType = string;
3470
3470
  export class DayOfWeek {