forked from syncfusion/blazor-samples
-
Notifications
You must be signed in to change notification settings - Fork 0
/
DateTimeAxis.razor
128 lines (120 loc) · 5.53 KB
/
DateTimeAxis.razor
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
@page "/RangeSelector/DateTimeAxis"
@using Syncfusion.EJ2.Blazor.Charts
@using Newtonsoft.Json
@inherits SampleBaseComponent;
@if (dateTimeData == null)
{
<div class="stockchartloader"></div>
}
else
{
<div class="control-section" align="center">
<h4 id="days" style="font-family: Segoe UI;font-weight: 500; font-style:normal; font-size:15px;">EUR Exchange Rate from USD</h4>
<div id="container">
<EjsRangeNavigator Value="@value" LabelPosition="AxisPosition.Outside" ValueType=Syncfusion.EJ2.Blazor.Charts.RangeValueType.DateTime>
<RangeNavigatorEvents Changed="onRangeChanged"></RangeNavigatorEvents>
<RangeNavigatorMajorGridLines Width="0"></RangeNavigatorMajorGridLines>
<RangeNavigatorRangeTooltipSettings Enable="true" Format="yyyy/MM/dd" DisplayMode="TooltipDisplayMode.Always"></RangeNavigatorRangeTooltipSettings>
<RangeNavigatorSeriesCollection>
<RangeNavigatorSeries Fill="url(#material-gradient-chart)" DataSource="@dateTimeData" Width="2" XName="x" Type="RangeNavigatorType.Area" YName="y">
</RangeNavigatorSeries>
</RangeNavigatorSeriesCollection>
</EjsRangeNavigator>
</div>
<div id="chartcontainer">
<EjsChart>
<ChartArea><ChartAreaBorder Width="0" Color="transparent"></ChartAreaBorder></ChartArea>
<ChartPrimaryXAxis ValueType="Syncfusion.EJ2.Blazor.Charts.ValueType.DateTime" EdgeLabelPlacement="EdgeLabelPlacement.Shift" ZoomFactor="@ZF" ZoomPosition="@ZP">
<ChartAxisMajorGridLines Width="0"></ChartAxisMajorGridLines>
</ChartPrimaryXAxis>
<ChartPrimaryYAxis Interval="0.1" Minimum="0.6" Maximum="1" LabelFormat="n1">
<ChartAxisMajorTickLines Width="0"></ChartAxisMajorTickLines>
<ChartAxisLineStyle Width="0"></ChartAxisLineStyle>
</ChartPrimaryYAxis>
<ChartSeriesCollection>
<ChartSeries Fill="url(#material-gradient-chart)" DataSource="@dateTimeData" XName="x" YName="y" Name="Rate" Width="2" Type="ChartSeriesType.Spline">
</ChartSeries>
</ChartSeriesCollection>
<ChartCrosshairSettings Enable="true" LineType="LineType.Vertical">
<ChartCrosshairLine Color="transparent" Width="0"></ChartCrosshairLine>
</ChartCrosshairSettings>
<ChartTooltipSettings Enable="true" Shared="true"></ChartTooltipSettings>
<ChartLegendSettings Visible="false"></ChartLegendSettings>
</EjsChart>
</div>
</div>
}
@code{
private ChartData[] dateTimeData;
double ZF = 1;
double ZP = 0;
protected override async Task OnInitializedAsync()
{
await Task.Run(() =>
{
dateTimeData = JsonConvert.DeserializeObject<ChartData[]>(System.IO.File.ReadAllText("./wwwroot/scripts/range-navigator/stock-data.json"));
});
}
public class ChartData
{
public DateTime x { get; set; }
public double y { get; set; }
}
private DateTime[] value = new DateTime[] { new DateTime(2011, 01, 01), new DateTime(2013, 12, 31) };
public void onRangeChanged(IChangedEventArgs args)
{
ZF = args.ZoomFactor;
ZP = args.ZoomPosition;
StateHasChanged();
}
}
<style>
#control-container {
padding: 0px !important;
}
#material-gradient-chart stop {
stop-color: #00bdae;
}
#fabric-gradient-chart stop {
stop-color: #4472c4;
}
#bootstrap-gradient-chart stop {
stop-color: #a16ee5;
}
#bootstrap4-gradient-chart stop {
stop-color: #a16ee5;
}
#highcontrast-gradient-chart stop {
stop-color: #79ECE4;
}
.chart-gradient stop[offset="0"] {
stop-opacity: 0.9;
}
.chart-gradient stop[offset="1"] {
stop-opacity: 0.3;
}
</style>
<svg style="height: 0">
<defs>
<linearGradient id="material-gradient-chart" style="opacity: 0.75" class="chart-gradient" x1="0" x2="0" y1="0" y2="1">
<stop offset="0"></stop>
<stop offset="1"></stop>
</linearGradient>
<linearGradient id="fabric-gradient-chart" style="opacity: 0.75" class="chart-gradient" x1="0" x2="0" y1="0" y2="1">
<stop offset="0"></stop>
<stop offset="1"></stop>
</linearGradient>
<linearGradient id="bootstrap-gradient-chart" style="opacity: 0.75" class="chart-gradient" x1="0" x2="0" y1="0" y2="1">
<stop offset="0"></stop>
<stop offset="1"></stop>
</linearGradient>
<linearGradient id="bootstrap4-gradient-chart" style="opacity: 0.75" class="chart-gradient" x1="0" x2="0" y1="0" y2="1">
<stop offset="0"></stop>
<stop offset="1"></stop>
</linearGradient>
<linearGradient id="highcontrast-gradient-chart" style="opacity: 0.75" class="chart-gradient" x1="0" x2="0" y1="0" y2="1">
<stop offset="0"></stop>
<stop offset="1"></stop>
</linearGradient>
</defs>
</svg>