コード例 #1
0
        internal static void ToCountSearchControl(UserQueryEntity uq, CountSearchControl countSearchControl)
        {
            var filters = uq.WithoutFilters ? countSearchControl.FilterOptions.ToList() :
                          countSearchControl.FilterOptions.Where(f => f.Frozen).Concat(uq.Filters.Select(qf => new FilterOption
            {
                ColumnName = qf.Token.Token.FullKey(),
                Operation  = qf.Operation,
                Value      = Signum.Entities.UserAssets.FilterValueConverter.Parse(qf.ValueString, qf.Token.Token.Type, qf.Operation.IsList())
            })).ToList();

            var columns = uq.Columns.Select(qc => new ColumnOption
            {
                ColumnName  = qc.Token.Token.FullKey(),
                DisplayName = qc.DisplayName.DefaultText(null)
            }).ToList();

            var orders = uq.Orders.Select(of => new OrderOption
            {
                ColumnName = of.Token.Token.FullKey(),
                OrderType  = of.OrderType,
            }).ToList();

            countSearchControl.Reinitialize(filters, columns, uq.ColumnsMode, orders);
            countSearchControl.Text       = uq.DisplayName + ": {0}";
            countSearchControl.LinkClick += (object sender, EventArgs e) =>
            {
                Finder.Explore(new ExploreOptions(countSearchControl.QueryName)
                {
                    InitializeSearchControl = sc => UserQueryClient.SetUserQuery(sc, uq)
                });
            };
        }
コード例 #2
0
        internal void OpenSubgroup(string dataClicks)
        {
            var dic = dataClicks.Split(new[] { '&' }, StringSplitOptions.RemoveEmptyEntries).ToDictionary(a => a.Split('=')[0], a => a.Split('=')[1]);

            if (!lastRequest.GroupResults)
            {
                Lite <Entity> lite = (Lite <Entity>)FilterValueConverter.Parse(dic["entity"], this.Description.Columns.Single(a => a.IsEntity).Type, isList: false);

                if (Navigator.IsNavigable(lite.EntityType, isSearch: true))
                {
                    Navigator.NavigateUntyped(lite, new NavigateOptions());
                }
            }
            else
            {
                var subFilters = lastRequest.KeyColumns.Select(t =>
                                                               new FilterOption(t.Token.FullKey(), FilterValueConverter.Parse(dic["c" + t.Position], t.Token.Type, isList: false)));

                Finder.Explore(new ExploreOptions(Request.QueryName)
                {
                    FilterOptions = lastRequest.Filters.Concat(subFilters).ToList(),
                    SearchOnLoad  = true,
                });
            }
        }
コード例 #3
0
        private void btnExploreNotes_Click(object sender, RoutedEventArgs e)
        {
            var func = CustomFilter.TryGetValue(DataContext.GetType());

            var eo = new ExploreOptions(typeof(NoteEntity))
            {
                ShowFilters   = false,
                SearchOnLoad  = true,
                FilterOptions =
                {
                    func != null ?  func((Entity)DataContext) : new FilterOption("Target", DataContext)
                    {
                        Frozen = true
                    },
                },
                OrderOptions = { new OrderOption("CreationDate", OrderType.Ascending) },
                Closed       = (_, __) => Dispatcher.Invoke(() => ReloadNotes())
            };

            if (func == null)
            {
                eo.ColumnOptions = new List <ColumnOption> {
                    new ColumnOption("Target")
                };
                eo.ColumnOptionsMode = ColumnOptionsMode.Remove;
            }

            Finder.Explore(eo);
        }
コード例 #4
0
        public override void OnSelected(UserQueryOmniboxResult result, Window window)
        {
            UserQueryEntity uq = result.UserQuery.RetrieveAndForget();

            var query = QueryClient.GetQueryName(uq.Query.Key);

            Finder.Explore(new ExploreOptions(query)
            {
                InitializeSearchControl = sc => UserQueryClient.SetUserQuery(sc, uq)
            });
        }
コード例 #5
0
        internal static void Explore(UserQueryEntity userQuery, Entity currentEntity)
        {
            var query = QueryClient.GetQueryName(userQuery.Query.Key);

            Finder.Explore(new ExploreOptions(query)
            {
                InitializeSearchControl = sc =>
                {
                    using (userQuery.EntityType == null ? null : CurrentEntityConverter.SetCurrentEntity(currentEntity))
                        UserQueryClient.SetUserQuery(sc, userQuery);
                }
            });
        }
コード例 #6
0
        public void ShowRow(ResultRow row)
        {
            if (row.Table.HasEntities)
            {
                Lite <Entity> lite = row.Entity;

                if (Navigator.IsNavigable(lite.EntityType, isSearch: true))
                {
                    Navigator.NavigateUntyped(lite);
                }
            }
            else
            {
                var subFilters = lastRequest.GetFilter(row);

                Finder.Explore(new ExploreOptions(Request.QueryName)
                {
                    FilterOptions = lastRequest.Filters.Concat(subFilters).ToList(),
                    SearchOnLoad  = true,
                });
            }
        }
コード例 #7
0
        public override void OnSelected(DynamicQueryOmniboxResult r, Window window)
        {
            Finder.Explore(new ExploreOptions(r.QueryNameMatch.Value)
            {
                FilterOptions = r.Filters.Select(f =>
                {
                    FilterType ft = QueryUtils.GetFilterType(f.QueryToken.Type);

                    var operation = f.Operation;
                    if (operation != null && !QueryUtils.GetFilterOperations(ft).Contains(f.Operation.Value))
                    {
                        MessageBox.Show(window, "Operation {0} not compatible with {1}".FormatWith(operation, f.QueryToken.ToString()));
                        operation = FilterOperation.EqualTo;
                    }

                    object value = f.Value;
                    if (value as string == DynamicQueryOmniboxResultGenerator.UnknownValue)
                    {
                        MessageBox.Show(window, "Unknown value for {0}".FormatWith(f.QueryToken.ToString()));
                        value = null;
                    }
                    else
                    {
                        if (value is Lite <IEntity> )
                        {
                            Server.FillToStr((Lite <IEntity>)value);
                        }
                    }

                    return(new FilterOption
                    {
                        Token = f.QueryToken,
                        Operation = operation ?? FilterOperation.EqualTo,
                        Value = value,
                    });
                }).ToList(),
                SearchOnLoad = r.Filters.Any(),
            });
        }
コード例 #8
0
        private void btnAlerts_Click(object sender, RoutedEventArgs e)
        {
            if (DataContext == null)
            {
                return;
            }

            Entity    entity = DataContext as Entity;
            ResultRow row    = (ResultRow)((Button)sender).DataContext;

            AlertCurrentState state = (AlertCurrentState)row[0];

            var func = CustomFilter.TryGetValue(DataContext.GetType());

            var eo = new ExploreOptions(typeof(AlertEntity))
            {
                ShowFilters   = false,
                SearchOnLoad  = true,
                FilterOptions =
                {
                    func != null ? func(entity) : new FilterOption("Target", DataContext)
                    {
                        Frozen = true
                    },
                    new FilterOption("Entity.CurrentState", state)
                },
                Closed = (o, ea) => Dispatcher.Invoke(() => ReloadAlerts()),
            };

            if (func == null)
            {
                eo.ColumnOptions = new List <ColumnOption> {
                    new ColumnOption("Target")
                };
                eo.ColumnOptionsMode = ColumnOptionsMode.Remove;
            }

            Finder.Explore(eo);
        }
コード例 #9
0
        public static MenuItem Construct(SearchControl sc, MenuItem plainExcelMenuItem)
        {
            MenuItem miResult = new MenuItem
            {
                Header = ExcelMessage.Reports.NiceToString(),
                Icon   = ExtensionsImageLoader.GetImageSortName("excel.png").ToSmallImage()
            };

            miResult.AddHandler(MenuItem.ClickEvent, new RoutedEventHandler((object sender, RoutedEventArgs e) =>
            {
                e.Handled = true;

                if (e.OriginalSource is MenuItem b) //Not to capture the mouseDown of the scrollbar buttons
                {
                    Lite <ExcelReportEntity> reportLite = (Lite <ExcelReportEntity>)b.Tag;

                    SaveFileDialog sfd = new SaveFileDialog()
                    {
                        AddExtension    = true,
                        DefaultExt      = ".xlsx",
                        Filter          = ExcelMessage.Excel2007Spreadsheet.NiceToString(),
                        FileName        = reportLite.ToString() + " - " + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx",
                        OverwritePrompt = true,
                        Title           = ExcelMessage.FindLocationFoExcelReport.NiceToString()
                    };

                    if (sfd.ShowDialog(Window.GetWindow(sc)) == true)
                    {
                        byte[] result = Server.Return((IExcelReportServer r) => r.ExecuteExcelReport(reportLite, sc.GetQueryRequest(true)));

                        File.WriteAllBytes(sfd.FileName, result);

                        System.Diagnostics.Process.Start(sfd.FileName);
                    }
                }
            }));

            Action initialize = null;

            MenuItem miAdmin = new MenuItem()
            {
                Header = "Administrar",
                Icon   = ExtensionsImageLoader.GetImageSortName("folderedit.png").ToSmallImage()
            };

            miAdmin.Click += (object sender, RoutedEventArgs e) =>
            {
                var query = QueryClient.GetQuery(sc.QueryName);

                Finder.Explore(new ExploreOptions(typeof(ExcelReportEntity))
                {
                    ShowFilters      = false,
                    ShowFilterButton = false,
                    FilterOptions    = new List <FilterOption>
                    {
                        new FilterOption
                        {
                            ColumnName = "Query",
                            Operation  = FilterOperation.EqualTo,
                            Value      = query.ToLite(query.IsNew),
                            Frozen     = true
                        }
                    },
                    Closed = (_, __) => miAdmin.Dispatcher.Invoke(() => initialize()) //Refrescar lista de informes tras salir del administrador
                });

                e.Handled = true;
            };

            initialize = () =>
            {
                miResult.Items.Clear();

                List <Lite <ExcelReportEntity> > reports = Server.Return((IExcelReportServer s) => s.GetExcelReports(sc.QueryName));

                if (plainExcelMenuItem != null)
                {
                    miResult.Items.Add(plainExcelMenuItem);
                    miResult.Items.Add(new Separator());
                }

                miResult.Header = new TextBlock {
                    Inlines = { new Run(ExcelMessage.Reports.NiceToString()), reports.Count == 0? (Inline) new Run(): new Bold(new Run(" (" + reports.Count + ")")) }
                };

                if (reports.Count > 0)
                {
                    foreach (Lite <ExcelReportEntity> report in reports)
                    {
                        MenuItem mi = new MenuItem()
                        {
                            Header = report.ToString(),
                            Icon   = ExtensionsImageLoader.GetImageSortName("excelDoc.png").ToSmallImage(),
                            Tag    = report,
                        };
                        miResult.Items.Add(mi);
                    }
                }


                miResult.Items.Add(miAdmin);
            };

            initialize();

            return(miResult);
        }