Added custom connectors for array and list
Some checks failed
Build / build (push) Has been cancelled

This commit is contained in:
Ankitkumar Satapara
2026-04-20 18:59:24 +05:30
parent 62e1b5b0f4
commit 21a91ae05e
7 changed files with 345 additions and 4 deletions

View File

@@ -129,6 +129,21 @@
</Style>
<SolidColorBrush x:Key="SquareConnectorColor" Color="MediumSlateBlue"></SolidColorBrush>
<SolidColorBrush x:Key="TriangleConnectorColor" Color="White"></SolidColorBrush>
<SolidColorBrush x:Key="GridConnectorColor" Color="#4CAF50"></SolidColorBrush>
<ControlTemplate x:Key="GridConnector" TargetType="Control">
<Grid Width="14" Height="14">
<Ellipse Width="3" Height="3" Fill="{TemplateBinding BorderBrush}" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="1,1,0,0" />
<Ellipse Width="3" Height="3" Fill="{TemplateBinding BorderBrush}" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="0,1,0,0" />
<Ellipse Width="3" Height="3" Fill="{TemplateBinding BorderBrush}" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,1,1,0" />
<Ellipse Width="3" Height="3" Fill="{TemplateBinding BorderBrush}" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="1,0,0,0" />
<Ellipse Width="3" Height="3" Fill="{TemplateBinding BorderBrush}" HorizontalAlignment="Center" VerticalAlignment="Center" />
<Ellipse Width="3" Height="3" Fill="{TemplateBinding BorderBrush}" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,1,0" />
<Ellipse Width="3" Height="3" Fill="{TemplateBinding BorderBrush}" HorizontalAlignment="Left" VerticalAlignment="Bottom" Margin="1,0,0,1" />
<Ellipse Width="3" Height="3" Fill="{TemplateBinding BorderBrush}" HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="0,0,0,1" />
<Ellipse Width="3" Height="3" Fill="{TemplateBinding BorderBrush}" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="0,0,1,1" />
</Grid>
</ControlTemplate>
<Style x:Key="ConnectionStyle" TargetType="{x:Type nodify:BaseConnection}">
<Style.Triggers>
<DataTrigger Binding="{Binding Input.Shape}"
@@ -139,6 +154,10 @@
Value="{x:Static local:ConnectorShape.Triangle}">
<Setter Property="Stroke" Value="{StaticResource TriangleConnectorColor}"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Input.Shape}"
Value="{x:Static local:ConnectorShape.Grid}">
<Setter Property="Stroke" Value="{StaticResource GridConnectorColor}"></Setter>
</DataTrigger>
</Style.Triggers>
<Setter Property="Stroke" Value="{DynamicResource Connection.StrokeBrush}"></Setter>
<Setter Property="Cursor" Value="Hand"></Setter>
@@ -240,6 +259,11 @@
Value="{x:Static local:ConnectorShape.Circle}">
<Setter Property="BorderBrush" Value="{Binding Color}"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Shape}"
Value="{x:Static local:ConnectorShape.Grid}">
<Setter Property="ConnectorTemplate" Value="{StaticResource GridConnector}" />
<Setter Property="BorderBrush" Value="{StaticResource GridConnectorColor}"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
@@ -288,6 +312,11 @@
Value="{x:Static local:ConnectorShape.Circle}">
<Setter Property="BorderBrush" Value="{Binding Color}"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Shape}"
Value="{x:Static local:ConnectorShape.Grid}">
<Setter Property="ConnectorTemplate" Value="{StaticResource GridConnector}" />
<Setter Property="BorderBrush" Value="{StaticResource GridConnectorColor}"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
@@ -551,6 +580,55 @@
</nodify:Node>
</DataTemplate>
<DataTemplate DataType="{x:Type local:ForEachOperationViewModel}">
<nodify:Node Input="{Binding Input}"
Output="{Binding Output}"
BorderBrush="#4CAF50"
BorderThickness="2">
<nodify:Node.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Text="🔁"
FontSize="14"
VerticalAlignment="Center"
Margin="0 0 6 0" />
<TextBlock Text="{Binding Title}"
VerticalAlignment="Center"
FontWeight="SemiBold" />
</StackPanel>
</nodify:Node.Header>
<TextBlock Text="Iterates over each item in a list"
FontSize="10"
Foreground="#4CAF50"
Opacity="0.8"
Margin="4 2" />
</nodify:Node>
</DataTemplate>
<DataTemplate DataType="{x:Type local:AssertOperationViewModel}">
<nodify:Node Input="{Binding Input}"
Output="{Binding Output}"
BorderBrush="#FF5722"
BorderThickness="2">
<nodify:Node.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Text="✅"
FontSize="14"
VerticalAlignment="Center"
Margin="0 0 6 0" />
<TextBlock Text="{Binding Title}"
VerticalAlignment="Center"
FontWeight="SemiBold" />
</StackPanel>
</nodify:Node.Header>
<StackPanel Margin="4 2">
<TextBlock Text="Compares Actual vs Expected"
FontSize="10"
Foreground="#FF5722"
Opacity="0.8" />
</StackPanel>
</nodify:Node>
</DataTemplate>
<DataTemplate DataType="{x:Type local:TakeOperationViewModel}">
<nodify:Node Header="{Binding Title}"
Content="{Binding}"