Esempio n. 1
0
        private void RenderDeleteButton(GridRendererContext rendererContext, PermissionContext permissionContext)
        {
            if (!permissionContext.HasDeleteItemPermission ||
                !rendererContext.GridConfiguration.InlineEditOptions.AllowDeleting)
            {
                return;
            }

            var localActualItem = rendererContext.ActualItem;

            rendererContext.OpenElement(HtmlTagNames.Button, "action-button");
            rendererContext.AddOnClickEvent(() =>
                                            BindMethods.GetEventHandlerValue((UIMouseEventArgs e) =>
            {
                rendererContext.TableDataSet.DeleteItem(localActualItem);
                rendererContext.RequestRerenderNotification?.Invoke();
            })
                                            );

            rendererContext.OpenElement(HtmlTagNames.Span, "action-button-span");
            rendererContext.OpenElement(HtmlTagNames.I, "fas fa-trash-alt");
            rendererContext.CloseElement();
            rendererContext.CloseElement();
            rendererContext.CloseElement();
        }
Esempio n. 2
0
        protected override void BuildRenderTreeInternal(GridRendererContext rendererContext, PermissionContext permissionContext)
        {
            rendererContext.OpenElement(HtmlTagNames.TableRow, rendererContext.CssClasses.TableRow);

            var localActualItem = rendererContext.ActualItem;

            rendererContext.AddOnClickEvent(() =>
                                            BindMethods.GetEventHandlerValue((UIMouseEventArgs e) =>
            {
                rendererContext.TableDataSet
                .GridViewEvents
                .OnItemClicked?.Invoke(new ItemClickedArgs {
                    Item = localActualItem
                });
            }));

            foreach (var property in rendererContext.GridItemProperties)
            {
                rendererContext.ActualColumnName = property.Name;
                rendererContext.ActualColumnPropertyCanBeEdited = property.CanWrite;

                gridPartRenderers.ForEach(renderer => renderer.BuildRendererTree(rendererContext, permissionContext));
            }

            rendererContext.CloseElement();

            gridPartRenderersAfter.ForEach(renderer => renderer.BuildRendererTree(rendererContext, permissionContext));
        }
        public override void Render(GridRendererContext rendererContext)
        {
            if (!rendererContext.TableDataSet.HasItems())
            {
                return;
            }

            var nextButtonIsDisabled     = rendererContext.TableDataSet.PageableOptions.IsLastPage;
            var previousButtonIsDisabled = rendererContext.TableDataSet.PageableOptions.IsFirstPage;

            rendererContext.OpenElement(HtmlTagNames.Div, "pagination-wrapper");
            rendererContext.OpenElement(HtmlTagNames.Div, "pagination-wrapper-inner");
            rendererContext.OpenElement(HtmlTagNames.Div, "pagination-right");
            rendererContext.CloseElement();
            rendererContext.OpenElement(HtmlTagNames.Span, "pagination-page-status");
            rendererContext.AddContent($"{rendererContext.TableDataSet.PageInfoText()} of {rendererContext.TableDataSet.PageableOptions.TotalItemsCount}");
            rendererContext.CloseElement();
            rendererContext.OpenElement(HtmlTagNames.Div, "pagination-buttons-wrapper");

            RenderButton(rendererContext, PaginationButtonType.First, previousButtonIsDisabled, "fas fa-angle-double-left");
            RenderButton(rendererContext, PaginationButtonType.Previous, previousButtonIsDisabled, "fas fa-angle-left");
            RenderButton(rendererContext, PaginationButtonType.Next, nextButtonIsDisabled, "fas fa-angle-right");
            RenderButton(rendererContext, PaginationButtonType.Last, nextButtonIsDisabled, "fas fa-angle-double-right");

            rendererContext.CloseElement();
            rendererContext.CloseElement();
            rendererContext.CloseElement();
        }
Esempio n. 4
0
        public override void Render(GridRendererContext rendererContext)
        {
            stopwatch.Restart();

            try
            {
                gridPartRenderersBefore.ForEach(renderer => renderer.Render(rendererContext));

                rendererContext.OpenElement(HtmlTagNames.Div, "table-wrapper");
                rendererContext.OpenElement(HtmlTagNames.Table, rendererContext.CssClasses.Table);

                gridPartRenderers.ForEach(renderer => renderer.Render(rendererContext));

                rendererContext.CloseElement(); // Close table

                gridPartRenderersAfter.ForEach(renderer => renderer.Render(rendererContext));

                rendererContext.CloseElement(); // Close table wrapper

                stopwatch.Stop();
            }
            catch (Exception ex)
            {
                logger.LogError($"Error during rendering GridView component. Ex: {ex}");
            }
            finally
            {
                logger.LogInformation($"Rendering time: {stopwatch.ElapsedMilliseconds} ms");
            }
        }
Esempio n. 5
0
        protected override void BuildRenderTreeInternal(GridRendererContext rendererContext, PermissionContext permissionContext)
        {
            using (new MeasurableScope(sw => logger.LogInformation($"Grid rendering duration {sw.ElapsedMilliseconds}ms")))
            {
                try
                {
                    gridPartRenderersBefore.ForEach(renderer => renderer.BuildRendererTree(rendererContext, permissionContext));

                    rendererContext.OpenElement(HtmlTagNames.Div, "table-wrapper");
                    rendererContext.OpenElement(HtmlTagNames.Table, rendererContext.CssClasses.Table);

                    gridPartRenderers.ForEach(renderer => renderer.BuildRendererTree(rendererContext, permissionContext));

                    rendererContext.CloseElement(); // Close table

                    gridPartRenderersAfter.ForEach(renderer => renderer.BuildRendererTree(rendererContext, permissionContext));

                    rendererContext.CloseElement(); // Close table wrapper
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);

                    logger.LogError($"Error raised during rendering GridView component. Ex: {ex}");
                }
            }
        }
Esempio n. 6
0
        public override void Render(GridRendererContext rendererContext)
        {
            if (!rendererContext.TableDataSet.HasItems())
            {
                return;
            }

            rendererContext.OpenElement(HtmlTagNames.TableBody, rendererContext.CssClasses.TableBody);
            try
            {
                foreach (var item in rendererContext.TableDataSet.Items)
                {
                    rendererContext.ActualItem = item;
                    foreach (var renderer in gridPartRenderers)
                    {
                        renderer.Render(rendererContext);
                    }
                }
            }
            catch (Exception ex)
            {
                logger.LogError($"Error raised during rendering grid view body. Ex: {ex}");
            }

            rendererContext.CloseElement();
        }
        private void RenderSortableColumnHeader(GridRendererContext rendererContext, PropertyInfo property, IGridViewColumnAnotations columnConfiguration)
        {
            rendererContext.OpenElement(HtmlTagNames.TableHeadCell, rendererContext.CssClasses.TableHeaderCell);
            rendererContext.OpenElement(HtmlTagNames.Span,
                                        rendererContext.SortingByActualColumnName ? "table-cell-head-sortable table-cell-head-sortable-active" : "table-cell-head-sortable");
            rendererContext.AddOnClickEvent(() =>
                                            BindMethods.GetEventHandlerValue(async(UIMouseEventArgs e) =>
                                                                             await rendererContext.TableDataSet.SetSortExpression(property.Name))
                                            );

            if (rendererContext.SortingByActualColumnName)
            {
                var arrowDirection = rendererContext.TableDataSet.SortingOptions.SortDescending ? "fas fa-arrow-down" : "fas fa-arrow-up";
                rendererContext.AddContent(GetColumnCaption(columnConfiguration, property));
                rendererContext.OpenElement(HtmlTagNames.I, $"table-cell-head-arrow {arrowDirection}");
                rendererContext.CloseElement();
            }
            else
            {
                rendererContext.AddContent(GetColumnCaption(columnConfiguration, property));
            }

            rendererContext.CloseElement();
            rendererContext.CloseElement();
        }
Esempio n. 8
0
        protected override void BuildRenderTreeInternal(GridRendererContext rendererContext, PermissionContext permissionContext)
        {
            using (new MeasurableScope(sw => logger.LogInformation($"Grid body rendering duration {sw.ElapsedMilliseconds}ms")))
            {
                rendererContext.OpenElement(HtmlTagNames.TableBody, rendererContext.CssClasses.TableBody);

                try
                {
                    foreach (var item in rendererContext.TableDataSet.Items)
                    {
                        rendererContext.ActualItem = item;
                        foreach (var renderer in gridPartRenderers)
                        {
                            renderer.BuildRendererTree(rendererContext, permissionContext);
                        }
                    }
                }
                catch (Exception ex)
                {
                    logger.LogError($"Error occured during rendering grid view body. Ex: {ex}");
                }

                rendererContext.CloseElement();
            }
        }
Esempio n. 9
0
        protected override void BuildRendererTreeInternal(GridRendererContext rendererContext, PermissionContext permissionContext)
        {
            rendererContext.OpenElement(HtmlTagNames.TableColumn, rendererContext.CssClasses.TableCell);

            if (!rendererContext.IsActualItemEdited)
            {
                rendererContext.AddActualColumnValue(permissionContext);
                rendererContext.CloseElement();

                return;
            }

            if (rendererContext.ActualColumnPropertyCanBeEdited && permissionContext.HasCurrentUserWritePermission(rendererContext.ActualColumnName))
            {
                editInputRendererTree.BuildInputRendererTree(
                    rendererContext.RendererTreeBuilder,
                    rendererContext,
                    rendererContext.TableDataSet.EditItemProperty);
            }
            else
            {
                rendererContext.AddActualColumnValue(permissionContext);
            }

            rendererContext.CloseElement();
        }
Esempio n. 10
0
        public override void Render(GridRendererContext rendererContext)
        {
            if (!rendererContext.TableDataSet.ItemIsSelected(rendererContext.ActualItem) ||
                !rendererContext.GridConfiguration.IsMasterTable ||
                !(rendererContext.TableDataSet is IMasterTableDataSet masterTableDataSet))
            {
                return;
            }

            var selectedDataAdapter = masterTableDataSet.GetSelectedDataAdapter(rendererContext.ActualItem);

            rendererContext.OpenElement(HtmlTagNames.TableRow, rendererContext.CssClasses.TableRow);
            rendererContext.OpenElement(HtmlTagNames.TableColumn, rendererContext.CssClasses.TableCell);
            rendererContext.AddColspan();


            rendererContext.OpenElement(HtmlTagNames.Div, "tabs-header");
            rendererContext.OpenElement(HtmlTagNames.Div, "tabs-header-buttons");

            RenderTabs(rendererContext, masterTableDataSet, selectedDataAdapter);

            rendererContext.CloseElement();
            rendererContext.CloseElement();

            rendererContext.OpenElement(HtmlTagNames.Div, "tabs-content");
            rendererContext.AddDetailGridViewComponent(selectedDataAdapter);
            rendererContext.CloseElement();
            rendererContext.CloseElement();
            rendererContext.CloseElement();
        }
Esempio n. 11
0
        private void RenderColumnHeader(GridRendererContext rendererContext, PropertyInfo property)
        {
            var columnConfiguration = rendererContext.ActualColumnConfiguration;

            rendererContext.OpenElement(HtmlTagNames.TableHeadCell, rendererContext.CssClasses.TableHeaderCell, GetColumnStyle(columnConfiguration));
            rendererContext.OpenElement(HtmlTagNames.Div);
            rendererContext.AddAttribute(HtmlAttributes.Style, "position: relative;");

            if (columnConfiguration == null)
            {
                rendererContext.AddContent(GetColumnCaption(columnConfiguration, property));
                rendererContext.CloseElement();
                rendererContext.CloseElement();

                return;
            }

            if (columnConfiguration.IsSortable)
            {
                RenderSortableColumnHeader(rendererContext, property, columnConfiguration);
            }
            else
            {
                rendererContext.AddContent(GetColumnCaption(columnConfiguration, property));
            }

            if (columnConfiguration.IsFilterable)
            {
                rendererContext.AddFilterComponent(property);
            }

            rendererContext.CloseElement();
            rendererContext.CloseElement();
        }
Esempio n. 12
0
        private void RenderSortableColumnHeader(GridRendererContext rendererContext, PropertyInfo property, IGridViewColumnAnotations columnConfiguration)
        {
            rendererContext.OpenElement(HtmlTagNames.Span,
                                        rendererContext.SortingByActualColumnName ? "table-cell-head-sortable table-cell-head-sortable-active" : "table-cell-head-sortable");
            rendererContext.AddOnClickEvent(
                EventCallback.Factory.Create(this, async(MouseEventArgs e) =>
            {
                await rendererContext.TableDataSet.SetSortExpression(property.Name);
                rendererContext.RequestRerenderNotification?.Invoke();
            })
                );

            if (rendererContext.SortingByActualColumnName)
            {
                var arrowDirection = rendererContext.TableDataSet.SortingOptions.SortDescending ? "fas fa-arrow-down" : "fas fa-arrow-up";
                rendererContext.AddContent(GetColumnCaption(columnConfiguration, property));
                rendererContext.OpenElement(HtmlTagNames.I, $"table-cell-head-arrow {arrowDirection}");
                rendererContext.CloseElement();
            }
            else
            {
                rendererContext.AddContent(GetColumnCaption(columnConfiguration, property));
            }

            rendererContext.CloseElement();
        }
        protected override void RenderInternal(GridRendererContext rendererContext, PermissionContext permissionContext)
        {
            if (rendererContext.TableDataSet is IMasterTableDataSet masterTableDataSet)
            {
                var selectedDataAdapter = masterTableDataSet.GetSelectedDataAdapter(rendererContext.ActualItem);

                rendererContext.OpenElement(HtmlTagNames.TableRow, rendererContext.CssClasses.TableRow);
                rendererContext.OpenElement(HtmlTagNames.TableColumn, rendererContext.CssClasses.TableCell);
                rendererContext.AddColspan();


                rendererContext.OpenElement(HtmlTagNames.Div, "tabs-header");
                rendererContext.OpenElement(HtmlTagNames.Div, "tabs-header-buttons");

                RenderTabs(rendererContext, permissionContext, masterTableDataSet, selectedDataAdapter);

                rendererContext.CloseElement();
                rendererContext.CloseElement();

                rendererContext.OpenElement(HtmlTagNames.Div, "tabs-content");
                rendererContext.AddDetailGridViewComponent(selectedDataAdapter);
                rendererContext.CloseElement();
                rendererContext.CloseElement();
                rendererContext.CloseElement();
            }
        }
Esempio n. 14
0
        protected override void BuildRendererTreeInternal(GridRendererContext rendererContext, PermissionContext permissionContext)
        {
            var canRenderCreateItemButton = rendererContext.CreateItemIsAllowed() && permissionContext.HasCreateItemPermission;

            rendererContext.OpenElement(HtmlTagNames.TableHead, rendererContext.CssClasses.TableHeader);
            rendererContext.OpenElement(HtmlTagNames.TableRow, rendererContext.CssClasses.TableHeaderRow);

            if (rendererContext.GridConfiguration.IsMasterTable)
            {
                RenderEmptyColumnHeader(rendererContext);
            }

            foreach (var property in rendererContext.GridItemProperties)
            {
                rendererContext.ActualColumnName = property.Name;
                RenderColumnHeader(rendererContext, property);
            }

            if (canRenderCreateItemButton)
            {
                BuildCreateItemButtonRendererTree(rendererContext, permissionContext);
            }

            if (rendererContext.InlineEditItemIsAllowed() && !canRenderCreateItemButton)
            {
                RenderEmptyColumnHeader(rendererContext);
            }

            rendererContext.CloseElement();
            rendererContext.CloseElement();
        }
        private void RenderTab(
            GridRendererContext rendererContext,
            IMasterTableDataSet masterTableDataSet,
            ITableDataAdapter selectedDataAdapter,
            ITableDataAdapter dataAdapter)
        {
            var masterDetailRelationship = rendererContext
                                           .GridConfiguration
                                           .FindRelationshipConfiguration(dataAdapter.UnderlyingTypeOfItem);

            var localActualItem = rendererContext.ActualItem;

            rendererContext.OpenElement(HtmlTagNames.Button,
                                        selectedDataAdapter.IsForSameUnderlyingType(dataAdapter) ? "tabs-button tabs-button-active" : "tabs-button");

            rendererContext.AddOnClickEvent(() =>
                                            BindMethods.GetEventHandlerValue((UIMouseEventArgs e) =>
                                                                             masterTableDataSet.SelectDataAdapter(new MasterDetailRowArguments(dataAdapter, localActualItem)))
                                            );

            rendererContext.OpenElement(HtmlTagNames.Span, "tabs-button-text");
            rendererContext.AddContent(masterDetailRelationship.DetailGridViewPageCaption(dataAdapter));
            rendererContext.CloseElement();
            rendererContext.CloseElement();
        }
Esempio n. 16
0
        private void RenderDeleteButton(GridRendererContext rendererContext, PermissionContext permissionContext)
        {
            if (!permissionContext.HasDeleteItemPermission ||
                !rendererContext.GridConfiguration.InlineEditOptions.AllowDeleting)
            {
                return;
            }

            var localActualItem = rendererContext.ActualItem;

            rendererContext.OpenElement(HtmlTagNames.Div, "action-button");
            rendererContext.AddOnClickEvent(
                EventCallback.Factory.Create(this, (MouseEventArgs e) =>
            {
                if (rendererContext.GridConfiguration.DeleteItemOptions.UseConfirmationDialog)
                {
                    rendererContext.FlexGridContext.SelectItem(localActualItem);
                    flexGridInterop.ShowModal(DeleteItemOptions.DialogName);
                }
                else
                {
                    rendererContext.TableDataSet.DeleteItem(localActualItem);
                    rendererContext.RequestRerenderNotification?.Invoke();
                }
            })
                );

            rendererContext.OpenElement(HtmlTagNames.Span, "action-button-span");
            rendererContext.OpenElement(HtmlTagNames.I, "fas fa-trash-alt");
            rendererContext.CloseElement();
            rendererContext.CloseElement();
            rendererContext.CloseElement();
        }
Esempio n. 17
0
        private void RenderTab(
            GridRendererContext rendererContext,
            IMasterTableDataSet masterTableDataSet,
            ITableDataAdapter selectedDataAdapter,
            ITableDataAdapter dataAdapter)
        {
            var masterDetailRelationship = rendererContext
                                           .GridConfiguration
                                           .FindRelationshipConfiguration(dataAdapter.UnderlyingTypeOfItem);

            var localActualItem = rendererContext.ActualItem;

            rendererContext.OpenElement(HtmlTagNames.Button,
                                        selectedDataAdapter.IsForSameUnderlyingType(dataAdapter) ? "tabs-button tabs-button-active" : "tabs-button");

            rendererContext.AddOnClickEvent(
                EventCallback.Factory.Create(this, (MouseEventArgs e) =>
            {
                masterTableDataSet.SelectDataAdapter(new MasterDetailRowArguments(dataAdapter, localActualItem));
                rendererContext.RequestRerenderNotification?.Invoke();
            })
                );

            rendererContext.OpenElement(HtmlTagNames.Span, "tabs-button-text");
            rendererContext.AddContent(masterDetailRelationship.DetailGridViewPageCaption(dataAdapter));
            rendererContext.CloseElement();
            rendererContext.CloseElement();
        }
Esempio n. 18
0
        public override void Render(GridRendererContext rendererContext)
        {
            rendererContext.OpenElement(HtmlTagNames.TableRow, rendererContext.CssClasses.TableRow);

            foreach (var property in rendererContext.GridItemProperties)
            {
                rendererContext.ActualColumnName = property.Name;
                gridPartRenderers.ForEach(renderer => renderer.Render(rendererContext));
            }

            rendererContext.CloseElement();

            // Temporary this is only for tesing
            if (rendererContext.TableDataSet.ItemIsSelected(rendererContext.ActualItem))
            {
                rendererContext.OpenElement(HtmlTagNames.TableRow, rendererContext.CssClasses.TableRow);
                rendererContext.OpenElement(HtmlTagNames.TableColumn, rendererContext.CssClasses.TableCell);
                rendererContext.AddColspan();

                rendererContext.AddGridViewComponent(
                    (rendererContext.TableDataSet as IMasterTableDataSet)?.DetailDataAdapters.First());

                rendererContext.CloseElement();
                rendererContext.CloseElement();
            }
        }
Esempio n. 19
0
        private void RenderTabs(
            GridRendererContext rendererContext,
            PermissionContext permissionContext,
            IMasterTableDataSet masterTableDataSet,
            ITableDataAdapter selectedDataAdapter)
        {
            foreach (var dataAdapter in masterTableDataSet.DetailDataAdapters)
            {
                RenderTab(rendererContext, masterTableDataSet, selectedDataAdapter, dataAdapter);
            }

            if (rendererContext.ShowExplicitDetailTables())
            {
                return;
            }

            foreach (var collectionProperty in rendererContext.GridItemCollectionProperties)
            {
                if (permissionContext.HasCurrentUserReadPermission(collectionProperty.Name))
                {
                    var dataAdapter = _tableDataAdapterProvider.CreateCollectionTableDataAdapter(rendererContext.ActualItem, collectionProperty);
                    RenderTab(rendererContext, masterTableDataSet, selectedDataAdapter, dataAdapter);
                }
            }
        }
        protected override void BuildRendererTreeInternal(GridRendererContext rendererContext, PermissionContext permissionContext)
        {
            var nextButtonIsDisabled     = rendererContext.TableDataSet.PageableOptions.IsLastPage;
            var previousButtonIsDisabled = rendererContext.TableDataSet.PageableOptions.IsFirstPage;

            //rendererContext.OpenElement(HtmlTagNames.Div, "pagination-wrapper");
            rendererContext.OpenElement(HtmlTagNames.Div, rendererContext.CssClasses.FooterCssClasses.FooterWrapper);

            if (rendererContext.TableDataSet.GroupingOptions.IsGroupingEnabled)
            {
                RenderGroupingFooterPart(rendererContext);
            }

            rendererContext.OpenElement(HtmlTagNames.Div, "pagination-right");
            rendererContext.CloseElement();
            rendererContext.OpenElement(HtmlTagNames.Span, "pagination-page-status");
            rendererContext.AddContent($"{rendererContext.TableDataSet.PageInfoText()} of {rendererContext.TableDataSet.PageableOptions.TotalItemsCount}");
            rendererContext.CloseElement();
            rendererContext.OpenElement(HtmlTagNames.Div, "pagination-buttons-wrapper");

            RenderButton(rendererContext, PaginationButtonType.First, previousButtonIsDisabled, "fas fa-angle-double-left");
            RenderButton(rendererContext, PaginationButtonType.Previous, previousButtonIsDisabled, "fas fa-angle-left");
            RenderButton(rendererContext, PaginationButtonType.Next, nextButtonIsDisabled, "fas fa-angle-right");
            RenderButton(rendererContext, PaginationButtonType.Last, nextButtonIsDisabled, "fas fa-angle-double-right");

            rendererContext.CloseElement();
            rendererContext.CloseElement();
            //rendererContext.CloseElement();
        }
        protected override void RenderInternal(GridRendererContext rendererContext, PermissionContext permissionContext)
        {
            stopwatch.Restart();

            gridPartRenderer.Render(rendererContext, permissionContext);

            logger.LogInformation($"Rendering time [{gridPartRenderer.GetType().FullName}]: {stopwatch.ElapsedMilliseconds} ms");
        }
        public void Render(GridRendererContext rendererContext, PermissionContext permissionContext)
        {
            if (!CanRender(rendererContext))
            {
                return;
            }

            RenderInternal(rendererContext, permissionContext);
        }
        public void BuildRendererTree(GridRendererContext rendererContext, PermissionContext permissionContext)
        {
            if (!CanRender(rendererContext))
            {
                return;
            }

            BuildRenderTreeInternal(rendererContext, permissionContext);
        }
        public override void Render(GridRendererContext rendererContext)
        {
            stopwatch.Restart();

            gridPartRenderer.Render(rendererContext);

            stopwatch.Stop();
            logger.LogInformation($"Rendering time [{gridPartRenderer.GetType().FullName}]: {stopwatch.ElapsedMilliseconds} ms");
        }
        private void RenderGroupingFooterPart(GridRendererContext rendererContext)
        {
            rendererContext.OpenElement(HtmlTagNames.Div, rendererContext.CssClasses.FooterCssClasses.GroupingPartWrapper);
            rendererContext.OpenElement(HtmlTagNames.Select);
            rendererContext.AddAttribute(HtmlAttributes.Id, groupingSelectId);

            rendererContext.AddOnChangeEvent(() =>
                                             BindMethods.GetEventHandlerValue(async(UIChangeEventArgs e) =>
            {
                string propertyName = e.Value.ToString();
                if (propertyName == noGroupingOptionText)
                {
                    rendererContext.TableDataSet.GroupingOptions.DeactivateGrouping();
                }
                else
                {
                    rendererContext.TableDataSet.GroupingOptions.SetGroupedProperty(propertyName);
                }
                await rendererContext.TableDataSet.GoToPage(0);
                rendererContext.RequestRerenderNotification?.Invoke();
            })
                                             );


            if (!rendererContext.TableDataSet.GroupingOptions.IsGroupingActive)
            {
                rendererContext.OpenElement(HtmlTagNames.Option);
                rendererContext.AddAttribute(HtmlAttributes.Disabled, true);
                rendererContext.AddContent(groupByPlaceholder);
                rendererContext.CloseElement();
            }
            else
            {
                rendererContext.OpenElement(HtmlTagNames.Option);
                rendererContext.AddAttribute(HtmlAttributes.Value, string.Empty);
                rendererContext.AddContent(noGroupingOptionText);
                rendererContext.CloseElement();
            }

            foreach (var groupableProperty in rendererContext.TableDataSet.GroupingOptions.GroupableProperties)
            {
                rendererContext.OpenElement(HtmlTagNames.Option);

                if (groupableProperty == rendererContext.TableDataSet.GroupingOptions.GroupedProperty)
                {
                    rendererContext.AddAttribute(HtmlAttributes.Selected, true);
                }

                rendererContext.AddAttribute(HtmlAttributes.Value, groupableProperty.Name);
                rendererContext.ActualColumnName = groupableProperty.Name;
                var displayedGroupablePropertyName = rendererContext.ActualColumnConfiguration?.Caption ?? groupableProperty.Name;
                rendererContext.AddContent(displayedGroupablePropertyName);
                rendererContext.CloseElement();
            }
            rendererContext.CloseElement();
            rendererContext.CloseElement();
        }
 private Task GetPaginationTask(GridRendererContext rendererContext, PaginationButtonType paginationButtonType)
 =>
 paginationButtonType == PaginationButtonType.Previous
        ? rendererContext.TableDataSet.GoToPreviousPage()
        : paginationButtonType == PaginationButtonType.Next
            ? rendererContext.TableDataSet.GoToNextPage()
            : paginationButtonType == PaginationButtonType.First
                ? rendererContext.TableDataSet.GoToFirstPage()
                : rendererContext.TableDataSet.GoToLastPage();
Esempio n. 27
0
        private void RenderGroupingFooterPart(GridRendererContext rendererContext)
        {
            rendererContext.OpenElement(HtmlTagNames.Div, rendererContext.CssClasses.FooterCssClasses.GroupingPartWrapper);
            rendererContext.OpenElement(HtmlTagNames.Select, "group-select");
            rendererContext.AddAttribute(HtmlAttributes.Id, GroupingSelectId);
            rendererContext.AddOnChangeEvent(() =>
                                             BindMethods.GetEventHandlerValue(async(UIChangeEventArgs e) =>
            {
                rendererContext.TableDataSet.GroupingOptions.SetGroupedProperty(e.Value.ToString());
                await rendererContext.TableDataSet.GoToPage(0);
                rendererContext.RequestRerenderNotification?.Invoke();
            })
                                             );

            if (!rendererContext.TableDataSet.GroupingOptions.IsGroupingActive)
            {
                rendererContext.OpenElement(HtmlTagNames.Option);
                rendererContext.AddAttribute(HtmlAttributes.Disabled, true);
                rendererContext.AddContent(GroupByPlaceholder);
                rendererContext.CloseElement();
            }

            foreach (var groupableProperty in rendererContext.TableDataSet.GroupingOptions.GroupableProperties)
            {
                rendererContext.OpenElement(HtmlTagNames.Option);

                if (groupableProperty == rendererContext.TableDataSet.GroupingOptions.GroupedProperty)
                {
                    rendererContext.AddAttribute(HtmlAttributes.Selected, true);
                }

                rendererContext.AddAttribute(HtmlAttributes.Value, groupableProperty.Name);
                rendererContext.AddContent(rendererContext.GetColumnCaption(groupableProperty.Name) ?? groupableProperty.Name);
                rendererContext.CloseElement();
            }

            rendererContext.CloseElement();
            rendererContext.CloseElement();

            if (rendererContext.TableDataSet.GroupingOptions.IsGroupingActive)
            {
                rendererContext.OpenElement(HtmlTagNames.Button, "action-button");
                rendererContext.AddOnClickEvent(() =>
                                                BindMethods.GetEventHandlerValue((UIMouseEventArgs e) =>
                {
                    rendererContext.TableDataSet.GroupingOptions.DeactivateGrouping();
                    rendererContext.RequestRerenderNotification?.Invoke();
                })
                                                );

                rendererContext.OpenElement(HtmlTagNames.Span, "action-button-span");
                rendererContext.OpenElement(HtmlTagNames.I, "fas fa-times");
                rendererContext.CloseElement();
                rendererContext.CloseElement();
                rendererContext.CloseElement();
            }
        }
Esempio n. 28
0
        private void RenderGroupingFooterPart(GridRendererContext rendererContext)
        {
            rendererContext.OpenElement(HtmlTagNames.Div, rendererContext.CssClasses.FooterCssClasses.GroupingPartWrapper);
            rendererContext.OpenElement(HtmlTagNames.Select, "group-select");
            rendererContext.AddAttribute(HtmlAttributes.Id, GroupingSelectId);
            rendererContext.AddAttribute(HtmlJsEvents.OnChange,
                                         EventCallback.Factory.Create(this, async(ChangeEventArgs e) =>
            {
                rendererContext.TableDataSet.GroupingOptions.SetGroupedProperty(BindConverterExtensions.ConvertTo(e.Value, string.Empty));
                await rendererContext.TableDataSet.GoToPage(0);
                rendererContext.RequestRerenderNotification?.Invoke();
            })
                                         );

            if (!rendererContext.TableDataSet.GroupingOptions.IsGroupingActive)
            {
                rendererContext.OpenElement(HtmlTagNames.Option);
                rendererContext.AddAttribute(HtmlAttributes.Disabled, true);
                rendererContext.AddContent(GroupByPlaceholder);
                rendererContext.CloseElement();
            }

            foreach (var groupableProperty in rendererContext.TableDataSet.GroupingOptions.GroupableProperties)
            {
                rendererContext.OpenElement(HtmlTagNames.Option);

                if (groupableProperty == rendererContext.TableDataSet.GroupingOptions.GroupedProperty)
                {
                    rendererContext.AddAttribute(HtmlAttributes.Selected, true);
                }

                rendererContext.AddAttribute(HtmlAttributes.Value, groupableProperty.Name);
                rendererContext.AddContent(rendererContext.GetColumnCaption(groupableProperty.Name) ?? groupableProperty.Name);
                rendererContext.CloseElement();
            }

            rendererContext.CloseElement();
            rendererContext.CloseElement();

            if (rendererContext.TableDataSet.GroupingOptions.IsGroupingActive)
            {
                rendererContext.OpenElement(HtmlTagNames.Button, "action-button");
                rendererContext.AddOnClickEvent(
                    EventCallback.Factory.Create(this, (MouseEventArgs e) =>
                {
                    rendererContext.TableDataSet.GroupingOptions.DeactivateGrouping();
                    rendererContext.RequestRerenderNotification?.Invoke();
                })
                    );

                rendererContext.OpenElement(HtmlTagNames.Span, "action-button-span");
                rendererContext.OpenElement(HtmlTagNames.I, "fas fa-times");
                rendererContext.CloseElement();
                rendererContext.CloseElement();
                rendererContext.CloseElement();
            }
        }
 protected override void BuildRendererTreeInternal(GridRendererContext rendererContext, PermissionContext permissionContext)
 {
     rendererContext.AddContent("    ");
     rendererContext.OpenElement("p");
     rendererContext.OpenElement("em");
     rendererContext.AddContent("Loading...");
     rendererContext.CloseElement();
     rendererContext.CloseElement();
     rendererContext.AddContent("\n");
 }
Esempio n. 30
0
        protected override void BuildRenderTreeInternal(GridRendererContext rendererContext, PermissionContext permissionContext)
        {
            using (new MeasurableScope(sw => logger.LogInformation($"Grid grouped body rendering duration {sw.ElapsedMilliseconds}ms")))
            {
                rendererContext.OpenElement(HtmlTagNames.TableBody, rendererContext.CssClasses.TableBody);
                foreach (var group in rendererContext.TableDataSet.GroupedItems)
                {
                    try
                    {
                        rendererContext.OpenElement(HtmlTagNames.TableRow, rendererContext.CssClasses.TableGroupRow);
                        rendererContext.OpenElement(HtmlTagNames.TableColumn, rendererContext.CssClasses.TableGroupRowCell);
                        rendererContext.AddAttribute(HtmlAttributes.Colspan, rendererContext.NumberOfColumns);
                        rendererContext.OpenElement(HtmlTagNames.Button, "pagination-button");
                        rendererContext.AddOnClickEvent(
                            EventCallback.Factory.Create(this, (MouseEventArgs e) =>
                        {
                            rendererContext.TableDataSet.ToggleGroupRow(group.Key);
                            rendererContext.RequestRerenderNotification?.Invoke();
                        })
                            );
                        rendererContext.OpenElement(HtmlTagNames.Span, "pagination-button-arrow");
                        rendererContext.OpenElement(HtmlTagNames.I, !group.IsCollapsed ? "fas fa-angle-down" : "fas fa-angle-right");
                        rendererContext.CloseElement();
                        rendererContext.CloseElement();
                        rendererContext.CloseElement();
                        rendererContext.AddMarkupContent($"\t<b>{rendererContext.TableDataSet.GroupingOptions.GroupedProperty.Name}:</b> {group.Key.ToString()}\t");
                        rendererContext.OpenElement(HtmlTagNames.I);
                        rendererContext.AddContent($"({group.Count})");
                        rendererContext.CloseElement();


                        if (!group.IsCollapsed)
                        {
                            var dataAdapter        = tableDataAdapterProvider.CreateCollectionTableDataAdapter(rendererContext.TableDataSet.UnderlyingTypeOfItem(), group);
                            var masterTableFeature = rendererContext.FlexGridContext.Features.Get <IMasterTableFeature>();
                            dataAdapter = tableDataAdapterProvider.CreateMasterTableDataAdapter(dataAdapter, masterTableFeature);

                            rendererContext.AddGridViewComponent(dataAdapter);
                        }

                        rendererContext.CloseElement();
                        rendererContext.CloseElement();
                    }
                    catch (Exception ex)
                    {
                        logger.LogError($"Error occured during rendering grouped grid view body. Ex: {ex}");

                        throw ex;
                    }
                }

                rendererContext.CloseElement();
            }
        }