コード例 #1
0
        public static string CreateSensorInfoTable(SensorInfoViewModel sensorInfo)
        {
            StringBuilder result = new StringBuilder();

            string encodedPath = SensorPathHelper.Encode($"{sensorInfo.ProductName}/{sensorInfo.Path}");

            result.Append("<div style='margin: 10px'><div class='row justify-content-start'><div class='col-md-auto'>" +
                          $"<h5 style='margin: 10px 20px 10px;'>{sensorInfo.ProductName}/{sensorInfo.Path}</h5><div>" +
                          $"{CreateEditButtonForInfo(encodedPath)}{CreateSaveButtonForInfo(encodedPath)}" +
                          $"{CreateResetButtonForInfo(encodedPath)}</div></div></div></div>");
            result.Append("<table class='table table-bordered'><tbody>");
            result.Append($"<tr><td>Product</td><td>{sensorInfo.ProductName}</td></tr>");
            result.Append($"<tr><td>Path</td><td>{sensorInfo.Path}</td></tr>");
            result.Append($"<tr><td>Sensor type</td><td>{sensorInfo.SensorType}</td></tr>");
            result.Append("<tr><td>Expected update interval<i class='fas fa-question-circle' " +
                          "title='Time format: dd.hh:mm:ss min value 00:05:00'></i></td><td><input disabled type='text' " +
                          $"class='form-control' style='max-width:300px' id='interval_{encodedPath}' " +
                          $"value='{sensorInfo.ExpectedUpdateInterval}'></td></tr>");
            result.Append("<tr><td>Description</td><td><input disabled type='text' class='form-control' style='max-width:300px'" +
                          $" id='description_{encodedPath}' value='{sensorInfo.Description}'></td></tr>");
            result.Append("<tr><td>Unit</td><td><input disabled type='text' class='form-control' style='max-width:300px'" +
                          $" id='unit_{encodedPath}' value='{sensorInfo.Unit}'></td></tr>");

            result.Append("</div>");
            return(result.ToString());
        }
コード例 #2
0
        public void RemoveNode([FromQuery(Name = "Selected")] string encodedPath)
        {
            if (encodedPath.Contains("sensor_"))
            {
                encodedPath = encodedPath.Substring("sensor_".Length);
            }

            var decodedPath = SensorPathHelper.Decode(encodedPath);
            var user        = HttpContext.User as User ?? _userManager.GetUserByUserName(HttpContext.User.Identity?.Name);

            if (decodedPath.Contains('/'))
            {
                //remove node
                ParseProductAndPath(encodedPath, out var product, out var path);
                var model = _treeManager.GetTreeViewModel(user).Clone();
                var node  = model.GetNode(decodedPath);

                var paths = new List <string>(1 << 2);
                if (node == null) //remove single sensor
                {
                    ParseProductPathAndSensor(encodedPath, out product, out path, out var sensor);
                    node = string.IsNullOrEmpty(path) ?
                           model.GetNode(product) : model.GetNode($"{product}/{path}");

                    if (node != null)
                    {
                        if (string.IsNullOrEmpty(path))
                        {
                            paths.Add(sensor);
                        }
                        else
                        {
                            paths.Add($"{path}/{sensor}");
                        }
                    }
                }
                else //remove sensors
                {
                    GetSensorsPaths(node, paths);
                }

                var productEntity = _productManager.GetProductByName(product);

                _sensorsInterface.RemoveSensors(product, productEntity.Key, paths);
            }

            else
            {
                //remove product
                var productEntity = _productManager.GetProductByName(decodedPath);
                if (productEntity == null)
                {
                    return;
                }

                _sensorsInterface.HideProduct(productEntity, out _);
            }
        }
コード例 #3
0
        public SensorDataViewModel(string path, SensorViewModel sensor)
        {
            var time = (DateTime.UtcNow - sensor.Time);

            UpdateTime = ListHelper.GetTimeAgo(time);
            Status     = ViewHelper.GetStatusHeaderColorClass(sensor.Status);

            int index       = path.IndexOf('_');
            var encodedPath = path.Substring(index + 1, path.Length - index - 1);
            var decodedPath = SensorPathHelper.Decode(encodedPath);

            Id = "sensor_" + SensorPathHelper.Encode($"{decodedPath}/{sensor.Name}");

            Value           = sensor.ShortStringValue;
            ValidationError = sensor.ValidationError;
        }
コード例 #4
0
        public static string CreateNotSelectedLists(string selectedPath, TreeViewModel model)
        {
            if (model == null)
            {
                return(string.Empty);
            }

            var result = new StringBuilder(1 << 8);

            foreach (var(_, node) in model.Nodes)
            {
                string formattedPath = SensorPathHelper.Encode(node.Path);
                if (!string.IsNullOrEmpty(selectedPath) &&
                    selectedPath.Equals(formattedPath))
                {
                    continue;
                }

                DFSCreateList(result, node);
            }

            return(result.ToString());
        }
コード例 #5
0
        public static StringBuilder CreateList(StringBuilder result, NodeViewModel node)
        {
            string formattedNodePath = SensorPathHelper.Encode(node.Path);

            result.Append($"<div id='list_{formattedNodePath}' style='display: none;'>");

            if (node.Sensors != null && !node.Sensors.IsEmpty)
            {
                foreach (var(name, sensor) in node.Sensors)
                {
                    string sensorPath    = $"{node.Path}/{name}";
                    string formattedPath = SensorPathHelper.Encode(sensorPath);
                    result.Append($"<div id='sensorInfo_parent_{formattedPath}' style='display: none'>");
                    result.Append(CreateSensorInfoLink(formattedPath));
                    result.Append($"<div id=sensor_info_{formattedPath}></div></div>");
                    result.Append($"<div class='accordion' id='sensorData_{formattedPath}' style='display: none'>");
                    result.Append(CreateSensor(formattedPath, sensor));
                    result.Append("</div>");
                }
            }

            result.Append("</div>");
            return(result);
        }
コード例 #6
0
 public static string Recursion(NodeViewModel node)
 {
     var result    = new StringBuilder(node.Nodes?.Count ?? 0 + node.Sensors?.Count ?? 0 + 8);
     var name      = SensorPathHelper.Encode(node.Path);
     var shortName = node.Name.Length > NodeNameMaxLength
         ? $"{node.Name[..NodeNameMaxLength]}..."