From cbe9ff6c7db9de03ed6ee6fcfe0d6763ae6a5dc7 Mon Sep 17 00:00:00 2001
From: Flavio Tarsetti <Flavio.Tarsetti@idiap.ch>
Date: Sun, 21 Aug 2016 23:53:43 +0200
Subject: [PATCH] [plotters] display only "unique" names for existing
 plotterparameters for: * new plotterparameter * fork

---
 .../panels/viewer_editor.html                 | 13 ++++++-
 .../panels/viewer_editor_fork.html            | 34 +++++++++++++++++++
 2 files changed, 46 insertions(+), 1 deletion(-)

diff --git a/beat/web/plotters/templates/plotterparameters/panels/viewer_editor.html b/beat/web/plotters/templates/plotterparameters/panels/viewer_editor.html
index 7841f21be..b5e956cf5 100644
--- a/beat/web/plotters/templates/plotterparameters/panels/viewer_editor.html
+++ b/beat/web/plotters/templates/plotterparameters/panels/viewer_editor.html
@@ -87,9 +87,20 @@ getNames();
   function getNames() {
     {% if action != 'pending' %} {# experiment name was not selected #}
     var d = $.get('{% url "api_plotters:view" request.user.username %}?fields=name,author');
+	var duplicates = [];
     d.done(function(data) {
       //filter returned names to only keep author experiments' names
-      data = data.filter(function(e) {
+	  //remove duplicate names
+	  finaldata = [];
+	  for(var i=0; i<data.length; i++)
+	  {
+		if(!duplicates.includes(data[i].name.split("/")[1]) && data[i].author == {{ request.user.id }})
+		{
+			finaldata.push(data[i]);
+			duplicates.push(data[i].name.split("/")[1]);
+		}
+	  }
+      data = finaldata.filter(function(e) {
         return (e.author == {{ request.user.id }});
       }).map(function(e){ return e.name.split("/")[1]; });
       beat.plotterparameters.dialogs.name_typeahead('input#settings_name', data);
diff --git a/beat/web/plotters/templates/plotterparameters/panels/viewer_editor_fork.html b/beat/web/plotters/templates/plotterparameters/panels/viewer_editor_fork.html
index aa2e0c650..57c69da83 100644
--- a/beat/web/plotters/templates/plotterparameters/panels/viewer_editor_fork.html
+++ b/beat/web/plotters/templates/plotterparameters/panels/viewer_editor_fork.html
@@ -117,4 +117,38 @@
 
 <script type="text/javascript">
 
+getNames();
+  {# sets up the name input box so you can get auto-completion #}
+  function getNames() {
+    {% if action != 'pending' %} {# experiment name was not selected #}
+    var d = $.get('{% url "api_plotters:view" request.user.username %}?fields=name,author');
+	var duplicates = [];
+    d.done(function(data) {
+      //filter returned names to only keep author experiments' names
+	  //remove duplicate names
+	  finaldata = [];
+	  for(var i=0; i<data.length; i++)
+	  {
+		if(!duplicates.includes(data[i].name.split("/")[1]) && data[i].author == {{ request.user.id }})
+		{
+			finaldata.push(data[i]);
+			duplicates.push(data[i].name.split("/")[1]);
+		}
+	  }
+      data = finaldata.filter(function(e) {
+        return (e.author == {{ request.user.id }});
+      }).map(function(e){
+				return e.name.split("/")[1];
+		});
+      beat.plotterparameters.dialogs.name_typeahead('input#settings_name', data);
+    });
+    {% else %}
+    var d = $.Deferred();
+    {# notice we cannot hide now, it is not meaningful #}
+    $('#ui').on('show', function(){$('#settings_name-div').hide()});
+    d.resolve();{# fires immediately #}
+    {% endif %}
+    return d.promise();
+  }
+
 </script>
-- 
GitLab