diff -r da3c6ba8a80b -r 523ca6e73353 cms/app-client/app/models/document.js --- a/cms/app-client/app/models/document.js Sun Jul 17 14:41:03 2016 +0200 +++ b/cms/app-client/app/models/document.js Sun Jul 17 22:17:24 2016 +0200 @@ -8,6 +8,13 @@ issued: DS.attr('date'), title: DS.attr('string'), language: DS.attr('string'), + publisher: DS.attr('string'), + + publishers: DS.attr({ defaultValue: function() { return []; } }), + contributors: DS.attr({ defaultValue: function() { return []; } }), + geoInfo: DS.attr({ defaultValue: function() { return {}; } }), + mediaArray: DS.attr({ defaultValue: function() { return []; } }), + duration_ms: DS.attr('number', { defaultValue: function() { var self = this; @@ -20,26 +27,25 @@ return duration; } }), - publisher: DS.attr('string'), - publishers: DS.attr({ defaultValue: function() { return []; } }), - contributors: DS.attr({ defaultValue: function() { return []; } }), - geoInfo: DS.attr({ defaultValue: function() { return {}; } }), - mediaArray: DS.attr({ defaultValue: function() { return []; } }), - mediaList: Ember.computed('mediaArray', function() { - var res = []; + media: Ember.computed('mediaArray', function() { + var array = []; var mp3 = null; - _.forEach(this.get('mediaArray'), function(m) { - if(m.format === 'audio/mpeg') { - mp3 = m; - } else if(m.format.startsWith('audio/')) { - res.push(m); + _.forEach(this.get('mediaArray'), function(media) { + var index = array.findIndex(element => element.format === media.format); + if(index > -1) { + if (media.master) { + array.splice(index, 1, media); + } + } else { + array.push(media); } }); - if(mp3) { - res.unshift(mp3); - } - return res; + return array; + }), + + video: Ember.computed('media', function() { + return this.get('media').findIndex(element => element.format.match(new RegExp('^video/'))) > -1; }), duration: Ember.computed('duration_ms', function() {