Browse Source

HUE-7809 [reporting] Skeleton of independent SQL widgets

Romain Rigaux 8 years ago
parent
commit
79b1694

+ 5 - 1
desktop/libs/dashboard/src/dashboard/api.py

@@ -377,8 +377,12 @@ def _create_facet(collection, user, facet_id, facet_label, facet_field, widget_t
   if widget_type in ('tree-widget', 'heatmap-widget', 'map-widget'):
     facet_type = 'pivot'
   elif widget_type == 'document-widget':
+    # SQL query, 1 solr widget
     properties['uuid'] = facet_field
-    properties['subfacet'] = {}
+    properties['engine'] = 'impala'
+    properties['statement'] = 'select * from web_logs limit 50'
+    properties['facets'] = [{'canRange': False, 'field': 'blank', 'limit': 10, 'mincount': 1, 'sort': 'desc', 'aggregate': {'function': 'count'}, 'isDate': False}]
+    facet_type = 'statement'
   else:
     api = get_engine(user, collection)
     range_properties = _new_range_facet(api, collection, facet_field, widget_type)

+ 5 - 3
desktop/libs/dashboard/src/dashboard/templates/common_search.mako

@@ -1645,7 +1645,6 @@ ${ dashboard.layout_skeleton(suffix='search') }
 </script>
 
 
-## WIP skeleton
 <script type="text/html" id="document-widget">
   ##<div class="widget-spinner" data-bind="visible: isLoading()">
   ##  <i class="fa fa-spinner fa-spin"></i>
@@ -1656,11 +1655,14 @@ ${ dashboard.layout_skeleton(suffix='search') }
 
     <!-- ko with: $root.collection.getFacetById($parent.id()) -->
     <div>
-      Name Uuid
+
+      <input type="text" class="input-medium" data-bind="value: properties.engine"/>
+      <textarea data-bind="value: properties.statement"><textarea/>
 
       ## Get sub widget by ID
       ## <div data-bind="template: { name: function() { return widgetType(); }}" class="widget-main-section"></div>
 
+      <span data-bind="template: { name: 'data-grid' }"></span>
     </div>
    <!-- /ko -->
   </div>
@@ -4101,7 +4103,7 @@ $(document).ready(function () {
       selectedWidget = widget;
       selectedRow = row;
 
-      if (searchViewModel.collection.template.availableWidgetFields().length == 1){
+      if (searchViewModel.collection.template.availableWidgetFields().length == 1 || widget.widgetType() == 'document-widget'){
         addFacetDemiModalFieldPreview(searchViewModel.collection.template.availableWidgetFields()[0]);
       }
       else {

+ 2 - 0
desktop/libs/notebook/src/notebook/dashboard_api.py

@@ -155,6 +155,8 @@ class SQLDashboardApi(DashboardApi):
             'fields': self._get_aggregate_function(facet['properties']['facets'][0]),
             'filters': self._convert_filters_to_where(filters),
         }
+      elif facet['type'] == 'statement':
+        sql = facet['properties']['statement']
     else:
       fields = Collection2.get_field_list(dashboard)
       sql = "SELECT %(fields)s FROM `%(database)s`.`%(table)s`" % {