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(" "); 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); }
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(" "); 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()); }