Reorder media files for notice. Make the most compressed one (mp3, mp4) the default. Closes #0025878
authorymh <ymh.work@gmail.com>
Tue, 17 Jan 2017 13:30:54 +0100
changeset 487 514dc9b6f875
parent 486 44a5801ed246
child 488 0161e028afb7
Reorder media files for notice. Make the most compressed one (mp3, mp4) the default. Closes #0025878
cms/app-client/app/models/document.js
cms/app-client/app/services/constants.js
dev/Vagrantfile
--- a/cms/app-client/app/models/document.js	Fri Dec 23 13:24:04 2016 +0100
+++ b/cms/app-client/app/models/document.js	Tue Jan 17 13:30:54 2017 +0100
@@ -3,6 +3,7 @@
 import _ from 'lodash/lodash';
 
 export default DS.Model.extend({
+    constants: Ember.inject.service(),
 
     uri: DS.attr('string'),
     issued: DS.attr('date'),
@@ -34,16 +35,28 @@
 
     media: Ember.computed('mediaArray', function() {
         var array = [];
+        var master = null;
         _.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 {
+            if(media.master) {
+              master = media;
+            }
+            if(index === -1 && !media.master) {
                 array.push(media);
             }
         });
+        array.sort((m1, m2) => {
+
+          const f1 = m1.format;
+          const f2 = m2.format;
+          const w1 = this.get('constants').MEDIA_TYPE_WEIGHT[f1] || 0;
+          const w2 = this.get('constants').MEDIA_TYPE_WEIGHT[f2] || 0;
+
+          return w1-w2;
+        });
+        if(array.length === 0 && master) {
+          array.push(master);
+        }
         return array;
     }),
 
--- a/cms/app-client/app/services/constants.js	Fri Dec 23 13:24:04 2016 +0100
+++ b/cms/app-client/app/services/constants.js	Tue Jan 17 13:30:54 2017 +0100
@@ -312,6 +312,17 @@
 
 const AUTOSCROLL_RATE = 35; // 35px/s
 
+const MEDIA_TYPE_WEIGHT = {
+    "audio/mpeg": 1,
+    "audio/x-wav": 2,
+    "video/3gpp": 10,
+    "video/ogg": 11,
+    "video/mp4": 12,
+    "video/x-msvideo": 13,
+    "video/quicktime": 14,
+    "video/mpeg": 15
+};
+
 export default Ember.Service.extend({
   OLAC_ROLES: OLAC_ROLES,
   DISCOURSE_CATEGORY_KEYS: DISCOURSE_CATEGORY_KEYS,
@@ -322,5 +333,6 @@
   LEXVO_BASE_URL: "http://lexvo.org/id/iso639-3/",
   LANGUAGES_TREEMAP: LANGUAGES_TREEMAP,
   DOCUMENTS_PAGINATION_PERPAGE : DOCUMENTS_PAGINATION_PERPAGE,
-  AUTOSCROLL_RATE: AUTOSCROLL_RATE
+  AUTOSCROLL_RATE: AUTOSCROLL_RATE,
+  MEDIA_TYPE_WEIGHT: MEDIA_TYPE_WEIGHT
 });
--- a/dev/Vagrantfile	Fri Dec 23 13:24:04 2016 +0100
+++ b/dev/Vagrantfile	Tue Jan 17 13:30:54 2017 +0100
@@ -97,6 +97,9 @@
   #   sudo apt-get update
   #   sudo apt-get install -y apache2
   # SHELL
+  # cf: https://github.com/mitchellh/vagrant/issues/5590#issuecomment-105886361
+  config.vm.provision "shell", inline: "nmcli connection reload; systemctl restart network.service", run: "always"
+
   config.vm.provision :shell do |shell|
     #initialize puppet
     shell.name = "puppet_initialize"
@@ -109,6 +112,7 @@
     shell.inline = "[ ! -d '/tmp/vagrant-puppet' ] && mkdir -p '/tmp/vagrant-puppet' || :;"
   end
 
+
   config.vm.provision :puppet do |puppet|
       puppet.manifests_path = "provisioning"
       puppet.manifest_file = "default.pp"