using System.Collections.Generic; using System.Globalization; using System.Text; public class HtmlBuilder { public static string GetSettingsPage(List settings) { return Decorate(GetSettingsString(settings), title: "Настройки Фишки"); } public static string GetLoginPage() { string content = @"

Вход

"; return Decorate(content, title: "Вход"); } public static string GetSettingsString(List settings) { var sb = new StringBuilder(); sb.AppendLine("

Настройки фишки

"); // блок монет sb.AppendLine(@"

Монеты

"); sb.AppendLine("
"); sb.AppendLine("

Параметры

"); foreach (Setting setting in settings) { string view = setting.Type switch { SettingType.Bool => GetBoolView(setting), SettingType.Float => GetFloatView(setting), SettingType.String => GetStringView(setting), SettingType.Int => GetIntView(setting), _ => $"

{Escape(setting.Alias)}: (unknown)

" }; sb.AppendLine(view); } sb.AppendLine("
"); // JS для realtime отправки sb.AppendLine(@"
"); return sb.ToString(); } private static string GetBoolView(Setting setting) { string name = setting.Id; string id = name + "ID"; string isChecked = setting.BoolValue ? "checked" : ""; return $@"
"; } private static string GetFloatView(Setting setting) { string name = setting.Id; string id = name + "ID"; string spanId = id + "_VAL"; string min = setting.FloatMin.ToString(CultureInfo.InvariantCulture); string max = setting.FloatMax.ToString(CultureInfo.InvariantCulture); string value = setting.FloatValue.ToString(CultureInfo.InvariantCulture); string step = setting.FloatStep.ToString(CultureInfo.InvariantCulture); return $@"
"; } private static string GetStringView(Setting setting) { var sb = new StringBuilder(); sb.AppendLine("
"); sb.AppendLine($"

{Escape(setting.Alias)}

"); for (int i = 0; i < setting.AllowedValues.Count; i++) { string stringValue = setting.AllowedValues[i]; string name = setting.Id; string id = name + "ID" + i; bool isChecked = setting.StringValue == stringValue; string Checked = isChecked ? "checked" : ""; sb.AppendLine("
"); sb.AppendLine($""); sb.AppendLine( $"" ); sb.AppendLine("
"); } sb.AppendLine("
"); return sb.ToString(); } private static string GetIntView(Setting setting) { string name = setting.Id; string id = name + "ID"; return $@"
"; } private static string Decorate(string content, string title) { string res = "" + "" + "" + "" + "" + "" + $"{Escape(title)}" + "" + ""; res += content; res += ""; return res; } // минимальная защита от мусора в html private static string Escape(string s) { if (string.IsNullOrEmpty(s)) return ""; return s.Replace("&", "&").Replace("<", "<").Replace(">", ">").Replace("\"", """); } private static string EscapeAttr(string s) => Escape(s).Replace("'", "'"); }