diff --git a/SolarPower/Controllers/StationOverviewController.cs b/SolarPower/Controllers/StationOverviewController.cs index 8c4e0f1..458637f 100644 --- a/SolarPower/Controllers/StationOverviewController.cs +++ b/SolarPower/Controllers/StationOverviewController.cs @@ -163,5 +163,66 @@ namespace SolarPower.Controllers apiResult.Msg = errorCode.GetString(apiResult.Code); return apiResult; } + + public async Task> GetChartUpToDate(int id) + { + ApiResult apiResult = new ApiResult(); + + ChartUptoDate chartUptoDate = new ChartUptoDate(); + + try + { + var nowDay = DateTime.Now.ToString("yyyy-MM-dd"); + + //今日發電量日照度List + var powerIrradianceToday = await overviewRepository.GetListPowerIrradianceTodayByPowerStationId(id, nowDay); + //今日資料轉換 + PowerIrradianceChart powerIrradianceTodayChart = new PowerIrradianceChart(); + powerIrradianceTodayChart.Labels = powerIrradianceToday.Select(x => x.Label).ToList(); + powerIrradianceTodayChart.PowerDatas = powerIrradianceToday.Select(x => x.PowerData).ToList(); + powerIrradianceTodayChart.IrradianceDatas = powerIrradianceToday.Select(x => x.IrradianceData).ToList(); + chartUptoDate.ChartToday = powerIrradianceTodayChart; + + //7日發電量日照度List + var powerIrradiance7day = await overviewRepository.GetListPowerIrradiance7dayByPowerStationId(id, nowDay); + //7日資料轉換 + PowerIrradianceChart powerIrradiance7dayChart = new PowerIrradianceChart(); + powerIrradiance7dayChart.Labels = powerIrradiance7day.Select(x => x.Label).ToList(); + powerIrradiance7dayChart.PowerDatas = powerIrradiance7day.Select(x => x.PowerData).ToList(); + powerIrradiance7dayChart.IrradianceDatas = powerIrradiance7day.Select(x => x.IrradianceData).ToList(); + chartUptoDate.Chart7day = powerIrradiance7dayChart; + + //本月發電量日照度List + var powerIrradianceMonth = await overviewRepository.GetListPowerIrradianceMonthByPowerStationId(id, nowDay); + //今日資料轉換 + PowerIrradianceChart powerIrradianceMonthChart = new PowerIrradianceChart(); + powerIrradianceMonthChart.Labels = powerIrradianceMonth.Select(x => x.Label).ToList(); + powerIrradianceMonthChart.PowerDatas = powerIrradianceMonth.Select(x => x.PowerData).ToList(); + powerIrradianceMonthChart.IrradianceDatas = powerIrradianceMonth.Select(x => x.IrradianceData).ToList(); + chartUptoDate.ChartMonth = powerIrradianceMonthChart; + + //本年發電量日照度List + var powerIrradianceYear = await overviewRepository.GetListPowerIrradianceYearByPowerStationId(id, nowDay); + //今日資料轉換 + PowerIrradianceChart powerIrradianceYearChart = new PowerIrradianceChart(); + powerIrradianceYearChart.Labels = powerIrradianceYear.Select(x => x.Label).ToList(); + powerIrradianceYearChart.PowerDatas = powerIrradianceYear.Select(x => x.PowerData).ToList(); + powerIrradianceYearChart.IrradianceDatas = powerIrradianceYear.Select(x => x.IrradianceData).ToList(); + chartUptoDate.ChartYear = powerIrradianceYearChart; + + apiResult.Code = "0000"; + apiResult.Data = chartUptoDate; + + } + catch (Exception exception) + { + apiResult.Code = "9999"; + Logger.LogError("【" + controllerName + "/" + actionName + "】"); + Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message); + } + + apiResult.Msg = errorCode.GetString(apiResult.Code); + return apiResult; + } } } diff --git a/SolarPower/Models/Overview.cs b/SolarPower/Models/Overview.cs index c7614b4..e3b25e4 100644 --- a/SolarPower/Models/Overview.cs +++ b/SolarPower/Models/Overview.cs @@ -54,4 +54,25 @@ namespace SolarPower.Models public byte IsShowMoney { get; set; } //是否顯示發電金額 public string UpdatedAt { get; set; } //畫面資料更新時間 } + + public class ChartUptoDate + { + public PowerIrradianceChart ChartToday { get; set; } + public PowerIrradianceChart Chart7day { get; set; } + public PowerIrradianceChart ChartMonth { get; set; } + public PowerIrradianceChart ChartYear { get; set; } + } + public class PowerIrradiance + { + public string Label { get; set; } + public double PowerData { get; set; } + public double IrradianceData { get; set; } + } + + public class PowerIrradianceChart + { + public List Labels { get; set; } + public List PowerDatas { get; set; } + public List IrradianceDatas { get; set; } + } } diff --git a/SolarPower/Quartz/Jobs/CalcAvgPowerStationJob.cs b/SolarPower/Quartz/Jobs/CalcAvgPowerStationJob.cs index 8114a38..7266db4 100644 --- a/SolarPower/Quartz/Jobs/CalcAvgPowerStationJob.cs +++ b/SolarPower/Quartz/Jobs/CalcAvgPowerStationJob.cs @@ -40,14 +40,19 @@ namespace SolarPower.Quartz.Jobs var DateTimeNow = DateTime.Now; + var count = 0; + #region step2. 從電站的DB及電站編號找出該電站的控制器 foreach (var powerStation in powerStations) { + if (count > 0) + { + break; + } + var calcPowerStation = new PowerStation(); calcPowerStation.Id = powerStation.Id; var dateNowDay = DateTimeNow.AddDays(-1).ToString("yyyy-MM-dd"); - dateNowDay = "2021-06-24"; - #region step2-1. 計算該電站的30天平均資料 var table_name = String.Format("`{0}`.`{1}01_station`", powerStation.SiteDB, powerStation.Code); var history = await powerStationRepository.CalcAvgPowerStationHistory30day(dateNowDay, table_name); @@ -100,7 +105,6 @@ namespace SolarPower.Quartz.Jobs #region step2-4. 計算這個月的所有值總和 //判斷這個月是否已存在 var dateNowMonth = DateTimeNow.ToString("yyyy-MM"); - dateNowMonth = "2021-06"; //電站該月份的歷史資料 var exist_history = await powerStationRepository.GetOnePowerStationHistoryByPowerStationIdAndMonth(powerStation.Id, dateNowMonth); @@ -143,6 +147,8 @@ namespace SolarPower.Quartz.Jobs } } #endregion + + count++; } #endregion @@ -213,14 +219,14 @@ namespace SolarPower.Quartz.Jobs await powerStationRepository.AddPyrheliometerHistoryDayList(pyrheliometerHistoryDays, pyrheliometer_history_properties); //每月 - if (insertPowerStationHistoryMonths.Count > 0) + if (insertPyrheliometerHistoryMonths.Count > 0) { - await powerStationRepository.AddPowerStationHistoryMonthList(insertPowerStationHistoryMonths, history_properties_month); + await powerStationRepository.AddPyrheliometerHistoryMonthList(insertPyrheliometerHistoryMonths, pyrheliometer_history_properties); } - if (updatePowerStationHistoryMonths.Count > 0) + if (updatePyrheliometerHistoryMonths.Count > 0) { - await powerStationRepository.UpdatePowerStationHistoryMonthList(updatePowerStationHistoryMonths); + await powerStationRepository.UpdatePyrheliometerHistoryMonthList(updatePyrheliometerHistoryMonths); } #endregion diff --git a/SolarPower/Quartz/Jobs/CalcPowerStationJob.cs b/SolarPower/Quartz/Jobs/CalcPowerStationJob.cs index c04e2f8..03b3b2e 100644 --- a/SolarPower/Quartz/Jobs/CalcPowerStationJob.cs +++ b/SolarPower/Quartz/Jobs/CalcPowerStationJob.cs @@ -37,14 +37,20 @@ namespace SolarPower.Quartz.Jobs var DateTimeNow = DateTime.Now; + var count = 0; + #region step2. 從電站的DB及電站編號找出該電站的控制器 foreach (var powerStation in powerStations) { + if (count > 0) + { + break; + } + var calcPowerStation = new PowerStation(); calcPowerStation.Id = powerStation.Id; var dateTime = DateTimeNow.AddHours(-1).ToString("yyyy-MM-dd HH"); - dateTime = "2021-06-24 18"; #region step2-1. 取得該電站的當前這小時的歷史資料 var table_name = String.Format("`{0}`.{1}01_station", powerStation.SiteDB, powerStation.Code); @@ -53,7 +59,7 @@ namespace SolarPower.Quartz.Jobs if (history != null) { history.PowerStationId = powerStation.Id; - history.Timestamp = Convert.ToDateTime(history.Timestamp).ToString("yyyy-MM-dd HH:mm:ss"); + history.Timestamp = Convert.ToDateTime(history.Timestamp + ":00:00").ToString("yyyy-MM-dd HH:mm:ss"); #region 計算單一電站每小時發電量、發電金額等資料 @@ -142,13 +148,16 @@ namespace SolarPower.Quartz.Jobs { calcPowerStation.Today_irradiance = pyrheliometerHistory.Irradiance; - pyrheliometerHistory.Timestamp = Convert.ToDateTime(pyrheliometerHistory.Timestamp).ToString("yyyy-MM-dd HH:mm:ss"); + pyrheliometerHistory.Timestamp = Convert.ToDateTime(pyrheliometerHistory.Timestamp + ":00:00").ToString("yyyy-MM-dd HH:mm:ss"); + pyrheliometerHistory.PowerStationId = powerStation.Id; pyrheliometerHistoriesHour.Add(pyrheliometerHistory); } } #endregion calcPowerStations.Add(calcPowerStation); + + count++; } #endregion diff --git a/SolarPower/Repository/Implement/OverviewRepository.cs b/SolarPower/Repository/Implement/OverviewRepository.cs index 6e8c790..b556728 100644 --- a/SolarPower/Repository/Implement/OverviewRepository.cs +++ b/SolarPower/Repository/Implement/OverviewRepository.cs @@ -168,5 +168,102 @@ namespace SolarPower.Repository.Implement } return powerstation; } + + public async Task> GetListPowerIrradianceTodayByPowerStationId(int powerStationId, string nowDay) + { + List result; + using (IDbConnection conn = this._databaseHelper.GetConnection()) + { + try + { + var sql_power = @$"SELECT DATE_FORMAT(FROM_UNIXTIME(ps.timestamp/1000), '%Y-%m-%d %H') AS Label, ps.KWH AS PowerData, pyr.Irradiance AS IrradianceData + FROM power_station_history_hour ps + LEFT JOIN pyrheliometer_history_hour pyr ON ps.PowerStationId = pyr.PowerStationId AND DATE_FORMAT(FROM_UNIXTIME(ps.timestamp/1000), '%Y-%m-%d %H') = DATE_FORMAT(FROM_UNIXTIME(pyr.timestamp), '%Y-%m-%d %H') + WHERE ps.PowerStationId = @PowerStationId + AND DATE_FORMAT(FROM_UNIXTIME(ps.timestamp/1000), '%Y-%m-%d') = @NowDay"; + + result = (await conn.QueryAsync(sql_power, new { PowerStationId = powerStationId, NowDay = nowDay })).ToList(); + } + catch (Exception exception) + { + throw exception; + } + return result; + } + } + public async Task> GetListPowerIrradiance7dayByPowerStationId(int powerStationId, string nowDay) + { + List result; + using (IDbConnection conn = this._databaseHelper.GetConnection()) + { + try + { + var startDay = Convert.ToDateTime(nowDay).AddDays(-7).ToString("yyyy-MM-dd"); + + var sql_power = @$"SELECT DATE_FORMAT(ps.timestamp, '%Y-%m-%d') AS Label, ps.TODAYKWH AS PowerData, pyr.Irradiance AS IrradianceData + FROM power_station_history_day ps + LEFT JOIN pyrheliometer_history_day pyr ON ps.PowerStationId = pyr.PowerStationId AND DATE_FORMAT(ps.timestamp, '%Y-%m-%d') = DATE_FORMAT(FROM_UNIXTIME(pyr.timestamp), '%Y-%m-%d') + WHERE ps.PowerStationId = @PowerStationId + AND DATE_FORMAT(ps.timestamp, '%Y-%m-%d') BETWEEN @StartDay AND @NowDay"; + + result = (await conn.QueryAsync(sql_power, new { PowerStationId = powerStationId, StartDay = startDay, NowDay = nowDay })).ToList(); + } + catch (Exception exception) + { + throw exception; + } + return result; + } + } + public async Task> GetListPowerIrradianceMonthByPowerStationId(int powerStationId, string nowDay) + { + List result; + using (IDbConnection conn = this._databaseHelper.GetConnection()) + { + try + { + var startDay = Convert.ToDateTime(nowDay).ToString("yyyy-MM-01"); + + var sql_power = @$"SELECT DATE_FORMAT(ps.timestamp, '%Y-%m-%d') AS Label, ps.TODAYKWH AS PowerData, pyr.Irradiance AS IrradianceData + FROM power_station_history_day ps + LEFT JOIN pyrheliometer_history_day pyr ON ps.PowerStationId = pyr.PowerStationId AND DATE_FORMAT(ps.timestamp, '%Y-%m-%d') = DATE_FORMAT(FROM_UNIXTIME(pyr.timestamp), '%Y-%m-%d') + WHERE ps.PowerStationId = @PowerStationId + AND DATE_FORMAT(ps.timestamp, '%Y-%m-%d') BETWEEN @StartDay AND @NowDay"; + + result = (await conn.QueryAsync(sql_power, new { PowerStationId = powerStationId, StartDay = startDay, NowDay = nowDay })).ToList(); + } + catch (Exception exception) + { + throw exception; + } + return result; + } + } + + public async Task> GetListPowerIrradianceYearByPowerStationId(int powerStationId, string nowDay) + { + List result; + using (IDbConnection conn = this._databaseHelper.GetConnection()) + { + try + { + var startyear = Convert.ToDateTime(nowDay).ToString("yyyy"); + + var sql_power = @$"SELECT DATE_FORMAT(ps.timestamp, '%Y-%m') AS Label, ps.MONTHKWH AS PowerData, pyr.Irradiance AS IrradianceData + FROM power_station_history_month ps + LEFT JOIN pyrheliometer_history_month pyr ON ps.PowerStationId = pyr.PowerStationId AND DATE_FORMAT(ps.timestamp, '%Y-%m') = DATE_FORMAT(FROM_UNIXTIME(pyr.timestamp), '%Y-%m') + WHERE ps.PowerStationId = @PowerStationId + AND DATE_FORMAT(ps.timestamp, '%Y') = @Year"; + + result = (await conn.QueryAsync(sql_power, new { PowerStationId = powerStationId, Year = startyear})).ToList(); + } + catch (Exception exception) + { + throw exception; + } + return result; + } + } + } } diff --git a/SolarPower/Repository/Implement/PowerStationRepository.cs b/SolarPower/Repository/Implement/PowerStationRepository.cs index 2c86a4f..254e5f0 100644 --- a/SolarPower/Repository/Implement/PowerStationRepository.cs +++ b/SolarPower/Repository/Implement/PowerStationRepository.cs @@ -2223,7 +2223,7 @@ namespace SolarPower.Repository.Implement sql_per_device.Add(str); } - var sql = @"SELCET TIMESTAMP, AVG(SENSOR) AS Irradiance FROM(" + string.Join(" UNION ", sql_per_device) + @") GORUP BY TIMESTAMP"; + var sql = @"SELECT a.TIMESTAMP, AVG(a.SENSOR) AS Irradiance FROM(" + string.Join(" UNION ", sql_per_device) + @") a GROUP BY TIMESTAMP"; result = await conn.QueryFirstOrDefaultAsync(sql, new { DateTime = dateTime }); } @@ -2361,8 +2361,8 @@ namespace SolarPower.Repository.Implement { var sql = $@"SELECT PowerStationId, - DATE_FORMAT(p.TIMESTAMP, '%Y-%m'), - AVG(p.Irradiance) AS AvgIrradiance + DATE_FORMAT(p.TIMESTAMP, '%Y-%m') AS TIMESTAMP, + AVG(p.Irradiance) AS Irradiance FROM pyrheliometer_history_hour p WHERE DATE_FORMAT(p.TIMESTAMP, '%Y-%m') = @Month AND p.Irradiance != 0 @@ -2387,7 +2387,7 @@ namespace SolarPower.Repository.Implement { try { - var sql = $@"SELECT * FROM pyrheliometer_history_month WHERE DATE_FORMAT(p.TIMESTAMP, '%Y-%m') = @Month AND PowerStationId = @PowerStationId"; + var sql = $@"SELECT * FROM pyrheliometer_history_month WHERE DATE_FORMAT(TIMESTAMP, '%Y-%m') = @Month AND PowerStationId = @PowerStationId"; result = await conn.QueryFirstOrDefaultAsync(sql, new { Month = month, PowerStationId = powerStationId }); } @@ -2441,7 +2441,7 @@ namespace SolarPower.Repository.Implement try { string sql = @"UPDATE pyrheliometer_history_month SET - Irradiance=@Irradiance, + Irradiance=@Irradiance WHERE PowerStationId = @PowerStationId AND TIMESTAMP LIKE CONCAT(@TIMESTAMP, '%') "; diff --git a/SolarPower/Repository/Interface/IOverviewRepository.cs b/SolarPower/Repository/Interface/IOverviewRepository.cs index b116d04..2dc7495 100644 --- a/SolarPower/Repository/Interface/IOverviewRepository.cs +++ b/SolarPower/Repository/Interface/IOverviewRepository.cs @@ -16,5 +16,9 @@ namespace SolarPower.Repository.Interface Task> GetCapacityDataTableByPowerStationIds(List powerStationIds); Task> GetListPowerStationByPowerStationIds(List powerStationIds); Task> GetSolarByCity(MyUser User, UseStatusCityGetPowerStation post); + Task> GetListPowerIrradianceTodayByPowerStationId(int powerStationId, string nowDay); + Task> GetListPowerIrradiance7dayByPowerStationId(int powerStationId, string nowDay); + Task> GetListPowerIrradianceMonthByPowerStationId(int powerStationId, string nowDay); + Task> GetListPowerIrradianceYearByPowerStationId(int powerStationId, string nowDay); } } diff --git a/SolarPower/Startup.cs b/SolarPower/Startup.cs index be27dd2..fa6de93 100644 --- a/SolarPower/Startup.cs +++ b/SolarPower/Startup.cs @@ -102,6 +102,7 @@ namespace SolarPower services.AddSingleton(); services.AddSingleton( new JobSchedule(jobType: typeof(CalcPowerStationJob), cronExpression: "0 5 * * * ?") + //new JobSchedule(jobType: typeof(CalcPowerStationJob), cronExpression: "0/5 * * * * ?") ); #endregion @@ -109,6 +110,7 @@ namespace SolarPower services.AddSingleton(); services.AddSingleton( new JobSchedule(jobType: typeof(CalcAvgPowerStationJob), cronExpression: "0 0 2 * * ?") + //new JobSchedule(jobType: typeof(CalcAvgPowerStationJob), cronExpression: "0/10 * * * * ?") ); #endregion services.AddHostedService(); diff --git a/SolarPower/Views/Shared/_Layout.cshtml b/SolarPower/Views/Shared/_Layout.cshtml index d7a6a8e..e6efc8b 100644 --- a/SolarPower/Views/Shared/_Layout.cshtml +++ b/SolarPower/Views/Shared/_Layout.cshtml @@ -31,7 +31,10 @@ - + + + + @@ -1121,6 +1124,8 @@ + + diff --git a/SolarPower/Views/StationOverview/StationOverviewInfo.cshtml b/SolarPower/Views/StationOverview/StationOverviewInfo.cshtml index 40b6ec3..44ce060 100644 --- a/SolarPower/Views/StationOverview/StationOverviewInfo.cshtml +++ b/SolarPower/Views/StationOverview/StationOverviewInfo.cshtml @@ -141,7 +141,7 @@ }, 'json'); - //#region 載入上傳資料 - 電站圖片 + //#region 載入電站圖片 var url_image = "/PowerStation/GetAllPowerStationImage"; var send_data = { powerStationId: stationId @@ -166,6 +166,223 @@ }, 'json'); //#endregion + //#region 載入圖表資料 + var url = "/StationOverview/GetChartUpToDate"; + var send_data = { + id: stationId + } + $.post(url, send_data, function (rel) { + if (rel.code != "0000") { + toast_error(rel.msg); + return; + } + + var chartToday = rel.data.chartToday; + var chart7day = rel.data.chart7day; + var chartMonth = rel.data.chartMonth; + var chartYear = rel.data.chartYear; + + //#region 今日 + var ctx_chartToday = document.getElementById('chartToday').getContext('2d'); + var myChartToday = new Chart(ctx_chartToday, { + type: 'bar', + data: { + labels: chartToday.labels, + datasets: [{ + type: 'bar', + label: '輸出功率', + yAxisID: 'A', + backgroundColor: color.primary._300, + borderColor: color.primary._500, + data: chartToday.powerDatas + }, { + type: 'line', + label: '日照度', + yAxisID: 'B', + borderColor: color.danger._300, + pointBackgroundColor: color.danger._500, + pointBorderColor: color.danger._500, + pointBorderWidth: 1, + borderWidth: 2, + pointRadius: 4, + pointHoverRadius: 5, + fill: false, + data: chartToday.irradianceDatas, + }] + }, + options: { + scales: { + yAxes: [{ + id: 'A', + type: 'linear', + position: 'left', + ticks: { + min: 0 + } + }, { + id: 'B', + type: 'linear', + position: 'right', + ticks: { + min: 0 + } + }] + } + } + }); + //#endregion + + //#region 7日 + var ctx_chart7day = document.getElementById('chart7day').getContext('2d'); + var myChart7day = new Chart(ctx_chart7day, { + type: 'bar', + data: { + labels: chart7day.labels, + datasets: [{ + type: 'bar', + label: '輸出功率', + yAxisID: 'A', + backgroundColor: color.primary._300, + borderColor: color.primary._500, + data: chart7day.powerDatas + }, { + type: 'line', + label: '日照度', + yAxisID: 'B', + borderColor: color.danger._300, + pointBackgroundColor: color.danger._500, + pointBorderColor: color.danger._500, + pointBorderWidth: 1, + borderWidth: 2, + pointRadius: 4, + pointHoverRadius: 5, + fill: false, + data: chart7day.irradianceDatas, + }] + }, + options: { + scales: { + yAxes: [{ + id: 'A', + type: 'linear', + position: 'left', + ticks: { + min: 0 + } + }, { + id: 'B', + type: 'linear', + position: 'right', + ticks: { + min: 0 + } + }] + } + } + }); + //#endregion + + //#region 本月 + var ctx_chartMonth = document.getElementById('chartMonth').getContext('2d'); + var myChartMonth = new Chart(ctx_chartMonth, { + type: 'bar', + data: { + labels: chartMonth.labels, + datasets: [{ + type: 'bar', + label: '輸出功率', + yAxisID: 'A', + backgroundColor: color.primary._300, + borderColor: color.primary._500, + data: chartMonth.powerDatas + }, { + type: 'line', + label: '日照度', + yAxisID: 'B', + borderColor: color.danger._300, + pointBackgroundColor: color.danger._500, + pointBorderColor: color.danger._500, + pointBorderWidth: 1, + borderWidth: 2, + pointRadius: 4, + pointHoverRadius: 5, + fill: false, + data: chartMonth.irradianceDatas, + }] + }, + options: { + scales: { + yAxes: [{ + id: 'A', + type: 'linear', + position: 'left', + ticks: { + min: 0 + } + }, { + id: 'B', + type: 'linear', + position: 'right', + ticks: { + min: 0 + } + }] + } + } + }); + //#endregion + + //#region 本年 + var ctx_chartYear = document.getElementById('chartYear').getContext('2d'); + var myChartYear = new Chart(ctx_chartYear, { + type: 'bar', + data: { + labels: chartYear.labels, + datasets: [{ + type: 'bar', + label: '輸出功率', + yAxisID: 'A', + backgroundColor: color.primary._300, + borderColor: color.primary._500, + data: chartYear.powerDatas + }, { + type: 'line', + label: '日照度', + yAxisID: 'B', + borderColor: color.danger._300, + pointBackgroundColor: color.danger._500, + pointBorderColor: color.danger._500, + pointBorderWidth: 1, + borderWidth: 2, + pointRadius: 4, + pointHoverRadius: 5, + fill: false, + data: chartYear.irradianceDatas, + }] + }, + options: { + scales: { + yAxes: [{ + id: 'A', + type: 'linear', + position: 'left', + ticks: { + min: 0 + } + }, { + id: 'B', + type: 'linear', + position: 'right', + ticks: { + min: 0 + } + }] + } + } + }); + //#endregion + }, 'json'); + //#endregion //#endregion diff --git a/SolarPower/Views/StationOverview/_UpToDate.cshtml b/SolarPower/Views/StationOverview/_UpToDate.cshtml index 83d3ec7..5107819 100644 --- a/SolarPower/Views/StationOverview/_UpToDate.cshtml +++ b/SolarPower/Views/StationOverview/_UpToDate.cshtml @@ -101,20 +101,8 @@