Esempio n. 1
0
 private void AsEditRow(GridItem item, bool current)
 {
     if (current && creatorData.Mode == GridItemMode.Edit)
     {
         item.Type = GridItemType.EditRow;
     }
 }
Esempio n. 2
0
        public GridItem CreateItem(object dataItem)
        {
            var item = new GridItem
            {
                DataItem = dataItem,
                State = GridItemStates.Default,
                Type = GridItemType.DataRow
            };

            if (dataItem is IGroup)
            {
                AsGroupRow(item);
            }
            else
            {
                var current = comparer.KeysEqualTo(dataItem);
                
                AsEditRow(item, current);
                
                AsSelected(item, current);

                AsMaster(item);
            }

            return item;
        }
Esempio n. 3
0
 private void AsMaster(GridItem item)
 {
     if (creatorData.HasDetailView)
     {
         item.State |= GridItemStates.Master;
     }
 }
Esempio n. 4
0
 private void AsSelected(GridItem item, bool current)
 {
     if (current && creatorData.Mode == GridItemMode.Select)
     {
         item.State |= GridItemStates.Selected;
     }
 }
        protected virtual IGridRowBuilder CreateDataRowBuilder(GridRenderingData renderingData, GridItem item)
        {
            if (renderingData.RowTemplate != null)
            {
                return new GridTemplateRowBuilder(td => renderingData.RowTemplate(item.DataItem, td), renderingData.Colspan);
            }

            return new GridDataRowBuilder(item.DataItem, renderingData.Columns.Select(column => cellBuilderFactory.CreateDisplayCellBuilder(column, renderingData.HtmlHelper)));
        }
        public IGridRowBuilder CreateBuilder(GridRenderingData renderingData, GridItem item)
        {
            var creator = BuilderRegistry[item.Type];

            ExecuteRowCallback(item, renderingData.Callback);

            var gridRowBuilder = creator(renderingData, item);

            return decoratorProvider.ApplyDecorators(gridRowBuilder, item, renderingData.HasDetailView);
        }
 public IGridRowBuilder ApplyDecorators(IGridRowBuilder gridRowBuilder, GridItem item, bool hasDetailView)
 {
     var builderToDecorate = gridRowBuilder;
     foreach (var decorator in decorators)
     {
         var temp = decorator();
         temp.Decorate(builderToDecorate, item, hasDetailView);
         builderToDecorate = temp;
     }
     return builderToDecorate;
 }
        public virtual IGridRowBuilder CreateHeaderBuilder(GridRenderingData renderingData)
        {
            var builder = new GridRowBuilder(renderingData.Columns.Select(cellBuilderFactory.CreateHeaderCellBuilder));

            var item = new GridItem
            {
                GroupLevel = renderingData.GroupMembers.Count(),
                Type = GridItemType.HeaderRow
            };
            
            return decoratorProvider.ApplyDecorators(builder, item, renderingData.HasDetailView);
        }
 private void ExecuteRowCallback(GridItem item, Action<GridItem> callback)
 {
     if (item.Type != GridItemType.DetailRow 
         && item.Type != GridItemType.GroupRow
         && item.Type != GridItemType.GroupFooterRow                
         && item.Type != GridItemType.EmptyRow)
     {
         callback(item);
     }
 }
        protected virtual IGridRowBuilder CreateGroupRowBuilder(GridRenderingData renderingData, GridItem item)
        {
            var groupKey = ((IGroup) item.DataItem).Key;
            
            var colspan = renderingData.Colspan - item.GroupLevel;
            
            var member = renderingData.GroupMembers.ElementAtOrDefault(item.GroupLevel);
            
            var column = renderingData.Columns.OfType<IGridBoundColumn>().FirstOrDefault(c => c.Member == member);

            var format = column != null && column.Format.HasValue() ? column.Format : "{0}";
                       

            var template = new HtmlTemplate<GridGroupAggregateResult>
            {
                InlineTemplate = (result) => "{0}: {1}".FormatWith(result.Title, format.FormatWith(ExtractForeignKeyText(column, result.Key)))
            };

            var title = member.AsTitle();

            if (column != null)
            {
                title = column.Title.HasValue() ? column.Title : column.Member.AsTitle();
                if (column.GroupHeaderTemplate.HasValue())
                {
                    template = column.GroupHeaderTemplate;
                }
            }
            
            var functionsGroup = item.DataItem as AggregateFunctionsGroup;
            var itemAggregateResult = functionsGroup.GetAggregateResults(renderingData.Aggregates);

            var aggregateResult = new GridGroupAggregateResult(title, groupKey, itemAggregateResult);
            
            return new GridGroupRowBuilder((container) => template.Apply(aggregateResult, container), colspan);
        }
 protected virtual IGridRowBuilder CreateGroupFooterRowBuilder(GridRenderingData renderingData, GridItem item)
 {
     var functionsGroup = item.DataItem as AggregateFunctionsGroup;
     var itemAggregateResult = functionsGroup.GetAggregateResults(renderingData.Aggregates);
     return new GridGroupFooterRowBuilder(renderingData.Columns.Select(column => cellBuilderFactory.CreateGroupFooterCellBuilder(column, itemAggregateResult)));
 }
Esempio n. 12
0
 private void AsGroupRow(GridItem item)
 {
     item.Type = GridItemType.GroupRow;
 }
 public override bool ShouldDecorate(GridItem gridItem)
 {
     return gridItem.Type != GridItemType.EmptyRow;
 }
 protected virtual IGridRowBuilder CreateDetailRowBuilder(GridRenderingData renderingData, GridItem item)
 {
     return new GridDetailRowBuilder
     {
         Colspan = (renderingData.Colspan - 1) - item.GroupLevel,
         DataItem = item.DataItem,
         Template = renderingData.DetailViewTemplate,
         Expanded = item.Expanded,
         IsMasterAlternate = item is GridDetailViewItem && ((item as GridDetailViewItem).Parent.State & GridItemStates.Alternating) == GridItemStates.Alternating,
         Html = item.DetailRowHtml,
         HtmlAttributes = item.DetailRowHtmlAttributes
     };
 }
 protected virtual IGridRowBuilder CreateInFormInsertRowBuilder(GridRenderingData renderingData, GridItem item)
 {
     return new GridInFormEditRowBuilder(CreateInsertFormBuilder(renderingData, item), renderingData.Colspan);
 }
 protected virtual IGridRowBuilder CreateInLineInsertRowBuilder(GridRenderingData renderingData, GridItem item)
 {
     return CreateInLineRowBuilder(renderingData, item, renderingData.UrlBuilder.InsertUrl, cellBuilderFactory.CreateInsertCellBuilder);
 }
 protected virtual IGridRowBuilder CreateEmptyRowBuilder(GridRenderingData renderingData, GridItem item)
 {
     return new GridEmptyRowBuilder(renderingData.Colspan, renderingData.NoRecordsTemplate);
 }
        private IGridRowBuilder CreateInLineRowBuilder(GridRenderingData renderingData, GridItem item, Func<object, string> action, Func<IGridColumn, IGridHtmlHelper, IGridDataCellBuilder> cellBuilder)
        {
            var tableBuilder = tableBuilderFactory.CreateTableBuilder(renderingData.Columns.Select(c => new GridColData { Width = c.Width, Hidden = c.Hidden }));

            var cellBuilders = renderingData.Columns.Select(column => cellBuilder(column, renderingData.HtmlHelper));

            var formHtmlAttributes = CreateFormAttributes(renderingData.FormId, action(item.DataItem));
            formHtmlAttributes.Merge(renderingData.EditFormHtmlAttributes);

            return new GridInLineEditRowBuilder(tableBuilder, new GridFormBuilder(formHtmlAttributes),
                                                renderingData.Colspan, item.DataItem, cellBuilders);
        }
        private IGridEditFormBuilder CreateEditFormBuilder(GridRenderingData renderingData, GridItem item, 
            Func<IGridActionCommand, IEnumerable<IGridButtonBuilder>> buttons, Func<object, string> action)
        {
            var commands = renderingData.Columns.OfType<IGridActionColumn>().SelectMany(column => column.Commands);

            var editCommand = commands.OfType<GridEditActionCommand>().FirstOrDefault() ?? new GridEditActionCommand();

            var buttonBuilders = buttons(editCommand).Select(builder =>
            {
                Func<IHtmlNode> result = () => builder.Create(item.DataItem);
                return result;
            });

            var formHtmlAttributes = CreateFormAttributes(renderingData.FormId, action(item.DataItem));
            formHtmlAttributes.Merge(renderingData.EditFormHtmlAttributes);

            return new GridEditFormBuilder(new GridFormBuilder(formHtmlAttributes), 
                () => renderingData.HtmlHelper.EditorForModel(item.DataItem, 
                    renderingData.EditTemplateName, 
                    renderingData.Columns.OfType<IGridForeignKeyColumn>().Select(c => c.SerializeSelectList),
                    renderingData.AdditionalViewData
                ), 
                buttonBuilders);
        }
 protected virtual IGridRowBuilder CreatePopUpInsertRowBuilder(GridRenderingData renderingData, GridItem item)
 {
     return new GridPopUpInsertRowBuilder(CreateInsertFormBuilder(renderingData, item), renderingData.PopUpContainer);
 }
 protected virtual IGridRowBuilder CreateInsertRowBuilder(GridRenderingData renderingData, GridItem item)
 {
     switch (renderingData.EditMode)
     {
         case GridEditMode.InForm:
             return CreateInFormInsertRowBuilder(renderingData, item);
         case GridEditMode.PopUp:
             return CreatePopUpInsertRowBuilder(renderingData, item);
         default:
             return CreateInLineInsertRowBuilder(renderingData, item);
     }
 }
 protected virtual IGridEditFormBuilder CreateInsertFormBuilder(GridRenderingData renderingData, GridItem item)
 {
     return CreateEditFormBuilder(renderingData,
         item,
         (command) => command.CreateInsertButtons(renderingData.Localization, renderingData.UrlBuilder,
                                                 renderingData.HtmlHelper), 
         renderingData.UrlBuilder.InsertUrl
     );
 }
Esempio n. 23
0
 public GridItem CreateGroupFooterItem(object dataItem)
 {
     if (creatorData.ShowGroupFooter)
     {
         var groupFooter = new GridItem
         {
             GroupLevel = creatorData.GroupsCount,
             DataItem = dataItem,
             Type = GridItemType.GroupFooterRow
         };
         return groupFooter;
     }
     return null;
 }
 public override bool ShouldDecorate(GridItem gridItem)
 {
     return HasDetailView && gridItem.Type != GridItemType.EmptyRow && 
            gridItem.Type != GridItemType.GroupRow;
 }