示例#1
0
        private void AddQueryColumns()
        {
            entityColumnsMap = new Dictionary <string, object>();
            EntitySchema entitySchema             = UserConnection.EntitySchemaManager.GetInstanceByName(SchemaName);
            string       primaryDisplayColumnName = entitySchema.FindPrimaryDisplayColumnName();
            string       primaryKeyColumnName     = entitySchema.GetPrimaryColumnName();
            string       primaryColumnAlias       = string.Empty;

            foreach (JObject columnItem in _columns)
            {
                string columnPath = DashboardDataUtils.GetColumnPath(columnItem);
                if (entityColumnsMap.ContainsKey(columnPath))
                {
                    continue;
                }
                EntitySchemaQueryColumn     column = AddQueryColumn(columnItem, columnPath);
                Dictionary <string, object> map    = MapColumn(column);
                entityColumnsMap[columnPath] = map;
                if (columnPath == primaryKeyColumnName)
                {
                    primaryColumnAlias = (string)map["valueAlias"];
                }
            }
            if (primaryColumnAlias.IsNullOrEmpty() && primaryKeyColumnName.IsNotNullOrEmpty())
            {
                EntitySchemaQueryColumn primaryKeyColumn = Esq.AddColumn(primaryKeyColumnName);
                entityColumnsMap[primaryKeyColumnName] = MapColumn(primaryKeyColumn);
            }
        }
示例#2
0
        private void AddDateTimeColumnsByFormat(string dateTimeFormat)
        {
            SortedDictionary <int, string> dateTimeFormats = GetSortedDateTimeFormats(dateTimeFormat);
            int index = 0;

            foreach (int key in dateTimeFormats.Keys)
            {
                var    format = dateTimeFormats[key];
                string alias  = "DatePart" + index;
                EntitySchemaDatePartQueryFunctionInterval interval = DashboardDataUtils.GetDatePartInterval(format);
                EntitySchemaQueryExpression columnExpression       =
                    EntitySchemaQuery.CreateSchemaColumnExpression(Esq.RootSchema, ColumnPath);
                columnExpression.UId = Guid.NewGuid();
                var queryFunction = new EntitySchemaDatePartQueryFunction(Esq, interval, columnExpression);
                queryFunction.SpecifyQueryAlias(alias);
                columnExpression.ParentQuery = queryFunction.ParentQuery;
                var esqExpression = new EntitySchemaQueryExpression(queryFunction)
                {
                    UId = Guid.NewGuid()
                };
                EntitySchemaQueryColumn column = Esq.AddColumn(esqExpression.Function);
                var map = new Dictionary <string, object>();
                map["format"]           = format;
                map["valueAlias"]       = alias;
                entityColumnsMap[alias] = map;
                if (OrderByGroupField)
                {
                    ApplyColumnOrder(column);
                }
                index++;
            }
        }
示例#3
0
        private EntitySchemaQueryColumn AddQueryColumn(JObject columnItem, string columnPath)
        {
            columnPath = DashboardDataUtils.ClearColumnPathSuffix(columnPath);
            string          filterData            = columnItem.Value <string>("serializedFilter");
            string          aggregationType       = columnItem.Value <string>("aggregationType");
            AggregationType columnAggregationType = AggregationType.None;

            if (!string.IsNullOrEmpty(aggregationType))
            {
                columnAggregationType = (AggregationType)Enum.Parse(typeof(AggregationType),
                                                                    aggregationType);
            }
            EntitySchemaQueryColumn column;

            if (columnAggregationType != AggregationType.None && !string.IsNullOrEmpty(filterData))
            {
                EntitySchemaQuery subQuery;
                column = Esq.AddColumn(columnPath, columnAggregationType.ToStrict(), out subQuery);
                var dashboardData = new BaseDashboardItemSelectBuilder(UserConnection, subQuery);
                dashboardData.AddFilterByJson(filterData);
            }
            else
            {
                column = Esq.AddColumn(columnPath);
                if (!string.IsNullOrEmpty(aggregationType))
                {
                    column.SummaryType = columnAggregationType;
                }
            }
            SetColumnOrder(columnItem, column);
            return(column);
        }
示例#4
0
        private SortedDictionary <int, string> GetSortedDateTimeFormats(string dateTimeFormat)
        {
            var priorityDict = new SortedDictionary <int, string>();

            string[] dateTimeFormats = dateTimeFormat.Split(';');
            foreach (var format in dateTimeFormats)
            {
                EntitySchemaDatePartQueryFunctionInterval interval = DashboardDataUtils.GetDatePartInterval(format);
                priorityDict.Add(GetOrderPriority(interval), format);
            }
            return(priorityDict);
        }
示例#5
0
        /// <summary>
        /// Adds filter(s) for column date part(s).
        /// </summary>
        /// <param name="filterColumn">Column for filtration</param>
        /// <param name="filterValue">Stringified JSON object with values</param>
        /// <param name="dateTimeFormat">Date parts separated by ';'</param>
        public void AddDatePartFilter(string filterColumn, string filterValue, string dateTimeFormat)
        {
            string[] dateTimeFormats = dateTimeFormat.Split(';');
            var      filterValueObj  = (JObject)Json.Deserialize(filterValue);
            EntitySchemaQueryExpression columnExpression = Esq.CreateSchemaColumnExpression(filterColumn);

            foreach (var format in dateTimeFormats)
            {
                var datePartValue = filterValueObj.Value <int>(format);
                EntitySchemaDatePartQueryFunctionInterval interval = DashboardDataUtils.GetDatePartInterval(format);
                var filter = GetDatePartFilter(columnExpression, datePartValue, interval);
                Esq.Filters.Add(filter);
            }
        }
        private JArray GetColumns()
        {
            var          columns                  = new JArray();
            JArray       items                    = GetGridConfigColumns();
            EntitySchema entitySchema             = UserConnection.EntitySchemaManager.GetInstanceByName(GetSchemaName());
            string       primaryDisplayColumnName = entitySchema.FindPrimaryDisplayColumnName();
            string       primaryKeyColumnName     = entitySchema.GetPrimaryColumnName();
            string       primaryColumnAlias       = string.Empty;

            foreach (JObject columnItem in items)
            {
                string columnPath    = DashboardDataUtils.GetColumnPath(columnItem);
                string columnCaption = columnItem.Value <string>("caption");
                if (string.IsNullOrEmpty(columnCaption))
                {
                    columnCaption = columnPath;
                }
                var columnConfig = new JObject();
                columnConfig["name"]     = columnPath;
                columnConfig["caption"]  = columnCaption;
                columnConfig["type"]     = columnItem.Value <string>("type");
                columnConfig["position"] = columnItem["position"];
                if (string.IsNullOrEmpty(columnItem.Value <string>("dataValueType")))
                {
                    Dictionary <string, object> map = (Dictionary <string, object>)selectBuilder.EntityColumnsMap[columnPath];
                    var type = (DataValueType)map["dataValueType"];
                    columnConfig["dataValueType"] = (int)Terrasoft.Nui.ServiceModel.Extensions.DataValueTypeExtension.ToEnum(type);
                }
                else
                {
                    columnConfig["dataValueType"] = columnItem.Value <int>("dataValueType");
                }
                if (columnPath != primaryDisplayColumnName)
                {
                    columnConfig["referenceSchemaName"] = columnItem.Value <string>("referenceSchemaName");
                }
                columns.Add(columnConfig);
            }
            return(columns);
        }
示例#7
0
        private void SetReferenceSchemaNames(string rootSchemaName, JArray gridColumns)
        {
            EntitySchema entitySchema = null;

            foreach (JObject columnItem in gridColumns)
            {
                if (columnItem.Value <int>("dataValueType") == (int)Terrasoft.Nui.ServiceModel.DataContract.DataValueType.Lookup &&
                    string.IsNullOrEmpty(columnItem.Value <string>("referenceSchemaName")))
                {
                    string columnPath = DashboardDataUtils.GetColumnPath(columnItem);
                    columnPath = DashboardDataUtils.ClearColumnPathSuffix(columnPath);
                    if (entitySchema == null)
                    {
                        entitySchema = UserConnection.EntitySchemaManager.GetInstanceByName(rootSchemaName);
                    }
                    EntitySchemaColumn column = entitySchema.FindSchemaColumnByPath(columnPath);
                    if (column.ReferenceSchema != null)
                    {
                        columnItem["referenceSchemaName"] = column.ReferenceSchema.Name;
                    }
                }
            }
        }
示例#8
0
        private JArray GetGridColumns()
        {
            var          columns                  = new JArray();
            string       schemaName               = GetSchemaName();
            EntitySchema entitySchema             = UserConnection.EntitySchemaManager.GetInstanceByName(schemaName);
            string       primaryDisplayColumnName = entitySchema.FindPrimaryDisplayColumnName();

            if (primaryDisplayColumnName != null)
            {
                columns.Add(DashboardDataUtils.GetGridColumnConfig(entitySchema, primaryDisplayColumnName));
            }
            string columnPath = Parameters.Value <string>("columnName");

            if (!string.IsNullOrEmpty(columnPath))
            {
                columns.Add(DashboardDataUtils.GetGridColumnConfig(entitySchema, columnPath));
            }
            if (columns.Count == 0)
            {
                columns.Add(DashboardDataUtils.GetGridColumnConfig(entitySchema, entitySchema.CreatedByColumn.Name));
                columns.Add(DashboardDataUtils.GetGridColumnConfig(entitySchema, entitySchema.CreatedOnColumn.Name));
            }
            return(columns);
        }