Example #1
0
        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();
            }
        }
Example #3
0
        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")));
                }
            }
        }