private static List <string> GetContextMenuOptions(ICrmDataSource dataSource)
        {
            var contextMenuOptions = new List <string>();
            var configStore        = ConfigurationUnitStore.DefaultStore;

            for (var j = 0; j < dataSource.NumberOfResultTables; j++)
            {
                var infoAreaId    = dataSource.ResultTableAtIndex(j).InfoAreaId;
                var infoAreaLabel = string.Empty;
                if (infoAreaId?.Length > 0)
                {
                    var configInfoArea = configStore.InfoAreaConfigById(infoAreaId);
                    var expand         = configStore.ExpandByName(infoAreaId);
                    var fieldControl   = configStore.FieldControlByNameFromGroup("Details", expand.FieldGroupName);
                    if (configInfoArea != null && expand != null && fieldControl != null)
                    {
                        infoAreaLabel = LocalizedString.TextAnalysesShowParam.Replace("%@", configInfoArea.SingularName);
                    }
                }

                contextMenuOptions.Add(infoAreaLabel);
            }

            return(contextMenuOptions);
        }
示例#2
0
        private void ContinueWithQueryResult(ICrmDataSource dataSource)
        {
            AnalysisProcessing processing  = new AnalysisProcessing(this, this.currentSettings, dataSource);
            AnalysisResult     result      = processing.ComputeResult();
            IAnalysisDelegate  theDelegate = this.TheDelegate;

            this.TheDelegate = null;
            if (result.Error != null)
            {
                theDelegate.AnalysisDidFailWithError(this, result.Error);
            }
            else
            {
                theDelegate.AnalysisDidFinishWithResult(this, result);
            }
        }
        private List <object> CreateColumnInfoArray(ICrmDataSource dataSource)
        {
            var columnInfoArray = new List <object>();

            foreach (AnalysisSourceField col in this.AnalysisResult.DetailsFields)
            {
                if (col.QueryResultFieldIndex < 0)
                {
                    continue;
                }

                ICrmDataSourceField field = dataSource.FieldAtIndex(col.QueryResultFieldIndex);
                if (field == null)
                {
                    continue;
                }

                columnInfoArray.Add(new AnalysisDrillThruColumn(col, field));
            }

            return(columnInfoArray);
        }
示例#4
0
        /// <summary>
        /// Cache item execution context result
        /// </summary>
        /// <param name="executionContext">Execution context</param>
        /// <param name="result">Result</param>
        public void AddCacheItemWithExecutionContextResult(AnalysisExecutionContext executionContext, ICrmDataSource result)
        {
            AnalysisDataSourceCacheItem cacheItem = new AnalysisDataSourceCacheItem(result, executionContext);

            this.AddCacheItem(cacheItem);
        }
示例#5
0
 /// <summary>
 /// Initializes a new instance of the <see cref="AnalysisProcessing"/> class.
 /// </summary>
 /// <param name="analysis">Analysis</param>
 /// <param name="settings">Settings</param>
 /// <param name="dataSource">Data source</param>
 public AnalysisProcessing(Analysis analysis, AnalysisExecutionSettings settings, ICrmDataSource dataSource)
 {
     this.Analysis   = analysis;
     this.Settings   = settings;
     this.DataSource = dataSource;
     if (this.Settings.ResultColumns.Count > 0)
     {
         this.resultColumns = new List <object>();
         foreach (AnalysisResultColumn col in this.Settings.ResultColumns)
         {
             this.resultColumns.Add(new AnalysisProcessingResultColumn(col, this));
         }
     }
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="AnalysisResult"/> class.
 /// </summary>
 /// <param name="analysis">Analysis</param>
 /// <param name="dataSource">Data source</param>
 public AnalysisResult(Analysis analysis, ICrmDataSource dataSource)
 {
     this.Analysis   = analysis;
     this.Settings   = this.Analysis.CurrentSettings;
     this.DataSource = dataSource;
 }
示例#7
0
 /// <summary>
 /// Initializes a new instance of the <see cref="AnalysisDataSourceCacheItem"/> class.
 /// </summary>
 /// <param name="dataSource">Data source</param>
 /// <param name="executionContext">Execution context</param>
 public AnalysisDataSourceCacheItem(ICrmDataSource dataSource, AnalysisExecutionContext executionContext)
 {
     this.DataSource       = dataSource;
     this.ExecutionContext = executionContext;
 }
示例#8
0
        /// <inheritdoc />
        public void ExecutionContextDidFinishWithResult(AnalysisExecutionContext executionContext, ICrmDataSource result)
        {
            if (this.dataSourceCache == null)
            {
                this.dataSourceCache = new AnalysisDataSourceCache();
            }

            this.dataSourceCache.AddCacheItemWithExecutionContextResult(this.currentContext, result);
            this.ContinueWithQueryResult(result);
        }