Exemple #1
0
        private Task SetupContextMenu(Query query, IEnumerable<Dimension> dimensionsAvailable)
        {
            // Only show Dimensions that haven't been grouped by.
            var dimensionContextMenuItems = dimensionsAvailable
                .Where(x => !query.GroupingDimensions.Contains(x))
                .Select(x =>
                        new ContextMenuButtonItem(Scheduler)
                        {
                            DisplayName = x.Name,
                            Command = new DelegateCommand(
                                () =>
                                {
                                    var selectedDimension = dimensionsAvailable
                                        .SingleOrDefault(d => d.Name == x.Name);
                                    if (selectedDimension == null)
                                    {
                                        return;
                                    }

                                    //var selectedItem = Items[SelectedItemIndex];

                                    var newFilter = query.GroupingDimensions
                                        .Select(d => new Nitrogen.Common.DataExplorer.Filter
                                                     {
                                                         Dimension = d,
                                                         Operator = FilterOperator.Equals,
                                                         Value = SelectedItem[d.Name]
                                                     })
                                        .ToList();

                                    var newQuery = query.DrillDown(new[] {selectedDimension}, newFilter);

                                    _drillDownDimensionRequest.OnNext(newQuery);
                                })
                        });

            return ContextMenu.AddRangeAsync(dimensionContextMenuItems);
        }