Bladeren bron

HUE-6869 [editor] Enable show in assist from popover language ref

Johan Ahlen 7 jaren geleden
bovenliggende
commit
a2d1239d1e

+ 40 - 29
desktop/core/src/desktop/templates/assist.mako

@@ -2393,43 +2393,43 @@ from desktop.views import _ko
           $(element).find('.assist-docs-topics').scrollTop(0);
         });
 
-        self.disposals.push(function () {
-          selectedTopicSub.dispose();
-          querySub.dispose();
+        var showTopicSub = huePubSub.subscribe('assist.lang.ref.panel.show.topic', function (topicId) {
+          var mainTopic = topicId.split('#')[0]; // TODO: Handle subtopics
+          var topicStack = [];
+          var findTopic = function (topics) {
+            topics.some(function (topic) {
+              topicStack.push(topic);
+              if (topic.id === mainTopic) {
+                while (topicStack.length) {
+                  topicStack.pop().open(true);
+                }
+                self.query('');
+                self.selectedTopic(topic);
+                return true;
+              } else if (topic.children.length) {
+                var inChild = findTopic(topic.children);
+                if (inChild) {
+                  return true;
+                }
+              }
+              topicStack.pop();
+            })
+          };
+          findTopic(self.availableTopics);
         });
 
         $(element).on('click.langref', function (event) {
           if (event.target.className === 'lang-ref-link') {
-            var targetTopic = $(event.target).data('target').split('#');
-            var topicId = targetTopic[0];
-
-            var topicStack = [];
-            var findTopic = function (topics) {
-              topics.some(function (topic) {
-                topicStack.push(topic);
-                if (topic.id === topicId) {
-                  while (topicStack.length) {
-                    topicStack.pop().open(true);
-                  }
-                  self.query('');
-                  self.selectedTopic(topic);
-                  return true;
-                } else if (topic.children.length) {
-                  var inChild = findTopic(topic.children);
-                  if (inChild) {
-                    return true;
-                  }
-                }
-                topicStack.pop();
-              })
-            };
-            findTopic(self.availableTopics);
+            huePubSub.publish('assist.lang.ref.panel.show.topic', $(event.target).data('target'));
           }
         });
 
         self.disposals.push(function () {
+          selectedTopicSub.dispose();
+          querySub.dispose();
+          showTopicSub.remove();
           $(element).off('click.langref');
-        })
+        });
       }
 
       LanguageReferencePanel.prototype.dispose = function () {
@@ -3487,7 +3487,7 @@ from desktop.views import _ko
       <ul class="right-panel-tabs nav nav-pills">
         <li data-bind="css: { 'active' : activeTab() === 'editorAssistant' }, visible: editorAssistantTabAvailable" style="display:none;"><a href="javascript: void(0);" data-bind="click: function() { lastActiveTabEditor('editorAssistant'); activeTab('editorAssistant'); }">${ _('Assistant') }</a></li>
         <li data-bind="css: { 'active' : activeTab() === 'functions' }, visible: functionsTabAvailable" style="display:none;"><a href="javascript: void(0);" data-bind="click: function() { lastActiveTabEditor('functions'); activeTab('functions'); }">${ _('Functions') }</a></li>
-        <li data-bind="css: { 'active' : activeTab() === 'syntx' }, visible: langRefTabAvailable" style="display:none;"><a href="javascript: void(0);" data-bind="click: function() { lastActiveTabEditor('langRef'); activeTab('langRef'); }">${ _('Reference') }</a></li>
+        <li data-bind="css: { 'active' : activeTab() === 'langRef' }, visible: langRefTabAvailable" style="display:none;"><a href="javascript: void(0);" data-bind="click: function() { lastActiveTabEditor('langRef'); activeTab('langRef'); }">${ _('Reference') }</a></li>
         <li data-bind="css: { 'active' : activeTab() === 'schedules' }, visible: schedulesTabAvailable" style="display:none;"><a href="javascript: void(0);" data-bind="click: function() { lastActiveTabEditor('schedules'); activeTab('schedules'); }">${ _('Schedule') }</a></li>
         <li data-bind="css: { 'active' : activeTab() === 'dashboardAssistant' }, visible: dashboardAssistantTabAvailable" style="display:none;"><a href="javascript: void(0);" data-bind="click: function() { lastActiveTabDashboard('dashboardAssistant'); activeTab('dashboardAssistant'); }">${ _('Assistant') }</a></li>
       </ul>
@@ -3523,6 +3523,7 @@ from desktop.views import _ko
       var DASHBOARD_ASSISTANT_TAB = 'dashboardAssistant';
       var FUNCTIONS_TAB = 'functions';
       var SCHEDULES_TAB = 'schedules';
+      var LANG_REF_TAB = 'langRef';
 
       function RightAssistPanel(params) {
         var self = this;
@@ -3548,6 +3549,14 @@ from desktop.views import _ko
           }
         });
 
+        huePubSub.subscribe('assist.lang.ref.show.topic', function (topicId) {
+          huePubSub.publish('right.assist.show');
+          if (self.langRefTabAvailable() && self.activeTab() !== LANG_REF_TAB) {
+            self.activeTab(LANG_REF_TAB);
+          }
+          huePubSub.publish('assist.lang.ref.panel.show.topic', topicId)
+        });
+
         var updateTabs = function () {
           if (!assistEnabledApp) {
             params.rightAssistAvailable(false);
@@ -3558,6 +3567,8 @@ from desktop.views import _ko
             self.activeTab(FUNCTIONS_TAB);
           } else if (self.lastActiveTabEditor() === SCHEDULES_TAB && self.schedulesTabAvailable()) {
             self.activeTab(SCHEDULES_TAB);
+          } else if (self.lastActiveTabEditor() === LANG_REF_TAB && self.langRefTabAvailable()) {
+            self.activeTab(LANG_REF_TAB);
           } else if (self.editorAssistantTabAvailable()) {
             self.activeTab(EDITOR_ASSISTANT_TAB);
           } else if (self.functionsTabAvailable()) {

+ 15 - 5
desktop/core/src/desktop/templates/ko_components/ko_context_popover.mako

@@ -300,7 +300,7 @@ from metadata.conf import has_navigator
       <div class="context-popover-flex-fill" data-bind="html: body"></div>
       <div class="context-popover-flex-bottom-links">
         <div class="context-popover-link-row">
-          <a class="inactive-action pointer" data-bind="click: $parent.openInRightAssist">
+          <a class="inactive-action pointer" data-bind="click: openInRightAssist">
             <i style="font-size: 11px;" title="${ _("Show in Assist...") }" class="fa fa-search"></i> ${ _("Assist") }
           </a>
         </div>
@@ -853,12 +853,11 @@ from metadata.conf import has_navigator
         self.title = ko.observable();
         self.body = ko.observable();
 
-        var topicId = 'topics/impala_' + options.data.identifier.toLowerCase().replace(/ /g, '_') + '.xml';
+        self.topicId = 'topics/impala_' + options.data.identifier.toLowerCase().replace(/ /g, '_') + '.xml';
 
-        console.log(topicId);
         var findTopic = function (topics) {
           topics.some(function (topic) {
-            if (topic.id === topicId) {
+            if (topic.id === self.topicId) {
               self.title(topic.title);
               self.body(topic.body);
               return true;
@@ -870,11 +869,22 @@ from metadata.conf import has_navigator
         };
 
         findTopic(impalaLangRefTopics);
+
+        $('.hue-popover').on('click.contextLangRef', function (event) {
+          if (event.target.className === 'lang-ref-link') {
+            huePubSub.publish('assist.lang.ref.show.topic', $(event.target).data('target'));
+          }
+        });
+      }
+
+      LangRefContext.prototype.dispose = function () {
+        $('.hue-popover').off('click.contextLangRef');
       };
 
       LangRefContext.prototype.openInRightAssist = function () {
         var self = this;
-        // TODO: implement
+        huePubSub.publish('assist.lang.ref.show.topic', self.topicId);
+        huePubSub.publish('context.popover.hide');
       };
 
       function DocumentContext(data) {