Browse Source

[dashboard] Prepare skeleton for adding a saved query

Romain Rigaux 7 years ago
parent
commit
c80f1bfb81

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

@@ -53,6 +53,11 @@ def search(request):
   query['download'] = 'download' in request.POST
   query['download'] = 'download' in request.POST
   fetch_result = 'fetch_result' in request.POST
   fetch_result = 'fetch_result' in request.POST
 
 
+  if not facet.get('properties', {}).get('statement'):  
+    augment_solr_exception(response, collection)
+    response['responseHeader']['status'] = 0
+    return JsonResponse(response)
+  
   if collection:
   if collection:
     try:
     try:
       if fetch_result:
       if fetch_result:

+ 1 - 2
desktop/libs/dashboard/src/dashboard/static/dashboard/js/search.ko.js

@@ -562,7 +562,7 @@ var Collection = function (vm, collection) {
   });
   });
   self.source = ko.observable(typeof collection.source != "undefined" && collection.source != null ? collection.source : "data");
   self.source = ko.observable(typeof collection.source != "undefined" && collection.source != null ? collection.source : "data");
   self.async = ko.computed(function() {
   self.async = ko.computed(function() {
-    return ['impala', 'hive'].indexOf(self.engine()) != -1;
+    return ['impala', 'hive', 'report'].indexOf(self.engine()) != -1;
   });
   });
   self.queryResult = ko.observable(new QueryResult(self, {
   self.queryResult = ko.observable(new QueryResult(self, {
     type: self.engine(),
     type: self.engine(),
@@ -2196,7 +2196,6 @@ var SearchViewModel = function (collection_json, query_json, initial_json, has_g
         else if (facet.queryResult().status() == 'canceled') {
         else if (facet.queryResult().status() == 'canceled') {
           // Query was canceled in the meantime, do nothing
           // Query was canceled in the meantime, do nothing
         } else {
         } else {
-
           if (data.status == 0) {
           if (data.status == 0) {
             facet.queryResult().status(data.query_status.status);
             facet.queryResult().status(data.query_status.status);
 
 

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

@@ -388,8 +388,7 @@ from dashboard.conf import USE_GRIDSTER, USE_NEW_ADD_METHOD, HAS_REPORT_ENABLED,
          </a>
          </a>
     </div>
     </div>
     % if HAS_REPORT_ENABLED.get():
     % if HAS_REPORT_ENABLED.get():
-    <div data-bind="visible: $root.collection.supportAnalytics(),
-                    css: { 'draggable-widget': true, 'disabled': false },
+    <div data-bind="css: { 'draggable-widget': true, 'disabled': false },
                     draggable: {data: draggableDocument(), isEnabled: true,
                     draggable: {data: draggableDocument(), isEnabled: true,
                     options: getDraggableOptions({ data: draggableDocument() }) }"
                     options: getDraggableOptions({ data: draggableDocument() }) }"
          title="${_('Document')}" rel="tooltip" data-placement="top">
          title="${_('Document')}" rel="tooltip" data-placement="top">
@@ -5068,7 +5067,7 @@ $(document).ready(function () {
 
 
           selectedWidget = widget;
           selectedWidget = widget;
 
 
-          if (searchViewModel.collection.template.availableWidgetFields().length == 1) {
+          if (searchViewModel.collection.template.availableWidgetFields().length == 1 || widget.widgetType() == 'document-widget') {
             addFacetDemiModalFieldPreview(searchViewModel.collection.template.availableWidgetFields()[0]);
             addFacetDemiModalFieldPreview(searchViewModel.collection.template.availableWidgetFields()[0]);
           }
           }
           else {
           else {
@@ -5107,7 +5106,7 @@ $(document).ready(function () {
         selectedWidget = widget;
         selectedWidget = widget;
         selectedRow = target;
         selectedRow = target;
 
 
-        if (searchViewModel.collection.template.availableWidgetFields().length == 1 || widget.widgetType() == 'document-widget') {
+        if (searchViewModel.collection.template.availableWidgetFields().length == 1) {
           addFacetDemiModalFieldPreview(searchViewModel.collection.template.availableWidgetFields()[0]);
           addFacetDemiModalFieldPreview(searchViewModel.collection.template.availableWidgetFields()[0]);
         }
         }
         else {
         else {
@@ -5127,7 +5126,7 @@ $(document).ready(function () {
       selectedWidget.hasBeenSelected = true;
       selectedWidget.hasBeenSelected = true;
       selectedWidget.isLoading(true);
       selectedWidget.isLoading(true);
       searchViewModel.collection.addFacet({
       searchViewModel.collection.addFacet({
-        'name': field.name(),
+        'name': field ? field.name() : 'Query',
         'widget_id': selectedWidget.id(),
         'widget_id': selectedWidget.id(),
         'widgetType': selectedWidget.widgetType()
         'widgetType': selectedWidget.widgetType()
       }, function () {
       }, function () {

+ 3 - 0
desktop/libs/notebook/src/notebook/connectors/base.py

@@ -244,6 +244,9 @@ def get_api(request, snippet):
   if snippet.get('wasBatchExecuted'):
   if snippet.get('wasBatchExecuted'):
     return OozieApi(user=request.user, request=request)
     return OozieApi(user=request.user, request=request)
 
 
+  if snippet['type'] == 'report':
+    snippet['type'] = 'impala'
+
   interpreter = [interpreter for interpreter in get_ordered_interpreters(request.user) if interpreter['type'] == snippet['type']]
   interpreter = [interpreter for interpreter in get_ordered_interpreters(request.user) if interpreter['type'] == snippet['type']]
   if not interpreter:
   if not interpreter:
     if snippet['type'] == 'hbase':
     if snippet['type'] == 'hbase':