diff --git a/static/scripts/mvc/data.js b/static/scripts/mvc/data.js index bddd2c1a735..ed244a3e7c5 100644 --- a/static/scripts/mvc/data.js +++ b/static/scripts/mvc/data.js @@ -1,5 +1,10 @@ define(["libs/backbone/backbone-relational"], function() { +/** + * Dataset metedata. + */ +var DatasetMetadata = Backbone.RelationalModel.extend({}); + /** * A dataset. In Galaxy, datasets are associated with a history, so * this object is also known as a HistoryDatasetAssociation. @@ -9,7 +14,33 @@ var Dataset = Backbone.RelationalModel.extend({ id: '', type: '', name: '', - hda_ldda: 'hda' + hda_ldda: 'hda', + metadata: null + }, + + initialize: function() { + // -- Create and initialize metadata. -- + + var metadata = new DatasetMetadata(); + + // Move metadata from dataset attributes to metadata object. + _.each(_.keys(this.attributes), function(k) { + if (k.indexOf('metadata_') === 0) { + // Found metadata. + var new_key = k.split('metadata_')[1]; + metadata.set(new_key, this.attributes[k]); + delete this.attributes[k]; + } + }, this); + + this.set('metadata', metadata); + }, + + /** + * Returns dataset metadata for a given attribute. + */ + get_metadata: function(attribute) { + return this.attributes.metadata.get(attribute); }, urlRoot: galaxy_paths.get('datasets_url')