change-list

This component provides an editable model list.

Example usage

## route.js

...
  model() {
    return {
      model_name: 'sales/category',
      label: 'category',
      app_name: 'sales',
      fields: [
        { 
          name: 'name',
          label: 'Name',
          widget: 'text',
        }
      ],
      list_display: ['name'],
      list_editable: ['name']
    };
  }


## template.hbs

{{change-list
  model_name=model.model_name
  label=model.label
  app_name=model.app_name
  fields=model.fields
  list_display=model.list_display
  list_editable=model.list_editable
}}

Options

model_name

Required: Yes Default: Sample value: 'sales/product'

Full model name.

label

Required: Yes Default: Sample value: 'product'

Label of the model, used to compute the title of the list.

app_name

Required: No Default: undefined Sample value: 'sales'

Used as parameter to the changeFormRoute

fields

Required: Yes Default: Sample value: [{ name: 'name', label: 'Name', widget: 'text' }]

A list of fields and their attributes. You must a least specify the name (as in fieldname) for each field. For more information about the other parameters, please see the widgets section.

list_display

Required: Yes Default: Sample value: ['name']

The list of fieldnames that will be displayed for each record.

Depending on how it is acquired, the content of fields might have more fields than list_display

Advanced usage: Instead of field names, list_display can receive pojo's similar to the ones received by fields. Those pojo's can override properties of a known field (eg: different label or widget) or define an unknown field used only as display_field (eg: a computed property)

list_editable

Required: No Default: [] Sample value: ['name']

The list of fields that should be editable directly in the records list.

filter_fields

Required: No Default: [] Sample value: ['status', 'category_id']

The list of fields on which it is possible to filter the list of records on exact values.

:warning: For belongsTo's you can also use the form "fieldname_id" depending on your backend requirements. This will be sent to the api as ?fieldname=value.

Advanced usage: Instead of field names, list_display can receive pojo's similar to the ones received by fields. Those pojo's can override properties of a known field (eg: different label or widget) or define an unknown field used only as display_field (eg: a computed property).

:warning: if you define a filter_field (via a pojo) that represents a relationship. It is advised to:

search_enabled

Required: No Default: false Sample value: true

Wheather or not a search field should be displayed (will be sent to the api as ?search=seachValue)

ordering_fields

Required: No Default: [] Sample value: ['name', 'created']

A list of fields by which the list should be made sortable. This is an api operation and the information will be sent to the api as ?ordering=(-)value

sortableBy

Required: No Default: 'id' Sample value: 'position'

A positive integer field by which the record list is orderable. If specified, a handle will be displayed on the left of each record in the list to allow re-ordering

changeFormRoute

Required: No Default: undefined Sample value: 'form'

The name of the route reponsible for record edition/addition. This route will be passed 3 arguments: "app_name", "model_name" and id as in 'sales', 'category' and 3

cutom_actions

Required: No Default: undefined Sample value: See actions

Actions that can be performed on each record on the list or in bulk mode.

bulk_actions

Required: No Default: undefined Sample value: See actions

Actions to be perform in bulk (all selected records)

conditionalFormat

Required: No Default: undefined Sample value: {success: [{operator: 'empty', property_path: 'errors'}]}

A POJO having css class names as keys of lists of conditions. Each condition statement can also have a priority property that will determine in which order conditions are evaluated. Once a condition is matched, that value is returned and evaluation stops.

supervisor

Required: No Default: undined Sample value: this

When a single supervisor is set for one or several change-list's, changes resulting from any of the "supervised" change-list actions will automatically update the relevant "supervised" change-list.

Advanced use: However the supervisor will not be triggered if the response object contains _trigger_supervisor: false