Skip to content

Commit 78f954c

Browse files
authored
Merge pull request #62 from zHaytam/develop
Version 1.4.0
2 parents fd75232 + 8836dd5 commit 78f954c

File tree

11 files changed

+67
-21
lines changed

11 files changed

+67
-21
lines changed

Blazor.Diagrams.sln

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,12 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ServerSide", "samples\Serve
1919
EndProject
2020
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Blazor.Diagrams.Algorithms", "src\Blazor.Diagrams.Algorithms\Blazor.Diagrams.Algorithms.csproj", "{CB3A42B6-3C87-4ECB-B60C-D98275AB1FB6}"
2121
EndProject
22+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{260DF53D-FF2B-4D1D-ACA7-431F6B62EE38}"
23+
ProjectSection(SolutionItems) = preProject
24+
CHANGELOG.md = CHANGELOG.md
25+
README.md = README.md
26+
EndProjectSection
27+
EndProject
2228
Global
2329
GlobalSection(SolutionConfigurationPlatforms) = preSolution
2430
Debug|Any CPU = Debug|Any CPU

CHANGELOG.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,22 @@ 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 [1.4.0] - 2020-12-12
8+
9+
### Added
10+
11+
- Two zoom related options, `Minimum` and `Maximum`, to clamp the zoom value.
12+
13+
### Changed
14+
15+
- **[BREAKING]** Grouped zoom related options into `DiagramZoomOptions`, available unnder `Options.Zoom`.
16+
- The option `AllowZooming` was renamed to `Enabled`.
17+
- The option `InverseZoom` was renamed to `Inverse`.
18+
19+
### Fixed
20+
21+
- The diagram canvas' container wasn't updated when the user scrolls ([#51](https://github.com/zHaytam/Blazor.Diagrams/issues/51)).
22+
723
## Diagrams [1.3.0] - 2020-11-29
824

925
### Added

samples/SharedDemo/Demos/Simple.razor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ protected override void OnInitialized()
2121
diagramManager.AddNode(NewNode(300, 50));
2222
}
2323

24-
protected void ToggleZoom() => diagramManager.Options.AllowZooming = !diagramManager.Options.AllowZooming;
24+
protected void ToggleZoom() => diagramManager.Options.Zoom.Enabled = !diagramManager.Options.Zoom.Enabled;
2525

2626
protected void TogglePanning() => diagramManager.Options.AllowPanning = !diagramManager.Options.AllowPanning;
2727

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>1.3.0</AssemblyVersion>
11-
<FileVersion>1.3.0</FileVersion>
10+
<AssemblyVersion>1.4.0</AssemblyVersion>
11+
<FileVersion>1.4.0</FileVersion>
1212
<RepositoryUrl>https://github.com/zHaytam/Blazor.Diagrams</RepositoryUrl>
13-
<Version>1.3.0</Version>
13+
<Version>1.4.0</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/Default/ZoomSubManager.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using Blazor.Diagrams.Core.Models.Core;
22
using Microsoft.AspNetCore.Components.Web;
3+
using System;
34

45
namespace Blazor.Diagrams.Core.Default
56
{
@@ -14,11 +15,11 @@ public ZoomSubManager(DiagramManager diagramManager) : base(diagramManager)
1415

1516
private void DiagramManager_Wheel(WheelEventArgs e)
1617
{
17-
if (!DiagramManager.Options.AllowZooming)
18+
if (!DiagramManager.Options.Zoom.Enabled)
1819
return;
1920

2021
var oldZoom = DiagramManager.Zoom;
21-
var deltaY = DiagramManager.Options.InverseZoom ? e.DeltaY * -1 : e.DeltaY;
22+
var deltaY = DiagramManager.Options.Zoom.Inverse ? e.DeltaY * -1 : e.DeltaY;
2223
var newZoom = deltaY > 0 ? oldZoom * _scaleBy : oldZoom / _scaleBy;
2324

2425
if (newZoom < 0)
@@ -37,6 +38,10 @@ private void DiagramManager_Wheel(WheelEventArgs e)
3738
var newPanX = DiagramManager.Pan.X - widthDiff * xFactor;
3839
var newPanY = DiagramManager.Pan.Y - heightDiff * yFactor;
3940

41+
newZoom = Math.Clamp(newZoom, DiagramManager.Options.Zoom.Minimum, DiagramManager.Options.Zoom.Maximum);
42+
if (newZoom == DiagramManager.Zoom)
43+
return;
44+
4045
DiagramManager.Pan = new Point(newPanX, newPanY);
4146
DiagramManager.SetZoom(newZoom);
4247
}

src/Blazor.Diagrams.Core/DiagramOptions.cs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@ public class DiagramOptions
88
{
99
[Description("Key code for deleting entities")]
1010
public string DeleteKey { get; set; } = "Delete";
11-
[Description("Whether to inverse the zoom direction or not")]
12-
public bool InverseZoom { get; set; }
1311
[Description("The default component for nodes")]
1412
public Type? DefaultNodeComponent { get; set; }
1513
[Description("The grid size (grid-based snaping")]
@@ -20,9 +18,8 @@ public class DiagramOptions
2018
public bool AllowMultiSelection { get; set; } = true;
2119
[Description("Whether to allow panning or not")]
2220
public bool AllowPanning { get; set; } = true;
23-
[Description("Whether to allow zooming or not")]
24-
public bool AllowZooming { get; set; } = true;
2521

22+
public DiagramZoomOptions Zoom { get; set; } = new DiagramZoomOptions();
2623
public DiagramLinkOptions Links { get; set; } = new DiagramLinkOptions();
2724
}
2825

@@ -39,4 +36,16 @@ public class DiagramLinkOptions
3936
[Description("The default color for selected links")]
4037
public string DefaultSelectedColor { get; set; } = "rgb(110, 159, 212)";
4138
}
39+
40+
public class DiagramZoomOptions
41+
{
42+
[Description("Whether to allow zooming or not")]
43+
public bool Enabled { get; set; } = true;
44+
[Description("Whether to inverse the zoom direction or not")]
45+
public bool Inverse { get; set; }
46+
[Description("Minimum value allowed")]
47+
public double Minimum { get; set; } = 0.1;
48+
[Description("Maximum value allowed")]
49+
public double Maximum { get; set; } = 2;
50+
}
4251
}

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>1.3.0</AssemblyVersion>
9-
<FileVersion>1.3.0</FileVersion>
8+
<AssemblyVersion>1.4.0</AssemblyVersion>
9+
<FileVersion>1.4.0</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>1.3.0</Version>
12+
<Version>1.4.0</Version>
1313
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
1414
<PackageTags>blazor diagrams diagramming svg drag</PackageTags>
1515
<PackageId>Z.Blazor.Diagrams</PackageId>

src/Blazor.Diagrams/Components/DiagramCanvas.razor.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ namespace Blazor.Diagrams.Components
1212
{
1313
public class DiagramCanvasComponent : ComponentBase, IDisposable
1414
{
15-
1615
[CascadingParameter(Name = "DiagramManager")]
1716
public DiagramManager DiagramManager { get; set; }
1817

@@ -48,7 +47,7 @@ protected override async Task OnAfterRenderAsync(bool firstRender)
4847
if (firstRender)
4948
{
5049
DiagramManager.Container = await JSRuntime.GetBoundingClientRect(elementReference);
51-
await JSRuntime.ObserveResizes(elementReference, _reference);
50+
await JSRuntime.ObserveResizes(elementReference, _reference, isCanvas: true);
5251
}
5352
}
5453

src/Blazor.Diagrams/Extensions/JSRuntimeExtensions.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ public static async Task<Rectangle> GetBoundingClientRect(this IJSRuntime jsRunt
1313
}
1414

1515
public static async Task ObserveResizes<T>(this IJSRuntime jsRuntime, ElementReference element,
16-
DotNetObjectReference<T> reference) where T : class
16+
DotNetObjectReference<T> reference, bool isCanvas = false) where T : class
1717
{
18-
await jsRuntime.InvokeVoidAsync("ZBlazorDiagrams.observe", element, reference, element.Id);
18+
await jsRuntime.InvokeVoidAsync("ZBlazorDiagrams.observe", element, reference, element.Id, isCanvas);
1919
}
2020

2121
public static async Task UnobserveResizes(this IJSRuntime jsRuntime, ElementReference element)

src/Blazor.Diagrams/wwwroot/script.js

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
var s = {
2+
canvas: null,
23
getBoundingClientRect: el => {
34
return el.getBoundingClientRect();
45
},
@@ -12,15 +13,25 @@ var s = {
1213
}
1314
}
1415
}),
15-
observe: (element, ref, id) => {
16+
observe: (element, ref, id, isCanvas) => {
1617
s.ro.observe(element);
1718
s.tracked[id] = {
1819
ref: ref
1920
};
21+
if (isCanvas) {
22+
s.canvas = {
23+
elem: element,
24+
ref: ref
25+
}
26+
}
2027
},
2128
unobserve: (element, id) => {
2229
s.ro.unobserve(element);
2330
delete s.tracked[id];
24-
}
31+
},
32+
2533
};
26-
window.ZBlazorDiagrams = s;
34+
window.ZBlazorDiagrams = s;
35+
window.addEventListener('scroll', () => {
36+
s.canvas.ref.invokeMethodAsync('OnResize', s.canvas.elem.getBoundingClientRect());
37+
});

0 commit comments

Comments
 (0)