From b6761195d08dd11f72e568332e0afe7d86d1c378 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 29 Oct 2020 14:48:46 +0300 Subject: [PATCH 1/7] Update Basic-Theme.md --- docs/en/UI/AspNetCore/Basic-Theme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/UI/AspNetCore/Basic-Theme.md b/docs/en/UI/AspNetCore/Basic-Theme.md index 5f28475f43..67977ffd4e 100644 --- a/docs/en/UI/AspNetCore/Basic-Theme.md +++ b/docs/en/UI/AspNetCore/Basic-Theme.md @@ -38,7 +38,7 @@ Application Layout implements the following parts, in addition to the common par ### The Account Layout -![basic-theme-account-layout](D:\Github\abp\docs\en\images\basic-theme-account-layout.png) +![basic-theme-account-layout](../../images/basic-theme-account-layout.png) Application Layout implements the following parts, in addition to the common parts mentioned above; From 47224d242f5a3b11d74a9ead60596244c1e32fa8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 29 Oct 2020 16:09:18 +0300 Subject: [PATCH 2/7] Documented Toolbars for the aspnet core mvc UI --- docs/en/UI/AspNetCore/Toolbars.md | 73 ++++++++++++++++++++++++++++++- 1 file changed, 72 insertions(+), 1 deletion(-) diff --git a/docs/en/UI/AspNetCore/Toolbars.md b/docs/en/UI/AspNetCore/Toolbars.md index cc3bcd95be..524ef3f18b 100644 --- a/docs/en/UI/AspNetCore/Toolbars.md +++ b/docs/en/UI/AspNetCore/Toolbars.md @@ -1,3 +1,74 @@ # Toolbars -TODO \ No newline at end of file +The Toolbar system is used to define **toolbars** on the user interface. Modules (or your application) can add **items** to a toolbar, then the [theme](Theming.md) renders the toolbar on the **layout**. + +There is only one **standard toolbar** named "Main" (defined as a constant: `StandardToolbars.Main`). The [Basic Theme](Basic-Theme) renders the main toolbar as shown below: + +![bookstore-toolbar-highlighted](../../images/bookstore-toolbar-highlighted.png) + +In the screenshot above, there are two items added to the main toolbar: Language switch component & user menu. You can add your own items here. + +## Example: Add a Notification Icon + +In this example, we will add a **notification (bell) icon** to the left of the language switch item. A item in the toolbar should be a **view component**. So, first, create a new view component in your project: + +![bookstore-notification-view-component](../../images/bookstore-notification-view-component.png) + +**NotificationViewComponent.cs** + +````csharp +public class NotificationViewComponent : AbpViewComponent +{ + public async Task InvokeAsync() + { + return View("/Pages/Shared/Components/Notification/Default.cshtml"); + } +} +```` + +**Default.cshtml** + +````xml +
+ +
+```` + +Now, we can create a class implementing the `IToolbarContributor` interface: + +````csharp +public class MyToolbarContributor : IToolbarContributor +{ + public Task ConfigureToolbarAsync(IToolbarConfigurationContext context) + { + if (context.Toolbar.Name == StandardToolbars.Main) + { + context.Toolbar.Items + .Insert(0, new ToolbarItem(typeof(NotificationViewComponent))); + } + + return Task.CompletedTask; + } +} +```` + +This class adds the `NotificationViewComponent` as the first item in the `Main` toolbar. + +Finally, you need to add this contributor to the `AbpToolbarOptions`, in the `ConfigureServices` of your [module](../../Module-Development-Basics.md): + +````csharp +Configure(options => +{ + options.Contributors.Add(new MyToolbarContributor()); +}); +```` + +That's all, you will see the notification icon on the toolbar when you run the application: + +![bookstore-notification-icon-on-toolbar](../../images/bookstore-notification-icon-on-toolbar.png) + +`NotificationViewComponent` in this sample simply returns a view without any data. In real life, you probably want to **query database** (or call an HTTP API) to get notifications and pass to the view. If you need, you can add a `JavaScript` or `CSS` file to the global [bundle](Bundling-Minification.md) for your toolbar item. + +## IToolbarManager + +`IToolbarManager` is used to render the toolbar. It returns the toolbar items by a toolbar name. This is generally used by the [themes](Theming.md) to render the toolbar on the layout. \ No newline at end of file From 6b73be814ff0887cf184267416f0d9d54a599e8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 29 Oct 2020 16:10:48 +0300 Subject: [PATCH 3/7] Update docs-nav.json --- docs/en/docs-nav.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/en/docs-nav.json b/docs/en/docs-nav.json index c5bc0eeb3a..8b9a889974 100644 --- a/docs/en/docs-nav.json +++ b/docs/en/docs-nav.json @@ -444,6 +444,10 @@ "text": "Widgets", "path": "UI/AspNetCore/Widgets.md" }, + { + "text": "Toolbars", + "path": "UI/AspNetCore/Toolbars.md" + }, { "text": "Layout Hooks", "path": "UI/AspNetCore/Layout-Hooks.md" From a865f0f8ec9fda67183ef9cbeb81e60926a123a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 29 Oct 2020 17:04:35 +0300 Subject: [PATCH 4/7] Initial ASP.NET Core MVC / Razor Pages: Data Tables document --- docs/en/UI/AspNetCore/Breadcrumbs.md | 2 +- docs/en/UI/AspNetCore/Data-Tables.md | 102 ++++++++++++++++++++++++++ docs/en/docs-nav.json | 4 + docs/en/images/datatables-example.png | Bin 0 -> 49745 bytes 4 files changed, 107 insertions(+), 1 deletion(-) create mode 100644 docs/en/UI/AspNetCore/Data-Tables.md create mode 100644 docs/en/images/datatables-example.png diff --git a/docs/en/UI/AspNetCore/Breadcrumbs.md b/docs/en/UI/AspNetCore/Breadcrumbs.md index cc3bcd95be..6147f71236 100644 --- a/docs/en/UI/AspNetCore/Breadcrumbs.md +++ b/docs/en/UI/AspNetCore/Breadcrumbs.md @@ -1,3 +1,3 @@ -# Toolbars +# Breadcrumbs TODO \ No newline at end of file diff --git a/docs/en/UI/AspNetCore/Data-Tables.md b/docs/en/UI/AspNetCore/Data-Tables.md new file mode 100644 index 0000000000..b7c4dd3b43 --- /dev/null +++ b/docs/en/UI/AspNetCore/Data-Tables.md @@ -0,0 +1,102 @@ +# ASP.NET Core MVC / Razor Pages: Data Tables + +A Data Table (aka Data Grid) is a UI component to show tabular data to the users. There are a lot of Data table components/libraries and **you can use any one you like** with the ABP Framework. However, the startup templates come with the [DataTables.Net](https://datatables.net/) library as **pre-installed and configured**. ABP Framework provides adapters for this library and make it easy to use with the API endpoints. + +An example screenshot from the user management page that shows the user list in a data table: + +![datatables-example](../../images/datatables-example.png) + +## DataTables.Net Integration + +First of all, you can follow the official documentation to understand how the [DataTables.Net](https://datatables.net/) works. This section will focus on the ABP addons & integration points rather than fully covering the usage of this library. + +### A Quick Example + +You can follow the [web application development tutorial](https://docs.abp.io/en/abp/latest/Tutorials/Part-1?UI=MVC) for a complete example application that uses the DataTables.Net as the Data Table. This section shows a minimalist example. + +You do nothing to add DataTables.Net library to the page since it is already added to the global [bundle](Bundling-Minification.md) by default. + +First, add an `abp-table` as shown below, with an `id`: + +````html + +```` + +> `abp-table` is a [Tag Helper](Tag-Helpers/Index.md) defined by the ABP Framework, but a simple `` tag would also work. + +Then call the `DataTable` plugin on the table selector: + +````js +var dataTable = $('#BooksTable').DataTable( + abp.libs.datatables.normalizeConfiguration({ + serverSide: true, + paging: true, + order: [[1, "asc"]], + searching: false, + ajax: abp.libs.datatables.createAjax(acme.bookStore.books.book.getList), + columnDefs: [ + { + title: l('Actions'), + rowAction: { + items: + [ + { + text: l('Edit'), + action: function (data) { + ///... + } + } + ] + } + }, + { + title: l('Name'), + data: "name" + }, + { + title: l('PublishDate'), + data: "publishDate", + render: function (data) { + return luxon + .DateTime + .fromISO(data, { + locale: abp.localization.currentCulture.name + }).toLocaleString(); + } + }, + { + title: l('Price'), + data: "price" + } + ] + }) +); +```` + +The example code above uses some ABP integration features those will be explained in the next sections. + +### Configuration Normalization + +`abp.libs.datatables.normalizeConfiguration` function takes a DataTables configuration and normalizes to simplify it; + +* Sets `scrollX` option to `true`, if not set. +* Sets `target` index for the column definitions. +* Sets the `language` option to [localize](../../Localization.md) the table in the current language. + +#### Default Configuration + +`normalizeConfiguration` uses the default configuration. You can change the default configuration using the `abp.libs.datatables.defaultConfigurations` object. Example: + +````js +abp.libs.datatables.defaultConfigurations.scrollX = false; +```` + +Here, the all configuration options; + +* `scrollX`: `false` by default. +* `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. + +## 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/docs-nav.json b/docs/en/docs-nav.json index 8b9a889974..978d40a5b5 100644 --- a/docs/en/docs-nav.json +++ b/docs/en/docs-nav.json @@ -414,6 +414,10 @@ "text": "Modals", "path": "UI/AspNetCore/Modals.md" }, + { + "text": "Data Tables", + "path": "UI/AspNetCore/Data-Tables.md" + }, { "text": "Page Alerts", "path": "UI/AspNetCore/Page-Alerts.md" diff --git a/docs/en/images/datatables-example.png b/docs/en/images/datatables-example.png new file mode 100644 index 0000000000000000000000000000000000000000..ef3e74576b3bd1641981115ec230fb6a06d3361c GIT binary patch literal 49745 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 literal 0 HcmV?d00001 From 8a143af6287424e4662295da545d4f23fa79c6c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 29 Oct 2020 17:44:56 +0300 Subject: [PATCH 5/7] Documented the Row Actions --- docs/en/UI/AspNetCore/Data-Tables.md | 78 ++++++++++++++++++ .../datatables-row-actions-confirmation.png | Bin 0 -> 42410 bytes docs/en/images/datatables-row-actions.png | Bin 0 -> 19872 bytes 3 files changed, 78 insertions(+) create mode 100644 docs/en/images/datatables-row-actions-confirmation.png create mode 100644 docs/en/images/datatables-row-actions.png diff --git a/docs/en/UI/AspNetCore/Data-Tables.md b/docs/en/UI/AspNetCore/Data-Tables.md index b7c4dd3b43..023c61ad87 100644 --- a/docs/en/UI/AspNetCore/Data-Tables.md +++ b/docs/en/UI/AspNetCore/Data-Tables.md @@ -97,6 +97,84 @@ 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. +### 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. + +The example screenshot below shows the actions for each user in the user management table: + +![datatables-example](../../images/datatables-row-actions.png) + +`rowAction` is defined as a part of a column definition: + +````csharp +{ + title: l('Actions'), + rowAction: { + //TODO: CONFIGURATION + } +}, +```` + +**Example: Show *Edit* and *Delete* actions for a book row** + +````js +{ + title: l('Actions'), + rowAction: { + items: + [ + { + text: l('Edit'), + action: function (data) { + //TODO: Open a modal to edit the book + } + }, + { + text: l('Delete'), + confirmMessage: function (data) { + return "Are you sure to delete the book " + data.record.name; + }, + action: function (data) { + acme.bookStore.books.book + .delete(data.record.id) + .then(function() { + abp.notify.info("Successfully deleted!"); + data.table.ajax.reload(); + }); + } + } + ] + } +}, +```` + +#### Action Items + +`items` is an array of action definitions. An action definition can have the following options; + +* `text`: The text (a `string`) for this action to be shown in the actions drop down. +* `action`: A `function` that is executed when the user clicks to the action. The function takes a `data` argument that has the following fields; + * `data.record`: This is the data object related to the row. You can access the data fields like `data.record.id`, `data.record.name`... etc. + * `data.table`: The DataTables instance. +* `confirmMessage`: A function (see the example above) that returns a message (`string`) to show a dialog to get a confirmation from the user before executing the `action`. Example confirmation dialog: + +![datatables-row-actions-confirmation](D:\Github\abp\docs\en\images\datatables-row-actions-confirmation.png) + +You can use the [localization](JavaScript-API/Localization.md) system to show a localized message. + +* `visible`: A `bool` or a `function` that returns a `bool`. If the result is `false`, then the action is not shown in the actions dropdown. This is generally combined by the [authorization](JavaScript-API/Auth.md) system to hide the action if the user has no permission to take this action. Example: + +````js +visible: abp.auth.isGranted('BookStore.Books.Delete'); +```` + +If you define a `function`, then the `function` has two arguments: `record` (the data object of the related row) and the `table` (the DataTable instance). So, you can decide to show/hide the action dynamically, based on the row data and other conditions. + +* `iconClass`: Can be used to show a font-icon, like a [Font-Awesome](https://fontawesome.com/) icon (ex: `fas fa-trash-alt`), near to the action text. +* `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`: An alternative to use `text` and/or `icon`. You can directly set an HTML content as the display name of the action. + ## 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-row-actions-confirmation.png b/docs/en/images/datatables-row-actions-confirmation.png new file mode 100644 index 0000000000000000000000000000000000000000..9be8433f9c451c60c4fd6993d33cc3f261aae01c GIT binary patch literal 42410 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 literal 0 HcmV?d00001 diff --git a/docs/en/images/datatables-row-actions.png b/docs/en/images/datatables-row-actions.png new file mode 100644 index 0000000000000000000000000000000000000000..4eae0f098af1fd42fb44b0f803c31f695b76d347 GIT binary patch literal 19872 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 Date: Thu, 29 Oct 2020 19:36:08 +0300 Subject: [PATCH 6/7] Update Data-Tables.md --- docs/en/UI/AspNetCore/Data-Tables.md | 11 +++++++---- docs/en/images/datatables-row-actions-icon.png | Bin 0 -> 12576 bytes 2 files changed, 7 insertions(+), 4 deletions(-) create mode 100644 docs/en/images/datatables-row-actions-icon.png diff --git a/docs/en/UI/AspNetCore/Data-Tables.md b/docs/en/UI/AspNetCore/Data-Tables.md index 023c61ad87..f21d69fe51 100644 --- a/docs/en/UI/AspNetCore/Data-Tables.md +++ b/docs/en/UI/AspNetCore/Data-Tables.md @@ -157,9 +157,9 @@ The example screenshot below shows the actions for each user in the user managem * `action`: A `function` that is executed when the user clicks to the action. The function takes a `data` argument that has the following fields; * `data.record`: This is the data object related to the row. You can access the data fields like `data.record.id`, `data.record.name`... etc. * `data.table`: The DataTables instance. -* `confirmMessage`: A function (see the example above) that returns a message (`string`) to show a dialog to get a confirmation from the user before executing the `action`. Example confirmation dialog: +* `confirmMessage`: A `function` (see the example above) that returns a message (`string`) to show a dialog to get a confirmation from the user before executing the `action`. Example confirmation dialog: -![datatables-row-actions-confirmation](D:\Github\abp\docs\en\images\datatables-row-actions-confirmation.png) +![datatables-row-actions-confirmation](../../images/datatables-row-actions-confirmation.png) You can use the [localization](JavaScript-API/Localization.md) system to show a localized message. @@ -171,9 +171,12 @@ visible: abp.auth.isGranted('BookStore.Books.Delete'); If you define a `function`, then the `function` has two arguments: `record` (the data object of the related row) and the `table` (the DataTable instance). So, you can decide to show/hide the action dynamically, based on the row data and other conditions. -* `iconClass`: Can be used to show a font-icon, like a [Font-Awesome](https://fontawesome.com/) icon (ex: `fas fa-trash-alt`), near to the action text. +* `iconClass`: Can be used to show a font-icon, like a [Font-Awesome](https://fontawesome.com/) icon (ex: `fas fa-trash-alt`), near to the action text. Example screenshot: + +![datatables-row-actions-confirmation](../../images/datatables-row-actions-icon.png) + * `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`: An alternative to use `text` and/or `icon`. You can directly set an HTML content as the display name of the action. +* `displayNameHtml`: Set this to `true` is the `text` value contains HTML tags. ## Other Data Grids diff --git a/docs/en/images/datatables-row-actions-icon.png b/docs/en/images/datatables-row-actions-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..70111fc1ac181302c0d2ca3d8fd2e147b0c7895c GIT binary patch literal 12576 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 Dx0h|f literal 0 HcmV?d00001 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 7/7] 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