private void LoadView(int?id, string localDate) { ViewID = id ?? userContext.Views.GetFirstViewID() ?? 0; if (viewLoader.GetView(ViewID, out tableView, out string errMsg)) { TableOptions tableOptions = GetTableOptions(); ArchiveBit = webContext.ConfigDatabase.FindArchiveBit( tableOptions.ArchiveCode, Data.Const.ArchiveBit.Hourly); ChartArgs = new HtmlString(tableOptions.ChartArgs); DateTime selectedDate = DateTime.TryParse(localDate, out DateTime dateTime) ? dateTime.Date : userContext.ConvertTimeFromUtc(DateTime.UtcNow).Date; LocalDate = selectedDate.ToString(WebUtils.InputDateFormat); InitColumnMetas(selectedDate, tableOptions.Period); } else { ErrorMessage = errMsg; } ViewData["Title"] = tableView == null ? string.Format(PluginPhrases.TableViewTitle, ViewID) : tableView.Title; }
public void OnGet(IdList cnlNums, DateTime startDate, string archive, int?gap) { // get request parameters and plugin options int cnlNum = cnlNums != null && cnlNums.Count > 0 ? cnlNums[0] : 0; DateTime utcStartDate = ChartUtils.GetUtcStartDate(startDate, userContext.TimeZone); PluginOptions pluginOptions = new(webContext.AppConfig.GetOptions("Chart")); if (!string.IsNullOrEmpty(archive)) { pluginOptions.ChartArchiveCode = archive; } if (gap.HasValue) { pluginOptions.GapBetweenPoints = gap.Value; } // prepare chart data ChartDataBuilder chartDataBuilder = new(webContext.ConfigDatabase, clientAccessor.ScadaClient, new ChartDataBuilderOptions { CnlNums = new int[] { cnlNum }, TimeRange = ChartUtils.GetTimeRange(utcStartDate, 1, true), ArchiveBit = webContext.ConfigDatabase.FindArchiveBit( pluginOptions.ChartArchiveCode, ArchiveBit.Minute), TimeZone = userContext.TimeZone }); chartDataBuilder.FillCnls(); chartDataBuilder.FillData(); // get chart title and status dynamic dict = Locale.GetDictionary("Scada.Web.Plugins.PlgChart.Areas.Chart.Pages.Chart"); ViewData["Title"] = string.Format(dict.Title, cnlNum); string chartTitle = string.Format("[{0}] {1}, {2}", cnlNum, webContext.ConfigDatabase.CnlTable.GetItem(cnlNum)?.Name, userContext.ConvertTimeFromUtc(utcStartDate).ToLocalizedDateString()); string chartStatus = dict.Generated + userContext.ConvertTimeFromUtc(DateTime.UtcNow).ToLocalizedString(); // build client script StringBuilder sbChartData = new(); chartDataBuilder.ToJs(sbChartData); sbChartData .AppendFormat("var chartTitle = '{0}';", chartTitle.JsEncode()).AppendLine() .AppendFormat("var chartStatus = '{0}';", chartStatus.JsEncode()).AppendLine() .AppendFormat("var locale = '{0}';", Locale.Culture.Name).AppendLine() .AppendFormat("var gapBetweenPoints = {0};", pluginOptions.GapBetweenPoints * 1000).AppendLine() .AppendLine(); ChartDataHtml = new HtmlString(sbChartData.ToString()); }