Ejemplo n.º 1
0
        static string ReplaceVariableValues(string objectString, DeviceCollection table)
        {
            int pos = objectString.IndexOf("\"point\"", StringComparison.InvariantCultureIgnoreCase);

            if (pos < 0)
            {
                return(null);
            }

            int pns = objectString.IndexOf("\"", pos + 7);

            if (pns < 0)
            {
                return(null);
            }

            int pne = objectString.IndexOf("\"", pns + 1);

            if (pne < 0)
            {
                return(null);
            }


            var pointname = objectString.Substring(pns + 1, pne - pns - 1);

            var rec = table.FirstOrDefault(x => x.Point.Trim() == pointname);

            if (rec == null)
            {
                return(null);
            }

            string newObjectString;

            if ((newObjectString = ReplaceVariableValue(objectString, "description", ((rec.Description == null || rec.Description.Length == 0) ? "" : "{&h22}" + rec.Description + "{&h22}"))) != null)
            {
                objectString = newObjectString;
            }

            if ((newObjectString = ReplaceVariableValue(objectString, "tooltiptext", ((rec.Tooltip == null || rec.Tooltip.Length == 0) ? "" : "{&h22}" + rec.Tooltip + "{&h22}"))) != null)
            {
                objectString = newObjectString;
            }


            string unit = null, chartTable = null, chartValueDescription = null, chartYTitle = null;

            if (Regex.IsMatch(pointname, @"(\.I)[^\.]*$")) /// pointname.EndsWith(".I"))
            {
                chartTable            = "ENERGIA";
                chartValueDescription = rec.Comment;
                unit        = "A";
                chartYTitle = $"I [{unit}]";
            }
            else if (Regex.IsMatch(pointname, @"(\.U)[^\.]*$")) ///(pointname.EndsWith(".U") || pointname.EndsWith(".U1"))
            {
                chartTable            = "ENERGIA";
                chartValueDescription = rec.Comment;
                unit        = pointname.Contains("VN") ? "kV" : "V";
                chartYTitle = $"U [{unit}]";
            }
            if (chartYTitle != null)
            {
                if ((newObjectString = ReplaceVariableValue(objectString, "chartTable", chartTable)) != null)
                {
                    objectString = newObjectString;
                }

                if ((newObjectString = ReplaceVariableValue(objectString, "chartValueDescription", chartValueDescription)) != null)
                {
                    objectString = newObjectString;
                }

                if ((newObjectString = ReplaceVariableValue(objectString, "chartYTitle", chartYTitle)) != null)
                {
                    objectString = newObjectString;
                }

                if ((newObjectString = ReplaceVariableValue(objectString, "unit", unit)) != null)
                {
                    objectString = newObjectString;
                }
            }

            return(objectString);
        }