Ember.DataAdapter Class packages/ember-extension-support/lib/data_adapter.js:20


PUBLIC

The DataAdapter helps a data persistence library interface with tools that debug Ember such as the Ember Extension for Chrome and Firefox.

This class will be extended by a persistence library which will override some of the methods with library-specific code.

The methods likely to be overridden are:

  • getFilters
  • detect
  • columnsForType
  • getRecords
  • getRecordColumnValues
  • getRecordKeywords
  • getRecordFilterValues
  • getRecordColor
  • observeRecord

The adapter will need to be registered in the application's container as dataAdapter:main.

Example:

1
2
3
4
5
6
7
Application.initializer({
  name: "data-adapter",

  initialize: function(application) {
    application.register('data-adapter:main', DS.DataAdapter);
  }
});
Show:

_getObjectsOnNamespaces

Array private

Loops over all namespaces and all objects attached to them.

Returns:

Array
Array of model type strings.

columnsForType

(type) Array private

Get the columns for a given model type.

Parameters:

type Class
The model type.

Returns:

Array
An array of columns of the following format: name: {String} The name of the column. desc: {String} Humanized description (what would show in a table column name).

detect

(klass) private

Detect whether a class is a model.

Test that against the model class of your persistence library.

Parameters:

klass Class
The class to test.

Returns:

boolean Whether the class is a model class or not.

getFilters

Array public

Specifies how records can be filtered. Records returned will need to have a filterValues property with a key for every name in the returned array.

Returns:

Array
List of objects defining filters. The object should have a `name` and `desc` property.

getModelTypes

Array private

Fetches all models defined in the application.

Returns:

Array
Array of model types.

getRecordColor

(record) String private

Each record can have a color that represents its state.

Parameters:

record Object
The record instance

Returns:

String
The records color. Possible options: black, red, blue, green.

getRecordColumnValues

Object private

Gets the values for each column.

Returns:

Object
Keys should match column names defined by the model type.

getRecordFilterValues

(record) Object private

Returns the values of filters defined by getFilters.

Parameters:

record Object
The record instance.

Returns:

Object
The filter values.

getRecordKeywords

Array private

Returns keywords to match when searching records.

Returns:

Array
Relevant keywords for search.

getRecords

Array private

Fetches all loaded records for a given type.

Returns:

Array
An array of records. This array will be observed for changes, so it should update when new records are added/removed.

observeModelType

(modelName, typesUpdated) Function private

Adds observers to a model type class.

Parameters:

modelName String
The model type name.
typesUpdated Function
Called when a type is modified.

Returns:

Function
The function to call to remove observers.

observerRecord

(record, recordUpdated) Function private

Observes all relevant properties and re-sends the wrapped record when a change occurs.

Parameters:

record Object
The record instance.
recordUpdated Function
The callback to call when a record is updated.

Returns:

Function
The function to call to remove all observers.

watchModelTypes

(typesAdded, typesUpdated) Function public

Fetch the model types and observe them for changes.

Parameters:

typesAdded Function
Callback to call to add types. Takes an array of objects containing wrapped types (returned from `wrapModelType`).
typesUpdated Function
Callback to call when a type has changed. Takes an array of objects containing wrapped types.

Returns:

Function
Method to call to remove all observers

watchRecords

(modelName, recordsAdded, recordsUpdated, recordsRemoved) Function public

Fetch the records of a given type and observe them for changes.

Parameters:

modelName String
The model name.
recordsAdded Function
Callback to call to add records. Takes an array of objects containing wrapped records. The object should have the following properties: columnValues: {Object} The key and value of a table cell. object: {Object} The actual record object.
recordsUpdated Function
Callback to call when a record has changed. Takes an array of objects containing wrapped records.
recordsRemoved Function
Callback to call when a record has removed. Takes the following parameters: index: The array index where the records were removed. count: The number of records removed.

Returns:

Function
Method to call to remove all observers.

willDestroy

private

Clear all observers before destruction

wrapModelType

(klass, modelName) Object private

Wraps a given model type and observes changes to it.

Parameters:

klass Class
A model class.
modelName String
Name of the class.

Returns:

Object
Contains the wrapped type and the function to remove observers Format: type: {Object} The wrapped type. The wrapped type has the following format: name: {String} The name of the type. count: {Integer} The number of records available. columns: {Columns} An array of columns to describe the record. object: {Class} The actual Model type class. release: {Function} The function to remove observers.

wrapRecord

(record) Object private

Wraps a record and observers changes to it.

Parameters:

record Object
The record instance.

Returns:

Object
The wrapped record. Format: columnValues: {Array} searchKeywords: {Array}
Show:

acceptsModelName

public

Ember Data > v1.0.0-beta.18 requires string model names to be passed around instead of the actual factories.

This is a stamp for the Ember Inspector to differentiate between the versions to be able to support older versions too.

attributeLimit

private

The number of attributes to send as columns. (Enough to make the record identifiable).

Default: 3

containerDebugAdapter

public

The container-debug-adapter which is used to list all models.

Default: undefined

releaseMethods

private

Stores all methods that clear observers. These methods will be called on destruction.