Browse Source

HUE-7247 [editor] Show custom context menu when dragging views into the editor

Johan Ahlen 8 years ago
parent
commit
34312c6

+ 15 - 0
desktop/core/src/desktop/static/desktop/js/ko.hue-bindings.js

@@ -4898,6 +4898,17 @@
       var lastMeta = {};
       var draggableTextSub = huePubSub.subscribe('draggable.text.meta', function (meta) {
         lastMeta = meta;
+        if (meta.isView) {
+          $tableDropMenu.find('.editor-drop-update').hide();
+          $tableDropMenu.find('.editor-drop-insert').hide();
+          $tableDropMenu.find('.editor-drop-drop').hide();
+          $tableDropMenu.find('.editor-drop-view').show();
+        } else {
+          $tableDropMenu.find('.editor-drop-update').show();
+          $tableDropMenu.find('.editor-drop-insert').show();
+          $tableDropMenu.find('.editor-drop-drop').show();
+          $tableDropMenu.find('.editor-drop-view').hide();
+        }
         if (typeof meta !== 'undefined' && typeof meta.database !== 'undefined' && typeof meta.table !== 'undefined') {
           $identifierDropMenu.text(meta.database + '.' + meta.table)
         }
@@ -4926,6 +4937,10 @@
         insertSqlAtCursor('UPDATE ' + lastMeta.database + '.' + lastMeta.table + ' SET ', 0, menu);
       });
 
+      $tableDropMenu.find('.editor-drop-view').click(function () {
+        insertSqlAtCursor('DROP VIEW ' + lastMeta.database + '.' + lastMeta.table + ';', -1, menu);
+      });
+
       $tableDropMenu.find('.editor-drop-drop').click(function () {
         insertSqlAtCursor('DROP TABLE ' + lastMeta.database + '.' + lastMeta.table + ';', -1, menu);
       });

+ 1 - 1
desktop/core/src/desktop/templates/assist.mako

@@ -211,7 +211,7 @@ from desktop.views import _ko
         <!-- /ko -->
         <a class="inactive-action" href="javascript:void(0)" data-bind="visible: navigationSettings.openItem, click: openItem"><i class="fa fa-long-arrow-right" title="${_('Open')}"></i></a>
       </div>
-      <a class="assist-entry assist-table-link" href="javascript:void(0)" data-bind="click: toggleOpen, attr: {'title': definition.title }, draggableText: { text: editorText,  meta: {'type': 'sql', 'table': tableName, 'database': databaseName} }">
+      <a class="assist-entry assist-table-link" href="javascript:void(0)" data-bind="click: toggleOpen, attr: {'title': definition.title }, draggableText: { text: editorText,  meta: {'type': 'sql', 'isView': definition.isView, 'table': tableName, 'database': databaseName} }">
         <i class="fa fa-fw fa-table muted valign-middle" data-bind="css: { 'fa-eye': definition.isView && !navigationSettings.rightAssist, 'fa-table': definition.isTable && sourceType !== 'solr' && !navigationSettings.rightAssist, 'fa-search': sourceType === 'solr' }"></i>
         <span class="highlightable" data-bind="text: definition.displayName, css: { 'highlight': highlight }"></span> <!-- ko if: assistDbSource.activeSort() === 'popular' && popularity() > 0 --><i title="${ _('Popular') }" class="fa fa-star-o top-star"></i> <!-- /ko -->
       </a>

+ 1 - 0
desktop/libs/notebook/src/notebook/templates/editor_components.mako

@@ -1132,6 +1132,7 @@ ${ sqlSyntaxDropdown.sqlSyntaxDropdown() }
         <li class="editor-drop-insert"><a href="javascript:void(0);">INSERT INTO <span class="editor-drop-identifier"></span>...</a></li>
         <li class="editor-drop-update"><a href="javascript:void(0);">UPDATE <span class="editor-drop-identifier"></span>...</a></li>
         <li class="editor-drop-drop"><a href="javascript:void(0);">DROP TABLE <span class="editor-drop-identifier"></span>...</a></li>
+        <li class="editor-drop-view"><a href="javascript:void(0);">DROP VIEW <span class="editor-drop-identifier"></span>...</a></li>
       </ul>
     </div>