REST-ful tables
Summary
A table whose entities/rows are retrieved, added and updated via rest (CRUD). It uses backbone.js to sync the tables state back to the server and vice versa, avoiding page refreshes.
Status
API status: | general |
---|---|
Web resource key: |
com.atlassian.auiplugin:aui-restfultable
|
AMD Module key: | N/A |
Experimental API: | 3.7.0 |
General API: | 5.8 |
Working example
An example can be found by running the AUI refapp, and navigating to the restfultable test page
Code
Below is an example table to configure versions for a JIRA project.
Options
The following options are available when creating a new AJS.RestfulTable.
Required | Name | Description | Type | Default |
---|---|---|---|---|
el |
The <table> element |
String, HTMLElement, jQuery |
None |
|
resources |
A map of resources:
|
String, Function |
None |
|
columns |
An array of columns to render |
Array |
None |
|
noEntriesMsg |
A message that will be displayed in the table when there are no entries |
String |
None |
|
model |
Backbone.Model representation used for entities AJS.RestfulTable.EntryModel |
AJS.RestfulTable.EntryModel |
AJS.RestfulTable.EntryModel |
|
reverseOrder |
When all the entries are retrieved from the "all" resource, reverse the order. |
Boolean |
false |
|
autoFocus |
Whether or not to auto focus the first field of the create row |
Boolean |
false |
|
loadingMsg |
A message that will be displayed in the table when it is loading |
String |
Loading |
|
allowCreate |
Whether or not user can create new entries |
Boolean |
true |
|
allowEdit |
Whether or not the user can edit table |
Boolean |
true |
|
allowReorder |
Whether or not the user can reorder rows |
Boolean |
false |
|
allowDelete |
Whether or not a row can be deleted |
Boolean |
true |
|
createPosition |
If set to "bottom", creates new rows at the bottom of the table instead of the top. |
|||
id |
The id for the table. This id will be used to fire events specific to this instance. |
|||
cancelAccessKey |
Sets accesskey attribute |
|||
submitAccessKey |
Sets accesskey attribute |
|||
deleteConfirmationCallback |
Function returning promise. If promise is resolved row will be deleted, if rejected deletion will be prevented |
Function -> Promise |
Events
Events have 3 contexts in which they can be triggered.
AJS.RestfulTable
Name |
Description |
Arguments |
---|---|---|
AJS.RestfulTable.Events.INITIALIZED |
triggered when the table has finished initial render |
None |
AJS.RestfulTable.Events.ROW_INITIALIZED |
triggered when a row is rendered |
AJS.RestfulTable.Row |
AJS.RestfulTable.Events.ROW_ADDED |
triggered when a row is added to the RestfulTable |
AJS.RestfulTable.Row |
AJS.RestfulTable.Events.ROW_REMOVED |
triggered when a row is removed from the RestfulTable |
AJS.RestfulTable.Row |
AJS.RestfulTable.Events.EDIT_ROW |
triggered when a row edit is started by the user |
AJS.RestfulTable.EditRow |
AJS.RestfulTable.Events.REORDER_SUCCESS |
triggered when a successful drag and drop reordering of rows is performed |
XmlHttpRequest object |
AJS.RestfulTable.Events.SERVER_ERROR |
triggered when the server returns a non-200 response for an operation; at the table level, this is mainly drag and drop operations. |
|
AJS.RestfulTable.EditRow
Name |
Description |
Arguments |
---|---|---|
AJS.RestfulTable.Events.CANCEL |
Switches row back to read only mode, restoring values None |
None |
AJS.RestfulTable.Events.SAVE |
Sends updated values back to server and switches back to readonly mode <boolean> - whether to focus read-only view |
None |
AJS.RestfulTable.Events.CREATED |
Triggered when a new entry has been created |
None |
AJS.RestfulTable.Events.FOCUS |
Gives focused style, removing focus from any other row. |
<string> - name of field to focus |
AJS.RestfulTable.Events.BLUR |
Removes focused style, restoring focus back to the createRow |
None |
AJS.RestfulTable.Events.SUBMIT_STARTED |
Triggered when update/create request to server started |
None |
AJS.RestfulTable.Events.SUBMIT_FINISHED |
Triggered when update/create request to server finished |
None |
AJS.RestfulTable.Events.VALIDATION_ERROR |
Triggered when server returns validation errors |
Object - errors |
AJS.RestfulTable.Events.RENDER |
Triggered when row has rendered |
None |
AJS.RestfulTable.Row
Name |
Description |
Arguments |
---|---|---|
AJS.RestfulTable.Events.FOCUS |
Gives focused style, removing focus from any other row. |
None |
AJS.RestfulTable.Events.BLUR |
Removes focused style, restoring focus back to the createRow |
None |
AJS.RestfulTable.Events.UPDATED |
Fades row from blue to transparent |
None |
AJS.RestfulTable.Events.MODAL |
Disables all interactions on table, except for this row |
None |
AJS.RestfulTable.Events.MODELESS |
Enables all interactions on table |
None |
AJS.RestfulTable.Events.RENDER |
Triggered when row has rendered |
None |
Methods
Methods have 3 contexts in which they can be called
AJS.RestfulTable
Name |
Description |
Arguments |
Returns |
---|---|---|---|
addRow |
Adds row to collection and renders it |
<Backbone.Model> model |
AJS.RestfulTable |
getColumnCount |
Gets the number of columns in the table |
None |
Number |
isEmpty |
Returns true if there are no entries in the table |
None |
Boolean |
getModels |
Gets backbone collection |
None |
Backbone.Collection |
getTable |
Gets jQuery element for <table> |
None |
jQuery |
getTableBody |
Gets jQuery element for <tbody> |
None |
jQuery |
getCreateRow |
Gets view used for create row (first row in table) |
None |
AJS.RestfulTable.EditRow |
showNoEntriesMsg |
Shows message options.noEntriesMsg to the user if there are no entries |
None |
AJS.RestfulTable |
removeNoEntriesMsg |
Removes message options.noEntriesMsg to the user if there ARE entries |
None |
AJS.RestfulTable |
edit |
Converts readonly row to editable view |
<String> field - field name to focus |
AJS.RestfulTable.EditRow |
AJS.RestfulTable.EditRow
Name |
Description |
Arguments |
Returns |
---|---|---|---|
hasFocus |
Returns true if row has focused class |
None |
Boolean |
focus |
Focus specified field, first field or the first field with an error (in order) |
<String> field - field name to focus |
AJS.RestfulTable.EditRow |
unfocus |
Unfocuses row and disables its submit button |
None |
AJS.RestfulTable.EditRow |
disable |
Disables all fields and fades out row |
None |
AJS.RestfulTable.EditRow |
enable |
Enables all fields, and returns row to full opacity |
None |
AJS.RestfulTable.EditRow |
showLoading |
Shows loading indicator |
None |
AJS.RestfulTable.EditRow |
hideLoading |
Hides loading indicator |
None |
AJS.RestfulTable.EditRow |
submit |
Serialises form fields and updates client and server model |
<Boolean> focusUpdated - flag of whether to focus read-only view after successful submission |
AJS.RestfulTable.EditRow |
AJS.RestfulTable.Row
Name |
Description |
Arguments |
Returns |
---|---|---|---|
sync |
Save changed attributes back to server and re-render |
<object> attr |
AJS.RestfulTable.Row |
refresh |
Get model from server and re-render |
None |
AJS.RestfulTable.Row |
edit |
Switches row into edit mode |
None |
AJS.RestfulTable.Row |
focus |
Focuses row |
None |
AJS.RestfulTable.Row |
unfocus |
Unfocuses row |
None |
AJS.RestfulTable.Row |
showLoading |
Shows loading indicator |
None |
AJS.RestfulTable.Row |
hideLoading |
Hides loading indicator |
None |
AJS.RestfulTable.Row |
Setup
For a simple table you need only configure 3 options:
- el - The element you wish to populate
- resources
- all - Rest resource OR function that retrieves all entities
- self - Rest resource to sync a single entities state (CRUD)
- columns - Which properties of the entities to render. The id of a column maps to the property of an entity. This simple table can be extended by specifying your own model and column views:
- model - Allows you to modify and format what is sent and received from the server for each entity/row. Also allowing additional logic to be supplied to your views.
- column views - Allow you to specify custom renderers for the read/create/edit modes of individual columns.
Confirm
You want to delete row:
Are you sure?