Bläddra i källkod

HUE-7949 [dashboard] Fix dropping of a widget on empty space

Enrico Berti 7 år sedan
förälder
incheckning
61b8c6bde9
1 ändrade filer med 33 tillägg och 27 borttagningar
  1. 33 27
      desktop/libs/dashboard/src/dashboard/templates/common_search.mako

+ 33 - 27
desktop/libs/dashboard/src/dashboard/templates/common_search.mako

@@ -3806,6 +3806,7 @@ $(document).ready(function () {
     var $huePreviewHolder = $('.hue-preview-holder');
     if (coords.row > 0 && coords.col > 0 && coords.col < 13) {
       var overlaps = false;
+      var isEmptyWidget = false;
       $('li.gs-w').each(function () {
         var dimensions = {
           col: parseInt($(this).attr('data-immutable-col')),
@@ -3814,7 +3815,7 @@ $(document).ready(function () {
           sizey: parseInt($(this).attr('data-immutable-sizey'))
         }
         var $widget = $(this);
-        var isEmptyWidget = $widget.children('.empty-gridster-widget').length > 0;
+        isEmptyWidget = $widget.children('.empty-gridster-widget').length > 0;
         if (coords.col >= dimensions.col && coords.row >= dimensions.row && coords.col < dimensions.col + dimensions.sizex && coords.row < dimensions.row + dimensions.sizey) {
           overlaps = true;
           if (!isEmptyWidget) {
@@ -3960,6 +3961,9 @@ $(document).ready(function () {
           $huePreviewHolder.removeAttr('data-widgetrow');
           $huePreviewHolder.removeAttr('data-widgetcol');
         }
+        if (isEmptyWidget) {
+          $huePreviewHolder.hide();
+        }
       }
       else {
         $huePreviewHolder.hide();
@@ -4074,34 +4078,36 @@ $(document).ready(function () {
 
     if (searchViewModel.columns().length > 0) {
 
-      if (dimensions.overlap === 'N') {
-        dimensions.row = dimensions.widgetRow;
-      }
-      else if (dimensions.overlap !== 'S') {
-        var collindingWidgets = [];
-        searchViewModel.gridItems().forEach(function (existingWidget) {
-          var existingWidgetRow = parseInt($(existingWidget.gridsterElement).attr('data-row'));
-          if (existingWidgetRow === dimensions.widgetRow) {
-            collindingWidgets.push(existingWidget);
-          }
-        });
+      if (typeof dimensions.overlap !== 'undefined') {
+        if (dimensions.overlap === 'N') {
+          dimensions.row = dimensions.widgetRow;
+        }
+        else if (dimensions.overlap !== 'S') {
+          var collindingWidgets = [];
+          searchViewModel.gridItems().forEach(function (existingWidget) {
+            var existingWidgetRow = parseInt($(existingWidget.gridsterElement).attr('data-row'));
+            if (existingWidgetRow === dimensions.widgetRow) {
+              collindingWidgets.push(existingWidget);
+            }
+          });
 
-        var newOptimalWidth = Math.floor(12 / (collindingWidgets.length + 1));
-        collindingWidgets.sort(function (a, b) {
-          return a.col() > b.col()
-        });
+          var newOptimalWidth = Math.floor(12 / (collindingWidgets.length + 1));
+          collindingWidgets.sort(function (a, b) {
+            return a.col() > b.col()
+          });
 
-        // yay for Gridster starting arrays at 1
-        var droppedWidgetFauxColumn = Math.floor((dimensions.col - 1) / newOptimalWidth) + 1;
-        var adjustedDropPosition = (Math.floor((dimensions.col - 1) / newOptimalWidth) * newOptimalWidth) + 1;
-        dimensions.col = adjustedDropPosition;
-        dimensions.sizex = newOptimalWidth;
-
-        var siblingCounter = 0;
-        for (var i = 1; i <= 12 / newOptimalWidth; i++) {
-          if (i !== droppedWidgetFauxColumn) {
-            resizeAndMove(collindingWidgets[siblingCounter], newOptimalWidth, ((i - 1) * newOptimalWidth) + 1)
-            siblingCounter++;
+          // yay for Gridster starting arrays at 1
+          var droppedWidgetFauxColumn = Math.floor((dimensions.col - 1) / newOptimalWidth) + 1;
+          var adjustedDropPosition = (Math.floor((dimensions.col - 1) / newOptimalWidth) * newOptimalWidth) + 1;
+          dimensions.col = adjustedDropPosition;
+          dimensions.sizex = newOptimalWidth;
+
+          var siblingCounter = 0;
+          for (var i = 1; i <= 12 / newOptimalWidth; i++) {
+            if (i !== droppedWidgetFauxColumn) {
+              resizeAndMove(collindingWidgets[siblingCounter], newOptimalWidth, ((i - 1) * newOptimalWidth) + 1)
+              siblingCounter++;
+            }
           }
         }
       }