示例#1
0
        public void TestGetFormulaHighlightedHtml()
        {
            var markup = PerformerStatField.GetFormulaHighlightedHtml("Sharp*((Sub > 10)&(AL<5)&(DD<30))");

            Assert.IsTrue(markup.Contains("title=\""), "GetFormulaHighlightedHtml() - должны быть гиперссылки с заголовками");

            markup = PerformerStatField.GetFormulaHighlightedHtml("((P>15)&(Sub>0)&(Eq>500)&(DD<20))*AYP");
            Assert.IsFalse(markup.Contains("aypp"), "GetFormulaHighlightedHtml() - некорректны (вложенные) гиперссылки");
        }
示例#2
0
 public PerformerCriteriaFunction(PerformerCriteriaFunction funct)
 {
     function           = funct.function;
     Description        = funct.Description;
     PreferredSortOrder = funct.PreferredSortOrder;
     MarginValue        = funct.MarginValue;
     filters            = new List <Cortege3 <PerformerStatField, ExpressionOperator, double> >(funct.filters);
     SortField          = funct.SortField;
     IsExpressionParsed = funct.IsExpressionParsed;
 }
        // установка минимальной ширины колонки неперед (имеет смысл только для числовых данных),
        // исходя из необходимости хранить данные всего диапазона значений данной колонки;
        // такая установка исключает какие-либо иные установки ширины в дальнейшем;
        // исключена из SetupGrid
        private void DetermineColumnDisplaySettings(FastColumn col, PerformerStatField field, Graphics graphics)
        {
            // определить минимальную ширину колонки из размеров ее заголовка
            var font   = grid.FontHeader ?? grid.Font;
            var textWd = (int)Math.Ceiling(graphics.MeasureString(col.Title, font).Width);

            // добавить ширину значка сортировки
            textWd            += 8;
            col.ColumnMinWidth = textWd;
            // если колонка содержит число, задать ей соответствующую ширину фиксированной
            var prop = typeof(PerformerStatEx).GetProperties().FirstOrDefault(p => p.Name == field.PropertyName);

            if (prop == null)
            {
                return;
            }
            var propType = prop.PropertyType;
            var nulType  = Nullable.GetUnderlyingType(propType);

            propType = nulType ?? propType;
            // для целочисленных
            if (propType == typeof(int) || propType == typeof(short) || propType == typeof(long) ||
                propType == typeof(uint) || propType == typeof(ushort) || propType == typeof(ulong))
            {
                var wd = (int)Math.Ceiling(graphics.MeasureString("-19 999 999", font).Width);
                col.ColumnWidth = Math.Max(wd, col.ColumnMinWidth);
                return;
            }
            // для вещественных
            if (propType == typeof(float) || propType == typeof(double) || propType == typeof(decimal))
            {
                const double number = -9000500.25;
                var          str    = number.ToStringUniformMoneyFormat();
                try
                {
                    if (!string.IsNullOrEmpty(field.FormatString))
                    {
                        str = number.ToString(field.FormatString);
                    }
                }
                catch
                {
                }

                var wd = (int)Math.Ceiling(graphics.MeasureString(str, font).Width);
                col.ColumnWidth = Math.Max(wd, col.ColumnMinWidth);
                //return;
            }
        }
示例#4
0
        public void TestParseSimpleFormula()
        {
            List <Cortege3 <PerformerStatField, ExpressionOperator, double> > filters;
            PerformerStatField sortField;

            var rst = PerformerStatField.ParseSimpleFormula("Sharp*((Sub > 10)&(AL<5)&(DD<30))", out filters, out sortField);

            Assert.IsTrue(rst, "ParseSimpleFormula - таки должна распарситься");

            rst = PerformerStatField.ParseSimpleFormula("AYP", out filters, out sortField);
            Assert.IsTrue(rst, "ParseSimpleFormula - таки снова должна распарситься");
            Assert.AreEqual("AYP", sortField.ExpressionParamName, "Критерий сортировки должен быть AYP");

            rst = PerformerStatField.ParseSimpleFormula("(P>15)", out filters, out sortField);
            Assert.IsFalse(rst, "ParseSimpleFormula - не должна распарситься, нет фильтра");
        }
 public FilterObject(PerformerStatField field = null)
 {
     if (field == null)
     {
         return;
     }
     Name  = field.ExpressionParamName;
     Title = field.ExpressionParamTitle;
     if (field.DefaultOperator.HasValue)
     {
         Operator = field.DefaultOperator.Value;
     }
     if (field.DefaultValue.HasValue)
     {
         Value = field.DefaultValue.Value;
     }
 }
        public void SetupPortfolio(TopPortfolio portfolio)
        {
            this.portfolio = portfolio;

            lblPortfolioName.Text =
                (portfolio.IsCompanyPortfolio
                    ? (Localizer.GetString("TitlePortfolio") + " \"" + portfolio.Name + "\"")
                    : (Localizer.GetString("TitleUserPortfolio")) +
                 " [" + portfolio.ParticipantCount + "]");

            // сформировать формулу с подсветкой
            formulaBrowser.DocumentText = PerformerStatField.GetFormulaHighlightedHtml(portfolio.Criteria);

            tbCount.Value = portfolio.ParticipantCount;
            if (portfolio.IsCompanyPortfolio)
            {
                tbCount.Enabled = false;
            }
        }