Exemplo n.º 1
0
/// <summary>
/// Set role and default grouping/summary type based on the metacolumn type
/// </summary>
/// <param name="role"></param>
/// <param name="mct"></param>

        public void SetDefaultTypeIfUndefined(
            MetaColumn mc,
            bool setIfAlreadyDefined = false)
        {
            MetaColumnType mct = mc.DataType;

            if (IsGroupingType)
            {
                if (mct == MetaColumnType.Date && GroupingType == GroupingTypeEnum.EqualValues)
                {
                    GroupingType = GroupingTypeEnum.Date;                     // fixup for date types
                }
                if (GroupingType == GroupingTypeEnum.Undefined || setIfAlreadyDefined)
                {
                    if (mct == MetaColumnType.Date)
                    {
                        GroupingType = GroupingTypeEnum.Date;
                    }

                    else
                    {
                        GroupingType = GroupingTypeEnum.EqualValues;
                    }
                }
            }

            else if (Role == AggregationRole.DataSummary)
            {
                if (SummaryType == SummaryTypeEnum.Undefined || setIfAlreadyDefined)
                {
                    if (MetaColumn.IsNumericMetaColumnType(mct))
                    {
                        if (mc.SinglePoint && mc.MultiPoint)
                        {
                            SummaryType = SummaryTypeEnum.ResultMean;
                        }

                        else if (mc.MultiPoint)
                        {
                            SummaryType = SummaryTypeEnum.GeometricMean;
                        }

                        else
                        {
                            SummaryType = SummaryTypeEnum.ArithmeticMean;
                        }
                    }

                    else
                    {
                        SummaryType = SummaryTypeEnum.Count;
                    }
                }
            }

            return;
        }
Exemplo n.º 2
0
        public void SetFromDetail(AggregationTypeDetail atd)
        {
            if ((Role == AggregationRole.ColumnGrouping && atd.Role == AggregationRole.RowGrouping) ||
                (Role == AggregationRole.RowGrouping && atd.Role == AggregationRole.ColumnGrouping))
            {
                Role = Role;                 // don't change role if both are grouping roles
            }
            else
            {
                Role = atd.Role;
            }

            SummaryType  = atd.SummaryTypeId;
            GroupingType = atd.GroupingType;

            return;
        }
Exemplo n.º 3
0
/// <summary>
/// Key Mobius classes related to and/or extending the DX classes
/// </summary>

        void PivotGridControlMx()
        {
            PivotGridControlMx pgcMx = new PivotGridControlMx();             // Mx method extensions of the DX PivotGridControl


            PivotGridFieldMx pgfMx = pgcMx.Fields[0] as PivotGridFieldMx; // Mx extensions of the DX PivotGridField
            {
                AggregationDef ad = pgfMx.Aggregation;                    // Grouping and summarization for Mx field
                {
                    AggregationRole  ar  = ad.Role;                       // Role of field in agg/pivot (similar to DX Area)
                    SummaryTypeEnum  st  = ad.SummaryType;                // Type of Mx summary
                    GroupingTypeEnum gt  = ad.GroupingType;               // Type of Mx grouping
                    Decimal          nis = ad.NumericIntervalSize;        // interval size for numeric grouping
                }

                ResultsField rfld = pgfMx.ResultsField as ResultsField;                 // Mobius ResultsField, QueryColumn and MetaColumn associated with field
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// Add an item to the type dictionary
        /// </summary>
        /// <param name="summaryType"></param>
        /// <param name="name"></param>
        /// <param name="label"></param>
        /// <param name="format"></param>
        /// <param name="image"></param>
        /// <param name="supportsSubTypes"></param>
        /// <returns></returns>

        public static AggregationTypeDetail AddSummaryTypeItem(
            SummaryTypeEnum summaryType,
            string label,
            SummarizationMethodDelegate summaryDelegate = null,
            string format          = "",
            bool fractionalResult  = false,
            Bitmaps16x16Enum image = Bitmaps16x16Enum.None)
        {
            AggregationTypeDetail item = new AggregationTypeDetail();

            item.Role                    = AggregationRole.DataSummary;
            item.SummaryTypeId           = summaryType;
            item.TypeName                = summaryType.ToString();
            item.FractionalSummaryResult = fractionalResult;
            item.SummarizationMethod     = summaryDelegate;

            AddAggTypeDetailItem(item, label, format, image);

            return(item);
        }
Exemplo n.º 5
0
        /// <summary>
        /// Construct with an initial summary type selected
        /// </summary>
        /// <param name="summaryTypeId"></param>

        public AggregationDef(SummaryTypeEnum summaryTypeId)
        {
            Role        = AggregationRole.DataSummary;
            SummaryType = summaryTypeId;
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="outputData"></param>
        /// <param name="ReportDate"></param>
        /// <param name="counter"></param>
        /// <param name="summaryOutputs"></param>
        /// <param name="outWriter"></param>
        /// <param name="summaryType"></param>
        public void WriteSummaryData(List <double> outputData, DateTime ReportDate, ref int counter, ref List <double> summaryOutputs, StreamWriter outWriter, SummaryTypeEnum summaryType)
        {
            if (ReportDate > Sim.EndDate)
            {
                ReportDate = Sim.EndDate;
            }

            if (summaryOutputs == null)
            {
                summaryOutputs = new List <double>(outputData.Count).Fill(0);
                counter        = 0;
            }

            //Increment the incrop day counter
            if (Sim.VegetationController.CurrentCrop.DaysSincePlanting != 0)
            {
                counter++;
            }

            //Add todays data
            for (int i = 0; i < summaryOutputs.Count; i++)
            {
                if ((AggregationSequences[i] == AggregationSequenceEnum.InCrop && Sim.VegetationController.CurrentCrop.DaysSincePlanting > 0) ||
                    AggregationSequences[i] == AggregationSequenceEnum.Always)
                {
                    if (AggregationTypes[i] == AggregationTypeEnum.Max && outputData[i] > summaryOutputs[i])
                    {
                        summaryOutputs[i] = outputData[i];
                    }
                    else if (AggregationTypes[i] == AggregationTypeEnum.Current)
                    {
                        summaryOutputs[i] = outputData[i];
                    }
                    else
                    {
                        summaryOutputs[i] += outputData[i];
                    }
                }
            }

            if (Sim.Today == ReportDate)
            {
                //Do any averaging on reporting day
                for (int i = 0; i < summaryOutputs.Count; i++)
                {
                    if (AggregationTypes[i] == AggregationTypeEnum.Mean)
                    {
                        if (AggregationSequences[i] == AggregationSequenceEnum.InCrop)
                        {
                            if (counter == 0)
                            {
                                summaryOutputs[i] = 0;
                            }
                            else
                            {
                                summaryOutputs[i] /= counter;
                            }
                        }
                        if (AggregationSequences[i] == AggregationSequenceEnum.Always)
                        {
                            if (summaryType == SummaryTypeEnum.Monthly)
                            {
                                summaryOutputs[i] /= Sim.Today.Day;
                            }
                            if (summaryType == SummaryTypeEnum.Yearly)
                            {
                                summaryOutputs[i] /= Sim.Today.DayOfYear;
                            }
                        }
                    }
                }

                //Write file
                if (summaryType == SummaryTypeEnum.Monthly)
                {
                    outWriter.WriteLine(Sim.Today.Year + "," + Sim.Today.Month.ToString("00") + "," + String.Join(",", summaryOutputs.ToArray()));
                }
                if (summaryType == SummaryTypeEnum.Yearly)
                {
                    outWriter.WriteLine(Sim.Today.Year + "," + String.Join(",", summaryOutputs.ToArray()));
                }

                //Reset variables
                summaryOutputs = new List <double>(outputData.Count).Fill(0);
                counter        = 0;
            }
        }