Skip to content

Commit 9ed7e1d

Browse files
authored
Merge pull request #135 from Blazor-Diagrams/develop
Version 2.1.4
2 parents 664c337 + aa1e963 commit 9ed7e1d

File tree

14 files changed

+354
-11
lines changed

14 files changed

+354
-11
lines changed

CHANGELOG.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,19 @@ All notable changes to this project will be documented in this file.
44
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
55
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
66

7+
## Diagrams (2.1.4) - 2021-08-29
8+
9+
### Added
10+
11+
- `MouseDoubleClick` (500ms interval) event in `Diagram`.
12+
- `GetScreenPoint` in `Diagram` in order to get the screen points from a diagram point (e.g. node position).
13+
- `Title` property in `NodeModel`, used by the default node widget.
14+
15+
### Fixed
16+
17+
- `ZoomToFit` not triggering `ZoomChanged` event.
18+
- `SourceNode` and `TargetNode` not being set in `BaseLinkModel` when the ports change.
19+
720
## Diagrams (2.1.3) - 2021-07-19
821

922
### Added

README.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,11 @@ Repository: https://github.com/Blazor-Diagrams/Blazor.DatabaseDesigner
5858

5959
![](DBDesigner.png)
6060

61+
### Contributing
62+
63+
All kinds of contributions are welcome!
64+
If you're interested in helping, please create an issue or comment on an existing one to explain what you will be doing. This is because multiple people can be working on the same problem.
65+
6166
## Feedback
6267

63-
If you find a bug or you want to see a functionality in this library, feel free to open an issue. All kinds of contributions are welcome!
68+
If you find a bug or you want to see a functionality in this library, feel free to open an issue.

ZBD_Title.png

64.2 KB
Loading

samples/SharedDemo/Demos/Events.razor.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,12 @@ private void RegisterEvents()
7373
events.Add($"MouseClick, Type={m?.GetType().Name}, ModelId={m?.Id}");
7474
StateHasChanged();
7575
};
76+
77+
diagram.MouseDoubleClick += (m, e) =>
78+
{
79+
events.Add($"MouseDoubleClick, Type={m?.GetType().Name}, ModelId={m?.Id}");
80+
StateHasChanged();
81+
};
7682
}
7783

7884
private NodeModel NewNode(double x, double y)

src/Blazor.Diagrams.Core/Behaviors/EventsBehavior.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,34 @@
11
using Blazor.Diagrams.Core.Models.Base;
22
using Microsoft.AspNetCore.Components.Web;
33
using System;
4+
using System.Diagnostics;
45

56
namespace Blazor.Diagrams.Core.Behaviors
67
{
78
public class EventsBehavior : Behavior
89
{
10+
private readonly Stopwatch _mouseClickSw;
911
private bool _captureMouseMove;
1012
private int _mouseMovedCount;
1113

1214
public EventsBehavior(Diagram diagram) : base(diagram)
1315
{
16+
_mouseClickSw = new Stopwatch();
17+
1418
Diagram.MouseDown += OnMouseDown;
1519
Diagram.MouseMove += OnMouseMove;
1620
Diagram.MouseUp += OnMouseUp;
21+
Diagram.MouseClick += OnMouseClick;
22+
}
23+
24+
private void OnMouseClick(Model model, MouseEventArgs e)
25+
{
26+
if (_mouseClickSw.IsRunning && _mouseClickSw.ElapsedMilliseconds <= 500)
27+
{
28+
Diagram.OnMouseDoubleClick(model, e);
29+
}
30+
31+
_mouseClickSw.Restart();
1732
}
1833

1934
private void OnMouseDown(Model model, MouseEventArgs e)

src/Blazor.Diagrams.Core/Blazor.Diagrams.Core.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@
77
<PackageLicenseExpression>MIT</PackageLicenseExpression>
88
<Authors>zHaytam</Authors>
99
<Description>A fully customizable and extensible all-purpose diagrams library for Blazor</Description>
10-
<AssemblyVersion>2.1.3</AssemblyVersion>
11-
<FileVersion>2.1.3</FileVersion>
10+
<AssemblyVersion>2.1.4</AssemblyVersion>
11+
<FileVersion>2.1.4</FileVersion>
1212
<RepositoryUrl>https://github.com/zHaytam/Blazor.Diagrams</RepositoryUrl>
13-
<Version>2.1.3</Version>
13+
<Version>2.1.4</Version>
1414
<PackageId>Z.Blazor.Diagrams.Core</PackageId>
1515
<PackageTags>blazor diagrams diagramming svg drag</PackageTags>
1616
<Product>Z.Blazor.Diagrams.Core</Product>

src/Blazor.Diagrams.Core/Diagram.cs

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ public class Diagram : Model
2727
public event Action<KeyboardEventArgs>? KeyDown;
2828
public event Action<WheelEventArgs>? Wheel;
2929
public event Action<Model, MouseEventArgs>? MouseClick;
30+
public event Action<Model, MouseEventArgs>? MouseDoubleClick;
3031
public event Action<Model, TouchEventArgs>? TouchStart;
3132
public event Action<Model, TouchEventArgs>? TouchMove;
3233
public event Action<Model, TouchEventArgs>? TouchEnd;
@@ -294,11 +295,15 @@ public void ZoomToFit(double margin = 10)
294295

295296
var xf = Container.Width / width;
296297
var yf = Container.Height / height;
297-
Zoom = Math.Min(xf, yf);
298298

299299
var nx = Container.Left + Pan.X + minX * Zoom;
300300
var ny = Container.Top + Pan.Y + minY * Zoom;
301+
302+
SuspendRefresh = true;
303+
SetZoom(Math.Min(xf, yf));
301304
UpdatePan(Container.Left - nx, Container.Top - ny);
305+
SuspendRefresh = false;
306+
Refresh();
302307
}
303308

304309
public void UpdatePan(double deltaX, double deltaY)
@@ -341,6 +346,16 @@ public Point GetRelativePoint(double clientX, double clientY)
341346
return new Point(clientX - Container.Left, clientY - Container.Top);
342347
}
343348

349+
public Point GetScreenPoint(double clientX, double clientY)
350+
{
351+
if (Container == null)
352+
throw new Exception("Container not available. Make sure you're not using this method before the diagram is fully loaded");
353+
354+
return new Point(Zoom * clientX + Container.Left + Pan.X, Zoom * clientY + Container.Top + Pan.Y);
355+
}
356+
357+
#region Events
358+
344359
internal void OnMouseDown(Model model, MouseEventArgs e) => MouseDown?.Invoke(model, e);
345360

346361
internal void OnMouseMove(Model model, MouseEventArgs e) => MouseMove?.Invoke(model, e);
@@ -353,10 +368,14 @@ public Point GetRelativePoint(double clientX, double clientY)
353368

354369
internal void OnMouseClick(Model model, MouseEventArgs e) => MouseClick?.Invoke(model, e);
355370

371+
internal void OnMouseDoubleClick(Model model, MouseEventArgs e) => MouseDoubleClick?.Invoke(model, e);
372+
356373
internal void OnTouchStart(Model model, TouchEventArgs e) => TouchStart?.Invoke(model, e);
357374

358375
internal void OnTouchMove(Model model, TouchEventArgs e) => TouchMove?.Invoke(model, e);
359376

360377
internal void OnTouchEnd(Model model, TouchEventArgs e) => TouchEnd?.Invoke(model, e);
378+
379+
#endregion
361380
}
362381
}

src/Blazor.Diagrams.Core/Models/Base/BaseLinkModel.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ public BaseLinkModel(string id, PortModel sourcePort, PortModel? targetPort = nu
4343
TargetNode = targetPort?.Parent;
4444
}
4545

46-
public NodeModel SourceNode { get; }
47-
public NodeModel? TargetNode { get; }
46+
public NodeModel SourceNode { get; private set; }
47+
public NodeModel? TargetNode { get; private set; }
4848
public PortModel? SourcePort { get; private set; }
4949
public PortModel? TargetPort { get; private set; }
5050
public bool IsAttached => TargetNode != null || TargetPort != null;
@@ -67,6 +67,7 @@ public void SetSourcePort(PortModel port)
6767
SourcePort?.RemoveLink(this);
6868
SourcePort = port;
6969
SourcePort.AddLink(this);
70+
SourceNode = SourcePort.Parent;
7071
SourcePortChanged?.Invoke(this, old, SourcePort);
7172
}
7273

@@ -79,6 +80,7 @@ public void SetTargetPort(PortModel? port)
7980
TargetPort?.RemoveLink(this);
8081
TargetPort = port;
8182
TargetPort?.AddLink(this);
83+
TargetNode = TargetPort?.Parent;
8284
TargetPortChanged?.Invoke(this, old, TargetPort);
8385
}
8486
}

src/Blazor.Diagrams.Core/Models/NodeModel.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ public Size? Size
4444
}
4545
}
4646
public GroupModel? Group { get; internal set; }
47+
public string Title { get; set; }
4748

4849
public IReadOnlyList<PortModel> Ports => _ports;
4950
public IReadOnlyList<BaseLinkModel> Links => _links;

src/Blazor.Diagrams/Blazor.Diagrams.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55
<RazorLangVersion>3.0</RazorLangVersion>
66
<Authors>zHaytam</Authors>
77
<PackageLicenseExpression>MIT</PackageLicenseExpression>
8-
<AssemblyVersion>2.1.3</AssemblyVersion>
9-
<FileVersion>2.1.3</FileVersion>
8+
<AssemblyVersion>2.1.4</AssemblyVersion>
9+
<FileVersion>2.1.4</FileVersion>
1010
<RepositoryUrl>https://github.com/zHaytam/Blazor.Diagrams</RepositoryUrl>
1111
<Description>A fully customizable and extensible all-purpose diagrams library for Blazor</Description>
12-
<Version>2.1.3</Version>
12+
<Version>2.1.4</Version>
1313
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
1414
<PackageTags>blazor diagrams diagramming svg drag</PackageTags>
1515
<PackageId>Z.Blazor.Diagrams</PackageId>

0 commit comments

Comments
 (0)