Browse Source

HUE-3826 [assist] Expanding column click can be flaky

If dragging within 10 px it will trigger a click on the element and I've also change the cursor to default for entries that can't be expanded.
Johan Ahlen 9 years ago
parent
commit
dcda86000f

+ 17 - 3
desktop/core/src/desktop/static/desktop/js/ko.hue-bindings.js

@@ -59,12 +59,26 @@
       $element.addClass("draggableText");
 
       var $helper = $("<div>").text(ko.isObservable(options.text) ? options.text() : options.text).css("z-index", "99999");
+      var dragStartX = -1;
+      var dragStartY = -1;
       $element.draggable({
         helper: function () { return $helper },
         appendTo: "body",
-        start: function () {
+        start: function (event) {
+          dragStartX = event.clientX;
+          dragStartY = event.clientY;
           huePubSub.publish('draggable.text.meta', options.meta);
-        }
+        },
+        stop: function (event) {
+          if (Math.sqrt((dragStartX-event.clientX)*(dragStartX-event.clientX) + (dragStartY-event.clientY)*(dragStartY-event.clientY)) < 10) {
+            $helper.remove();
+            var elementAtStart = document.elementFromPoint(dragStartX, dragStartY);
+            var elementAtStop = document.elementFromPoint(event.clientX, event.clientY);
+            if (elementAtStart === elementAtStop) {
+              $(elementAtStop).trigger('click');
+            }
+          }
+        },
       });
     }
   };
@@ -374,7 +388,7 @@
             clickedOnce = false;
             clearTimeout(singleClickTimeout);
             clearTimeout(dblClickTimeout);
-          } else {
+          } else if (clickHandlerFunction) {
             clickedOnce = true;
             singleClickTimeout = window.setTimeout(function() {
               clickHandlerFunction.apply(viewModel, clickArgs);

+ 10 - 0
desktop/core/src/desktop/templates/assist.mako

@@ -441,12 +441,22 @@ from desktop.views import _ko
       <!-- ko ifnot: definition.isTable && ! hasErrors() -->
       <li data-bind="visible: ! hasErrors(), visibleOnHover: { override: statsVisible, selector: definition.isView ? '.table-actions' : '.column-actions' }, css: { 'assist-table': definition.isView, 'assist-column': definition.isColumn }">
         <!-- ko template: { if: definition.isView || definition.isColumn, name: 'assist-entry-actions' } --><!-- /ko -->
+        <!-- ko if: expandable -->
         <a class="assist-entry" href="javascript:void(0)" data-bind="multiClick: { click: toggleOpen, dblClick: dblClick }, attr: {'title': definition.title }, css: { 'assist-field-link': !definition.isView, 'assist-table-link': definition.isView }">
           <!-- ko if: definition.isView -->
             <i class="fa fa-fw fa-eye muted valign-middle"></i>
           <!-- /ko -->
           <span data-bind="css: {'query-builder-menu': definition.isColumn}, attr: {'column': columnName, 'table': tableName, 'database': databaseName}, text: definition.displayName, draggableText: { text: editorText, meta: {'column': columnName, 'table': tableName, 'database': databaseName} }"></span>
         </a>
+        <!-- /ko -->
+        <!-- ko ifnot: expandable -->
+        <span style="cursor: default;" class="assist-entry" href="javascript:void(0)" data-bind="multiClick: { dblClick: dblClick }, attr: {'title': definition.title }, css: { 'assist-field-link': !definition.isView, 'assist-table-link': definition.isView }">
+          <!-- ko if: definition.isView -->
+          <i class="fa fa-fw fa-eye muted valign-middle"></i>
+          <!-- /ko -->
+          <span data-bind="css: {'query-builder-menu': definition.isColumn}, attr: {'column': columnName, 'table': tableName, 'database': databaseName}, text: definition.displayName, draggableText: { text: editorText, meta: {'column': columnName, 'table': tableName, 'database': databaseName} }"></span>
+        </span>
+        <!-- /ko -->
         <div class="center" data-bind="visible: loading" style="display:none;"><i class="fa fa-spinner fa-spin assist-spinner"></i></div>
         <!-- ko template: { if: open, name: 'assist-db-entries'  } --><!-- /ko -->
       </li>