public void Add(IADOTabularColumn item) { var builderItem = item as QueryBuilderColumn; if (builderItem == null) { builderItem = new QueryBuilderColumn(item, true, EventAggregator); } if (item is ADOTabularColumn col) { builderItem.SelectedTable = col.Table; if (col.OrderBy != null) { // TODO - look at automatically pulling OrderBy columns into the query var sortCol = ((IADOTabularColumn)col.OrderBy) as QueryBuilderColumn; if (sortCol == null) { sortCol = new QueryBuilderColumn(col.OrderBy, true, EventAggregator); } sortCol.IsSortBy = true; if (!Items.Any(sort => sort.DaxName == sortCol.DaxName)) { Items.Add(sortCol); EventAggregator.PublishOnUIThread(new OutputMessage(MessageType.Information, $"{col.OrderBy.DaxName} was added to the Query Builder because it is the OrderBy column for {col.DaxName}")); } } } Items.Add(builderItem); NotifyOfPropertyChange(nameof(Items)); }
public QueryBuilderFilter(IADOTabularColumn obj, IModelCapabilities modelCapabilities, IEventAggregator eventAggregator) { TabularObject = obj; ModelCapabilities = modelCapabilities; EventAggregator = eventAggregator; SetDefaultFilterType(); }
public void Insert(int index, IADOTabularColumn item) { var builderItem = new QueryBuilderColumn(item, true, EventAggregator); // if we are 'inserting' at the end just do an add if (index >= Items.Count) { Items.Add(builderItem); } else { Items.Insert(index, builderItem); } }
public void Add(IADOTabularColumn item) { var builderItem = item as QueryBuilderColumn; if (builderItem == null) { builderItem = new QueryBuilderColumn(item, true); } if (item is ADOTabularColumn col) { builderItem.SelectedTable = col.Table; } Items.Add(builderItem); NotifyOfPropertyChange(nameof(Items)); }
public void Add(IADOTabularColumn item) { var builderItem = item as QueryBuilderColumn; if (builderItem == null) { builderItem = new QueryBuilderColumn(item, true, EventAggregator); } if (item is ADOTabularColumn col) { builderItem.SelectedTable = col.Table; if (col.OrderBy != null) { // TODO - look at automatically pulling OrderBy columns into the query } } Items.Add(builderItem); NotifyOfPropertyChange(nameof(Items)); }
public void Drop(IDropInfo dropInfo) { var objTreeViewCol = dropInfo.DragInfo.DataObject as TreeViewColumn; IADOTabularColumn col = dropInfo.DragInfo.DataObject as IADOTabularColumn; if (col == null & objTreeViewCol != null) { col = objTreeViewCol.Column as IADOTabularColumn; } if (col == null && objTreeViewCol == null) { col = dropInfo.DragInfo.Data as IADOTabularColumn; } // check if we are moving within list if (dropInfo.TargetCollection == dropInfo.DragInfo.SourceCollection) { // move item in collection var targetIdx = dropInfo.InsertIndex >= List.Count && List.Count > 0 ? List.Count - 1 : dropInfo.InsertIndex; List.Move(List.IndexOf(col), targetIdx); return; } // don't add the same column twice if (List.Contains(col)) { return; } // Inser new item if (dropInfo.InsertIndex == List.Count) { List.Add(col); } else { List.Insert(dropInfo.InsertIndex, col); } }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { // Load the JSON for the Result into a JObject JObject jo = JObject.Load(reader); // Construct a dummy copy of the VM here so that we can populate the Columns, Filters and OrderBy collections var vm = new QueryBuilderViewModel(null, null, null); // Read the properties which will be used as constructor parameters foreach (var col in jo["Columns"].ToArray()) { IADOTabularColumn obj = col["TabularObject"].ToObject <ADOTabularColumnStub>(); bool isModelItem = (bool)col["IsModelItem"]; bool isOverridden = (bool)col["IsOverriden"]; string measureExpression = col["MeasureExpression"].ToString(); var queryBuilderCol = new QueryBuilderColumn(obj, isModelItem); queryBuilderCol.MeasureExpression = isOverridden?measureExpression:string.Empty; vm.Columns.Add(queryBuilderCol); } foreach (var filter in jo["Filters"]["Items"].ToArray()) { IADOTabularColumn obj = filter["TabularObject"].ToObject <ADOTabularColumnStub>(); FilterType filterType = filter["FilterType"].ToObject <FilterType>(); string filterValue = filter["FilterValue"].ToString(); string filterValue2 = filter["FilterValue2"].ToString(); IModelCapabilities modelCapabilities = filter["ModelCapabilities"].ToObject <ADOTabularModelCapabilities>(); var queryBuilderFilter = new QueryBuilderFilter(obj, modelCapabilities); queryBuilderFilter.FilterType = filterType; queryBuilderFilter.FilterValue = filterValue; queryBuilderFilter.FilterValue2 = filterValue2; vm.Filters.Add(queryBuilderFilter); } // Return the result return(vm); }
public void Add(IADOTabularColumn item) { var filter = new QueryBuilderFilter(item); Items.Add(filter); }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { // Load the JSON for the Result into a JObject JObject jo = JObject.Load(reader); // Construct a dummy copy of the VM here so that we can populate the Columns, Filters and OrderBy collections var vm = new QueryBuilderViewModel(_eventAggregator, _document, _options); // Read the properties which will be used as constructor parameters foreach (var col in jo["Columns"].ToArray()) { IADOTabularColumn obj = col["TabularObject"].ToObject <ADOTabularColumnStub>(); bool isModelItem = (bool)col["IsModelItem"]; bool isOverridden = (bool)col["IsOverriden"]; SortDirection sortDirection = SortDirection.ASC; var _ = Enum.TryParse(col["SortDirection"].ToString(), out sortDirection); string measureExpression = col["MeasureExpression"].ToString(); string measureCaption = col["Caption"].ToString(); var queryBuilderCol = new QueryBuilderColumn(obj, isModelItem, _eventAggregator); queryBuilderCol.MeasureExpression = isOverridden?measureExpression:string.Empty; queryBuilderCol.SortDirection = sortDirection; if (isOverridden) { queryBuilderCol.Caption = measureCaption; } vm.Columns.Add(queryBuilderCol); } foreach (var filter in jo["Filters"]["Items"].ToArray()) { IADOTabularColumn obj = filter["TabularObject"].ToObject <ADOTabularColumnStub>(); FilterType filterType = filter["FilterType"].ToObject <FilterType>(); string filterValue = filter["FilterValue"].ToString(); var filterValueIsParameterToken = filter["FilterValueIsParameter"]; var filterValue2IsParameterToken = filter["FilterValue2IsParameter"]; string filterValue2 = filter["FilterValue2"].ToString(); IModelCapabilities modelCapabilities = filter["ModelCapabilities"].ToObject <ADOTabularModelCapabilities>(); var queryBuilderFilter = new QueryBuilderFilter(obj, modelCapabilities, _eventAggregator); queryBuilderFilter.FilterType = filterType; queryBuilderFilter.FilterValue = filterValue; if (filterValueIsParameterToken != null) { bool filterValueIsParameter = Convert.ToBoolean(filterValueIsParameterToken.ToString()); queryBuilderFilter.FilterValueIsParameter = filterValueIsParameter; } queryBuilderFilter.FilterValue2 = filterValue2; if (filterValue2IsParameterToken != null) { bool filterValue2IsParameter = Convert.ToBoolean(filterValue2IsParameterToken.ToString()); queryBuilderFilter.FilterValue2IsParameter = filterValue2IsParameter; } vm.Filters.Add(queryBuilderFilter); } // Return the result return(vm); }
public bool Contains(IADOTabularColumn item) { return(Items.FirstOrDefault(c => c == item) != null); }