private string BuildAddNewPersistenceWebPageBody([AllowNull] DevicePersistenceData data) { HSHelper hsHelper = new HSHelper(HS); var devices = hsHelper.GetDevices(); var devicesSorted = devices.OrderBy(x => x.Value); var options = new Dictionary <int, string>(); foreach (var device in devicesSorted) { options.Add(device.Key, device.Value); } int deviceRefId = data != null ? data.DeviceRefId : -1; string measurement = data != null ? data.Measurement : string.Empty; string field = data?.Field ?? string.Empty; string fieldString = data?.FieldString ?? string.Empty; string maxValidValue = data?.MaxValidValue?.ToString(CultureInfo.InvariantCulture) ?? string.Empty; string minValidValue = data?.MinValidValue?.ToString(CultureInfo.InvariantCulture) ?? string.Empty; var trackedType = data?.TrackedType ?? TrackedType.Value; string tags = string.Empty; string id = data != null ? data.Id : string.Empty; string buttonLabel = data != null ? "Save" : "Add"; string header = data != null ? "Edit Persistence" : "Add New DB Persistence"; if (data != null && data.Tags != null) { foreach (var tag in data.Tags) { tags += Invariant($"{tag.Key}={tag.Value}{Environment.NewLine}"); } } StringBuilder stb = new StringBuilder(); IncludeResourceCSS(stb, "chosen.css"); IncludeResourceScript(stb, "chosen.jquery.min.js"); stb.Append(PageBuilderAndMenu.clsPageBuilder.FormStart("ftmDeviceChange", "IdChange", "Post")); stb.Append(@"<div>"); stb.Append(@"<table class='full_width_table'>"); stb.Append("<tr height='5'><td></td><td></td></tr>"); stb.Append(Invariant($"<tr><td class='tableheader' colspan=2>{header}</td></tr>")); stb.Append(Invariant($"<tr><td class='tablecell'>Name:</td><td class='tablecell'>")); stb.Append(FormDropDownChosen(DeviceRefIdId, options, deviceRefId)); stb.Append(Invariant($" ")); stb.Append(FormButton(FillDefaultValuesButtonName, "Fill Default Values", "Fill default values")); stb.Append(Invariant($"</td></tr>")); stb.Append(Invariant($"<tr><td class='tablecell'>Measurement:</td><td class='tablecell'>")); stb.Append(DivStart(MeasurementDivId, string.Empty)); stb.Append(HtmlTextBox(MeasurementId, measurement)); stb.Append(DivEnd()); stb.Append("</td></tr>"); stb.Append(Invariant($"<tr><td class='tablecell'>Field for value:</td><td class='tablecell'>")); stb.Append(DivStart(FieldDivId, string.Empty)); stb.Append(HtmlTextBox(FieldId, field)); stb.Append(DivEnd()); stb.Append("</td></tr>"); stb.Append(Invariant($"<tr><td class='tablecell'>Max valid value:</td><td class='tablecell'>")); stb.Append(DivStart(MaxValidValueDivId, string.Empty)); stb.Append(HtmlTextBox(MaxValidValueId, maxValidValue)); stb.Append(DivEnd()); stb.Append("</td></tr>"); stb.Append(Invariant($"<tr><td class='tablecell'>Min valid value:</td><td class='tablecell'>")); stb.Append(DivStart(MinValidValueDivId, string.Empty)); stb.Append(HtmlTextBox(MinValidValueId, minValidValue)); stb.Append(DivEnd()); stb.Append("</td></tr>"); stb.Append(Invariant($"<tr><td class='tablecell'>Field for string value:</td><td class='tablecell'>{HtmlTextBox(FieldStringId, fieldString)}</td></tr>")); NameValueCollection trackedTypeCollection = CreateNameValueCreation <TrackedType>(); stb.Append(Invariant($"<tr><td class='tablecell'>Record On Change of:</td><td class='tablecell'>{FormDropDown(TrackedTypeId, trackedTypeCollection, trackedType.ToString(), 100, string.Empty, false)}</td></tr>")); stb.Append(Invariant($"<tr><td class='tablecell'>Tags:</td><td class='tablecell'><p><small>Name and locations are automatically added as tags.</small></p>{TextArea(TagsId, tags, cols: 35)}</td></tr>")); stb.Append(Invariant($"<tr><td colspan=2>{HtmlTextBox(RecordId, id, type: "hidden")}<div id='{SaveErrorDivId}' style='color:Red'></div></td><td></td></tr>")); stb.Append(Invariant($"<tr><td colspan=2>{FormPageButton(EditPersistenceSave, buttonLabel)}")); if (data != null) { stb.Append(FormPageButton(DeletePersistenceSave, "Delete")); } stb.Append(FormPageButton(EditPersistenceCancel, "Cancel")); stb.Append(Invariant($"</td></tr>")); stb.Append("<tr height='5'><td colspan=2></td></tr>"); stb.Append(@"</table>"); stb.Append(@"</div>"); stb.Append(PageBuilderAndMenu.clsPageBuilder.FormEnd()); return(stb.ToString()); }