History | Log In     View a printable version of the current page.  
Issue Details (XML | Word | Printable)

Key: LIB-74
Type: New Feature New Feature
Status: Verified Verified
Priority: Critical Critical
Assignee: Stanislaw Osinski
Reporter: Stanislaw Osinski
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
OpenX Commons

Reusable data grid component

Created: 30/Sep/09 01:22 PM   Updated: 17/Nov/09 01:47 PM
Component/s: php-ui
Affects Version/s: None
Fix Version/s: Next Milestone
Security Level: Public (All users can see these issues)

Time Tracking:
Issue & Sub-Tasks
Issue Only
Original Estimate: 60h
Original Estimate - 60h
Remaining Estimate: 60h
Time Spent - 21.5h Remaining Estimate - 60h
Time Spent: 21.5h
Time Spent - 21.5h Remaining Estimate - 60h

Sub-Tasks  All   Open   

 Description  « Hide
Design and implement a reusable data grid component for displaying lists of items. The implementation should include all the required PHP and client-side code (possibly based on some jQuery plugin).

The data grid should support:

  • Paging
  • Filtering
  • Sorting by selected columns
  • Searching (displaying only those rows that match a text query)
  • Row selection, performing actions on the selected rows (some tables may have many possible actions, we may not be able to show them all right away)
  • All rows selection (select all rows matching search / filter), performing actions on all rows
  • Quick edit support
  • Preview support (e.g. ad preview)
  • Starring (favourites)
  • Rendering row labels (tags)
  • Customized rendering of table cells, ranging from a simple string fetched from the row's backing object property, through simple links to rendering custom helpers (e.g. shaded boxes)
  • Highlighting particular rows (e.g. to highlight the just-added/edited entity)

Table content should be refreshed using AJAX calls where appropriate, e.g. while paging, sorting, searching, after row-level actions, quick edit.

Open issues:

  • Search query syntax: 1) simple: searching a predefined (in code) column for the entered text (prefix, case insensitive), 2) supporting some more advanced syntax (e.g. based on the columns the data grid declares, "name: test, price: 0.2")
  • [optional] Table column customization (allow the user to select the columns to display)
  • [optional] Keyboard navigation (e.g. Shift+Alt+PgUp/Down)
  • [optional] Client-side caching of rows (up to a specified memory limit)
  • [optional] Back button support
  • [optional] A permanent link to the table with the current configuration of search/filters/sorting etc. (required when using AJAX updates)

Implementation notes:

  • the implementation must support undoing actions using the (possibly refactored) OX_UI_Undoable infrastructure
  • consider adding emptyMessageViewScript and emptyFilteringResult, to: load view scripts only when the message will be displayed, simplify caller's call, make the emptyFilteringResult message richer (provide seach and filter values as view script variables)
  • improve the scenario, where a row-level action is invoked on a filtered / not first page of a result set and is redirected back to the table screen. Currently, the filtering criteria are not remembered, which means the affected row is not shown any more. There are two strategies here (not mutually exclusive): 1) support row-level actions that perform a full page refresh and redirect back to the table with all filters as they were when the action was performed, 2) for certain cases, we can perform an AJAX refresh of the table after some row-level actions (if the other parts of the screen, such as tabs / menu don't change, if the action does not change the order of rows).

Bugs:

  • search for "X", go to page 2, remove search, the table will still start at page two, which is kind of weird. Changing search should reset paging.


 All   Comments   Work Log   Change History   FishEye   Crucible   Builds      Sort Order: Ascending order - Click to sort in descending order
Change by Stanislaw Osinski - 30/Sep/09 01:22 PM
Field Original Value New Value
Status Needs Verification [ 10000 ] Verified [ 10001 ]

Change by Stanislaw Osinski - 30/Sep/09 01:22 PM
Link This issue is depended on by AS-1 [ AS-1 ]

Change by Stanislaw Osinski - 30/Sep/09 01:27 PM
Description Design and implement a reusable data grid component for displaying lists of items. The implementation should include all the required PHP and client-side code (possibly based on some jQuery plugin).

The data grid should support:

* Paging
* Filtering
* Sorting by selected columns
* Searching (displaying only those rows that match a text query)
* Row selection, performing actions on the selected rows
* All rows selection (select all rows matching search / filter), performing actions on all rows
* Quick edit support
* Starring (favourites)
* Customized rendering of table cells, ranging from a simple string fetched from the row's backing object property, through simple links to rendering custom helpers (e.g. shaded boxes)

Table content should be refreshed using AJAX calls where appropriate, e.g. while paging, sorting, searching, after row-level actions, quick edit.

Open issues:

* Search query syntax: 1) simple: searching a predefined (in code) column for the entered text (prefix, case insensitive), 2) supporting some more advanced syntax (e.g. based on the columns the data grid declares, "name: test, price: 0.2")
* [optional] Table column customization (allow the user to select the columns to display)
* [optional] Keyboard navigation
* [optional] Client-side caching of rows (up to a specified memory limit)

Design and implement a reusable data grid component for displaying lists of items. The implementation should include all the required PHP and client-side code (possibly based on some jQuery plugin).

The data grid should support:

* Paging
* Filtering
* Sorting by selected columns
* Searching (displaying only those rows that match a text query)
* Row selection, performing actions on the selected rows
* All rows selection (select all rows matching search / filter), performing actions on all rows
* Quick edit support
* Starring (favourites)
* Rendering row labels (tags)
* Customized rendering of table cells, ranging from a simple string fetched from the row's backing object property, through simple links to rendering custom helpers (e.g. shaded boxes)

Table content should be refreshed using AJAX calls where appropriate, e.g. while paging, sorting, searching, after row-level actions, quick edit.

Open issues:

* Search query syntax: 1) simple: searching a predefined (in code) column for the entered text (prefix, case insensitive), 2) supporting some more advanced syntax (e.g. based on the columns the data grid declares, "name: test, price: 0.2")
* [optional] Table column customization (allow the user to select the columns to display)
* [optional] Keyboard navigation
* [optional] Client-side caching of rows (up to a specified memory limit)


Change by Stanislaw Osinski - 01/Oct/09 06:07 AM
Description Design and implement a reusable data grid component for displaying lists of items. The implementation should include all the required PHP and client-side code (possibly based on some jQuery plugin).

The data grid should support:

* Paging
* Filtering
* Sorting by selected columns
* Searching (displaying only those rows that match a text query)
* Row selection, performing actions on the selected rows
* All rows selection (select all rows matching search / filter), performing actions on all rows
* Quick edit support
* Starring (favourites)
* Rendering row labels (tags)
* Customized rendering of table cells, ranging from a simple string fetched from the row's backing object property, through simple links to rendering custom helpers (e.g. shaded boxes)

Table content should be refreshed using AJAX calls where appropriate, e.g. while paging, sorting, searching, after row-level actions, quick edit.

Open issues:

* Search query syntax: 1) simple: searching a predefined (in code) column for the entered text (prefix, case insensitive), 2) supporting some more advanced syntax (e.g. based on the columns the data grid declares, "name: test, price: 0.2")
* [optional] Table column customization (allow the user to select the columns to display)
* [optional] Keyboard navigation
* [optional] Client-side caching of rows (up to a specified memory limit)

Design and implement a reusable data grid component for displaying lists of items. The implementation should include all the required PHP and client-side code (possibly based on some jQuery plugin).

The data grid should support:

* Paging
* Filtering
* Sorting by selected columns
* Searching (displaying only those rows that match a text query)
* Row selection, performing actions on the selected rows
* All rows selection (select all rows matching search / filter), performing actions on all rows
* Quick edit support
* Starring (favourites)
* Rendering row labels (tags)
* Customized rendering of table cells, ranging from a simple string fetched from the row's backing object property, through simple links to rendering custom helpers (e.g. shaded boxes)

Table content should be refreshed using AJAX calls where appropriate, e.g. while paging, sorting, searching, after row-level actions, quick edit.

Open issues:

* Search query syntax: 1) simple: searching a predefined (in code) column for the entered text (prefix, case insensitive), 2) supporting some more advanced syntax (e.g. based on the columns the data grid declares, "name: test, price: 0.2")
* [optional] Table column customization (allow the user to select the columns to display)
* [optional] Keyboard navigation
* [optional] Client-side caching of rows (up to a specified memory limit)
* [optional] Back button support


Change by Stanislaw Osinski - 01/Oct/09 07:50 AM
Description Design and implement a reusable data grid component for displaying lists of items. The implementation should include all the required PHP and client-side code (possibly based on some jQuery plugin).

The data grid should support:

* Paging
* Filtering
* Sorting by selected columns
* Searching (displaying only those rows that match a text query)
* Row selection, performing actions on the selected rows
* All rows selection (select all rows matching search / filter), performing actions on all rows
* Quick edit support
* Starring (favourites)
* Rendering row labels (tags)
* Customized rendering of table cells, ranging from a simple string fetched from the row's backing object property, through simple links to rendering custom helpers (e.g. shaded boxes)

Table content should be refreshed using AJAX calls where appropriate, e.g. while paging, sorting, searching, after row-level actions, quick edit.

Open issues:

* Search query syntax: 1) simple: searching a predefined (in code) column for the entered text (prefix, case insensitive), 2) supporting some more advanced syntax (e.g. based on the columns the data grid declares, "name: test, price: 0.2")
* [optional] Table column customization (allow the user to select the columns to display)
* [optional] Keyboard navigation
* [optional] Client-side caching of rows (up to a specified memory limit)
* [optional] Back button support

Design and implement a reusable data grid component for displaying lists of items. The implementation should include all the required PHP and client-side code (possibly based on some jQuery plugin).

The data grid should support:

* Paging
* Filtering
* Sorting by selected columns
* Searching (displaying only those rows that match a text query)
* Row selection, performing actions on the selected rows
* All rows selection (select all rows matching search / filter), performing actions on all rows
* Quick edit support
* Starring (favourites)
* Rendering row labels (tags)
* Customized rendering of table cells, ranging from a simple string fetched from the row's backing object property, through simple links to rendering custom helpers (e.g. shaded boxes)

Table content should be refreshed using AJAX calls where appropriate, e.g. while paging, sorting, searching, after row-level actions, quick edit.

Open issues:

* Search query syntax: 1) simple: searching a predefined (in code) column for the entered text (prefix, case insensitive), 2) supporting some more advanced syntax (e.g. based on the columns the data grid declares, "name: test, price: 0.2")
* [optional] Table column customization (allow the user to select the columns to display)
* [optional] Keyboard navigation (e.g. Shift+Alt+PgUp/Down)
* [optional] Client-side caching of rows (up to a specified memory limit)
* [optional] Back button support


Change by Stanislaw Osinski - 01/Oct/09 07:58 AM
Priority Major [ 3 ] Critical [ 2 ]

Change by Stanislaw Osinski - 01/Oct/09 08:32 AM
Description Design and implement a reusable data grid component for displaying lists of items. The implementation should include all the required PHP and client-side code (possibly based on some jQuery plugin).

The data grid should support:

* Paging
* Filtering
* Sorting by selected columns
* Searching (displaying only those rows that match a text query)
* Row selection, performing actions on the selected rows
* All rows selection (select all rows matching search / filter), performing actions on all rows
* Quick edit support
* Starring (favourites)
* Rendering row labels (tags)
* Customized rendering of table cells, ranging from a simple string fetched from the row's backing object property, through simple links to rendering custom helpers (e.g. shaded boxes)

Table content should be refreshed using AJAX calls where appropriate, e.g. while paging, sorting, searching, after row-level actions, quick edit.

Open issues:

* Search query syntax: 1) simple: searching a predefined (in code) column for the entered text (prefix, case insensitive), 2) supporting some more advanced syntax (e.g. based on the columns the data grid declares, "name: test, price: 0.2")
* [optional] Table column customization (allow the user to select the columns to display)
* [optional] Keyboard navigation (e.g. Shift+Alt+PgUp/Down)
* [optional] Client-side caching of rows (up to a specified memory limit)
* [optional] Back button support

Design and implement a reusable data grid component for displaying lists of items. The implementation should include all the required PHP and client-side code (possibly based on some jQuery plugin).

The data grid should support:

* Paging
* Filtering
* Sorting by selected columns
* Searching (displaying only those rows that match a text query)
* Row selection, performing actions on the selected rows
* All rows selection (select all rows matching search / filter), performing actions on all rows
* Quick edit support
* Preview support (e.g. ad preview)
* Starring (favourites)
* Rendering row labels (tags)
* Customized rendering of table cells, ranging from a simple string fetched from the row's backing object property, through simple links to rendering custom helpers (e.g. shaded boxes)

Table content should be refreshed using AJAX calls where appropriate, e.g. while paging, sorting, searching, after row-level actions, quick edit.

Open issues:

* Search query syntax: 1) simple: searching a predefined (in code) column for the entered text (prefix, case insensitive), 2) supporting some more advanced syntax (e.g. based on the columns the data grid declares, "name: test, price: 0.2")
* [optional] Table column customization (allow the user to select the columns to display)
* [optional] Keyboard navigation (e.g. Shift+Alt+PgUp/Down)
* [optional] Client-side caching of rows (up to a specified memory limit)
* [optional] Back button support


Change by Stanislaw Osinski - 06/Oct/09 07:20 AM
Description Design and implement a reusable data grid component for displaying lists of items. The implementation should include all the required PHP and client-side code (possibly based on some jQuery plugin).

The data grid should support:

* Paging
* Filtering
* Sorting by selected columns
* Searching (displaying only those rows that match a text query)
* Row selection, performing actions on the selected rows
* All rows selection (select all rows matching search / filter), performing actions on all rows
* Quick edit support
* Preview support (e.g. ad preview)
* Starring (favourites)
* Rendering row labels (tags)
* Customized rendering of table cells, ranging from a simple string fetched from the row's backing object property, through simple links to rendering custom helpers (e.g. shaded boxes)

Table content should be refreshed using AJAX calls where appropriate, e.g. while paging, sorting, searching, after row-level actions, quick edit.

Open issues:

* Search query syntax: 1) simple: searching a predefined (in code) column for the entered text (prefix, case insensitive), 2) supporting some more advanced syntax (e.g. based on the columns the data grid declares, "name: test, price: 0.2")
* [optional] Table column customization (allow the user to select the columns to display)
* [optional] Keyboard navigation (e.g. Shift+Alt+PgUp/Down)
* [optional] Client-side caching of rows (up to a specified memory limit)
* [optional] Back button support

Design and implement a reusable data grid component for displaying lists of items. The implementation should include all the required PHP and client-side code (possibly based on some jQuery plugin).

The data grid should support:

* Paging
* Filtering
* Sorting by selected columns
* Searching (displaying only those rows that match a text query)
* Row selection, performing actions on the selected rows (some tables may have many possible actions, we may not be able to show them all right away)
* All rows selection (select all rows matching search / filter), performing actions on all rows
* Quick edit support
* Preview support (e.g. ad preview)
* Starring (favourites)
* Rendering row labels (tags)
* Customized rendering of table cells, ranging from a simple string fetched from the row's backing object property, through simple links to rendering custom helpers (e.g. shaded boxes)

Table content should be refreshed using AJAX calls where appropriate, e.g. while paging, sorting, searching, after row-level actions, quick edit.

Open issues:

* Search query syntax: 1) simple: searching a predefined (in code) column for the entered text (prefix, case insensitive), 2) supporting some more advanced syntax (e.g. based on the columns the data grid declares, "name: test, price: 0.2")
* [optional] Table column customization (allow the user to select the columns to display)
* [optional] Keyboard navigation (e.g. Shift+Alt+PgUp/Down)
* [optional] Client-side caching of rows (up to a specified memory limit)
* [optional] Back button support
* [optional] A permanent link to the table with the current configuration of search/filters/sorting etc. (required when using AJAX updates)


Change by Stanislaw Osinski - 06/Oct/09 10:47 AM
Fix Version/s Milestone 36 [ 11137 ]

Change by Stanislaw Osinski - 07/Oct/09 06:04 AM
Description Design and implement a reusable data grid component for displaying lists of items. The implementation should include all the required PHP and client-side code (possibly based on some jQuery plugin).

The data grid should support:

* Paging
* Filtering
* Sorting by selected columns
* Searching (displaying only those rows that match a text query)
* Row selection, performing actions on the selected rows (some tables may have many possible actions, we may not be able to show them all right away)
* All rows selection (select all rows matching search / filter), performing actions on all rows
* Quick edit support
* Preview support (e.g. ad preview)
* Starring (favourites)
* Rendering row labels (tags)
* Customized rendering of table cells, ranging from a simple string fetched from the row's backing object property, through simple links to rendering custom helpers (e.g. shaded boxes)

Table content should be refreshed using AJAX calls where appropriate, e.g. while paging, sorting, searching, after row-level actions, quick edit.

Open issues:

* Search query syntax: 1) simple: searching a predefined (in code) column for the entered text (prefix, case insensitive), 2) supporting some more advanced syntax (e.g. based on the columns the data grid declares, "name: test, price: 0.2")
* [optional] Table column customization (allow the user to select the columns to display)
* [optional] Keyboard navigation (e.g. Shift+Alt+PgUp/Down)
* [optional] Client-side caching of rows (up to a specified memory limit)
* [optional] Back button support
* [optional] A permanent link to the table with the current configuration of search/filters/sorting etc. (required when using AJAX updates)

Design and implement a reusable data grid component for displaying lists of items. The implementation should include all the required PHP and client-side code (possibly based on some jQuery plugin).

The data grid should support:

* Paging
* Filtering
* Sorting by selected columns
* Searching (displaying only those rows that match a text query)
* Row selection, performing actions on the selected rows (some tables may have many possible actions, we may not be able to show them all right away)
* All rows selection (select all rows matching search / filter), performing actions on all rows
* Quick edit support
* Preview support (e.g. ad preview)
* Starring (favourites)
* Rendering row labels (tags)
* Customized rendering of table cells, ranging from a simple string fetched from the row's backing object property, through simple links to rendering custom helpers (e.g. shaded boxes)

Table content should be refreshed using AJAX calls where appropriate, e.g. while paging, sorting, searching, after row-level actions, quick edit.

Open issues:

* Search query syntax: 1) simple: searching a predefined (in code) column for the entered text (prefix, case insensitive), 2) supporting some more advanced syntax (e.g. based on the columns the data grid declares, "name: test, price: 0.2")
* [optional] Table column customization (allow the user to select the columns to display)
* [optional] Keyboard navigation (e.g. Shift+Alt+PgUp/Down)
* [optional] Client-side caching of rows (up to a specified memory limit)
* [optional] Back button support
* [optional] A permanent link to the table with the current configuration of search/filters/sorting etc. (required when using AJAX updates)

Implementation notes:

* the implementation must support undoing actions using the (possibly refactored) {{OX_UI_Undoable}} infrastructure

Change by Stanislaw Osinski - 07/Oct/09 08:45 AM
Description Design and implement a reusable data grid component for displaying lists of items. The implementation should include all the required PHP and client-side code (possibly based on some jQuery plugin).

The data grid should support:

* Paging
* Filtering
* Sorting by selected columns
* Searching (displaying only those rows that match a text query)
* Row selection, performing actions on the selected rows (some tables may have many possible actions, we may not be able to show them all right away)
* All rows selection (select all rows matching search / filter), performing actions on all rows
* Quick edit support
* Preview support (e.g. ad preview)
* Starring (favourites)
* Rendering row labels (tags)
* Customized rendering of table cells, ranging from a simple string fetched from the row's backing object property, through simple links to rendering custom helpers (e.g. shaded boxes)

Table content should be refreshed using AJAX calls where appropriate, e.g. while paging, sorting, searching, after row-level actions, quick edit.

Open issues:

* Search query syntax: 1) simple: searching a predefined (in code) column for the entered text (prefix, case insensitive), 2) supporting some more advanced syntax (e.g. based on the columns the data grid declares, "name: test, price: 0.2")
* [optional] Table column customization (allow the user to select the columns to display)
* [optional] Keyboard navigation (e.g. Shift+Alt+PgUp/Down)
* [optional] Client-side caching of rows (up to a specified memory limit)
* [optional] Back button support
* [optional] A permanent link to the table with the current configuration of search/filters/sorting etc. (required when using AJAX updates)

Implementation notes:

* the implementation must support undoing actions using the (possibly refactored) {{OX_UI_Undoable}} infrastructure
Design and implement a reusable data grid component for displaying lists of items. The implementation should include all the required PHP and client-side code (possibly based on some jQuery plugin).

The data grid should support:

* Paging
* Filtering
* Sorting by selected columns
* Searching (displaying only those rows that match a text query)
* Row selection, performing actions on the selected rows (some tables may have many possible actions, we may not be able to show them all right away)
* All rows selection (select all rows matching search / filter), performing actions on all rows
* Quick edit support
* Preview support (e.g. ad preview)
* Starring (favourites)
* Rendering row labels (tags)
* Customized rendering of table cells, ranging from a simple string fetched from the row's backing object property, through simple links to rendering custom helpers (e.g. shaded boxes)
* Highlighting particular rows (e.g. to highlight the just-added/edited entity)

Table content should be refreshed using AJAX calls where appropriate, e.g. while paging, sorting, searching, after row-level actions, quick edit.

Open issues:

* Search query syntax: 1) simple: searching a predefined (in code) column for the entered text (prefix, case insensitive), 2) supporting some more advanced syntax (e.g. based on the columns the data grid declares, "name: test, price: 0.2")
* [optional] Table column customization (allow the user to select the columns to display)
* [optional] Keyboard navigation (e.g. Shift+Alt+PgUp/Down)
* [optional] Client-side caching of rows (up to a specified memory limit)
* [optional] Back button support
* [optional] A permanent link to the table with the current configuration of search/filters/sorting etc. (required when using AJAX updates)

Implementation notes:

* the implementation must support undoing actions using the (possibly refactored) {{OX_UI_Undoable}} infrastructure

Stanislaw Osinski - 13/Oct/09 11:06 AM
Time Worked: 21.5h
Design work with Marcin, definition of interfaces, implementation of table rendering core, cell renderers, row sources, AJAX paging and searching, example code in UI lib demo.
Change by Stanislaw Osinski - 13/Oct/09 11:08 AM
Remaining Estimate 0h [ 0 ]
Time Spent 21.5h [ 77400 ]

Change by Stanislaw Osinski - 14/Oct/09 12:32 PM
Description Design and implement a reusable data grid component for displaying lists of items. The implementation should include all the required PHP and client-side code (possibly based on some jQuery plugin).

The data grid should support:

* Paging
* Filtering
* Sorting by selected columns
* Searching (displaying only those rows that match a text query)
* Row selection, performing actions on the selected rows (some tables may have many possible actions, we may not be able to show them all right away)
* All rows selection (select all rows matching search / filter), performing actions on all rows
* Quick edit support
* Preview support (e.g. ad preview)
* Starring (favourites)
* Rendering row labels (tags)
* Customized rendering of table cells, ranging from a simple string fetched from the row's backing object property, through simple links to rendering custom helpers (e.g. shaded boxes)
* Highlighting particular rows (e.g. to highlight the just-added/edited entity)

Table content should be refreshed using AJAX calls where appropriate, e.g. while paging, sorting, searching, after row-level actions, quick edit.

Open issues:

* Search query syntax: 1) simple: searching a predefined (in code) column for the entered text (prefix, case insensitive), 2) supporting some more advanced syntax (e.g. based on the columns the data grid declares, "name: test, price: 0.2")
* [optional] Table column customization (allow the user to select the columns to display)
* [optional] Keyboard navigation (e.g. Shift+Alt+PgUp/Down)
* [optional] Client-side caching of rows (up to a specified memory limit)
* [optional] Back button support
* [optional] A permanent link to the table with the current configuration of search/filters/sorting etc. (required when using AJAX updates)

Implementation notes:

* the implementation must support undoing actions using the (possibly refactored) {{OX_UI_Undoable}} infrastructure
Design and implement a reusable data grid component for displaying lists of items. The implementation should include all the required PHP and client-side code (possibly based on some jQuery plugin).

The data grid should support:

* Paging
* Filtering
* Sorting by selected columns
* Searching (displaying only those rows that match a text query)
* Row selection, performing actions on the selected rows (some tables may have many possible actions, we may not be able to show them all right away)
* All rows selection (select all rows matching search / filter), performing actions on all rows
* Quick edit support
* Preview support (e.g. ad preview)
* Starring (favourites)
* Rendering row labels (tags)
* Customized rendering of table cells, ranging from a simple string fetched from the row's backing object property, through simple links to rendering custom helpers (e.g. shaded boxes)
* Highlighting particular rows (e.g. to highlight the just-added/edited entity)

Table content should be refreshed using AJAX calls where appropriate, e.g. while paging, sorting, searching, after row-level actions, quick edit.

Open issues:

* Search query syntax: 1) simple: searching a predefined (in code) column for the entered text (prefix, case insensitive), 2) supporting some more advanced syntax (e.g. based on the columns the data grid declares, "name: test, price: 0.2")
* [optional] Table column customization (allow the user to select the columns to display)
* [optional] Keyboard navigation (e.g. Shift+Alt+PgUp/Down)
* [optional] Client-side caching of rows (up to a specified memory limit)
* [optional] Back button support
* [optional] A permanent link to the table with the current configuration of search/filters/sorting etc. (required when using AJAX updates)

Implementation notes:

* the implementation must support undoing actions using the (possibly refactored) {{OX_UI_Undoable}} infrastructure
* consider adding {{emptyMessageViewScript}} and {{emptyFilteringResult}}, to: load view scripts only when the message will be displayed, simplify caller's call, make the emptyFilteringResult message richer (provide seach and filter values as view script variables)
* improve the scenario, where a row-level action is invoked on a filtered / not first page of a result set and is redirected back to the table screen. Currently, the filtering criteria are not remembered, which means the affected row is not shown any more. There are two strategies here (not mutually exclusive): 1) support row-level actions that perform a full page refresh and redirect back to the table with all filters as they were when the action was performed, 2) for certain cases, we can perform an AJAX refresh of the table after some row-level actions (if the other parts of the screen, such as tabs / menu don't change, if the action does not change the order of rows).

Change by Stanislaw Osinski - 20/Oct/09 06:27 PM
Description Design and implement a reusable data grid component for displaying lists of items. The implementation should include all the required PHP and client-side code (possibly based on some jQuery plugin).

The data grid should support:

* Paging
* Filtering
* Sorting by selected columns
* Searching (displaying only those rows that match a text query)
* Row selection, performing actions on the selected rows (some tables may have many possible actions, we may not be able to show them all right away)
* All rows selection (select all rows matching search / filter), performing actions on all rows
* Quick edit support
* Preview support (e.g. ad preview)
* Starring (favourites)
* Rendering row labels (tags)
* Customized rendering of table cells, ranging from a simple string fetched from the row's backing object property, through simple links to rendering custom helpers (e.g. shaded boxes)
* Highlighting particular rows (e.g. to highlight the just-added/edited entity)

Table content should be refreshed using AJAX calls where appropriate, e.g. while paging, sorting, searching, after row-level actions, quick edit.

Open issues:

* Search query syntax: 1) simple: searching a predefined (in code) column for the entered text (prefix, case insensitive), 2) supporting some more advanced syntax (e.g. based on the columns the data grid declares, "name: test, price: 0.2")
* [optional] Table column customization (allow the user to select the columns to display)
* [optional] Keyboard navigation (e.g. Shift+Alt+PgUp/Down)
* [optional] Client-side caching of rows (up to a specified memory limit)
* [optional] Back button support
* [optional] A permanent link to the table with the current configuration of search/filters/sorting etc. (required when using AJAX updates)

Implementation notes:

* the implementation must support undoing actions using the (possibly refactored) {{OX_UI_Undoable}} infrastructure
* consider adding {{emptyMessageViewScript}} and {{emptyFilteringResult}}, to: load view scripts only when the message will be displayed, simplify caller's call, make the emptyFilteringResult message richer (provide seach and filter values as view script variables)
* improve the scenario, where a row-level action is invoked on a filtered / not first page of a result set and is redirected back to the table screen. Currently, the filtering criteria are not remembered, which means the affected row is not shown any more. There are two strategies here (not mutually exclusive): 1) support row-level actions that perform a full page refresh and redirect back to the table with all filters as they were when the action was performed, 2) for certain cases, we can perform an AJAX refresh of the table after some row-level actions (if the other parts of the screen, such as tabs / menu don't change, if the action does not change the order of rows).
Design and implement a reusable data grid component for displaying lists of items. The implementation should include all the required PHP and client-side code (possibly based on some jQuery plugin).

The data grid should support:

* Paging
* Filtering
* Sorting by selected columns
* Searching (displaying only those rows that match a text query)
* Row selection, performing actions on the selected rows (some tables may have many possible actions, we may not be able to show them all right away)
* All rows selection (select all rows matching search / filter), performing actions on all rows
* Quick edit support
* Preview support (e.g. ad preview)
* Starring (favourites)
* Rendering row labels (tags)
* Customized rendering of table cells, ranging from a simple string fetched from the row's backing object property, through simple links to rendering custom helpers (e.g. shaded boxes)
* Highlighting particular rows (e.g. to highlight the just-added/edited entity)

Table content should be refreshed using AJAX calls where appropriate, e.g. while paging, sorting, searching, after row-level actions, quick edit.

Open issues:

* Search query syntax: 1) simple: searching a predefined (in code) column for the entered text (prefix, case insensitive), 2) supporting some more advanced syntax (e.g. based on the columns the data grid declares, "name: test, price: 0.2")
* [optional] Table column customization (allow the user to select the columns to display)
* [optional] Keyboard navigation (e.g. Shift+Alt+PgUp/Down)
* [optional] Client-side caching of rows (up to a specified memory limit)
* [optional] Back button support
* [optional] A permanent link to the table with the current configuration of search/filters/sorting etc. (required when using AJAX updates)

Implementation notes:

* the implementation must support undoing actions using the (possibly refactored) {{OX_UI_Undoable}} infrastructure
* consider adding {{emptyMessageViewScript}} and {{emptyFilteringResult}}, to: load view scripts only when the message will be displayed, simplify caller's call, make the emptyFilteringResult message richer (provide seach and filter values as view script variables)
* improve the scenario, where a row-level action is invoked on a filtered / not first page of a result set and is redirected back to the table screen. Currently, the filtering criteria are not remembered, which means the affected row is not shown any more. There are two strategies here (not mutually exclusive): 1) support row-level actions that perform a full page refresh and redirect back to the table with all filters as they were when the action was performed, 2) for certain cases, we can perform an AJAX refresh of the table after some row-level actions (if the other parts of the screen, such as tabs / menu don't change, if the action does not change the order of rows).

Bugs:
* search for "X", go to page 2, remove search, the table will still start at page two, which is kind of weird. Changing search should reset paging.

Change by andrzej.swedrzynski - 17/Nov/09 01:47 PM
Fix Version/s Next Milestone [ 10662 ]
Fix Version/s Milestone 36 [ 11137 ]