Skip to content

Commit

Permalink
JS API should copy data for all columns, and should size consistently (
Browse files Browse the repository at this point in the history
  • Loading branch information
niloc132 committed Jan 18, 2022
1 parent 0374040 commit 146da02
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@
import io.deephaven.javascript.proto.dhinternal.io.deephaven.proto.table_pb_service.TableServiceClient;
import io.deephaven.javascript.proto.dhinternal.io.deephaven.proto.ticket_pb.Ticket;
import io.deephaven.web.client.api.barrage.BarrageUtils;
import io.deephaven.web.client.api.barrage.def.ColumnDefinition;
import io.deephaven.web.client.api.barrage.def.InitialTableDefinition;
import io.deephaven.web.client.api.barrage.stream.BiDiStream;
import io.deephaven.web.client.api.barrage.stream.ResponseStreamWrapper;
Expand Down Expand Up @@ -1244,8 +1245,8 @@ private void flush() {
result.or(bs2);
return result;
}).orElseThrow(() -> new IllegalStateException("Cannot call subscribe with zero subscriptions"));
String[] columnTypes = Arrays.stream(state.getAllColumns())
.map(Column::getType)
String[] columnTypes = Arrays.stream(state.getTableDef().getColumns())
.map(ColumnDefinition::getType)
.toArray(String[]::new);

state.setSubscribed(true);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import io.deephaven.javascript.proto.dhinternal.flatbuffers.ByteBuffer;
import io.deephaven.web.client.api.*;
import io.deephaven.web.client.api.barrage.BarrageUtils;
import io.deephaven.web.client.api.barrage.def.ColumnDefinition;
import io.deephaven.web.client.api.barrage.stream.ResponseStreamWrapper;
import io.deephaven.web.client.fu.JsLog;
import io.deephaven.web.client.state.ClientTableState;
Expand Down Expand Up @@ -248,8 +249,8 @@ public Promise<TableData> snapshot(JsRangeSet rows, Column[] columns) {
// TODO #1039 slice rows and drop columns
return copy.then(table -> {
final ClientTableState state = table.state();
String[] columnTypes = Arrays.stream(state.getAllColumns())
.map(Column::getType)
String[] columnTypes = Arrays.stream(state.getTableDef().getColumns())
.map(ColumnDefinition::getType)
.toArray(String[]::new);

final BitSet columnBitset = table.lastVisibleState().makeBitset(columns);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,8 @@ public ViewportData(RangeSet includedRows, Object[] dataColumns, JsArray<Column>
} else {
offset = -1;
}

// Clean data for requested columns, and provide format column data as well, if any
for (int i = 0; i < columns.length; i++) {
Column c = columns.getAt(i);
int index = c.getIndex();
Expand All @@ -78,6 +80,14 @@ public ViewportData(RangeSet includedRows, Object[] dataColumns, JsArray<Column>
data[c.getFormatStringColumnIndex()] = dataColumns[c.getFormatStringColumnIndex()];
}
}

// Handle row format column, if any
this.rowFormatColumn = rowFormatColumn;
if (rowFormatColumn != NO_ROW_FORMAT_COLUMN) {
data[rowFormatColumn] = dataColumns[rowFormatColumn];
}

// Grow all columns to match the size of the viewport, if necesssary
if (length < maxLength) {
for (int i = 0; i < data.length; i++) {
if (data[i] != null) {
Expand All @@ -87,10 +97,6 @@ public ViewportData(RangeSet includedRows, Object[] dataColumns, JsArray<Column>
}
}
}
this.rowFormatColumn = rowFormatColumn;
if (rowFormatColumn != NO_ROW_FORMAT_COLUMN) {
data[rowFormatColumn] = dataColumns[rowFormatColumn];
}

rows = new JsArray<>();
for (int i = 0; i < length; i++) {
Expand Down

0 comments on commit 146da02

Please sign in to comment.