Exemple #1
0
        public string RenderMoveToGroups()
        {
            if (!this.Builder.isReadonly && this.Builder.GroupConfigurator.Groups.Any())
            {
                var button = new TagBuilder("button");

                var glyph = GetGlyphiconTag(Glyphicon.ShareAlt);

                if (this.Builder.GroupConfigurator.Groups.Count > 1)
                {
                    var divContainer = new TagBuilder("div");
                    divContainer.AddCssClass("btn-white btn pull-right bs-bulkGroupMove");

                    var dropdownA = new TagBuilder("a");

                    dropdownA.MergeAttribute("data-toggle", "dropdown");
                    dropdownA.MergeAttribute("href", "#");
                    dropdownA.InnerHtml += BsResourceManager.Resource("GroupEditorMoveToGroups");
                    dropdownA.InnerHtml += glyph;

                    var dropdownUl = new TagBuilder("ul");
                    dropdownUl.AddCssClass("dropdown-menu");
                    dropdownUl.MergeAttribute("style", "top:auto");

                    foreach (var group in this.Builder.GroupConfigurator.Groups)
                    {
                        var li = new TagBuilder("li");

                        var a = new TagBuilder("a");
                        a.MergeAttribute("href", "#");
                        a.MergeAttribute("class", "bs-moveToGroupBtn");
                        a.MergeAttribute("data-groupid", MvcHelpers.Serialize(group.Value.Uid));
                        a.InnerHtml += group.Value.Name;

                        li.InnerHtml         += a;
                        dropdownUl.InnerHtml += li;
                    }

                    divContainer.InnerHtml += dropdownA;
                    divContainer.InnerHtml += dropdownUl;

                    return(divContainer.ToString());
                }
                else
                {
                    button.AddCssClass("btn-white btn pull-right bs-bulkGroupMove");
                    button.InnerHtml += BsResourceManager.Resource("GroupEditorMoveToGroups");
                    button.InnerHtml += glyph;
                    button.AddCssClass("bs-moveToGroupBtn");
                    button.MergeAttribute("data-groupid", MvcHelpers.Serialize(this.Builder.GroupConfigurator.Groups.First().Value.Uid));

                    return(button.ToString());
                }
            }
            return(string.Empty);
        }
Exemple #2
0
        public string RenderPages()
        {
            if (this.Builder.pager != null)
            {
                var pagesBuilder = new TagBuilder("div");
                pagesBuilder.AddCssClass("col-md-9 col-lg-9 bs-pages");

                if (this.Builder.settings.NoOffset || this.Builder.pager.GoTo != null)
                {
                    pagesBuilder.AddCssClass("col-sm-8 col-xs-8");
                }

                #region pagination

                pagesBuilder.InnerHtml += RenderPagination();

                #endregion

                #region text

                if (this.Builder.settings.HasPagesText && !(this.Builder.settings.NoOffset || this.Builder.pager.GoTo != null))
                {
                    var textBuilder = new TagBuilder("div");
                    textBuilder.MergeAttribute("class", "results_number");

                    var firstIdx = (this.Builder.pager.CurrentPage - 1) * this.Builder.pager.PageSize + 1;
                    var lastIdx  = this.Builder.pager.CurrentPage == this.Builder.pager.TotalPages
                                      ? this.Builder.pager.TotalRecords
                                      : this.Builder.pager.CurrentPage * this.Builder.pager.PageSize;

                    var lastBuilder = new TagBuilder("span");
                    lastBuilder.AddCssClass("bs-topResultsMargin");
                    lastBuilder.InnerHtml += lastIdx;

                    var totalCountBuilder = new TagBuilder("span");
                    totalCountBuilder.InnerHtml += this.Builder.pager.TotalRecords;

                    //TODO:
                    var template = "{0}-{1} " + BsResourceManager.Resource("BF_Of") + " {2} " + BsResourceManager.Resource("BF_Items");
                    var result   = string.Format(template, firstIdx, lastBuilder, totalCountBuilder.ToString());

                    textBuilder.InnerHtml += result;

                    pagesBuilder.InnerHtml += textBuilder.ToString();
                }

                #endregion

                return(pagesBuilder.ToString());
            }
            else
            {
                return(string.Empty);
            }
        }
Exemple #3
0
        public string RenderGroupsFooter()
        {
            var cssClass = "col-lg-6 col-md-6 col-sm-6";

            var counter = new TagBuilder("div");

            counter.AddCssClass("row counter");
            var total = new TagBuilder("div");

            total.AddCssClass(cssClass);
            var span = new TagBuilder("span");

            span.AddCssClass("bs-counter");
            total.InnerHtml   += "Total: " + span;
            counter.InnerHtml += total;

            if (!this.Builder.isReadonly)
            {
                var reset = new TagBuilder("div");
                reset.AddCssClass(cssClass);

                var anchor = new TagBuilder("a");
                anchor.MergeAttribute("href", "#");
                anchor.AddCssClass("btn btn-white pull-right bs-resetGroupEditor");
                anchor.InnerHtml += GetGlyphicon(Models.Glyphicon.Refresh);
                anchor.InnerHtml += " " + BsResourceManager.Resource("Reset");

                if (!string.IsNullOrEmpty(this.Builder.saveUrl))
                {
                    var saveAnchor = new TagBuilder("a");
                    saveAnchor.MergeAttribute("href", this.Builder.saveUrl);
                    saveAnchor.MergeAttribute("style", "margin-left:10px");
                    saveAnchor.AddCssClass("btn btn-white pull-right bs-saveGroupEditor");
                    saveAnchor.InnerHtml += GetGlyphicon(Models.Glyphicon.Save);
                    saveAnchor.InnerHtml += " " + BsResourceManager.Resource("Save");

                    reset.InnerHtml += saveAnchor;
                }

                reset.InnerHtml   += anchor;
                counter.InnerHtml += reset;
            }

            return(counter.ToString());
        }
Exemple #4
0
        public BsGridHtmlBuilder <TModel, TRow> GridResetButton()
        {
            var resetButton = new TagBuilder("div");

            resetButton.MergeAttribute("class", "btn btn-info bs-resetGrid reset-grid");
            resetButton.MergeAttribute("style", "display:none");
            resetButton.MergeAttribute("title", BsResourceManager.Resource("BF_Reset"));

            var resetButtonSpan = new TagBuilder("span");

            resetButtonSpan.MergeAttribute("class", "glyphicon glyphicon-repeat");

            resetButton.InnerHtml += resetButtonSpan.ToString();

            this.resetButtonHtml = resetButton.ToString();

            return(this);
        }
Exemple #5
0
        protected virtual string RenderIndex()
        {
            var gridBuilder = new TagBuilder("div");
            var hideDetails = this.Builder.HideDetails();

            gridBuilder.MergeAttribute("id", this.Builder.FullName.Split('.').Last().ToLower());
            gridBuilder.MergeClassAttribute("grid_view", this.Builder.htmlAttributes);

            if (this.Builder.hasDetails)
            {
                gridBuilder.AddCssClass("is_expandable");
            }

            if (this.Builder.hasBulkActions)
            {
                gridBuilder.AddCssClass("is_checkable");
            }

            gridBuilder.MergeAttribute("data-settings",
                                       HtmlHelper.AnonymousObjectToHtmlAttributes(this.Builder.Model.BaseSettings).ToJsonString());

            gridBuilder.MergeAttributes(this.Builder.htmlAttributes, true);

            gridBuilder.AddCssClass(this.Builder.Theme.GetDescription());

            #region header builder
            if (this.Builder.renderTitle)
            {
                var headerBuilder = new TagBuilder("h2");

                var badgeBuilder = new TagBuilder("span");
                badgeBuilder.AddCssClass("badge");
                badgeBuilder.InnerHtml  += this.Builder.Model.Pager != null ? this.Builder.Model.Pager.TotalRecords : 0;
                headerBuilder.InnerHtml += badgeBuilder.ToString();

                headerBuilder.InnerHtml += this.Builder.Metadata.DisplayName;

                var filterIconBuilder = new TagBuilder("span");
                filterIconBuilder.AddCssClass("glyphicon glyphicon-filter icon_filter bs-filter");
                filterIconBuilder.MergeAttribute("title", "");
                headerBuilder.InnerHtml += filterIconBuilder.ToString();

                #region BulkActions

                if (this.Builder.hasBulkActions)
                {
                    var bulkActionsWrapper = new TagBuilder("div");
                    bulkActionsWrapper.MergeAttribute("class", "grid_bulk_controls bs-group_actions");

                    if (this.Builder.Model.Items == null || !this.Builder.Model.Items.Any())
                    {
                        bulkActionsWrapper.MergeAttribute("style", "display:none");
                    }

                    var orderedBulkActions = this.Builder.bulkActions.OrderBy(x => x.BulkActionOrder);
                    foreach (var bulkAction in orderedBulkActions)
                    {
                        bulkActionsWrapper.InnerHtml += bulkAction.ToString();
                    }


                    var bulkActionsSelectWrapper = new TagBuilder("div");
                    bulkActionsSelectWrapper.MergeAttribute("class", "btn-group check_all");

                    var bulkActionsSelectToggle = new TagBuilder("button");
                    bulkActionsSelectToggle.MergeAttribute("type", "button");
                    bulkActionsSelectToggle.MergeAttribute("class", "btn btn-white dropdown-toggle bs-selectorsContainer");
                    bulkActionsSelectToggle.MergeAttribute("data-toggle", "dropdown");
                    bulkActionsSelectToggle.MergeAttribute("title", BsResourceManager.Resource("Select"));

                    var bulkActionsSelectToggleCaret = new TagBuilder("span");
                    bulkActionsSelectToggleCaret.MergeAttribute("class", "caret");
                    bulkActionsSelectToggle.InnerHtml += bulkActionsSelectToggleCaret.ToString();

                    bulkActionsSelectWrapper.InnerHtml += bulkActionsSelectToggle.ToString();

                    var bulkActionSelectList = new TagBuilder("ul");
                    bulkActionSelectList.MergeAttribute("class", "dropdown-menu pull-right");
                    bulkActionSelectList.MergeAttribute("role", "menu");

                    var orderedBulkSelectors = this.Builder.bulkSelectors.OrderBy(x => x.Order);
                    foreach (var bulkSelector in orderedBulkSelectors)
                    {
                        bulkActionSelectList.InnerHtml += bulkSelector.ToString();
                    }

                    bulkActionsSelectWrapper.InnerHtml += bulkActionSelectList.ToString();

                    var bulkActionsSelectCheckbox = new TagBuilder("input");
                    bulkActionsSelectCheckbox.MergeAttribute("type", "checkbox");

                    bulkActionsSelectWrapper.InnerHtml += bulkActionsSelectCheckbox.ToString();

                    bulkActionsWrapper.InnerHtml += bulkActionsSelectWrapper.ToString();

                    headerBuilder.InnerHtml += bulkActionsWrapper.ToString();
                }

                if (!String.IsNullOrEmpty(this.Builder.resetButtonHtml))
                {
                    headerBuilder.InnerHtml += this.Builder.resetButtonHtml;
                }
                #endregion

                gridBuilder.InnerHtml += headerBuilder.ToString();
            }
            #endregion

            var wrapper = new TagBuilder("div");
            wrapper.AddCssClass("grid_rows");

            #region columns builder
            if (this.Builder.showColumnsHeader)
            {
                var columnsBuilder = new TagBuilder("div");

                columnsBuilder.AddCssClass("row grid_row title");

                this.Builder.OrderColumns();

                if (this.Builder.hasDetails)
                {
                    var detailsBuilder = new TagBuilder("a");
                    detailsBuilder.MergeAttribute("class", "expand bs-toggleExpand");

                    if (this.Builder.Model.BaseSettings.DetailsAll || this.Builder.Model.BaseSettings.DetailsStartIndex == 0 && this.Builder.Model.BaseSettings.DetailsCount >= this.Builder.Model.Items.Count())
                    {
                        detailsBuilder.AddCssClass("open");
                    }

                    if (hideDetails)
                    {
                        detailsBuilder.MergeAttribute("style", "display:none");
                    }

                    detailsBuilder.MergeAttribute("href", "#");
                    detailsBuilder.InnerHtml += "&nbsp;";

                    columnsBuilder.InnerHtml += detailsBuilder.ToString();
                }

                var headerBuilder = new TagBuilder("header");

                headerBuilder.AddCssClass("bs-header");

                if (this.Builder.Model.Items == null || !this.Builder.Model.Items.Any())
                {
                    columnsBuilder.MergeAttribute("style", "display: none;");
                }

                for (var i = 0; i < this.Builder.columns.Count; i++)
                {
                    var column = this.Builder.columns[i];

                    if (this.Builder.Model.BaseSettings.OrderableColumns != null)
                    {
                        var orderModel = this.Builder.Model.BaseSettings.OrderableColumns.Find(x => x.Name == column.PrivateName);
                        if (orderModel != null)
                        {
                            column.OrderType = orderModel.Type;
                        }
                    }

                    headerBuilder.InnerHtml += column.ToString();
                }

                columnsBuilder.InnerHtml += headerBuilder.ToString();

                wrapper.InnerHtml += columnsBuilder.ToString();
            }
            #endregion

            wrapper.InnerHtml += this.RenderRows();

            gridBuilder.InnerHtml += wrapper.ToString();

            #region pager builder
            if (this.Builder.renderPager)
            {
                var pagerWrapper = this.Builder.pagerBuilder.ToString();

                gridBuilder.InnerHtml += pagerWrapper;
            }

            #endregion

            return(gridBuilder.ToString());
        }
Exemple #6
0
        protected virtual string RenderRows()
        {
            var result = string.Empty;

            var rowsBuilder = new TagBuilder("div");

            rowsBuilder.MergeAttribute("class", "grid_rows_wrapper");

            if (this.Builder.Model.Items.Any())
            {
                PropertyInfo hasDetailsProp = null;
                var          rowType        = typeof(TRow);

                var isSubClassOfBaseRowModel = rowType.InheritsOrImplements(typeof(BsGridRowModel <>));
                if (isSubClassOfBaseRowModel)
                {
                    hasDetailsProp = rowType.GetProperty("HasDetails", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);
                }

                for (var rowIndex = 0; rowIndex < this.Builder.Model.Items.Count(); rowIndex++)
                {
                    var row = this.Builder.Model.Items.ElementAt(rowIndex);

                    var rowBuilder = new TagBuilder("div");
                    rowBuilder.MergeAttribute("class", "row grid_row");

                    rowBuilder.MergeAttribute("data-objid", row.GetUniqueID().ToString());

                    if (this.Builder.Model.BaseSettings.DetailsAll || this.Builder.Model.BaseSettings.HasDetails(rowIndex))
                    {
                        rowBuilder.AddCssClass("open");
                        rowBuilder.MergeAttribute("data-hasdetails", true.ToString());
                        rowBuilder.MergeAttribute("data-expandedonload", true.ToString());
                    }

                    var rowHasDetails = this.Builder.hasDetails && (this.Builder.rowDetails == null || this.Builder.rowDetails(row));

                    if (this.Builder.rowData != null)
                    {
                        rowBuilder.MergeAttributes(this.Builder.rowData(row));
                    }

                    if (this.Builder.rowHighlighter != null)
                    {
                        var rowHighlighterBuilder = new TagBuilder("span");
                        rowHighlighterBuilder.MergeAttribute("class", "grid_row_color");
                        rowHighlighterBuilder.MergeAttribute("style", "background-color: " + this.Builder.rowHighlighter(row) + ";");

                        rowBuilder.InnerHtml += rowHighlighterBuilder.ToString();
                    }

                    if (rowHasDetails)
                    {
                        var detailsBUilder = new TagBuilder("a");
                        detailsBUilder.MergeAttribute("class", "expand bs-expand");
                        detailsBUilder.MergeAttribute("href", "#");
                        detailsBUilder.InnerHtml += "&nbsp;";

                        rowBuilder.InnerHtml += detailsBUilder.ToString();
                    }

                    var headerBuilder = new TagBuilder("header");

                    this.Builder.OrderColumns();

                    for (var i = 0; i < this.Builder.columns.Count; i++)
                    {
                        var column = this.Builder.columns.ElementAt(i);

                        var cellBuilder = new TagBuilder("div");

                        if (column.htmlAttributes != null)
                        {
                            cellBuilder.MergeAttributes(column.htmlAttributes);
                        }

                        cellBuilder.AddCssClass(column.GetWidthClasses());

                        var text = string.Empty;

                        if (column.CellText == null)
                        {
                            if (column.Property != null)
                            {
                                var value = column.Property.GetValue(row);
                                text = value != null?value.ToString() : string.Empty;
                            }
                        }
                        else
                        {
                            var cellText = column.CellText(row);

                            text = cellText != null?cellText.ToString() : string.Empty;
                        }
                        var title = string.Empty;
                        if (column.CellTitle != null)
                        {
                            title = (column.CellTitle(row) ?? string.Empty).ToString();
                            cellBuilder.MergeAttribute("title", title);
                        }
                        if (column.IsEditable)
                        {
                            var editBuilder = new TagBuilder("span");
                            editBuilder.MergeAttribute("class", "edit_col");
                            editBuilder.InnerHtml = text;

                            cellBuilder.InnerHtml += editBuilder.ToString();
                        }
                        else
                        {
                            cellBuilder.InnerHtml += text;
                        }

                        headerBuilder.InnerHtml += cellBuilder.ToString();
                    }

                    rowBuilder.InnerHtml += headerBuilder.ToString();

                    if (this.Builder.hasBulkActions)
                    {
                        var checkBuilder = new TagBuilder("input");
                        checkBuilder.MergeAttribute("type", "checkbox");
                        checkBuilder.MergeAttribute("class", "row_check bs-row_check");

                        if (this.Builder.rowCheckbox != null && !this.Builder.rowCheckbox(row))
                        {
                            checkBuilder.MergeAttribute("disabled", "disabled");
                        }

                        rowBuilder.InnerHtml += checkBuilder.ToString(TagRenderMode.SelfClosing);
                    }

                    if (rowHasDetails && ((hasDetailsProp != null && (bool)hasDetailsProp.GetValue(row)) || this.Builder.Model.BaseSettings.HasDetails(rowIndex)))
                    {
                        rowBuilder.InnerHtml += this.Builder.rowDetailsTemplate(row);
                    }

                    rowsBuilder.InnerHtml += rowBuilder.ToString();
                }
                result += rowsBuilder.ToString();
            }
            else
            {
                rowsBuilder.AddCssClass("no_results");

                var rowBuilder = new TagBuilder("div");
                rowBuilder.MergeAttribute("class", "row grid_row");
                rowBuilder.AddCssClass("bs-noResultsRow");

                var divBuilder = new TagBuilder("div");
                divBuilder.MergeAttribute("class", "col-sm-12 col-lg-12");

                var infoBuilder = new TagBuilder("div");
                infoBuilder.MergeAttribute("class", "alert alert-info");


                var template   = string.Empty;
                var stateClass = string.Empty;

                if (this.Builder.isAjaxRequest)
                {
                    template   = this.Builder.noResultsTemplate;
                    stateClass = "noresults-state";
                }
                else
                {
                    template   = this.Builder.noRecordsTemplate;
                    stateClass = "blank-state";
                }

                infoBuilder.AddCssClass(stateClass);

                infoBuilder.InnerHtml += !string.IsNullOrEmpty(template) ?
                                         this.Builder.viewContext.Controller.BsRenderPartialView(template, null) :
                                         BsResourceManager.Resource("NoResults");

                if (this.Builder.allowAddIfEmpty)
                {
                    var addBtnBuilder = new TagBuilder("button");
                    addBtnBuilder.MergeAttribute("type", "button");
                    addBtnBuilder.MergeAttribute("class", "btn btn-primary bs-triggerAdd");
                    //TODO:
                    addBtnBuilder.InnerHtml += "Add";

                    infoBuilder.InnerHtml += addBtnBuilder.ToString();
                }

                divBuilder.InnerHtml += infoBuilder.ToString();
                rowBuilder.InnerHtml += divBuilder.ToString();

                rowsBuilder.InnerHtml += rowBuilder.ToString();

                result += rowsBuilder.ToString();
            }

            return(result);
        }
Exemple #7
0
        public string RenderPages()
        {
            if (this.Builder.pager != null)
            {
                var pagesBuilder = new TagBuilder("div");
                pagesBuilder.AddCssClass("col-md-9 col-lg-9 bs-pages");

                #region pagination

                var paginationBuilder = new TagBuilder("ul");
                paginationBuilder.AddCssClass("pagination pagination-md");

                if (this.Builder.pager.TotalPages <= 1)
                {
                    paginationBuilder.MergeAttribute("style", "display:none");
                }

                #region first page button

                if (this.Builder.settings.ShowFirstLastButtons)
                {
                    var firstPageBuilder = new TagBuilder("li");
                    if (this.Builder.pager.CurrentPage == 1)
                    {
                        firstPageBuilder.MergeAttribute("class", "disabled");
                    }
                    var anchorBuilder = new TagBuilder("a");
                    anchorBuilder.MergeAttribute("href", "#");
                    anchorBuilder.MergeAttribute("data-page", "1");
                    anchorBuilder.InnerHtml += "&laquo;";

                    firstPageBuilder.InnerHtml += anchorBuilder.ToString();

                    paginationBuilder.InnerHtml += firstPageBuilder.ToString();
                }

                #endregion

                #region prev page button

                if (this.Builder.settings.ShowPrevNextButtons)
                {
                    var prevPageBuilder = new TagBuilder("li");
                    if (this.Builder.pager.CurrentPage == 1)
                    {
                        prevPageBuilder.MergeAttribute("class", "disabled");
                    }
                    var anchorBuilder = new TagBuilder("a");
                    anchorBuilder.MergeAttribute("href", "#");
                    anchorBuilder.MergeAttribute("data-page", (this.Builder.pager.CurrentPage - 1).ToString());
                    anchorBuilder.InnerHtml += "&lsaquo;";

                    prevPageBuilder.InnerHtml += anchorBuilder.ToString();

                    paginationBuilder.InnerHtml += prevPageBuilder.ToString();
                }

                #endregion

                #region pages buttons

                var startPage = this.Builder.pager.GetStartPage(this.Builder.settings.Size);
                int nr        = this.Builder.settings.Size > this.Builder.pager.TotalPages ? this.Builder.pager.TotalPages % this.Builder.settings.Size : this.Builder.settings.Size;
                for (int i = 0; i < nr; i++)
                {
                    var page           = i + startPage;
                    var pageBtnBuilder = new TagBuilder("li");
                    if (this.Builder.pager.CurrentPage == page)
                    {
                        pageBtnBuilder.MergeAttribute("class", "active");
                    }
                    var anchorBuilder = new TagBuilder("a");
                    anchorBuilder.MergeAttribute("href", "#");
                    anchorBuilder.MergeAttribute("data-page", page.ToString());
                    anchorBuilder.InnerHtml += page;

                    pageBtnBuilder.InnerHtml += anchorBuilder.ToString();

                    paginationBuilder.InnerHtml += pageBtnBuilder.ToString();
                }

                #endregion

                #region next page button

                if (this.Builder.settings.ShowPrevNextButtons)
                {
                    var nextPageBuilder = new TagBuilder("li");
                    if (this.Builder.pager.CurrentPage == this.Builder.pager.TotalPages)
                    {
                        nextPageBuilder.MergeAttribute("class", "disabled");
                    }
                    var anchorBuilder = new TagBuilder("a");
                    anchorBuilder.MergeAttribute("href", "#");
                    anchorBuilder.MergeAttribute("data-page", (this.Builder.pager.CurrentPage + 1).ToString());
                    anchorBuilder.InnerHtml += "&rsaquo;";

                    nextPageBuilder.InnerHtml += anchorBuilder.ToString();

                    paginationBuilder.InnerHtml += nextPageBuilder.ToString();
                }

                #endregion

                #region last page button

                if (this.Builder.settings.ShowFirstLastButtons)
                {
                    var lastPageBuilder = new TagBuilder("li");
                    if (this.Builder.pager.CurrentPage == this.Builder.pager.TotalPages)
                    {
                        lastPageBuilder.MergeAttribute("class", "disabled");
                    }
                    var anchorBuilder = new TagBuilder("a");
                    anchorBuilder.MergeAttribute("href", "#");
                    anchorBuilder.MergeAttribute("data-page", this.Builder.pager.TotalPages.ToString());
                    anchorBuilder.InnerHtml += "&raquo;";

                    lastPageBuilder.InnerHtml += anchorBuilder.ToString();

                    paginationBuilder.InnerHtml += lastPageBuilder.ToString();
                }

                #endregion

                pagesBuilder.InnerHtml += paginationBuilder.ToString();

                #endregion

                #region text

                if (this.Builder.settings.HasPagesText)
                {
                    var textBuilder = new TagBuilder("div");
                    textBuilder.MergeAttribute("class", "results_number");

                    var firstIdx = (this.Builder.pager.CurrentPage - 1) * this.Builder.pager.PageSize + 1;
                    var lastIdx  = this.Builder.pager.CurrentPage == this.Builder.pager.TotalPages
                                      ? this.Builder.pager.TotalRecords
                                      : this.Builder.pager.CurrentPage * this.Builder.pager.PageSize;

                    var lastBuilder = new TagBuilder("span");
                    lastBuilder.AddCssClass("bs-topResultsMargin");
                    lastBuilder.InnerHtml += lastIdx;

                    var totalCountBuilder = new TagBuilder("span");
                    totalCountBuilder.InnerHtml += this.Builder.pager.TotalRecords;

                    //TODO:
                    var template = "{0}-{1} " + BsResourceManager.Resource("Of") + " {2} " + BsResourceManager.Resource("Items");
                    var result   = string.Format(template, firstIdx, lastBuilder, totalCountBuilder.ToString()); //"Rezultate " + firstIdx + "–" + lastIdx + " din";

                    textBuilder.InnerHtml += result;

                    pagesBuilder.InnerHtml += textBuilder.ToString();
                }

                #endregion

                return(pagesBuilder.ToString());
            }
            else
            {
                return(string.Empty);
            }
        }
Exemple #8
0
        public override string Render()
        {
            var pagerWrapper = new TagBuilder("div");

            if (this.Builder.pager == null || this.Builder.pager.TotalRecords == 0)
            {
                pagerWrapper.MergeAttribute("style", "display: none;");
            }

            if (this.Builder.settings.StrippedDown)
            {
                pagerWrapper.InnerHtml += this.RenderPagination();
            }
            else
            {
                pagerWrapper.AddCssClass("row bs-pager");
                pagerWrapper.AddCssClass(this.Builder.Theme.GetDescription());

                var bsPagerModel = this.Builder.pager;

                if (bsPagerModel != null && (this.Builder.settings.NoOffset || bsPagerModel.GoTo != null))
                {
                    pagerWrapper.MergeAttribute("data-nooffset", "true");
                }

                pagerWrapper.InnerHtml += this.RenderPages();

                if (this.Builder.settings.HasPageSizeSelector)
                {
                    int pageSize = this.Builder.pager != null ? this.Builder.pager.PageSize : this.Builder.baseSettings.PageSize;
                    if (!this.Builder.settings.PageSizeValues.Contains(pageSize))
                    {
                        throw new ArgumentOutOfRangeException("The page size you selected is not in the list");
                    }

                    var selectWrapperBuilder = new TagBuilder("div");

                    selectWrapperBuilder.AddCssClass("col-md-3 col-lg-3 results_per_page");

                    if (bsPagerModel != null && (this.Builder.settings.NoOffset || bsPagerModel.GoTo != null))
                    {
                        selectWrapperBuilder.AddCssClass("col-sm-4 col-xs-4");
                    }

                    if (this.Builder.hidePageSize)
                    {
                        selectWrapperBuilder.AddCssClass("hidden-md hidden-sm hidden-xs");
                    }

                    var divBuilder = new TagBuilder("div");
                    divBuilder.AddCssClass("pull-right");

                    #region right side
                    var dropdownContainerBuilder = new TagBuilder("div");
                    dropdownContainerBuilder.AddCssClass("dropdown dropup");

                    var dropdownTriggerBuilder = new TagBuilder("a");
                    dropdownTriggerBuilder.MergeAttribute("data-toggle", "dropdown");
                    dropdownTriggerBuilder.MergeAttribute("href", "#");



                    var dropdownListBuilder = new TagBuilder("ul");
                    dropdownListBuilder.MergeAttribute("class", "dropdown-menu");
                    dropdownListBuilder.MergeAttribute("role", "menu");

                    foreach (var item in this.Builder.settings.PageSizeValues)
                    {
                        var dropdownLiBuilder       = new TagBuilder("li");
                        var dropdownLiAnchorBuilder = new TagBuilder("a");

                        if (pageSize == item)
                        {
                            var dropdownCountBuilder = new TagBuilder("span");
                            dropdownCountBuilder.AddCssClass("btn btn-default bs-perPageDisplay");
                            var caret = new TagBuilder("span");
                            caret.AddCssClass("caret");
                            dropdownCountBuilder.InnerHtml   += item.ToString() + caret.ToString();
                            dropdownTriggerBuilder.InnerHtml += dropdownCountBuilder.ToString();

                            dropdownLiAnchorBuilder.AddCssClass("selected");
                        }

                        dropdownLiAnchorBuilder.InnerHtml += item;
                        dropdownLiAnchorBuilder.MergeAttribute("data-value", item.ToString());
                        dropdownLiAnchorBuilder.AddCssClass("bs-perPage");
                        dropdownLiAnchorBuilder.Attributes.Add("href", "#");

                        dropdownLiBuilder.InnerHtml   += dropdownLiAnchorBuilder.ToString();
                        dropdownListBuilder.InnerHtml += dropdownLiBuilder.ToString();
                    }

                    dropdownContainerBuilder.InnerHtml += dropdownTriggerBuilder.ToString();
                    dropdownContainerBuilder.InnerHtml += dropdownListBuilder.ToString();

                    divBuilder.InnerHtml += dropdownContainerBuilder.ToString();

                    var goTopBuilder = new TagBuilder("button");
                    goTopBuilder.AddCssClass("btn btn-default btn-go_up bs-goTop");
                    goTopBuilder.MergeAttribute("title", BsResourceManager.Resource("BF_GoTop"));
                    var goTopSpanBuilder = new TagBuilder("span");
                    goTopSpanBuilder.AddCssClass("glyphicon glyphicon-arrow-up");

                    goTopBuilder.InnerHtml += goTopSpanBuilder.ToString();

                    divBuilder.InnerHtml += goTopBuilder.ToString();
                    #endregion

                    selectWrapperBuilder.InnerHtml += divBuilder.ToString();

                    pagerWrapper.InnerHtml += selectWrapperBuilder.ToString();
                }
            }

            return(pagerWrapper.ToString());
        }
Exemple #9
0
        public override string Render()
        {
            var buttons = this.Builder.parts.Where(x => x.button != null);

            var forms = this.Builder.parts.Where(x => x.form != null);

            var result = string.Empty;

            var container = new TagBuilder("div");

            container.AddCssClass("search");

            if (this.Builder.quickSearch || buttons.Any())
            {
                container.AddCssClass("inline");

                var group = new TagBuilder("div");

                group.AddCssClass("input-group");

                #region Inline Search
                if (this.Builder.quickSearch)
                {
                    var glyph = GetGlyphicon(Glyphicon.Search, true);

                    var input = new TagBuilder("input");

                    input.MergeAttribute("type", "text");

                    input.MergeAttribute("placeholder", BsResourceManager.Resource("Search"));

                    input.AddCssClass("form-control");

                    input.AddCssClass("bs-tabInlineSearch");

                    group.InnerHtml += glyph;

                    group.InnerHtml += input;
                }
                #endregion

                #region Buttons
                if (buttons.Any())
                {
                    var wrapper = new TagBuilder("div");

                    wrapper.AddCssClass("input-group-btn");

                    foreach (var btn in buttons.Select(x => x.button))
                    {
                        wrapper.InnerHtml += btn.ToString();
                    }

                    group.InnerHtml += wrapper;
                }
                #endregion

                container.InnerHtml += group;
            }

            forms.ToList().ForEach(x =>
            {
                if (string.IsNullOrEmpty(x.form.template))
                {
                    x.form.template = x.template;
                }
            });

            foreach (var form in forms.Select(x => x.form))
            {
                container.InnerHtml += form.ToString();
            }

            result += container;

            return(result);
        }
Exemple #10
0
        public override string Render()
        {
            var nav = new TagBuilder("nav");

            nav.AddCssClass("navbar navbar-default");
            nav.MergeAttribute("role", "navigation");

            var navHeader = new TagBuilder("div");

            navHeader.AddCssClass("navbar-header");

            var navToggle = new TagBuilder("button");

            navToggle.AddCssClass("navbar-toggle");
            navToggle.MergeAttributes(new Dictionary <string, object>
            {
                { "type", "button" },
                { "data-toggle", "collapse" },
                { "data-target", ".navbar-ex1-collapse" },
            });

            var span = new TagBuilder("span");

            span.AddCssClass("sr-only");

            navToggle.InnerHtml += span;

            span = new TagBuilder("span");
            span.AddCssClass("icon-bar");

            navToggle.InnerHtml += span;

            navToggle.InnerHtml += span;

            navToggle.InnerHtml += span;

            navHeader.InnerHtml += navToggle;

            nav.InnerHtml += navHeader.ToString();

            var navbar = new TagBuilder("div");

            navbar.AddCssClass("collapse navbar-collapse navbar-ex1-collapse group_editor-navbar");

            var list = new TagBuilder("ul");

            list.AddCssClass("nav navbar-nav bs-navbar");

            foreach (var tab in this.Builder.TabsProperties)
            {
                if (!string.IsNullOrEmpty(tab.Name))
                {
                    var item = new TagBuilder("li");

                    if (tab.Selected)
                    {
                        item.AddCssClass("active");
                    }

                    var anchor = new TagBuilder("a");

                    anchor.MergeAttribute("href", "#");
                    anchor.MergeAttribute("data-toggle", "tab");

                    if (tab.Id != null)
                    {
                        anchor.MergeAttribute("data-tabid", MvcHelpers.Serialize(tab.Id));
                    }
                    else
                    {
                        throw new Exception("Tab property Id is not set for tab " + tab.Name);
                    }

                    var resourceTabName = BsResourceManager.Resource(tab.Name);
                    anchor.InnerHtml += string.IsNullOrEmpty(resourceTabName) ? tab.Name : resourceTabName;

                    item.InnerHtml += anchor;

                    list.InnerHtml += item;
                }
                else
                {
                    throw new Exception("Tab property Name is not set in BsGroupEditorAttribute");
                }
            }

            navbar.InnerHtml += list;

            nav.InnerHtml += navbar.ToString();

            return(nav.ToString());
        }
Exemple #11
0
        protected virtual string RenderItems()
        {
            var result = string.Empty;

            if (!string.IsNullOrEmpty(this.Builder.template))
            {
                var list = new TagBuilder("ul");

                list.AddCssClass("group_profiles");
                list.AddCssClass("bs-tabItemsList");

                if (this.Builder.HasItems)
                {
                    foreach (var item in this.Builder.Model.GetItems <TRow>())
                    {
                        var listItem = new TagBuilder("li");

                        listItem.MergeAttribute("data-objid", MvcHelpers.Serialize(item.GetUniqueID()));

                        listItem.MergeAttribute("data-model", MvcHelpers.Serialize(item));

                        IDictionary <string, object> itemAttributes = null;

                        if (this.rowConfigurator.htmlExpression != null)
                        {
                            itemAttributes = this.rowConfigurator.htmlExpression.Compile().Invoke(item);
                        }

                        listItem.MergeAttributes(itemAttributes);

                        listItem.MergeClassAttribute("bs-tabItem", itemAttributes);

                        var listItemWrapper = new TagBuilder("div");

                        listItemWrapper.AddCssClass("media profile large");

                        if (this.rowConfigurator.avatarExpression != null)
                        {
                            var anchorLeft = new TagBuilder("a");

                            anchorLeft.MergeAttribute("href", "#");

                            anchorLeft.AddCssClass("pull-left");

                            var img = new TagBuilder("img");

                            img.AddCssClass("media-object");

                            string avatar = this.rowConfigurator.avatarExpression.Compile().Invoke(item);

                            img.MergeAttribute("src", avatar);

                            anchorLeft.InnerHtml += img;

                            listItemWrapper.InnerHtml += anchorLeft;
                        }

                        var anchorRight = new TagBuilder("a");

                        anchorRight.MergeAttribute("href", "#");

                        anchorRight.AddCssClass("btn btn-white select_profile");

                        var isSelected = IsSelected(item);

                        if (isSelected)
                        {
                            anchorRight.InnerHtml += GetGlyphicon(Glyphicon.Ok);

                            listItem.AddCssClass("selected");
                        }
                        else
                        {
                            anchorRight.AddCssClass("bs-addBtn");

                            anchorRight.InnerHtml += GetGlyphicon(Glyphicon.Plus);
                        }

                        if (this.Builder.IsReadonly)
                        {
                            anchorRight.AddCssClass("disabled");
                            listItem.AddCssClass("bs-notDraggable");
                            if (!isSelected)
                            {
                                anchorRight.MergeAttribute("style", "display: none;");
                            }
                        }

                        listItemWrapper.InnerHtml += anchorRight;

                        var templateWrapper = new TagBuilder("div");

                        templateWrapper.AddCssClass("media-body");

                        templateWrapper.InnerHtml += this.Builder.RenderModel <TRow>(item, string.Empty);

                        listItemWrapper.InnerHtml += templateWrapper;

                        listItem.InnerHtml += listItemWrapper;

                        list.InnerHtml += listItem;
                    }
                }
                else
                {
                    var listItem = new TagBuilder("li");
                    listItem.AddCssClass("bs-noResultsTabItem");

                    var infoBuilder = new TagBuilder("div");
                    infoBuilder.MergeAttribute("class", "alert alert-info");

                    infoBuilder.InnerHtml += !string.IsNullOrEmpty(this.Builder.noResultsTemplate) ?
                                             this.Builder.viewContext.Controller.BsRenderPartialView(this.Builder.noResultsTemplate, null) :
                                             BsResourceManager.Resource("NoResults");

                    listItem.InnerHtml += infoBuilder.ToString();

                    list.InnerHtml += listItem;
                }

                result += list;
            }
            else
            {
                throw new Exception("You must set the template for tab " + this.Builder.Uid.ToString());
            }

            return(result);
        }