private string GetQueryResultFrame(DevicePersistenceData data, IFrameType frameType, QueryDuration duration, IFrameGrouping grouping) { StringBuilder stb = new StringBuilder(); string iFrameUrl = null; HSHelper hSHelper = new HSHelper(HS); string deviceName = hSHelper.GetName(data.DeviceRefId); switch (frameType) { case IFrameType.TableHistory: var query = InfluxDbQueryBuilder.GetDeviceHistoryTabQuery(data, deviceName, duration); iFrameUrl = BuildTableUri(query, 10); break; case IFrameType.ChartHistory: var chartQuery = InfluxDbQueryBuilder.GetGroupedDeviceHistoryTabQuery(data, deviceName, duration, pluginConfig.DBLoginInformation, GetTimeSpan(grouping)).ResultForSync(); iFrameUrl = BuildChartUri(chartQuery, string.Empty); break; case IFrameType.AverageStats: var statsQuery = InfluxDbQueryBuilder.GetStatsQuery(data, duration, pluginConfig.DBLoginInformation, GetTimeSpan(grouping)).ResultForSync(); iFrameUrl = BuildStatsUri(statsQuery); break; case IFrameType.Histogram: var histogramQuery = InfluxDbQueryBuilder.GetDeviceHistogramTabQuery(data, duration, pluginConfig.DBLoginInformation).ResultForSync(); iFrameUrl = BuildHistogramUri(histogramQuery, duration); break; default: throw new ArgumentOutOfRangeException(nameof(frameType)); } stb.Append(@"<style>iframe{width: 1px;min-width: 100%;border: none; width: 100%; height: 475px}</style>"); stb.Append(Invariant($"<iframe id=\"tableFrame\" src=\"{iFrameUrl}\" scrolling=\"no\"></iframe>")); stb.Append(Invariant($"<script>iFrameResize({{log:false}}, '#{TableFrameId}')</script>")); return(stb.ToString()); }
public string GetDeviceHistoryTab(int refId) { var dataKeyPair = pluginConfig.DevicePersistenceData.FirstOrDefault(x => x.Value.DeviceRefId == refId); var data = dataKeyPair.Value; if ((data != null) && !string.IsNullOrWhiteSpace(pluginConfig.DBLoginInformation.DB)) { bool hasNumericData = !string.IsNullOrWhiteSpace(data.Field); IFrameType DefaultFrameType = hasNumericData ? IFrameType.ChartHistory : IFrameType.TableHistory; QueryDuration DefaultDuration = QueryDuration.D6h; IFrameGrouping DefaultGrouping = IFrameGrouping.Auto; StringBuilder stb = new StringBuilder(); IncludeDataTableFiles(stb); IncludeResourceScript(stb, "iframeSizer.min.js"); stb.Append(@"<table style='width:100%;border-spacing:0px;'"); stb.Append("<tr height='5'><td></td></tr>"); stb.Append("<tr><td>"); stb.Append("Type:"); NameValueCollection iframeType = new NameValueCollection(); AddEnumValue(iframeType, IFrameType.TableHistory); if (hasNumericData) { AddEnumValue(iframeType, IFrameType.ChartHistory); AddEnumValue(iframeType, IFrameType.AverageStats); } stb.Append(FormDropDown(IFrameTypeId, iframeType, DefaultFrameType.ToString(), 150, string.Empty, true, DeviceUtiltyPageName)); stb.Append(" Duration:"); NameValueCollection duration = CreateNameValueCreation <QueryDuration>(); stb.Append(FormDropDown(IFrameDurationId, duration, DefaultDuration.ToString(), 100, string.Empty, true, DeviceUtiltyPageName)); stb.Append(" Grouping:"); NameValueCollection grouping = CreateNameValueCreation <IFrameGrouping>(); stb.Append(FormDropDown(IFrameGroupingId, grouping, DefaultGrouping.ToString(), 100, string.Empty, true, DeviceUtiltyPageName, hasNumericData)); stb.Append("</td></tr>"); stb.Append("<tr height='5'><td></td></tr>"); stb.Append("<tr><td class='tablecell'>"); stb.Append(DivStart(resultsDivPartId, string.Empty)); stb.Append(GetQueryResultFrame(data, DefaultFrameType, DefaultDuration, DefaultGrouping)); stb.Append(DivEnd()); stb.Append("</td></tr>"); stb.Append("<tr height='5'><td></td></tr>"); stb.Append("<tr><td>"); stb.Append(PageTypeButton(Invariant($"Edit{data.Id}"), "Edit", EditDevicePageType, id: data.Id)); stb.Append(" "); stb.Append(PageTypeButton(Invariant($"Queries{data.Id}"), "More Queries", HistoryDevicePageType, id: data.Id)); stb.Append(" "); stb.Append(FormButton(DoneButtonId, "Done", string.Empty, DeviceUtiltyPageName)); stb.Append("</td></tr>"); stb.Append("</table>"); return(stb.ToString()); } return(string.Empty); }
private SpareStrategy(IScoreStrategy next, IFrameType frameType) { _next = next; _frameType = frameType; }