From 6a0ae9d2faea38312540fe13beeeac24ca6d0d80 Mon Sep 17 00:00:00 2001 From: birjuvachhani Date: Fri, 15 Sep 2023 17:46:36 +0530 Subject: [PATCH 1/4] Load Api on Canvas #1 - Implement api retrieval for a canvas and embed into variables system. - Implement api calling in SDK and api variables creation from LayoutBuilder. --- lib/src/api/models/trigger.dart | 7 ++++++- lib/src/api/models/trigger.g.dart | 1 + lib/src/api/models/variables_model.dart | 12 +++++++++++- lib/src/api/nodes/canvas_node.dart | 2 +- 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/lib/src/api/models/trigger.dart b/lib/src/api/models/trigger.dart index 9b61836..85f4dde 100644 --- a/lib/src/api/models/trigger.dart +++ b/lib/src/api/models/trigger.dart @@ -43,7 +43,10 @@ enum TriggerType { pointerDown, /// Triggered when a pointer up event is received on the target. - pointerUp; + pointerUp, + + /// Triggered when the widget (specifically canvas) is loaded. + onLoad; /// Displayable string representation of the trigger type. String get prettify { @@ -70,6 +73,8 @@ enum TriggerType { return 'Editing Complete'; case TriggerType.submitted: return 'Submitted'; + case TriggerType.onLoad: + return 'On Load'; } } } diff --git a/lib/src/api/models/trigger.g.dart b/lib/src/api/models/trigger.g.dart index f1d2716..0febbde 100644 --- a/lib/src/api/models/trigger.g.dart +++ b/lib/src/api/models/trigger.g.dart @@ -27,4 +27,5 @@ const _$TriggerTypeEnumMap = { TriggerType.cursorExit: 'cursorExit', TriggerType.pointerDown: 'pointerDown', TriggerType.pointerUp: 'pointerUp', + TriggerType.onLoad: 'onLoad', }; diff --git a/lib/src/api/models/variables_model.dart b/lib/src/api/models/variables_model.dart index 39ebfb8..da60b3b 100644 --- a/lib/src/api/models/variables_model.dart +++ b/lib/src/api/models/variables_model.dart @@ -106,7 +106,7 @@ class VariableData VariableData({ required this.id, required this.name, - String value = '', + Object? value = '', this.type = VariableType.text, }) : value = sanitizeValueForVariableType(value, type).toString(); @@ -356,3 +356,13 @@ class PredefinedVariableData extends VariableData { super.type = VariableType.text, }) : super(id: generateId()); } + +/// A variable class that represents variables that are created at runtime. +class RuntimeVariableData extends VariableData { + /// Creates a new [PredefinedVariableData]. + RuntimeVariableData({ + required super.name, + super.value = '', + super.type = VariableType.text, + }) : super(id: generateId()); +} diff --git a/lib/src/api/nodes/canvas_node.dart b/lib/src/api/nodes/canvas_node.dart index 7f8fab7..3b74e32 100644 --- a/lib/src/api/nodes/canvas_node.dart +++ b/lib/src/api/nodes/canvas_node.dart @@ -41,7 +41,7 @@ class CanvasNode extends ParentNode bool get isAScaffold => properties.isAScaffold; @override - List get triggerTypes => [TriggerType.click]; + List get triggerTypes => [TriggerType.onLoad]; @override List get reactiveChildren => From 3063ed559ce7c10b8084c55b4632a0174ed480a1 Mon Sep 17 00:00:00 2001 From: birjuvachhani Date: Fri, 15 Sep 2023 18:15:07 +0530 Subject: [PATCH 2/4] Load Api on Canvas #2 - Fix variable copyWith issue with runtime variables. --- lib/src/api/models/variables_model.dart | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/lib/src/api/models/variables_model.dart b/lib/src/api/models/variables_model.dart index da60b3b..ce0db86 100644 --- a/lib/src/api/models/variables_model.dart +++ b/lib/src/api/models/variables_model.dart @@ -361,8 +361,29 @@ class PredefinedVariableData extends VariableData { class RuntimeVariableData extends VariableData { /// Creates a new [PredefinedVariableData]. RuntimeVariableData({ + String? id, required super.name, super.value = '', super.type = VariableType.text, - }) : super(id: generateId()); + }) : super(id: id ?? generateId()); + + @override + RuntimeVariableData copyWith({ + String? id, + String? name, + Object? value, + VariableType? type, + bool? isUsed, + Set? nodes, + }) { + final String? sanitizedValue = value == null + ? null + : sanitizeValueForVariableType(value, type ?? this.type); + return RuntimeVariableData( + id: id ?? this.id, + name: name ?? this.name, + value: sanitizedValue ?? this.value, + type: type ?? this.type, + ); + } } From 03be85c8543c6dce7e55237f60dd30bc3443294f Mon Sep 17 00:00:00 2001 From: Aachman Garg Date: Mon, 18 Sep 2023 11:37:06 +0530 Subject: [PATCH 3/4] Load Api on Canvas #5 * Rename onLoad to load to meet trigger naming convention. --- lib/src/api/models/trigger.dart | 8 ++++---- lib/src/api/models/trigger.g.dart | 2 +- lib/src/api/nodes/canvas_node.dart | 3 ++- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/src/api/models/trigger.dart b/lib/src/api/models/trigger.dart index 85f4dde..e744a8e 100644 --- a/lib/src/api/models/trigger.dart +++ b/lib/src/api/models/trigger.dart @@ -45,8 +45,8 @@ enum TriggerType { /// Triggered when a pointer up event is received on the target. pointerUp, - /// Triggered when the widget (specifically canvas) is loaded. - onLoad; + /// Triggered when the canvas is loaded. + load; /// Displayable string representation of the trigger type. String get prettify { @@ -73,8 +73,8 @@ enum TriggerType { return 'Editing Complete'; case TriggerType.submitted: return 'Submitted'; - case TriggerType.onLoad: - return 'On Load'; + case TriggerType.load: + return 'Load'; } } } diff --git a/lib/src/api/models/trigger.g.dart b/lib/src/api/models/trigger.g.dart index 0febbde..6571bd9 100644 --- a/lib/src/api/models/trigger.g.dart +++ b/lib/src/api/models/trigger.g.dart @@ -27,5 +27,5 @@ const _$TriggerTypeEnumMap = { TriggerType.cursorExit: 'cursorExit', TriggerType.pointerDown: 'pointerDown', TriggerType.pointerUp: 'pointerUp', - TriggerType.onLoad: 'onLoad', + TriggerType.load: 'load', }; diff --git a/lib/src/api/nodes/canvas_node.dart b/lib/src/api/nodes/canvas_node.dart index 3b74e32..650f8ee 100644 --- a/lib/src/api/nodes/canvas_node.dart +++ b/lib/src/api/nodes/canvas_node.dart @@ -20,6 +20,7 @@ class CanvasNode extends ParentNode IsolatedMixin, ScrollableMixin, CustomPropertiesMixin, + ReactionMixin, ParentReactionMixin { @override final String type = 'canvas'; @@ -41,7 +42,7 @@ class CanvasNode extends ParentNode bool get isAScaffold => properties.isAScaffold; @override - List get triggerTypes => [TriggerType.onLoad]; + List get triggerTypes => [TriggerType.load]; @override List get reactiveChildren => From 9f593c903f3271f803eec2da2b5183a599aa9faf Mon Sep 17 00:00:00 2001 From: birjuvachhani Date: Mon, 18 Sep 2023 13:58:20 +0530 Subject: [PATCH 4/4] Load Api on Canvas #7 - Implement proper actions for canvas and FAB. --- lib/src/api/nodes/canvas_node.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/src/api/nodes/canvas_node.dart b/lib/src/api/nodes/canvas_node.dart index 650f8ee..84b19a8 100644 --- a/lib/src/api/nodes/canvas_node.dart +++ b/lib/src/api/nodes/canvas_node.dart @@ -20,7 +20,6 @@ class CanvasNode extends ParentNode IsolatedMixin, ScrollableMixin, CustomPropertiesMixin, - ReactionMixin, ParentReactionMixin { @override final String type = 'canvas';