Exemple #1
0
        public ViewModel()
        {
            var years           = Enumerable.Range(2019, 70).Select(v => v.ToString()).ToArray();
            var units           = new[] { "dollar", "kroner", "euro", "yen" };
            var reportLevel1    = new[] { "Norway", "Sweden", "Denmark", "Germany", "Finland", "India" };
            var reportLevel2    = new[] { "City 1", "City 2", "City 3", "City 4", "City 5" };
            var metadataFactory = new DimensionMetadataFactory();
            var values          = Enumerable.Range(1, 100).Select(v => RandomString(4)).ToArray();
            var numProperties   = 100;
            var numValues       = 750000;

            List <object> data   = new List <object>();
            List <string> fields = Enumerable.Range(1, numProperties).Select(v => $"Item{v}").Concat(new [] { "Value", "ReportLevel1", "ReportLevel2", "Unit", "Year" }).ToList();

            var myType = _typeBuilder.GenerateType(fields.Select(f => new DynamicTypePropertyInfo {
                PropertyName = f, PropertyType = f.Equals("Value") ? typeof(double) : typeof(object)
            }).ToList());

            for (int i = 0; i < numValues; i++)
            {
                var obj = Activator.CreateInstance(myType);
                myType.GetProperty("Unit").SetValue(obj, GetRandomFrom(units));
                myType.GetProperty("Year").SetValue(obj, GetRandomFrom(years));
                myType.GetProperty("ReportLevel1").SetValue(obj, GetRandomFrom(reportLevel1));
                myType.GetProperty("ReportLevel2").SetValue(obj, GetRandomFrom(reportLevel2));
                myType.GetProperty("Value").SetValue(obj, 1.0);
                data.Add(obj);
            }

            foreach (var prop in myType.GetProperties().Take(numProperties))
            {
                for (int i = 0; i < numValues; i++)
                {
                    prop.SetValue(data[i], GetRandomFrom(values), null);
                }
            }

            var cubeMetadata = new CubeMetadata {
                DataTypeFullName = _typeBuilder.DynamicTypeName, DisplayName = "Pivot"
            };

            fields.ForEach(field => cubeMetadata.DimensionSettings.Add(metadataFactory.Create(field, field, field, field.Equals("Value"))));

            FlatDataSource = new FlatDataSource
            {
                ItemsSource              = data,
                CubesSettings            = { cubeMetadata },
                DimensionsGenerationMode = DimensionsGenerationMode.Metadata,
                PreserveMembersOrder     = false
            };
        }
        private void SettingDatas <T>(IEnumerable <T> datas)
        {
            // Gridへのデータソースを設定
            xamDataGrid.DataSource = datas;
            // Pivotに対するデータソースを設定
            FlatDataSource flatData = new FlatDataSource()
            {
                ItemsSource        = datas,
                ConnectionSettings = new FlatDataConnectionSettings()
                {
                    ItemsSource = datas
                }
            };

            xamPivot.DataSource             = flatData;
            xamPivotDataSelector.DataSource = flatData;
        }
        public void ProcessInstruments(CarbonClient cc_)
        {
            if (retrieveBackgroundWorker == null)
            {
                retrieveBackgroundWorker = new System.ComponentModel.BackgroundWorker {WorkerReportsProgress = true};
                retrieveBackgroundWorker.DoWork += (s, a) =>
                {
                    try
                    {
                        a.Result = RetrieveDataForInstruments(cc_);
                    }
                    catch (Exception e)
                    {
                        throw new Exception(e.Message);
                    }
                };

                retrieveBackgroundWorker.RunWorkerCompleted += (s, a) =>
                {
                    if (a.Error != null)
                    {
                        displayMessage("Parsing Error", a.Error.ToString(), MessageBoxIcon.Error);
                        return;
                    }

                    var resultData = a.Result as List<MultiInstrumentData>;

                    if (resultData != null)
                    {
                        itemSource = resultData;
                        var settings = new FlatDataSourceInitialSettings
                        {
                            Rows = RowsToFlatDataSourceSetting(PivotSetting.Rows),
                            Columns = RowsToFlatDataSourceSetting(PivotSetting.Cols),
                            Measures = RowsToFlatDataSourceSetting(PivotSetting.Measures),
                            Filters = RowsToFlatDataSourceSetting(PivotSetting.Filters),
                        };

                        // Create an instance of the FlatDataSource            
                        ds = new FlatDataSource(itemSource, typeof (MultiInstrumentData), settings);

                        View.RefreshViewAndRebinding();
                    }
                };
            }

            if (retrieveBackgroundWorker != null && !retrieveBackgroundWorker.IsBusy)
                retrieveBackgroundWorker.RunWorkerAsync();
        }