This is an automated email from the ASF dual-hosted git repository.
github-merge-queue[bot] pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/texera.git
The following commit(s) were added to refs/heads/main by this push:
new ba2667a225 refactor(frontend): remove the dead group-highlight streams
(#8687)
ba2667a225 is described below
commit ba2667a2259b6f5d7442979e5111d885ab57a4a5
Author: Xinyuan Lin <[email protected]>
AuthorDate: Sun Sep 27 02:11:04 2026 +0000
refactor(frontend): remove the dead group-highlight streams (#8687)
### What changes were proposed in this PR?
Deletes the group-highlight streams from `JointGraphWrapper`: the two
subjects and the `getJointGroupHighlightStream()` /
`getJointGroupUnhighlightStream()` getters. It also drops those streams
from the four `merge(...)` calls that subscribe to them: one in the
property editor, two in the workflow editor, and one in the operator
menu. There is no behaviour change: **+6/−54 lines**.
### History
| | |
| --- | --- |
| **Introduced by** | #754 (2020-12-11), "Added operator grouping
feature", for selecting operator groups on the canvas |
| **Usage removed by** | #3033 (2024-11-13), "Remove Operator Group". It
deleted the feature and every `.next()` on these subjects, but kept the
subjects, the getters and the subscribers |
It has been dead for nearly two years. Each dropped `merge(...)` operand
was a stream that never emits, so removing it changes nothing the
subscribers can observe. No production code calls `.next()` or
`.complete()` on either subject.
> Reviewer note: the other streams in those `merge(...)` calls are live
and unchanged. The only other edits are comments that still mentioned
groups. `joint-graph-wrapper.spec.ts` loses its one case, which asserted
that these streams stay silent when operators are highlighted.
### Any related issues, documentation, discussions?
Closes #8685
### How was this PR tested?
No new tests. The one removed case only covered the deleted getters.
From `frontend/`:
- `npx ng test --watch=false --include='**/joint-graph-wrapper.spec.ts'
--include='**/property-editor.component.spec.ts'
--include='**/workflow-editor.component.spec.ts'
--include='**/operator-menu.service.spec.ts'`: 4 files, 250 tests, all
pass.
- `yarn format:ci`: clean.
- `npx ng build`: success.
To re-check:
```
git grep -n -i "JointGroup" # no hits
```
### Was this PR authored or co-authored using generative AI tooling?
Generated-by: Claude Code (Claude Opus 5.5)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---
.../property-editor/property-editor.component.ts | 4 +---
.../workflow-editor/workflow-editor.component.ts | 16 ++++------------
.../service/operator-menu/operator-menu.service.ts | 7 +------
.../workflow-graph/model/joint-graph-wrapper.spec.ts | 14 --------------
.../workflow-graph/model/joint-graph-wrapper.ts | 19 -------------------
5 files changed, 6 insertions(+), 54 deletions(-)
diff --git
a/frontend/src/app/workspace/component/property-editor/property-editor.component.ts
b/frontend/src/app/workspace/component/property-editor/property-editor.component.ts
index af9312f69f..08be5974a9 100644
---
a/frontend/src/app/workspace/component/property-editor/property-editor.component.ts
+++
b/frontend/src/app/workspace/component/property-editor/property-editor.component.ts
@@ -261,14 +261,12 @@ export class PropertyEditorComponent implements OnInit,
OnDestroy, OnChanges {
*
* Displays the form of the highlighted operator if only one operator is
highlighted;
* Displays the form of the link breakpoint if only one link is highlighted;
- * hides the form if no operator/link is highlighted or multiple operators
and/or groups and/or links are highlighted.
+ * hides the form if no operator/link is highlighted or multiple operators
and/or links are highlighted.
*/
registerHighlightEventsHandler() {
merge(
this.workflowActionService.getJointGraphWrapper().getJointOperatorHighlightStream(),
this.workflowActionService.getJointGraphWrapper().getJointOperatorUnhighlightStream(),
-
this.workflowActionService.getJointGraphWrapper().getJointGroupHighlightStream(),
-
this.workflowActionService.getJointGraphWrapper().getJointGroupUnhighlightStream(),
this.workflowActionService.getJointGraphWrapper().getLinkHighlightStream(),
this.workflowActionService.getJointGraphWrapper().getLinkUnhighlightStream(),
this.workflowActionService.getJointGraphWrapper().getJointCommentBoxHighlightStream(),
diff --git
a/frontend/src/app/workspace/component/workflow-editor/workflow-editor.component.ts
b/frontend/src/app/workspace/component/workflow-editor/workflow-editor.component.ts
index e8b3e9f587..1fac6beeba 100644
---
a/frontend/src/app/workspace/component/workflow-editor/workflow-editor.component.ts
+++
b/frontend/src/app/workspace/component/workflow-editor/workflow-editor.component.ts
@@ -1010,12 +1010,8 @@ export class WorkflowEditorComponent implements OnInit,
AfterViewInit, OnDestroy
},
};
- // highlight on OperatorHighlightStream or GroupHighlightStream or
CommentBoxHighlightStream
- merge(
- this.wrapper.getJointOperatorHighlightStream(),
- this.wrapper.getJointGroupHighlightStream(),
- this.wrapper.getJointCommentBoxHighlightStream()
- )
+ // highlight on OperatorHighlightStream or CommentBoxHighlightStream
+ merge(this.wrapper.getJointOperatorHighlightStream(),
this.wrapper.getJointCommentBoxHighlightStream())
.pipe(untilDestroyed(this))
.subscribe(elementIDs =>
elementIDs.forEach(elementID => {
@@ -1023,12 +1019,8 @@ export class WorkflowEditorComponent implements OnInit,
AfterViewInit, OnDestroy
})
);
- // unhighlight on OperatorUnhighlightStream or GroupUnhighlightStream or
CommentBoxUnhighlightStream
- merge(
- this.wrapper.getJointOperatorUnhighlightStream(),
- this.wrapper.getJointGroupUnhighlightStream(),
- this.wrapper.getJointCommentBoxUnhighlightStream()
- )
+ // unhighlight on OperatorUnhighlightStream or CommentBoxUnhighlightStream
+ merge(this.wrapper.getJointOperatorUnhighlightStream(),
this.wrapper.getJointCommentBoxUnhighlightStream())
.pipe(untilDestroyed(this))
.subscribe(elementIDs =>
elementIDs.forEach(elementID => {
diff --git
a/frontend/src/app/workspace/service/operator-menu/operator-menu.service.ts
b/frontend/src/app/workspace/service/operator-menu/operator-menu.service.ts
index 1b800e9f7b..a5f9224a52 100644
--- a/frontend/src/app/workspace/service/operator-menu/operator-menu.service.ts
+++ b/frontend/src/app/workspace/service/operator-menu/operator-menu.service.ts
@@ -84,12 +84,7 @@ export class OperatorMenuService {
const jointGraphWrapper =
this.workflowActionService.getJointGraphWrapper();
const texeraGraph = this.workflowActionService.getTexeraGraph();
- merge(
- jointGraphWrapper.getJointOperatorHighlightStream(),
- jointGraphWrapper.getJointOperatorUnhighlightStream(),
- jointGraphWrapper.getJointGroupHighlightStream(),
- jointGraphWrapper.getJointGroupUnhighlightStream()
- )
+ merge(jointGraphWrapper.getJointOperatorHighlightStream(),
jointGraphWrapper.getJointOperatorUnhighlightStream())
.pipe(untilDestroyed(this))
.subscribe(() => {
this._highlightedOperators$.next(jointGraphWrapper.getCurrentHighlightedOperatorIDs());
diff --git
a/frontend/src/app/workspace/service/workflow-graph/model/joint-graph-wrapper.spec.ts
b/frontend/src/app/workspace/service/workflow-graph/model/joint-graph-wrapper.spec.ts
index 0ea0864881..b831727118 100644
---
a/frontend/src/app/workspace/service/workflow-graph/model/joint-graph-wrapper.spec.ts
+++
b/frontend/src/app/workspace/service/workflow-graph/model/joint-graph-wrapper.spec.ts
@@ -990,20 +990,6 @@ describe("JointGraphWrapperService", () => {
ports: [],
});
});
-
- it("exposes the group highlight streams, which operator highlighting does
not touch", () => {
- addOperators();
- const emitted: unknown[] = [];
- const onHighlight =
jointGraphWrapper.getJointGroupHighlightStream().subscribe(ids =>
emitted.push(ids));
- const onUnhighlight =
jointGraphWrapper.getJointGroupUnhighlightStream().subscribe(ids =>
emitted.push(ids));
-
- jointGraphWrapper.highlightOperators(mockScanPredicate.operatorID);
- jointGraphWrapper.unhighlightOperators(mockScanPredicate.operatorID);
-
- expect(emitted).toEqual([]);
- onHighlight.unsubscribe();
- onUnhighlight.unsubscribe();
- });
});
describe("workflow flags", () => {
diff --git
a/frontend/src/app/workspace/service/workflow-graph/model/joint-graph-wrapper.ts
b/frontend/src/app/workspace/service/workflow-graph/model/joint-graph-wrapper.ts
index 08eed79a15..ee1fd6a6fd 100644
---
a/frontend/src/app/workspace/service/workflow-graph/model/joint-graph-wrapper.ts
+++
b/frontend/src/app/workspace/service/workflow-graph/model/joint-graph-wrapper.ts
@@ -126,10 +126,6 @@ export class JointGraphWrapper {
private jointOperatorHighlightStream = new Subject<readonly string[]>();
// event stream of un-highlighting an operator
private jointOperatorUnhighlightStream = new Subject<readonly string[]>();
- // event stream of highlighting a group
- private jointGroupHighlightStream = new Subject<readonly string[]>();
- // event stream of un-highlighting a group
- private jointGroupUnhighlightStream = new Subject<readonly string[]>();
// event stream of highlighing a link
private jointLinkHighlightStream = new Subject<readonly string[]>();
// event stream of unhighlighing a link
@@ -494,21 +490,6 @@ export class JointGraphWrapper {
return
this.jointLinkUnhighlightStream.pipe(this.jointGraphContext.bufferWhileAsync);
}
- /**
- * Gets the event stream of an operator being dragged.
- */
- public getJointGroupHighlightStream(): Observable<readonly string[]> {
- return
this.jointGroupHighlightStream.pipe(this.jointGraphContext.bufferWhileAsync);
- }
-
- /**
- * Gets the event stream of a group being unhighlighted.
- * The group could be unhighlighted because it's deleted.
- */
- public getJointGroupUnhighlightStream(): Observable<readonly string[]> {
- return
this.jointGroupUnhighlightStream.asObservable().pipe(this.jointGraphContext.bufferWhileAsync);
- }
-
public getJointCommentBoxHighlightStream(): Observable<readonly string[]> {
return this.jointCommentBoxHighlightStream.asObservable();
}