Beispiel #1
0
        public async Task <Report[]> GenerateFilteredReportResultAsync(WidgetDataSourceContext context)
        {
            try
            {
                var result = await OnGenerateFilteredReportResultAsync(context);

                if (this.Mapping != null)
                {
                    result?.MapNames(this.Mapping);
                }


                if (!string.IsNullOrWhiteSpace(this.ExcludePrefix))
                {
                    foreach (var col in result.ColumnsDefinitions ?? Enumerable.Empty <ReportColumnTemplate>())
                    {
                        col.Title = col.Title.Replace(this.ExcludePrefix, "");
                    }
                }

                return(new Report[] { result });
            }
            catch (Exception e)
            {
                Logger.Instance.Error(this, nameof(GenerateFilteredReportResultAsync), e);
                return(new Report[] { });
            }
        }
Beispiel #2
0
        protected override async Task <Report> OnGenerateFilteredReportResultAsync(WidgetDataSourceContext context)
        {
            if (this.ReportModelId.HasValue == false)
            {
                throw new OrionsException($"No {nameof(ReportModelId)} assigned");
            }

            var reportModelConfig = await context.HyperStore.RetrieveAsync <ReportModelConfig>(this.ReportModelId.Value);

            if (context.GroupFilterData?.StartTime.HasValue == true || context.GroupFilterData?.EndTime.HasValue == true)
            {
                reportModelConfig.TrySetTimeRange(context.GroupFilterData?.StartTime, context.GroupFilterData?.EndTime);
            }

            if (context.GroupFilterData?.Period != null)
            {
                reportModelConfig.TrySetPeriod(context.GroupFilterData.Period);
            }

            if (context.GroupFilterData?.FilterLabels?.Length > 0)
            {
                reportModelConfig.TrySetLabels(context.GroupFilterData?.FilterLabels, context.GroupFilterData.FilterTarget);
            }

            if (MetadataSetId.HasValue)
            {
                var metadataSetStage = reportModelConfig.DataSource as MetadataSetReportDataSourceStageConfig;
                if (metadataSetStage != null)
                {
                    metadataSetStage.MetadataSetId = MetadataSetId;
                }
                else
                {
                    Logger.Instance?.Warning(this, nameof(OnGenerateFilteredReportResultAsync), "Failed to apply MetadataSetId, since source stage is not a metadataset stage");
                }
            }

            var helper = new ReportModelHelper();

            if (this.JobMode)
            {
                return(await helper.ExecuteJobModeAsync(context.HyperStore, reportModelConfig, null, context.CancellationToken, "", this.JobMode_CacheRead, this.JobMode_CacheWrite));
            }
            else
            {
                return(await helper.ExecuteLocalModeAsync(context.HyperStore, reportModelConfig, null, "", context.Logger, context.CancellationToken));
            }
        }
        protected override async Task <Report> OnGenerateFilteredReportResultAsync(WidgetDataSourceContext context)
        {
            var args = new RetrieveHyperDocumentArgs(this.ReportResultId);
            var doc  = await context.HyperStore.ExecuteAsync(args);

            if (args.ExecutionResult.IsNotSuccess)
            {
                return(null);
            }

            var result = doc?.GetPayload <Report>();

            //if (result != null)
            //{
            //	if (context.DynamicFilter != null)
            //		result.FilterWith(context.DynamicFilter);
            //}

            return(result);
        }
Beispiel #4
0
        protected override Task <Report> OnGenerateFilteredReportResultAsync(WidgetDataSourceContext context)
        {
            var byteArray = this.CSVData;

            if (byteArray == null)
            {
                return(Task.FromResult <Report>(null));
            }

            var reportData = new Report();

            var rowDefList = new List <ReportRowTemplate>();
            var colDefList = new List <ReportColumnTemplate>();
            var dataMap    = new Dictionary <int, List <string> >();

            using (var stream = new MemoryStream(byteArray))
            {
                var reader = new StreamReader(stream);

                var lineCount = 0;
                while (!reader.EndOfStream)
                {
                    string line = reader.ReadLine();
                    //System.Diagnostics.Debug.WriteLine(line);

                    if (!String.IsNullOrWhiteSpace(line))
                    {
                        string[] values = line.Split(',');

                        if (values.Any() && lineCount == 0)
                        {
                            // columns header.
                            for (var i = 0; i < values.Length; i++)
                            {
                                if (i == 0)
                                {
                                    continue;
                                }

                                var colDef = new ComputationReportColumnTemplate()
                                {
                                    Title = values[i]
                                };
                                colDefList.Add(colDef);
                            }

                            reportData.ColumnsDefinitions = colDefList.ToArray();
                        }
                        else
                        {
                            var dataList = new List <string>();
                            for (var i = 0; i < values.Length; i++)
                            {
                                if (i == 0)
                                {
                                    var rowDef = new ComputationReportRowTemplate()
                                    {
                                        Title = values[i]
                                    };
                                    rowDefList.Add(rowDef);
                                    continue;
                                }
                                ;

                                dataList.Add(values[i]);
                            }

                            dataMap.Add(lineCount, dataList);
                        }
                    }

                    lineCount++;
                }
            }

            reportData.ColumnsDefinitions = colDefList.ToArray();
            reportData.RowsDefinitions    = rowDefList.ToArray();

            var item1 = dataMap.Values;

            foreach (KeyValuePair <int, List <string> > item in dataMap)
            {
                var rowIndex   = item.Key;
                var columnData = item.Value;

                var cells = new List <ReportRowCell>();

                var rowTemplate = reportData.RowsDefinitions[rowIndex - 1];

                var dataCells = columnData.Select(it => new ReportRowCell()
                {
                    Values = new[] { it }
                }).ToArray();
                reportData.AddRow(new ReportRow()
                {
                    Cells = dataCells, Template = rowTemplate
                });
            }

            return(Task.FromResult <Report>(reportData));
        }
Beispiel #5
0
 protected abstract Task <Report> OnGenerateFilteredReportResultAsync(WidgetDataSourceContext context);
        public async Task RefreshReportResultData()
        {
            var widget     = this.Widget as ReportBaseWidget;
            var dataSource = widget?.DataSource;

            ReportChartData = null;

            OnReportResultChanged?.Invoke();
            RaiseNotify(nameof(ReportChartData));             // Refresh UI.

            if (dataSource == null)
            {
                return;
            }

            IsLoadedReportResult = false;

            //OnReportResultChanged?.Invoke();
            //RaiseNotify(nameof(ReportChartData)); // Refresh UI - loader.

            try
            {
                var context = new WidgetDataSourceContext();
                context.HyperStore = this.HyperStore;

                // Only if we are allowed as a active filtering target, do we set the filters.
                if (widget is ActiveFilterReportChartWidget activeReportWidget && activeReportWidget.AllowFiltrationTarget)
                {
                    context.GroupFilterData = this.DashboardVm?.ObtainFilterGroup(widget.FilterGroup);
                }

                var reportResult = await dataSource.GenerateFilteredReportResultAsync(context);

                if (reportResult == null)
                {
                    Logger.Instance.Error("Failed to load report result");
                    return;
                }

                Report = reportResult.FirstOrDefault();

                if (Report == null || Report.ColumnsDefinitions.Length == 0)
                {
                    return;
                }

                var includeCategoryFilter = widget.DataSource.IncludeCategories?.Split(',', StringSplitOptions.RemoveEmptyEntries).Select(it => it.Trim()).ToArray();
                var excludeCategoryFilter = widget.DataSource.ExcludeCategories?.Split(',', StringSplitOptions.RemoveEmptyEntries).Select(it => it.Trim()).ToArray();

                ReportChartData = LoadReportChartData(Report, includeCategoryFilter, excludeCategoryFilter, widget.DataSource.Uppercase);

                if (ReportChartData != null)
                {
                    ReportChartData.MapIcons(dataSource.IconMapping);
                    await LoadAllIcons(ReportChartData);
                }
            }
            finally
            {
                IsLoadedReportResult = true;

                OnReportResultChanged?.Invoke();
                RaiseNotify(nameof(ReportChartData));                 // Refresh UI.
            }
        }