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("&nbsp;Duration:");
                NameValueCollection duration = CreateNameValueCreation <QueryDuration>();
                stb.Append(FormDropDown(IFrameDurationId, duration, DefaultDuration.ToString(),
                                        100, string.Empty, true, DeviceUtiltyPageName));

                stb.Append("&nbsp;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("&nbsp;");
                stb.Append(PageTypeButton(Invariant($"Queries{data.Id}"), "More Queries", HistoryDevicePageType, id: data.Id));
                stb.Append("&nbsp;");
                stb.Append(FormButton(DoneButtonId, "Done", string.Empty, DeviceUtiltyPageName));
                stb.Append("</td></tr>");
                stb.Append("</table>");

                return(stb.ToString());
            }

            return(string.Empty);
        }