Browse Source

[security] Support for checkboxes on the tree

Enrico Berti 11 years ago
parent
commit
a9481d1c45

+ 1 - 1
apps/security/src/security/templates/hdfs.mako

@@ -205,7 +205,7 @@ ${ layout.menubar(section='hdfs') }
 </%def>
 
 
-${ 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', strikedProperty='striked') }
+${ 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', strikedProperty='striked', itemChecked='isChecked') }
 
 
 <script src="/static/ext/js/knockout-min.js" type="text/javascript" charset="utf-8"></script>

+ 1 - 1
apps/security/src/security/templates/hive.mako

@@ -292,7 +292,7 @@ ${ layout.menubar(section='hive') }
   'fa-columns': isColumn()
 </%def>
 
-${ tree.import_templates(itemClick='$root.assist.setPath', iconClick='$root.assist.togglePath', itemSelected='$root.assist.path() == path()', iconModifier=treeIcons, anchorProperty='path') }
+${ tree.import_templates(itemClick='$root.assist.setPath', iconClick='$root.assist.togglePath', itemSelected='$root.assist.path() == path()', iconModifier=treeIcons, anchorProperty='path', itemChecked='isChecked') }
 
 <script src="/static/ext/js/knockout-min.js" type="text/javascript" charset="utf-8"></script>
 <script src="/static/ext/js/knockout.mapping-2.3.2.js" type="text/javascript" charset="utf-8"></script>

+ 7 - 0
apps/security/static/js/hdfs.ko.js

@@ -92,6 +92,7 @@ var Assist = function (vm, assist) {
         path: "/",
         isDir: true,
         isExpanded: true,
+        isChecked: false,
         aclBit: false,
         striked: false,
         selected: false,
@@ -199,6 +200,7 @@ var Assist = function (vm, assist) {
         aclBit: item.rwx.indexOf('+') != -1,
         striked: item.striked != null,
         isExpanded: true,
+        isChecked: false,
         rwx: item.rwx,
         isDir: item.type == "dir" || item.isDir == true,
         page: {
@@ -314,6 +316,11 @@ var Assist = function (vm, assist) {
     self.setPath(obj, true);
   }
 
+  self.checkPath = function (obj) {
+    obj.isChecked(!obj.isChecked());
+    self.updatePathProperty(self.growingTree(), obj.path(), "isChecked", obj.isChecked());
+  }
+
   self.openPath = function (obj) {
     window.open("/filebrowser/view" + obj.path(), '_blank');
   }

+ 7 - 0
apps/security/static/js/hive.ko.js

@@ -260,6 +260,7 @@ var Assist = function (vm) {
           isTable: false,
           isColumn: false,
           isExpanded: false,
+          isChecked: false,
           nodes: []
         };
         _tree.nodes.push(_item);
@@ -294,6 +295,7 @@ var Assist = function (vm) {
           isTable: true,
           isColumn: false,
           isExpanded: false,
+          isChecked: false,
           nodes: []
         };
         _branch.nodes.push(_item);
@@ -334,6 +336,7 @@ var Assist = function (vm) {
           isTable: false,
           isColumn: true,
           isExpanded: false,
+          isChecked: false,
           nodes: []
         };
         _branch.nodes.push(_item);
@@ -420,6 +423,10 @@ var Assist = function (vm) {
     self.setPath(obj, true);
   }
 
+  self.checkPath = function (obj) {
+    obj.isChecked(!obj.isChecked());
+    self.updatePathProperty(self.growingTree(), obj.path(), "isChecked", obj.isChecked());
+  }
 
   self.getTreeAdditionalDataForPath = function (path) {
     if (typeof self.treeAdditionalData[path] == "undefined") {

+ 4 - 1
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, iconClick=None, itemDblClick=None, itemSelected=None, iconModifier=None, styleModifier=None, styleModifierPullRight=None, showMore=None, anchorProperty=None, strikedProperty=None)">
+<%def name="import_templates(itemClick=None, iconClick=None, itemDblClick=None, itemSelected=None, iconModifier=None, styleModifier=None, styleModifierPullRight=None, showMore=None, anchorProperty=None, strikedProperty=None, itemChecked=None)">
 
   <script src="/static/js/ko.tree.js" type="text/javascript" charset="utf-8"></script>
 
@@ -77,6 +77,9 @@
      css: { selected: ${itemSelected}}
     %endif
     ">
+      %if itemChecked:
+      <i data-bind="css: {'fa': true, 'fa-fw': true, 'fa-square-o': ! ${itemChecked}(), 'fa-check-square-o': ${itemChecked}()}, click: $root.assist.checkPath, style: { color: '#999999'}"></i>
+      %endif
       <i data-bind="
         %if iconClick:
           click: ${iconClick},