Improved chart visual
This commit is contained in:
@@ -267,7 +267,7 @@
|
||||
|
||||
|
||||
<!-- Chart - Directly on page, full width -->
|
||||
@if (FluviusDataDaily.Length > 0)
|
||||
@if (FilteredFluviusData.Length > 0)
|
||||
{
|
||||
<div class="chart-container">
|
||||
<h2>Overzicht: Energie Data & Simulatie</h2>
|
||||
@@ -299,7 +299,7 @@
|
||||
</RadzenAreaSeries>
|
||||
|
||||
<!-- Simulated Data -->
|
||||
@if (SimulationDataDaily.Length > 0)
|
||||
@if (FilteredSimulationData.Length > 0)
|
||||
{
|
||||
<RadzenAreaSeries Smooth=true Data="@FilteredSimulationData" CategoryProperty="Time" Title="Simulated Consumption" ValueProperty="Consumption">
|
||||
</RadzenAreaSeries>
|
||||
@@ -322,14 +322,13 @@
|
||||
}
|
||||
|
||||
@code {
|
||||
EnergyData[] FluviusDataRaw = [];
|
||||
EnergyData[] FluviusDataDaily = [];
|
||||
|
||||
SimulatedBatteryEnergyData[] SimulationData = [];
|
||||
SimulatedBatteryEnergyData[] SimulationDataDaily = [];
|
||||
EnergyData[] FluviusDataRaw = [];
|
||||
EnergyData[] SimulationData = [];
|
||||
|
||||
DataFilter.FilterOption SelectedFilterOption = DataFilter.FilterOption.ALL;
|
||||
|
||||
EnergyData[] FilteredFluviusData = [];
|
||||
SimulatedBatteryEnergyData[] FilteredSimulationData = [];
|
||||
EnergyData[] FilteredSimulationData = [];
|
||||
|
||||
EnergyCostCalculator calculator = new();
|
||||
double normalCost = 0.0;
|
||||
@@ -406,8 +405,7 @@
|
||||
StateHasChanged();
|
||||
|
||||
FluviusDataRaw = await FluviusDataHandler.LoadAndProcessFile(file);
|
||||
FluviusDataDaily = FluviusDataHandler.GenerateDailyData(FluviusDataRaw);
|
||||
FilteredFluviusData = FluviusDataDaily;
|
||||
SetTimePeriod("all");
|
||||
FilteredSimulationData = [];
|
||||
|
||||
StepData[0].isProcessing = false;
|
||||
@@ -415,7 +413,6 @@
|
||||
StepData[1].Completed = false;
|
||||
StepData[2].Completed = false;
|
||||
SimulationData = [];
|
||||
SimulationDataDaily = [];
|
||||
|
||||
StateHasChanged();
|
||||
}
|
||||
@@ -437,8 +434,7 @@
|
||||
try
|
||||
{
|
||||
SimulationData = BatterySimulator.SimulateBattery(FluviusDataRaw, BatteryCapacity, Efficiency/100);
|
||||
SimulationDataDaily = BatterySimulator.GenerateDailyData(SimulationData);
|
||||
FilteredSimulationData = SimulationDataDaily;
|
||||
SetTimePeriod("all");
|
||||
|
||||
StepData[1].isProcessing = false;
|
||||
StepData[1].Completed = true;
|
||||
@@ -464,9 +460,7 @@
|
||||
|
||||
try
|
||||
{
|
||||
normalCost = calculator.CalculateCostOfEnergyUsage(FluviusDataRaw);
|
||||
simulatedCost = calculator.CalculateCostOfEnergyUsage(SimulationData);
|
||||
|
||||
normalCost = calculator.CalculateCostOfEnergyUsage(FluviusDataRaw);
|
||||
StepData[2].isProcessing = false;
|
||||
StepData[2].Completed = true;
|
||||
StateHasChanged();
|
||||
@@ -481,62 +475,19 @@
|
||||
private void SetTimePeriod(string period)
|
||||
{
|
||||
_timePeriod = period;
|
||||
|
||||
var filterOption = period switch {
|
||||
"all" => DataFilter.FilterOption.ALL,
|
||||
"year" => DataFilter.FilterOption.YEAR,
|
||||
"month" => DataFilter.FilterOption.MONTH,
|
||||
"week" => DataFilter.FilterOption.WEEK,
|
||||
"day" => DataFilter.FilterOption.DAY,
|
||||
};
|
||||
// Filter data based on selected period
|
||||
FilteredFluviusData = FilterFluviusDataByPeriod(period);
|
||||
FilteredSimulationData = FilterSimulationDataByPeriod(period);
|
||||
if(FluviusDataRaw.Length > 0) FilteredFluviusData = DataFilter.FilterData(FluviusDataRaw, filterOption);
|
||||
if(FilteredSimulationData.Length > 0) FilteredSimulationData = DataFilter.FilterData(SimulationData, filterOption);
|
||||
|
||||
StateHasChanged();
|
||||
}
|
||||
|
||||
private EnergyData[] FilterFluviusDataByPeriod(string period)
|
||||
{
|
||||
if (period == "all" || FluviusDataDaily.Length == 0)
|
||||
return FluviusDataDaily;
|
||||
|
||||
var result = new List<EnergyData>();
|
||||
|
||||
foreach (var item in FluviusDataDaily)
|
||||
{
|
||||
// The Time property is DateTime but for daily data it represents the day
|
||||
var date = DateOnly.FromDateTime(item.Time);
|
||||
bool include = false;
|
||||
switch (period)
|
||||
{
|
||||
case "day": include = true; break; // Show all daily data
|
||||
case "week": include = date.DayOfWeek == DayOfWeek.Monday; break;
|
||||
case "month": include = date.Day == 1; break;
|
||||
case "year": include = date.Month == 1 && date.Day == 1; break;
|
||||
}
|
||||
if (include) result.Add(item);
|
||||
}
|
||||
|
||||
return result.ToArray();
|
||||
}
|
||||
|
||||
private SimulatedBatteryEnergyData[] FilterSimulationDataByPeriod(string period)
|
||||
{
|
||||
if (period == "all" || SimulationDataDaily.Length == 0)
|
||||
return SimulationDataDaily;
|
||||
|
||||
var result = new List<SimulatedBatteryEnergyData>();
|
||||
|
||||
foreach (var item in SimulationDataDaily)
|
||||
{
|
||||
var date = DateOnly.FromDateTime(item.Time);
|
||||
bool include = false;
|
||||
switch (period)
|
||||
{
|
||||
case "day": include = true; break;
|
||||
case "week": include = date.DayOfWeek == DayOfWeek.Monday; break;
|
||||
case "month": include = date.Day == 1; break;
|
||||
case "year": include = date.Month == 1 && date.Day == 1; break;
|
||||
}
|
||||
if (include) result.Add(item);
|
||||
}
|
||||
|
||||
return result.ToArray();
|
||||
}
|
||||
|
||||
private string FormatObject(object value) {
|
||||
if(value is double d) return $"{d:0.##} kWh";
|
||||
|
||||
Reference in New Issue
Block a user