コード例 #1
0
        public List <ContributorRowModel> GetItems(BsGridRepositorySettings <ContributorSearchModel> settings, List <int> ids)
        {
            this.settings = settings;

            var result = new List <ContributorRowModel>();

            // create filtered query
            var basicQuery = this.Query();

            if (ids != null && ids.Any())
            {
                basicQuery = basicQuery.Where(x => ids.Contains(x.Id));
            }
            else
            {
                basicQuery = Filter(basicQuery);
            }

            IEnumerable <ContributorRowModel> finalQuery = null;

            // order
            var orderedExcelQueryBuilder = new OrderedQueryBuilder <ContributorRowModel>(this.settings.OrderableColumns);

            orderedExcelQueryBuilder.OrderFor(x => x.Name, y => y.FirstName + " " + y.LastName);

            var orderedQuery = orderedExcelQueryBuilder.Order(basicQuery, x => x.OrderBy(y => y.StartDate));

            // map
            finalQuery = orderedQuery.Select(MapContributor_ContributorRowModel).ToList();

            result = finalQuery.ToList();

            return(result);
        }
コード例 #2
0
        public BsJsonResult PublicationPager(BsGridRepositorySettings <PublicationsSearchVm> settings)
        {
            var msg    = string.Empty;
            var status = BsResponseStatus.Success;
            var html   = string.Empty;
            var count  = 0;

            try
            {
                _fakeArticlePubRepository.Settings = settings;
                var viewModel = _fakeArticlePubRepository.ToBsGridViewModel(settings, out count).Wrap <PublicationsVm>(x => x.Grid);

                html = this.BsRenderPartialView("_PublicationsGrid", viewModel);
            }
            catch (Exception ex)
            {
                msg    = ex.Message;
                status = BsResponseStatus.ServerError;
            }

            return(new BsJsonResult(new
            {
                Count = count,
                Html = html
            }, status, msg));
        }
コード例 #3
0
        public ActionResult Publications()
        {
            var bsGridSettings = new BsGridRepositorySettings <PublicationsSearchVm>()
            {
                PageSize = 10,
                Page     = 1
            };

            bsGridSettings.Search = new PublicationsSearchVm();

            var gridModel = _fakeArticlePubRepository.ToBsGridViewModel(bsGridSettings);

            var model = new PublicationsVm()
            {
                Grid    = gridModel,
                Toolbar = new BsToolbarModel <PublicationsSearchVm>
                {
                    Search = bsGridSettings.Search
                }
            };

            var options = new Dictionary <string, string>
            {
                { "pagerUrl", Url.Action("PublicationPager") },
                { "editUrl", Url.Action("Draft") }
            };

            RequireJsOptions.Add("index", options);

            return(View(model));
        }
コード例 #4
0
        public BsJsonResult Count(BsGridRepositorySettings<ContributorSearchModel> settings)
        {
            var count = _gridRepository.Count(settings);

            return new BsJsonResult(new
            {
                Count = count
            });
        }
コード例 #5
0
        public BsJsonResult Count(BsGridRepositorySettings <ContributorSearchModel> settings)
        {
            var count = _gridRepository.Count(settings);

            return(new BsJsonResult(new
            {
                Count = count
            }));
        }
コード例 #6
0
        public ActionResult ExportExcel(BsGridRepositorySettings <ContributorSearchModel> settings, List <BsGridRowData <int> > items)
        {
            var rows = _gridRepository.GetItems(settings, items.Select(x => x.Id).ToList());

            try
            {
                var builder = new BsGridExcelBuilder <ContributorRowModel>("BForms Contributors.xlsx", rows);

                builder.ConfigureHeader(header =>
                {
                    header.Order(settings.OrderColumns);
                    header.Style.Font.Bold = true;
                    header.Style.FillColor = BsGridExcelColor.Ivory;
                    header.For(x => x.StartDate)
                    .Text("Contributor since")
                    .Style(style => style.Font.Italic = true);
                })
                .ConfigureRows((row, style) =>
                {
                    if (row.Role == ProjectRole.TeamLeader)
                    {
                        style.Font.Bold = true;
                    }
                    if (row.Role == ProjectRole.Tester)
                    {
                        style.Font.Italic = true;
                    }
                })
                .ConfigureColumns(columns =>
                {
                    columns.For(x => x.Name)
                    .Order(1);
                    columns.For(x => x.Enabled)
                    .Text(x => x.Enabled ? Resource.Yes : Resource.No)
                    .Style((row, style) => style.FillColor = row.Enabled ? BsGridExcelColor.LightGreen : BsGridExcelColor.Red);
                    columns.For(x => x.Role)
                    .Order(2)
                    .Text(x => x.Role.ToString())
                    .Style(style => style.FillColor = BsGridExcelColor.Lavender);
                    columns.For(x => x.StartDate)
                    .Text(x => x.StartDate.ToMonthNameDate())
                    .Style(style => style.Font.Italic = true);
                });

                return(new BsExcelResult <ContributorRowModel>("BForms Contributors.xlsx", builder));
            }
            catch (Exception ex)
            {
                var controllerName = (string)Request.RequestContext.RouteData.Values["controller"];
                var actionName     = (string)Request.RequestContext.RouteData.Values["action"];

                return(View("Error", new HandleErrorInfo(ex, controllerName, actionName)));
            }
        }
コード例 #7
0
        public ActionResult Index(int?stateId)
        {
            BsGridRepositorySettings <ContributorSearchModel> bsGridSettings = null;

            if (stateId.HasValue)
            {
                var state = _componentState.Get(stateId.Value);

                if (state != null)
                {
                    bsGridSettings = state.ToBsGridRepositorySettings <ContributorSearchModel>();
                }
            }

            if (bsGridSettings == null)
            {
                bsGridSettings = new BsGridRepositorySettings <ContributorSearchModel>()
                {
                    PageSize = 5,
                    Page     = 1
                };
            }

            bsGridSettings.Search = _gridRepository.GetSearchForm(bsGridSettings.Search);

            var gridModel = _gridRepository.ToBsGridViewModel(bsGridSettings);

            var model = new ContributorsViewModel
            {
                Grid    = gridModel,
                Toolbar = new BsToolbarModel <ContributorSearchModel, ContributorNewModel, List <ContributorOrderModel> >
                {
                    Search = bsGridSettings.Search,
                    New    = _gridRepository.GetNewForm(),
                    Order  = _gridRepository.GetOrderForm(true)
                }
            };

            var options = new Dictionary <string, object>
            {
                { "pagerUrl", Url.Action("Pager") },
                { "getRowsUrl", Url.Action("GetRows") },
                { "enableDisableUrl", Url.Action("EnableDisable") },
                { "exportExcelUrl", Url.Action("ExportExcel") },
                { "updateUrl", Url.Action("Update") },
                { "deleteUrl", Url.Action("Delete") },
                { "editComponents", RequireJsHtmlHelpers.ToJsonDictionary <EditComponents>() }
            };

            RequireJsOptions.Add("index", options);

            return(View(model));
        }
コード例 #8
0
        public BsJsonResult Pager(BsGridRepositorySettings <ContributorSearchModel> settings)
        {
            var msg            = string.Empty;
            var status         = BsResponseStatus.Success;
            var html           = string.Empty;
            var count          = 0;
            var componentState = 0;

            try
            {
                //simulate exception
                if (settings.Page == 3)
                {
                    throw new Exception("This is how an exception message is displayed in grid header");
                }

                var viewModel = _gridRepository.ToBsGridViewModel(settings, out count).Wrap <ContributorsViewModel>(x => x.Grid);

                html = this.BsRenderPartialView("Grid/_Grid", viewModel);

                if (!settings.FromReset)
                {
                    var state = settings.ToBsComponentState("contributorsGrid", this.Request.UrlReferrer.LocalPath);

                    componentState = _componentState.Save(state);
                }
            }
            catch (Exception ex)
            {
                msg    = ex.Message;
                status = BsResponseStatus.ServerError;
            }

            return(new BsJsonResult(new
            {
                ComponentState = componentState,
                Count = count,
                Html = html
            }, status, msg));
        }
コード例 #9
0
        public BsJsonResult Pager(BsGridRepositorySettings<ContributorSearchModel> settings)
        {
            var msg = string.Empty;
            var status = BsResponseStatus.Success;
            var html = string.Empty;
            var count = 0;
            var componentState = 0;

            try
            {
                //simulate exception
                if (settings.Page == 3)
                {
                    throw new Exception("This is how an exception message is displayed in grid header");
                }

                var viewModel = _gridRepository.ToBsGridViewModel(settings, out count, x => x.Id).Wrap<ContributorsViewModel>(x => x.Grid);

                html = this.BsRenderPartialView("Grid/_Grid", viewModel);

                if (!settings.FromReset)
                {
                    var state = settings.ToBsComponentState("contributorsGrid", this.Request.UrlReferrer.LocalPath);

                    componentState = _componentState.Save(state);
                }
            }
            catch (Exception ex)
            {
                msg = ex.Message;
                status = BsResponseStatus.ServerError;
            }

            return new BsJsonResult(new
            {
                ComponentState = componentState,
                Count = count,
                Html = html
            }, status, msg);
        }
コード例 #10
0
        public ActionResult Index(int? stateId)
        {
            BsGridRepositorySettings<ContributorSearchModel> bsGridSettings = null;

            //HttpContext.Items["RequestTheme"] = BsTheme.Black;

            if (stateId.HasValue)
            {
                var state = _componentState.Get(stateId.Value);

                if (state != null)
                {
                    bsGridSettings = state.ToBsGridRepositorySettings<ContributorSearchModel>();
                }
            }

            bsGridSettings = new BsGridRepositorySettings<ContributorSearchModel>()
            {
                PageSize = 5,
                Page = 1,
                //GoTo = BsDirectionType.First
            };

            bsGridSettings.Search = _gridRepository.GetSearchForm(bsGridSettings.Search);

            bsGridSettings.OrderableColumns = new List<BsColumnOrder>{new BsColumnOrder
            {
                Name = "Name",
                Type = BsOrderType.Descending
            }};

            var gridModel = _gridRepository.ToBsGridViewModel(bsGridSettings, x => x.Id);

            var model = new ContributorsViewModel
            {
                Grid = gridModel,
                Toolbar = new BsToolbarModel<ContributorSearchModel, ContributorNewModel, List<ContributorOrderModel>>
                {
                    Search = bsGridSettings.Search,
                    New = _gridRepository.GetNewForm(),
                    Order = _gridRepository.GetOrderForm(true)
                }
            };

            var options = new Dictionary<string, object>
            {
                {"pagerUrl", Url.Action("Pager")},
                {"getRowsUrl", Url.Action("GetRows")},
                {"enableDisableUrl", Url.Action("EnableDisable")},
                {"exportExcelUrl", Url.Action("ExportExcel")},
                {"updateUrl", Url.Action("Update")},
                {"deleteUrl", Url.Action("Delete")},
                {"editComponents", RequireJsHtmlHelpers.ToJsonDictionary<EditComponents>()},
                {"countUrl", Url.Action("Count")}
            };

            RequireJsOptions.Add("index", options);

            return View(model);
        }
コード例 #11
0
        public ActionResult ExportExcel(BsGridRepositorySettings<ContributorSearchModel> settings, List<BsGridRowData<int>> items)
        {
            var rows = _gridRepository.GetItems(settings, items.Select(x => x.Id).ToList());

            try
            {
                var builder = new BsGridExcelBuilder<ContributorRowModel>();

                var lightThemeSheet = builder.AddSheet<ContributorRowModel>(rows, "Contributors Light");

                lightThemeSheet.ConfigureHeader(header =>
                        {
                            header.Order(settings.OrderColumns);
                            header.Style.Font.Bold = true;
                            header.Style.FillColor = BsGridExcelColor.Ivory;
                            header.For(x => x.StartDate)
                                  .Text("Contributor since")
                                  .Style(style => style.Font.Italic = true);
                        })
                       .ConfigureRows((row, style) =>
                        {
                            if (row.Role.DisplayValue == ProjectRole.TeamLeader)
                            {
                                style.Font.Bold = true;
                            }
                            if (row.Role.DisplayValue == ProjectRole.Tester)
                            {
                                style.Font.Italic = true;
                            }
                        })
                        .ConfigureColumns(columns =>
                        {
                            columns.For(x => x.Name)
                                   .Text(x=>x.Name.DisplayValue)
                                   .Order(1);
                            columns.For(x => x.Enabled)
                                   .Text(x => x.Enabled ? Resource.Yes : Resource.No)
                                   .Style((row, style) => style.FillColor = row.Enabled ? BsGridExcelColor.LightGreen : BsGridExcelColor.Red);
                            columns.For(x => x.Role)
                                   .Order(2)
                                   .Text(x => x.Role.DisplayValue.ToString())
                                   .Style(style => style.FillColor = BsGridExcelColor.Lavender);
                            columns.For(x => x.Contributions)
                                   .Text(x => x.Contributions.DisplayValue);
                            columns.For(x => x.StartDate)
                                   .Text(x => x.StartDate.ToMonthNameDate())
                                   .Style(style => style.Font.Italic = true);
                        });

                var darkThemeSheet = builder.AddSheet<ContributorRowModel>(rows, "Contributors Dark");

                darkThemeSheet.ConfigureHeader(header =>
                {
                    header.Order(settings.OrderColumns);
                    header.Style.Font.Bold = true;
                    header.Style.Font.Italic = true;
                    header.Style.FillColor = BsGridExcelColor.DarkTeal;
                    header.For(x => x.StartDate)
                          .Text("Contributor since");
                })
                .ConfigureColumns(columns =>
                {
                    columns.For(x => x.Name)
                            .Text(x => x.Name.DisplayValue)
                            .Style(style => style.FillColor = BsGridExcelColor.DarkYellow)
                            .Order(1);
                    columns.For(x => x.Enabled)
                            .Text(x => x.Enabled ? Resource.Yes : Resource.No)
                            .Style((row, style) => style.FillColor = row.Enabled ? BsGridExcelColor.DarkGreen : BsGridExcelColor.DarkRed);
                    columns.For(x => x.Role)
                            .Order(2)
                            .Text(x => x.Role.DisplayValue.ToString());
                    columns.For(x => x.Contributions)
                            .Text(x => x.Contributions.DisplayValue);
                    columns.For(x => x.StartDate)
                            .Text(x => x.StartDate.ToMonthNameDate())
                            .Style(style => style.Font.Italic = true);
                });

                return new BsExcelResult<ContributorRowModel>("BForms Contributors.xlsx", builder);
            }
            catch (Exception ex)
            {
                var controllerName = (string)Request.RequestContext.RouteData.Values["controller"];
                var actionName = (string)Request.RequestContext.RouteData.Values["action"];

                return View("Error", new HandleErrorInfo(ex, controllerName, actionName));
            }
        }
コード例 #12
0
        public ActionResult Index(int?stateId)
        {
            BsGridRepositorySettings <ContributorSearchModel> bsGridSettings = null;

            //HttpContext.Items["RequestTheme"] = BsTheme.Black;

            if (stateId.HasValue)
            {
                var state = _componentState.Get(stateId.Value);

                if (state != null)
                {
                    bsGridSettings = state.ToBsGridRepositorySettings <ContributorSearchModel>();
                }
            }


            bsGridSettings = new BsGridRepositorySettings <ContributorSearchModel>()
            {
                PageSize = 5,
                Page     = 1,
                //GoTo = BsDirectionType.First
            };

            bsGridSettings.Search = _gridRepository.GetSearchForm(bsGridSettings.Search);

            bsGridSettings.OrderableColumns = new List <BsColumnOrder> {
                new BsColumnOrder
                {
                    Name = "Name",
                    Type = BsOrderType.Descending
                }
            };

            var gridModel = _gridRepository.ToBsGridViewModel(bsGridSettings, x => x.Id);

            var model = new ContributorsViewModel
            {
                Grid    = gridModel,
                Toolbar = new BsToolbarModel <ContributorSearchModel, ContributorNewModel, List <ContributorOrderModel> >
                {
                    Search = bsGridSettings.Search,
                    New    = _gridRepository.GetNewForm(),
                    Order  = _gridRepository.GetOrderForm(true)
                }
            };

            var options = new Dictionary <string, object>
            {
                { "pagerUrl", Url.Action("Pager") },
                { "getRowsUrl", Url.Action("GetRows") },
                { "enableDisableUrl", Url.Action("EnableDisable") },
                { "exportExcelUrl", Url.Action("ExportExcel") },
                { "updateUrl", Url.Action("Update") },
                { "deleteUrl", Url.Action("Delete") },
                { "editComponents", RequireJsHtmlHelpers.ToJsonDictionary <EditComponents>() },
                { "countUrl", Url.Action("Count") }
            };

            RequireJsOptions.Add("index", options);

            return(View(model));
        }