Skip to content

Commit

Permalink
Close hierarchical/pandas widgets, avoid double-fetch
Browse files Browse the repository at this point in the history
  • Loading branch information
niloc132 committed Dec 12, 2023
1 parent 6eacec9 commit 95e99fd
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -766,7 +766,11 @@ public Promise<?> getObject(JsVariableDefinition definition) {
return getFigure(definition);
} else if (JsVariableType.PANDAS.equalsIgnoreCase(definition.getType())) {
return getWidget(definition)
.then(widget -> widget.getExportedObjects()[0].fetch());
.then(JsWidget::refetch)
.then(widget -> {
widget.close();
return widget.getExportedObjects()[0].fetch();
});
} else if (JsVariableType.PARTITIONEDTABLE.equalsIgnoreCase(definition.getType())) {
return getPartitionedTable(definition);
} else if (JsVariableType.HIERARCHICALTABLE.equalsIgnoreCase(definition.getType())) {
Expand All @@ -780,7 +784,7 @@ public Promise<?> getObject(JsVariableDefinition definition) {
JsLog.warn(
"TreeTable is now HierarchicalTable, fetching as a plain widget. To fetch as a HierarchicalTable use that as this type.");
}
return getWidget(definition);
return getWidget(definition).then(JsWidget::refetch);
}
}

Expand Down Expand Up @@ -911,12 +915,8 @@ public Promise<JsPartitionedTable> getPartitionedTable(JsVariableDefinition varD
.then(widget -> new JsPartitionedTable(this, widget).refetch());
}

public Promise<JsTreeTable> getTreeTable(JsVariableDefinition varDef) {
return getWidget(varDef).then(w -> Promise.resolve(new JsTreeTable(this, w)));
}

public Promise<JsTreeTable> getHierarchicalTable(JsVariableDefinition varDef) {
return getWidget(varDef).then(w -> Promise.resolve(new JsTreeTable(this, w)));
return getWidget(varDef).then(JsWidget::refetch).then(w -> Promise.resolve(new JsTreeTable(this, w)));
}

public Promise<JsFigure> getFigure(JsVariableDefinition varDef) {
Expand All @@ -926,13 +926,14 @@ public Promise<JsFigure> getFigure(JsVariableDefinition varDef) {
return whenServerReady("get a figure")
.then(server -> new JsFigure(this,
c -> {
getWidget(varDef).then(widget -> {
getWidget(varDef).then(JsWidget::refetch).then(widget -> {
FetchObjectResponse legacyResponse = new FetchObjectResponse();
legacyResponse.setData(widget.getDataAsU8());
legacyResponse.setType(widget.getType());
legacyResponse.setTypedExportIdsList(Arrays.stream(widget.getExportedObjects())
.map(JsWidgetExportedObject::typedTicket).toArray(TypedTicket[]::new));
c.apply(null, legacyResponse);
widget.close();
return null;
}, error -> {
c.apply(error, null);
Expand Down Expand Up @@ -960,7 +961,7 @@ public Promise<JsWidget> getWidget(JsVariableDefinition varDef) {

public Promise<JsWidget> getWidget(TypedTicket typedTicket) {
return whenServerReady("get a widget")
.then(response -> new JsWidget(this, typedTicket).refetch());
.then(response -> Promise.resolve(new JsWidget(this, typedTicket)));
}

public void registerSimpleReconnectable(HasLifecycle figure) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -130,12 +130,12 @@ public Promise<JsFigure> getFigure(String name) {
*/
public Promise<JsTreeTable> getTreeTable(String name) {
return connection.getVariableDefinition(name, JsVariableType.HIERARCHICALTABLE)
.then(connection::getTreeTable);
.then(connection::getHierarchicalTable);
}

public Promise<JsTreeTable> getHierarchicalTable(String name) {
return connection.getVariableDefinition(name, JsVariableType.HIERARCHICALTABLE)
.then(connection::getTreeTable);
.then(connection::getHierarchicalTable);
}

public Promise<?> getObject(@TsTypeRef(JsVariableDescriptor.class) JsPropertyMap<Object> definitionObject) {
Expand Down

0 comments on commit 95e99fd

Please sign in to comment.