コード例 #1
0
/// <summary>
/// Serialize conditional formatting, classification rules
/// </summary>
/// <returns></returns>

        public string SerializeRules()
        {
            CondFormatRules rules          = CondFormatRulesCtl.GetRules();
            string          serializedForm = rules.Serialize();

            return(serializedForm);
        }
コード例 #2
0
/// <summary>
/// See if valid basic calculated field
/// </summary>
/// <returns></returns>

        private bool IsValidBasicCalcField()
        {
            for (int cfcci = 0; cfcci < CfColCtls.Count; cfcci++)
            {
                CalcFieldColumnControl cfcc = CfColCtls[cfcci];

                bool validate = false;                 // decide if we should validate this field

                if (cfcci == 0)
                {
                    validate = true;                             // always validate 1st field
                }
                else if (cfcci == 1 && !Lex.StartsWith(Operation.Text, "none"))
                {
                    validate = true;                                                                             // validate 2nd field if operator is not "none"
                }
                else if (cfcc.FieldSelectorControl.MetaColumn != null)
                {
                    validate = true;
                }

                if (validate && !ValidateField(cfcc))
                {
                    return(false);
                }
            }

            if (!CondFormatRulesCtl.AreValid())             // are any rules valid
            {
                Tabs.SelectedTabPageIndex = 1;
                return(false);
            }

            CondFormatRules rules = CondFormatRulesCtl.GetRules();

            if (CalcField.SourceColumnType == MetaColumnType.Structure && rules.Count == 0)
            {
                Tabs.SelectedTabPageIndex = 1;
                MessageBoxMx.Show(
                    "Calculated fields on chemical structures must use classification\r\n" +
                    "for the calculated field value", UmlautMobius.String);
                return(false);
            }

            if (rules.Count > 0)             // must have at least one rule

            {
                foreach (CondFormatRule rule in rules)         // must have name for each rule
                {
                    if (String.IsNullOrEmpty(rule.Name))
                    {
                        Tabs.SelectedTabPageIndex = 1;
                        MessageBoxMx.Show("A name must be defined for each rule if using rule names the as calculated value", UmlautMobius.String);
                        return(false);
                    }
                }
            }

            return(true);
        }
コード例 #3
0
/// <summary>
/// Reset form for change in source column type if needed
/// </summary>
/// <param name="sourceColumnType"></param>

        public void SetSourceColumnType(
            int sourceColumnTypeInt)
        {
            MetaColumnType sourceColumnType = (MetaColumnType)sourceColumnTypeInt;

            SetupFormForColumnType(sourceColumnType);             // setup form
            CalcField.SourceColumnType = sourceColumnType;
            CalcField.SetDerivedValues();

            CondFormatRules rules = new CondFormatRules();

            CondFormatRulesCtl.SetupControl(CalcField.PreclassificationlResultType, rules.ColoringStyle);

            rules.Add(new CondFormatRule());             // include initial rule
            CondFormatRulesCtl.SetupControl(CalcField.PreclassificationlResultType, rules);
            return;
        }
コード例 #4
0
        /// <summary>
        /// Get other values from calc field form checking for errors
        /// </summary>
        /// <returns></returns>

        bool GetCalcFieldForm()
        {
            List <MetaColumn> mcList;

            CalcField       cf  = CalcField;
            CalcFieldColumn cfc = null;

            if (cf.CalcType == CalcTypeEnum.Basic)             // basic CF
            {
                cf.Operation = Operation.Text;

                cf.CfCols.Clear();                 // update
                foreach (CalcFieldColumnControl cfcc in CfColCtls)
                {
                    if (cfcc.FieldSelectorControl.MetaColumn == null)
                    {
                        continue;
                    }

                    cfc            = new CalcFieldColumn();
                    cfc.MetaColumn = cfcc.FieldSelectorControl.MetaColumn;
                    cfc.Function   = cfcc.Function.Text;
                    cfc.Constant   = cfcc.Constant.Text;
                    cf.CfCols.Add(cfc);
                }
            }

            else             // advanced CF
            {
                cf.AdvancedExpr = ParseAdvancedExpr(AdvancedExpr.Text, out mcList);

// Get preclassification result type

                string txt = ResultDataType.Text;
                if (Lex.IsDefined(txt))
                {
                    cf.PreclassificationlResultType = MetaColumn.ParseMetaColumnTypeString(txt);
                }

                else
                {
                    cf.PreclassificationlResultType = MetaColumnType.Number;
                }

// Get anchor table for joins

                cf.CfCols.Clear();
                foreach (MetaColumn mc0 in mcList)
                {
                    cfc            = new CalcFieldColumn();
                    cfc.MetaColumn = mc0;
                    cf.CfCols.Add(cfc);
                }

                cf.OuterJoinRoot = "";
                txt = JoinAnchorComboBox.Text;
                if (Lex.Eq(txt, "(None)"))
                {
                    txt = "";
                }

                if (Lex.IsDefined(txt))
                {
                    for (int ci = 0; ci < cf.CfCols.Count; ci++)
                    {
                        cfc = cf.CfCols[ci];
                        if (Lex.Eq(txt, cfc.MetaColumn.MetaTable.Label))
                        {
                            cf.OuterJoinRoot = cfc.MetaColumn.MetaTable.Name;
                            break;
                        }
                    }
                }
            }

            cf.Description = Description.Text;

            CondFormatRules rules = CondFormatRulesCtl.GetRules();

            if (rules.Count == 0)
            {
                cf.Classification = null;
            }
            else
            {
                cf.Classification       = new CondFormat();
                cf.Classification.Rules = rules;
            }

            try { cf.SetDerivedValuesWithException(); }             // set derived values checking for errors
            catch (Exception ex)
            {
                MessageBoxMx.ShowError(ex.Message);
                return(false);
            }

            return(true);
        }
コード例 #5
0
        /// <summary>
        /// Set contents of calculated field form
        /// </summary>
        /// <param name="cf"></param>

        void SetupForm()
        {
            InSetup = true;
            CalcField              cf = CalcField;
            CalcFieldColumn        cfc;
            CalcFieldColumnControl cfcc;
            CondFormatRules        rules;
            int ci, cci;

            MetaColumnType mcType = MetaColumnType.Number;             // be sure source column type is set
            MetaColumn     cfMc   = null;

            Tabs.SelectedTabPageIndex = 0;             // be sure first tab is selected
            SetupControlVisibility();

            foreach (CalcFieldColumnControl cfc0 in CfColCtls)                               // clear field selector controls on form
            {
                cfc0.FieldSelectorControl.Query      = QueriesControl.Instance.CurrentQuery; // cfc0.CfCol.Query = QueriesControl.Instance.CurrentQuery;
                cfc0.FieldSelectorControl.MetaColumn = null;
            }

            AdvancedExpr.Text = "";
            FormatAdvancedExpr(cf.AdvancedExpr, out AdvancedEditorPseudoQuery);             // setup advanced field menu

            if (cf.CalcType == CalcTypeEnum.Basic)
            {
                cfMc = cf.MetaColumn1;

                BasicOptionButton.Checked = true;

                if (cf.Operation != "")
                {
                    Operation.Text = cf.Operation;
                }
                else
                {
                    Operation.Text = "/ (Division)";
                }

                cf.SetDerivedValues();
            }

            else             // advanced type
            {
                AdvancedOptionButton.Checked = true;
                AdvancedExpr.Text            = FormatAdvancedExpr(cf.AdvancedExpr, out AdvancedEditorPseudoQuery);

                List <MetaColumn> mcList = cf.GetInputMetaColumnList();
                if (mcList.Count > 0)
                {
                    cfMc = mcList[0];
                }

                // Setup result type

                if (cf.PreclassificationlResultType == MetaColumnType.Unknown)
                {
                    cf.PreclassificationlResultType = MetaColumnType.Number;
                }
                string txt = cf.PreclassificationlResultType.ToString();
                if (Lex.Eq(txt, "String"))
                {
                    txt = "Text";                                        // fixup
                }
                ResultDataType.Text = txt;

                // Setup outer join table

                JoinAnchorComboBox.Text = "";

                if (Lex.IsDefined(cf.OuterJoinRoot))
                {
                    for (ci = 0; ci < cf.CfCols.Count; ci++)
                    {
                        cfc = cf.CfCols[ci];
                        if (cfc.MetaColumn == null)
                        {
                            continue;
                        }
                        MetaTable mt = cfc.MetaColumn.MetaTable;

                        if (Lex.Eq(cf.OuterJoinRoot, cfc.MetaColumn.MetaTable.Name))
                        {
                            JoinAnchorComboBox.Text = cfc.MetaColumn.MetaTable.Label;
                            break;
                        }
                    }
                }
            }

// Setup column controls for source column type

            if (cfMc != null)
            {
                cf.SourceColumnType = cfMc.DataType;
            }
            else
            {
                cf.SourceColumnType = MetaColumnType.Number;
            }

            SetupFormForColumnType(cf.SourceColumnType);

// Add column controls MetaColumn references and function info

            cci = -1;             // col control index

            for (ci = 0; ci < cf.CfCols.Count; ci++)
            {
                cfc = cf.CfCols[ci];

                cci++;
                if (cci >= CfColCtls.Count)
                {
                    throw new Exception("Number of calculated field columns exceeds limit of: " + CfColCtls.Count);
                }
                cfcc = CfColCtls[cci];

                cfcc.FieldSelectorControl.MetaColumn = cfc.MetaColumn;

                if (Lex.IsDefined(cfc.Function))
                {
                    cfcc.Function.Text = cfc.Function;
                }
                else
                {
                    cfcc.Function.Text = "None";
                }

                cfcc.Constant.Text    = cfc.Constant;
                cfcc.Constant.Enabled = Lex.Contains(cfc.Function, "constant");
            }


            CalcField.ColumnLabel = FieldColumnName.Text;
            Description.Text      = cf.Description;

            if (cf.Operation != "")
            {
                Operation.SelectedItem = cf.Operation;
            }

            if (cf.Classification != null)
            {
                rules = cf.Classification.Rules;
            }
            else
            {
                rules = new CondFormatRules();
            }

            if (rules.Count == 0)
            {
                rules.Add(new CondFormatRule());                 // include initial rule
            }
            CondFormatRulesCtl.SetupControl(CalcField.PreclassificationlResultType, rules.ColoringStyle);
            CondFormatRulesCtl.SetupControl(CalcField.PreclassificationlResultType, rules);

            InSetup = false;
            return;
        }