using CliWrap; using CliWrap.Buffered; using HandlebarsDotNet; using InnovEnergy.App.VrmGrabber.Database; using InnovEnergy.Lib.Utils; using Microsoft.AspNetCore.Mvc; using FILE=System.IO.File; using VrmInstallation = InnovEnergy.Lib.Victron.VictronVRM.Installation; namespace InnovEnergy.App.VrmGrabber; public record InstallationToHtmlInterface( String Name, String Ip, Int64 Vrm, String Identifier, String Serial, String EscapedName, String Online, String LastSeen, Int64 NumBatteries, String BatteryVersion ); [Controller] public class Controller : ControllerBase { //Todo automatically grab newest version? private const String FirmwareVersion = "VERSION"; [HttpGet] [Route("/")] [Produces("text/html")] public ActionResult Index() { const String source = @"
Name | Gui | VRM | Grafana | Identifier | Last Seen | Serial | #Batteries | Firmware-Version |
---|
Please wait page is still loading
" }; Handlebars.RegisterTemplate("installations", partialSource); var template = Handlebars.Compile(source); var installsForHtml = installationsInDb.Select(i => new InstallationToHtmlInterface( i.Name, i.Ip, i.Vrm, i.Identifier, i.Serial, i.EscapedName, i.Online, DateTimeOffset.FromUnixTimeSeconds(Convert.ToInt64(i.LastSeen)).ToString(), i.NumberOfBatteries, i.BatteryFirmwareVersion)); var data = new { inst = installsForHtml, serverIp = "10.2.0.1", firmwareVersion = FirmwareVersion }; var result = template(data); return new ContentResult { ContentType = "text/html", Content = result }; } [HttpGet(nameof(UpdateBatteryFirmware))] public async Task