فهرست منبع

[security] Adding a typeahead to view as user input box

Romain Rigaux 11 سال پیش
والد
کامیت
b8e9c72
3فایلهای تغییر یافته به همراه13 افزوده شده و 28 حذف شده
  1. 9 26
      apps/security/src/security/templates/hdfs.mako
  2. 1 1
      apps/security/src/security/views.py
  3. 3 1
      apps/security/static/js/hdfs.ko.js

+ 9 - 26
apps/security/src/security/templates/hdfs.mako

@@ -119,26 +119,8 @@ ${ layout.menubar(section='hdfs') }
             </a>
             <i class="fa fa-compress"></i>
             <i class="fa fa-refresh"></i>
-            <span data-bind="text: $root.doAs"></span>
-            <div class="btn-group pull-right">
-              <a class="btn dropdown-toggle" data-toggle="dropdown" href="#">
-                View as...
-                <span class="caret"></span>
-              </a>
-              <ul class="dropdown-menu">
-                <li><a href="#"><strong>USERS</strong></a></li>
-                <li><a href="#">My user</a></li>
-                <!-- ko foreach: availableHadoopUsers -->
-                  <li><a href="#" data-bind="text: $data, click: function() { $root.doAs($data); }"></a></li>
-                <!-- /ko -->
-                <li class="divider"></li>
-                <li><a href="#"><strong>GROUPS</strong></a></li>
-                <li><a href="#">My group</a></li>
-                <!-- ko foreach: availableHadoopGroups -->
-                  <li><a href="#" data-bind="text: $data"></a></li>
-                <!-- /ko -->
-              </ul>
-            </div>
+              ${ _('View as') }
+              <input type="text" class="doas-input input-small" data-bind="value: $root.doAs">
           </div>
           ${ _('HDFS ACLs') }
         </h1>
@@ -147,17 +129,19 @@ ${ layout.menubar(section='hdfs') }
             <div class="span8">
               <div class="path-container">
                 <div class="input-append span12">
-                  <input id="path" type="text" style="width: 96%" data-bind="value: $root.assist.path, valueUpdate: 'afterkeydown'" autocomplete="off"/>
-                  <a data-bind="attr: { href: '/filebrowser/view' + $root.assist.path() }" target="_blank" title="${ _('Open in File Browser') }" class="btn btn-inverse"><i class="fa fa-external-link"></i></a>
+                  <input id="path" type="text" style="width: 96%; height: 40px; font-size: 14pt" data-bind="value: $root.assist.path, valueUpdate: 'afterkeydown'" autocomplete="off"/>
+                  <a data-bind="attr: { href: '/filebrowser/view' + $root.assist.path() }" target="_blank" title="${ _('Open in File Browser') }" class="btn btn-inverse">
+                    <i class="fa fa-external-link"></i>
+                  </a>
                 </div>
               </div>
               <div class="path-container-ghost hide"></div>
               ${ tree.render(id='hdfsTree', data='$root.assist.treeData', afterRender='$root.assist.afterRender') }
             </div>
             <div class="span4">
-              <div class="acl-panel" data-bind="visible: !$root.assist.isLoadingAcls()">
+              <div class="acl-panel" data-bind="visible: ! $root.assist.isLoadingAcls()">
                   <a href="javascript: void(0)" data-bind="click: function() { $root.assist.showAclsAsText(! $root.assist.showAclsAsText()); }">
-                    <i class="fa" data-bind="css: { 'fa-header': $root.assist.showAclsAsText(), 'fa-pencil': ! $root.assist.showAclsAsText() }"></i>
+                    <i class="fa fa-2x" data-bind="css: { 'fa-header': $root.assist.showAclsAsText(), 'fa-pencil': ! $root.assist.showAclsAsText() }"></i>
                     <span data-bind="visible: $root.assist.showAclsAsText()">${ _('Text view') }</span>
                     <span data-bind="visible: ! $root.assist.showAclsAsText()">${ _('Edit') }</span>
                   </a>
@@ -270,7 +254,7 @@ ${ tree.import_templates(itemClick='$root.assist.setPath', itemDblClick='$root.a
     ko.applyBindings(viewModel);
 
     var _initialPath = "/";
-    if (window.location.hash != ""){
+    if (window.location.hash != "") {
       _initialPath = window.location.hash.substr(1);
     }
     viewModel.init(_initialPath);
@@ -300,7 +284,6 @@ ${ tree.import_templates(itemClick='$root.assist.setPath', itemDblClick='$root.a
       }
     });
 
-
     $(".path-container").data("originalWidth", $(".path-container").width());
     $(".acl-panel").data("originalWidth", $(".acl-panel").width());
     $(".path-container-ghost").height($(".path-container").outerHeight());

+ 1 - 1
apps/security/src/security/views.py

@@ -41,5 +41,5 @@ def hive(request):
 def hdfs(request):
 
   return render("hdfs.mako", request, {      
-      'initial': json.dumps({}),
+      'initial': json.dumps({'user': request.user.username}),
   })

+ 3 - 1
apps/security/static/js/hdfs.ko.js

@@ -313,7 +313,7 @@ var HdfsViewModel = function (initial) {
 
   self.assist = new Assist(self, initial);
 
-  self.doAs = ko.observable('');
+  self.doAs = ko.observable(initial.user);
   self.doAs.subscribe(function () {
     self.assist.fetchPath();
   });
@@ -330,6 +330,8 @@ var HdfsViewModel = function (initial) {
       $.each(data.users, function (i, user) {
         self.availableHadoopUsers.push(user.username);
       });
+      
+      $(".doas-input").typeahead({'source': self.availableHadoopUsers()});
 
       $.each(data.groups, function (i, group) {
         self.availableHadoopGroups.push(group.name);