about summary refs log tree commit diff
diff options
context:
space:
mode:
authorzsloan2019-10-25 13:20:32 -0500
committerzsloan2019-10-25 13:20:32 -0500
commit557428ce5c4df45f1f5b731df93e173770feb86c (patch)
tree6f268848d440a8ac8413ebbc87da7dceee702894
parent94e59617084fc6d632d6f78ddf7045609eb1ba8b (diff)
downloadgenenetwork2-557428ce5c4df45f1f5b731df93e173770feb86c.tar.gz
Added sub-categories to drop-down menu for Group option
-rw-r--r--wqflask/wqflask/api/gen_menu.py9
-rw-r--r--wqflask/wqflask/static/new/javascript/dataset_select_menu_orig.js46
2 files changed, 45 insertions, 10 deletions
diff --git a/wqflask/wqflask/api/gen_menu.py b/wqflask/wqflask/api/gen_menu.py
index 078e3782..1b2818ca 100644
--- a/wqflask/wqflask/api/gen_menu.py
+++ b/wqflask/wqflask/api/gen_menu.py
@@ -71,15 +71,16 @@ def get_groups(species):
         #                         GROUP by InbredSet.Name
         #                         ORDER BY InbredSet.FullName""".format(species_name)).fetchall()
 
-        results = g.db.execute("""SELECT InbredSet.Name, InbredSet.FullName
+        results = g.db.execute("""SELECT InbredSet.Name, InbredSet.FullName, IFNULL(InbredSet.Family, 'None')
                                 FROM InbredSet, Species
                                 WHERE Species.Name = '{}' AND
                                         InbredSet.SpeciesId = Species.Id
                                 GROUP by InbredSet.Name
-                                ORDER BY InbredSet.FullName""".format(species_name)).fetchall()
+                                ORDER BY IFNULL(InbredSet.Family, InbredSet.FullName) ASC, InbredSet.FullName ASC""".format(species_name)).fetchall()
 
         for result in results:
-            groups[species_name].append([str(result[0]), str(result[1])])
+            family_name = "Family:" + str(result[2])
+            groups[species_name].append([str(result[0]), str(result[1]), family_name])
 
     return groups
 
@@ -89,7 +90,7 @@ def get_types(groups):
 
     for species, group_dict in groups.iteritems():
         types[species] = {}
-        for group_name, _group_full_name in group_dict:
+        for group_name, _group_full_name, _family_name in group_dict:
             if phenotypes_exist(group_name):
                 types[species][group_name] = [("Phenotypes", "Phenotypes")]
             if genotypes_exist(group_name):
diff --git a/wqflask/wqflask/static/new/javascript/dataset_select_menu_orig.js b/wqflask/wqflask/static/new/javascript/dataset_select_menu_orig.js
index b80539bd..93964916 100644
--- a/wqflask/wqflask/static/new/javascript/dataset_select_menu_orig.js
+++ b/wqflask/wqflask/static/new/javascript/dataset_select_menu_orig.js
@@ -61,12 +61,45 @@ redo_dropdown = function(dropdown, items) {
   console.log("in redo:", dropdown, items);
   dropdown.empty();
   _results = [];
-  for (_i = 0, _len = items.length; _i < _len; _i++) {
-    item = items[_i];
-    if (item.length > 2){
-      _results.push(dropdown.append($("<option data-id=\""+item[0]+"\" />").val(item[1]).text(item[2])));
-    } else {
-      _results.push(dropdown.append($("<option />").val(item[0]).text(item[1])));
+
+  if (dropdown.attr('id') == "group"){
+    group_family_list = [];
+    for (_i = 0, _len = items.length; _i < _len; _i++) {
+      item = items[_i];
+      group_family = item[2].split(":")[1]
+      if (group_family != "None"){
+        group_family_list.push([item[0], item[1], group_family, group_family])
+      } else {
+        group_family_list.push([item[0], item[1], group_family, item[1]])
+      }
+    }
+
+    group_family_list.sort(function(a, b){return a[3] > b[3]})
+    current_family = ""
+    this_opt_group = null
+    for (_i = 0, _len = group_family_list.length; _i < _len; _i++) {
+      item = group_family_list[_i];
+      if (item[2] != "None" && current_family == ""){
+        current_family = item[2]
+        this_opt_group = $("<optgroup label=\"" + item[2] + "\">")
+      } else if (current_family != "" && item[2] == current_family){
+        this_opt_group.append($("<option />").val(item[0]).text(item[1]));
+      } else if (current_family != "" && item[2] != "None"){
+        current_family = item[2]
+        _results.push(dropdown.append(this_opt_group))
+        this_opt_group = $("<optgroup label=\"" + item[2] + "\">")
+      } else {
+        _results.push(dropdown.append($("<option />").val(item[0]).text(item[1])));
+      }
+    }
+  } else {
+    for (_i = 0, _len = items.length; _i < _len; _i++) {
+      item = items[_i];
+      if (item.length > 2){
+        _results.push(dropdown.append($("<option data-id=\""+item[0]+"\" />").val(item[1]).text(item[2])));
+      } else {
+        _results.push(dropdown.append($("<option />").val(item[0]).text(item[1])));
+      }
     }
   }
   return _results;
@@ -143,6 +176,7 @@ apply_default = function() {
       dataset: "HC_M2_0606_P"
     };
   }
+
   _ref = [['species', 'group'], ['group', 'type'], ['type', 'dataset'], ['dataset', null]];
   _results = [];
   for (_i = 0, _len = _ref.length; _i < _len; _i++) {