cms/app-client/app/models/document.js
author ymh <ymh.work@gmail.com>
Wed, 06 Jul 2016 14:22:24 +0200
changeset 229 744379451219
parent 220 2145b80776a3
child 242 523ca6e73353
permissions -rw-r--r--
add publisher and duration_ms to model

import DS from 'ember-data';
import Ember from 'ember';
import _ from 'lodash/lodash';

export default DS.Model.extend({

    uri: DS.attr('string'),
    issued: DS.attr('date'),
    title: DS.attr('string'),
    language: DS.attr('string'),
    duration_ms: DS.attr('number', {
        defaultValue: function() {
            var self = this;
            var duration = 0;
            Object.keys(this.get('mediaArray')).forEach(function(key) {
                if (!duration && self.get('mediaArray')[key].extent_ms) {
                    duration = self.get('mediaArray')[key].extent_ms;
                }
            });
            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 = [];
        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);
            }
        });
        if(mp3) {
            res.unshift(mp3);
        }
        return res;
    }),

    duration: Ember.computed('duration_ms', function() {
        return this.get('duration_ms')/1000;
    }),

    publishers_disp: Ember.computed('publisher', 'publishers', function() {
        return this.get('publisher')?this.get('publisher'):this.get('publishers').join(', ');
    })

});