From 04579878a6e78711cc490e1f1c26ed130af3306e Mon Sep 17 00:00:00 2001 From: Xinyuan Lin Date: Tue, 31 Mar 2026 16:40:08 -0700 Subject: [PATCH 01/14] init --- .../component/workflow-editor/workflow-editor.component.ts | 1 + .../service/validation/validation-workflow.service.ts | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) 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 f1532bf9a9d..42b6655a71d 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 @@ -1058,6 +1058,7 @@ export class WorkflowEditorComponent implements OnInit, AfterViewInit, OnDestroy allowMultiInput = portInfo?.allowMultiLinks ?? false; } } + allowMultiInput = true; return !(connectedLinksToTargetPort.length > 0 && !allowMultiInput); } diff --git a/frontend/src/app/workspace/service/validation/validation-workflow.service.ts b/frontend/src/app/workspace/service/validation/validation-workflow.service.ts index 93099888b21..e73bc36abdb 100644 --- a/frontend/src/app/workspace/service/validation/validation-workflow.service.ts +++ b/frontend/src/app/workspace/service/validation/validation-workflow.service.ts @@ -325,7 +325,9 @@ export class ValidationWorkflowService { for (let i = 0; i < operator.inputPorts.length; i++) { const port = operator.inputPorts[i]; const portNumInputs = numInputLinksByPort.get(port.portID) ?? 0; - if (port.allowMultiInputs) { + let allowMultiInput = port.allowMultiInputs; + allowMultiInput = true + if (allowMultiInput) { if (portNumInputs < 1) { satisfyInput = false; inputPortsViolationMessage += `${port.displayName ?? ""} requires at least 1 inputs, has ${portNumInputs}`; From cd43d9f514b0adf58c268edb3bf00f81e0816884 Mon Sep 17 00:00:00 2001 From: Xinyuan Lin Date: Tue, 31 Mar 2026 16:56:49 -0700 Subject: [PATCH 02/14] Update frontend/src/app/workspace/service/validation/validation-workflow.service.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Xinyuan Lin --- .../workspace/service/validation/validation-workflow.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/app/workspace/service/validation/validation-workflow.service.ts b/frontend/src/app/workspace/service/validation/validation-workflow.service.ts index e73bc36abdb..d22318c470a 100644 --- a/frontend/src/app/workspace/service/validation/validation-workflow.service.ts +++ b/frontend/src/app/workspace/service/validation/validation-workflow.service.ts @@ -326,7 +326,7 @@ export class ValidationWorkflowService { const port = operator.inputPorts[i]; const portNumInputs = numInputLinksByPort.get(port.portID) ?? 0; let allowMultiInput = port.allowMultiInputs; - allowMultiInput = true + allowMultiInput = true; if (allowMultiInput) { if (portNumInputs < 1) { satisfyInput = false; From e602ae8ba7848c67fe357752f2345cb7ae913300 Mon Sep 17 00:00:00 2001 From: Xinyuan Lin Date: Wed, 1 Apr 2026 00:27:20 -0700 Subject: [PATCH 03/14] fix test --- .../workflow-editor/workflow-editor.component.spec.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/app/workspace/component/workflow-editor/workflow-editor.component.spec.ts b/frontend/src/app/workspace/component/workflow-editor/workflow-editor.component.spec.ts index 161d217fd86..8048d3a487f 100644 --- a/frontend/src/app/workspace/component/workflow-editor/workflow-editor.component.spec.ts +++ b/frontend/src/app/workspace/component/workflow-editor/workflow-editor.component.spec.ts @@ -406,7 +406,7 @@ describe("WorkflowEditorComponent", () => { mockSentimentPredicate.operatorID, "input-0" ) - ).toBeFalse(); + ).toBeTrue(); // should still allow a link from scan to view result expect( @@ -439,7 +439,7 @@ describe("WorkflowEditorComponent", () => { mockResultPredicate.operatorID, "input-0" ) - ).toBeFalse(); + ).toBeTrue(); }); it("should validate operator connections with ports that allow multi-inputs correctly", () => { From 39ced05937ad7f4a8fd811f0f01d1a6afd76f695 Mon Sep 17 00:00:00 2001 From: Xinyuan Lin Date: Sat, 4 Apr 2026 15:08:51 -0700 Subject: [PATCH 04/14] update --- .../main/protobuf/org/apache/texera/amber/core/workflow.proto | 3 +-- .../org/apache/texera/amber/operator/dummy/DummyOpDesc.scala | 2 +- .../amber/operator/sklearn/testing/SklearnTestingOpDesc.scala | 1 - .../apache/texera/amber/operator/udf/java/JavaUDFOpDesc.scala | 2 +- .../operator/udf/python/DualInputPortsPythonUDFOpDescV2.scala | 3 +-- .../texera/amber/operator/udf/python/PythonUDFOpDescV2.scala | 2 +- .../org/apache/texera/amber/operator/udf/r/RUDFOpDesc.scala | 2 +- .../org/apache/texera/amber/operator/union/UnionOpDesc.scala | 2 +- .../component/workflow-editor/workflow-editor.component.ts | 1 - .../service/validation/validation-workflow.service.ts | 4 +--- 10 files changed, 8 insertions(+), 14 deletions(-) diff --git a/common/workflow-core/src/main/protobuf/org/apache/texera/amber/core/workflow.proto b/common/workflow-core/src/main/protobuf/org/apache/texera/amber/core/workflow.proto index 984536fca72..c5b2cb248ff 100644 --- a/common/workflow-core/src/main/protobuf/org/apache/texera/amber/core/workflow.proto +++ b/common/workflow-core/src/main/protobuf/org/apache/texera/amber/core/workflow.proto @@ -42,12 +42,11 @@ message GlobalPortIdentity{ message InputPort { PortIdentity id = 1 [(scalapb.field).no_box = true]; string displayName = 2; - bool allowMultiLinks = 3; + bool disallowMultiLinks = 3; repeated PortIdentity dependencies = 4; } - message OutputPort { enum OutputMode { // outputs complete result set snapshot for each update diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/dummy/DummyOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/dummy/DummyOpDesc.scala index c1ae1dd05fc..582d4d6d358 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/dummy/DummyOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/dummy/DummyOpDesc.scala @@ -44,7 +44,7 @@ class DummyOpDesc extends LogicalOp with PortDescriptor { ) } } else { - List(InputPort(PortIdentity(), allowMultiLinks = true)) + List(InputPort()) } val outputPortInfo = if (outputPorts != null) { outputPorts.zipWithIndex.map { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/sklearn/testing/SklearnTestingOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/sklearn/testing/SklearnTestingOpDesc.scala index df7d9336650..648283d7e4e 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/sklearn/testing/SklearnTestingOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/sklearn/testing/SklearnTestingOpDesc.scala @@ -92,7 +92,6 @@ class SklearnTestingOpDesc extends PythonOperatorDescriptor { PortIdentity(), "model", dependencies = List(PortIdentity(1)), - allowMultiLinks = true ), InputPort(PortIdentity(1), "data") ), diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/udf/java/JavaUDFOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/udf/java/JavaUDFOpDesc.scala index 5c452a6c1d6..bc1b98b4698 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/udf/java/JavaUDFOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/udf/java/JavaUDFOpDesc.scala @@ -148,7 +148,7 @@ class JavaUDFOpDesc extends LogicalOp { ) } } else { - List(InputPort(PortIdentity(), allowMultiLinks = true)) + List(InputPort()) } val outputPortInfo = if (outputPorts != null) { outputPorts.zipWithIndex.map { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/udf/python/DualInputPortsPythonUDFOpDescV2.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/udf/python/DualInputPortsPythonUDFOpDescV2.scala index 3f056c96055..4c4e3dc0098 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/udf/python/DualInputPortsPythonUDFOpDescV2.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/udf/python/DualInputPortsPythonUDFOpDescV2.scala @@ -137,11 +137,10 @@ class DualInputPortsPythonUDFOpDescV2 extends LogicalOp { "User-defined function operator in Python script", OperatorGroupConstants.PYTHON_GROUP, inputPorts = List( - InputPort(PortIdentity(), displayName = "model", allowMultiLinks = true), + InputPort(PortIdentity(), displayName = "model"), InputPort( PortIdentity(1), displayName = "tuples", - allowMultiLinks = true, dependencies = List(PortIdentity(0)) ) ), diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/udf/python/PythonUDFOpDescV2.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/udf/python/PythonUDFOpDescV2.scala index ef4da06cef9..24c30b23ad0 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/udf/python/PythonUDFOpDescV2.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/udf/python/PythonUDFOpDescV2.scala @@ -154,7 +154,7 @@ class PythonUDFOpDescV2 extends LogicalOp { ) } } else { - List(InputPort(PortIdentity(), allowMultiLinks = true)) + List(InputPort()) } val outputPortInfo = if (outputPorts != null) { outputPorts.zipWithIndex.map { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/udf/r/RUDFOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/udf/r/RUDFOpDesc.scala index 1a7aa938f77..dcd996fa3e1 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/udf/r/RUDFOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/udf/r/RUDFOpDesc.scala @@ -146,7 +146,7 @@ class RUDFOpDesc extends LogicalOp { ) } } else { - List(InputPort(PortIdentity(), allowMultiLinks = true)) + List(InputPort()) } val outputPortInfo = if (outputPorts != null) { outputPorts.zipWithIndex.map { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/union/UnionOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/union/UnionOpDesc.scala index a10a4e43004..4294732f608 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/union/UnionOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/union/UnionOpDesc.scala @@ -47,7 +47,7 @@ class UnionOpDesc extends LogicalOp { "Union", "Unions the output rows from multiple input operators", OperatorGroupConstants.SET_GROUP, - inputPorts = List(InputPort(PortIdentity(0), allowMultiLinks = true)), + inputPorts = List(InputPort()), outputPorts = List(OutputPort()) ) } 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 42b6655a71d..f1532bf9a9d 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 @@ -1058,7 +1058,6 @@ export class WorkflowEditorComponent implements OnInit, AfterViewInit, OnDestroy allowMultiInput = portInfo?.allowMultiLinks ?? false; } } - allowMultiInput = true; return !(connectedLinksToTargetPort.length > 0 && !allowMultiInput); } diff --git a/frontend/src/app/workspace/service/validation/validation-workflow.service.ts b/frontend/src/app/workspace/service/validation/validation-workflow.service.ts index d22318c470a..93099888b21 100644 --- a/frontend/src/app/workspace/service/validation/validation-workflow.service.ts +++ b/frontend/src/app/workspace/service/validation/validation-workflow.service.ts @@ -325,9 +325,7 @@ export class ValidationWorkflowService { for (let i = 0; i < operator.inputPorts.length; i++) { const port = operator.inputPorts[i]; const portNumInputs = numInputLinksByPort.get(port.portID) ?? 0; - let allowMultiInput = port.allowMultiInputs; - allowMultiInput = true; - if (allowMultiInput) { + if (port.allowMultiInputs) { if (portNumInputs < 1) { satisfyInput = false; inputPortsViolationMessage += `${port.displayName ?? ""} requires at least 1 inputs, has ${portNumInputs}`; From d073642e1cc8dfd8092f8861330e37d22622150f Mon Sep 17 00:00:00 2001 From: Xinyuan Lin Date: Sun, 5 Apr 2026 16:57:47 -0700 Subject: [PATCH 05/14] update --- .../org/apache/texera/amber/core/__init__.py | 2 +- .../texera/amber/operator/PortDescriptor.scala | 2 +- .../amber/operator/dummy/DummyOpDesc.scala | 2 +- .../operator/udf/java/JavaUDFOpDesc.scala | 2 +- .../udf/python/PythonUDFOpDescV2.scala | 2 +- .../amber/operator/udf/r/RUDFOpDesc.scala | 2 +- .../org/apache/texera/amber/core/workflow.ts | 18 +++++++++--------- .../mock-operator-metadata.data.ts | 2 +- .../types/execute-workflow.interface.ts | 2 +- .../types/operator-schema.interface.ts | 4 ++-- 10 files changed, 19 insertions(+), 19 deletions(-) diff --git a/amber/src/main/python/proto/org/apache/texera/amber/core/__init__.py b/amber/src/main/python/proto/org/apache/texera/amber/core/__init__.py index 6dbf282e193..2d21638c263 100644 --- a/amber/src/main/python/proto/org/apache/texera/amber/core/__init__.py +++ b/amber/src/main/python/proto/org/apache/texera/amber/core/__init__.py @@ -87,7 +87,7 @@ class GlobalPortIdentity(betterproto.Message): class InputPort(betterproto.Message): id: "PortIdentity" = betterproto.message_field(1) display_name: str = betterproto.string_field(2) - allow_multi_links: bool = betterproto.bool_field(3) + disallow_multi_links: bool = betterproto.bool_field(3) dependencies: List["PortIdentity"] = betterproto.message_field(4) diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/PortDescriptor.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/PortDescriptor.scala index 73f1ef26007..2d6763b1025 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/PortDescriptor.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/PortDescriptor.scala @@ -25,7 +25,7 @@ import org.apache.texera.amber.core.workflow.PartitionInfo case class PortDescription( portID: String, displayName: String, - allowMultiInputs: Boolean, + disallowMultiInputs: Boolean, isDynamicPort: Boolean, partitionRequirement: PartitionInfo, dependencies: List[Int] = List.empty diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/dummy/DummyOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/dummy/DummyOpDesc.scala index 582d4d6d358..4a2c4c48d54 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/dummy/DummyOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/dummy/DummyOpDesc.scala @@ -39,7 +39,7 @@ class DummyOpDesc extends LogicalOp with PortDescriptor { InputPort( PortIdentity(idx), displayName = portDesc.displayName, - allowMultiLinks = portDesc.allowMultiInputs, + disallowMultiLinks = portDesc.disallowMultiInputs, dependencies = portDesc.dependencies.map(idx => PortIdentity(idx)) ) } diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/udf/java/JavaUDFOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/udf/java/JavaUDFOpDesc.scala index bc1b98b4698..44cc54f3865 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/udf/java/JavaUDFOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/udf/java/JavaUDFOpDesc.scala @@ -143,7 +143,7 @@ class JavaUDFOpDesc extends LogicalOp { InputPort( PortIdentity(idx), displayName = portDesc.displayName, - allowMultiLinks = portDesc.allowMultiInputs, + disallowMultiLinks = portDesc.disallowMultiInputs, dependencies = portDesc.dependencies.map(idx => PortIdentity(idx)) ) } diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/udf/python/PythonUDFOpDescV2.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/udf/python/PythonUDFOpDescV2.scala index 24c30b23ad0..88e8846b994 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/udf/python/PythonUDFOpDescV2.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/udf/python/PythonUDFOpDescV2.scala @@ -149,7 +149,7 @@ class PythonUDFOpDescV2 extends LogicalOp { InputPort( PortIdentity(idx), displayName = portDesc.displayName, - allowMultiLinks = portDesc.allowMultiInputs, + disallowMultiLinks = portDesc.disallowMultiInputs, dependencies = portDesc.dependencies.map(idx => PortIdentity(idx)) ) } diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/udf/r/RUDFOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/udf/r/RUDFOpDesc.scala index dcd996fa3e1..17eb2570815 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/udf/r/RUDFOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/udf/r/RUDFOpDesc.scala @@ -141,7 +141,7 @@ class RUDFOpDesc extends LogicalOp { InputPort( PortIdentity(idx), displayName = portDesc.displayName, - allowMultiLinks = portDesc.allowMultiInputs, + disallowMultiLinks = portDesc.disallowMultiInputs, dependencies = portDesc.dependencies.map(idx => PortIdentity(idx)) ) } diff --git a/frontend/src/app/common/type/proto/org/apache/texera/amber/core/workflow.ts b/frontend/src/app/common/type/proto/org/apache/texera/amber/core/workflow.ts index 04371d42bf4..5b63451356b 100644 --- a/frontend/src/app/common/type/proto/org/apache/texera/amber/core/workflow.ts +++ b/frontend/src/app/common/type/proto/org/apache/texera/amber/core/workflow.ts @@ -24,7 +24,7 @@ export interface GlobalPortIdentity { export interface InputPort { id: PortIdentity | undefined; displayName: string; - allowMultiLinks: boolean; + disallowMultiLinks: boolean; dependencies: PortIdentity[]; } @@ -256,7 +256,7 @@ export const GlobalPortIdentity: MessageFns = { }; function createBaseInputPort(): InputPort { - return { id: undefined, displayName: "", allowMultiLinks: false, dependencies: [] }; + return { id: undefined, displayName: "", disallowMultiLinks: false, dependencies: [] }; } export const InputPort: MessageFns = { @@ -267,8 +267,8 @@ export const InputPort: MessageFns = { if (message.displayName !== "") { writer.uint32(18).string(message.displayName); } - if (message.allowMultiLinks !== false) { - writer.uint32(24).bool(message.allowMultiLinks); + if (message.disallowMultiLinks !== false) { + writer.uint32(24).bool(message.disallowMultiLinks); } for (const v of message.dependencies) { PortIdentity.encode(v!, writer.uint32(34).fork()).join(); @@ -302,7 +302,7 @@ export const InputPort: MessageFns = { break; } - message.allowMultiLinks = reader.bool(); + message.disallowMultiLinks = reader.bool(); continue; case 4: if (tag !== 34) { @@ -324,7 +324,7 @@ export const InputPort: MessageFns = { return { id: isSet(object.id) ? PortIdentity.fromJSON(object.id) : undefined, displayName: isSet(object.displayName) ? globalThis.String(object.displayName) : "", - allowMultiLinks: isSet(object.allowMultiLinks) ? globalThis.Boolean(object.allowMultiLinks) : false, + disallowMultiLinks: isSet(object.disallowMultiLinks) ? globalThis.Boolean(object.disallowMultiLinks) : false, dependencies: globalThis.Array.isArray(object?.dependencies) ? object.dependencies.map((e: any) => PortIdentity.fromJSON(e)) : [], @@ -339,8 +339,8 @@ export const InputPort: MessageFns = { if (message.displayName !== "") { obj.displayName = message.displayName; } - if (message.allowMultiLinks !== false) { - obj.allowMultiLinks = message.allowMultiLinks; + if (message.disallowMultiLinks !== false) { + obj.disallowMultiLinks = message.disallowMultiLinks; } if (message.dependencies?.length) { obj.dependencies = message.dependencies.map((e) => PortIdentity.toJSON(e)); @@ -355,7 +355,7 @@ export const InputPort: MessageFns = { const message = createBaseInputPort(); message.id = (object.id !== undefined && object.id !== null) ? PortIdentity.fromPartial(object.id) : undefined; message.displayName = object.displayName ?? ""; - message.allowMultiLinks = object.allowMultiLinks ?? false; + message.disallowMultiLinks = object.disallowMultiLinks ?? false; message.dependencies = object.dependencies?.map((e) => PortIdentity.fromPartial(e)) || []; return message; }, diff --git a/frontend/src/app/workspace/service/operator-metadata/mock-operator-metadata.data.ts b/frontend/src/app/workspace/service/operator-metadata/mock-operator-metadata.data.ts index 3d698b84d17..83c80938ca6 100644 --- a/frontend/src/app/workspace/service/operator-metadata/mock-operator-metadata.data.ts +++ b/frontend/src/app/workspace/service/operator-metadata/mock-operator-metadata.data.ts @@ -264,7 +264,7 @@ export const mockUnionSchema: OperatorSchema = { userFriendlyName: "Union", operatorDescription: "Union multiple inputs", operatorGroupName: "Analysis", - inputPorts: [{ allowMultiLinks: true }], + inputPorts: [{ disallowMultiLinks: true }], outputPorts: [{}], }, operatorVersion: "union1", diff --git a/frontend/src/app/workspace/types/execute-workflow.interface.ts b/frontend/src/app/workspace/types/execute-workflow.interface.ts index 1633e4bfdf7..9b6edb00b29 100644 --- a/frontend/src/app/workspace/types/execute-workflow.interface.ts +++ b/frontend/src/app/workspace/types/execute-workflow.interface.ts @@ -35,7 +35,7 @@ export interface InputPort extends Readonly<{ id: PortIdentity; displayName: string; - allowMultiLinks: boolean; + disallowMultiLinks: boolean; dependencies: ReadonlyArray; }> {} diff --git a/frontend/src/app/workspace/types/operator-schema.interface.ts b/frontend/src/app/workspace/types/operator-schema.interface.ts index c02911568af..c0356c1eaba 100644 --- a/frontend/src/app/workspace/types/operator-schema.interface.ts +++ b/frontend/src/app/workspace/types/operator-schema.interface.ts @@ -31,7 +31,7 @@ import { CustomJSONSchema7 } from "./custom-json-schema.interface"; export interface InputPortInfo extends Readonly<{ displayName?: string; - allowMultiLinks?: boolean; + disallowMultiLinks?: boolean; dependencies?: { id: number; internal: boolean }[]; }> {} @@ -107,7 +107,7 @@ export function areOperatorSchemasEqual(schema1: OperatorSchema, schema2: Operat const port1 = meta1.inputPorts[i]; const port2 = meta2.inputPorts[i]; - if (port1.displayName !== port2.displayName || port1.allowMultiLinks !== port2.allowMultiLinks) { + if (port1.displayName !== port2.displayName || port1.disallowMultiLinks !== port2.disallowMultiLinks) { return false; } } From 1c1f97bce51bd2f50f593ce56231c33872e44cc6 Mon Sep 17 00:00:00 2001 From: Xinyuan Lin Date: Sun, 5 Apr 2026 17:17:25 -0700 Subject: [PATCH 06/14] update --- .../workflow-editor/workflow-editor.component.ts | 6 +++--- .../service/validation/validation-workflow.service.ts | 10 +++++----- .../workflow-graph/model/workflow-action.service.ts | 8 ++++---- .../workflow-graph/util/workflow-util.service.ts | 4 ++-- .../app/workspace/types/workflow-common.interface.ts | 2 +- 5 files changed, 15 insertions(+), 15 deletions(-) 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 f1532bf9a9d..ef92eb8e1b9 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 @@ -1046,7 +1046,7 @@ export class WorkflowEditorComponent implements OnInit, AfterViewInit, OnDestroy return false; } - let allowMultiInput = false; + let disallowMultiInput = false; if (this.workflowActionService.getTexeraGraph().hasOperator(targetCellID)) { const portIndex = this.workflowActionService .getTexeraGraph() @@ -1055,10 +1055,10 @@ export class WorkflowEditorComponent implements OnInit, AfterViewInit, OnDestroy if (portIndex >= 0) { const portInfo = this.dynamicSchemaService.getDynamicSchema(targetCellID).additionalMetadata.inputPorts[portIndex]; - allowMultiInput = portInfo?.allowMultiLinks ?? false; + disallowMultiInput = portInfo?.disallowMultiLinks ?? false; } } - return !(connectedLinksToTargetPort.length > 0 && !allowMultiInput); + return !(connectedLinksToTargetPort.length > 0 && disallowMultiInput); } /** diff --git a/frontend/src/app/workspace/service/validation/validation-workflow.service.ts b/frontend/src/app/workspace/service/validation/validation-workflow.service.ts index 93099888b21..92ebb88bb22 100644 --- a/frontend/src/app/workspace/service/validation/validation-workflow.service.ts +++ b/frontend/src/app/workspace/service/validation/validation-workflow.service.ts @@ -325,15 +325,15 @@ export class ValidationWorkflowService { for (let i = 0; i < operator.inputPorts.length; i++) { const port = operator.inputPorts[i]; const portNumInputs = numInputLinksByPort.get(port.portID) ?? 0; - if (port.allowMultiInputs) { - if (portNumInputs < 1) { + if (port.disallowMultiInputs) { + if (portNumInputs !== 1) { satisfyInput = false; - inputPortsViolationMessage += `${port.displayName ?? ""} requires at least 1 inputs, has ${portNumInputs}`; + inputPortsViolationMessage += `${port.displayName ?? ""} requires 1 input, has ${portNumInputs}`; } } else { - if (portNumInputs !== 1) { + if (portNumInputs < 1) { satisfyInput = false; - inputPortsViolationMessage += `${port.displayName ?? ""} requires 1 input, has ${portNumInputs}`; + inputPortsViolationMessage += `${port.displayName ?? ""} requires at least 1 inputs, has ${portNumInputs}`; } } } diff --git a/frontend/src/app/workspace/service/workflow-graph/model/workflow-action.service.ts b/frontend/src/app/workspace/service/workflow-graph/model/workflow-action.service.ts index 32a5e3a2db4..9dd1ac8e2ef 100644 --- a/frontend/src/app/workspace/service/workflow-graph/model/workflow-action.service.ts +++ b/frontend/src/app/workspace/service/workflow-graph/model/workflow-action.service.ts @@ -236,7 +236,7 @@ export class WorkflowActionService { }); } - public addPort(operatorID: string, isInput: boolean, allowMultiInputs?: boolean): void { + public addPort(operatorID: string, isInput: boolean, disallowMultiInputs?: boolean): void { const operator = this.texeraGraph.getOperator(operatorID); // TODO: use uniform serde to calculate the portID const prefix = isInput ? "input-" : "output-"; @@ -251,7 +251,7 @@ export class WorkflowActionService { const port: PortDescription = { portID, displayName: "", - allowMultiInputs, + disallowMultiInputs, isDynamicPort: true, dependencies: [], }; @@ -262,8 +262,8 @@ export class WorkflowActionService { if (!operator.dynamicOutputPorts && !isInput) { throw new Error(`operator ${operatorID} does not have dynamic output ports`); } - if (!isInput && allowMultiInputs !== undefined) { - throw new Error("error: allowMultiInputs property of an output port should not be specified"); + if (!isInput && disallowMultiInputs !== undefined) { + throw new Error("error: disallowMultiInputs property of an output port should not be specified"); } this.texeraGraph.bundleActions(() => { diff --git a/frontend/src/app/workspace/service/workflow-graph/util/workflow-util.service.ts b/frontend/src/app/workspace/service/workflow-graph/util/workflow-util.service.ts index 8bca014062a..64681965b42 100644 --- a/frontend/src/app/workspace/service/workflow-graph/util/workflow-util.service.ts +++ b/frontend/src/app/workspace/service/workflow-graph/util/workflow-util.service.ts @@ -189,7 +189,7 @@ export class WorkflowUtilService { return { portID, displayName: inputPortInfo.displayName ?? "", - allowMultiInputs: inputPortInfo.allowMultiLinks ?? false, + disallowMultiInputs: inputPortInfo.disallowMultiLinks ?? false, isDynamicPort: false, dependencies: inputPortInfo.dependencies ?? [], }; @@ -199,7 +199,7 @@ export class WorkflowUtilService { return { portID, displayName: outputPortInfo.displayName ?? "", - allowMultiInputs: false, + disallowMultiInputs: false, isDynamicPort: false, }; } diff --git a/frontend/src/app/workspace/types/workflow-common.interface.ts b/frontend/src/app/workspace/types/workflow-common.interface.ts index 74cfeac5755..3fb3aaa3d4b 100644 --- a/frontend/src/app/workspace/types/workflow-common.interface.ts +++ b/frontend/src/app/workspace/types/workflow-common.interface.ts @@ -55,7 +55,7 @@ export interface PortDescription extends Readonly<{ portID: string; displayName?: string; - allowMultiInputs?: boolean; + disallowMultiInputs?: boolean; isDynamicPort?: boolean; partitionRequirement?: PartitionInfo; dependencies?: { id: number; internal: boolean }[]; From 9d4a640d638612e4ab7cccd2b525d6d055dc9830 Mon Sep 17 00:00:00 2001 From: Xinyuan Lin Date: Sun, 5 Apr 2026 17:21:51 -0700 Subject: [PATCH 07/14] update --- .../amber/operator/sklearn/testing/SklearnTestingOpDesc.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/sklearn/testing/SklearnTestingOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/sklearn/testing/SklearnTestingOpDesc.scala index 648283d7e4e..e262bb29531 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/sklearn/testing/SklearnTestingOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/sklearn/testing/SklearnTestingOpDesc.scala @@ -91,7 +91,7 @@ class SklearnTestingOpDesc extends PythonOperatorDescriptor { InputPort( PortIdentity(), "model", - dependencies = List(PortIdentity(1)), + dependencies = List(PortIdentity(1)) ), InputPort(PortIdentity(1), "data") ), From 6116d18f95529d8b9471f5ce18ad313d937360a7 Mon Sep 17 00:00:00 2001 From: Xinyuan Lin Date: Sun, 5 Apr 2026 17:38:24 -0700 Subject: [PATCH 08/14] update --- .../component/workflow-editor/workflow-editor.component.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/app/workspace/component/workflow-editor/workflow-editor.component.spec.ts b/frontend/src/app/workspace/component/workflow-editor/workflow-editor.component.spec.ts index 8048d3a487f..3278ad6c204 100644 --- a/frontend/src/app/workspace/component/workflow-editor/workflow-editor.component.spec.ts +++ b/frontend/src/app/workspace/component/workflow-editor/workflow-editor.component.spec.ts @@ -501,7 +501,7 @@ describe("WorkflowEditorComponent", () => { mockUnionPredicate.operatorID, "input-0" ) - ).toBeTrue(); + ).toBeFalse(); }); it( From 8918de0477f0c2f29387226a8822fe010cae8709 Mon Sep 17 00:00:00 2001 From: Xinyuan Lin Date: Sun, 5 Apr 2026 19:10:03 -0700 Subject: [PATCH 09/14] update --- .../operator/metadata/OperatorMetadataGenerator.scala | 5 +++-- .../amber/operator/timeSeriesPlot/TimeSeriesPlot.scala | 5 +---- .../operator/visualization/DotPlot/DotPlotOpDesc.scala | 5 +---- .../visualization/IcicleChart/IcicleChartOpDesc.scala | 5 +---- .../visualization/ImageViz/ImageVisualizerOpDesc.scala | 5 +---- .../ScatterMatrixChart/ScatterMatrixChartOpDesc.scala | 5 +---- .../visualization/barChart/BarChartOpDesc.scala | 5 +---- .../boxViolinPlot/BoxViolinPlotOpDesc.scala | 5 +---- .../visualization/bubbleChart/BubbleChartOpDesc.scala | 5 +---- .../visualization/bulletChart/BulletChartOpDesc.scala | 5 +---- .../candlestickChart/CandlestickChartOpDesc.scala | 5 +---- .../choroplethMap/ChoroplethMapOpDesc.scala | 5 +---- .../ContinuousErrorBandsOpDesc.scala | 5 +---- .../visualization/contourPlot/ContourPlotOpDesc.scala | 5 +---- .../visualization/dendrogram/DendrogramOpDesc.scala | 5 +---- .../dumbbellPlot/DumbbellPlotOpDesc.scala | 5 +---- .../figureFactoryTable/FigureFactoryTableOpDesc.scala | 5 +---- .../filledAreaPlot/FilledAreaPlotOpDesc.scala | 5 +---- .../visualization/funnelPlot/FunnelPlotOpDesc.scala | 5 +---- .../visualization/ganttChart/GanttChartOpDesc.scala | 5 +---- .../visualization/gaugeChart/GaugeChartOpDesc.scala | 5 +---- .../operator/visualization/heatMap/HeatMapOpDesc.scala | 5 +---- .../hierarchychart/HierarchyChartOpDesc.scala | 5 +---- .../visualization/histogram/HistogramChartOpDesc.scala | 5 +---- .../visualization/histogram2d/Histogram2DOpDesc.scala | 5 +---- .../operator/visualization/htmlviz/HtmlVizOpDesc.scala | 10 +--------- .../visualization/lineChart/LineChartOpDesc.scala | 5 +---- .../visualization/nestedTable/NestedTableOpDesc.scala | 5 +---- .../networkGraph/NetworkGraphOpDesc.scala | 5 +---- .../visualization/pieChart/PieChartOpDesc.scala | 5 +---- .../visualization/quiverPlot/QuiverPlotOpDesc.scala | 5 +---- .../visualization/radarChart/RadarChartOpDesc.scala | 5 +---- .../visualization/rangeSlider/RangeSliderOpDesc.scala | 5 +---- .../sankeyDiagram/SankeyDiagramOpDesc.scala | 5 +---- .../scatter3DChart/Scatter3dChartOpDesc.scala | 5 +---- .../visualization/scatterplot/ScatterplotOpDesc.scala | 5 +---- .../visualization/stripChart/StripChartOpDesc.scala | 5 +---- .../visualization/tablesChart/TablesPlotOpDesc.scala | 5 +---- .../visualization/ternaryPlot/TernaryPlotOpDesc.scala | 5 +---- .../visualization/treeplot/TreeplotOpDesc.scala | 5 +---- .../operator/visualization/urlviz/UrlVizOpDesc.scala | 10 +--------- .../visualization/volcanoPlot/VolcanoPlotOpDesc.scala | 5 +---- .../waterfallChart/WaterfallChartOpDesc.scala | 5 +---- .../visualization/wordCloud/WordCloudOpDesc.scala | 5 +---- 44 files changed, 46 insertions(+), 184 deletions(-) diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/metadata/OperatorMetadataGenerator.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/metadata/OperatorMetadataGenerator.scala index 6899f06a2d5..a4dbe3c4196 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/metadata/OperatorMetadataGenerator.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/metadata/OperatorMetadataGenerator.scala @@ -25,6 +25,7 @@ import com.fasterxml.jackson.databind.jsontype.NamedType import com.fasterxml.jackson.databind.node.{ArrayNode, ObjectNode} import com.kjetland.jackson.jsonSchema.JsonSchemaConfig.html5EnabledSchema import com.kjetland.jackson.jsonSchema.{JsonSchemaConfig, JsonSchemaDraft, JsonSchemaGenerator} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.core.workflow.{InputPort, OutputPort} import org.apache.texera.amber.operator.LogicalOp import org.apache.texera.amber.operator.source.scan.csv.CSVScanSourceOpDesc @@ -37,8 +38,8 @@ case class OperatorInfo( userFriendlyName: String, operatorDescription: String, operatorGroupName: String, - inputPorts: List[InputPort], - outputPorts: List[OutputPort], + inputPorts: List[InputPort] = List(InputPort(disallowMultiLinks = true)), + outputPorts: List[OutputPort] = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)), dynamicInputPorts: Boolean = false, dynamicOutputPorts: Boolean = false, supportReconfiguration: Boolean = false, diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/timeSeriesPlot/TimeSeriesPlot.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/timeSeriesPlot/TimeSeriesPlot.scala index 0fdcb09a5cb..6e74fca9993 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/timeSeriesPlot/TimeSeriesPlot.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/timeSeriesPlot/TimeSeriesPlot.scala @@ -21,10 +21,9 @@ package org.apache.texera.amber.operator.visualization.timeSeriesplot import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.{JsonSchemaInject, JsonSchemaTitle} import org.apache.texera.amber.core.tuple.{AttributeType, Schema} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} +import org.apache.texera.amber.core.workflow.PortIdentity import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -83,8 +82,6 @@ class TimeSeriesOpDesc extends PythonOperatorDescriptor { "Time Series Plot", "Visualize trends and patterns over time.", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) override def generatePythonCode(): String = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/DotPlot/DotPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/DotPlot/DotPlotOpDesc.scala index 33069a89212..89f5b6a8d5e 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/DotPlot/DotPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/DotPlot/DotPlotOpDesc.scala @@ -22,10 +22,9 @@ package org.apache.texera.amber.operator.visualization.DotPlot import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} +import org.apache.texera.amber.core.workflow.PortIdentity import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -56,8 +55,6 @@ class DotPlotOpDesc extends PythonOperatorDescriptor { "Dot Plot", "Visualize data using a dot plot", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/IcicleChart/IcicleChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/IcicleChart/IcicleChartOpDesc.scala index a39e9b2681c..ee9355464f4 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/IcicleChart/IcicleChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/IcicleChart/IcicleChartOpDesc.scala @@ -22,10 +22,9 @@ package org.apache.texera.amber.operator.visualization.IcicleChart import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.{JsonSchemaInject, JsonSchemaTitle} import org.apache.texera.amber.core.tuple.{AttributeType, Schema} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} +import org.apache.texera.amber.core.workflow.PortIdentity import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -74,8 +73,6 @@ class IcicleChartOpDesc extends PythonOperatorDescriptor { "Icicle Chart", "Visualize hierarchical data from root to leaves", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) private def getIcicleAttributesInPython: String = diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ImageViz/ImageVisualizerOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ImageViz/ImageVisualizerOpDesc.scala index dc9eec9a8ee..82cb4387619 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ImageViz/ImageVisualizerOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ImageViz/ImageVisualizerOpDesc.scala @@ -22,10 +22,9 @@ package org.apache.texera.amber.operator.visualization.ImageViz import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} +import org.apache.texera.amber.core.workflow.PortIdentity import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -52,8 +51,6 @@ class ImageVisualizerOpDesc extends PythonOperatorDescriptor { "Image Visualizer", "visualize image content", OperatorGroupConstants.VISUALIZATION_MEDIA_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def createBinaryData(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ScatterMatrixChart/ScatterMatrixChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ScatterMatrixChart/ScatterMatrixChartOpDesc.scala index 3bfc5eb6b68..ce983db9e90 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ScatterMatrixChart/ScatterMatrixChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ScatterMatrixChart/ScatterMatrixChartOpDesc.scala @@ -22,10 +22,9 @@ package org.apache.texera.amber.operator.visualization.ScatterMatrixChart import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.{JsonSchemaInject, JsonSchemaTitle} import org.apache.texera.amber.core.tuple.{AttributeType, Schema} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} +import org.apache.texera.amber.core.workflow.PortIdentity import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.{ AutofillAttributeName, @@ -70,8 +69,6 @@ class ScatterMatrixChartOpDesc extends PythonOperatorDescriptor { "Scatter Matrix Chart", "Visualize datasets in a Scatter Matrix", OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/barChart/BarChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/barChart/BarChartOpDesc.scala index 723b64bd3d0..144faa1c959 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/barChart/BarChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/barChart/BarChartOpDesc.scala @@ -22,10 +22,9 @@ package org.apache.texera.amber.operator.visualization.barChart import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.{JsonSchemaInject, JsonSchemaTitle} import org.apache.texera.amber.core.tuple.{AttributeType, Schema} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} +import org.apache.texera.amber.core.workflow.PortIdentity import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -90,8 +89,6 @@ class BarChartOpDesc extends PythonOperatorDescriptor { "Bar Chart", "Visualize data in a Bar Chart", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/boxViolinPlot/BoxViolinPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/boxViolinPlot/BoxViolinPlotOpDesc.scala index 9f3a2a1f31e..dfe5a2c7c09 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/boxViolinPlot/BoxViolinPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/boxViolinPlot/BoxViolinPlotOpDesc.scala @@ -22,10 +22,9 @@ package org.apache.texera.amber.operator.visualization.boxViolinPlot import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription, JsonPropertyOrder} import com.kjetland.jackson.jsonSchema.annotations.{JsonSchemaInject, JsonSchemaTitle} import org.apache.texera.amber.core.tuple.{AttributeType, Schema} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} +import org.apache.texera.amber.core.workflow.PortIdentity import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -82,8 +81,6 @@ class BoxViolinPlotOpDesc extends PythonOperatorDescriptor { "Box/Violin Plot", "Visualize data using either a Box Plot or a Violin Plot. Box plots are drawn as a box with a vertical line down the middle which is mean value, and has horizontal lines attached to each side (known as “whiskers”). Violin plots provide more detail by showing a smoothed density curve on each side, and also include a box plot inside for comparison.", OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/bubbleChart/BubbleChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/bubbleChart/BubbleChartOpDesc.scala index 59a8cf5cc89..7edc58ac92c 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/bubbleChart/BubbleChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/bubbleChart/BubbleChartOpDesc.scala @@ -22,10 +22,9 @@ package org.apache.texera.amber.operator.visualization.bubbleChart import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} +import org.apache.texera.amber.core.workflow.PortIdentity import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -89,8 +88,6 @@ class BubbleChartOpDesc extends PythonOperatorDescriptor { "Bubble Chart", "a 3D Scatter Plot; Bubbles are graphed using x and y labels, and their sizes determined by a z-value.", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/bulletChart/BulletChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/bulletChart/BulletChartOpDesc.scala index a5e19bca9a5..159fdfb42a7 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/bulletChart/BulletChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/bulletChart/BulletChartOpDesc.scala @@ -22,10 +22,9 @@ package org.apache.texera.amber.operator.visualization.bulletChart import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} +import org.apache.texera.amber.core.workflow.PortIdentity import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -72,8 +71,6 @@ class BulletChartOpDesc extends PythonOperatorDescriptor { """Visualize data using a Bullet Chart that shows a primary quantitative bar and delta indicator. |Optional elements such as qualitative ranges (steps) and a performance threshold are displayed only when provided.""".stripMargin, OperatorGroupConstants.VISUALIZATION_FINANCIAL_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) override def generatePythonCode(): String = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/candlestickChart/CandlestickChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/candlestickChart/CandlestickChartOpDesc.scala index f0cc02a9b7d..287c518f453 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/candlestickChart/CandlestickChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/candlestickChart/CandlestickChartOpDesc.scala @@ -22,10 +22,9 @@ package org.apache.texera.amber.operator.visualization.candlestickChart import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} +import org.apache.texera.amber.core.workflow.PortIdentity import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -76,8 +75,6 @@ class CandlestickChartOpDesc extends PythonOperatorDescriptor { "Candlestick Chart", "Visualize data in a Candlestick Chart", OperatorGroupConstants.VISUALIZATION_FINANCIAL_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) override def generatePythonCode(): String = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/choroplethMap/ChoroplethMapOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/choroplethMap/ChoroplethMapOpDesc.scala index f9774ce80f4..214ab9b3c7a 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/choroplethMap/ChoroplethMapOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/choroplethMap/ChoroplethMapOpDesc.scala @@ -22,10 +22,9 @@ package org.apache.texera.amber.operator.visualization.choroplethMap import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.{JsonSchemaInject, JsonSchemaTitle} import org.apache.texera.amber.core.tuple.{AttributeType, Schema} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} +import org.apache.texera.amber.core.workflow.PortIdentity import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -74,8 +73,6 @@ class ChoroplethMapOpDesc extends PythonOperatorDescriptor { "Choropleth Map", "Visualize data using a Choropleth Map that uses shades of colors to show differences in properties or quantities between regions", OperatorGroupConstants.VISUALIZATION_ADVANCED_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/continuousErrorBands/ContinuousErrorBandsOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/continuousErrorBands/ContinuousErrorBandsOpDesc.scala index b21c882ed35..970439e8d8f 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/continuousErrorBands/ContinuousErrorBandsOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/continuousErrorBands/ContinuousErrorBandsOpDesc.scala @@ -22,10 +22,9 @@ package org.apache.texera.amber.operator.visualization.continuousErrorBands import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} +import org.apache.texera.amber.core.workflow.PortIdentity import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} import org.apache.texera.amber.pybuilder.PythonTemplateBuilder @@ -61,8 +60,6 @@ class ContinuousErrorBandsOpDesc extends PythonOperatorDescriptor { "Continuous Error Bands", "Visualize error or uncertainty along a continuous line", OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/contourPlot/ContourPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/contourPlot/ContourPlotOpDesc.scala index dd0f41b0faa..60f89a52101 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/contourPlot/ContourPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/contourPlot/ContourPlotOpDesc.scala @@ -22,10 +22,9 @@ package org.apache.texera.amber.operator.visualization.contourPlot import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} +import org.apache.texera.amber.core.workflow.PortIdentity import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -81,8 +80,6 @@ class ContourPlotOpDesc extends PythonOperatorDescriptor { "Contour Plot", "Displays terrain or gradient variations in a Contour Plot", OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) override def generatePythonCode(): String = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/dendrogram/DendrogramOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/dendrogram/DendrogramOpDesc.scala index d33ff2708f1..8443fb7c301 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/dendrogram/DendrogramOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/dendrogram/DendrogramOpDesc.scala @@ -22,10 +22,9 @@ package org.apache.texera.amber.operator.visualization.dendrogram import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} +import org.apache.texera.amber.core.workflow.PortIdentity import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -68,8 +67,6 @@ class DendrogramOpDesc extends PythonOperatorDescriptor { "Dendrogram", "Visualize data in a Dendrogram", OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) private def createDendrogram(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/dumbbellPlot/DumbbellPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/dumbbellPlot/DumbbellPlotOpDesc.scala index 88b6caae614..2b48d81762d 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/dumbbellPlot/DumbbellPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/dumbbellPlot/DumbbellPlotOpDesc.scala @@ -22,10 +22,9 @@ package org.apache.texera.amber.operator.visualization.dumbbellPlot import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.{JsonSchemaInject, JsonSchemaTitle} import org.apache.texera.amber.core.tuple.{AttributeType, Schema} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} +import org.apache.texera.amber.core.workflow.PortIdentity import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -101,8 +100,6 @@ class DumbbellPlotOpDesc extends PythonOperatorDescriptor { "Dumbbell Plot", "Visualize data in a Dumbbell Plots. A dumbbell plots (also known as a lollipop chart) is typically used to compare two distinct values or time points for the same entity.", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def createPlotlyDumbbellLineFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/figureFactoryTable/FigureFactoryTableOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/figureFactoryTable/FigureFactoryTableOpDesc.scala index 11168488b74..2a042057ec0 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/figureFactoryTable/FigureFactoryTableOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/figureFactoryTable/FigureFactoryTableOpDesc.scala @@ -22,10 +22,9 @@ package org.apache.texera.amber.operator.visualization.figureFactoryTable import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} +import org.apache.texera.amber.core.workflow.PortIdentity import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} import org.apache.texera.amber.pybuilder.PythonTemplateBuilder @@ -121,8 +120,6 @@ class FigureFactoryTableOpDesc extends PythonOperatorDescriptor { "Figure Factory Table", "Visualize data in a figure factory table", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) } diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/filledAreaPlot/FilledAreaPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/filledAreaPlot/FilledAreaPlotOpDesc.scala index d8d47696157..5e1e55c68b9 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/filledAreaPlot/FilledAreaPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/filledAreaPlot/FilledAreaPlotOpDesc.scala @@ -22,10 +22,9 @@ package org.apache.texera.amber.operator.visualization.filledAreaPlot import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} +import org.apache.texera.amber.core.workflow.PortIdentity import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -86,8 +85,6 @@ class FilledAreaPlotOpDesc extends PythonOperatorDescriptor { "Filled Area Plot", "Visualize data in filled area plot", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/funnelPlot/FunnelPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/funnelPlot/FunnelPlotOpDesc.scala index 89c1cb0b104..3af7b5186bf 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/funnelPlot/FunnelPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/funnelPlot/FunnelPlotOpDesc.scala @@ -22,10 +22,9 @@ package org.apache.texera.amber.operator.visualization.funnelPlot import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.{JsonSchemaInject, JsonSchemaTitle} import org.apache.texera.amber.core.tuple.{AttributeType, Schema} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} +import org.apache.texera.amber.core.workflow.PortIdentity import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -71,8 +70,6 @@ class FunnelPlotOpDesc extends PythonOperatorDescriptor { "Funnel Plot", "Visualize data in a Funnel Plot", OperatorGroupConstants.VISUALIZATION_FINANCIAL_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) private def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ganttChart/GanttChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ganttChart/GanttChartOpDesc.scala index 9a1f32e43ef..16de39922df 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ganttChart/GanttChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ganttChart/GanttChartOpDesc.scala @@ -22,10 +22,9 @@ package org.apache.texera.amber.operator.visualization.ganttChart import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.{JsonSchemaInject, JsonSchemaTitle} import org.apache.texera.amber.core.tuple.{AttributeType, Schema} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} +import org.apache.texera.amber.core.workflow.PortIdentity import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -94,8 +93,6 @@ class GanttChartOpDesc extends PythonOperatorDescriptor { "Gantt Chart", "A Gantt chart is a type of bar chart that illustrates a project schedule. The chart lists the tasks to be performed on the vertical axis, and time intervals on the horizontal axis. The width of the horizontal bars in the graph shows the duration of each activity.", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/gaugeChart/GaugeChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/gaugeChart/GaugeChartOpDesc.scala index c890786eeff..b8c27563176 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/gaugeChart/GaugeChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/gaugeChart/GaugeChartOpDesc.scala @@ -23,10 +23,9 @@ import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.scala.DefaultScalaModule import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} +import org.apache.texera.amber.core.workflow.PortIdentity import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -65,8 +64,6 @@ class GaugeChartOpDesc extends PythonOperatorDescriptor { "Gauge Chart", "Visualize a single value with a radial gauge chart, showing progress towards a goal with optional steps, threshold, and delta.", OperatorGroupConstants.VISUALIZATION_FINANCIAL_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) private val mapper = new ObjectMapper() diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/heatMap/HeatMapOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/heatMap/HeatMapOpDesc.scala index d38dfdf4c90..0358617bf90 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/heatMap/HeatMapOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/heatMap/HeatMapOpDesc.scala @@ -22,10 +22,9 @@ package org.apache.texera.amber.operator.visualization.heatMap import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} +import org.apache.texera.amber.core.workflow.PortIdentity import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -64,8 +63,6 @@ class HeatMapOpDesc extends PythonOperatorDescriptor { "Heatmap", "Visualize data in a HeatMap Chart", OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) private def createHeatMap(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/hierarchychart/HierarchyChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/hierarchychart/HierarchyChartOpDesc.scala index d46549111c2..3d86264d448 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/hierarchychart/HierarchyChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/hierarchychart/HierarchyChartOpDesc.scala @@ -22,10 +22,9 @@ package org.apache.texera.amber.operator.visualization.hierarchychart import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.{JsonSchemaInject, JsonSchemaTitle} import org.apache.texera.amber.core.tuple.{AttributeType, Schema} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} +import org.apache.texera.amber.core.workflow.PortIdentity import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -79,8 +78,6 @@ class HierarchyChartOpDesc extends PythonOperatorDescriptor { "Hierarchy Chart", "Visualize data in hierarchy", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) private def getHierarchyAttributesInPython: String = diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/histogram/HistogramChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/histogram/HistogramChartOpDesc.scala index 0c1a29b781b..de34d56f7d6 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/histogram/HistogramChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/histogram/HistogramChartOpDesc.scala @@ -22,10 +22,9 @@ package org.apache.texera.amber.operator.visualization.histogram import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} +import org.apache.texera.amber.core.workflow.PortIdentity import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -65,8 +64,6 @@ class HistogramChartOpDesc extends PythonOperatorDescriptor { "Histogram", "Visualize data in a Histogram Chart", OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/histogram2d/Histogram2DOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/histogram2d/Histogram2DOpDesc.scala index 88167a8353f..15f804afb9a 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/histogram2d/Histogram2DOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/histogram2d/Histogram2DOpDesc.scala @@ -21,10 +21,9 @@ package org.apache.texera.amber.operator.visualization.histogram2d import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} +import org.apache.texera.amber.core.workflow.PortIdentity import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -65,8 +64,6 @@ class Histogram2DOpDesc extends PythonOperatorDescriptor { "Histogram2D", "Displays a bivariate histogram as a density heatmap", OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) override def getOutputSchemas( diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/htmlviz/HtmlVizOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/htmlviz/HtmlVizOpDesc.scala index f5b9bb81e7c..dec46f24a32 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/htmlviz/HtmlVizOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/htmlviz/HtmlVizOpDesc.scala @@ -24,13 +24,7 @@ import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.executor.OpExecWithClassName import org.apache.texera.amber.core.tuple.{AttributeType, Schema} import org.apache.texera.amber.core.virtualidentity.{ExecutionIdentity, WorkflowIdentity} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode -import org.apache.texera.amber.core.workflow.{ - InputPort, - OutputPort, - PhysicalOp, - SchemaPropagationFunc -} +import org.apache.texera.amber.core.workflow.{PhysicalOp, SchemaPropagationFunc} import org.apache.texera.amber.operator.LogicalOp import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -74,8 +68,6 @@ class HtmlVizOpDesc extends LogicalOp { "HTML Visualizer", "Render the result of HTML content", OperatorGroupConstants.VISUALIZATION_MEDIA_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) } diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/lineChart/LineChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/lineChart/LineChartOpDesc.scala index 2400b53e11b..b0beb6ae48b 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/lineChart/LineChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/lineChart/LineChartOpDesc.scala @@ -22,10 +22,9 @@ package org.apache.texera.amber.operator.visualization.lineChart import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} +import org.apache.texera.amber.core.workflow.PortIdentity import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} import org.apache.texera.amber.pybuilder.PythonTemplateBuilder @@ -62,8 +61,6 @@ class LineChartOpDesc extends PythonOperatorDescriptor { "Line Chart", "View the result in line chart", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/nestedTable/NestedTableOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/nestedTable/NestedTableOpDesc.scala index aaaf4cdc95b..ab84a67607f 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/nestedTable/NestedTableOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/nestedTable/NestedTableOpDesc.scala @@ -20,9 +20,8 @@ package org.apache.texera.amber.operator.visualization.nestedTable import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import org.apache.texera.amber.core.tuple.{AttributeType, Schema} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext -import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} +import org.apache.texera.amber.core.workflow.PortIdentity import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} import org.apache.texera.amber.pybuilder.PythonTemplateBuilder @@ -51,8 +50,6 @@ class NestedTableOpDesc extends PythonOperatorDescriptor { "Nested Table", "Visualize Data in a Depth Two Nested Table", OperatorGroupConstants.VISUALIZATION_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) private def createNestedTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/networkGraph/NetworkGraphOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/networkGraph/NetworkGraphOpDesc.scala index 58ae0c00cbc..32a8748fa46 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/networkGraph/NetworkGraphOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/networkGraph/NetworkGraphOpDesc.scala @@ -22,10 +22,9 @@ package org.apache.texera.amber.operator.visualization.networkGraph import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} +import org.apache.texera.amber.core.workflow.PortIdentity import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -62,8 +61,6 @@ class NetworkGraphOpDesc extends PythonOperatorDescriptor { "Network Graph", "Visualize data in a network graph", OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/pieChart/PieChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/pieChart/PieChartOpDesc.scala index 75e532e2d89..21d53b0fd91 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/pieChart/PieChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/pieChart/PieChartOpDesc.scala @@ -22,10 +22,9 @@ package org.apache.texera.amber.operator.visualization.pieChart import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.{JsonSchemaInject, JsonSchemaTitle} import org.apache.texera.amber.core.tuple.{AttributeType, Schema} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} +import org.apache.texera.amber.core.workflow.PortIdentity import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -73,8 +72,6 @@ class PieChartOpDesc extends PythonOperatorDescriptor { "Pie Chart", "Visualize data in a Pie Chart", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/quiverPlot/QuiverPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/quiverPlot/QuiverPlotOpDesc.scala index 8246131fc2d..6f1b82a3867 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/quiverPlot/QuiverPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/quiverPlot/QuiverPlotOpDesc.scala @@ -22,10 +22,9 @@ package org.apache.texera.amber.operator.visualization.quiverPlot import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.{JsonSchemaInject, JsonSchemaTitle} import org.apache.texera.amber.core.tuple.{AttributeType, Schema} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} +import org.apache.texera.amber.core.workflow.PortIdentity import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -78,8 +77,6 @@ class QuiverPlotOpDesc extends PythonOperatorDescriptor { "Quiver Plot", "Visualize vector data in a Quiver Plot", OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) //data cleaning for missing value diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/radarChart/RadarChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/radarChart/RadarChartOpDesc.scala index ae4c383ea1a..0eac38f1e95 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/radarChart/RadarChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/radarChart/RadarChartOpDesc.scala @@ -22,8 +22,7 @@ package org.apache.texera.amber.operator.visualization.radarChart import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.{JsonSchemaInject, JsonSchemaTitle} import org.apache.texera.amber.core.tuple.{AttributeType, Schema} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode -import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} +import org.apache.texera.amber.core.workflow.PortIdentity import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.{ AutofillAttributeName, @@ -74,8 +73,6 @@ class RadarChartOpDesc extends PythonOperatorDescriptor { "Radar Chart", "Visualize data in a Radar Chart", OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) override def getOutputSchemas( diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/rangeSlider/RangeSliderOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/rangeSlider/RangeSliderOpDesc.scala index 2a13db3e035..0945c28a68a 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/rangeSlider/RangeSliderOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/rangeSlider/RangeSliderOpDesc.scala @@ -22,10 +22,9 @@ package org.apache.texera.amber.operator.visualization.rangeSlider import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.{JsonSchemaInject, JsonSchemaTitle} import org.apache.texera.amber.core.tuple.{AttributeType, Schema} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} +import org.apache.texera.amber.core.workflow.PortIdentity import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -76,8 +75,6 @@ class RangeSliderOpDesc extends PythonOperatorDescriptor { "Range Slider", "Visualize data in a Range Slider", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/sankeyDiagram/SankeyDiagramOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/sankeyDiagram/SankeyDiagramOpDesc.scala index 0261baf741c..f86e52391e6 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/sankeyDiagram/SankeyDiagramOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/sankeyDiagram/SankeyDiagramOpDesc.scala @@ -22,10 +22,9 @@ package org.apache.texera.amber.operator.visualization.sankeyDiagram import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} +import org.apache.texera.amber.core.workflow.PortIdentity import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -70,8 +69,6 @@ class SankeyDiagramOpDesc extends PythonOperatorDescriptor { "Sankey Diagram", "Visualize data using a Sankey diagram", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/scatter3DChart/Scatter3dChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/scatter3DChart/Scatter3dChartOpDesc.scala index e20ad4a8d1e..a1bb298784a 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/scatter3DChart/Scatter3dChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/scatter3DChart/Scatter3dChartOpDesc.scala @@ -22,10 +22,9 @@ package org.apache.texera.amber.operator.visualization.scatter3DChart import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.{JsonSchemaInject, JsonSchemaTitle} import org.apache.texera.amber.core.tuple.{AttributeType, Schema} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} +import org.apache.texera.amber.core.workflow.PortIdentity import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -70,8 +69,6 @@ class Scatter3dChartOpDesc extends PythonOperatorDescriptor { "Scatter3D Chart", "Visualize data in a Scatter3D Plot", OperatorGroupConstants.VISUALIZATION_ADVANCED_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) private def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/scatterplot/ScatterplotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/scatterplot/ScatterplotOpDesc.scala index 92cf4845993..b35142590d2 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/scatterplot/ScatterplotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/scatterplot/ScatterplotOpDesc.scala @@ -22,10 +22,9 @@ package org.apache.texera.amber.operator.visualization.scatterplot import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.{JsonSchemaInject, JsonSchemaTitle} import org.apache.texera.amber.core.tuple.{AttributeType, Schema} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} +import org.apache.texera.amber.core.workflow.PortIdentity import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -106,8 +105,6 @@ class ScatterplotOpDesc extends PythonOperatorDescriptor { "Scatter Plot", "View the result in a scatterplot", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/stripChart/StripChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/stripChart/StripChartOpDesc.scala index aea4d4afb4f..3285e23b7fd 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/stripChart/StripChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/stripChart/StripChartOpDesc.scala @@ -22,10 +22,9 @@ package org.apache.texera.amber.operator.visualization.stripChart import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} +import org.apache.texera.amber.core.workflow.PortIdentity import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -69,8 +68,6 @@ class StripChartOpDesc extends PythonOperatorDescriptor { "Strip Chart", "Visualize distribution of data points as a strip plot", OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) override def generatePythonCode(): String = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/tablesChart/TablesPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/tablesChart/TablesPlotOpDesc.scala index 0f71be4ab94..8392f158d76 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/tablesChart/TablesPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/tablesChart/TablesPlotOpDesc.scala @@ -21,9 +21,8 @@ package org.apache.texera.amber.operator.visualization.tablesChart import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import org.apache.texera.amber.core.tuple.{AttributeType, Schema} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext -import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} +import org.apache.texera.amber.core.workflow.PortIdentity import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} import org.apache.texera.amber.pybuilder.PythonTemplateBuilder @@ -99,8 +98,6 @@ class TablesPlotOpDesc extends PythonOperatorDescriptor { "Tables Plot", "Visualize data in a table chart.", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) } diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ternaryPlot/TernaryPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ternaryPlot/TernaryPlotOpDesc.scala index 14db98ee20b..8d14b1eff5d 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ternaryPlot/TernaryPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ternaryPlot/TernaryPlotOpDesc.scala @@ -22,10 +22,9 @@ package org.apache.texera.amber.operator.visualization.ternaryPlot import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} +import org.apache.texera.amber.core.workflow.PortIdentity import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -75,8 +74,6 @@ class TernaryPlotOpDesc extends PythonOperatorDescriptor { userFriendlyName = "Ternary Plot", operatorDescription = "Points are graphed on a Ternary Plot using 3 specified data fields", operatorGroupName = OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) override def getOutputSchemas( diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/treeplot/TreeplotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/treeplot/TreeplotOpDesc.scala index 60829fe4915..ca94fc9fc37 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/treeplot/TreeplotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/treeplot/TreeplotOpDesc.scala @@ -22,10 +22,9 @@ package org.apache.texera.amber.operator.visualization.treeplot import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} +import org.apache.texera.amber.core.workflow.PortIdentity import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -51,8 +50,6 @@ class TreePlotOpDesc extends PythonOperatorDescriptor { operatorDescription = "Visualize hierarchical data as a top-down, interactive, auto-sizing tree", operatorGroupName = OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) override def getOutputSchemas( diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/urlviz/UrlVizOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/urlviz/UrlVizOpDesc.scala index e367cbc3012..c2cbc3c8686 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/urlviz/UrlVizOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/urlviz/UrlVizOpDesc.scala @@ -24,13 +24,7 @@ import com.kjetland.jackson.jsonSchema.annotations.{JsonSchemaInject, JsonSchema import org.apache.texera.amber.core.executor.OpExecWithClassName import org.apache.texera.amber.core.tuple.{AttributeType, Schema} import org.apache.texera.amber.core.virtualidentity.{ExecutionIdentity, WorkflowIdentity} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode -import org.apache.texera.amber.core.workflow.{ - InputPort, - OutputPort, - PhysicalOp, - SchemaPropagationFunc -} +import org.apache.texera.amber.core.workflow.{PhysicalOp, SchemaPropagationFunc} import org.apache.texera.amber.operator.LogicalOp import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -85,8 +79,6 @@ class UrlVizOpDesc extends LogicalOp { "URL Visualizer", "Render the content of URL", OperatorGroupConstants.VISUALIZATION_MEDIA_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) } diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/volcanoPlot/VolcanoPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/volcanoPlot/VolcanoPlotOpDesc.scala index e4ac94b178a..d30e28e0260 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/volcanoPlot/VolcanoPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/volcanoPlot/VolcanoPlotOpDesc.scala @@ -22,10 +22,9 @@ package org.apache.texera.amber.operator.visualization.volcanoPlot import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} +import org.apache.texera.amber.core.workflow.PortIdentity import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -55,8 +54,6 @@ class VolcanoPlotOpDesc extends PythonOperatorDescriptor { userFriendlyName = "Volcano Plot", operatorDescription = "Displays statistical significance versus effect size", operatorGroupName = OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) override def getOutputSchemas( diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/waterfallChart/WaterfallChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/waterfallChart/WaterfallChartOpDesc.scala index 8586b1868c4..e29070073a3 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/waterfallChart/WaterfallChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/waterfallChart/WaterfallChartOpDesc.scala @@ -22,10 +22,9 @@ package org.apache.texera.amber.operator.visualization.waterfallChart import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} +import org.apache.texera.amber.core.workflow.PortIdentity import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -59,8 +58,6 @@ class WaterfallChartOpDesc extends PythonOperatorDescriptor { "Waterfall Chart", "Visualize data as a waterfall chart", OperatorGroupConstants.VISUALIZATION_FINANCIAL_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/wordCloud/WordCloudOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/wordCloud/WordCloudOpDesc.scala index 9daf6dd67b3..15b601a1835 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/wordCloud/WordCloudOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/wordCloud/WordCloudOpDesc.scala @@ -26,10 +26,9 @@ import com.kjetland.jackson.jsonSchema.annotations.{ JsonSchemaTitle } import org.apache.texera.amber.core.tuple.{AttributeType, Schema} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} +import org.apache.texera.amber.core.workflow.PortIdentity import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -59,8 +58,6 @@ class WordCloudOpDesc extends PythonOperatorDescriptor { "Word Cloud", "Generate word cloud for texts", OperatorGroupConstants.VISUALIZATION_MEDIA_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def manipulateTable(): PythonTemplateBuilder = { From b4983138a1625a0eb64cb6d18603b0c0179ecda8 Mon Sep 17 00:00:00 2001 From: Xinyuan Lin Date: Sun, 5 Apr 2026 19:28:04 -0700 Subject: [PATCH 10/14] update --- .../texera/amber/operator/timeSeriesPlot/TimeSeriesPlot.scala | 2 +- .../amber/operator/visualization/DotPlot/DotPlotOpDesc.scala | 2 +- .../operator/visualization/IcicleChart/IcicleChartOpDesc.scala | 2 +- .../operator/visualization/ImageViz/ImageVisualizerOpDesc.scala | 2 +- .../ScatterMatrixChart/ScatterMatrixChartOpDesc.scala | 2 +- .../amber/operator/visualization/barChart/BarChartOpDesc.scala | 2 +- .../visualization/boxViolinPlot/BoxViolinPlotOpDesc.scala | 2 +- .../operator/visualization/bubbleChart/BubbleChartOpDesc.scala | 2 +- .../operator/visualization/bulletChart/BulletChartOpDesc.scala | 2 +- .../visualization/candlestickChart/CandlestickChartOpDesc.scala | 2 +- .../visualization/choroplethMap/ChoroplethMapOpDesc.scala | 2 +- .../continuousErrorBands/ContinuousErrorBandsOpDesc.scala | 2 +- .../operator/visualization/contourPlot/ContourPlotOpDesc.scala | 2 +- .../operator/visualization/dendrogram/DendrogramOpDesc.scala | 2 +- .../visualization/dumbbellPlot/DumbbellPlotOpDesc.scala | 2 +- .../figureFactoryTable/FigureFactoryTableOpDesc.scala | 2 +- .../visualization/filledAreaPlot/FilledAreaPlotOpDesc.scala | 2 +- .../operator/visualization/funnelPlot/FunnelPlotOpDesc.scala | 2 +- .../operator/visualization/ganttChart/GanttChartOpDesc.scala | 2 +- .../operator/visualization/gaugeChart/GaugeChartOpDesc.scala | 2 +- .../amber/operator/visualization/heatMap/HeatMapOpDesc.scala | 2 +- .../visualization/hierarchychart/HierarchyChartOpDesc.scala | 2 +- .../operator/visualization/histogram/HistogramChartOpDesc.scala | 2 +- .../operator/visualization/histogram2d/Histogram2DOpDesc.scala | 2 +- .../amber/operator/visualization/htmlviz/HtmlVizOpDesc.scala | 2 +- .../operator/visualization/lineChart/LineChartOpDesc.scala | 2 +- .../operator/visualization/nestedTable/NestedTableOpDesc.scala | 2 +- .../visualization/networkGraph/NetworkGraphOpDesc.scala | 2 +- .../amber/operator/visualization/pieChart/PieChartOpDesc.scala | 2 +- .../operator/visualization/quiverPlot/QuiverPlotOpDesc.scala | 2 +- .../operator/visualization/radarChart/RadarChartOpDesc.scala | 2 +- .../operator/visualization/rangeSlider/RangeSliderOpDesc.scala | 2 +- .../visualization/sankeyDiagram/SankeyDiagramOpDesc.scala | 2 +- .../visualization/scatter3DChart/Scatter3dChartOpDesc.scala | 2 +- .../operator/visualization/scatterplot/ScatterplotOpDesc.scala | 2 +- .../operator/visualization/stripChart/StripChartOpDesc.scala | 2 +- .../operator/visualization/tablesChart/TablesPlotOpDesc.scala | 2 +- .../operator/visualization/ternaryPlot/TernaryPlotOpDesc.scala | 2 +- .../amber/operator/visualization/treeplot/TreeplotOpDesc.scala | 2 +- .../amber/operator/visualization/urlviz/UrlVizOpDesc.scala | 2 +- .../operator/visualization/volcanoPlot/VolcanoPlotOpDesc.scala | 2 +- .../visualization/waterfallChart/WaterfallChartOpDesc.scala | 2 +- .../operator/visualization/wordCloud/WordCloudOpDesc.scala | 2 +- 43 files changed, 43 insertions(+), 43 deletions(-) diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/timeSeriesPlot/TimeSeriesPlot.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/timeSeriesPlot/TimeSeriesPlot.scala index 6e74fca9993..a285f858bd9 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/timeSeriesPlot/TimeSeriesPlot.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/timeSeriesPlot/TimeSeriesPlot.scala @@ -81,7 +81,7 @@ class TimeSeriesOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Time Series Plot", "Visualize trends and patterns over time.", - OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, + OperatorGroupConstants.VISUALIZATION_BASIC_GROUP ) override def generatePythonCode(): String = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/DotPlot/DotPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/DotPlot/DotPlotOpDesc.scala index 89f5b6a8d5e..9e371d3e041 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/DotPlot/DotPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/DotPlot/DotPlotOpDesc.scala @@ -54,7 +54,7 @@ class DotPlotOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Dot Plot", "Visualize data using a dot plot", - OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, + OperatorGroupConstants.VISUALIZATION_BASIC_GROUP ) def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/IcicleChart/IcicleChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/IcicleChart/IcicleChartOpDesc.scala index ee9355464f4..567607bf862 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/IcicleChart/IcicleChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/IcicleChart/IcicleChartOpDesc.scala @@ -72,7 +72,7 @@ class IcicleChartOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Icicle Chart", "Visualize hierarchical data from root to leaves", - OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, + OperatorGroupConstants.VISUALIZATION_BASIC_GROUP ) private def getIcicleAttributesInPython: String = diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ImageViz/ImageVisualizerOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ImageViz/ImageVisualizerOpDesc.scala index 82cb4387619..0152557ea7c 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ImageViz/ImageVisualizerOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ImageViz/ImageVisualizerOpDesc.scala @@ -50,7 +50,7 @@ class ImageVisualizerOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Image Visualizer", "visualize image content", - OperatorGroupConstants.VISUALIZATION_MEDIA_GROUP, + OperatorGroupConstants.VISUALIZATION_MEDIA_GROUP ) def createBinaryData(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ScatterMatrixChart/ScatterMatrixChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ScatterMatrixChart/ScatterMatrixChartOpDesc.scala index ce983db9e90..2c57130e1a1 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ScatterMatrixChart/ScatterMatrixChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ScatterMatrixChart/ScatterMatrixChartOpDesc.scala @@ -68,7 +68,7 @@ class ScatterMatrixChartOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Scatter Matrix Chart", "Visualize datasets in a Scatter Matrix", - OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP, + OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP ) def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/barChart/BarChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/barChart/BarChartOpDesc.scala index 144faa1c959..55b83c29bf6 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/barChart/BarChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/barChart/BarChartOpDesc.scala @@ -88,7 +88,7 @@ class BarChartOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Bar Chart", "Visualize data in a Bar Chart", - OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, + OperatorGroupConstants.VISUALIZATION_BASIC_GROUP ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/boxViolinPlot/BoxViolinPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/boxViolinPlot/BoxViolinPlotOpDesc.scala index dfe5a2c7c09..f3a582c92bb 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/boxViolinPlot/BoxViolinPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/boxViolinPlot/BoxViolinPlotOpDesc.scala @@ -80,7 +80,7 @@ class BoxViolinPlotOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Box/Violin Plot", "Visualize data using either a Box Plot or a Violin Plot. Box plots are drawn as a box with a vertical line down the middle which is mean value, and has horizontal lines attached to each side (known as “whiskers”). Violin plots provide more detail by showing a smoothed density curve on each side, and also include a box plot inside for comparison.", - OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP, + OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/bubbleChart/BubbleChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/bubbleChart/BubbleChartOpDesc.scala index 7edc58ac92c..4ee0d38f0ae 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/bubbleChart/BubbleChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/bubbleChart/BubbleChartOpDesc.scala @@ -87,7 +87,7 @@ class BubbleChartOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Bubble Chart", "a 3D Scatter Plot; Bubbles are graphed using x and y labels, and their sizes determined by a z-value.", - OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, + OperatorGroupConstants.VISUALIZATION_BASIC_GROUP ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/bulletChart/BulletChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/bulletChart/BulletChartOpDesc.scala index 159fdfb42a7..52f93caf99f 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/bulletChart/BulletChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/bulletChart/BulletChartOpDesc.scala @@ -70,7 +70,7 @@ class BulletChartOpDesc extends PythonOperatorDescriptor { "Bullet Chart", """Visualize data using a Bullet Chart that shows a primary quantitative bar and delta indicator. |Optional elements such as qualitative ranges (steps) and a performance threshold are displayed only when provided.""".stripMargin, - OperatorGroupConstants.VISUALIZATION_FINANCIAL_GROUP, + OperatorGroupConstants.VISUALIZATION_FINANCIAL_GROUP ) override def generatePythonCode(): String = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/candlestickChart/CandlestickChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/candlestickChart/CandlestickChartOpDesc.scala index 287c518f453..8ed7b392658 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/candlestickChart/CandlestickChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/candlestickChart/CandlestickChartOpDesc.scala @@ -74,7 +74,7 @@ class CandlestickChartOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Candlestick Chart", "Visualize data in a Candlestick Chart", - OperatorGroupConstants.VISUALIZATION_FINANCIAL_GROUP, + OperatorGroupConstants.VISUALIZATION_FINANCIAL_GROUP ) override def generatePythonCode(): String = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/choroplethMap/ChoroplethMapOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/choroplethMap/ChoroplethMapOpDesc.scala index 214ab9b3c7a..c78f9268206 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/choroplethMap/ChoroplethMapOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/choroplethMap/ChoroplethMapOpDesc.scala @@ -72,7 +72,7 @@ class ChoroplethMapOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Choropleth Map", "Visualize data using a Choropleth Map that uses shades of colors to show differences in properties or quantities between regions", - OperatorGroupConstants.VISUALIZATION_ADVANCED_GROUP, + OperatorGroupConstants.VISUALIZATION_ADVANCED_GROUP ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/continuousErrorBands/ContinuousErrorBandsOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/continuousErrorBands/ContinuousErrorBandsOpDesc.scala index 970439e8d8f..08a68cd54fc 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/continuousErrorBands/ContinuousErrorBandsOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/continuousErrorBands/ContinuousErrorBandsOpDesc.scala @@ -59,7 +59,7 @@ class ContinuousErrorBandsOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Continuous Error Bands", "Visualize error or uncertainty along a continuous line", - OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP, + OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP ) def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/contourPlot/ContourPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/contourPlot/ContourPlotOpDesc.scala index 60f89a52101..ca4c2be60b6 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/contourPlot/ContourPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/contourPlot/ContourPlotOpDesc.scala @@ -79,7 +79,7 @@ class ContourPlotOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Contour Plot", "Displays terrain or gradient variations in a Contour Plot", - OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP, + OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP ) override def generatePythonCode(): String = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/dendrogram/DendrogramOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/dendrogram/DendrogramOpDesc.scala index 8443fb7c301..d0441c14918 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/dendrogram/DendrogramOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/dendrogram/DendrogramOpDesc.scala @@ -66,7 +66,7 @@ class DendrogramOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Dendrogram", "Visualize data in a Dendrogram", - OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP, + OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP ) private def createDendrogram(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/dumbbellPlot/DumbbellPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/dumbbellPlot/DumbbellPlotOpDesc.scala index 2b48d81762d..69b13bf102d 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/dumbbellPlot/DumbbellPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/dumbbellPlot/DumbbellPlotOpDesc.scala @@ -99,7 +99,7 @@ class DumbbellPlotOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Dumbbell Plot", "Visualize data in a Dumbbell Plots. A dumbbell plots (also known as a lollipop chart) is typically used to compare two distinct values or time points for the same entity.", - OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, + OperatorGroupConstants.VISUALIZATION_BASIC_GROUP ) def createPlotlyDumbbellLineFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/figureFactoryTable/FigureFactoryTableOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/figureFactoryTable/FigureFactoryTableOpDesc.scala index 2a042057ec0..3e0259af8a8 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/figureFactoryTable/FigureFactoryTableOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/figureFactoryTable/FigureFactoryTableOpDesc.scala @@ -119,7 +119,7 @@ class FigureFactoryTableOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Figure Factory Table", "Visualize data in a figure factory table", - OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, + OperatorGroupConstants.VISUALIZATION_BASIC_GROUP ) } diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/filledAreaPlot/FilledAreaPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/filledAreaPlot/FilledAreaPlotOpDesc.scala index 5e1e55c68b9..5a3a8e985a6 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/filledAreaPlot/FilledAreaPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/filledAreaPlot/FilledAreaPlotOpDesc.scala @@ -84,7 +84,7 @@ class FilledAreaPlotOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Filled Area Plot", "Visualize data in filled area plot", - OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, + OperatorGroupConstants.VISUALIZATION_BASIC_GROUP ) def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/funnelPlot/FunnelPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/funnelPlot/FunnelPlotOpDesc.scala index 3af7b5186bf..1457a6b850f 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/funnelPlot/FunnelPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/funnelPlot/FunnelPlotOpDesc.scala @@ -69,7 +69,7 @@ class FunnelPlotOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Funnel Plot", "Visualize data in a Funnel Plot", - OperatorGroupConstants.VISUALIZATION_FINANCIAL_GROUP, + OperatorGroupConstants.VISUALIZATION_FINANCIAL_GROUP ) private def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ganttChart/GanttChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ganttChart/GanttChartOpDesc.scala index 16de39922df..1dcf6ad357b 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ganttChart/GanttChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ganttChart/GanttChartOpDesc.scala @@ -92,7 +92,7 @@ class GanttChartOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Gantt Chart", "A Gantt chart is a type of bar chart that illustrates a project schedule. The chart lists the tasks to be performed on the vertical axis, and time intervals on the horizontal axis. The width of the horizontal bars in the graph shows the duration of each activity.", - OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, + OperatorGroupConstants.VISUALIZATION_BASIC_GROUP ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/gaugeChart/GaugeChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/gaugeChart/GaugeChartOpDesc.scala index b8c27563176..af244863111 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/gaugeChart/GaugeChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/gaugeChart/GaugeChartOpDesc.scala @@ -63,7 +63,7 @@ class GaugeChartOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Gauge Chart", "Visualize a single value with a radial gauge chart, showing progress towards a goal with optional steps, threshold, and delta.", - OperatorGroupConstants.VISUALIZATION_FINANCIAL_GROUP, + OperatorGroupConstants.VISUALIZATION_FINANCIAL_GROUP ) private val mapper = new ObjectMapper() diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/heatMap/HeatMapOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/heatMap/HeatMapOpDesc.scala index 0358617bf90..34ff2b9d308 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/heatMap/HeatMapOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/heatMap/HeatMapOpDesc.scala @@ -62,7 +62,7 @@ class HeatMapOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Heatmap", "Visualize data in a HeatMap Chart", - OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP, + OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP ) private def createHeatMap(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/hierarchychart/HierarchyChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/hierarchychart/HierarchyChartOpDesc.scala index 3d86264d448..89d36446b26 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/hierarchychart/HierarchyChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/hierarchychart/HierarchyChartOpDesc.scala @@ -77,7 +77,7 @@ class HierarchyChartOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Hierarchy Chart", "Visualize data in hierarchy", - OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, + OperatorGroupConstants.VISUALIZATION_BASIC_GROUP ) private def getHierarchyAttributesInPython: String = diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/histogram/HistogramChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/histogram/HistogramChartOpDesc.scala index de34d56f7d6..9e5a4718564 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/histogram/HistogramChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/histogram/HistogramChartOpDesc.scala @@ -63,7 +63,7 @@ class HistogramChartOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Histogram", "Visualize data in a Histogram Chart", - OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP, + OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP ) def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/histogram2d/Histogram2DOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/histogram2d/Histogram2DOpDesc.scala index 15f804afb9a..ff3c3c1ce08 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/histogram2d/Histogram2DOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/histogram2d/Histogram2DOpDesc.scala @@ -63,7 +63,7 @@ class Histogram2DOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Histogram2D", "Displays a bivariate histogram as a density heatmap", - OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP, + OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP ) override def getOutputSchemas( diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/htmlviz/HtmlVizOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/htmlviz/HtmlVizOpDesc.scala index dec46f24a32..48bbaa62596 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/htmlviz/HtmlVizOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/htmlviz/HtmlVizOpDesc.scala @@ -67,7 +67,7 @@ class HtmlVizOpDesc extends LogicalOp { OperatorInfo( "HTML Visualizer", "Render the result of HTML content", - OperatorGroupConstants.VISUALIZATION_MEDIA_GROUP, + OperatorGroupConstants.VISUALIZATION_MEDIA_GROUP ) } diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/lineChart/LineChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/lineChart/LineChartOpDesc.scala index b0beb6ae48b..6110a70c213 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/lineChart/LineChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/lineChart/LineChartOpDesc.scala @@ -60,7 +60,7 @@ class LineChartOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Line Chart", "View the result in line chart", - OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, + OperatorGroupConstants.VISUALIZATION_BASIC_GROUP ) def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/nestedTable/NestedTableOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/nestedTable/NestedTableOpDesc.scala index ab84a67607f..dbdacb600a7 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/nestedTable/NestedTableOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/nestedTable/NestedTableOpDesc.scala @@ -49,7 +49,7 @@ class NestedTableOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Nested Table", "Visualize Data in a Depth Two Nested Table", - OperatorGroupConstants.VISUALIZATION_GROUP, + OperatorGroupConstants.VISUALIZATION_GROUP ) private def createNestedTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/networkGraph/NetworkGraphOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/networkGraph/NetworkGraphOpDesc.scala index 32a8748fa46..6510fb534bc 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/networkGraph/NetworkGraphOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/networkGraph/NetworkGraphOpDesc.scala @@ -60,7 +60,7 @@ class NetworkGraphOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Network Graph", "Visualize data in a network graph", - OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP, + OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/pieChart/PieChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/pieChart/PieChartOpDesc.scala index 21d53b0fd91..e1cc60294c7 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/pieChart/PieChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/pieChart/PieChartOpDesc.scala @@ -71,7 +71,7 @@ class PieChartOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Pie Chart", "Visualize data in a Pie Chart", - OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, + OperatorGroupConstants.VISUALIZATION_BASIC_GROUP ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/quiverPlot/QuiverPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/quiverPlot/QuiverPlotOpDesc.scala index 6f1b82a3867..0a644187bb3 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/quiverPlot/QuiverPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/quiverPlot/QuiverPlotOpDesc.scala @@ -76,7 +76,7 @@ class QuiverPlotOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Quiver Plot", "Visualize vector data in a Quiver Plot", - OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP, + OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP ) //data cleaning for missing value diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/radarChart/RadarChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/radarChart/RadarChartOpDesc.scala index 0eac38f1e95..5f2b0733c1a 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/radarChart/RadarChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/radarChart/RadarChartOpDesc.scala @@ -72,7 +72,7 @@ class RadarChartOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Radar Chart", "Visualize data in a Radar Chart", - OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP, + OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP ) override def getOutputSchemas( diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/rangeSlider/RangeSliderOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/rangeSlider/RangeSliderOpDesc.scala index 0945c28a68a..8b2324180a9 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/rangeSlider/RangeSliderOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/rangeSlider/RangeSliderOpDesc.scala @@ -74,7 +74,7 @@ class RangeSliderOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Range Slider", "Visualize data in a Range Slider", - OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, + OperatorGroupConstants.VISUALIZATION_BASIC_GROUP ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/sankeyDiagram/SankeyDiagramOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/sankeyDiagram/SankeyDiagramOpDesc.scala index f86e52391e6..d319ba8492a 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/sankeyDiagram/SankeyDiagramOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/sankeyDiagram/SankeyDiagramOpDesc.scala @@ -68,7 +68,7 @@ class SankeyDiagramOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Sankey Diagram", "Visualize data using a Sankey diagram", - OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, + OperatorGroupConstants.VISUALIZATION_BASIC_GROUP ) def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/scatter3DChart/Scatter3dChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/scatter3DChart/Scatter3dChartOpDesc.scala index a1bb298784a..8404c56fe9b 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/scatter3DChart/Scatter3dChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/scatter3DChart/Scatter3dChartOpDesc.scala @@ -68,7 +68,7 @@ class Scatter3dChartOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Scatter3D Chart", "Visualize data in a Scatter3D Plot", - OperatorGroupConstants.VISUALIZATION_ADVANCED_GROUP, + OperatorGroupConstants.VISUALIZATION_ADVANCED_GROUP ) private def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/scatterplot/ScatterplotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/scatterplot/ScatterplotOpDesc.scala index b35142590d2..4f070149ac6 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/scatterplot/ScatterplotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/scatterplot/ScatterplotOpDesc.scala @@ -104,7 +104,7 @@ class ScatterplotOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Scatter Plot", "View the result in a scatterplot", - OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, + OperatorGroupConstants.VISUALIZATION_BASIC_GROUP ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/stripChart/StripChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/stripChart/StripChartOpDesc.scala index 3285e23b7fd..01cdb6cf89d 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/stripChart/StripChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/stripChart/StripChartOpDesc.scala @@ -67,7 +67,7 @@ class StripChartOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Strip Chart", "Visualize distribution of data points as a strip plot", - OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP, + OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP ) override def generatePythonCode(): String = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/tablesChart/TablesPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/tablesChart/TablesPlotOpDesc.scala index 8392f158d76..5a54189360e 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/tablesChart/TablesPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/tablesChart/TablesPlotOpDesc.scala @@ -97,7 +97,7 @@ class TablesPlotOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Tables Plot", "Visualize data in a table chart.", - OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, + OperatorGroupConstants.VISUALIZATION_BASIC_GROUP ) } diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ternaryPlot/TernaryPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ternaryPlot/TernaryPlotOpDesc.scala index 8d14b1eff5d..c694f4a677f 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ternaryPlot/TernaryPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ternaryPlot/TernaryPlotOpDesc.scala @@ -73,7 +73,7 @@ class TernaryPlotOpDesc extends PythonOperatorDescriptor { OperatorInfo( userFriendlyName = "Ternary Plot", operatorDescription = "Points are graphed on a Ternary Plot using 3 specified data fields", - operatorGroupName = OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP, + operatorGroupName = OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP ) override def getOutputSchemas( diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/treeplot/TreeplotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/treeplot/TreeplotOpDesc.scala index ca94fc9fc37..839190dc67d 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/treeplot/TreeplotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/treeplot/TreeplotOpDesc.scala @@ -49,7 +49,7 @@ class TreePlotOpDesc extends PythonOperatorDescriptor { userFriendlyName = "Tree Plot", operatorDescription = "Visualize hierarchical data as a top-down, interactive, auto-sizing tree", - operatorGroupName = OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP, + operatorGroupName = OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP ) override def getOutputSchemas( diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/urlviz/UrlVizOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/urlviz/UrlVizOpDesc.scala index c2cbc3c8686..6ce777d1931 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/urlviz/UrlVizOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/urlviz/UrlVizOpDesc.scala @@ -78,7 +78,7 @@ class UrlVizOpDesc extends LogicalOp { OperatorInfo( "URL Visualizer", "Render the content of URL", - OperatorGroupConstants.VISUALIZATION_MEDIA_GROUP, + OperatorGroupConstants.VISUALIZATION_MEDIA_GROUP ) } diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/volcanoPlot/VolcanoPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/volcanoPlot/VolcanoPlotOpDesc.scala index d30e28e0260..e235874a0b4 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/volcanoPlot/VolcanoPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/volcanoPlot/VolcanoPlotOpDesc.scala @@ -53,7 +53,7 @@ class VolcanoPlotOpDesc extends PythonOperatorDescriptor { OperatorInfo( userFriendlyName = "Volcano Plot", operatorDescription = "Displays statistical significance versus effect size", - operatorGroupName = OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP, + operatorGroupName = OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP ) override def getOutputSchemas( diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/waterfallChart/WaterfallChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/waterfallChart/WaterfallChartOpDesc.scala index e29070073a3..1041f0fe9cf 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/waterfallChart/WaterfallChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/waterfallChart/WaterfallChartOpDesc.scala @@ -57,7 +57,7 @@ class WaterfallChartOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Waterfall Chart", "Visualize data as a waterfall chart", - OperatorGroupConstants.VISUALIZATION_FINANCIAL_GROUP, + OperatorGroupConstants.VISUALIZATION_FINANCIAL_GROUP ) def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/wordCloud/WordCloudOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/wordCloud/WordCloudOpDesc.scala index 15b601a1835..98ab0a36a34 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/wordCloud/WordCloudOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/wordCloud/WordCloudOpDesc.scala @@ -57,7 +57,7 @@ class WordCloudOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Word Cloud", "Generate word cloud for texts", - OperatorGroupConstants.VISUALIZATION_MEDIA_GROUP, + OperatorGroupConstants.VISUALIZATION_MEDIA_GROUP ) def manipulateTable(): PythonTemplateBuilder = { From 7fcf839470d294c1adb8ae39c161a7670d8fb407 Mon Sep 17 00:00:00 2001 From: Xinyuan Lin Date: Mon, 6 Apr 2026 13:05:40 -0700 Subject: [PATCH 11/14] update --- .../service/operator-metadata/mock-operator-metadata.data.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/app/workspace/service/operator-metadata/mock-operator-metadata.data.ts b/frontend/src/app/workspace/service/operator-metadata/mock-operator-metadata.data.ts index 83c80938ca6..b90d578e351 100644 --- a/frontend/src/app/workspace/service/operator-metadata/mock-operator-metadata.data.ts +++ b/frontend/src/app/workspace/service/operator-metadata/mock-operator-metadata.data.ts @@ -264,7 +264,7 @@ export const mockUnionSchema: OperatorSchema = { userFriendlyName: "Union", operatorDescription: "Union multiple inputs", operatorGroupName: "Analysis", - inputPorts: [{ disallowMultiLinks: true }], + inputPorts: [{}], outputPorts: [{}], }, operatorVersion: "union1", From 09d4b2e9094e63f8507619a15b12a844c105aa1d Mon Sep 17 00:00:00 2001 From: Xinyuan Lin Date: Mon, 6 Apr 2026 13:39:21 -0700 Subject: [PATCH 12/14] Revert "update" This reverts commit b4983138a1625a0eb64cb6d18603b0c0179ecda8. --- .../texera/amber/operator/timeSeriesPlot/TimeSeriesPlot.scala | 2 +- .../amber/operator/visualization/DotPlot/DotPlotOpDesc.scala | 2 +- .../operator/visualization/IcicleChart/IcicleChartOpDesc.scala | 2 +- .../operator/visualization/ImageViz/ImageVisualizerOpDesc.scala | 2 +- .../ScatterMatrixChart/ScatterMatrixChartOpDesc.scala | 2 +- .../amber/operator/visualization/barChart/BarChartOpDesc.scala | 2 +- .../visualization/boxViolinPlot/BoxViolinPlotOpDesc.scala | 2 +- .../operator/visualization/bubbleChart/BubbleChartOpDesc.scala | 2 +- .../operator/visualization/bulletChart/BulletChartOpDesc.scala | 2 +- .../visualization/candlestickChart/CandlestickChartOpDesc.scala | 2 +- .../visualization/choroplethMap/ChoroplethMapOpDesc.scala | 2 +- .../continuousErrorBands/ContinuousErrorBandsOpDesc.scala | 2 +- .../operator/visualization/contourPlot/ContourPlotOpDesc.scala | 2 +- .../operator/visualization/dendrogram/DendrogramOpDesc.scala | 2 +- .../visualization/dumbbellPlot/DumbbellPlotOpDesc.scala | 2 +- .../figureFactoryTable/FigureFactoryTableOpDesc.scala | 2 +- .../visualization/filledAreaPlot/FilledAreaPlotOpDesc.scala | 2 +- .../operator/visualization/funnelPlot/FunnelPlotOpDesc.scala | 2 +- .../operator/visualization/ganttChart/GanttChartOpDesc.scala | 2 +- .../operator/visualization/gaugeChart/GaugeChartOpDesc.scala | 2 +- .../amber/operator/visualization/heatMap/HeatMapOpDesc.scala | 2 +- .../visualization/hierarchychart/HierarchyChartOpDesc.scala | 2 +- .../operator/visualization/histogram/HistogramChartOpDesc.scala | 2 +- .../operator/visualization/histogram2d/Histogram2DOpDesc.scala | 2 +- .../amber/operator/visualization/htmlviz/HtmlVizOpDesc.scala | 2 +- .../operator/visualization/lineChart/LineChartOpDesc.scala | 2 +- .../operator/visualization/nestedTable/NestedTableOpDesc.scala | 2 +- .../visualization/networkGraph/NetworkGraphOpDesc.scala | 2 +- .../amber/operator/visualization/pieChart/PieChartOpDesc.scala | 2 +- .../operator/visualization/quiverPlot/QuiverPlotOpDesc.scala | 2 +- .../operator/visualization/radarChart/RadarChartOpDesc.scala | 2 +- .../operator/visualization/rangeSlider/RangeSliderOpDesc.scala | 2 +- .../visualization/sankeyDiagram/SankeyDiagramOpDesc.scala | 2 +- .../visualization/scatter3DChart/Scatter3dChartOpDesc.scala | 2 +- .../operator/visualization/scatterplot/ScatterplotOpDesc.scala | 2 +- .../operator/visualization/stripChart/StripChartOpDesc.scala | 2 +- .../operator/visualization/tablesChart/TablesPlotOpDesc.scala | 2 +- .../operator/visualization/ternaryPlot/TernaryPlotOpDesc.scala | 2 +- .../amber/operator/visualization/treeplot/TreeplotOpDesc.scala | 2 +- .../amber/operator/visualization/urlviz/UrlVizOpDesc.scala | 2 +- .../operator/visualization/volcanoPlot/VolcanoPlotOpDesc.scala | 2 +- .../visualization/waterfallChart/WaterfallChartOpDesc.scala | 2 +- .../operator/visualization/wordCloud/WordCloudOpDesc.scala | 2 +- 43 files changed, 43 insertions(+), 43 deletions(-) diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/timeSeriesPlot/TimeSeriesPlot.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/timeSeriesPlot/TimeSeriesPlot.scala index a285f858bd9..6e74fca9993 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/timeSeriesPlot/TimeSeriesPlot.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/timeSeriesPlot/TimeSeriesPlot.scala @@ -81,7 +81,7 @@ class TimeSeriesOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Time Series Plot", "Visualize trends and patterns over time.", - OperatorGroupConstants.VISUALIZATION_BASIC_GROUP + OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, ) override def generatePythonCode(): String = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/DotPlot/DotPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/DotPlot/DotPlotOpDesc.scala index 9e371d3e041..89f5b6a8d5e 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/DotPlot/DotPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/DotPlot/DotPlotOpDesc.scala @@ -54,7 +54,7 @@ class DotPlotOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Dot Plot", "Visualize data using a dot plot", - OperatorGroupConstants.VISUALIZATION_BASIC_GROUP + OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, ) def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/IcicleChart/IcicleChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/IcicleChart/IcicleChartOpDesc.scala index 567607bf862..ee9355464f4 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/IcicleChart/IcicleChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/IcicleChart/IcicleChartOpDesc.scala @@ -72,7 +72,7 @@ class IcicleChartOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Icicle Chart", "Visualize hierarchical data from root to leaves", - OperatorGroupConstants.VISUALIZATION_BASIC_GROUP + OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, ) private def getIcicleAttributesInPython: String = diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ImageViz/ImageVisualizerOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ImageViz/ImageVisualizerOpDesc.scala index 0152557ea7c..82cb4387619 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ImageViz/ImageVisualizerOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ImageViz/ImageVisualizerOpDesc.scala @@ -50,7 +50,7 @@ class ImageVisualizerOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Image Visualizer", "visualize image content", - OperatorGroupConstants.VISUALIZATION_MEDIA_GROUP + OperatorGroupConstants.VISUALIZATION_MEDIA_GROUP, ) def createBinaryData(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ScatterMatrixChart/ScatterMatrixChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ScatterMatrixChart/ScatterMatrixChartOpDesc.scala index 2c57130e1a1..ce983db9e90 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ScatterMatrixChart/ScatterMatrixChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ScatterMatrixChart/ScatterMatrixChartOpDesc.scala @@ -68,7 +68,7 @@ class ScatterMatrixChartOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Scatter Matrix Chart", "Visualize datasets in a Scatter Matrix", - OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP + OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP, ) def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/barChart/BarChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/barChart/BarChartOpDesc.scala index 55b83c29bf6..144faa1c959 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/barChart/BarChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/barChart/BarChartOpDesc.scala @@ -88,7 +88,7 @@ class BarChartOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Bar Chart", "Visualize data in a Bar Chart", - OperatorGroupConstants.VISUALIZATION_BASIC_GROUP + OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/boxViolinPlot/BoxViolinPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/boxViolinPlot/BoxViolinPlotOpDesc.scala index f3a582c92bb..dfe5a2c7c09 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/boxViolinPlot/BoxViolinPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/boxViolinPlot/BoxViolinPlotOpDesc.scala @@ -80,7 +80,7 @@ class BoxViolinPlotOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Box/Violin Plot", "Visualize data using either a Box Plot or a Violin Plot. Box plots are drawn as a box with a vertical line down the middle which is mean value, and has horizontal lines attached to each side (known as “whiskers”). Violin plots provide more detail by showing a smoothed density curve on each side, and also include a box plot inside for comparison.", - OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP + OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP, ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/bubbleChart/BubbleChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/bubbleChart/BubbleChartOpDesc.scala index 4ee0d38f0ae..7edc58ac92c 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/bubbleChart/BubbleChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/bubbleChart/BubbleChartOpDesc.scala @@ -87,7 +87,7 @@ class BubbleChartOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Bubble Chart", "a 3D Scatter Plot; Bubbles are graphed using x and y labels, and their sizes determined by a z-value.", - OperatorGroupConstants.VISUALIZATION_BASIC_GROUP + OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/bulletChart/BulletChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/bulletChart/BulletChartOpDesc.scala index 52f93caf99f..159fdfb42a7 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/bulletChart/BulletChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/bulletChart/BulletChartOpDesc.scala @@ -70,7 +70,7 @@ class BulletChartOpDesc extends PythonOperatorDescriptor { "Bullet Chart", """Visualize data using a Bullet Chart that shows a primary quantitative bar and delta indicator. |Optional elements such as qualitative ranges (steps) and a performance threshold are displayed only when provided.""".stripMargin, - OperatorGroupConstants.VISUALIZATION_FINANCIAL_GROUP + OperatorGroupConstants.VISUALIZATION_FINANCIAL_GROUP, ) override def generatePythonCode(): String = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/candlestickChart/CandlestickChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/candlestickChart/CandlestickChartOpDesc.scala index 8ed7b392658..287c518f453 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/candlestickChart/CandlestickChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/candlestickChart/CandlestickChartOpDesc.scala @@ -74,7 +74,7 @@ class CandlestickChartOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Candlestick Chart", "Visualize data in a Candlestick Chart", - OperatorGroupConstants.VISUALIZATION_FINANCIAL_GROUP + OperatorGroupConstants.VISUALIZATION_FINANCIAL_GROUP, ) override def generatePythonCode(): String = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/choroplethMap/ChoroplethMapOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/choroplethMap/ChoroplethMapOpDesc.scala index c78f9268206..214ab9b3c7a 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/choroplethMap/ChoroplethMapOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/choroplethMap/ChoroplethMapOpDesc.scala @@ -72,7 +72,7 @@ class ChoroplethMapOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Choropleth Map", "Visualize data using a Choropleth Map that uses shades of colors to show differences in properties or quantities between regions", - OperatorGroupConstants.VISUALIZATION_ADVANCED_GROUP + OperatorGroupConstants.VISUALIZATION_ADVANCED_GROUP, ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/continuousErrorBands/ContinuousErrorBandsOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/continuousErrorBands/ContinuousErrorBandsOpDesc.scala index 08a68cd54fc..970439e8d8f 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/continuousErrorBands/ContinuousErrorBandsOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/continuousErrorBands/ContinuousErrorBandsOpDesc.scala @@ -59,7 +59,7 @@ class ContinuousErrorBandsOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Continuous Error Bands", "Visualize error or uncertainty along a continuous line", - OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP + OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP, ) def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/contourPlot/ContourPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/contourPlot/ContourPlotOpDesc.scala index ca4c2be60b6..60f89a52101 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/contourPlot/ContourPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/contourPlot/ContourPlotOpDesc.scala @@ -79,7 +79,7 @@ class ContourPlotOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Contour Plot", "Displays terrain or gradient variations in a Contour Plot", - OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP + OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP, ) override def generatePythonCode(): String = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/dendrogram/DendrogramOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/dendrogram/DendrogramOpDesc.scala index d0441c14918..8443fb7c301 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/dendrogram/DendrogramOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/dendrogram/DendrogramOpDesc.scala @@ -66,7 +66,7 @@ class DendrogramOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Dendrogram", "Visualize data in a Dendrogram", - OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP + OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP, ) private def createDendrogram(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/dumbbellPlot/DumbbellPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/dumbbellPlot/DumbbellPlotOpDesc.scala index 69b13bf102d..2b48d81762d 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/dumbbellPlot/DumbbellPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/dumbbellPlot/DumbbellPlotOpDesc.scala @@ -99,7 +99,7 @@ class DumbbellPlotOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Dumbbell Plot", "Visualize data in a Dumbbell Plots. A dumbbell plots (also known as a lollipop chart) is typically used to compare two distinct values or time points for the same entity.", - OperatorGroupConstants.VISUALIZATION_BASIC_GROUP + OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, ) def createPlotlyDumbbellLineFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/figureFactoryTable/FigureFactoryTableOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/figureFactoryTable/FigureFactoryTableOpDesc.scala index 3e0259af8a8..2a042057ec0 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/figureFactoryTable/FigureFactoryTableOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/figureFactoryTable/FigureFactoryTableOpDesc.scala @@ -119,7 +119,7 @@ class FigureFactoryTableOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Figure Factory Table", "Visualize data in a figure factory table", - OperatorGroupConstants.VISUALIZATION_BASIC_GROUP + OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, ) } diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/filledAreaPlot/FilledAreaPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/filledAreaPlot/FilledAreaPlotOpDesc.scala index 5a3a8e985a6..5e1e55c68b9 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/filledAreaPlot/FilledAreaPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/filledAreaPlot/FilledAreaPlotOpDesc.scala @@ -84,7 +84,7 @@ class FilledAreaPlotOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Filled Area Plot", "Visualize data in filled area plot", - OperatorGroupConstants.VISUALIZATION_BASIC_GROUP + OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, ) def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/funnelPlot/FunnelPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/funnelPlot/FunnelPlotOpDesc.scala index 1457a6b850f..3af7b5186bf 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/funnelPlot/FunnelPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/funnelPlot/FunnelPlotOpDesc.scala @@ -69,7 +69,7 @@ class FunnelPlotOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Funnel Plot", "Visualize data in a Funnel Plot", - OperatorGroupConstants.VISUALIZATION_FINANCIAL_GROUP + OperatorGroupConstants.VISUALIZATION_FINANCIAL_GROUP, ) private def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ganttChart/GanttChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ganttChart/GanttChartOpDesc.scala index 1dcf6ad357b..16de39922df 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ganttChart/GanttChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ganttChart/GanttChartOpDesc.scala @@ -92,7 +92,7 @@ class GanttChartOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Gantt Chart", "A Gantt chart is a type of bar chart that illustrates a project schedule. The chart lists the tasks to be performed on the vertical axis, and time intervals on the horizontal axis. The width of the horizontal bars in the graph shows the duration of each activity.", - OperatorGroupConstants.VISUALIZATION_BASIC_GROUP + OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/gaugeChart/GaugeChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/gaugeChart/GaugeChartOpDesc.scala index af244863111..b8c27563176 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/gaugeChart/GaugeChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/gaugeChart/GaugeChartOpDesc.scala @@ -63,7 +63,7 @@ class GaugeChartOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Gauge Chart", "Visualize a single value with a radial gauge chart, showing progress towards a goal with optional steps, threshold, and delta.", - OperatorGroupConstants.VISUALIZATION_FINANCIAL_GROUP + OperatorGroupConstants.VISUALIZATION_FINANCIAL_GROUP, ) private val mapper = new ObjectMapper() diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/heatMap/HeatMapOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/heatMap/HeatMapOpDesc.scala index 34ff2b9d308..0358617bf90 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/heatMap/HeatMapOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/heatMap/HeatMapOpDesc.scala @@ -62,7 +62,7 @@ class HeatMapOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Heatmap", "Visualize data in a HeatMap Chart", - OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP + OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP, ) private def createHeatMap(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/hierarchychart/HierarchyChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/hierarchychart/HierarchyChartOpDesc.scala index 89d36446b26..3d86264d448 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/hierarchychart/HierarchyChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/hierarchychart/HierarchyChartOpDesc.scala @@ -77,7 +77,7 @@ class HierarchyChartOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Hierarchy Chart", "Visualize data in hierarchy", - OperatorGroupConstants.VISUALIZATION_BASIC_GROUP + OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, ) private def getHierarchyAttributesInPython: String = diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/histogram/HistogramChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/histogram/HistogramChartOpDesc.scala index 9e5a4718564..de34d56f7d6 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/histogram/HistogramChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/histogram/HistogramChartOpDesc.scala @@ -63,7 +63,7 @@ class HistogramChartOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Histogram", "Visualize data in a Histogram Chart", - OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP + OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP, ) def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/histogram2d/Histogram2DOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/histogram2d/Histogram2DOpDesc.scala index ff3c3c1ce08..15f804afb9a 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/histogram2d/Histogram2DOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/histogram2d/Histogram2DOpDesc.scala @@ -63,7 +63,7 @@ class Histogram2DOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Histogram2D", "Displays a bivariate histogram as a density heatmap", - OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP + OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP, ) override def getOutputSchemas( diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/htmlviz/HtmlVizOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/htmlviz/HtmlVizOpDesc.scala index 48bbaa62596..dec46f24a32 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/htmlviz/HtmlVizOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/htmlviz/HtmlVizOpDesc.scala @@ -67,7 +67,7 @@ class HtmlVizOpDesc extends LogicalOp { OperatorInfo( "HTML Visualizer", "Render the result of HTML content", - OperatorGroupConstants.VISUALIZATION_MEDIA_GROUP + OperatorGroupConstants.VISUALIZATION_MEDIA_GROUP, ) } diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/lineChart/LineChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/lineChart/LineChartOpDesc.scala index 6110a70c213..b0beb6ae48b 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/lineChart/LineChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/lineChart/LineChartOpDesc.scala @@ -60,7 +60,7 @@ class LineChartOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Line Chart", "View the result in line chart", - OperatorGroupConstants.VISUALIZATION_BASIC_GROUP + OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, ) def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/nestedTable/NestedTableOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/nestedTable/NestedTableOpDesc.scala index dbdacb600a7..ab84a67607f 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/nestedTable/NestedTableOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/nestedTable/NestedTableOpDesc.scala @@ -49,7 +49,7 @@ class NestedTableOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Nested Table", "Visualize Data in a Depth Two Nested Table", - OperatorGroupConstants.VISUALIZATION_GROUP + OperatorGroupConstants.VISUALIZATION_GROUP, ) private def createNestedTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/networkGraph/NetworkGraphOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/networkGraph/NetworkGraphOpDesc.scala index 6510fb534bc..32a8748fa46 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/networkGraph/NetworkGraphOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/networkGraph/NetworkGraphOpDesc.scala @@ -60,7 +60,7 @@ class NetworkGraphOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Network Graph", "Visualize data in a network graph", - OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP + OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP, ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/pieChart/PieChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/pieChart/PieChartOpDesc.scala index e1cc60294c7..21d53b0fd91 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/pieChart/PieChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/pieChart/PieChartOpDesc.scala @@ -71,7 +71,7 @@ class PieChartOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Pie Chart", "Visualize data in a Pie Chart", - OperatorGroupConstants.VISUALIZATION_BASIC_GROUP + OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/quiverPlot/QuiverPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/quiverPlot/QuiverPlotOpDesc.scala index 0a644187bb3..6f1b82a3867 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/quiverPlot/QuiverPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/quiverPlot/QuiverPlotOpDesc.scala @@ -76,7 +76,7 @@ class QuiverPlotOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Quiver Plot", "Visualize vector data in a Quiver Plot", - OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP + OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP, ) //data cleaning for missing value diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/radarChart/RadarChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/radarChart/RadarChartOpDesc.scala index 5f2b0733c1a..0eac38f1e95 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/radarChart/RadarChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/radarChart/RadarChartOpDesc.scala @@ -72,7 +72,7 @@ class RadarChartOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Radar Chart", "Visualize data in a Radar Chart", - OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP + OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP, ) override def getOutputSchemas( diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/rangeSlider/RangeSliderOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/rangeSlider/RangeSliderOpDesc.scala index 8b2324180a9..0945c28a68a 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/rangeSlider/RangeSliderOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/rangeSlider/RangeSliderOpDesc.scala @@ -74,7 +74,7 @@ class RangeSliderOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Range Slider", "Visualize data in a Range Slider", - OperatorGroupConstants.VISUALIZATION_BASIC_GROUP + OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/sankeyDiagram/SankeyDiagramOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/sankeyDiagram/SankeyDiagramOpDesc.scala index d319ba8492a..f86e52391e6 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/sankeyDiagram/SankeyDiagramOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/sankeyDiagram/SankeyDiagramOpDesc.scala @@ -68,7 +68,7 @@ class SankeyDiagramOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Sankey Diagram", "Visualize data using a Sankey diagram", - OperatorGroupConstants.VISUALIZATION_BASIC_GROUP + OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, ) def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/scatter3DChart/Scatter3dChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/scatter3DChart/Scatter3dChartOpDesc.scala index 8404c56fe9b..a1bb298784a 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/scatter3DChart/Scatter3dChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/scatter3DChart/Scatter3dChartOpDesc.scala @@ -68,7 +68,7 @@ class Scatter3dChartOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Scatter3D Chart", "Visualize data in a Scatter3D Plot", - OperatorGroupConstants.VISUALIZATION_ADVANCED_GROUP + OperatorGroupConstants.VISUALIZATION_ADVANCED_GROUP, ) private def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/scatterplot/ScatterplotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/scatterplot/ScatterplotOpDesc.scala index 4f070149ac6..b35142590d2 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/scatterplot/ScatterplotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/scatterplot/ScatterplotOpDesc.scala @@ -104,7 +104,7 @@ class ScatterplotOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Scatter Plot", "View the result in a scatterplot", - OperatorGroupConstants.VISUALIZATION_BASIC_GROUP + OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/stripChart/StripChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/stripChart/StripChartOpDesc.scala index 01cdb6cf89d..3285e23b7fd 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/stripChart/StripChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/stripChart/StripChartOpDesc.scala @@ -67,7 +67,7 @@ class StripChartOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Strip Chart", "Visualize distribution of data points as a strip plot", - OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP + OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP, ) override def generatePythonCode(): String = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/tablesChart/TablesPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/tablesChart/TablesPlotOpDesc.scala index 5a54189360e..8392f158d76 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/tablesChart/TablesPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/tablesChart/TablesPlotOpDesc.scala @@ -97,7 +97,7 @@ class TablesPlotOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Tables Plot", "Visualize data in a table chart.", - OperatorGroupConstants.VISUALIZATION_BASIC_GROUP + OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, ) } diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ternaryPlot/TernaryPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ternaryPlot/TernaryPlotOpDesc.scala index c694f4a677f..8d14b1eff5d 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ternaryPlot/TernaryPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ternaryPlot/TernaryPlotOpDesc.scala @@ -73,7 +73,7 @@ class TernaryPlotOpDesc extends PythonOperatorDescriptor { OperatorInfo( userFriendlyName = "Ternary Plot", operatorDescription = "Points are graphed on a Ternary Plot using 3 specified data fields", - operatorGroupName = OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP + operatorGroupName = OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP, ) override def getOutputSchemas( diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/treeplot/TreeplotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/treeplot/TreeplotOpDesc.scala index 839190dc67d..ca94fc9fc37 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/treeplot/TreeplotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/treeplot/TreeplotOpDesc.scala @@ -49,7 +49,7 @@ class TreePlotOpDesc extends PythonOperatorDescriptor { userFriendlyName = "Tree Plot", operatorDescription = "Visualize hierarchical data as a top-down, interactive, auto-sizing tree", - operatorGroupName = OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP + operatorGroupName = OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP, ) override def getOutputSchemas( diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/urlviz/UrlVizOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/urlviz/UrlVizOpDesc.scala index 6ce777d1931..c2cbc3c8686 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/urlviz/UrlVizOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/urlviz/UrlVizOpDesc.scala @@ -78,7 +78,7 @@ class UrlVizOpDesc extends LogicalOp { OperatorInfo( "URL Visualizer", "Render the content of URL", - OperatorGroupConstants.VISUALIZATION_MEDIA_GROUP + OperatorGroupConstants.VISUALIZATION_MEDIA_GROUP, ) } diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/volcanoPlot/VolcanoPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/volcanoPlot/VolcanoPlotOpDesc.scala index e235874a0b4..d30e28e0260 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/volcanoPlot/VolcanoPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/volcanoPlot/VolcanoPlotOpDesc.scala @@ -53,7 +53,7 @@ class VolcanoPlotOpDesc extends PythonOperatorDescriptor { OperatorInfo( userFriendlyName = "Volcano Plot", operatorDescription = "Displays statistical significance versus effect size", - operatorGroupName = OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP + operatorGroupName = OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP, ) override def getOutputSchemas( diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/waterfallChart/WaterfallChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/waterfallChart/WaterfallChartOpDesc.scala index 1041f0fe9cf..e29070073a3 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/waterfallChart/WaterfallChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/waterfallChart/WaterfallChartOpDesc.scala @@ -57,7 +57,7 @@ class WaterfallChartOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Waterfall Chart", "Visualize data as a waterfall chart", - OperatorGroupConstants.VISUALIZATION_FINANCIAL_GROUP + OperatorGroupConstants.VISUALIZATION_FINANCIAL_GROUP, ) def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/wordCloud/WordCloudOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/wordCloud/WordCloudOpDesc.scala index 98ab0a36a34..15b601a1835 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/wordCloud/WordCloudOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/wordCloud/WordCloudOpDesc.scala @@ -57,7 +57,7 @@ class WordCloudOpDesc extends PythonOperatorDescriptor { OperatorInfo( "Word Cloud", "Generate word cloud for texts", - OperatorGroupConstants.VISUALIZATION_MEDIA_GROUP + OperatorGroupConstants.VISUALIZATION_MEDIA_GROUP, ) def manipulateTable(): PythonTemplateBuilder = { From 549ad07b190a47f0c63e1c9f7209566e909f9e67 Mon Sep 17 00:00:00 2001 From: Xinyuan Lin Date: Mon, 6 Apr 2026 13:39:25 -0700 Subject: [PATCH 13/14] Revert "update" This reverts commit 8918de0477f0c2f29387226a8822fe010cae8709. --- .../operator/metadata/OperatorMetadataGenerator.scala | 5 ++--- .../amber/operator/timeSeriesPlot/TimeSeriesPlot.scala | 5 ++++- .../operator/visualization/DotPlot/DotPlotOpDesc.scala | 5 ++++- .../visualization/IcicleChart/IcicleChartOpDesc.scala | 5 ++++- .../visualization/ImageViz/ImageVisualizerOpDesc.scala | 5 ++++- .../ScatterMatrixChart/ScatterMatrixChartOpDesc.scala | 5 ++++- .../visualization/barChart/BarChartOpDesc.scala | 5 ++++- .../boxViolinPlot/BoxViolinPlotOpDesc.scala | 5 ++++- .../visualization/bubbleChart/BubbleChartOpDesc.scala | 5 ++++- .../visualization/bulletChart/BulletChartOpDesc.scala | 5 ++++- .../candlestickChart/CandlestickChartOpDesc.scala | 5 ++++- .../choroplethMap/ChoroplethMapOpDesc.scala | 5 ++++- .../ContinuousErrorBandsOpDesc.scala | 5 ++++- .../visualization/contourPlot/ContourPlotOpDesc.scala | 5 ++++- .../visualization/dendrogram/DendrogramOpDesc.scala | 5 ++++- .../dumbbellPlot/DumbbellPlotOpDesc.scala | 5 ++++- .../figureFactoryTable/FigureFactoryTableOpDesc.scala | 5 ++++- .../filledAreaPlot/FilledAreaPlotOpDesc.scala | 5 ++++- .../visualization/funnelPlot/FunnelPlotOpDesc.scala | 5 ++++- .../visualization/ganttChart/GanttChartOpDesc.scala | 5 ++++- .../visualization/gaugeChart/GaugeChartOpDesc.scala | 5 ++++- .../operator/visualization/heatMap/HeatMapOpDesc.scala | 5 ++++- .../hierarchychart/HierarchyChartOpDesc.scala | 5 ++++- .../visualization/histogram/HistogramChartOpDesc.scala | 5 ++++- .../visualization/histogram2d/Histogram2DOpDesc.scala | 5 ++++- .../operator/visualization/htmlviz/HtmlVizOpDesc.scala | 10 +++++++++- .../visualization/lineChart/LineChartOpDesc.scala | 5 ++++- .../visualization/nestedTable/NestedTableOpDesc.scala | 5 ++++- .../networkGraph/NetworkGraphOpDesc.scala | 5 ++++- .../visualization/pieChart/PieChartOpDesc.scala | 5 ++++- .../visualization/quiverPlot/QuiverPlotOpDesc.scala | 5 ++++- .../visualization/radarChart/RadarChartOpDesc.scala | 5 ++++- .../visualization/rangeSlider/RangeSliderOpDesc.scala | 5 ++++- .../sankeyDiagram/SankeyDiagramOpDesc.scala | 5 ++++- .../scatter3DChart/Scatter3dChartOpDesc.scala | 5 ++++- .../visualization/scatterplot/ScatterplotOpDesc.scala | 5 ++++- .../visualization/stripChart/StripChartOpDesc.scala | 5 ++++- .../visualization/tablesChart/TablesPlotOpDesc.scala | 5 ++++- .../visualization/ternaryPlot/TernaryPlotOpDesc.scala | 5 ++++- .../visualization/treeplot/TreeplotOpDesc.scala | 5 ++++- .../operator/visualization/urlviz/UrlVizOpDesc.scala | 10 +++++++++- .../visualization/volcanoPlot/VolcanoPlotOpDesc.scala | 5 ++++- .../waterfallChart/WaterfallChartOpDesc.scala | 5 ++++- .../visualization/wordCloud/WordCloudOpDesc.scala | 5 ++++- 44 files changed, 184 insertions(+), 46 deletions(-) diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/metadata/OperatorMetadataGenerator.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/metadata/OperatorMetadataGenerator.scala index a4dbe3c4196..6899f06a2d5 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/metadata/OperatorMetadataGenerator.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/metadata/OperatorMetadataGenerator.scala @@ -25,7 +25,6 @@ import com.fasterxml.jackson.databind.jsontype.NamedType import com.fasterxml.jackson.databind.node.{ArrayNode, ObjectNode} import com.kjetland.jackson.jsonSchema.JsonSchemaConfig.html5EnabledSchema import com.kjetland.jackson.jsonSchema.{JsonSchemaConfig, JsonSchemaDraft, JsonSchemaGenerator} -import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.core.workflow.{InputPort, OutputPort} import org.apache.texera.amber.operator.LogicalOp import org.apache.texera.amber.operator.source.scan.csv.CSVScanSourceOpDesc @@ -38,8 +37,8 @@ case class OperatorInfo( userFriendlyName: String, operatorDescription: String, operatorGroupName: String, - inputPorts: List[InputPort] = List(InputPort(disallowMultiLinks = true)), - outputPorts: List[OutputPort] = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)), + inputPorts: List[InputPort], + outputPorts: List[OutputPort], dynamicInputPorts: Boolean = false, dynamicOutputPorts: Boolean = false, supportReconfiguration: Boolean = false, diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/timeSeriesPlot/TimeSeriesPlot.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/timeSeriesPlot/TimeSeriesPlot.scala index 6e74fca9993..0fdcb09a5cb 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/timeSeriesPlot/TimeSeriesPlot.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/timeSeriesPlot/TimeSeriesPlot.scala @@ -21,9 +21,10 @@ package org.apache.texera.amber.operator.visualization.timeSeriesplot import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.{JsonSchemaInject, JsonSchemaTitle} import org.apache.texera.amber.core.tuple.{AttributeType, Schema} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.PortIdentity +import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -82,6 +83,8 @@ class TimeSeriesOpDesc extends PythonOperatorDescriptor { "Time Series Plot", "Visualize trends and patterns over time.", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) override def generatePythonCode(): String = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/DotPlot/DotPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/DotPlot/DotPlotOpDesc.scala index 89f5b6a8d5e..33069a89212 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/DotPlot/DotPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/DotPlot/DotPlotOpDesc.scala @@ -22,9 +22,10 @@ package org.apache.texera.amber.operator.visualization.DotPlot import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.PortIdentity +import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -55,6 +56,8 @@ class DotPlotOpDesc extends PythonOperatorDescriptor { "Dot Plot", "Visualize data using a dot plot", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/IcicleChart/IcicleChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/IcicleChart/IcicleChartOpDesc.scala index ee9355464f4..a39e9b2681c 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/IcicleChart/IcicleChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/IcicleChart/IcicleChartOpDesc.scala @@ -22,9 +22,10 @@ package org.apache.texera.amber.operator.visualization.IcicleChart import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.{JsonSchemaInject, JsonSchemaTitle} import org.apache.texera.amber.core.tuple.{AttributeType, Schema} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.PortIdentity +import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -73,6 +74,8 @@ class IcicleChartOpDesc extends PythonOperatorDescriptor { "Icicle Chart", "Visualize hierarchical data from root to leaves", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) private def getIcicleAttributesInPython: String = diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ImageViz/ImageVisualizerOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ImageViz/ImageVisualizerOpDesc.scala index 82cb4387619..dc9eec9a8ee 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ImageViz/ImageVisualizerOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ImageViz/ImageVisualizerOpDesc.scala @@ -22,9 +22,10 @@ package org.apache.texera.amber.operator.visualization.ImageViz import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.PortIdentity +import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -51,6 +52,8 @@ class ImageVisualizerOpDesc extends PythonOperatorDescriptor { "Image Visualizer", "visualize image content", OperatorGroupConstants.VISUALIZATION_MEDIA_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def createBinaryData(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ScatterMatrixChart/ScatterMatrixChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ScatterMatrixChart/ScatterMatrixChartOpDesc.scala index ce983db9e90..3bfc5eb6b68 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ScatterMatrixChart/ScatterMatrixChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ScatterMatrixChart/ScatterMatrixChartOpDesc.scala @@ -22,9 +22,10 @@ package org.apache.texera.amber.operator.visualization.ScatterMatrixChart import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.{JsonSchemaInject, JsonSchemaTitle} import org.apache.texera.amber.core.tuple.{AttributeType, Schema} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.PortIdentity +import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.{ AutofillAttributeName, @@ -69,6 +70,8 @@ class ScatterMatrixChartOpDesc extends PythonOperatorDescriptor { "Scatter Matrix Chart", "Visualize datasets in a Scatter Matrix", OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/barChart/BarChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/barChart/BarChartOpDesc.scala index 144faa1c959..723b64bd3d0 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/barChart/BarChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/barChart/BarChartOpDesc.scala @@ -22,9 +22,10 @@ package org.apache.texera.amber.operator.visualization.barChart import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.{JsonSchemaInject, JsonSchemaTitle} import org.apache.texera.amber.core.tuple.{AttributeType, Schema} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.PortIdentity +import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -89,6 +90,8 @@ class BarChartOpDesc extends PythonOperatorDescriptor { "Bar Chart", "Visualize data in a Bar Chart", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/boxViolinPlot/BoxViolinPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/boxViolinPlot/BoxViolinPlotOpDesc.scala index dfe5a2c7c09..9f3a2a1f31e 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/boxViolinPlot/BoxViolinPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/boxViolinPlot/BoxViolinPlotOpDesc.scala @@ -22,9 +22,10 @@ package org.apache.texera.amber.operator.visualization.boxViolinPlot import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription, JsonPropertyOrder} import com.kjetland.jackson.jsonSchema.annotations.{JsonSchemaInject, JsonSchemaTitle} import org.apache.texera.amber.core.tuple.{AttributeType, Schema} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.PortIdentity +import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -81,6 +82,8 @@ class BoxViolinPlotOpDesc extends PythonOperatorDescriptor { "Box/Violin Plot", "Visualize data using either a Box Plot or a Violin Plot. Box plots are drawn as a box with a vertical line down the middle which is mean value, and has horizontal lines attached to each side (known as “whiskers”). Violin plots provide more detail by showing a smoothed density curve on each side, and also include a box plot inside for comparison.", OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/bubbleChart/BubbleChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/bubbleChart/BubbleChartOpDesc.scala index 7edc58ac92c..59a8cf5cc89 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/bubbleChart/BubbleChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/bubbleChart/BubbleChartOpDesc.scala @@ -22,9 +22,10 @@ package org.apache.texera.amber.operator.visualization.bubbleChart import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.PortIdentity +import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -88,6 +89,8 @@ class BubbleChartOpDesc extends PythonOperatorDescriptor { "Bubble Chart", "a 3D Scatter Plot; Bubbles are graphed using x and y labels, and their sizes determined by a z-value.", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/bulletChart/BulletChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/bulletChart/BulletChartOpDesc.scala index 159fdfb42a7..a5e19bca9a5 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/bulletChart/BulletChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/bulletChart/BulletChartOpDesc.scala @@ -22,9 +22,10 @@ package org.apache.texera.amber.operator.visualization.bulletChart import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.PortIdentity +import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -71,6 +72,8 @@ class BulletChartOpDesc extends PythonOperatorDescriptor { """Visualize data using a Bullet Chart that shows a primary quantitative bar and delta indicator. |Optional elements such as qualitative ranges (steps) and a performance threshold are displayed only when provided.""".stripMargin, OperatorGroupConstants.VISUALIZATION_FINANCIAL_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) override def generatePythonCode(): String = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/candlestickChart/CandlestickChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/candlestickChart/CandlestickChartOpDesc.scala index 287c518f453..f0cc02a9b7d 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/candlestickChart/CandlestickChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/candlestickChart/CandlestickChartOpDesc.scala @@ -22,9 +22,10 @@ package org.apache.texera.amber.operator.visualization.candlestickChart import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.PortIdentity +import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -75,6 +76,8 @@ class CandlestickChartOpDesc extends PythonOperatorDescriptor { "Candlestick Chart", "Visualize data in a Candlestick Chart", OperatorGroupConstants.VISUALIZATION_FINANCIAL_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) override def generatePythonCode(): String = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/choroplethMap/ChoroplethMapOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/choroplethMap/ChoroplethMapOpDesc.scala index 214ab9b3c7a..f9774ce80f4 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/choroplethMap/ChoroplethMapOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/choroplethMap/ChoroplethMapOpDesc.scala @@ -22,9 +22,10 @@ package org.apache.texera.amber.operator.visualization.choroplethMap import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.{JsonSchemaInject, JsonSchemaTitle} import org.apache.texera.amber.core.tuple.{AttributeType, Schema} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.PortIdentity +import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -73,6 +74,8 @@ class ChoroplethMapOpDesc extends PythonOperatorDescriptor { "Choropleth Map", "Visualize data using a Choropleth Map that uses shades of colors to show differences in properties or quantities between regions", OperatorGroupConstants.VISUALIZATION_ADVANCED_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/continuousErrorBands/ContinuousErrorBandsOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/continuousErrorBands/ContinuousErrorBandsOpDesc.scala index 970439e8d8f..b21c882ed35 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/continuousErrorBands/ContinuousErrorBandsOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/continuousErrorBands/ContinuousErrorBandsOpDesc.scala @@ -22,9 +22,10 @@ package org.apache.texera.amber.operator.visualization.continuousErrorBands import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.PortIdentity +import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} import org.apache.texera.amber.pybuilder.PythonTemplateBuilder @@ -60,6 +61,8 @@ class ContinuousErrorBandsOpDesc extends PythonOperatorDescriptor { "Continuous Error Bands", "Visualize error or uncertainty along a continuous line", OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/contourPlot/ContourPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/contourPlot/ContourPlotOpDesc.scala index 60f89a52101..dd0f41b0faa 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/contourPlot/ContourPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/contourPlot/ContourPlotOpDesc.scala @@ -22,9 +22,10 @@ package org.apache.texera.amber.operator.visualization.contourPlot import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.PortIdentity +import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -80,6 +81,8 @@ class ContourPlotOpDesc extends PythonOperatorDescriptor { "Contour Plot", "Displays terrain or gradient variations in a Contour Plot", OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) override def generatePythonCode(): String = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/dendrogram/DendrogramOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/dendrogram/DendrogramOpDesc.scala index 8443fb7c301..d33ff2708f1 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/dendrogram/DendrogramOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/dendrogram/DendrogramOpDesc.scala @@ -22,9 +22,10 @@ package org.apache.texera.amber.operator.visualization.dendrogram import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.PortIdentity +import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -67,6 +68,8 @@ class DendrogramOpDesc extends PythonOperatorDescriptor { "Dendrogram", "Visualize data in a Dendrogram", OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) private def createDendrogram(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/dumbbellPlot/DumbbellPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/dumbbellPlot/DumbbellPlotOpDesc.scala index 2b48d81762d..88b6caae614 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/dumbbellPlot/DumbbellPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/dumbbellPlot/DumbbellPlotOpDesc.scala @@ -22,9 +22,10 @@ package org.apache.texera.amber.operator.visualization.dumbbellPlot import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.{JsonSchemaInject, JsonSchemaTitle} import org.apache.texera.amber.core.tuple.{AttributeType, Schema} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.PortIdentity +import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -100,6 +101,8 @@ class DumbbellPlotOpDesc extends PythonOperatorDescriptor { "Dumbbell Plot", "Visualize data in a Dumbbell Plots. A dumbbell plots (also known as a lollipop chart) is typically used to compare two distinct values or time points for the same entity.", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def createPlotlyDumbbellLineFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/figureFactoryTable/FigureFactoryTableOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/figureFactoryTable/FigureFactoryTableOpDesc.scala index 2a042057ec0..11168488b74 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/figureFactoryTable/FigureFactoryTableOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/figureFactoryTable/FigureFactoryTableOpDesc.scala @@ -22,9 +22,10 @@ package org.apache.texera.amber.operator.visualization.figureFactoryTable import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.PortIdentity +import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} import org.apache.texera.amber.pybuilder.PythonTemplateBuilder @@ -120,6 +121,8 @@ class FigureFactoryTableOpDesc extends PythonOperatorDescriptor { "Figure Factory Table", "Visualize data in a figure factory table", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) } diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/filledAreaPlot/FilledAreaPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/filledAreaPlot/FilledAreaPlotOpDesc.scala index 5e1e55c68b9..d8d47696157 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/filledAreaPlot/FilledAreaPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/filledAreaPlot/FilledAreaPlotOpDesc.scala @@ -22,9 +22,10 @@ package org.apache.texera.amber.operator.visualization.filledAreaPlot import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.PortIdentity +import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -85,6 +86,8 @@ class FilledAreaPlotOpDesc extends PythonOperatorDescriptor { "Filled Area Plot", "Visualize data in filled area plot", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/funnelPlot/FunnelPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/funnelPlot/FunnelPlotOpDesc.scala index 3af7b5186bf..89c1cb0b104 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/funnelPlot/FunnelPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/funnelPlot/FunnelPlotOpDesc.scala @@ -22,9 +22,10 @@ package org.apache.texera.amber.operator.visualization.funnelPlot import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.{JsonSchemaInject, JsonSchemaTitle} import org.apache.texera.amber.core.tuple.{AttributeType, Schema} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.PortIdentity +import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -70,6 +71,8 @@ class FunnelPlotOpDesc extends PythonOperatorDescriptor { "Funnel Plot", "Visualize data in a Funnel Plot", OperatorGroupConstants.VISUALIZATION_FINANCIAL_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) private def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ganttChart/GanttChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ganttChart/GanttChartOpDesc.scala index 16de39922df..9a1f32e43ef 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ganttChart/GanttChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ganttChart/GanttChartOpDesc.scala @@ -22,9 +22,10 @@ package org.apache.texera.amber.operator.visualization.ganttChart import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.{JsonSchemaInject, JsonSchemaTitle} import org.apache.texera.amber.core.tuple.{AttributeType, Schema} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.PortIdentity +import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -93,6 +94,8 @@ class GanttChartOpDesc extends PythonOperatorDescriptor { "Gantt Chart", "A Gantt chart is a type of bar chart that illustrates a project schedule. The chart lists the tasks to be performed on the vertical axis, and time intervals on the horizontal axis. The width of the horizontal bars in the graph shows the duration of each activity.", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/gaugeChart/GaugeChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/gaugeChart/GaugeChartOpDesc.scala index b8c27563176..c890786eeff 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/gaugeChart/GaugeChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/gaugeChart/GaugeChartOpDesc.scala @@ -23,9 +23,10 @@ import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.scala.DefaultScalaModule import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.PortIdentity +import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -64,6 +65,8 @@ class GaugeChartOpDesc extends PythonOperatorDescriptor { "Gauge Chart", "Visualize a single value with a radial gauge chart, showing progress towards a goal with optional steps, threshold, and delta.", OperatorGroupConstants.VISUALIZATION_FINANCIAL_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) private val mapper = new ObjectMapper() diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/heatMap/HeatMapOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/heatMap/HeatMapOpDesc.scala index 0358617bf90..d38dfdf4c90 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/heatMap/HeatMapOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/heatMap/HeatMapOpDesc.scala @@ -22,9 +22,10 @@ package org.apache.texera.amber.operator.visualization.heatMap import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.PortIdentity +import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -63,6 +64,8 @@ class HeatMapOpDesc extends PythonOperatorDescriptor { "Heatmap", "Visualize data in a HeatMap Chart", OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) private def createHeatMap(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/hierarchychart/HierarchyChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/hierarchychart/HierarchyChartOpDesc.scala index 3d86264d448..d46549111c2 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/hierarchychart/HierarchyChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/hierarchychart/HierarchyChartOpDesc.scala @@ -22,9 +22,10 @@ package org.apache.texera.amber.operator.visualization.hierarchychart import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.{JsonSchemaInject, JsonSchemaTitle} import org.apache.texera.amber.core.tuple.{AttributeType, Schema} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.PortIdentity +import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -78,6 +79,8 @@ class HierarchyChartOpDesc extends PythonOperatorDescriptor { "Hierarchy Chart", "Visualize data in hierarchy", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) private def getHierarchyAttributesInPython: String = diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/histogram/HistogramChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/histogram/HistogramChartOpDesc.scala index de34d56f7d6..0c1a29b781b 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/histogram/HistogramChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/histogram/HistogramChartOpDesc.scala @@ -22,9 +22,10 @@ package org.apache.texera.amber.operator.visualization.histogram import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.PortIdentity +import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -64,6 +65,8 @@ class HistogramChartOpDesc extends PythonOperatorDescriptor { "Histogram", "Visualize data in a Histogram Chart", OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/histogram2d/Histogram2DOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/histogram2d/Histogram2DOpDesc.scala index 15f804afb9a..88167a8353f 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/histogram2d/Histogram2DOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/histogram2d/Histogram2DOpDesc.scala @@ -21,9 +21,10 @@ package org.apache.texera.amber.operator.visualization.histogram2d import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.PortIdentity +import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -64,6 +65,8 @@ class Histogram2DOpDesc extends PythonOperatorDescriptor { "Histogram2D", "Displays a bivariate histogram as a density heatmap", OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) override def getOutputSchemas( diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/htmlviz/HtmlVizOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/htmlviz/HtmlVizOpDesc.scala index dec46f24a32..f5b9bb81e7c 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/htmlviz/HtmlVizOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/htmlviz/HtmlVizOpDesc.scala @@ -24,7 +24,13 @@ import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.executor.OpExecWithClassName import org.apache.texera.amber.core.tuple.{AttributeType, Schema} import org.apache.texera.amber.core.virtualidentity.{ExecutionIdentity, WorkflowIdentity} -import org.apache.texera.amber.core.workflow.{PhysicalOp, SchemaPropagationFunc} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode +import org.apache.texera.amber.core.workflow.{ + InputPort, + OutputPort, + PhysicalOp, + SchemaPropagationFunc +} import org.apache.texera.amber.operator.LogicalOp import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -68,6 +74,8 @@ class HtmlVizOpDesc extends LogicalOp { "HTML Visualizer", "Render the result of HTML content", OperatorGroupConstants.VISUALIZATION_MEDIA_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) } diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/lineChart/LineChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/lineChart/LineChartOpDesc.scala index b0beb6ae48b..2400b53e11b 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/lineChart/LineChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/lineChart/LineChartOpDesc.scala @@ -22,9 +22,10 @@ package org.apache.texera.amber.operator.visualization.lineChart import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.PortIdentity +import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} import org.apache.texera.amber.pybuilder.PythonTemplateBuilder @@ -61,6 +62,8 @@ class LineChartOpDesc extends PythonOperatorDescriptor { "Line Chart", "View the result in line chart", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/nestedTable/NestedTableOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/nestedTable/NestedTableOpDesc.scala index ab84a67607f..aaaf4cdc95b 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/nestedTable/NestedTableOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/nestedTable/NestedTableOpDesc.scala @@ -20,8 +20,9 @@ package org.apache.texera.amber.operator.visualization.nestedTable import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import org.apache.texera.amber.core.tuple.{AttributeType, Schema} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext -import org.apache.texera.amber.core.workflow.PortIdentity +import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} import org.apache.texera.amber.pybuilder.PythonTemplateBuilder @@ -50,6 +51,8 @@ class NestedTableOpDesc extends PythonOperatorDescriptor { "Nested Table", "Visualize Data in a Depth Two Nested Table", OperatorGroupConstants.VISUALIZATION_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) private def createNestedTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/networkGraph/NetworkGraphOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/networkGraph/NetworkGraphOpDesc.scala index 32a8748fa46..58ae0c00cbc 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/networkGraph/NetworkGraphOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/networkGraph/NetworkGraphOpDesc.scala @@ -22,9 +22,10 @@ package org.apache.texera.amber.operator.visualization.networkGraph import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.PortIdentity +import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -61,6 +62,8 @@ class NetworkGraphOpDesc extends PythonOperatorDescriptor { "Network Graph", "Visualize data in a network graph", OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/pieChart/PieChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/pieChart/PieChartOpDesc.scala index 21d53b0fd91..75e532e2d89 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/pieChart/PieChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/pieChart/PieChartOpDesc.scala @@ -22,9 +22,10 @@ package org.apache.texera.amber.operator.visualization.pieChart import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.{JsonSchemaInject, JsonSchemaTitle} import org.apache.texera.amber.core.tuple.{AttributeType, Schema} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.PortIdentity +import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -72,6 +73,8 @@ class PieChartOpDesc extends PythonOperatorDescriptor { "Pie Chart", "Visualize data in a Pie Chart", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/quiverPlot/QuiverPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/quiverPlot/QuiverPlotOpDesc.scala index 6f1b82a3867..8246131fc2d 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/quiverPlot/QuiverPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/quiverPlot/QuiverPlotOpDesc.scala @@ -22,9 +22,10 @@ package org.apache.texera.amber.operator.visualization.quiverPlot import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.{JsonSchemaInject, JsonSchemaTitle} import org.apache.texera.amber.core.tuple.{AttributeType, Schema} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.PortIdentity +import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -77,6 +78,8 @@ class QuiverPlotOpDesc extends PythonOperatorDescriptor { "Quiver Plot", "Visualize vector data in a Quiver Plot", OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) //data cleaning for missing value diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/radarChart/RadarChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/radarChart/RadarChartOpDesc.scala index 0eac38f1e95..ae4c383ea1a 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/radarChart/RadarChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/radarChart/RadarChartOpDesc.scala @@ -22,7 +22,8 @@ package org.apache.texera.amber.operator.visualization.radarChart import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.{JsonSchemaInject, JsonSchemaTitle} import org.apache.texera.amber.core.tuple.{AttributeType, Schema} -import org.apache.texera.amber.core.workflow.PortIdentity +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode +import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.{ AutofillAttributeName, @@ -73,6 +74,8 @@ class RadarChartOpDesc extends PythonOperatorDescriptor { "Radar Chart", "Visualize data in a Radar Chart", OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) override def getOutputSchemas( diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/rangeSlider/RangeSliderOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/rangeSlider/RangeSliderOpDesc.scala index 0945c28a68a..2a13db3e035 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/rangeSlider/RangeSliderOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/rangeSlider/RangeSliderOpDesc.scala @@ -22,9 +22,10 @@ package org.apache.texera.amber.operator.visualization.rangeSlider import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.{JsonSchemaInject, JsonSchemaTitle} import org.apache.texera.amber.core.tuple.{AttributeType, Schema} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.PortIdentity +import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -75,6 +76,8 @@ class RangeSliderOpDesc extends PythonOperatorDescriptor { "Range Slider", "Visualize data in a Range Slider", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/sankeyDiagram/SankeyDiagramOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/sankeyDiagram/SankeyDiagramOpDesc.scala index f86e52391e6..0261baf741c 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/sankeyDiagram/SankeyDiagramOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/sankeyDiagram/SankeyDiagramOpDesc.scala @@ -22,9 +22,10 @@ package org.apache.texera.amber.operator.visualization.sankeyDiagram import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.PortIdentity +import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -69,6 +70,8 @@ class SankeyDiagramOpDesc extends PythonOperatorDescriptor { "Sankey Diagram", "Visualize data using a Sankey diagram", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/scatter3DChart/Scatter3dChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/scatter3DChart/Scatter3dChartOpDesc.scala index a1bb298784a..e20ad4a8d1e 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/scatter3DChart/Scatter3dChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/scatter3DChart/Scatter3dChartOpDesc.scala @@ -22,9 +22,10 @@ package org.apache.texera.amber.operator.visualization.scatter3DChart import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.{JsonSchemaInject, JsonSchemaTitle} import org.apache.texera.amber.core.tuple.{AttributeType, Schema} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.PortIdentity +import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -69,6 +70,8 @@ class Scatter3dChartOpDesc extends PythonOperatorDescriptor { "Scatter3D Chart", "Visualize data in a Scatter3D Plot", OperatorGroupConstants.VISUALIZATION_ADVANCED_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) private def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/scatterplot/ScatterplotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/scatterplot/ScatterplotOpDesc.scala index b35142590d2..92cf4845993 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/scatterplot/ScatterplotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/scatterplot/ScatterplotOpDesc.scala @@ -22,9 +22,10 @@ package org.apache.texera.amber.operator.visualization.scatterplot import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.{JsonSchemaInject, JsonSchemaTitle} import org.apache.texera.amber.core.tuple.{AttributeType, Schema} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.PortIdentity +import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -105,6 +106,8 @@ class ScatterplotOpDesc extends PythonOperatorDescriptor { "Scatter Plot", "View the result in a scatterplot", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/stripChart/StripChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/stripChart/StripChartOpDesc.scala index 3285e23b7fd..aea4d4afb4f 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/stripChart/StripChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/stripChart/StripChartOpDesc.scala @@ -22,9 +22,10 @@ package org.apache.texera.amber.operator.visualization.stripChart import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.PortIdentity +import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -68,6 +69,8 @@ class StripChartOpDesc extends PythonOperatorDescriptor { "Strip Chart", "Visualize distribution of data points as a strip plot", OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) override def generatePythonCode(): String = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/tablesChart/TablesPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/tablesChart/TablesPlotOpDesc.scala index 8392f158d76..0f71be4ab94 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/tablesChart/TablesPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/tablesChart/TablesPlotOpDesc.scala @@ -21,8 +21,9 @@ package org.apache.texera.amber.operator.visualization.tablesChart import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import org.apache.texera.amber.core.tuple.{AttributeType, Schema} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext -import org.apache.texera.amber.core.workflow.PortIdentity +import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} import org.apache.texera.amber.pybuilder.PythonTemplateBuilder @@ -98,6 +99,8 @@ class TablesPlotOpDesc extends PythonOperatorDescriptor { "Tables Plot", "Visualize data in a table chart.", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) } diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ternaryPlot/TernaryPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ternaryPlot/TernaryPlotOpDesc.scala index 8d14b1eff5d..14db98ee20b 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ternaryPlot/TernaryPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ternaryPlot/TernaryPlotOpDesc.scala @@ -22,9 +22,10 @@ package org.apache.texera.amber.operator.visualization.ternaryPlot import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.PortIdentity +import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -74,6 +75,8 @@ class TernaryPlotOpDesc extends PythonOperatorDescriptor { userFriendlyName = "Ternary Plot", operatorDescription = "Points are graphed on a Ternary Plot using 3 specified data fields", operatorGroupName = OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) override def getOutputSchemas( diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/treeplot/TreeplotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/treeplot/TreeplotOpDesc.scala index ca94fc9fc37..60829fe4915 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/treeplot/TreeplotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/treeplot/TreeplotOpDesc.scala @@ -22,9 +22,10 @@ package org.apache.texera.amber.operator.visualization.treeplot import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.PortIdentity +import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -50,6 +51,8 @@ class TreePlotOpDesc extends PythonOperatorDescriptor { operatorDescription = "Visualize hierarchical data as a top-down, interactive, auto-sizing tree", operatorGroupName = OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) override def getOutputSchemas( diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/urlviz/UrlVizOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/urlviz/UrlVizOpDesc.scala index c2cbc3c8686..e367cbc3012 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/urlviz/UrlVizOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/urlviz/UrlVizOpDesc.scala @@ -24,7 +24,13 @@ import com.kjetland.jackson.jsonSchema.annotations.{JsonSchemaInject, JsonSchema import org.apache.texera.amber.core.executor.OpExecWithClassName import org.apache.texera.amber.core.tuple.{AttributeType, Schema} import org.apache.texera.amber.core.virtualidentity.{ExecutionIdentity, WorkflowIdentity} -import org.apache.texera.amber.core.workflow.{PhysicalOp, SchemaPropagationFunc} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode +import org.apache.texera.amber.core.workflow.{ + InputPort, + OutputPort, + PhysicalOp, + SchemaPropagationFunc +} import org.apache.texera.amber.operator.LogicalOp import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -79,6 +85,8 @@ class UrlVizOpDesc extends LogicalOp { "URL Visualizer", "Render the content of URL", OperatorGroupConstants.VISUALIZATION_MEDIA_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) } diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/volcanoPlot/VolcanoPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/volcanoPlot/VolcanoPlotOpDesc.scala index d30e28e0260..e4ac94b178a 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/volcanoPlot/VolcanoPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/volcanoPlot/VolcanoPlotOpDesc.scala @@ -22,9 +22,10 @@ package org.apache.texera.amber.operator.visualization.volcanoPlot import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.PortIdentity +import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -54,6 +55,8 @@ class VolcanoPlotOpDesc extends PythonOperatorDescriptor { userFriendlyName = "Volcano Plot", operatorDescription = "Displays statistical significance versus effect size", operatorGroupName = OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) override def getOutputSchemas( diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/waterfallChart/WaterfallChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/waterfallChart/WaterfallChartOpDesc.scala index e29070073a3..8586b1868c4 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/waterfallChart/WaterfallChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/waterfallChart/WaterfallChartOpDesc.scala @@ -22,9 +22,10 @@ package org.apache.texera.amber.operator.visualization.waterfallChart import com.fasterxml.jackson.annotation.{JsonProperty, JsonPropertyDescription} import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle import org.apache.texera.amber.core.tuple.{AttributeType, Schema} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.PortIdentity +import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -58,6 +59,8 @@ class WaterfallChartOpDesc extends PythonOperatorDescriptor { "Waterfall Chart", "Visualize data as a waterfall chart", OperatorGroupConstants.VISUALIZATION_FINANCIAL_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/wordCloud/WordCloudOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/wordCloud/WordCloudOpDesc.scala index 15b601a1835..9daf6dd67b3 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/wordCloud/WordCloudOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/wordCloud/WordCloudOpDesc.scala @@ -26,9 +26,10 @@ import com.kjetland.jackson.jsonSchema.annotations.{ JsonSchemaTitle } import org.apache.texera.amber.core.tuple.{AttributeType, Schema} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.pybuilder.PythonTemplateBuilder.PythonTemplateBuilderStringContext import org.apache.texera.amber.pybuilder.PyStringTypes.EncodableString -import org.apache.texera.amber.core.workflow.PortIdentity +import org.apache.texera.amber.core.workflow.{InputPort, OutputPort, PortIdentity} import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} @@ -58,6 +59,8 @@ class WordCloudOpDesc extends PythonOperatorDescriptor { "Word Cloud", "Generate word cloud for texts", OperatorGroupConstants.VISUALIZATION_MEDIA_GROUP, + inputPorts = List(InputPort()), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def manipulateTable(): PythonTemplateBuilder = { From 3d6ad852971dc1d083d17087cd400a4d2cf703c2 Mon Sep 17 00:00:00 2001 From: Xinyuan Lin Date: Mon, 6 Apr 2026 14:03:50 -0700 Subject: [PATCH 14/14] update --- .../metadata/OperatorMetadataGenerator.scala | 16 ++++++++++++++++ .../operator/timeSeriesPlot/TimeSeriesPlot.scala | 4 +--- .../visualization/DotPlot/DotPlotOpDesc.scala | 4 +--- .../IcicleChart/IcicleChartOpDesc.scala | 4 +--- .../ImageViz/ImageVisualizerOpDesc.scala | 6 ++---- .../ScatterMatrixChartOpDesc.scala | 4 +--- .../visualization/barChart/BarChartOpDesc.scala | 6 ++---- .../boxViolinPlot/BoxViolinPlotOpDesc.scala | 4 +--- .../bubbleChart/BubbleChartOpDesc.scala | 6 ++---- .../bulletChart/BulletChartOpDesc.scala | 7 +++---- .../CandlestickChartOpDesc.scala | 4 +--- .../choroplethMap/ChoroplethMapOpDesc.scala | 4 +--- .../ContinuousErrorBandsOpDesc.scala | 4 +--- .../contourPlot/ContourPlotOpDesc.scala | 4 +--- .../dendrogram/DendrogramOpDesc.scala | 6 ++---- .../dumbbellPlot/DumbbellPlotOpDesc.scala | 4 +--- .../FigureFactoryTableOpDesc.scala | 4 +--- .../filledAreaPlot/FilledAreaPlotOpDesc.scala | 4 +--- .../funnelPlot/FunnelPlotOpDesc.scala | 4 +--- .../ganttChart/GanttChartOpDesc.scala | 4 +--- .../gaugeChart/GaugeChartOpDesc.scala | 6 ++---- .../visualization/heatMap/HeatMapOpDesc.scala | 4 +--- .../hierarchychart/HierarchyChartOpDesc.scala | 4 +--- .../histogram/HistogramChartOpDesc.scala | 6 ++---- .../histogram2d/Histogram2DOpDesc.scala | 6 ++---- .../visualization/htmlviz/HtmlVizOpDesc.scala | 4 +--- .../lineChart/LineChartOpDesc.scala | 4 +--- .../nestedTable/NestedTableOpDesc.scala | 4 +--- .../networkGraph/NetworkGraphOpDesc.scala | 4 +--- .../visualization/pieChart/PieChartOpDesc.scala | 4 +--- .../quiverPlot/QuiverPlotOpDesc.scala | 6 ++---- .../radarChart/RadarChartOpDesc.scala | 4 +--- .../rangeSlider/RangeSliderOpDesc.scala | 4 +--- .../sankeyDiagram/SankeyDiagramOpDesc.scala | 4 +--- .../scatter3DChart/Scatter3dChartOpDesc.scala | 4 +--- .../scatterplot/ScatterplotOpDesc.scala | 4 +--- .../stripChart/StripChartOpDesc.scala | 6 ++---- .../tablesChart/TablesPlotOpDesc.scala | 4 +--- .../ternaryPlot/TernaryPlotOpDesc.scala | 4 +--- ...TreeplotOpDesc.scala => TreePlotOpDesc.scala} | 6 ++---- .../visualization/urlviz/UrlVizOpDesc.scala | 6 ++---- .../volcanoPlot/VolcanoPlotOpDesc.scala | 4 +--- .../waterfallChart/WaterfallChartOpDesc.scala | 4 +--- .../wordCloud/WordCloudOpDesc.scala | 6 ++---- 44 files changed, 73 insertions(+), 142 deletions(-) rename common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/treeplot/{TreeplotOpDesc.scala => TreePlotOpDesc.scala} (98%) diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/metadata/OperatorMetadataGenerator.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/metadata/OperatorMetadataGenerator.scala index 6899f06a2d5..fdfcbcf27dc 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/metadata/OperatorMetadataGenerator.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/metadata/OperatorMetadataGenerator.scala @@ -25,6 +25,7 @@ import com.fasterxml.jackson.databind.jsontype.NamedType import com.fasterxml.jackson.databind.node.{ArrayNode, ObjectNode} import com.kjetland.jackson.jsonSchema.JsonSchemaConfig.html5EnabledSchema import com.kjetland.jackson.jsonSchema.{JsonSchemaConfig, JsonSchemaDraft, JsonSchemaGenerator} +import org.apache.texera.amber.core.workflow.OutputPort.OutputMode import org.apache.texera.amber.core.workflow.{InputPort, OutputPort} import org.apache.texera.amber.operator.LogicalOp import org.apache.texera.amber.operator.source.scan.csv.CSVScanSourceOpDesc @@ -45,6 +46,21 @@ case class OperatorInfo( allowPortCustomization: Boolean = false ) +object OperatorInfo { + def forVisualization( + userFriendlyName: String, + operatorDescription: String, + operatorGroupName: String + ): OperatorInfo = + OperatorInfo( + userFriendlyName, + operatorDescription, + operatorGroupName, + inputPorts = List(InputPort(disallowMultiLinks = true)), + outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) + ) +} + case class OperatorMetadata( operatorType: String, jsonSchema: JsonNode, diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/timeSeriesPlot/TimeSeriesPlot.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/timeSeriesPlot/TimeSeriesPlot.scala index 0fdcb09a5cb..dbf53783024 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/timeSeriesPlot/TimeSeriesPlot.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/timeSeriesPlot/TimeSeriesPlot.scala @@ -79,12 +79,10 @@ class TimeSeriesOpDesc extends PythonOperatorDescriptor { } override def operatorInfo: OperatorInfo = - OperatorInfo( + OperatorInfo.forVisualization( "Time Series Plot", "Visualize trends and patterns over time.", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) override def generatePythonCode(): String = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/DotPlot/DotPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/DotPlot/DotPlotOpDesc.scala index 33069a89212..12142cf1d19 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/DotPlot/DotPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/DotPlot/DotPlotOpDesc.scala @@ -52,12 +52,10 @@ class DotPlotOpDesc extends PythonOperatorDescriptor { } override def operatorInfo: OperatorInfo = - OperatorInfo( + OperatorInfo.forVisualization( "Dot Plot", "Visualize data using a dot plot", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/IcicleChart/IcicleChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/IcicleChart/IcicleChartOpDesc.scala index a39e9b2681c..cbbb55023b0 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/IcicleChart/IcicleChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/IcicleChart/IcicleChartOpDesc.scala @@ -70,12 +70,10 @@ class IcicleChartOpDesc extends PythonOperatorDescriptor { } override def operatorInfo: OperatorInfo = - OperatorInfo( + OperatorInfo.forVisualization( "Icicle Chart", "Visualize hierarchical data from root to leaves", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) private def getIcicleAttributesInPython: String = diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ImageViz/ImageVisualizerOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ImageViz/ImageVisualizerOpDesc.scala index dc9eec9a8ee..9999251239a 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ImageViz/ImageVisualizerOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ImageViz/ImageVisualizerOpDesc.scala @@ -48,12 +48,10 @@ class ImageVisualizerOpDesc extends PythonOperatorDescriptor { } override def operatorInfo: OperatorInfo = - OperatorInfo( + OperatorInfo.forVisualization( "Image Visualizer", "visualize image content", - OperatorGroupConstants.VISUALIZATION_MEDIA_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) + OperatorGroupConstants.VISUALIZATION_MEDIA_GROUP ) def createBinaryData(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ScatterMatrixChart/ScatterMatrixChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ScatterMatrixChart/ScatterMatrixChartOpDesc.scala index 3bfc5eb6b68..0b34fe15243 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ScatterMatrixChart/ScatterMatrixChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ScatterMatrixChart/ScatterMatrixChartOpDesc.scala @@ -66,12 +66,10 @@ class ScatterMatrixChartOpDesc extends PythonOperatorDescriptor { } override def operatorInfo: OperatorInfo = - OperatorInfo( + OperatorInfo.forVisualization( "Scatter Matrix Chart", "Visualize datasets in a Scatter Matrix", OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/barChart/BarChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/barChart/BarChartOpDesc.scala index 723b64bd3d0..2912003c460 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/barChart/BarChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/barChart/BarChartOpDesc.scala @@ -86,12 +86,10 @@ class BarChartOpDesc extends PythonOperatorDescriptor { } override def operatorInfo: OperatorInfo = - OperatorInfo( + OperatorInfo.forVisualization( "Bar Chart", "Visualize data in a Bar Chart", - OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) + OperatorGroupConstants.VISUALIZATION_BASIC_GROUP ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/boxViolinPlot/BoxViolinPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/boxViolinPlot/BoxViolinPlotOpDesc.scala index 9f3a2a1f31e..cc0a520f399 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/boxViolinPlot/BoxViolinPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/boxViolinPlot/BoxViolinPlotOpDesc.scala @@ -78,12 +78,10 @@ class BoxViolinPlotOpDesc extends PythonOperatorDescriptor { } override def operatorInfo: OperatorInfo = - OperatorInfo( + OperatorInfo.forVisualization( "Box/Violin Plot", "Visualize data using either a Box Plot or a Violin Plot. Box plots are drawn as a box with a vertical line down the middle which is mean value, and has horizontal lines attached to each side (known as “whiskers”). Violin plots provide more detail by showing a smoothed density curve on each side, and also include a box plot inside for comparison.", OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/bubbleChart/BubbleChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/bubbleChart/BubbleChartOpDesc.scala index 59a8cf5cc89..da2a6fe17a3 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/bubbleChart/BubbleChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/bubbleChart/BubbleChartOpDesc.scala @@ -85,12 +85,10 @@ class BubbleChartOpDesc extends PythonOperatorDescriptor { } override def operatorInfo: OperatorInfo = - OperatorInfo( + OperatorInfo.forVisualization( "Bubble Chart", "a 3D Scatter Plot; Bubbles are graphed using x and y labels, and their sizes determined by a z-value.", - OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) + OperatorGroupConstants.VISUALIZATION_BASIC_GROUP ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/bulletChart/BulletChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/bulletChart/BulletChartOpDesc.scala index a5e19bca9a5..721b1ca3de4 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/bulletChart/BulletChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/bulletChart/BulletChartOpDesc.scala @@ -30,6 +30,7 @@ import org.apache.texera.amber.operator.PythonOperatorDescriptor import org.apache.texera.amber.operator.metadata.annotations.AutofillAttributeName import org.apache.texera.amber.operator.metadata.{OperatorGroupConstants, OperatorInfo} +import java.util import java.util.{ArrayList, List => JList} import scala.jdk.CollectionConverters._ @@ -57,7 +58,7 @@ class BulletChartOpDesc extends PythonOperatorDescriptor { @JsonProperty(value = "steps", required = false) @JsonSchemaTitle("Steps") @JsonPropertyDescription("Optional: Each step includes a start and end value e.g., 0, 100.") - var steps: JList[BulletChartStepDefinition] = new ArrayList[BulletChartStepDefinition]() + var steps: JList[BulletChartStepDefinition] = new util.ArrayList[BulletChartStepDefinition]() override def getOutputSchemas( inputSchemas: Map[PortIdentity, Schema] @@ -67,13 +68,11 @@ class BulletChartOpDesc extends PythonOperatorDescriptor { } override def operatorInfo: OperatorInfo = - OperatorInfo( + OperatorInfo.forVisualization( "Bullet Chart", """Visualize data using a Bullet Chart that shows a primary quantitative bar and delta indicator. |Optional elements such as qualitative ranges (steps) and a performance threshold are displayed only when provided.""".stripMargin, OperatorGroupConstants.VISUALIZATION_FINANCIAL_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) override def generatePythonCode(): String = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/candlestickChart/CandlestickChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/candlestickChart/CandlestickChartOpDesc.scala index f0cc02a9b7d..7ce70cdc40a 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/candlestickChart/CandlestickChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/candlestickChart/CandlestickChartOpDesc.scala @@ -72,12 +72,10 @@ class CandlestickChartOpDesc extends PythonOperatorDescriptor { } override def operatorInfo: OperatorInfo = - OperatorInfo( + OperatorInfo.forVisualization( "Candlestick Chart", "Visualize data in a Candlestick Chart", OperatorGroupConstants.VISUALIZATION_FINANCIAL_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) override def generatePythonCode(): String = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/choroplethMap/ChoroplethMapOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/choroplethMap/ChoroplethMapOpDesc.scala index f9774ce80f4..f68f5a10022 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/choroplethMap/ChoroplethMapOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/choroplethMap/ChoroplethMapOpDesc.scala @@ -70,12 +70,10 @@ class ChoroplethMapOpDesc extends PythonOperatorDescriptor { } override def operatorInfo: OperatorInfo = - OperatorInfo( + OperatorInfo.forVisualization( "Choropleth Map", "Visualize data using a Choropleth Map that uses shades of colors to show differences in properties or quantities between regions", OperatorGroupConstants.VISUALIZATION_ADVANCED_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/continuousErrorBands/ContinuousErrorBandsOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/continuousErrorBands/ContinuousErrorBandsOpDesc.scala index b21c882ed35..cf57a1aef18 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/continuousErrorBands/ContinuousErrorBandsOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/continuousErrorBands/ContinuousErrorBandsOpDesc.scala @@ -57,12 +57,10 @@ class ContinuousErrorBandsOpDesc extends PythonOperatorDescriptor { } override def operatorInfo: OperatorInfo = - OperatorInfo( + OperatorInfo.forVisualization( "Continuous Error Bands", "Visualize error or uncertainty along a continuous line", OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/contourPlot/ContourPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/contourPlot/ContourPlotOpDesc.scala index dd0f41b0faa..b0cd8011072 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/contourPlot/ContourPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/contourPlot/ContourPlotOpDesc.scala @@ -77,12 +77,10 @@ class ContourPlotOpDesc extends PythonOperatorDescriptor { } override def operatorInfo: OperatorInfo = - OperatorInfo( + OperatorInfo.forVisualization( "Contour Plot", "Displays terrain or gradient variations in a Contour Plot", OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) override def generatePythonCode(): String = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/dendrogram/DendrogramOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/dendrogram/DendrogramOpDesc.scala index d33ff2708f1..82356a6e2a0 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/dendrogram/DendrogramOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/dendrogram/DendrogramOpDesc.scala @@ -64,12 +64,10 @@ class DendrogramOpDesc extends PythonOperatorDescriptor { } override def operatorInfo: OperatorInfo = - OperatorInfo( + OperatorInfo.forVisualization( "Dendrogram", "Visualize data in a Dendrogram", - OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) + OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP ) private def createDendrogram(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/dumbbellPlot/DumbbellPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/dumbbellPlot/DumbbellPlotOpDesc.scala index 88b6caae614..31c3d719e7b 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/dumbbellPlot/DumbbellPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/dumbbellPlot/DumbbellPlotOpDesc.scala @@ -97,12 +97,10 @@ class DumbbellPlotOpDesc extends PythonOperatorDescriptor { } override def operatorInfo: OperatorInfo = - OperatorInfo( + OperatorInfo.forVisualization( "Dumbbell Plot", "Visualize data in a Dumbbell Plots. A dumbbell plots (also known as a lollipop chart) is typically used to compare two distinct values or time points for the same entity.", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def createPlotlyDumbbellLineFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/figureFactoryTable/FigureFactoryTableOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/figureFactoryTable/FigureFactoryTableOpDesc.scala index 11168488b74..8a4ca5c5959 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/figureFactoryTable/FigureFactoryTableOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/figureFactoryTable/FigureFactoryTableOpDesc.scala @@ -117,12 +117,10 @@ class FigureFactoryTableOpDesc extends PythonOperatorDescriptor { } override def operatorInfo: OperatorInfo = { - OperatorInfo( + OperatorInfo.forVisualization( "Figure Factory Table", "Visualize data in a figure factory table", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) } diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/filledAreaPlot/FilledAreaPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/filledAreaPlot/FilledAreaPlotOpDesc.scala index d8d47696157..635534c5952 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/filledAreaPlot/FilledAreaPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/filledAreaPlot/FilledAreaPlotOpDesc.scala @@ -82,12 +82,10 @@ class FilledAreaPlotOpDesc extends PythonOperatorDescriptor { } override def operatorInfo: OperatorInfo = - OperatorInfo( + OperatorInfo.forVisualization( "Filled Area Plot", "Visualize data in filled area plot", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/funnelPlot/FunnelPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/funnelPlot/FunnelPlotOpDesc.scala index 89c1cb0b104..02524f68eee 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/funnelPlot/FunnelPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/funnelPlot/FunnelPlotOpDesc.scala @@ -67,12 +67,10 @@ class FunnelPlotOpDesc extends PythonOperatorDescriptor { } override def operatorInfo: OperatorInfo = - OperatorInfo( + OperatorInfo.forVisualization( "Funnel Plot", "Visualize data in a Funnel Plot", OperatorGroupConstants.VISUALIZATION_FINANCIAL_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) private def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ganttChart/GanttChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ganttChart/GanttChartOpDesc.scala index 9a1f32e43ef..950addb92a9 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ganttChart/GanttChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ganttChart/GanttChartOpDesc.scala @@ -90,12 +90,10 @@ class GanttChartOpDesc extends PythonOperatorDescriptor { } override def operatorInfo: OperatorInfo = - OperatorInfo( + OperatorInfo.forVisualization( "Gantt Chart", "A Gantt chart is a type of bar chart that illustrates a project schedule. The chart lists the tasks to be performed on the vertical axis, and time intervals on the horizontal axis. The width of the horizontal bars in the graph shows the duration of each activity.", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/gaugeChart/GaugeChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/gaugeChart/GaugeChartOpDesc.scala index c890786eeff..4f771719e3c 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/gaugeChart/GaugeChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/gaugeChart/GaugeChartOpDesc.scala @@ -61,12 +61,10 @@ class GaugeChartOpDesc extends PythonOperatorDescriptor { } override def operatorInfo: OperatorInfo = - OperatorInfo( + OperatorInfo.forVisualization( "Gauge Chart", "Visualize a single value with a radial gauge chart, showing progress towards a goal with optional steps, threshold, and delta.", - OperatorGroupConstants.VISUALIZATION_FINANCIAL_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) + OperatorGroupConstants.VISUALIZATION_FINANCIAL_GROUP ) private val mapper = new ObjectMapper() diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/heatMap/HeatMapOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/heatMap/HeatMapOpDesc.scala index d38dfdf4c90..66d1a055162 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/heatMap/HeatMapOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/heatMap/HeatMapOpDesc.scala @@ -60,12 +60,10 @@ class HeatMapOpDesc extends PythonOperatorDescriptor { } override def operatorInfo: OperatorInfo = - OperatorInfo( + OperatorInfo.forVisualization( "Heatmap", "Visualize data in a HeatMap Chart", OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) private def createHeatMap(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/hierarchychart/HierarchyChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/hierarchychart/HierarchyChartOpDesc.scala index d46549111c2..25bbd9627bf 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/hierarchychart/HierarchyChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/hierarchychart/HierarchyChartOpDesc.scala @@ -75,12 +75,10 @@ class HierarchyChartOpDesc extends PythonOperatorDescriptor { } override def operatorInfo: OperatorInfo = - OperatorInfo( + OperatorInfo.forVisualization( "Hierarchy Chart", "Visualize data in hierarchy", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) private def getHierarchyAttributesInPython: String = diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/histogram/HistogramChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/histogram/HistogramChartOpDesc.scala index 0c1a29b781b..ed7f74733b6 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/histogram/HistogramChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/histogram/HistogramChartOpDesc.scala @@ -61,12 +61,10 @@ class HistogramChartOpDesc extends PythonOperatorDescriptor { var pattern: EncodableString = "" override def operatorInfo: OperatorInfo = - OperatorInfo( + OperatorInfo.forVisualization( "Histogram", "Visualize data in a Histogram Chart", - OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) + OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP ) def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/histogram2d/Histogram2DOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/histogram2d/Histogram2DOpDesc.scala index 88167a8353f..8756acd982b 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/histogram2d/Histogram2DOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/histogram2d/Histogram2DOpDesc.scala @@ -61,12 +61,10 @@ class Histogram2DOpDesc extends PythonOperatorDescriptor { var normalize: NormalizationType = NormalizationType.DENSITY override def operatorInfo: OperatorInfo = - OperatorInfo( + OperatorInfo.forVisualization( "Histogram2D", "Displays a bivariate histogram as a density heatmap", - OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) + OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP ) override def getOutputSchemas( diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/htmlviz/HtmlVizOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/htmlviz/HtmlVizOpDesc.scala index f5b9bb81e7c..4a8d4ae3f6d 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/htmlviz/HtmlVizOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/htmlviz/HtmlVizOpDesc.scala @@ -70,12 +70,10 @@ class HtmlVizOpDesc extends LogicalOp { } override def operatorInfo: OperatorInfo = - OperatorInfo( + OperatorInfo.forVisualization( "HTML Visualizer", "Render the result of HTML content", OperatorGroupConstants.VISUALIZATION_MEDIA_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) } diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/lineChart/LineChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/lineChart/LineChartOpDesc.scala index 2400b53e11b..37cadeba933 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/lineChart/LineChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/lineChart/LineChartOpDesc.scala @@ -58,12 +58,10 @@ class LineChartOpDesc extends PythonOperatorDescriptor { } override def operatorInfo: OperatorInfo = - OperatorInfo( + OperatorInfo.forVisualization( "Line Chart", "View the result in line chart", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/nestedTable/NestedTableOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/nestedTable/NestedTableOpDesc.scala index aaaf4cdc95b..cbe4bb02604 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/nestedTable/NestedTableOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/nestedTable/NestedTableOpDesc.scala @@ -47,12 +47,10 @@ class NestedTableOpDesc extends PythonOperatorDescriptor { } override def operatorInfo: OperatorInfo = - OperatorInfo( + OperatorInfo.forVisualization( "Nested Table", "Visualize Data in a Depth Two Nested Table", OperatorGroupConstants.VISUALIZATION_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) private def createNestedTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/networkGraph/NetworkGraphOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/networkGraph/NetworkGraphOpDesc.scala index 58ae0c00cbc..017c41e91c4 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/networkGraph/NetworkGraphOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/networkGraph/NetworkGraphOpDesc.scala @@ -58,12 +58,10 @@ class NetworkGraphOpDesc extends PythonOperatorDescriptor { } override def operatorInfo: OperatorInfo = - OperatorInfo( + OperatorInfo.forVisualization( "Network Graph", "Visualize data in a network graph", OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/pieChart/PieChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/pieChart/PieChartOpDesc.scala index 75e532e2d89..52465888d31 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/pieChart/PieChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/pieChart/PieChartOpDesc.scala @@ -69,12 +69,10 @@ class PieChartOpDesc extends PythonOperatorDescriptor { } override def operatorInfo: OperatorInfo = - OperatorInfo( + OperatorInfo.forVisualization( "Pie Chart", "Visualize data in a Pie Chart", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/quiverPlot/QuiverPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/quiverPlot/QuiverPlotOpDesc.scala index 8246131fc2d..fc5ed3b6699 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/quiverPlot/QuiverPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/quiverPlot/QuiverPlotOpDesc.scala @@ -74,12 +74,10 @@ class QuiverPlotOpDesc extends PythonOperatorDescriptor { } override def operatorInfo: OperatorInfo = - OperatorInfo( + OperatorInfo.forVisualization( "Quiver Plot", "Visualize vector data in a Quiver Plot", - OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) + OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP ) //data cleaning for missing value diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/radarChart/RadarChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/radarChart/RadarChartOpDesc.scala index ae4c383ea1a..f7586d4b3e4 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/radarChart/RadarChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/radarChart/RadarChartOpDesc.scala @@ -70,12 +70,10 @@ class RadarChartOpDesc extends PythonOperatorDescriptor { var fillOpacity: Double = 0.5 override def operatorInfo: OperatorInfo = - OperatorInfo( + OperatorInfo.forVisualization( "Radar Chart", "Visualize data in a Radar Chart", OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) override def getOutputSchemas( diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/rangeSlider/RangeSliderOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/rangeSlider/RangeSliderOpDesc.scala index 2a13db3e035..3c10c8dcee0 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/rangeSlider/RangeSliderOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/rangeSlider/RangeSliderOpDesc.scala @@ -72,12 +72,10 @@ class RangeSliderOpDesc extends PythonOperatorDescriptor { } override def operatorInfo: OperatorInfo = - OperatorInfo( + OperatorInfo.forVisualization( "Range Slider", "Visualize data in a Range Slider", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/sankeyDiagram/SankeyDiagramOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/sankeyDiagram/SankeyDiagramOpDesc.scala index 0261baf741c..2b345438b8b 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/sankeyDiagram/SankeyDiagramOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/sankeyDiagram/SankeyDiagramOpDesc.scala @@ -66,12 +66,10 @@ class SankeyDiagramOpDesc extends PythonOperatorDescriptor { } override def operatorInfo: OperatorInfo = - OperatorInfo( + OperatorInfo.forVisualization( "Sankey Diagram", "Visualize data using a Sankey diagram", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/scatter3DChart/Scatter3dChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/scatter3DChart/Scatter3dChartOpDesc.scala index e20ad4a8d1e..8795c210dc8 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/scatter3DChart/Scatter3dChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/scatter3DChart/Scatter3dChartOpDesc.scala @@ -66,12 +66,10 @@ class Scatter3dChartOpDesc extends PythonOperatorDescriptor { } override def operatorInfo: OperatorInfo = - OperatorInfo( + OperatorInfo.forVisualization( "Scatter3D Chart", "Visualize data in a Scatter3D Plot", OperatorGroupConstants.VISUALIZATION_ADVANCED_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) private def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/scatterplot/ScatterplotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/scatterplot/ScatterplotOpDesc.scala index 92cf4845993..b0f21d09ee3 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/scatterplot/ScatterplotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/scatterplot/ScatterplotOpDesc.scala @@ -102,12 +102,10 @@ class ScatterplotOpDesc extends PythonOperatorDescriptor { } override def operatorInfo: OperatorInfo = - OperatorInfo( + OperatorInfo.forVisualization( "Scatter Plot", "View the result in a scatterplot", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def manipulateTable(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/stripChart/StripChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/stripChart/StripChartOpDesc.scala index aea4d4afb4f..fabaccaa7c6 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/stripChart/StripChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/stripChart/StripChartOpDesc.scala @@ -65,12 +65,10 @@ class StripChartOpDesc extends PythonOperatorDescriptor { } override def operatorInfo: OperatorInfo = - OperatorInfo( + OperatorInfo.forVisualization( "Strip Chart", "Visualize distribution of data points as a strip plot", - OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) + OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP ) override def generatePythonCode(): String = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/tablesChart/TablesPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/tablesChart/TablesPlotOpDesc.scala index 0f71be4ab94..30ab12b4d45 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/tablesChart/TablesPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/tablesChart/TablesPlotOpDesc.scala @@ -95,12 +95,10 @@ class TablesPlotOpDesc extends PythonOperatorDescriptor { } override def operatorInfo: OperatorInfo = { - OperatorInfo( + OperatorInfo.forVisualization( "Tables Plot", "Visualize data in a table chart.", OperatorGroupConstants.VISUALIZATION_BASIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) } diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ternaryPlot/TernaryPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ternaryPlot/TernaryPlotOpDesc.scala index 14db98ee20b..598fb32b031 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ternaryPlot/TernaryPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/ternaryPlot/TernaryPlotOpDesc.scala @@ -71,12 +71,10 @@ class TernaryPlotOpDesc extends PythonOperatorDescriptor { // OperatorInfo instance describing ternary plot override def operatorInfo: OperatorInfo = - OperatorInfo( + OperatorInfo.forVisualization( userFriendlyName = "Ternary Plot", operatorDescription = "Points are graphed on a Ternary Plot using 3 specified data fields", operatorGroupName = OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) override def getOutputSchemas( diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/treeplot/TreeplotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/treeplot/TreePlotOpDesc.scala similarity index 98% rename from common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/treeplot/TreeplotOpDesc.scala rename to common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/treeplot/TreePlotOpDesc.scala index 60829fe4915..2b718b6e17a 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/treeplot/TreeplotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/treeplot/TreePlotOpDesc.scala @@ -46,13 +46,11 @@ class TreePlotOpDesc extends PythonOperatorDescriptor { var edgeListColumn: EncodableString = "" override def operatorInfo: OperatorInfo = - OperatorInfo( + OperatorInfo.forVisualization( userFriendlyName = "Tree Plot", operatorDescription = "Visualize hierarchical data as a top-down, interactive, auto-sizing tree", - operatorGroupName = OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) + operatorGroupName = OperatorGroupConstants.VISUALIZATION_STATISTICAL_GROUP ) override def getOutputSchemas( diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/urlviz/UrlVizOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/urlviz/UrlVizOpDesc.scala index e367cbc3012..22924c3a4e1 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/urlviz/UrlVizOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/urlviz/UrlVizOpDesc.scala @@ -81,12 +81,10 @@ class UrlVizOpDesc extends LogicalOp { } override def operatorInfo: OperatorInfo = - OperatorInfo( + OperatorInfo.forVisualization( "URL Visualizer", "Render the content of URL", - OperatorGroupConstants.VISUALIZATION_MEDIA_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) + OperatorGroupConstants.VISUALIZATION_MEDIA_GROUP ) } diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/volcanoPlot/VolcanoPlotOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/volcanoPlot/VolcanoPlotOpDesc.scala index e4ac94b178a..0ac5b175cea 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/volcanoPlot/VolcanoPlotOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/volcanoPlot/VolcanoPlotOpDesc.scala @@ -51,12 +51,10 @@ class VolcanoPlotOpDesc extends PythonOperatorDescriptor { @AutofillAttributeName var pvalueColumn: EncodableString = "" override def operatorInfo: OperatorInfo = - OperatorInfo( + OperatorInfo.forVisualization( userFriendlyName = "Volcano Plot", operatorDescription = "Displays statistical significance versus effect size", operatorGroupName = OperatorGroupConstants.VISUALIZATION_SCIENTIFIC_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) override def getOutputSchemas( diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/waterfallChart/WaterfallChartOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/waterfallChart/WaterfallChartOpDesc.scala index 8586b1868c4..df409d9ddfe 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/waterfallChart/WaterfallChartOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/waterfallChart/WaterfallChartOpDesc.scala @@ -55,12 +55,10 @@ class WaterfallChartOpDesc extends PythonOperatorDescriptor { } override def operatorInfo: OperatorInfo = - OperatorInfo( + OperatorInfo.forVisualization( "Waterfall Chart", "Visualize data as a waterfall chart", OperatorGroupConstants.VISUALIZATION_FINANCIAL_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) ) def createPlotlyFigure(): PythonTemplateBuilder = { diff --git a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/wordCloud/WordCloudOpDesc.scala b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/wordCloud/WordCloudOpDesc.scala index 9daf6dd67b3..d484bf56ab2 100644 --- a/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/wordCloud/WordCloudOpDesc.scala +++ b/common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/wordCloud/WordCloudOpDesc.scala @@ -55,12 +55,10 @@ class WordCloudOpDesc extends PythonOperatorDescriptor { } override def operatorInfo: OperatorInfo = - OperatorInfo( + OperatorInfo.forVisualization( "Word Cloud", "Generate word cloud for texts", - OperatorGroupConstants.VISUALIZATION_MEDIA_GROUP, - inputPorts = List(InputPort()), - outputPorts = List(OutputPort(mode = OutputMode.SINGLE_SNAPSHOT)) + OperatorGroupConstants.VISUALIZATION_MEDIA_GROUP ) def manipulateTable(): PythonTemplateBuilder = {