Selaa lähdekoodia

HUE-6939 [editor] Improve interactions with the risk indicator

- Suggestions are updated when switching panels
- Clicking on the risk indicator will show the assistant panel if hidden
- Tooltip instead of text toggle for the risk indicator
Johan Ahlen 8 vuotta sitten
vanhempi
commit
0259e658dd

+ 11 - 3
desktop/core/src/desktop/templates/assist.mako

@@ -2044,7 +2044,7 @@ from notebook.conf import ENABLE_QUERY_BUILDER, ENABLE_QUERY_SCHEDULING, get_ord
               var tables = Object.values(activeTableIndex);
               tables.sort(function (a, b) {
                 return a.definition.name.localeCompare(b.definition.name);
-              })
+              });
               self.activeTables(tables);
             }
           }
@@ -2055,8 +2055,10 @@ from notebook.conf import ENABLE_QUERY_BUILDER, ENABLE_QUERY_SCHEDULING, get_ord
 
         var activeLocationsSub = huePubSub.subscribe('editor.active.locations', handleLocationUpdate);
 
-        var activeRisksSub = huePubSub.subscribe('editor.active.risks', function (activeRisks) {
-          self.activeRisks(activeRisks);
+        var activeRisksSub = huePubSub.subscribe('editor.active.risks', self.activeRisks);
+
+        huePubSub.publish('editor.get.active.risks', function (risks) {
+          self.activeRisks(risks || {});
         });
 
         self.disposals.push(function () {
@@ -2227,6 +2229,12 @@ from notebook.conf import ENABLE_QUERY_BUILDER, ENABLE_QUERY_SCHEDULING, get_ord
 
         var assistEnabledApp = false;
 
+        huePubSub.subscribe('assist.highlight.risk.suggestions', function () {
+          if (self.assistantTabAvailable() && self.activeTab() !== ASSISTANT_TAB) {
+            self.activeTab(ASSISTANT_TAB);
+          }
+        });
+
         var updateTabs = function () {
           if (!assistEnabledApp) {
             params.rightAssistAvailable(false);

+ 7 - 0
desktop/core/src/desktop/templates/hue.mako

@@ -1115,6 +1115,13 @@ ${ smart_unicode(login_modal(request).content) | n,unicode }
           }, 0);
         });
         self.rightAssistAvailable = ko.observable(false);
+
+        huePubSub.subscribe('assist.highlight.risk.suggestions', function () {
+          if (self.rightAssistAvailable() && !self.rightAssistVisible()) {
+            self.rightAssistVisible(true);
+          }
+        });
+
         self.activeAppViewModel = ko.observable();
         self.currentApp = ko.observable('');
         self.templateApp = ko.pureComputed(function(){

+ 6 - 0
desktop/libs/notebook/src/notebook/static/notebook/js/notebook.ko.js

@@ -2727,6 +2727,12 @@ var EditorViewModel = (function() {
     self.isRightPanelVisible = ko.observable();
     ApiHelper.getInstance().withTotalStorage('assist', 'right_assist_panel_visible', self.isRightPanelVisible, true);
 
+    huePubSub.subscribe('assist.highlight.risk.suggestions', function () {
+      if (self.isRightPanelAvailable() && !self.isRightPanelVisible()) {
+        self.isRightPanelVisible(true);
+      }
+    });
+
     self.isContextPanelVisible = ko.observable(false);
     self.isContextPanelVisible.subscribe(function (newValue) {
       huePubSub.publish('context.panel.visible', newValue);

+ 20 - 22
desktop/libs/notebook/src/notebook/templates/editor_components.mako

@@ -1037,43 +1037,25 @@ ${ sqlSyntaxDropdown.sqlSyntaxDropdown() }
     <!-- /ko -->
     <!-- ko if: ! hasSuggestion() && topRisk() -->
       <!-- ko if: topRisk().risk === 'low' -->
-        <div class="round-icon success" data-bind="click: function(){ showOptimizer(! showOptimizer()) }, attr: { 'title': showOptimizer() ? '${ _ko('Close Validator') }' : '${ _ko('Open Validator') }'}">
+        <div class="round-icon success" data-bind="click: function () { huePubSub.publish('assist.highlight.risk.suggestions'); }, tooltip: { placement: 'bottom' }" title="${ _('Some low risks were detected, see the assistant for details.') }">
           <i class="fa fa-check"></i>
         </div>
-        <!-- ko if: showOptimizer -->
-        <span class="optimizer-explanation alert-info alert-neutral">
-          ${ _('Some low risks were detected.') }
-        </span>
-        <!-- /ko -->
       <!-- /ko -->
       <!-- ko if: topRisk().risk == 'medium' -->
-        <div class="round-icon warning" data-bind="click: function(){ showOptimizer(! showOptimizer()) }, attr: { 'title': showOptimizer() ? '${ _ko('Close Validator') }' : '${ _ko('Open Validator') }'}">
+        <div class="round-icon warning" data-bind="click: function () { huePubSub.publish('assist.highlight.risk.suggestions'); }, tooltip: { placement: 'bottom' }" title="${ _('Some medium risks were detected, see the assistant for details.') }">
           <i class="fa fa-exclamation"></i>
         </div>
-        <!-- ko if: showOptimizer -->
-        <span class="optimizer-explanation alert-warning alert-neutral">
-          ${ _('Some medium risks were detected.') }
-        </span>
-        <!-- /ko -->
       <!-- /ko -->
       <!-- ko if: topRisk().risk == 'high' -->
-        <div class="round-icon error" data-bind="click: function(){ showOptimizer(! showOptimizer()) }, attr: { 'title': showOptimizer() ? '${ _ko('Close Validator') }' : '${ _ko('Open Validator') }'}">
+        <div class="round-icon error" data-bind="click: function () { huePubSub.publish('assist.highlight.risk.suggestions'); }, tooltip: { placement: 'bottom' }" title="${ _('Some high risks were detected, see the assistant for details.') }">
           <i class="fa fa-exclamation"></i>
         </div>
-        <!-- ko if: showOptimizer -->
-        <span class="optimizer-explanation alert-error alert-neutral">
-          ${ _('Some high risks were detected.') }
-        </span>
-        <!-- /ko -->
       <!-- /ko -->
     <!-- /ko -->
     <!-- ko if: hasSuggestion() == '' && ! topRisk() -->
-      <div class="round-icon success" data-bind="click: function(){ showOptimizer(! showOptimizer()) }, attr: { 'title': showOptimizer() ? '${ _ko('Close Validator') }' : '${ _ko('Open Validator') }'}">
+      <div class="round-icon success" data-bind="click: function () { huePubSub.publish('assist.highlight.risk.suggestions'); }, tooltip: { placement: 'bottom' }" title="${ _('Query validated, no issues found.') }">
         <i class="fa fa-check"></i>
       </div>
-      <!-- ko if: showOptimizer -->
-        <span class="optimizer-explanation alert-success alert-neutral">${ _('Query validated.') }</span>
-      <!-- /ko -->
     <!-- /ko -->
   </div>
   <!-- /ko -->
@@ -3503,6 +3485,22 @@ ${ sqlSyntaxDropdown.sqlSyntaxDropdown() }
         }
       }, HUE_PUB_SUB_EDITOR_ID);
 
+      huePubSub.subscribe('editor.get.active.risks', function (callback) {
+        if (viewModel.selectedNotebook()) {
+          if (viewModel.selectedNotebook().snippets().length === 1) {
+            callback(viewModel.selectedNotebook().snippets()[0].complexity());
+          } else {
+            viewModel.selectedNotebook().snippets().every(function (snippet) {
+              if (snippet.inFocus()) {
+                callback(snippet.complexity());
+                return false;
+              }
+              return true;
+            });
+          }
+        }
+      });
+
       $(document).on("gridShown", function (e, snippet) {
         window.setTimeout(function () {
           resizeToggleResultSettings(snippet, true);