diff --git a/dist/jquery.gridster.js b/dist/jquery.gridster.js
index 6bc440eca0..af3c2174ce 100644
--- a/dist/jquery.gridster.js
+++ b/dist/jquery.gridster.js
@@ -426,11 +426,13 @@
* the widget that was just created.
*/
fn.add_widget = function(html, size_x, size_y) {
+ var next_pos = this.next_position(size_x, size_y);
+
var $w = $(html).attr({
- 'data-col': this.highest_occupied_cell.col,
- 'data-row': this.highest_occupied_cell.row + 1,
- 'data-sizex' : size_x || 1,
- 'data-sizey' : size_y || 1
+ 'data-col': next_pos.col,
+ 'data-row': next_pos.row,
+ 'data-sizex' : next_pos.size_x,
+ 'data-sizey' : next_pos.size_y
}).addClass('gs_w').appendTo(this.$el).hide();
this.$widgets = this.$widgets.add($w);
@@ -456,6 +458,8 @@
* widget coords.
*/
fn.next_position = function(size_x, size_y) {
+ size_x || (size_x = 1);
+ size_y || (size_y = 1);
var ga = this.gridmap;
var cols_l = ga.length;
var valid_pos = [];
@@ -480,7 +484,8 @@
}
if (valid_pos.length) {
- var next_position = this.sort_by_row_asc(valid_pos)[0];
+ var next_position = this.sort_by_row_asc(valid_pos);
+ next_position = this.sort_by_row_asc(next_position)[0];
return next_position;
}
return false;
@@ -973,6 +978,26 @@
};
+ /**
+ * Sorts an Array of grid coords objects by column (representing the grid
+ * coords of each widget) in ascending way.
+ *
+ * @method sort_by_row_asc
+ * @param {Array} widgets Array of grid coords objects
+ * @return {Array} Returns the array sorted.
+ */
+ fn.sort_by_col_asc = function(widgets) {
+ widgets = widgets.sort(function(a, b){
+ if (a.col > b.col) {
+ return 1;
+ }
+ return -1;
+ });
+
+ return widgets;
+ };
+
+
/**
* Sorts an Array of grid coords objects (representing the grid coords of
* each widget) in descending way.
@@ -2097,6 +2122,7 @@
fn.set_dom_grid_height = function() {
var r = this.get_highest_occupied_cell().row;
this.$el.css('height', r * this.min_widget_height);
+ // this.$widgets.draggable("option", "containment", this.$el);
return this;
};
diff --git a/dist/jquery.gridster.min.js b/dist/jquery.gridster.min.js
index a48cf2ba84..8c7f7a7e68 100644
--- a/dist/jquery.gridster.min.js
+++ b/dist/jquery.gridster.min.js
@@ -1,4 +1,4 @@
/*! gridster.js - v0.1.0 - 2012-07-19
* https://github.com/ducksboard/gridster.js
* Copyright (c) 2012 ducksboard; Licensed MIT, GPL */
-(function(a,b,c,d){function e(b){return b[0]&&a.isPlainObject(b[0])?this.data=b[0]:this.el=b,this.isCoords=!0,this.coords={},this.init(),this}var f=e.prototype;f.init=function(){this.set(),this.original_coords=this.get()},f.set=function(){var a=this.el;a&&(this.data=a.offset(),this.data.width||(this.data.width=a.width()),this.data.height||(this.data.height=a.height()));var b=this.data;return this.coords.x1=b.left,this.coords.y1=b.top,this.coords.x2=b.left+b.width,this.coords.y2=b.top+b.height,this.coords.cx=b.left+b.width/2,this.coords.cy=b.top+b.height/2,this.coords.width=b.width,this.coords.height=b.height,this.coords.el=a||!1,this},f.update=function(b){if(!b&&!this.el)return this;if(b){var c=a.extend(this.data,b);this.data=c}return this.set(),this},f.get=function(){return this.coords},a.fn.coords=function(){if(this.data("coords"))return this.data("coords");var a=new e(this,arguments[0]);return this.data("coords",a),a}})(jQuery,window,document),function(a,b,c,d){function f(b,c,d){this.options=a.extend(e,d),this.$element=b,this.last_colliders=[],this.last_colliders_coords=[],typeof c=="string"||c instanceof jQuery?this.$colliders=a(c,this.options.colliders_context).not(this.$element):this.colliders=a(c),this.init()}var e={colliders_context:c.body,on_overlap:function(a){},on_overlap_start:function(a){},on_overlap_stop:function(a){}},g=f.prototype;g.init=function(){this.find_collisions()},g.overlaps=function(a,b){var c=!1,d=!1;if(b.x1>=a.x1&&b.x1<=a.x2||b.x2>=a.x1&&b.x2<=a.x2||a.x1>=b.x1&&a.x2<=b.x2)c=!0;if(b.y1>=a.y1&&b.y1<=a.y2||b.y2>=a.y1&&b.y2<=a.y2||a.y1>=b.y1&&a.y2<=b.y2)d=!0;return c&&d},g.detect_overlapping_region=function(a,b){var c="",d="";return a.y1>b.cy&&a.y1src/jquery.gridster.js:1870
+ src/jquery.gridster.js:1896
src/jquery.gridster.js:334
+ src/jquery.gridster.js:339
@@ -1310,7 +1317,7 @@
- src/jquery.gridster.js:966
+ src/jquery.gridster.js:991
@@ -1428,7 +1435,7 @@
- src/jquery.gridster.js:1373
+ src/jquery.gridster.js:1398
@@ -1565,7 +1572,7 @@ upper row possible.
- src/jquery.gridster.js:1015
+ src/jquery.gridster.js:1040
@@ -1683,7 +1690,7 @@ upper row possible.
- src/jquery.gridster.js:1545
+ src/jquery.gridster.js:1570
@@ -1810,7 +1817,7 @@ into account the dimensions (size_y
and size_x
attrs.
- src/jquery.gridster.js:356
+ src/jquery.gridster.js:361
@@ -1881,7 +1888,7 @@ into account the dimensions (size_y
and size_x
attrs.
- src/jquery.gridster.js:1508
+ src/jquery.gridster.js:1533
@@ -1968,7 +1975,7 @@ into account the dimensions (size_y
and size_x
attrs.
- src/jquery.gridster.js:1643
+ src/jquery.gridster.js:1668
@@ -2096,7 +2103,7 @@ each one.
- src/jquery.gridster.js:1664
+ src/jquery.gridster.js:1689
@@ -2224,7 +2231,7 @@ each one.
- src/jquery.gridster.js:1683
+ src/jquery.gridster.js:1708
@@ -2357,7 +2364,7 @@ each one.
- src/jquery.gridster.js:1749
+ src/jquery.gridster.js:1774
@@ -2504,7 +2511,7 @@ iteration. The value of this
inside the function is the jQuery wrap
- src/jquery.gridster.js:1765
+ src/jquery.gridster.js:1790
@@ -2645,7 +2652,7 @@ iteration. The value of this
inside the function is the jQuery wrap
- src/jquery.gridster.js:1893
+ src/jquery.gridster.js:1919
@@ -2755,7 +2762,7 @@ detect row or column that we want to go.
- src/jquery.gridster.js:1967
+ src/jquery.gridster.js:1993
@@ -2843,7 +2850,7 @@ detect row or column that we want to go.
- src/jquery.gridster.js:1826
+ src/jquery.gridster.js:1852
@@ -2962,7 +2969,7 @@ detect row or column that we want to go.
- src/jquery.gridster.js:1615
+ src/jquery.gridster.js:1640
@@ -3056,7 +3063,7 @@ detect row or column that we want to go.
- src/jquery.gridster.js:1781
+ src/jquery.gridster.js:1806
@@ -3137,7 +3144,7 @@ detect row or column that we want to go.
- src/jquery.gridster.js:1580
+ src/jquery.gridster.js:1605
@@ -3242,7 +3249,7 @@ detect row or column that we want to go.
- src/jquery.gridster.js:1598
+ src/jquery.gridster.js:1623
@@ -3359,7 +3366,7 @@ detect row or column that we want to go.
- src/jquery.gridster.js:1066
+ src/jquery.gridster.js:1091
@@ -3487,7 +3494,7 @@ theupperrowsarray. Iteration starts from row specified in
src/jquery.gridster.js:1953
+ src/jquery.gridster.js:1979
@@ -3558,7 +3565,7 @@ theupperrowsarray. Iteration starts from row specified in
src/jquery.gridster.js:1144
+ src/jquery.gridster.js:1169
@@ -3629,7 +3636,7 @@ theupperrowsarray. Iteration starts from row specified in
src/jquery.gridster.js:902
+ src/jquery.gridster.js:927
@@ -3716,7 +3723,7 @@ theupperrowsarray. Iteration starts from row specified in
src/jquery.gridster.js:821
+ src/jquery.gridster.js:846
@@ -3841,7 +3848,7 @@ theupperrowsarray. Iteration starts from row specified in
src/jquery.gridster.js:840
+ src/jquery.gridster.js:865
@@ -3966,7 +3973,7 @@ theupperrowsarray. Iteration starts from row specified in
src/jquery.gridster.js:795
+ src/jquery.gridster.js:820
@@ -4085,7 +4092,7 @@ theupperrowsarray. Iteration starts from row specified in
src/jquery.gridster.js:809
+ src/jquery.gridster.js:834
@@ -4195,7 +4202,7 @@ theupperrowsarray. Iteration starts from row specified in
src/jquery.gridster.js:763
+ src/jquery.gridster.js:788
@@ -4323,7 +4330,7 @@ HTMLElements.
- src/jquery.gridster.js:780
+ src/jquery.gridster.js:805
@@ -4449,7 +4456,7 @@ and col given.
- src/jquery.gridster.js:860
+ src/jquery.gridster.js:885
@@ -4575,7 +4582,7 @@ else returns the jQuery HTMLElement
- src/jquery.gridster.js:885
+ src/jquery.gridster.js:910
@@ -4707,7 +4714,7 @@ params and if this is under the widget that is being dragged.
- src/jquery.gridster.js:717
+ src/jquery.gridster.js:742
@@ -4849,7 +4856,7 @@ each widget) in descending way.
- src/jquery.gridster.js:1328
+ src/jquery.gridster.js:1353
@@ -4968,7 +4975,7 @@ each widget) in descending way.
- src/jquery.gridster.js:1239
+ src/jquery.gridster.js:1264
@@ -5080,7 +5087,7 @@ if they can.
- src/jquery.gridster.js:1282
+ src/jquery.gridster.js:1307
@@ -5206,7 +5213,7 @@ if they can.
- src/jquery.gridster.js:171
+ src/jquery.gridster.js:173
@@ -5328,7 +5335,7 @@ if they can.
- src/jquery.gridster.js:436
+ src/jquery.gridster.js:441
@@ -5441,7 +5448,7 @@ if they can.
- src/jquery.gridster.js:513
+ src/jquery.gridster.js:518
@@ -5569,7 +5576,7 @@ overlapped or stops being overlapped.
- src/jquery.gridster.js:553
+ src/jquery.gridster.js:558
@@ -5693,7 +5700,7 @@ overlapped or stops being overlapped.
- src/jquery.gridster.js:387
+ src/jquery.gridster.js:392
@@ -5800,7 +5807,7 @@ overlapped or stops being overlapped.
- src/jquery.gridster.js:1177
+ src/jquery.gridster.js:1202
@@ -5904,7 +5911,7 @@ overlapped or stops being overlapped.
- src/jquery.gridster.js:1189
+ src/jquery.gridster.js:1214
@@ -6010,7 +6017,7 @@ overlapped or stops being overlapped.
- src/jquery.gridster.js:462
+ src/jquery.gridster.js:467
@@ -6117,7 +6124,7 @@ overlapped or stops being overlapped.
- src/jquery.gridster.js:1201
+ src/jquery.gridster.js:1226
@@ -6221,7 +6228,7 @@ overlapped or stops being overlapped.
- src/jquery.gridster.js:1219
+ src/jquery.gridster.js:1244
@@ -6315,7 +6322,7 @@ overlapped or stops being overlapped.
- src/jquery.gridster.js:1929
+ src/jquery.gridster.js:1955
@@ -6387,7 +6394,7 @@ the browser is resized.
- src/jquery.gridster.js:272
+ src/jquery.gridster.js:277
@@ -6469,7 +6476,7 @@ mapped array of positions.
- src/jquery.gridster.js:321
+ src/jquery.gridster.js:326
@@ -6574,7 +6581,7 @@ mapped array of positions.
- src/jquery.gridster.js:212
+ src/jquery.gridster.js:217
@@ -6678,7 +6685,7 @@ mapped array of positions.
- src/jquery.gridster.js:238
+ src/jquery.gridster.js:243
@@ -6776,7 +6783,7 @@ mapped array of positions.
- src/jquery.gridster.js:260
+ src/jquery.gridster.js:265
@@ -6864,7 +6871,7 @@ mapped array of positions.
- src/jquery.gridster.js:1491
+ src/jquery.gridster.js:1516
@@ -6973,7 +6980,7 @@ mapped array of positions.
- src/jquery.gridster.js:1813
+ src/jquery.gridster.js:1838
@@ -7060,7 +7067,7 @@ mapped array of positions.
- src/jquery.gridster.js:924
+ src/jquery.gridster.js:949
@@ -7187,7 +7194,7 @@ mapped array of positions.
- src/jquery.gridster.js:589
+ src/jquery.gridster.js:594
@@ -7308,7 +7315,7 @@ mapped array of positions.
- src/jquery.gridster.js:678
+ src/jquery.gridster.js:683
@@ -7364,6 +7371,111 @@ each widget) in ascending way.
+
+
+
+ sort_by_row_asc
widgets
+
+ Sorts an Array of grid coords objects by column (representing the grid +coords of each widget) in ascending way.
+widgets
+ Array
+
+
+
+
+ Array of grid coords objects
+src/jquery.gridster.js:698
+ src/jquery.gridster.js:723
@@ -7524,7 +7636,7 @@ each widget) in descending way.
- src/jquery.gridster.js:300
+ src/jquery.gridster.js:305
@@ -7647,7 +7759,7 @@ the grid coords object passed in the grid_data
param.
- src/jquery.gridster.js:1462
+ src/jquery.gridster.js:1487
@@ -7751,7 +7863,7 @@ the grid coords object passed in the grid_data
param.
- src/jquery.gridster.js:642
+ src/jquery.gridster.js:647
diff --git a/docs/data.json b/docs/data.json
index 195c57a47a..bbf6b37202 100644
--- a/docs/data.json
+++ b/docs/data.json
@@ -244,7 +244,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 171,
+ "line": 173,
"description": "Get the most left column below to add a new widget.",
"itemtype": "method",
"name": "next_position",
@@ -268,7 +268,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 212,
+ "line": 217,
"description": "Remove a widget from the grid.",
"itemtype": "method",
"name": "remove_widget",
@@ -287,7 +287,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 238,
+ "line": 243,
"description": "Returns a serialized array of the widgets in the grid.",
"itemtype": "method",
"name": "serialize",
@@ -307,7 +307,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 260,
+ "line": 265,
"description": "Returns a serialized array of the widgets that have changed their position.",
"itemtype": "method",
"name": "serialize_changed",
@@ -319,7 +319,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 272,
+ "line": 277,
"description": "Creates the grid coords object representing the widget a add it to the\nmapped array of positions.",
"itemtype": "method",
"name": "register_widget",
@@ -331,7 +331,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 300,
+ "line": 305,
"description": "Update in the mapped array of positions the value of cells represented by\nthe grid coords object passed in the `grid_data` param.",
"params": [
{
@@ -355,7 +355,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 321,
+ "line": 326,
"description": "Remove a widget from the mapped array of positions.",
"itemtype": "method",
"name": "remove_from_gridmap",
@@ -374,7 +374,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 334,
+ "line": 339,
"description": "Add a widget to the mapped array of positions.",
"itemtype": "method",
"name": "add_to_gridmap",
@@ -398,7 +398,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 356,
+ "line": 361,
"description": "Make widgets draggable. It Wraps the jQuery UI Draggable Plugin.",
"itemtype": "method",
"name": "draggable",
@@ -410,7 +410,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 387,
+ "line": 392,
"description": "This function is executed when the player begins to be dragged.",
"itemtype": "method",
"name": "on_start_drag",
@@ -430,7 +430,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 436,
+ "line": 441,
"description": "This function is executed when the player is being dragged.",
"itemtype": "method",
"name": "on_drag",
@@ -450,7 +450,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 462,
+ "line": 467,
"description": "This function is executed when the player stops being dragged.",
"itemtype": "method",
"name": "on_stop_drag",
@@ -470,7 +470,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 513,
+ "line": 518,
"description": "Executes the callbacks passed as arguments when a column begins to be\noverlapped or stops being overlapped.",
"params": [
{
@@ -494,7 +494,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 553,
+ "line": 558,
"description": "Executes the callbacks passed as arguments when a row starts to be\noverlapped or stops being overlapped.",
"params": [
{
@@ -518,7 +518,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 589,
+ "line": 594,
"description": "Sets the current position of the player",
"params": [
{
@@ -542,7 +542,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 642,
+ "line": 647,
"description": "See which of the widgets in the $widgets param collection can go to\na upper row and which not.",
"itemtype": "method",
"name": "widgets_contraints",
@@ -561,7 +561,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 678,
+ "line": 683,
"description": "Sorts an Array of grid coords objects (representing the grid coords of\neach widget) in ascending way.",
"itemtype": "method",
"name": "sort_by_row_asc",
@@ -580,7 +580,26 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 698,
+ "line": 703,
+ "description": "Sorts an Array of grid coords objects by column (representing the grid\ncoords of each widget) in ascending way.",
+ "itemtype": "method",
+ "name": "sort_by_row_asc",
+ "params": [
+ {
+ "name": "widgets",
+ "description": "Array of grid coords objects",
+ "type": "Array"
+ }
+ ],
+ "return": {
+ "description": "Returns the array sorted.",
+ "type": "Array"
+ },
+ "class": "Gridster"
+ },
+ {
+ "file": "src/jquery.gridster.js",
+ "line": 723,
"description": "Sorts an Array of grid coords objects (representing the grid coords of\neach widget) in descending way.",
"itemtype": "method",
"name": "sort_by_row_desc",
@@ -599,7 +618,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 717,
+ "line": 742,
"description": "Sorts an Array of grid coords objects (representing the grid coords of\neach widget) in descending way.",
"itemtype": "method",
"name": "manage_movements",
@@ -628,7 +647,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 763,
+ "line": 788,
"description": "Determines if there is a widget in the row and col given. Or if the\nHTMLElement passed as first argument is the player.",
"itemtype": "method",
"name": "is_player",
@@ -653,7 +672,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 780,
+ "line": 805,
"description": "Determines if the widget that is being dragged is currently over the row\nand col given.",
"itemtype": "method",
"name": "is_player_in",
@@ -677,7 +696,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 795,
+ "line": 820,
"description": "Determines if the placeholder is currently over the row and col given.",
"itemtype": "method",
"name": "is_placeholder_in",
@@ -701,7 +720,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 809,
+ "line": 834,
"description": "Determines if the placeholder is currently over the column given.",
"itemtype": "method",
"name": "is_placeholder_in_col",
@@ -720,7 +739,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 821,
+ "line": 846,
"description": "Determines if the cell represented by col and row params is empty.",
"itemtype": "method",
"name": "is_empty",
@@ -744,7 +763,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 840,
+ "line": 865,
"description": "Determines if the cell represented by col and row params is occupied.",
"itemtype": "method",
"name": "is_occupied",
@@ -768,7 +787,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 860,
+ "line": 885,
"description": "Determines if there is a widget in the cell represented by col/row params.",
"itemtype": "method",
"name": "is_widget",
@@ -792,7 +811,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 885,
+ "line": 910,
"description": "Determines if there is a widget in the cell represented by col/row\nparams and if this is under the widget that is being dragged.",
"itemtype": "method",
"name": "is_widget_under_player",
@@ -816,7 +835,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 902,
+ "line": 927,
"description": "Get widgets overlapping with the player.",
"itemtype": "method",
"name": "get_widgets_under_player",
@@ -828,7 +847,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 924,
+ "line": 949,
"description": "Put placeholder at the row and column specified.",
"itemtype": "method",
"name": "set_placeholder",
@@ -852,7 +871,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 966,
+ "line": 991,
"description": "Determines whether the player can move to a position above.",
"itemtype": "method",
"name": "can_go_player_up",
@@ -871,7 +890,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 1015,
+ "line": 1040,
"description": "Determines whether a widget can move to a position above.",
"itemtype": "method",
"name": "can_go_widget_up",
@@ -890,7 +909,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 1066,
+ "line": 1091,
"description": "Search a valid row for the widget represented by `widget_grid_data' in\nthe `upper_rows` array. Iteration starts from row specified in `min_row`.",
"itemtype": "method",
"name": "get_valid_rows",
@@ -919,7 +938,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 1144,
+ "line": 1169,
"description": "Get widgets overlapping with the player.",
"itemtype": "method",
"name": "get_widgets_overlapped",
@@ -931,7 +950,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 1177,
+ "line": 1202,
"description": "This callback is executed when the player begins to collide with a column.",
"itemtype": "method",
"name": "on_start_overlapping_column",
@@ -950,7 +969,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 1189,
+ "line": 1214,
"description": "A callback executed when the player begins to collide with a row.",
"itemtype": "method",
"name": "on_start_overlapping_row",
@@ -969,7 +988,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 1201,
+ "line": 1226,
"description": "A callback executed when the the player ends to collide with a column.",
"itemtype": "method",
"name": "on_stop_overlapping_column",
@@ -988,7 +1007,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 1219,
+ "line": 1244,
"description": "This callback is executed when the player ends to collide with a row.",
"itemtype": "method",
"name": "on_stop_overlapping_row",
@@ -1007,7 +1026,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 1239,
+ "line": 1264,
"description": "Move a widget to a specific row. The cell or cells must be empty.\nIf the widget has widgets below, all of these widgets will be moved also\nif they can.",
"itemtype": "method",
"name": "move_widget_to",
@@ -1026,7 +1045,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 1282,
+ "line": 1307,
"description": "Move up the specified widget and all below it.",
"itemtype": "method",
"name": "move_widget_up",
@@ -1051,7 +1070,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 1328,
+ "line": 1353,
"description": "Move down the specified widget and all below it.",
"itemtype": "method",
"name": "move_widget_down",
@@ -1075,7 +1094,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 1373,
+ "line": 1398,
"description": "Check if the widget can move to the specified row, else returns the\nupper row possible.",
"itemtype": "method",
"name": "can_go_up_to_row",
@@ -1104,7 +1123,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 1462,
+ "line": 1487,
"description": "Get widgets below a widget.",
"itemtype": "method",
"name": "widgets_below",
@@ -1123,7 +1142,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 1491,
+ "line": 1516,
"description": "Update the array of mapped positions with the new player position.",
"itemtype": "method",
"name": "set_cells_player_occupies",
@@ -1147,7 +1166,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 1508,
+ "line": 1533,
"description": "Remove from the array of mapped positions the reference to the player.",
"itemtype": "method",
"name": "empty_cells_player_occupies",
@@ -1159,7 +1178,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 1545,
+ "line": 1570,
"description": "Check if it's possible to move a widget to a specific col/row. It takes\ninto account the dimensions (`size_y` and `size_x` attrs. of the grid coords\n object) the widget occupies.",
"itemtype": "method",
"name": "can_move_to",
@@ -1188,7 +1207,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 1580,
+ "line": 1605,
"description": "Given the leftmost column returns all columns that are overlapping with the player.",
"itemtype": "method",
"name": "get_targeted_columns",
@@ -1208,7 +1227,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 1598,
+ "line": 1623,
"description": "Given the upper row returns all rows that are overlapping with the player.",
"itemtype": "method",
"name": "get_targeted_rows",
@@ -1228,7 +1247,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 1615,
+ "line": 1640,
"description": "Get all columns and rows that a widget occupies.",
"itemtype": "method",
"name": "get_cells_occupied",
@@ -1247,7 +1266,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 1643,
+ "line": 1668,
"description": "Iterate over the cells occupied by a widget executing a function for\neach one.",
"itemtype": "method",
"name": "for_each_cell_occupied",
@@ -1271,7 +1290,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 1664,
+ "line": 1689,
"description": "Iterate over the columns occupied by a widget executing a function for\neach one.",
"itemtype": "method",
"name": "for_each_column_occupied",
@@ -1295,7 +1314,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 1683,
+ "line": 1708,
"description": "Iterate over the rows occupied by a widget executing a function for\neach one.",
"itemtype": "method",
"name": "for_each_row_occupied",
@@ -1319,7 +1338,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 1749,
+ "line": 1774,
"description": "Iterate over each widget above the column and row specified.",
"itemtype": "method",
"name": "for_each_widget_above",
@@ -1348,7 +1367,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 1765,
+ "line": 1790,
"description": "Iterate over each widget below the column and row specified.",
"itemtype": "method",
"name": "for_each_widget_below",
@@ -1377,7 +1396,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 1781,
+ "line": 1806,
"description": "Returns the highest occupied cell in the grid.",
"itemtype": "method",
"name": "get_highest_occupied_cell",
@@ -1389,7 +1408,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 1813,
+ "line": 1838,
"description": "Set the current height of the parent grid.",
"itemtype": "method",
"name": "set_dom_grid_height",
@@ -1401,7 +1420,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 1826,
+ "line": 1852,
"description": "It generates the neccessary styles to position the widgets.",
"itemtype": "method",
"name": "generate_stylesheet",
@@ -1425,7 +1444,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 1870,
+ "line": 1896,
"description": "Injects the given CSS as string to the head of the document.",
"itemtype": "method",
"name": "add_style_tag",
@@ -1444,7 +1463,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 1893,
+ "line": 1919,
"description": "Generates a faux grid to collide with it when a widget is dragged and\ndetect row or column that we want to go.",
"itemtype": "method",
"name": "generate_faux_grid",
@@ -1468,7 +1487,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 1929,
+ "line": 1955,
"description": "Recalculates the offsets for the faux grid. You need to use it when\nthe browser is resized.",
"itemtype": "method",
"name": "recalculate_faux_grid",
@@ -1480,7 +1499,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 1953,
+ "line": 1979,
"description": "Get all widgets in the DOM and register them.",
"itemtype": "method",
"name": "get_widgets_from_DOM",
@@ -1492,7 +1511,7 @@
},
{
"file": "src/jquery.gridster.js",
- "line": 1967,
+ "line": 1993,
"description": "Calculate columns and rows to be set based on the configuration\n parameters, grid dimensions, etc ...",
"itemtype": "method",
"name": "generate_grid_and_stylesheet",
diff --git a/docs/files/src_jquery.gridster.js.html b/docs/files/src_jquery.gridster.js.html
index 0bad5b08f6..a3e37323eb 100644
--- a/docs/files/src_jquery.gridster.js.html
+++ b/docs/files/src_jquery.gridster.js.html
@@ -241,11 +241,13 @@
* the widget that was just created.
*/
fn.add_widget = function(html, size_x, size_y) {
+ var next_pos = this.next_position(size_x, size_y);
+
var $w = $(html).attr({
- 'data-col': this.highest_occupied_cell.col,
- 'data-row': this.highest_occupied_cell.row + 1,
- 'data-sizex' : size_x || 1,
- 'data-sizey' : size_y || 1
+ 'data-col': next_pos.col,
+ 'data-row': next_pos.row,
+ 'data-sizex' : next_pos.size_x,
+ 'data-sizey' : next_pos.size_y
}).addClass('gs_w').appendTo(this.$el).hide();
this.$widgets = this.$widgets.add($w);
@@ -271,6 +273,8 @@
* widget coords.
*/
fn.next_position = function(size_x, size_y) {
+ size_x || (size_x = 1);
+ size_y || (size_y = 1);
var ga = this.gridmap;
var cols_l = ga.length;
var valid_pos = [];
@@ -295,7 +299,8 @@
}
if (valid_pos.length) {
- var next_position = this.sort_by_row_asc(valid_pos)[0];
+ var next_position = this.sort_by_row_asc(valid_pos);
+ next_position = this.sort_by_row_asc(next_position)[0];
return next_position;
}
return false;
@@ -788,6 +793,26 @@
};
+ /**
+ * Sorts an Array of grid coords objects by column (representing the grid
+ * coords of each widget) in ascending way.
+ *
+ * @method sort_by_row_asc
+ * @param {Array} widgets Array of grid coords objects
+ * @return {Array} Returns the array sorted.
+ */
+ fn.sort_by_col_asc = function(widgets) {
+ widgets = widgets.sort(function(a, b){
+ if (a.col > b.col) {
+ return 1;
+ }
+ return -1;
+ });
+
+ return widgets;
+ };
+
+
/**
* Sorts an Array of grid coords objects (representing the grid coords of
* each widget) in descending way.
@@ -1912,6 +1937,7 @@
fn.set_dom_grid_height = function() {
var r = this.get_highest_occupied_cell().row;
this.$el.css('height', r * this.min_widget_height);
+ // this.$widgets.draggable("option", "containment", this.$el);
return this;
};