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); } }
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++; } }
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); }
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); }
/// <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); }
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; } } } }
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); }