From e1c754386992efc54a905fdff5c70ae45b9cb577 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 29 Oct 2020 20:21:49 +0300 Subject: [PATCH] Resolved #3300: Completed the datatables document. --- docs/en/UI/AspNetCore/Data-Tables.md | 80 ++++++++++++++++++ .../images/datatables-custom-render-date.png | Bin 0 -> 12093 bytes .../images/datatables-default-render-date.png | Bin 0 -> 16046 bytes 3 files changed, 80 insertions(+) create mode 100644 docs/en/images/datatables-custom-render-date.png create mode 100644 docs/en/images/datatables-default-render-date.png diff --git a/docs/en/UI/AspNetCore/Data-Tables.md b/docs/en/UI/AspNetCore/Data-Tables.md index f21d69fe51..79fd6a3be1 100644 --- a/docs/en/UI/AspNetCore/Data-Tables.md +++ b/docs/en/UI/AspNetCore/Data-Tables.md @@ -97,6 +97,14 @@ Here, the all configuration options; * `dom`: Default value is `<"dataTable_filters"f>rt<"row dataTable_footer"<"col-auto"l><"col-auto"i><"col"p>>`. * `language`: A function that returns the localization text using the current language. +### AJAX Adapter + +DataTables.Net has its own expected data format while getting results of an AJAX call to the server to get the table data. They are especially related how paging and sorting parameters are sent and received. ABP Framework also offers its own conventions for the client-server [AJAX](JavaScript-API/Ajax.md) communication. + +The `abp.libs.datatables.createAjax` method (used in the example above) adapts request and response data format and perfectly works with the [Dynamic JavaScript Client Proxy](Dynamic-JavaScript-Client-Proxies.md) system. + +This works automatically, so most of the times you don't need to know how it works. See the [DTO document](../../Data-Transfer-Objects.md) if you want to learn more about `IPagedAndSortedResultRequest`, `IPagedResult` and other standard interfaces and base DTO classes those are used in client to server communication. + ### Row Actions `rowAction` is an option defined by the ABP Framework to the column definitions to show a drop down button to take actions for a row in the table. @@ -178,6 +186,78 @@ If you define a `function`, then the `function` has two arguments: `record` (the * `enabled`: A `function` that returns a `bool` to disable the action. The `function` takes a `data` object with two fields: `data.record` is the data object related to the row and `data.table` is the DataTables instance. * `displayNameHtml`: Set this to `true` is the `text` value contains HTML tags. +There are some rules with the action items; + +* If none of the action items is visible then the actions column is not rendered. + +### Data Format + +#### The Problem + +See the *Creation Time* column in the example below: + +````js +{ + title: l('CreationTime'), + data: "creationTime", + render: function (data) { + return luxon + .DateTime + .fromISO(data, { + locale: abp.localization.currentCulture.name + }).toLocaleString(luxon.DateTime.DATETIME_SHORT); + } +} +```` + +The `render` is a standard DataTables option to render the column content by a custom function. This example uses the [luxon](https://moment.github.io/luxon/) library (which is installed by default) to write a human readable value of the `creationTime` in the current user's language. Example output of the column: + +![datatables-custom-render-date](../../images/datatables-custom-render-date.png) + +If you don't define the render option, then the result will be ugly and not user friendly: + +![datatables-custom-render-date](../../images/datatables-default-render-date.png) + +However, rendering a `DateTime` is almost same and repeating the same rendering logic everywhere is against to the DRY (Don't Repeat Yourself!) principle. + +#### dataFormat Option + +`dataFormat` column option specifies the data format that is used to render the column data. The same output could be accomplished using the following column definition: + +````js +{ + title: l('CreationTime'), + data: "creationTime", + dataFormat: 'datetime' +} +```` + +`dataFormat: 'datetime'` specifies the data format for this column. There are a few pre-defined `dataFormat`s: + +* `boolean`: Shows a `check` icon for `true` and `times` icon for `false` value and useful to render `bool` values. +* `date`: Shows date part of a `DateTime` value, formatted based on the current culture. +* `datetime`: Shows date & time (excluding seconds) of a `DateTime` value, formatted based on the current culture. + +### Default Renderers + +`abp.libs.datatables.defaultRenderers` option allows you to define new data formats and set renderers for them. + +**Example: Render male / female icons based on the gender** + +````js +abp.libs.datatables.defaultRenderers['gender'] = function(value) { + if (value === 'f') { + return ''; + } else { + return ''; + } +}; +```` + +Assuming that the possible values for a column data is `f` and `m`, the `gender` data format shows female/male icons instead of `f` and `m` texts. You can now set `dataFormat: 'gender'` for a column definition that has the proper data values. + +> You can write the default renderers in a single JavaScript file and add it to the [Global Script Bundle](Bundling-Minification.md), so you can reuse them in all the pages. + ## Other Data Grids You can use any library you like. For example, [see this article](https://community.abp.io/articles/using-devextreme-components-with-the-abp-framework-zb8z7yqv) to learn how to use DevExtreme Data Grid in your applications. \ No newline at end of file diff --git a/docs/en/images/datatables-custom-render-date.png b/docs/en/images/datatables-custom-render-date.png new file mode 100644 index 0000000000000000000000000000000000000000..344237aea7f85b1c6d385727b0baa553bd317107 GIT binary patch literal 12093 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 aAntK{`mOOCg*k_gB`c)_D*I^s{r>_iq>4iT literal 0 HcmV?d00001