Exemple #1
0
        public override string ActionFormatUI(IPlugInAPI.strTrigActInfo actionInfo)
        {
            try
            {
                switch (actionInfo.TANumber)
                {
                case ActionRefreshTANumber:
                    if (actionInfo.DataIn != null)
                    {
                        var refreshDeviceAction = ObjectSerialize.DeSerializeFromBytes(actionInfo.DataIn) as RefreshDeviceAction;
                        if ((refreshDeviceAction != null) && (refreshDeviceAction.DeviceRefId != 0))
                        {
                            HSHelper hSHelper = new HSHelper(HS);
                            return(Invariant($"Refresh {hSHelper.GetName(refreshDeviceAction.DeviceRefId)} from Influx DB"));
                        }
                    }
                    return(Invariant($"{PlugInData.PlugInName} Unknown Device Import Refresh"));

                default:
                    return(base.ActionFormatUI(actionInfo));
                }
            }
            catch (Exception ex)
            {
                Trace.TraceError(Invariant($"Failed to ActionFormatUI with {ex.GetFullMessage()}"));
                throw;
            }
        }
        private string BuildHistoryPage(NameValueCollection parts, DevicePersistenceData data)
        {
            StringBuilder stb = new StringBuilder();

            IncludeDataTableFiles(stb);
            IncludeResourceScript(stb, "iframeSizer.min.js");

            HSHelper hsHelper = new HSHelper(HS);

            string header = Invariant($"History - {hsHelper.GetName(data.DeviceRefId)}");

            stb.Append(PageBuilderAndMenu.clsPageBuilder.FormStart("ftmDeviceHistory", "IdHistory", "Post"));
            stb.Append(@"<div>");

            stb.Append(@"<table class='full_width_table'>");

            stb.Append(Invariant($"<tr><td class='tableheader'>{header}</td></tr>"));
            var    queries        = GetDefaultValueQueries(data);
            string querySelection = parts[QueryPartId];

            if (string.IsNullOrWhiteSpace(querySelection))
            {
                querySelection = queries?.FirstOrDefault().Key;
            }

            NameValueCollection collection = new NameValueCollection();

            foreach (var query in queries)
            {
                collection.Add(query.Key, query.Key);
            }

            stb.Append(Invariant($"<tr><td>{FormDropDown(HistoryQueryTypeId, collection, querySelection, 400, string.Empty, true)}</td></tr>"));

            string finalQuery = Invariant(queries[querySelection]);

            stb.Append(Invariant($"<tr height='10'><td>{HtmlTextBox(RecordId, data.Id.ToString(), @type: "hidden")}</td></tr>"));
            stb.Append("<tr><td>");
            stb.Append(DivStart(QueryTestDivId, string.Empty));
            stb.Append(Invariant($"{TextArea(QueryTestId, finalQuery)}"));
            stb.Append(DivEnd());
            stb.Append(Invariant($"<br>{FormButton(HistoryRunQueryButtonName, "Run Query", "Run Query")}"));
            stb.Append("&nbsp;");
            stb.Append(Invariant($"{FormButton(HistoryShowChartButtonName, "Show Chart", "Show Chart")}</td></tr>"));
            stb.Append("<tr height='5'><td></td></tr>");
            stb.Append(Invariant($"<tr><td class='tableheader'>Results</td></tr>"));
            stb.Append("<tr><td>");
            stb.Append(DivStart(HistoryResultDivId, string.Empty));
            BuildQueryTableIFrame(stb, finalQuery);
            stb.Append(DivEnd());
            stb.Append("</td><tr>");
            stb.Append("<tr height='5'><td></td></tr>");
            stb.Append(Invariant($"<tr><td>{HistoryBackButton()}</td></tr>"));
            stb.Append("</table>");
            stb.Append("</div>");
            stb.Append(PageBuilderAndMenu.clsPageBuilder.FormEnd());

            return(stb.ToString());
        }
        private IDictionary <string, string> GetDeviceHistoryTabQueries(DevicePersistenceData data)
        {
            var      queries    = new Dictionary <string, string>();
            HSHelper hSHelper   = new HSHelper(HS);
            string   deviceName = hSHelper.GetName(data.DeviceRefId);
            var      fields     = string.Join(",", GetFields(data));

            queries.Add("100 Records",
                        Invariant($"SELECT {fields} AS \"{ deviceName}\" from \"{data.Measurement}\" WHERE {PluginConfig.DeviceRefIdTag}='{data.DeviceRefId}' ORDER BY time DESC LIMIT 100"));

            queries.Add("1h",
                        Invariant($"SELECT {fields} AS \"{ deviceName}\" from \"{data.Measurement}\" WHERE {PluginConfig.DeviceRefIdTag}='{data.DeviceRefId}' AND time > now() - 1h ORDER BY time DESC LIMIT 10000"));

            queries.Add("24h",
                        Invariant($"SELECT {fields} AS \"{ deviceName}\" from \"{data.Measurement}\" WHERE {PluginConfig.DeviceRefIdTag}='{data.DeviceRefId}' AND time > now() - 24h ORDER BY time DESC LIMIT 10000"));

            queries.Add("7d",
                        Invariant($"SELECT {fields} AS \"{ deviceName}\" from \"{data.Measurement}\" WHERE {PluginConfig.DeviceRefIdTag}='{data.DeviceRefId}' AND time > now() - 7d ORDER BY time DESC LIMIT 10000"));

            queries.Add("30d",
                        Invariant($"SELECT {fields} AS \"{ deviceName}\" from \"{data.Measurement}\" WHERE {PluginConfig.DeviceRefIdTag}='{data.DeviceRefId}' AND time > now() - 30d ORDER BY time DESC LIMIT 10000"));

            return(queries);
        }
Exemple #4
0
        private NameValueCollection GetCurrentDeviceImportDevices()
        {
            HSHelper hsHelper         = new HSHelper(HS);
            var      deviceEnumerator = HS.GetDeviceEnumerator() as clsDeviceEnumeration;

            var currentDevices    = new NameValueCollection();
            var importDevicesData = pluginConfig.ImportDevicesData;

            do
            {
                DeviceClass device = deviceEnumerator.GetNext();
                if ((device != null) &&
                    (device.get_Interface(HS) != null) &&
                    (device.get_Interface(HS).Trim() == PlugInData.PlugInName))
                {
                    string address = device.get_Address(HS);

                    var childDeviceData = DeviceIdentifier.Identify(device);
                    if (childDeviceData != null)
                    {
                        if (pluginConfig.ImportDevicesData.TryGetValue(childDeviceData.DeviceId, out var importDeviceData))
                        {
                            currentDevices.Add(device.get_Ref(HS).ToString(CultureInfo.CurrentCulture), hsHelper.GetName(device));
                        }
                    }
                }
            } while (!deviceEnumerator.Finished);

            return(currentDevices);
        }
        private string BuildPersistenceTab(NameValueCollection parts)
        {
            StringBuilder stb = new StringBuilder();

            IncludeResourceCSS(stb, "jquery.dataTables.css");
            IncludeResourceScript(stb, "jquery.dataTables.min.js");

            HSHelper hsHelper = new HSHelper(HS);

            stb.Append(@"<div>");
            stb.Append(@"<table class='full_width_table'>");
            stb.Append("<tr><td>");

            stb.Append("<table id=\"deviceTable\" class=\"cell-border compact\" style=\"width:100%\">");
            stb.Append(@"<thead><tr>");

            stb.Append(Invariant($"<th>Device</th>"));
            stb.Append(Invariant($"<th>Measurement</th>"));
            stb.Append(Invariant($"<th>Field for value</th>"));
            stb.Append(Invariant($"<th>Range</th>"));
            stb.Append(Invariant($"<th>Field for device string</th>"));
            stb.Append(Invariant($"<th>Tags</th>"));
            stb.Append(Invariant($"<th></th>"));

            stb.Append(@"</tr></thead>");
            stb.Append(@"<tbody>");

            foreach (var pair in pluginConfig.DevicePersistenceData)
            {
                var id     = pair.Key;
                var device = pair.Value;

                stb.Append(@"<tr>");
                string name = hsHelper.GetName(device.DeviceRefId) ?? Invariant($"Unknown(RefId:{device.DeviceRefId})");
                stb.Append(Invariant($"<td class='tablecell'><a href='/deviceutility?ref={device.DeviceRefId}&edit=1'>{name}</a></td>"));
                stb.Append(Invariant($"<td class='tablecell'>{device.Measurement}</td>"));
                stb.Append(Invariant($"<td class='tablecell'>{device.Field ?? string.Empty}</td>"));
                string rangeString = !string.IsNullOrWhiteSpace(device.Field) ?
                                     Invariant($"{device.MaxValidValue ?? double.PositiveInfinity} to {device.MinValidValue ?? double.NegativeInfinity}") : string.Empty;
                stb.Append(Invariant($"<td class='tablecell'>{rangeString}</td>"));
                stb.Append(Invariant($"<td class='tablecell'>{device.FieldString ?? string.Empty}</td>"));
                stb.Append("<td class='tablecell'>");
                if (device.Tags != null)
                {
                    foreach (var item in device.Tags)
                    {
                        stb.Append(Invariant($"{item.Key}={item.Value}<br>"));
                    }
                }

                stb.Append("</td>");
                stb.Append("<td class='tablecell'>");
                stb.Append(PageTypeButton(Invariant($"Edit{id}"), "Edit", EditDevicePageType, id: id));
                stb.Append("&nbsp;");
                stb.Append(PageTypeButton(Invariant($"History{id}"), "History", HistoryDevicePageType, id: id));
                stb.Append("</td></tr>");
            }
            stb.Append(@"</tbody>");
            stb.Append(@"</table>");

            stb.AppendLine("<script type='text/javascript'>");
            stb.AppendLine(@"$(document).ready(function() {");
            stb.AppendLine(@"$('#deviceTable').DataTable({
                                       'pageLength':25,
                                        'order': [],
                                        'columnDefs': [
                                            { 'className': 'dt-left', 'targets': '_all'}
                                        ],
                                        'columns': [
                                            null,
                                            null,
                                            null,
                                            null,
                                            null,
                                            null,
                                            { 'orderable': false }
                                          ]
                                    });
                                });");
            stb.AppendLine("</script>");

            stb.Append(Invariant($"<tr><td>{PageTypeButton("Add New Device", AddNewName, EditDevicePageType)}</td><td></td></tr>"));

            stb.Append(Invariant($"<tr><td></td></tr>"));
            stb.Append(@"<tr height='5'><td></td></tr>");
            stb.Append(@"</table>");
            stb.Append(@"</div>");

            return(stb.ToString());
        }