Skip to content

Commit 8142858

Browse files
remove a lot of unused things in blazor
the main change is stop listening for size changes, use the skiasharp canvas size to detect that, this should make things cleaner and faster
1 parent ee53b10 commit 8142858

15 files changed

+80
-424
lines changed

src/skiasharp/LiveChartsCore.SkiaSharpView.Blazor/ChartControl.razor

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -22,24 +22,12 @@
2222
SOFTWARE.
2323
*@
2424

25-
<!--
26-
the first wrapper <div/> is required so blazor is able to the isolate the css, do not remove!
27-
blazor bug?
28-
-->
2925

30-
<div class="lvc-content">
31-
<JsFlexibleContainer @ref="_jsFlexibleContainer">
32-
<Content>
33-
<div class="lvc-canvas-container" @ref="CanvasContainerElement">
34-
<MotionCanvas
35-
@ref="_motionCanvas"
36-
OnPointerDownCallback="OnPointerDown"
37-
OnPointerMoveCallback="OnPointerMove"
38-
OnPointerUpCallback="OnPointerUp"
39-
OnPointerOutCallback="OnPointerOut"
40-
OnWheelCallback="OnWheel">
41-
</MotionCanvas>
42-
</div>
43-
</Content>
44-
</JsFlexibleContainer>
45-
</div>
26+
<MotionCanvas
27+
@ref="_motionCanvas"
28+
OnPointerDownCallback="OnPointerDown"
29+
OnPointerMoveCallback="OnPointerMove"
30+
OnPointerUpCallback="OnPointerUp"
31+
OnPointerOutCallback="OnPointerOut"
32+
OnWheelCallback="OnWheel">
33+
</MotionCanvas>

src/skiasharp/LiveChartsCore.SkiaSharpView.Blazor/ChartControl.razor.cs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ namespace LiveChartsCore.SkiaSharpView.Blazor;
3737
/// <inheritdoc cref="IChartView" />
3838
public abstract partial class ChartControl : IBlazorChart, IDisposable, IChartView
3939
{
40-
private JsFlexibleContainer _jsFlexibleContainer = null!;
4140
#pragma warning disable IDE0032 // Use auto property, blazor ref
4241
private MotionCanvas _motionCanvas = null!;
4342
#pragma warning restore IDE0032 // Use auto property
@@ -71,21 +70,23 @@ protected override void OnAfterRender(bool firstRender)
7170
InitializeChartControl();
7271
StartObserving();
7372

74-
_jsFlexibleContainer.Resized +=
75-
container =>
76-
CoreChart?.Update();
73+
_motionCanvas.SizeChanged +=
74+
() =>
75+
CoreChart.Update();
7776

7877
CoreChart.Canvas.Sync = SyncContext;
7978
CoreChart.Load();
80-
81-
var size = ((IChartView)this).ControlSize;
8279
}
8380

8481
bool IChartView.DesignerMode => false;
8582
bool IChartView.IsDarkMode => false; // Is this possible in Blazor?
8683
LvcColor IChartView.BackColor { get; }
8784

88-
LvcSize IChartView.ControlSize => new() { Width = (float)_jsFlexibleContainer.Width, Height = (float)_jsFlexibleContainer.Height };
85+
LvcSize IChartView.ControlSize => new()
86+
{
87+
Width = _motionCanvas.Width,
88+
Height = _motionCanvas.Height
89+
};
8990

9091
/// <summary>
9192
/// Gets or sets the pointer down callback.

src/skiasharp/LiveChartsCore.SkiaSharpView.Blazor/ChartControl.razor.css

Lines changed: 0 additions & 22 deletions
This file was deleted.

src/skiasharp/LiveChartsCore.SkiaSharpView.Blazor/GeoMap.razor

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,4 @@
2222
SOFTWARE.
2323
*@
2424

25-
<!--
26-
the first wrapper <div/> is required so blazor is able to the isolate the css, do not remove!
27-
blazor bug?
28-
-->
29-
30-
<div>
31-
<JsFlexibleContainer @ref="_jsFlexibleContainer">
32-
<Content>
33-
<div class="lvc-canvas-container" @ref="_canvasContainer">
34-
<MotionCanvas @ref="_motionCanvas"></MotionCanvas>
35-
</div>
36-
</Content>
37-
</JsFlexibleContainer>
38-
</div>
25+
<MotionCanvas @ref="_motionCanvas"/>

src/skiasharp/LiveChartsCore.SkiaSharpView.Blazor/GeoMap.razor.cs

Lines changed: 13 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -24,26 +24,18 @@
2424
using LiveChartsCore.Kernel.Observers;
2525
using LiveChartsCore.Motion;
2626
using LiveChartsCore.Painting;
27-
using LiveChartsCore.SkiaSharpView.Blazor.JsInterop;
2827
using LiveChartsCore.SkiaSharpView.Painting;
2928
using Microsoft.AspNetCore.Components;
30-
using Microsoft.JSInterop;
3129
using SkiaSharp;
3230

3331
namespace LiveChartsCore.SkiaSharpView.Blazor;
3432

3533
/// <inheritdoc cref="IGeoMapView"/>
3634
public partial class GeoMap : IGeoMapView, IDisposable
3735
{
38-
[Inject]
39-
private IJSRuntime JS { get; set; } = null!;
40-
41-
private DomJsInterop? _dom;
42-
private JsFlexibleContainer _jsFlexibleContainer = null!;
43-
private ElementReference _canvasContainer;
44-
private MotionCanvas? _motionCanvas;
45-
private double _canvasWidth;
46-
private double _canvasHeight;
36+
#pragma warning disable IDE0032 // Use auto property, blazor ref
37+
private MotionCanvas _motionCanvas = null!;
38+
#pragma warning restore IDE0032 // Use auto property
4739
private CollectionDeepObserver? _seriesObserver;
4840
private GeoMapChart? _core;
4941
private DrawnMap? _activeMap;
@@ -64,23 +56,20 @@ protected override void OnInitialized()
6456
/// <param name="firstRender"></param>
6557
/// <returns></returns>
6658
/// <exception cref="Exception"></exception>
67-
protected override async Task OnAfterRenderAsync(bool firstRender)
59+
protected override void OnAfterRender(bool firstRender)
6860
{
6961
if (!firstRender) return;
7062

7163
_core = new GeoMapChart(this);
7264

73-
_seriesObserver = new CollectionDeepObserver(() => _core?.Update());
74-
75-
_dom ??= new DomJsInterop(JS);
76-
var canvasBounds = await _dom.GetBoundingClientRect(_canvasContainer);
77-
_canvasWidth = canvasBounds.Width;
78-
_canvasHeight = canvasBounds.Height;
65+
_motionCanvas.SizeChanged +=
66+
() =>
67+
_core.Update();
7968

69+
_seriesObserver = new CollectionDeepObserver(() => _core?.Update());
8070
_core.Update();
8171

8272
if (_motionCanvas is null) throw new Exception("MotionCanvas not found");
83-
_jsFlexibleContainer.Resized += OnResized;
8473
}
8574

8675
/// <inheritdoc cref="IGeoMapView.Canvas"/>
@@ -108,6 +97,7 @@ public object? ViewCommand
10897
if (value is not null) _core?.ViewTo(value);
10998
}
11099
} = null;
100+
111101
/// <inheritdoc cref="IGeoMapView.ActiveMap"/>
112102
[Parameter]
113103
public DrawnMap ActiveMap
@@ -121,10 +111,10 @@ public DrawnMap ActiveMap
121111
}
122112

123113
/// <inheritdoc cref="IGeoMapView.Width"/>
124-
float IGeoMapView.Width => (float)_canvasWidth;
114+
float IGeoMapView.Width => _motionCanvas.Width;
125115

126116
/// <inheritdoc cref="IGeoMapView.Height"/>
127-
float IGeoMapView.Height => (float)_canvasHeight;
117+
float IGeoMapView.Height => _motionCanvas.Height;
128118

129119
/// <inheritdoc cref="IGeoMapView.MapProjection"/>
130120
[Parameter]
@@ -171,33 +161,21 @@ public IEnumerable<IGeoSeries> Series
171161
} = [];
172162

173163
void IGeoMapView.InvokeOnUIThread(Action action) =>
174-
_ = InvokeAsync(action); //.Wait();
164+
_ = InvokeAsync(action);
175165

176166
/// <summary>
177167
/// Called when a property changes.
178168
/// </summary>
179169
protected void OnPropertyChanged() =>
180170
_core?.Update();
181171

182-
private async void OnResized(JsFlexibleContainer motionCanvas)
183-
{
184-
if (_dom is null) return;
185-
186-
var canvasBounds = await _dom.GetBoundingClientRect(_canvasContainer);
187-
_canvasWidth = canvasBounds.Width;
188-
_canvasHeight = canvasBounds.Height;
189-
190-
_core?.Update();
191-
}
192-
193-
async void IDisposable.Dispose()
172+
void IDisposable.Dispose()
194173
{
195174
Series = [];
196175
_seriesObserver = null!;
197176

198177
Canvas.Dispose();
199178

200179
_core?.Unload();
201-
if (_dom is not null) await ((IAsyncDisposable)_dom).DisposeAsync();
202180
}
203181
}

src/skiasharp/LiveChartsCore.SkiaSharpView.Blazor/JsFlexibleContainer.razor

Lines changed: 0 additions & 28 deletions
This file was deleted.

src/skiasharp/LiveChartsCore.SkiaSharpView.Blazor/JsFlexibleContainer.razor.cs

Lines changed: 0 additions & 116 deletions
This file was deleted.

0 commit comments

Comments
 (0)