Преглед изворни кода

HUE-8330 [frontend] Have the sidebar items depend on the current cluster mode

Johan Ahlen пре 7 година
родитељ
комит
09607f4

+ 3 - 1
desktop/core/src/desktop/templates/hue.mako

@@ -341,7 +341,7 @@ ${ hueIcons.symbols() }
     </div>
 
     % if IS_MULTICLUSTER_ONLY.get():
-    <div class="hue-dw-sidebar-container collapsed" data-bind="component: { name: 'hue-dw-sidebar', params: { items: items } }"></div>
+    <div class="hue-dw-sidebar-container collapsed" data-bind="component: { name: 'hue-dw-sidebar', params: { items: items, pocClusterMode: pocClusterMode } }"></div>
     % endif
 
     <div class="left-panel" data-bind="css: { 'side-panel-closed': !leftAssistVisible() }, visibleOnHover: { selector: '.hide-left-side-panel' }">
@@ -1585,6 +1585,8 @@ ${ smart_unicode(login_modal(request).content) | n,unicode }
 
         self.items = ko.observableArray();
 
+        self.pocClusterMode = topNavViewModel.pocClusterMode;
+
         huePubSub.subscribe('cluster.config.set.config', function (clusterConfig) {
           var items = [];
 

+ 24 - 14
desktop/core/src/desktop/templates/ko_components/ko_dw_sidebar.mako

@@ -55,23 +55,33 @@
 
       var DwSidebar = function DwSidebar(params, element) {
         var self = this;
+        self.pocClusterMode = params.pocClusterMode;
         // self.items =  params.items; // TODO: Once we have the proper apps in cluster config.
-        self.items = ko.observableArray([{
-          displayName: 'Apps',
-          isCategory: true,
-          children: [
-            { displayName: 'Editor', url: '/editor/?type=impala', icon: 'editor' },
-            { displayName: 'Catalog', url: '/metastore/tables', icon: 'tables' },
-            { displayName: 'Importer', url: '/indexer/importer', icon: 'hdfs' },
-            { displayName: 'Warehouses', url: '/hue/jobbrowser', icon: 'warehouses' }
 
-##            { displayName: 'Editor', url: '/editor/?type=hive', icon: 'editor' },
-##            { displayName: 'Dashboard', url: '/jobbrowser#!workflows', icon: 'dashboard' },
-##            { displayName: 'Workflows', url: '/oozie/editor/workflow/new', icon: 'workflows' },
-##            { displayName: 'Service', url: '/hue/jobbrowser#!dataware2-clusters', icon: 'warehouses' }
+        self.items = ko.pureComputed(function () {
+          var appCategory = {
+            displayName: 'Apps',
+            isCategory: true
+          };
+          if (self.pocClusterMode() === 'dw') {
+            appCategory.children = [
+              { displayName: 'Editor', url: '/editor/?type=impala', icon: 'editor' },
+              { displayName: 'Catalog', url: '/metastore/tables', icon: 'tables' },
+              { displayName: 'Importer', url: '/indexer/importer', icon: 'hdfs' },
+              { displayName: 'Warehouses', url: '/hue/jobbrowser', icon: 'warehouses' }
+            ]
+          } else { // DE mode
+            appCategory.children = [
+              { displayName: 'Editor', url: '/editor/?type=hive', icon: 'editor' },
+              { displayName: 'Dashboard', url: '/jobbrowser/#!workflows', icon: 'tables' },
+              { displayName: 'Workflows', url: '/oozie/editor/workflow/new', icon: 'workflows' },
+              { displayName: 'Service', url: '/hue/jobbrowser/#!dataware2-clusters', icon: 'warehouses' }
+            ]
+          }
+
+          return [ appCategory ];
+        });
 
-          ]
-        }]);
         self.collapsed = ko.observable();
         self.collapsed.subscribe(function (newVal) {
           if (newVal) {