Эх сурвалжийг харах

HUE-8393 [dashboard] Only show a drag document action when in report

Romain Rigaux 7 жил өмнө
parent
commit
3b3d422fff

+ 11 - 10
desktop/core/src/desktop/models.py

@@ -1698,18 +1698,9 @@ class ClusterConfig():
 
   def _get_dashboard(self):
     interpreters = get_engines(self.user)
+    _interpreters = []
 
     if interpreters and self.cluster_type != ANALYTIC_DB:
-      _interpreters = [{
-          'type': interpreter['type'],
-          'displayName': interpreter['type'].title(),
-          'buttonName': interpreter['type'].title(),
-          'page': '/dashboard/new_search?engine=%(type)s' % interpreter,
-          'tooltip': _('%s Dashboard') % interpreter['type'].title(),
-          'is_sql': True
-        } for interpreter in interpreters
-      ]
-
       if HAS_REPORT_ENABLED.get():
         _interpreters.append({
           'type': 'report',
@@ -1720,6 +1711,16 @@ class ClusterConfig():
           'is_sql': False
         })
 
+      _interpreters.extend([{
+          'type': interpreter['type'],
+          'displayName': interpreter['type'].title(),
+          'buttonName': interpreter['type'].title(),
+          'page': '/dashboard/new_search?engine=%(type)s' % interpreter,
+          'tooltip': _('%s Dashboard') % interpreter['type'].title(),
+          'is_sql': True
+        } for interpreter in interpreters
+      ])
+
       return {
         'name': 'dashboard',
         'displayName': _('Dashboard'),

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

@@ -52,11 +52,6 @@ def search(request):
 
   query['download'] = 'download' 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:
     try:

+ 8 - 6
desktop/libs/dashboard/src/dashboard/static/dashboard/js/search.ko.js

@@ -2175,8 +2175,10 @@ var SearchViewModel = function (collection_json, query_json, initial_json, has_g
       self.isToolbarVisible(self.isEditing());
       self.initial.init();
       self.collection.syncFields();
-      if (self.collection.engine() === 'solr' || self.collection.engine() === 'report') {
+      if (self.collection.engine() === 'solr') {
         self.search(callback);
+      } else if (self.collection.engine() === 'report') {
+        callback();
       }
     }
 
@@ -2370,10 +2372,11 @@ var SearchViewModel = function (collection_json, query_json, initial_json, has_g
       }
 
       if (self.collection.engine() != 'solr') {
-    	var queryFragments = [].concat(self.collection.facets());
-    	if (self.collection.engine() != 'report') {
-    	  queryFragments.concat([self.collection]);
-    	}
+        var queryFragments = [].concat(self.collection.facets());
+        if (self.collection.engine() != 'report') {
+          queryFragments.concat([self.collection]);
+        }
+
         $.each(queryFragments, function (index, facet) {
           if (facet.queryResult().result.handle) {
             self.close(facet);
@@ -2410,7 +2413,6 @@ var SearchViewModel = function (collection_json, query_json, initial_json, has_g
         self.getFieldAnalysis().update();
       }
 
-      
       if (self.collection.engine() != 'report') {
         multiQs.concat([
           $.post("/dashboard/search", {

+ 8 - 8
desktop/libs/dashboard/src/dashboard/templates/common_search.mako

@@ -25,7 +25,7 @@ from dashboard.conf import USE_GRIDSTER, USE_NEW_ADD_METHOD, HAS_REPORT_ENABLED,
 
 <%namespace name="dashboard" file="common_dashboard.mako" />
 
-<%def name="page_structure(is_mobile=False, is_embeddable=False)">
+<%def name="page_structure(is_mobile=False, is_embeddable=False, is_report=False)">
 
 <script type="text/javascript">
   SLIDER_LABELS = {
@@ -90,7 +90,7 @@ from dashboard.conf import USE_GRIDSTER, USE_NEW_ADD_METHOD, HAS_REPORT_ENABLED,
 
       <form class="form-search" style="margin: 0" data-bind="submit: searchBtn, visible: columns().length != 0">
         <div class="search-bar-query-container">
-          <div class="search-bar-collection" data-bind="css: { 'report-mode': $root.collection.engine() === 'report' }">
+          <div class="search-bar-collection" data-bind="visible: $root.collection.engine() != 'report'">
             <div class="selectMask">
               <span data-bind="editable: collection.label, editableOptions: { enabled: true, placement: 'right' }"></span>
             </div>
@@ -235,6 +235,7 @@ from dashboard.conf import USE_GRIDSTER, USE_NEW_ADD_METHOD, HAS_REPORT_ENABLED,
 
 <%dashboard:layout_toolbar>
   <%def name="results()">
+    % if not is_report:
     <div data-bind="css: { 'draggable-widget': true, 'disabled': !availableDraggableResultset() },
                     draggable: {data: draggableResultset(), isEnabled: availableDraggableResultset, options: getDraggableOptions({ data: draggableResultset(), stop: function() { $root.collection.template.isGridLayout(true); checkResultHighlightingAvailability(); } }) }"
          title="${_('Grid')}" rel="tooltip" data-placement="top">
@@ -270,9 +271,11 @@ from dashboard.conf import USE_GRIDSTER, USE_NEW_ADD_METHOD, HAS_REPORT_ENABLED,
              <i class="fa fa-map-marker"></i>
          </a>
     </div>
+      % endif
       </%def>
 
       <%def name="widgets()">
+    % if not is_report:
     <div data-bind="visible: $root.collection.supportAnalytics,
                     css: { 'draggable-widget': true, 'disabled': !hasAvailableFields() },
                     draggable: {data: draggableCounter(), isEnabled: hasAvailableFields,
@@ -391,7 +394,7 @@ from dashboard.conf import USE_GRIDSTER, USE_NEW_ADD_METHOD, HAS_REPORT_ENABLED,
                        <i class="hcha hcha-map-chart"></i>
          </a>
     </div>
-    % if HAS_REPORT_ENABLED.get():
+    % else:
     <div data-bind="css: { 'draggable-widget': true, 'disabled': false },
                     draggable: {data: draggableDocument(), isEnabled: true,
                     options: getDraggableOptions({ data: draggableDocument() }) }"
@@ -3949,8 +3952,7 @@ function loadSearch(collection, query, initial) {
   searchViewModel = new SearchViewModel(collection, query, initial, ${ USE_GRIDSTER.get() and 'true' or 'false' }, ${ USE_NEW_ADD_METHOD.get() and 'true' or 'false' });
   ko.applyBindings(searchViewModel, $('#searchComponents')[0]);
 
-  searchViewModel.timelineChartTypes = ko.observableArray([
-    {
+  searchViewModel.timelineChartTypes = ko.observableArray([{
       value: "line",
       label: "${ _('Lines')}"
     },
@@ -3963,9 +3965,7 @@ function loadSearch(collection, query, initial) {
   searchViewModel.init(function(){
     $(".chosen-select").trigger("chosen:updated");
     if (searchViewModel.collection.engine() === 'report') {
-      // TODO: remove forced table
-      searchViewModel.collection.name('default.web_logs');
-      textSearchLayout(searchViewModel, true);
+      magicSearchLayout(searchViewModel);
     }
   });
 

+ 1 - 1
desktop/libs/dashboard/src/dashboard/templates/search.mako

@@ -31,7 +31,7 @@ ${ notebookKoComponents.downloadSnippetResults() }
 %endif
 
 <div id="searchComponents" class="dashboard-container search-components">
-${ common_search.page_structure(False, is_embeddable) }
+${ common_search.page_structure(False, is_embeddable, is_report) }
 </div>
 
 %if not is_embeddable:

+ 9 - 3
desktop/libs/dashboard/src/dashboard/views.py

@@ -53,6 +53,10 @@ DEFAULT_LAYOUT = [
         "drops":["temp"],"klass":"card card-home card-column span10"},
 ]
 
+REPORT_LAYOUT = [
+  {u'klass': u'card card-home card-column span12', u'rows': [{"widgets":[]}], u'id': u'7e0c0a45-ae90-43a6-669a-2a852ef4a449', u'drops': [u'temp'], u'size': 12}
+]
+
 QUERY_BUILDER_LAYOUT = [
   {u'klass': u'card card-home card-column span12', u'rows': [
     {u'widgets': [
@@ -137,6 +141,7 @@ def new_search(request):
 
   collection = Collection2(user=request.user, name=collections[0], engine=engine)
   query = {'qs': [{'q': ''}], 'fqs': [], 'start': 0}
+  layout = DEFAULT_LAYOUT if engine != 'report' else REPORT_LAYOUT
 
   if request.GET.get('format', 'plain') == 'json':
     return JsonResponse({
@@ -144,7 +149,7 @@ def new_search(request):
       'query': query,
       'initial': {
           'collections': collections,
-          'layout': DEFAULT_LAYOUT,
+          'layout': layout,
           'qb_layout': QUERY_BUILDER_LAYOUT,
           'text_search_layout': TEXT_SEARCH_LAYOUT,
           'is_latest': _get_latest(),
@@ -157,7 +162,7 @@ def new_search(request):
       'query': query,
       'initial': json.dumps({
           'collections': collections,
-          'layout': DEFAULT_LAYOUT,
+          'layout': layout,
           'qb_layout': QUERY_BUILDER_LAYOUT,
           'text_search_layout': TEXT_SEARCH_LAYOUT,
           'is_latest': _get_latest(),
@@ -165,7 +170,8 @@ def new_search(request):
        }),
       'is_owner': True,
       'is_embeddable': request.GET.get('is_embeddable', False),
-      'can_edit_index': can_edit_index(request.user)
+      'can_edit_index': can_edit_index(request.user),
+      'is_report': engine == 'report'
     })
 
 def browse(request, name, is_mobile=False):