private string BuildAddNewCameraPropertyWebPageBody([AllowNull] CameraProperty cameraProperties) { string id = cameraProperties?.Id ?? Guid.NewGuid().ToString(); string name = cameraProperties?.Name ?? string.Empty; string urlPath = cameraProperties?.UrlPath ?? string.Empty; string xpath = cameraProperties?.XPathForGet.Path.Expression ?? string.Empty; string values = string.Join(Environment.NewLine, cameraProperties?.StringValues ?? ImmutableSortedSet <string> .Empty); string buttonLabel = cameraProperties != null ? "Save" : "Add"; string header = cameraProperties != null ? "Edit Camera Property" : "Add New Camera Property"; StringBuilder stb = new StringBuilder(); stb.Append(FormStart("ftmCameraPropertyChange", "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("</td></tr>"); stb.Append(Invariant($"<tr><td class='tablecell'>Name:</td><td class='tablecell'>")); stb.Append(HtmlTextBox(nameof(CameraProperty.Name), name)); stb.Append("</td></tr>"); stb.Append(Invariant($"<tr><td class='tablecell'>UrlPath:</td><td class='tablecell'>")); stb.Append(HtmlTextBox(nameof(CameraProperty.UrlPath), urlPath, size: 90)); stb.Append("</td></tr>"); stb.Append(Invariant($"<tr><td class='tablecell'>XPath:</td><td class='tablecell'>")); stb.Append(HtmlTextBox(nameof(CameraProperty.XPathForGet), xpath, size: 90)); stb.Append("</td></tr>"); stb.Append(Invariant($"<tr><td class='tablecell'>Valid string values(separated by lines):</td><td class='tablecell'>")); stb.Append(TextArea(nameof(CameraProperty.StringValues), values)); stb.Append("</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(HikSaveCameraProperty, buttonLabel)}")); if (cameraProperties != null) { stb.Append(FormPageButton(HikDeleteCameraProperty, "Delete")); } stb.Append(FormPageButton(HikCancelCameraProperty, "Cancel")); stb.Append(Invariant($"</td></tr>")); stb.Append("<tr height='5'><td colspan=2></td></tr>"); stb.Append(@"</table>"); stb.Append(@"</div>"); stb.Append(FormEnd()); return(stb.ToString()); }
public void AddHikvisionIsapiCameraProperty(CameraProperty cameraProperty) { using (var scopedLock = configLock.WriterLock()) { hikvisionIsapiCameraProperties[cameraProperty.Id] = cameraProperty; SetValue(nameof(cameraProperty.Name), cameraProperty.Name, cameraProperty.Id); SetValue(nameof(cameraProperty.StringValues), ObjectSerialize.SerializeToString(cameraProperty.StringValues.ToList()), cameraProperty.Id); SetValue(nameof(cameraProperty.UrlPath), cameraProperty.UrlPath, cameraProperty.Id); SetValue(nameof(cameraProperty.XPathForGet.Path.Expression), cameraProperty.XPathForGet.Path.Expression, cameraProperty.Id); SetValue(HikvisionIsapiCameraPropertyIds, hikvisionIsapiCameraProperties.Keys.Aggregate((x, y) => x + HikvisionIsapiCameraPropertyIdsSeparator + y)); // recreate cameras RecreateHikvisionIsapiCameras(); } }
private void HandleCameraPropertyPostBack(NameValueCollection parts, string form) { if (form == NameToIdWithPrefix(HikDeleteCameraProperty)) { pluginConfig.RemoveHikvisionIsapiCameraProperty(parts[RecordId]); pluginConfig.FireConfigChanged(); divToUpdate.Add(SaveErrorDivId, RedirectPageJS(Invariant($"/{pageUrl}?{TabId}=2"))); } else if (form == NameToIdWithPrefix(HikCancelCameraProperty)) { divToUpdate.Add(SaveErrorDivId, RedirectPageJS(Invariant($"/{pageUrl}?{TabId}=2"))); } else if (form == NameToIdWithPrefix(HikSaveCameraProperty)) { StringBuilder results = new StringBuilder(); string cameraPropertyName = parts[nameof(CameraProperty.Name)]; if (string.IsNullOrWhiteSpace(cameraPropertyName)) { results.AppendLine("Name is empty.<br>"); } string cameraPropertyUrlPath = parts[nameof(CameraProperty.UrlPath)]; if (string.IsNullOrWhiteSpace(cameraPropertyUrlPath)) { results.AppendLine("UrlPath is empty.<br>"); } string cameraPropertyXPath = parts[nameof(CameraProperty.XPathForGet)]; if (string.IsNullOrWhiteSpace(cameraPropertyXPath)) { results.AppendLine("Xpath is empty.<br>"); } try { XmlPathData xPath = new XmlPathData(cameraPropertyXPath); #pragma warning disable S1481 // Unused local variables should be removed var _ = xPath.Path; #pragma warning restore S1481 // Unused local variables should be removed } catch (Exception) { results.AppendLine("XPath is not valid.<br>"); } string stringValues = parts[nameof(CameraProperty.StringValues)]; if (results.Length > 0) { divToUpdate.Add(SaveErrorDivId, results.ToString()); } else { string id = parts[RecordId]; if (string.IsNullOrWhiteSpace(id)) { id = System.Guid.NewGuid().ToString(); } var data = new CameraProperty(id, cameraPropertyName, cameraPropertyUrlPath, cameraPropertyXPath, stringValues.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries).ToImmutableSortedSet()); pluginConfig.AddHikvisionIsapiCameraProperty(data); pluginConfig.FireConfigChanged(); divToUpdate.Add(SaveErrorDivId, RedirectPageJS(Invariant($"/{pageUrl}?{TabId}=2"))); } } }