Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
 public QueryBuilderFilter(IADOTabularColumn obj, IModelCapabilities modelCapabilities, IEventAggregator eventAggregator)
 {
     TabularObject     = obj;
     ModelCapabilities = modelCapabilities;
     EventAggregator   = eventAggregator;
     SetDefaultFilterType();
 }
Ejemplo n.º 3
0
        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);
            }
        }
Ejemplo n.º 4
0
        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));
        }
Ejemplo n.º 5
0
        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);
            }
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        public void Add(IADOTabularColumn item)
        {
            var filter = new QueryBuilderFilter(item);

            Items.Add(filter);
        }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
 public bool Contains(IADOTabularColumn item)
 {
     return(Items.FirstOrDefault(c => c == item) != null);
 }