From 66e110c47b87b52e830115c6d6d4cdff98224cfa Mon Sep 17 00:00:00 2001 From: Ritchie Martori Date: Wed, 20 Nov 2024 15:16:51 -0700 Subject: [PATCH 1/3] add open modal operator --- .../operators/src/built-in-operators.ts | 30 +++++++++++++++++++ fiftyone/operators/operations.py | 10 +++++++ 2 files changed, 40 insertions(+) diff --git a/app/packages/operators/src/built-in-operators.ts b/app/packages/operators/src/built-in-operators.ts index 3edea7378c3..2d67898aba8 100644 --- a/app/packages/operators/src/built-in-operators.ts +++ b/app/packages/operators/src/built-in-operators.ts @@ -1361,6 +1361,35 @@ export class EnableQueryPerformance extends Operator { } } +class SetExpanded extends Operator { + _builtIn = true; + get config(): OperatorConfig { + return new OperatorConfig({ + name: "set_expanded", + label: "Set expanded", + unlisted: true, + }); + } + async resolveInput(): Promise { + const inputs = new types.Object(); + inputs.str("id", { label: "Sample ID" }); + inputs.str("group_id", { label: "Group ID" }); + + return new types.Property(inputs); + } + useHooks(): object { + return { + setExpanded: fos.useSetExpandedSample(), + }; + } + async execute({ hooks, params }: ExecutionContext) { + hooks.setExpanded({ + id: params.id, + groupId: params.group_id, + }); + } +} + export function registerBuiltInOperators() { try { _registerBuiltInOperator(CopyViewAsJSON); @@ -1412,6 +1441,7 @@ export function registerBuiltInOperators() { _registerBuiltInOperator(SetFrameNumber); _registerBuiltInOperator(DisableQueryPerformance); _registerBuiltInOperator(EnableQueryPerformance); + _registerBuiltInOperator(SetExpanded); } catch (e) { console.error("Error registering built-in operators"); console.error(e); diff --git a/fiftyone/operators/operations.py b/fiftyone/operators/operations.py index f10c0a00f41..a6e737426c4 100644 --- a/fiftyone/operators/operations.py +++ b/fiftyone/operators/operations.py @@ -665,6 +665,16 @@ def set_group_slice(self, slice): """ return self._ctx.trigger("set_group_slice", {"slice": slice}) + def set_expanded(self, id=None, group_id=None): + """Open a modal for the specified sample or group in the App. + + Args: + id (None): the ID of the sample or group to view in the modal + """ + return self._ctx.trigger( + "set_expanded", {"id": id, "group_id": group_id} + ) + def _serialize_view(view): return json.loads(json_util.dumps(view._serialize())) From 47109b3b1c8bb219b69c19db64acb6898a9024b7 Mon Sep 17 00:00:00 2001 From: Ritchie Martori Date: Thu, 21 Nov 2024 14:18:44 -0700 Subject: [PATCH 2/3] rename open_sample ops --- .../operators/src/built-in-operators.ts | 30 +++++++++++++++---- fiftyone/operators/operations.py | 9 ++++-- 2 files changed, 32 insertions(+), 7 deletions(-) diff --git a/app/packages/operators/src/built-in-operators.ts b/app/packages/operators/src/built-in-operators.ts index 2d67898aba8..67e7ff6b096 100644 --- a/app/packages/operators/src/built-in-operators.ts +++ b/app/packages/operators/src/built-in-operators.ts @@ -1361,12 +1361,12 @@ export class EnableQueryPerformance extends Operator { } } -class SetExpanded extends Operator { +class OpenSample extends Operator { _builtIn = true; get config(): OperatorConfig { return new OperatorConfig({ - name: "set_expanded", - label: "Set expanded", + name: "open_sample", + label: "Open Sample", unlisted: true, }); } @@ -1385,11 +1385,30 @@ class SetExpanded extends Operator { async execute({ hooks, params }: ExecutionContext) { hooks.setExpanded({ id: params.id, - groupId: params.group_id, + group_id: params.group_id, }); } } +class CloseSample extends Operator { + _builtIn = true; + get config(): OperatorConfig { + return new OperatorConfig({ + name: "close_sample", + label: "Close Sample", + unlisted: true, + }); + } + useHooks(): object { + return { + close: fos.useClearModal(), + }; + } + async execute({ hooks, params }: ExecutionContext) { + hooks.close(); + } +} + export function registerBuiltInOperators() { try { _registerBuiltInOperator(CopyViewAsJSON); @@ -1441,7 +1460,8 @@ export function registerBuiltInOperators() { _registerBuiltInOperator(SetFrameNumber); _registerBuiltInOperator(DisableQueryPerformance); _registerBuiltInOperator(EnableQueryPerformance); - _registerBuiltInOperator(SetExpanded); + _registerBuiltInOperator(OpenSample); + _registerBuiltInOperator(CloseSample); } catch (e) { console.error("Error registering built-in operators"); console.error(e); diff --git a/fiftyone/operators/operations.py b/fiftyone/operators/operations.py index a6e737426c4..5f9260d7950 100644 --- a/fiftyone/operators/operations.py +++ b/fiftyone/operators/operations.py @@ -665,16 +665,21 @@ def set_group_slice(self, slice): """ return self._ctx.trigger("set_group_slice", {"slice": slice}) - def set_expanded(self, id=None, group_id=None): + def open_sample(self, id=None, group_id=None): """Open a modal for the specified sample or group in the App. Args: id (None): the ID of the sample or group to view in the modal + group_id (None): the ID of the group to view in the modal """ return self._ctx.trigger( - "set_expanded", {"id": id, "group_id": group_id} + "open_sample", {"id": id, "group_id": group_id} ) + def close_sample(self): + """Close the modal for the sample or group in the App.""" + return self._ctx.trigger("close_sample") + def _serialize_view(view): return json.loads(json_util.dumps(view._serialize())) From 7a4899b0d34655915e57deb6b6e669ff0d072fa1 Mon Sep 17 00:00:00 2001 From: brimoor Date: Fri, 22 Nov 2024 23:39:04 -0500 Subject: [PATCH 3/3] consistent tense --- fiftyone/operators/operations.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/fiftyone/operators/operations.py b/fiftyone/operators/operations.py index 5f9260d7950..e0038aadfea 100644 --- a/fiftyone/operators/operations.py +++ b/fiftyone/operators/operations.py @@ -666,18 +666,18 @@ def set_group_slice(self, slice): return self._ctx.trigger("set_group_slice", {"slice": slice}) def open_sample(self, id=None, group_id=None): - """Open a modal for the specified sample or group in the App. + """Opens the specified sample or group in the App's sample modal. Args: - id (None): the ID of the sample or group to view in the modal - group_id (None): the ID of the group to view in the modal + id (None): a sample ID to open in the modal + group_id (None): a group ID to open in the modal """ return self._ctx.trigger( "open_sample", {"id": id, "group_id": group_id} ) def close_sample(self): - """Close the modal for the sample or group in the App.""" + """Closes the App's sample modal.""" return self._ctx.trigger("close_sample")