Esempio n. 1
0
        private String GenerateGroupingConditionKey(GroupingDefinition groupXGroupingDefinition,
                                                    GroupingDefinition groupYGroupingDefinition)
        {
            string xKey = GenerateGroupingConditionKey(groupXGroupingDefinition);
            string yKey = GenerateGroupingConditionKey(groupYGroupingDefinition);

            return(string.Format(DefinitionKeyTemplate, xKey, yKey));
        }
 protected override void Context()
 {
     base.Context();
     _groupingDefinition = A.Fake <GroupingDefinition>();
     _populationAnalysisGroupingField = A.Fake <PopulationAnalysisGroupingField>();
     A.CallTo(() => _groupingFieldPresenter.CreateGrouping(_field, _populationDataCollector)).Returns(_groupingDefinition);
     A.CallTo(() => _populationAnalysisFieldFactory.CreateGroupingField(_groupingDefinition, _field)).Returns(_populationAnalysisGroupingField);
     A.CallTo(() => _groupingFieldPresenter.FieldName).Returns("SUPER NAME");
 }
Esempio n. 3
0
        public void LoopGroupDefinitionX(Dictionary <string, Combine2DDimensionGroupingDefinition> dictionary,
                                         GroupingDefinition groupXGroupingDefinition,
                                         GroupingDefinition groupYGroupingDefinition)
        {
            if (groupXGroupingDefinition != null)
            {
                LoopGroupDefinitionX(dictionary, groupXGroupingDefinition.InnerDefinition, groupYGroupingDefinition);
            }

            LoopGroupDefinitionY(dictionary, groupXGroupingDefinition, groupYGroupingDefinition);
        }
Esempio n. 4
0
        public GroupInfo AddData(GroupingDefinition definition, List <CalculateDefinition> listCalculateDefinition, List <TransactionInfo> transactionInfo)
        {
            var root = new GroupInfo()
            {
                Key                     = string.Empty,
                ListData                = transactionInfo,
                InnerGroupData          = new Dictionary <string, GroupInfo>(),
                ListCalculateDefinition = listCalculateDefinition,
            };

            root.RefreshCalculateValue();
            AddDataGroup(root, definition);

            return(root);
        }
Esempio n. 5
0
        protected override void Context()
        {
            _view = A.Fake <IEditPopulationAnalysisGroupingFieldView>();
            _groupingDefinition               = A.Fake <GroupingDefinition>();
            _presenterMapper                  = A.Fake <IGroupingDefinitionToGroupingDefinitionPresenterMapper>();
            _groupingField                    = A.Fake <PopulationAnalysisGroupingField>();
            _populationDataCollector          = A.Fake <IPopulationDataCollector>();
            _groupingDefinitionPresenter      = A.Fake <IGroupingDefinitionPresenter>();
            _groupingField.PopulationAnalysis = A.Fake <PopulationAnalysis>();
            _referenceField                   = A.Fake <IPopulationAnalysisField>();
            sut = new EditPopulationAnalysisGroupingFieldPresenter(_view, _presenterMapper);

            A.CallTo(() => _groupingField.ReferencedFieldName).Returns("ParameterField");
            A.CallTo(() => _groupingField.GroupingDefinition).Returns(_groupingDefinition);
            A.CallTo(() => _presenterMapper.MapFrom(_groupingDefinition)).Returns(_groupingDefinitionPresenter);
            A.CallTo(() => _groupingField.PopulationAnalysis.FieldByName(_groupingField.ReferencedFieldName)).Returns(_referenceField);
        }
Esempio n. 6
0
        public void Edit(GroupingDefinition groupingDefinition)
        {
            _groupingDefinition = groupingDefinition.DowncastTo <ValueMappingGroupingDefinition>();
            uint sequence = 1;

            foreach (var value in _groupingDefinition.Mapping.Keys)
            {
                var dto = _mapping.FirstOrDefault(x => string.Equals(x.Value, value));
                if (dto == null)
                {
                    continue;
                }
                dto.UpdateFrom(_groupingDefinition.Mapping[value]);
                dto.Sequence = sequence++;
            }
            bindToView();
        }
Esempio n. 7
0
        private String GenerateGroupingConditionKey(GroupingDefinition groupingDefinition)
        {
            StringBuilder builder = new StringBuilder();

            if (groupingDefinition == null)
            {
                return(string.Empty);
            }
            else if (groupingDefinition.UpperDefinition != null)
            {
                string upperKey = GenerateGroupingConditionKey(groupingDefinition.UpperDefinition);
                builder.Append(upperKey);
                builder.Append(",");
            }
            builder.Append(groupingDefinition.KeyName);

            return(builder.ToString());
        }
Esempio n. 8
0
        public void Edit(GroupingDefinition groupingDefinition)
        {
            _groupingDefinition = groupingDefinition.DowncastTo <NumberOfBinsGroupingDefinition>();
            _binSizeGroupingDTO.NumberOfBins  = _groupingDefinition.NumberOfBins;
            _binSizeGroupingDTO.StartColor    = _groupingDefinition.StartColor;
            _binSizeGroupingDTO.EndColor      = _groupingDefinition.EndColor;
            _binSizeGroupingDTO.NamingPattern = _groupingDefinition.NamingPattern;
            _binSizeGroupingDTO.Strategy      = _groupingDefinition.Strategy;

            foreach (var groupingItem in _groupingDefinition.Items)
            {
                var label = new GroupingItemDTO();
                label.UpdateFrom(groupingItem);
                _binSizeGroupingDTO.Labels.Add(label);
            }
            _binSizeGroupingDTO.Symbol = _binSizeGroupingDTO.Labels.First().Symbol;
            bindToView();
        }
        public void SetGrouping()
        {
            // Duration Grouping
            GroupingDefinition durationGrouping = new GroupingDefinition();

            durationGrouping.Getter = "duration";
            //durationGrouping.Formatter = delegate(DataViewGroup g)
            //{
            //    return "Duration:  " + g.Value + "  <span style='color:green'>(" + g.Count + " items)</span>";

            //};
            durationGrouping.Aggregators = new List <Aggregator>(
                new Sum("duration"),
                new Sum("cost"));
            durationGrouping.AggregateCollapsed = false;

            // Effort Grouping
            GroupingDefinition effortGrouping = new GroupingDefinition();

            effortGrouping.Getter = "effortDriven";
            //effortGrouping.Formatter = delegate(DataViewGroup g)
            //{
            //    return "Effort-Driven:  " + ((bool)g.Value ? "True" : "False") + "  <span style='color:green'>(" + g.Count + " items)</span>";
            //};
            effortGrouping.Aggregators = new List <Aggregator>(
                new Sum("duration"),
                new Sum("cost"));
            effortGrouping.Collapsed = false;

            // Percent Grouping
            GroupingDefinition percentGrouping = new GroupingDefinition();

            percentGrouping.Getter = "effortDriven";
            //percentGrouping.Formatter = delegate(DataViewGroup g)
            //{
            //    return "% Complete:  " + g.Value + "  <span style='color:green'>(" + g.Count + " items)</span>";
            //};
            percentGrouping.Aggregators = new List <Aggregator>(
                new Avg("percentComplete"));
            percentGrouping.Collapsed = false;

            Projects.SetGrouping(new List <GroupingDefinition>(durationGrouping, effortGrouping, percentGrouping));
        }
Esempio n. 10
0
        private string GetDataGroupKey(GroupingDefinition groupingDefinition, TransactionInfo data)
        {
            if (groupingDefinition == null)
            {
                return(string.Empty);
            }

            StringBuilder builder = new StringBuilder();

            builder.Append(groupingDefinition.GetKeyMethod.GetValue(data, null));
            if (groupingDefinition.UpperDefinition != null)
            {
                builder.Append(",");
                string upperKey = GetDataGroupKey(groupingDefinition.UpperDefinition, data);
                builder.Append(upperKey);
            }

            return(builder.ToString());
        }
Esempio n. 11
0
        public void Edit(GroupingDefinition groupingDefinition)
        {
            _groupingDefinition = groupingDefinition.DowncastTo <FixedLimitsGroupingDefinition>();
            _fixedLimitDTOs.Clear();
            for (int i = 0; i < _groupingDefinition.Limits.Count; i++)
            {
                var dto = newDTO(maximumInDisplayUnit: _numericField.ValueInDisplayUnit(_groupingDefinition.Limits[i]));
                if (i > 0)
                {
                    dto.Minimum = _fixedLimitDTOs[i - 1].Maximum;
                }

                _fixedLimitDTOs.Add(dto);
            }

            updateFirstAndAddLastEntry(_groupingDefinition.Limits.Last());
            _fixedLimitDTOs.Each((dto, i) => dto.UpdateFrom(_groupingDefinition.Items[i]));

            bindToView();
        }
Esempio n. 12
0
        private void LoopGroupDefinitionY(Dictionary <string, Combine2DDimensionGroupingDefinition> dictionary,
                                          GroupingDefinition groupXGroupingDefinition,
                                          GroupingDefinition groupYGroupingDefinition)
        {
            Combine2DDimensionGroupingDefinition root = new Combine2DDimensionGroupingDefinition()
            {
                ListCalculateDefinition = this.CalculateDefinitions,
                XDefinition             = groupXGroupingDefinition,
                YDefinition             = groupYGroupingDefinition,
                Key = GenerateGroupingConditionKey(groupXGroupingDefinition, groupYGroupingDefinition),
            };

            _logger.DebugFormat("LoopGroupY: {0}", root.Key);

            if (groupYGroupingDefinition != null)
            {
                LoopGroupDefinitionY(dictionary, groupXGroupingDefinition, groupYGroupingDefinition.InnerDefinition);
            }


            dictionary.Add(root.Key, root);
        }
Esempio n. 13
0
        private void AddDataGroup(GroupInfo root, GroupingDefinition definition)
        {
            foreach (var info in root.ListData)
            {
                string rootKey  = root.Key;
                string groupKey = GetItemKey(definition.GetKeyMethod, info);
                string key      = GetKey(rootKey, groupKey);

                GroupInfo groupInfo = null;
                if (!root.InnerGroupData.TryGetValue(key, out groupInfo))
                {
                    groupInfo = new GroupInfo()
                    {
                        RootKey                 = rootKey,
                        GroupKey                = groupKey,
                        Key                     = key,
                        GroupingDefinition      = definition,
                        ListData                = new List <TransactionInfo>(),
                        InnerGroupData          = new Dictionary <string, GroupInfo>(),
                        ListCalculateDefinition = root.ListCalculateDefinition
                    };
                    root.InnerGroupData.Add(key, groupInfo);
                }

                groupInfo.ListData.Add(info);
            }

            foreach (var groupInfoInner in root.InnerGroupData.Values)
            {
                if (definition.InnerDefinition != null)
                {
                    AddDataGroup(groupInfoInner, definition.InnerDefinition);
                }
                groupInfoInner.RefreshCalculateValue();
            }
        }
Esempio n. 14
0
 public static GroupingDefinitionItem For(GroupingDefinition groupingDefinition)
 {
     return(_allGroupings.Keys.First(x => x.GroupingDefinitionType == groupingDefinition.GetType()));
 }
Esempio n. 15
0
        static void Main(string[] args)
        {
            ExcelRead reader = new ExcelRead();

            reader.InitializeWorkbook("20130417 Tong Doanh Thu 2013-Phan Tich.xls");

            var listProductInfo = reader.ReadProductData();
            var listData        = reader.ReadTransactionData(listProductInfo);

            var listFilterRequest = new List <FilteringItem>(new FilteringItem[]
            {
                new FilteringItem()
                {
                    FilterName  = "Year",
                    FilterValue = 2012,
                },
                new FilteringItem()
                {
                    FilterName  = "Month",
                    FilterValue = 1,
                },
                new FilteringItem()
                {
                    FilterName  = "CustomerName",
                    FilterValue = "Bác sĩ Nguyễn Văn Cót",
                }
            });

            var calculateDefinitions = new List <CalculateDefinition>(new CalculateDefinition[]
            {
                new CalculateDefinition()
                {
                    CalculateName = "Quantity",
                    Type          = CalculateType.Sum,
                },
                new CalculateDefinition()
                {
                    CalculateName = "ContractPrice",
                    Type          = CalculateType.Average,
                },
                new CalculateDefinition()
                {
                    CalculateName = "SellPrice",
                    Type          = CalculateType.Sum,
                },
            });

            var groupXDefinitionCustomerName = new GroupingDefinition()
            {
                KeyName = "CustomerName"
            };

            var groupXDefinitionProductCategory = new GroupingDefinition()
            {
                KeyName = "ProductCategory"
            };

            var groupXDefinitionProductName = new GroupingDefinition()
            {
                KeyName = "ProductName"
            };

            groupXDefinitionCustomerName.UpperDefinition = null;
            groupXDefinitionCustomerName.InnerDefinition = groupXDefinitionProductCategory;

            groupXDefinitionProductCategory.UpperDefinition = groupXDefinitionCustomerName;
            groupXDefinitionProductCategory.InnerDefinition = groupXDefinitionProductName;

            groupXDefinitionProductName.UpperDefinition = groupXDefinitionProductCategory;
            groupXDefinitionProductName.InnerDefinition = null;

            var groupYDefinitionYear = new GroupingDefinition()
            {
                KeyName = "Year",
            };

            var groupYDefinitionMonth = new GroupingDefinition()
            {
                KeyName = "Month",
            };

            groupYDefinitionYear.UpperDefinition = null;
            groupYDefinitionYear.InnerDefinition = groupYDefinitionMonth;

            groupYDefinitionMonth.UpperDefinition = groupYDefinitionYear;
            groupYDefinitionMonth.InnerDefinition = null;


            Console.WriteLine(listProductInfo.Count);
            Console.WriteLine(listData.Count);

            //DataFilteringController filterControl = new DataFilteringController()
            //    {
            //        FilterProps = listFilterRequest
            //    };
            //var filterData = filterControl.GetFilterData(listData);

            GroupingController controller = new GroupingController();
            var result = controller.AddData(groupYDefinitionYear, calculateDefinitions, listData);

            var pivotTable = new PivotTableController()
            {
                GroupingX = groupXDefinitionCustomerName,
                GroupingY = groupYDefinitionYear,
                Data      = listData,
                //Data = filterData,
                CalculateDefinitions = calculateDefinitions,
                DataFiltering        = new DataFilteringController()
                {
                    FilterProps = listFilterRequest
                }
            };

            pivotTable.AnalyzeData();
            Console.ReadKey();
        }
 public IGroupingDefinitionPresenter MapFrom(GroupingDefinition groupingDefinition)
 {
     return(MapFrom(GroupingDefinitions.For(groupingDefinition)));
 }