Package org.ujorm.tools.web.report
Class ReportBuilder<D>
java.lang.Object
org.ujorm.tools.web.report.ReportBuilder<D>
- Direct Known Subclasses:
TableBuilder
A HTML page builder for table based report with an AJAX support.
Usage
ReportBuilder.of("Hotel Report")
.add(Hotel::getName, "Hotel", NAME)
.add(Hotel::getCity, "City", CITY)
.add(Hotel::getStreet, "Street")
.build(ServletRequest, ServletResponse, resource);
- Author:
- Pavel Ponec
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected booleanis An AJAX enabled?protected @NotNull HttpParameterAJAX request paramprotected booleanCall an autosubmit on first loadprotected final ReportBuilderConfigTable builder configprotected @NotNull InjectorPrint an empty text by defaultprotected @NotNull InjectorForm injectorprotected final @NotNull GridBuilder<D>Grid builderprotected @NotNull InjectorPrint a config title by defaultprotected @NotNull InjectorExtension is empty by defaultJavascript writer -
Constructor Summary
ConstructorsConstructorDescriptionReportBuilder(@NotNull CharSequence title) ReportBuilder(@NotNull ReportBuilderConfig config) ReportBuilder(@NotNull ReportBuilderConfig config, @NotNull GridBuilder<D> builder) ReportBuilder(@NotNull HtmlConfig config) -
Method Summary
Modifier and TypeMethodDescription<V> @NotNull ReportBuilder<D><V> @NotNull ReportBuilder<D>add(Function<D, V> column, CharSequence title) <V> @NotNull ReportBuilder<D>add(Function<D, V> column, CharSequence title, @Nullable HttpParameter param) <V> @NotNull ReportBuilder<D><V> @NotNull ReportBuilder<D>add(Function<D, V> column, Injector title, @Nullable HttpParameter param) @NotNull ReportBuilder<D>addColumn(@NotNull Column<D> column, @NotNull CharSequence title) @NotNull ReportBuilder<D>@NotNull ReportBuilder<D>addOrder(@NotNull CharSequence title) Add new column for a row countingvoidbuild(@NotNull HttpContext context, @NotNull Function<GridBuilder<D>, Stream<D>> resource) Build the HTML page including a tablevoidbuild(@NotNull HttpContext context, @NotNull Stream<D> resource) Build the HTML page including a tableprotected voiddoAjax(@NotNull HttpContext context, @NotNull JsonBuilder output, @NotNull Function<GridBuilder<D>, Stream<D>> resource) Return lighlited text in HTML format according a regular expressionColumnModel<D,?> getColumn(int index) Get column model by indexintReturns a count of columns@NotNull ColumnModel<D,?> Get sorted column or a stub if the sorted column not foundprotected voidprintHtmlBody(@NotNull HttpContext context, @NotNull HtmlElement html, @NotNull Function<GridBuilder<D>, Stream<D>> resource) protected voidprintSortedField(Element parent, HttpContext context) The hidden field contains an index of the last sorted columnprotected voidprintTableBody(@NotNull Element table, @NotNull HttpContext context, @NotNull Function<GridBuilder<D>, Stream<D>> resource) setAjaxEnabled(boolean ajaxEnabled) Enable of disable an AJAX feature, default value sitrue@NotNull ReportBuilder<D>setAjaxRequestParam(@NotNull HttpParameter ajaxRequestParam) setEmbeddedIcons(boolean embeddedIcons) @NotNull ReportBuilder<D>@NotNull ReportBuilder<D>setFormItem(@NotNull Injector formItem) @NotNull ReportBuilder<D>@NotNull ReportBuilder<D>setHtmlHeader(@NotNull Injector htmlHeader) setJavascritWriter(@NotNull Supplier<Injector> javascritWriter) protected voidsetSort(@NotNull ColumnModel sort) Mark a column as sortable<V> @NotNull ReportBuilder<D>sortable()Add a sortable indicator to the last column model<V> @NotNull ReportBuilder<D>sortable(@org.jetbrains.annotations.Nullable boolean ascending) Add a sortable indicator to the last column model<V> @NotNull ReportBuilder<D>Add a sortable indicator to the last column model
-
Field Details
-
gridBuilder
Grid builder -
config
Table builder config -
ajaxRequestParam
AJAX request param -
htmlHeader
Extension is empty by default -
header
Print a config title by default -
formAdditions
Form injector -
javascritWriter
Javascript writer -
ajaxEnabled
protected boolean ajaxEnabledis An AJAX enabled? -
autoSubmmitOnLoad
protected boolean autoSubmmitOnLoadCall an autosubmit on first load
-
-
Constructor Details
-
ReportBuilder
-
ReportBuilder
-
ReportBuilder
-
ReportBuilder
public ReportBuilder(@NotNull @NotNull ReportBuilderConfig config, @NotNull @NotNull GridBuilder<D> builder)
-
-
Method Details
-
add
-
add
-
add
-
add
@NotNull public <V> @NotNull ReportBuilder<D> add(Function<D, V> column, CharSequence title, @Nullable @Nullable HttpParameter param) -
add
@NotNull public <V> @NotNull ReportBuilder<D> add(Function<D, V> column, Injector title, @Nullable @Nullable HttpParameter param) -
addColumn
@NotNull public @NotNull ReportBuilder<D> addColumn(@NotNull @NotNull Column<D> column, @NotNull @NotNull CharSequence title) -
addColumn
@NotNull public @NotNull ReportBuilder<D> addColumn(@NotNull @NotNull Column<D> column, @NotNull @NotNull Injector title) -
addOrder
Add new column for a row counting -
getColumn
Get column model by index -
getColumnSize
public int getColumnSize()Returns a count of columns -
sortable
Add a sortable indicator to the last column model- Returns:
-
sortable
@NotNull public <V> @NotNull ReportBuilder<D> sortable(@Nullable @org.jetbrains.annotations.Nullable boolean ascending) Add a sortable indicator to the last column model- Parameters:
ascending- Ascending or descending direction of the sort- Returns:
-
sortable
Add a sortable indicator to the last column model- Parameters:
direction- Thenullvalue shows an unused sorting action.- Returns:
-
getSortedColumn
Get sorted column or a stub if the sorted column not found -
setAjaxRequestParam
@NotNull public @NotNull ReportBuilder<D> setAjaxRequestParam(@NotNull @NotNull HttpParameter ajaxRequestParam) -
setHtmlHeader
-
setHeader
-
setFormItem
-
setAjaxEnabled
Enable of disable an AJAX feature, default value sitrue -
setJavascritWriter
-
setEmbeddedIcons
- Throws:
IllegalStateException
-
build
Build the HTML page including a table -
build
public void build(@NotNull @NotNull HttpContext context, @NotNull @NotNull Function<GridBuilder<D>, Stream<D>> resource) Build the HTML page including a table -
setSort
Mark a column as sortable -
printHtmlBody
protected void printHtmlBody(@NotNull @NotNull HttpContext context, @NotNull @NotNull HtmlElement html, @NotNull @NotNull Function<GridBuilder<D>, Stream<D>> resource) -
printSortedField
The hidden field contains an index of the last sorted column -
printTableBody
protected void printTableBody(@NotNull @NotNull Element table, @NotNull @NotNull HttpContext context, @NotNull @NotNull Function<GridBuilder<D>, Stream<D>> resource) -
doAjax
protected void doAjax(@NotNull @NotNull HttpContext context, @NotNull @NotNull JsonBuilder output, @NotNull @NotNull Function<GridBuilder<D>, Stream<D>> resource) throws IOExceptionReturn lighlited text in HTML format according a regular expression- Parameters:
context- servlet contextoutput- A JSON writer- Throws:
IOException- if an I/O error occurs
-