From 5a0857b8a2a9c23a7bf892d7bc6459e512d8db7c Mon Sep 17 00:00:00 2001 From: taywon18 Date: Sun, 22 Sep 2024 17:58:43 +0200 Subject: [PATCH] fixed color and added minmax emoji --- Tagger/RunEnv/Pages/pommier | 3 +- Tagger/Service/ParsingManager.cs | 55 ++++++++++++++++++++++++++------ Tagger/wwwroot/css/site.css | 3 ++ 3 files changed, 51 insertions(+), 10 deletions(-) diff --git a/Tagger/RunEnv/Pages/pommier b/Tagger/RunEnv/Pages/pommier index 06e14df..7d93556 100644 --- a/Tagger/RunEnv/Pages/pommier +++ b/Tagger/RunEnv/Pages/pommier @@ -1,6 +1,7 @@ # turlutu {{display:number.kalanchoe_max_air_humidity}} +{{minmax_emoji:sensor.kalanchoe_air_humidity,number.kalanchoe_min_air_humidity,number.kalanchoe_max_air_humidity}} {{minmax_display:sensor.kalanchoe_air_humidity,number.kalanchoe_min_air_humidity,number.kalanchoe_max_air_humidity}} -{{minmax_display:sensor.bromelia_soil_moisture,number.kalanchoe_min_air_humidity,number.kalanchoe_max_air_humidity}} +{{minmax_emoji:sensor.bromelia_soil_moisture,number.kalanchoe_min_air_humidity,number.kalanchoe_max_air_humidity}} {{minmax_display:sensor.bromelia_soil_moisture,number.kalanchoe_min_air_humidity,number.kalanchoe_max_air_humidity}} diff --git a/Tagger/Service/ParsingManager.cs b/Tagger/Service/ParsingManager.cs index dcc94b5..83be348 100644 --- a/Tagger/Service/ParsingManager.cs +++ b/Tagger/Service/ParsingManager.cs @@ -14,9 +14,11 @@ public class ParsingManager Configuration Conf; HttpClient Client; string Pattern = @"\{\{([a-zA-Z0-9._]+)\:([a-zA-Z0-9._]+)(?:,([a-zA-Z0-9._]+))*\}\}"; + Dictionary Buffer = new(); readonly string SimpleDisplay = "display"; readonly string MinMaxDisplay = "minmax_display"; + readonly string MinMaxEmoji = "minmax_emoji"; public ParsingManager(IConfiguration configuration) { @@ -28,6 +30,9 @@ public class ParsingManager public async Task Parse(string input) { + lock (Buffer) + Buffer.Clear(); + return Regex.Replace(input, Pattern, (match) => { if (match.Groups.Count <= 1) @@ -46,6 +51,8 @@ public class ParsingManager return ParseDisplay(args.ToArray()).Result; else if(func == MinMaxDisplay) return ParseMinMaxDisplay(args.ToArray()).Result; + else if(func == MinMaxEmoji) + return ParseMinMaxEmoji(args.ToArray()).Result; else return match.Value; }); @@ -81,22 +88,52 @@ public class ParsingManager return $"(Bad {SimpleDisplay} call, Not any result from call for max (3th) argument)"; bool isOk = val > min && val < max; - string emoji = isOk ? "✔️" : "❌"; - string tag = isOk ? "numeric-value" : "numeric-value-error"; - return $"{val} {emoji} [{min}, {max}]"; + string tag = isOk ? "numeric-value-ok" : "numeric-value-error"; + return $" {val}"; + } + + public async Task ParseMinMaxEmoji(string[] args) + { + if (args.Length < 3) + return ($"(Bad {SimpleDisplay} call, need at least 3 argument)"); + + var val = await Get(args[0]).ConfigureAwait(false); + if (val is null) + return $"(Bad {SimpleDisplay} call, Not any result from call for main (1st) argument)"; + + var min = await Get(args[1]).ConfigureAwait(false); + if (min is null) + return $"(Bad {SimpleDisplay} call, Not any result from call for min (2nd) argument)"; + + var max = await Get(args[2]).ConfigureAwait(false); + if (max is null) + return $"(Bad {SimpleDisplay} call, Not any result from call for max (3th) argument)"; + + bool isOk = val > min && val < max; + string emoji = isOk ? "✅" : "⚠️"; + return emoji; } public async Task Get(string item, CancellationToken tk = default) { try { - var resp = await Client.GetFromJsonAsync(item, tk).ConfigureAwait(false); - if (resp is null) - return null; + lock(Buffer) + { + if(Buffer.ContainsKey(item)) + return (float?)Buffer[item]; - if (float.TryParse(resp.state, CultureInfo.InvariantCulture, out float value)) - return value; - return null; + var resp = Client.GetFromJsonAsync(item, tk).Result; + if (resp is null) + return null; + + if (float.TryParse(resp.state, CultureInfo.InvariantCulture, out float value)) + { + Buffer.Add(item, value ); + return value; + } + return null; + } } catch(Exception e) { diff --git a/Tagger/wwwroot/css/site.css b/Tagger/wwwroot/css/site.css index f5a1fac..eff9933 100644 --- a/Tagger/wwwroot/css/site.css +++ b/Tagger/wwwroot/css/site.css @@ -68,6 +68,9 @@ a, .btn-link { } .numeric-value { +} + +.numeric-value-ok { color: blue; }