[DLNA] Add sort options for MediaServer example
authorAlexander Shalamov <alexander.shalamov@intel.com>
Thu, 20 Mar 2014 09:27:53 +0000 (11:27 +0200)
committerAlexander Shalamov <alexander.shalamov@intel.com>
Thu, 20 Mar 2014 09:30:49 +0000 (11:30 +0200)
This patch adds sorting options to mediaserver.html

examples/mediaserver.html
mediaserver/mediaserver_api.js

index 501e030..1f17e97 100644 (file)
@@ -32,9 +32,17 @@ function browseRootContainer(id) {
 function browseContainer(id) {
   emptyContainer('mediaObjectsContainer');
   var server = servers[getServerId()];
-  server.browse(id, '', 0 , 0).then(listMediaObjects);
+  server.browse(id, getSortOptions(), 0 , 0).then(listMediaObjects);
  }
 
+function getSortOptions() {
+  var sortParamIndex = document.getElementById('sortParameter').selectedIndex;
+  var sortParameter = document.getElementById('sortParameter').options[sortParamIndex].text;
+  var sortOptionIndex = document.getElementById('sortOptions').selectedIndex;
+  var sortOption = document.getElementById('sortOptions').options[sortOptionIndex].text
+  return sortOption + sortParameter;
+}
+
 function searchContainer(id) {
   emptyContainer('mediaObjectsContainer');
   document.getElementById('serverContainer').serverId = id;
@@ -43,7 +51,7 @@ function searchContainer(id) {
   var selectedParameter = document.getElementById('searchParameter').options[selectedIndex].text;
   var searchValue = document.getElementById('searchField').value;
   var query = selectedParameter + ' contains ' + '"' + searchValue + '"';
-  server.find(server.root.id, query, '', 0, 0).then(listMediaObjects);
+  server.find(server.root.id, query, getSortOptions(), 0, 0).then(listMediaObjects);
 }
 
 function createContainer(id) {
@@ -154,6 +162,30 @@ function onServerFound(event) {
   p.appendChild(label_search);
   p.appendChild(selectElement);
   p.appendChild(searchField);
+  p.appendChild(document.createElement('br'));
+
+  var label_sort = document.createElement('Label');
+  var sortElement = document.createElement('select');
+  sortElement.id = 'sortParameter';
+  label_sort.for = sortElement.id;
+  label_sort.innerHTML = 'Sort by: ';
+  event.server.sortAttrs.forEach(function(sortAttr) {
+    var option = document.createElement('option');
+    option.text = sortAttr;
+    sortElement.add(option);
+  });
+
+  var sortOptions = document.createElement('select');
+  sortOptions.id = 'sortOptions';
+  var sortOptionASC = document.createElement('option');
+  var sortOptionDESC = document.createElement('option');
+  sortOptionASC.text = 'ASC';
+  sortOptionDESC.text = 'DESC';
+  sortOptions.add(sortOptionASC);
+  sortOptions.add(sortOptionDESC);
+  p.appendChild(label_sort);
+  p.appendChild(sortElement);
+  p.appendChild(sortOptions);
 
   var label = document.createElement('Label');
   var createContainerField = document.createElement('input');
index 97f7280..5b0ad2e 100644 (file)
@@ -230,12 +230,21 @@ MediaServer.prototype.createFolder = function(folderName) {
   return createPromise(msg);
 };
 
+function createSortString(str) {
+  var sortString;
+  if (str.length) {
+    sortString = str.replace('ASC','+')
+    sortString = sortString.replace('DESC','-')
+  }
+  return sortString;
+}
+
 MediaServer.prototype.browse = function(containerId, sortMode, count, offset) {
   var msg = {
     'cmd': 'browse',
     'serverId': this.root.id,
     'containerId': containerId,
-    'sortMode': sortMode,
+    'sortMode': createSortString(sortMode),
     'count': count,
     'offset': offset
   };
@@ -249,7 +258,7 @@ MediaServer.prototype.find =
     'serverId': this.root.id,
     'containerId': containerId,
     'searchFilter': searchFilter,
-    'sortMode': sortMode,
+    'sortMode': createSortString(sortMode),
     'count': count,
     'offset': offset
   };