Exemple #1
0
        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;
        }
Exemple #2
0
        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());
        }