Browse Source

HUE-6815 [frontend] Show details for SQL result

This shows the contents of the SQL context popover in the global search result panel for SQL results.
Johan Ahlen 8 years ago
parent
commit
10b3e0fe3d

File diff suppressed because it is too large
+ 0 - 0
desktop/core/src/desktop/static/desktop/css/hue.css


+ 10 - 0
desktop/core/src/desktop/static/desktop/less/hue.less

@@ -1021,6 +1021,16 @@ a:visited {
     }
   }
   .global-search-preview {
+    padding-top: 10px;
+    .display-flex();
     .flex(1);
+
+    .sql-context-tab {
+      background-color: transparent !important;
+    }
+
+    .sql-context-inline-search {
+      width: 180px !important;
+    }
   }
 }

+ 13 - 2
desktop/core/src/desktop/templates/ko_components.mako

@@ -574,7 +574,16 @@ from desktop.views import _ko
         </div>
       </div>
       <div class="global-search-preview">
-        Preview Area
+        <!-- ko with: selectedResult -->
+          <!-- ko switch: type -->
+            <!-- ko case: ['database', 'table', 'view', 'field']  -->
+              <!-- ko component: { name: 'sql-context-contents-global-search', params: { data: data } } --><!-- /ko -->
+            <!-- /ko -->
+            <!-- ko case: $default -->
+              <pre data-bind="text: ko.mapping.toJSON($data)"></pre>
+            <!-- /ko -->
+          <!-- /ko -->
+        <!--/ko -->
       </div>
       <!-- /ko -->
     </div>
@@ -841,6 +850,7 @@ from desktop.views import _ko
               data.resultHuedocuments.forEach(function (doc) {
                 docCategory.result.push({
                   label: doc.hue_name,
+                  type: 'document',
                   data: doc
                 })
               });
@@ -862,6 +872,7 @@ from desktop.views import _ko
                   }
                   category.result.push({
                     label: result.hue_name || result.originalName,
+                    type: typeLower,
                     data: result
                   })
                 }
@@ -871,7 +882,7 @@ from desktop.views import _ko
                 categories.push(newCategories[key]);
               });
             }
-
+            self.selectedIndex(undefined);
             self.searchResultCategories(categories);
           },
           silenceErrors: true,

+ 42 - 0
desktop/core/src/desktop/templates/sql_context_popover.mako

@@ -1351,6 +1351,48 @@ from metadata.conf import has_navigator
         ko.applyBindings(details, $sqlContextPopover[0]);
         huePubSub.publish('sql.context.popover.shown');
       });
+
+      var SqlContextContentsGlobalSearch = function (params) {
+        var self = this;
+        self.contents = undefined;
+
+
+        self.showInAssistEnabled = false; // TODO: enable show in assist and fix the pubsubs for metastore etc.
+
+        self.isDatabase = params.data.type.toLowerCase() === 'database';
+        self.isTable = params.data.type.toLowerCase() === 'table';
+        self.isColumn = params.data.type.toLowerCase() === 'field';
+        self.isView = params.data.type.toLowerCase() === 'view';
+
+        // TODO: Handle HDFS, Complex and Function ?
+        self.isHdfs = false;
+        self.isAsterisk = false;
+        self.isComplex = false;
+        self.isFunction = false;
+
+        var adaptedData = { identifierChain: [] };
+
+        params.data.originalName.split('.').forEach(function (part) {
+          adaptedData.identifierChain.push({ name: part });
+        });
+
+
+        if (self.isDatabase) {
+          self.contents = new DatabaseContextTabs(adaptedData, params.data.sourceType.toLowerCase(), 'default');
+        } else if (self.isTable) {
+          self.contents = new TableAndColumnContextTabs(adaptedData, params.data.sourceType.toLowerCase(), 'default', false, false);
+        } else if (self.isView) {
+          self.contents = new TableAndColumnContextTabs(adaptedData, params.data.sourceType.toLowerCase(), 'default', false, false);
+        } else if (self.isColumn) {
+          self.contents = new TableAndColumnContextTabs(adaptedData, params.data.sourceType.toLowerCase(), 'default', true, false);
+        }
+
+      };
+
+      ko.components.register('sql-context-contents-global-search', {
+        viewModel: SqlContextContentsGlobalSearch,
+        template: { element: 'sql-context-contents' }
+      })
     })();
   </script>
 

Some files were not shown because too many files changed in this diff