فهرست منبع

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 10 سال پیش
والد
کامیت
dcda86000f
2فایلهای تغییر یافته به همراه27 افزوده شده و 3 حذف شده
  1. 17 3
      desktop/core/src/desktop/static/desktop/js/ko.hue-bindings.js
  2. 10 0
      desktop/core/src/desktop/templates/assist.mako

+ 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>