Browse Source

[security] Tree toggle expand just on icon

Enrico Berti 11 years ago
parent
commit
fba1666245

+ 2 - 3
apps/security/src/security/templates/hdfs.mako

@@ -42,7 +42,6 @@ ${ layout.menubar(section='hdfs') }
   .node-row {
     margin: 4px;
     padding: 2px;
-    cursor: pointer;
     border: 1px dashed #FFFFFF;
   }
 
@@ -50,7 +49,7 @@ ${ layout.menubar(section='hdfs') }
     background-color: #F6F6F6;
   }
 
-  .node-row a {
+  .node-row a, .node-row i {
     cursor: pointer;
   }
 
@@ -361,7 +360,7 @@ ${ layout.menubar(section='hdfs') }
 </%def>
 
 
-${ tree.import_templates(itemClick='$root.assist.setPath', itemSelected='$root.assist.path() == path()', iconModifier=treeIcons, styleModifier='aclBit', styleModifierPullRight=aclBitPullRight, anchorProperty='path', showMore='$root.assist.loadMore') }
+${ tree.import_templates(itemClick='$root.assist.setPath', iconClick='$root.assist.togglePath', itemSelected='$root.assist.path() == path()', iconModifier=treeIcons, styleModifier='aclBit', styleModifierPullRight=aclBitPullRight, anchorProperty='path', showMore='$root.assist.loadMore') }
 
 
 <script src="/static/ext/js/knockout-min.js" type="text/javascript" charset="utf-8"></script>

+ 17 - 11
apps/security/static/js/hdfs.ko.js

@@ -29,7 +29,6 @@ function parseAcl(acl) {
 
   acl.type.subscribe(function () {
     acl.status('modified');
-    updateTypeAheads(viewModel);
   });
   acl.name.subscribe(function () {
     acl.status('modified');
@@ -51,12 +50,6 @@ function printAcl(acl) {
   return (acl.isDefault() ? 'default:' : '') + acl.type() + ':' + acl.name() + ':' + (acl.r() ? 'r' : '-') + (acl.w() ? 'w' : '-') + (acl.x() ? 'x' : '-');
 }
 
-function updateTypeAheads(vm) { 
-  $(".group-list").typeahead({'source': vm.availableHadoopGroups()});
-  $(".user-list").typeahead({'source': vm.availableHadoopUsers()});
-}
-
-
 var Assist = function (vm, assist) {
   var self = this;
 
@@ -111,6 +104,7 @@ var Assist = function (vm, assist) {
   });
   self.pagenum = ko.observable(1);
   self.files = ko.observableArray();
+  self.fromLoadMore = false;
 
   self.acls = ko.observableArray();
   self.originalAcls = ko.observableArray();
@@ -134,7 +128,10 @@ var Assist = function (vm, assist) {
   self.group = ko.observable('');
 
   self.afterRender = function() {
-    $(document).trigger("rendered.tree");
+    if (! self.fromLoadMore) {
+      $(document).trigger("rendered.tree");
+    }
+    self.fromLoadMore = false;
   }
 
 
@@ -142,7 +139,6 @@ var Assist = function (vm, assist) {
     var newAcl = parseAcl('group::---');
     newAcl.status('new');
     self.acls.push(newAcl);
-    updateTypeAheads(vm);
   };
 
   self.addDefaultAcl = function () {
@@ -254,14 +250,23 @@ var Assist = function (vm, assist) {
     });
   }
 
-  self.setPath = function (obj) {
+  self.setPath = function (obj, toggle) {
     if (self.getTreeAdditionalDataForPath(obj.path()).loaded || (! obj.isExpanded() && ! self.getTreeAdditionalDataForPath(obj.path()).loaded)) {
-      obj.isExpanded(!obj.isExpanded());
+      if (typeof toggle == "boolean" && toggle){
+        obj.isExpanded(!obj.isExpanded());
+      }
+      else {
+        obj.isExpanded(true);
+      }
       self.updatePathProperty(self.growingTree(), obj.path(), "isExpanded", obj.isExpanded());
     }
     self.path(obj.path());
   }
 
+  self.togglePath = function (obj) {
+    self.setPath(obj, true);
+  }
+
   self.openPath = function (obj) {
     window.open("/filebrowser/view" + obj.path(), '_blank');
   }
@@ -320,6 +325,7 @@ var Assist = function (vm, assist) {
   self.loadMore = function (what) {
     self.pagenum(what.page().next_page_number());
     self.fetchPath(what.path());
+    self.fromLoadMore = true;
   }
 
   self.getAcls = function () {

+ 12 - 8
desktop/core/src/desktop/templates/common_tree.mako

@@ -25,7 +25,7 @@
   from django.utils.translation import ugettext as _
 %>
 
-<%def name="import_templates(itemClick=None, itemDblClick=None, itemSelected=None, iconModifier=None, styleModifier=None, styleModifierPullRight=None, showMore=None, anchorProperty=None)">
+<%def name="import_templates(itemClick=None, iconClick=None, itemDblClick=None, itemSelected=None, iconModifier=None, styleModifier=None, styleModifierPullRight=None, showMore=None, anchorProperty=None)">
 
   <script src="/static/js/ko.tree.js" type="text/javascript" charset="utf-8"></script>
 
@@ -73,12 +73,6 @@
 
   <script type="text/html" id="node-name-template">
     <div class="node-row" data-bind="
-    %if itemClick:
-      click: ${itemClick},
-    %endif
-    %if itemDblClick:
-      event : { dblclick: ${itemDblClick} },
-    %endif
     %if styleModifier:
       style: { border: ${styleModifier}() ? '1px dashed #bce8f1': '',  background: ${styleModifier}() ? '#d9edf7': ''},
     %endif
@@ -88,6 +82,9 @@
      css:{unselected: true">
     %endif
       <i data-bind="
+        %if iconClick:
+          click: ${iconClick},
+        %endif
         css: {
             'fa': true,
             %if iconModifier:
@@ -105,7 +102,14 @@
       %if anchorProperty:
         <a href="#" class="anchor" data-bind="attr: {href: ${anchorProperty}}"></a>
       %endif
-      <strong><a style="display: inline-block" data-bind="text:name, css:{'striked': striked}"></a></strong>
+      <strong><a style="display: inline-block" data-bind="text:name,
+      %if itemClick:
+        click: ${itemClick},
+      %endif
+      %if itemDblClick:
+        event : { dblclick: ${itemDblClick} },
+      %endif
+      css:{'striked': striked}"></a></strong>
 
       %if styleModifierPullRight:
       ${styleModifierPullRight()}