Beispiel #1
0
        /// <summary>
        /// ShowAggregationTypeMenu
        /// </summary>
        /// <param name="qc"></param>
        /// <param name="ad"></param>
        /// <param name="p"></param>
        /// <param name="aggTypeChangedDelegate"></param>

        public static void ShowTypeMenu(
            QueryColumn qc,
            AggregationDef ad,
            Point p,
            AggregationTypeChangedDelegate aggTypeChangedDelegate)
        {
            AggregationDefMenus ats = new AggregationDefMenus();
            //if (qc.Aggregation == null) qc.Aggregation = new AggregationDef();

            int qtCount = -1;

            if (qc.QueryTable != null && qc.QueryTable.Query != null)
            {
                qtCount = qc.QueryTable.Query.Tables.Count;
            }

            bool includeGroupingItems = true;
            bool includeSummaryItems  = true;

            if (qc.IsKey && qtCount > 1)             // if key and more than one table in query then no summarization allowed (only allow grouping on key)
            {
                includeSummaryItems = false;
            }

            ContextMenuStrip menu = ats.SetupAggregationTypeMenu(qc, ad, aggTypeChangedDelegate, includeGroupingItems, includeSummaryItems);

            menu.Show(p);

            return;
        }
Beispiel #2
0
        /// <summary>
        /// Build and show the menu for selecting aggregation type
        /// </summary>
        /// <param name="qc"></param>
        /// <param name="p"></param>
        /// <param name="typeDelegate"></param>

        public void ShowMenu(
            QueryColumn qc,
            AggregationDef ad,
            Point p,
            AggregationTypeChangedDelegate typeDelegate)
        {
            ContextMenuStrip menu = SetupAggregationTypeMenu(qc, ad, typeDelegate);

            menu.Show(p);
            return;
        }
Beispiel #3
0
/// <summary>
/// Show the aggregation role menu
/// </summary>
/// <param name="qc"></param>
/// <param name="ad"></param>
/// <param name="p"></param>
/// <param name="aggRoleChangedDelegate"></param>

        public static void ShowRoleMenu(
            QueryColumn qc,
            AggregationDef ad,
            Point p,
            AggregationTypeChangedDelegate aggRoleChangedDelegate)
        {
            AggregationDefMenus ats  = new AggregationDefMenus();
            ContextMenuStrip    menu = ats.SetupAggregationRoleMenu(qc, ad, aggRoleChangedDelegate);

            menu.Show(p);
            return;
        }
Beispiel #4
0
        public ContextMenuStrip SetupAggregationRoleMenu(
            QueryColumn qc,
            AggregationDef ad,
            AggregationTypeChangedDelegate aggRoleChangedDelegate = null)
        {
            Qc = qc;             // save call parms
            if (qc != null)
            {
                Qt = qc.QueryTable;
            }
            AggregationDef             = ad;
            AggregationChangedDelegate = aggRoleChangedDelegate;

            AggregationRole r = ad.Role;

            ColumnAreaMenuItem.Checked    = (ad.Role == AggregationRole.ColumnGrouping);
            RowAreaMenuItem.Checked       = (ad.Role == AggregationRole.RowGrouping);
            DataAreaMenuItem.Checked      = (ad.Role == AggregationRole.DataSummary);
            FilterAreaMenuItem.Checked    = (ad.Role == AggregationRole.Filtering);
            UndefinedAreaMenuItem.Checked = (ad.Role == AggregationRole.Undefined);

            return(AggRoleMenu);
        }
Beispiel #5
0
        /// <summary>
        /// Build aggregation type menu for specific field
        /// </summary>
        /// <param name="qc"></param>
        /// <returns></returns>

        public ContextMenuStrip SetupAggregationTypeMenu(
            QueryColumn qc,
            AggregationDef ad,
            AggregationTypeChangedDelegate typeDelegate = null,
            bool includeGroupingItems = true,
            bool includeSummaryItems  = true)
        {
            Qc                         = qc; // save call parms
            Qt                         = qc.QueryTable;
            AggregationDef             = ad;
            AggregationChangedDelegate = typeDelegate;

            MetaColumn mc = Qc.MetaColumn;

            // Set Visibility for menu items as appropriate for data type and args

            InitMenuItems();

            if (includeGroupingItems)
            {
                GroupByHeaderMenuItem.Available     =
                    AggregationSeparator1.Available = true;
            }

            if (includeSummaryItems)             // summary types allowed for all data types
            {
                SummarizationHeaderMenuItem.Available                                     =
                    AggregationSeparator1.Available                                       =
                        CountMenuItem.Available                                           =
                            CountDistinctMenuItem.Available                               =
                                MinMenuItem.Available                                     =
                                    MaxMenuItem.Available                                 =
                                        MedianMenuItem.Available                          =
                                            ModeMenuItem.Available                        =
                                                ConcatenateMenuItem.Available             =
                                                    ConcatenateDistinctMenuItem.Available =
                                                        AggregationSeparator2.Available   = true;
            }

            if (mc.IsKey)
            {
                if (includeGroupingItems)
                {
                    MatchingValuesMenuItem.Available = true;
                }
            }

            else if (mc.DataType == MetaColumnType.String)
            {
                if (includeGroupingItems)
                {
                    MatchingValuesMenuItem.Available  =
                        FirstLetterMenuItem.Available = true;
                }
            }

            else if (mc.IsNumeric)
            {
                if (includeGroupingItems)
                {
                    MatchingValuesMenuItem.Available      =
                        NumericIntervalMenuItem.Available = true;
                }

                if (includeSummaryItems)
                {
                    SumMenuItem.Available = true;

                    ArithmeticMeanMenuItem.Available    =
                        GeometricMeanMenuItem.Available = true;

                    if (UnpivotedAssayResult.IsSpAndCrcUnpivotedAssayResultColumn(mc))                     // col contains both SP and CRC values
                    {
                        MostPotentMenuItem.Available     =
                            ResultMeanMenuItem.Available = true;

                        ArithmeticMeanMenuItem.Available    =
                            GeometricMeanMenuItem.Available = false;
                    }
                }
            }

            else if (mc.DataType == MetaColumnType.Date)
            {
                if (includeGroupingItems)
                {
                    GroupByDateMenuItem.Available             =
                        QuarterYearMenuItem.Available         =
                            MonthYearMenuItem.Available       =
                                GroupByYearMenuItem.Available = true;
                }
            }

            else if (mc.DataType == MetaColumnType.Structure)             // no grouping, count only for summary for now
            {
                InitMenuItems();

                if (includeGroupingItems)
                {
                    //GroupByHeaderMenuItem.Available =
                    //AggregationSeparator1.Available = true;

                    includeGroupingItems = false;                       // todo, grouping on frag
                }

                if (includeSummaryItems)
                {
                    SummarizationHeaderMenuItem.Available   =
                        CountMenuItem.Available             =
                            AggregationSeparator2.Available = true;
                }
            }

            else if (mc.DataType == MetaColumnType.Image)             // no grouping, count only for summary
            {
                InitMenuItems();

                if (includeGroupingItems)
                {
                    includeGroupingItems = false;                     // not allowed
                }

                if (includeSummaryItems)                 // summary types allowed for all data types
                {
                    SummarizationHeaderMenuItem.Available   =
                        CountMenuItem.Available             =
                            AggregationSeparator2.Available = true;
                }
            }

            else             // other types
            {
                if (includeGroupingItems)
                {
                    MatchingValuesMenuItem.Available = true;
                }

                if (includeSummaryItems)
                {
                    NumberQualifierMenuItem.Available = Qc.IsPotentialNumberQualifier;
                }
                //SingleValueMenuItem.Available = true; // (Not currently used)
            }

            if (!includeGroupingItems || !includeSummaryItems)
            {
                AggregationSeparator1.Available = AggregationSeparator2.Available = false;
            }

            //  Checkmark current selection

            string typeName = ad.TypeName;

            foreach (ToolStripItem tsi in AggTypeMenu.Items)
            {
                ToolStripMenuItem tsmi = tsi as ToolStripMenuItem;
                if (tsmi == null)
                {
                    continue;                               // separator of other non-ToolStripMenuItem
                }
                string menuItemTypeName = tsmi.Tag != null?tsmi.Tag.ToString() : "<null>";

                if (Lex.Eq(menuItemTypeName, typeName))
                {
                    tsmi.Checked = true;
                }
                else
                {
                    tsmi.Checked = false;
                }
            }

            return(AggTypeMenu);
        }