diff --git a/dist/jquery.gridster.css b/dist/jquery.gridster.css index 82117d0a8b..36923624c3 100644 --- a/dist/jquery.gridster.css +++ b/dist/jquery.gridster.css @@ -1,4 +1,4 @@ -/*! gridster.js - v0.1.0 - 2012-07-19 +/*! gridster.js - v0.1.0 - 2012-07-20 * https://github.com/ducksboard/gridster.js * Copyright (c) 2012 ducksboard; Licensed MIT, GPL */ diff --git a/dist/jquery.gridster.js b/dist/jquery.gridster.js index af3c2174ce..a1cab8a170 100644 --- a/dist/jquery.gridster.js +++ b/dist/jquery.gridster.js @@ -1,4 +1,4 @@ -/*! gridster.js - v0.1.0 - 2012-07-19 +/*! gridster.js - v0.1.0 - 2012-07-20 * https://github.com/ducksboard/gridster.js * Copyright (c) 2012 ducksboard; Licensed MIT, GPL */ @@ -484,8 +484,8 @@ } if (valid_pos.length) { - var next_position = this.sort_by_row_asc(valid_pos); - next_position = this.sort_by_row_asc(next_position)[0]; + var next_position = this.sort_by_row_desc(valid_pos); + next_position = this.sort_by_col_asc(next_position)[0]; return next_position; } return false; @@ -652,16 +652,19 @@ $(ui.helper) : self.$player; self.on_start_drag.call(self, event, ui); + self.$el.trigger('gridster:dragstart'); }, stop: function(event, ui) { self.on_stop_drag.call(self, ui); + self.$el.trigger('gridster:dragstop'); }, drag: throttle(function(event, ui) { self.on_drag.call(self, event, ui); + self.$el.trigger('gridster:drag'); }, 100, true) }); - this.$widgets.draggable(draggable_options); + this.$widgets.draggable(draggable_options); return this; }; @@ -1117,7 +1120,8 @@ * @return {Boolean} Returns true or false. */ fn.is_placeholder_in_col = function(col) { - return $.inArray(col, this.cells_occupied_by_placeholder.cols) >= 0; + var c = this.cells_occupied_by_placeholder || []; + return $.inArray(col, c.cols) >= 0; }; @@ -1866,12 +1870,11 @@ col: col, row: row }; - var cells_occupied_by_w = this.get_cells_occupied(widget_grid_data); var result = true; this.for_each_cell_occupied(future_wd, function(tcol, trow){ var $tw = this.is_widget(tcol, trow); - if ($tw && !$tw.is($w)) { + if ($tw && (!widget_grid_data.el || $tw.is($w))) { result = false; } }); diff --git a/dist/jquery.gridster.min.css b/dist/jquery.gridster.min.css index 40ffed021c..332f0cacd5 100644 --- a/dist/jquery.gridster.min.css +++ b/dist/jquery.gridster.min.css @@ -1,3 +1,3 @@ -/*! gridster.js - v0.1.0 - 2012-07-19 +/*! gridster.js - v0.1.0 - 2012-07-20 * https://github.com/ducksboard/gridster.js * Copyright (c) 2012 ducksboard; Licensed MIT, GPL */.gridster{position:relative}.gridster>*{margin:0 auto;-webkit-transition:height .4s;-moz-transition:height .4s;-o-transition:height .4s;-ms-transition:height .4s;transition:height .4s}.gridster .gs_w{z-index:2;position:absolute;background:rgba(0,0,0,.23)}.ready .gs_w:not(.player):not(.preview-holder):not(.ui-draggable-dragging){-webkit-transition:left .3s,top .3s;-moz-transition:left .3s,top .3s;-o-transition:left .3s,top .3s}.gridster.dragging .ui-sortable-helper{z-index:9}.gridster .preview-holder{border:2px dashed #333;border-radius:5px;z-index:1;background:#FFF;position:absolute}.gridster .ui-draggable-dragging{z-index:10!important} \ No newline at end of file diff --git a/dist/jquery.gridster.min.js b/dist/jquery.gridster.min.js index 8c7f7a7e68..a7b2fa3ba7 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 +/*! gridster.js - v0.1.0 - 2012-07-20 * 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.y1b.y1&&a.y2b.cx&&a.x1b.x1&&a.x2 li",widget_margins:[10,10],widget_base_dimensions:[400,225],extra_rows:0,extra_cols:0,min_cols:1,min_rows:10,autogenerate_stylesheet:!0,serialize_params:function(a,b){return{col:b.col,row:b.row}},collision:{},draggable:{}},f=function(a,b,c){var d;return function(){var e=this,f=arguments,g=function(){d=null,c||a.apply(e,f)};c&&!d&&a.apply(e,f),clearTimeout(d),d=setTimeout(g,b)}},g=function(a,b){var c,d,e,g,h,i,j=f(function(){h=g=!1},b,!0);return function(){c=this,d=arguments;var f=function(){e=null,h&&a.apply(c,d),j()};return e||(e=setTimeout(f,b)),g?h=!0:i=a.apply(c,d),j(),g=!0,i}},i=h.prototype;i.init=function(){this.generate_grid_and_stylesheet(),this.get_widgets_from_DOM(),this.set_dom_grid_height(),this.$wrapper.addClass("ready"),this.draggable(),a(b).bind("resize",g(a.proxy(this.recalculate_faux_grid,this),200))},i.add_widget=function(b,c,d){var e=this.next_position(c,d),f=a(b).attr({"data-col":e.col,"data-row":e.row,"data-sizex":e.size_x,"data-sizey":e.size_y}).addClass("gs_w").appendTo(this.$el).hide();this.$widgets=this.$widgets.add(f),this.register_widget(f),this.$widgets.draggable("destroy"),this.draggable(),this.set_dom_grid_height(),f.fadeIn()},i.next_position=function(a,b){a||(a=1),b||(b=1);var c=this.gridmap,d=c.length,e=[];for(var f=1;f",{"class":"preview-holder","data-row":this.$player.attr("data-row"),"data-col":this.$player.attr("data-col"),css:{width:e.width,height:e.height}}).appendTo(this.$el),this.options.draggable.start&&this.options.draggable.start.call(this,b,c)},i.on_drag=function(a,b){this.colliders_data=this.drag_api.get_closest_colliders(),this.on_overlapped_column_change(this.on_start_overlapping_column,this.on_stop_overlapping_column),this.on_overlapped_row_change(this.on_start_overlapping_row,this.on_stop_overlapping_row),this.options.draggable.drag&&this.options.draggable.drag.call(this,a,b)},i.on_stop_drag=function(a,b){this.colliders_data=this.drag_api.get_closest_colliders(),this.on_overlapped_column_change(this.on_start_overlapping_column,this.on_stop_overlapping_column),this.on_overlapped_row_change(this.on_start_overlapping_row,this.on_stop_overlapping_row),this.$player.add(this.$helper).attr({"data-col":this.placeholder_grid_data.col,"data-row":this.placeholder_grid_data.row}).css({left:"",top:""}).removeClass("player"),this.$changed=this.$changed.add(this.$player),this.cells_occupied_by_player=this.get_cells_occupied(this.placeholder_grid_data),this.set_cells_player_occupies(this.placeholder_grid_data.col,this.placeholder_grid_data.row),this.$player.coords().grid.row=this.placeholder_grid_data.row,this.$player.coords().grid.col=this.placeholder_grid_data.col,this.$player=null,this.$preview_holder.remove(),this.set_dom_grid_height(),this.options.draggable.stop&&this.options.draggable.stop.call(this,a,b)},i.on_overlapped_column_change=function(b,c){if(!this.colliders_data.length)return;var d=this.get_targeted_columns(this.colliders_data[0].el.data.col),e=this.last_cols.length,f=d.length,g;for(g=0;gb.row?1:-1}),a},i.sort_by_col_asc=function(a){return a=a.sort(function(a,b){return a.col>b.col?1:-1}),a},i.sort_by_row_desc=function(a){return a=a.sort(function(a,b){return a.row+a.size_y=0&&a.inArray(c,d.rows)>=0},i.is_placeholder_in=function(b,c){var d=this.cells_occupied_by_placeholder||[];return this.is_placeholder_in_col(b)&&a.inArray(c,d.rows)>=0},i.is_placeholder_in_col=function(b){return a.inArray(b,this.cells_occupied_by_placeholder.cols)>=0},i.is_empty=function(a,b){return typeof this.gridmap[a]!="undefined"&&typeof this.gridmap[a][b]!="undefined"&&this.gridmap[a][b]===!1?!0:!1},i.is_occupied=function(a,b){return this.gridmap[a]?this.gridmap[a][b]?!0:!1:!1},i.is_widget=function(a,b){var c=this.gridmap[a];return c?(c=c[b],c?c:!1):!1},i.is_widget_under_player=function(a,b){return this.is_widget(a,b)?this.is_player_in(a,b):!1},i.get_widgets_under_player=function(){var b=this.cells_occupied_by_player,c=a([]);return a.each(b.cols,a.proxy(function(d,e){a.each(b.rows,a.proxy(function(a,b){this.is_widget(e,b)&&(c=c.add(this.gridmap[e][b]))},this))},this)),c},i.set_placeholder=function(b,c){var d=a.extend({},this.placeholder_grid_data),e=this.widgets_below({col:d.col,row:d.row,size_y:d.size_y,size_x:d.size_x}),f=this.placeholder_grid_data.row0)if(this.is_empty(a,h)||this.is_player(a,h)||this.is_widget(a,h)&&g[h].is(f))d[a].push(h),e=h0){if(this.is_occupied(a,g)&&!this.is_player(a,g))break;!this.is_player(a,g)&&!this.is_placeholder_in(a,g)&&d[a].push(g),g=b?a[d[0]]:!1},i.get_widgets_overlapped=function(){var b,c=a([]),d=[],e=this.cells_occupied_by_player.rows.slice(0);return e.reverse(),a.each(this.cells_occupied_by_player.cols,a.proxy(function(b,f){a.each(e,a.proxy(function(b,e){if(!this.gridmap[f])return!0;var g=this.gridmap[f][e];this.is_occupied(f,e)&&!this.is_player(g)&&a.inArray(g,d)===-1&&(c=c.add(g),d.push(g))},this))},this)),c},i.on_start_overlapping_column=function(a){this.set_player(a,!1)},i.on_start_overlapping_row=function(a){this.set_player(!1,a)},i.on_stop_overlapping_column=function(a){this.set_player();var b=this;this.for_each_widget_below(a,this.cells_occupied_by_player.rows[0],function(a,c){b.move_widget_up(this,b.player_grid_data.size_y)})},i.on_stop_overlapping_row=function(a){this.set_player();var b=this,c=this.cells_occupied_by_player.cols;for(var d=0,e=c.length;d0&&this.move_widget_down(d,f)},this)),h.row=i,this.update_widget_position(h,b),b.attr("data-row",h.row),this.$changed=this.$changed.add(b),f.push(b)}},i.can_go_up_to_row=function(b,c,d){var e=this.gridmap,f=!0,g=[],h=b.row,i;this.for_each_column_occupied(b,function(a){var b=e[a];g[a]=[],i=h;while(i--)if(this.is_empty(a,i)&&!this.is_placeholder_in(a,i))g[a].push(i);else break;if(!g[a].length)return f=!1,!0});if(!f)return!1;i=d;for(i=1;i0?c:0},i.widgets_below=function(b){var c=a.isPlainObject(b)?b:b.coords().grid,d=this,e=this.gridmap,f=c.row+c.size_y-1,g=a([]);return this.for_each_column_occupied(c,function(b){d.for_each_widget_below(b,f,function(b,c){if(!d.is_player(this)&&a.inArray(this,g)===-1)return g=g.add(this),!0})}),this.sort_by_row_asc(g)},i.set_cells_player_occupies=function(a,b){return this.remove_from_gridmap(this.placeholder_grid_data),this.placeholder_grid_data.col=a,this.placeholder_grid_data.row=b,this.add_to_gridmap(this.placeholder_grid_data,this.$player),this},i.empty_cells_player_occupies=function(){return this.remove_from_gridmap(this.placeholder_grid_data),this},i.can_go_up=function(a){var b=a.coords().grid,c=b.row,d=c-1,e=this.gridmap,f=[],g=!0;return c===1?!1:(this.for_each_column_occupied(b,function(a){if(this.is_occupied(a,d)||this.is_player(a,d)||this.is_placeholder_in(a,d))return g=!1,!0}),g)},i.can_move_to=function(a,b,c){var d=this.gridmap,e=a.el,f={size_y:a.size_y,size_x:a.size_x,col:b,row:c},g=this.get_cells_occupied(a),h=!0;return this.for_each_cell_occupied(f,function(a,b){var c=this.is_widget(a,b);c&&!c.is(e)&&(h=!1)}),h},i.get_targeted_columns=function(a){var b=(a||this.player_grid_data.col)+(this.player_grid_data.size_x-1),c=[];for(var d=a;d<=b;d++)c.push(d);return c},i.get_targeted_rows=function(a){var b=(a||this.player_grid_data.row)+(this.player_grid_data.size_y-1),c=[];for(var d=a;d<=b;d++)c.push(d);return c},i.get_cells_occupied=function(a){var b={cols:[],rows:[]},c;arguments[1]instanceof jQuery&&(a=arguments[1].coords().grid);for(c=0;c0&&this.is_widget(d,m)&&a.inArray(g[d][m],l)===-1){h=f.call(g[d][m],d,m),l.push(g[d][m]);if(h)break}},"for_each/below":function(){for(m=e+1,i=g[d].length;m=1;e--)for(a=b[e].length-1;a>=1;a--)if(this.is_widget(e,a)){c.push(a),d[a]=e;break}var f=Math.max.apply(null,c);return this.highest_occupied_cell={col:d[f],row:f},this.highest_occupied_cell},i.set_dom_grid_height=function(){var a=this.get_highest_occupied_cell().row;return this.$el.css("height",a*this.min_widget_height),this},i.generate_stylesheet=function(a,b){var c="",d=10,e=6,f=6,g,h;for(g=b+d;g>=0;g--)c+='[data-col="'+(g+1)+'"] { left: '+g*this.min_widget_width+"px;} ";for(g=a+d;g>=0;g--)c+='[data-row="'+(g+1)+'"] { top: '+g*this.min_widget_height+"px;} ";for(var i=1;i0;d--){this.gridmap[d]=[];for(e=b;e>0;e--){var f=a({left:this.baseX+(d-1)*this.min_widget_width,top:this.baseY+(e-1)*this.min_widget_height,width:this.min_widget_width,height:this.min_widget_height,col:d,row:e,original_col:d,original_row:e}).coords();this.gridmap[d][e]=!1,this.faux_grid.push(f)}}return this},i.recalculate_faux_grid=function(){var c=this.$wrapper.width();return this.baseX=(a(b).width()-c)/2,this.baseY=this.$wrapper.offset().top,a.each(this.faux_grid,a.proxy(function(a,b){this.faux_grid[a]=b.update({left:this.baseX+(b.data.col-1)*this.min_widget_width,top:this.baseY+(b.data.row-1)*this.min_widget_height})},this)),this},i.get_widgets_from_DOM=function(){return this.$widgets.each(a.proxy(function(b,c){this.register_widget(a(c))},this)),this},i.generate_grid_and_stylesheet=function(){var c=this.$wrapper.width(),d=this.$wrapper.height(),e=Math.floor(c/this.min_widget_width)+this.options.extra_cols,f=Math.floor(d/this.min_widget_height)+this.options.extra_rows,g=this.$widgets.map(function(){return a(this).attr("data-col")}),h=this.$widgets.map(function(){return a(this).attr("data-row")}),i=Math.max.apply(null,g),j=Math.max.apply(null,h);return e=Math.max(i,e,this.options.min_cols),f=Math.max(j,f,this.options.min_rows),this.baseX=(a(b).width()-c)/2,this.baseY=this.$wrapper.offset().top,this.options.autogenerate_stylesheet&&this.generate_stylesheet(f,e),this.generate_faux_grid(f,e)},a.fn.gridster=function(b){return this.each(function(){a(this).data("gridster")||a(this).data("gridster",new h(this,b))})}}(jQuery,window,document); \ No newline at end of file +(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.y1b.y1&&a.y2b.cx&&a.x1b.x1&&a.x2 li",widget_margins:[10,10],widget_base_dimensions:[400,225],extra_rows:0,extra_cols:0,min_cols:1,min_rows:10,autogenerate_stylesheet:!0,serialize_params:function(a,b){return{col:b.col,row:b.row}},collision:{},draggable:{}},f=function(a,b,c){var d;return function(){var e=this,f=arguments,g=function(){d=null,c||a.apply(e,f)};c&&!d&&a.apply(e,f),clearTimeout(d),d=setTimeout(g,b)}},g=function(a,b){var c,d,e,g,h,i,j=f(function(){h=g=!1},b,!0);return function(){c=this,d=arguments;var f=function(){e=null,h&&a.apply(c,d),j()};return e||(e=setTimeout(f,b)),g?h=!0:i=a.apply(c,d),j(),g=!0,i}},i=h.prototype;i.init=function(){this.generate_grid_and_stylesheet(),this.get_widgets_from_DOM(),this.set_dom_grid_height(),this.$wrapper.addClass("ready"),this.draggable(),a(b).bind("resize",g(a.proxy(this.recalculate_faux_grid,this),200))},i.add_widget=function(b,c,d){var e=this.next_position(c,d),f=a(b).attr({"data-col":e.col,"data-row":e.row,"data-sizex":e.size_x,"data-sizey":e.size_y}).addClass("gs_w").appendTo(this.$el).hide();this.$widgets=this.$widgets.add(f),this.register_widget(f),this.$widgets.draggable("destroy"),this.draggable(),this.set_dom_grid_height(),f.fadeIn()},i.next_position=function(a,b){a||(a=1),b||(b=1);var c=this.gridmap,d=c.length,e=[];for(var f=1;f",{"class":"preview-holder","data-row":this.$player.attr("data-row"),"data-col":this.$player.attr("data-col"),css:{width:e.width,height:e.height}}).appendTo(this.$el),this.options.draggable.start&&this.options.draggable.start.call(this,b,c)},i.on_drag=function(a,b){this.colliders_data=this.drag_api.get_closest_colliders(),this.on_overlapped_column_change(this.on_start_overlapping_column,this.on_stop_overlapping_column),this.on_overlapped_row_change(this.on_start_overlapping_row,this.on_stop_overlapping_row),this.options.draggable.drag&&this.options.draggable.drag.call(this,a,b)},i.on_stop_drag=function(a,b){this.colliders_data=this.drag_api.get_closest_colliders(),this.on_overlapped_column_change(this.on_start_overlapping_column,this.on_stop_overlapping_column),this.on_overlapped_row_change(this.on_start_overlapping_row,this.on_stop_overlapping_row),this.$player.add(this.$helper).attr({"data-col":this.placeholder_grid_data.col,"data-row":this.placeholder_grid_data.row}).css({left:"",top:""}).removeClass("player"),this.$changed=this.$changed.add(this.$player),this.cells_occupied_by_player=this.get_cells_occupied(this.placeholder_grid_data),this.set_cells_player_occupies(this.placeholder_grid_data.col,this.placeholder_grid_data.row),this.$player.coords().grid.row=this.placeholder_grid_data.row,this.$player.coords().grid.col=this.placeholder_grid_data.col,this.$player=null,this.$preview_holder.remove(),this.set_dom_grid_height(),this.options.draggable.stop&&this.options.draggable.stop.call(this,a,b)},i.on_overlapped_column_change=function(b,c){if(!this.colliders_data.length)return;var d=this.get_targeted_columns(this.colliders_data[0].el.data.col),e=this.last_cols.length,f=d.length,g;for(g=0;gb.row?1:-1}),a},i.sort_by_col_asc=function(a){return a=a.sort(function(a,b){return a.col>b.col?1:-1}),a},i.sort_by_row_desc=function(a){return a=a.sort(function(a,b){return a.row+a.size_y=0&&a.inArray(c,d.rows)>=0},i.is_placeholder_in=function(b,c){var d=this.cells_occupied_by_placeholder||[];return this.is_placeholder_in_col(b)&&a.inArray(c,d.rows)>=0},i.is_placeholder_in_col=function(b){var c=this.cells_occupied_by_placeholder||[];return a.inArray(b,c.cols)>=0},i.is_empty=function(a,b){return typeof this.gridmap[a]!="undefined"&&typeof this.gridmap[a][b]!="undefined"&&this.gridmap[a][b]===!1?!0:!1},i.is_occupied=function(a,b){return this.gridmap[a]?this.gridmap[a][b]?!0:!1:!1},i.is_widget=function(a,b){var c=this.gridmap[a];return c?(c=c[b],c?c:!1):!1},i.is_widget_under_player=function(a,b){return this.is_widget(a,b)?this.is_player_in(a,b):!1},i.get_widgets_under_player=function(){var b=this.cells_occupied_by_player,c=a([]);return a.each(b.cols,a.proxy(function(d,e){a.each(b.rows,a.proxy(function(a,b){this.is_widget(e,b)&&(c=c.add(this.gridmap[e][b]))},this))},this)),c},i.set_placeholder=function(b,c){var d=a.extend({},this.placeholder_grid_data),e=this.widgets_below({col:d.col,row:d.row,size_y:d.size_y,size_x:d.size_x}),f=this.placeholder_grid_data.row0)if(this.is_empty(a,h)||this.is_player(a,h)||this.is_widget(a,h)&&g[h].is(f))d[a].push(h),e=h0){if(this.is_occupied(a,g)&&!this.is_player(a,g))break;!this.is_player(a,g)&&!this.is_placeholder_in(a,g)&&d[a].push(g),g=b?a[d[0]]:!1},i.get_widgets_overlapped=function(){var b,c=a([]),d=[],e=this.cells_occupied_by_player.rows.slice(0);return e.reverse(),a.each(this.cells_occupied_by_player.cols,a.proxy(function(b,f){a.each(e,a.proxy(function(b,e){if(!this.gridmap[f])return!0;var g=this.gridmap[f][e];this.is_occupied(f,e)&&!this.is_player(g)&&a.inArray(g,d)===-1&&(c=c.add(g),d.push(g))},this))},this)),c},i.on_start_overlapping_column=function(a){this.set_player(a,!1)},i.on_start_overlapping_row=function(a){this.set_player(!1,a)},i.on_stop_overlapping_column=function(a){this.set_player();var b=this;this.for_each_widget_below(a,this.cells_occupied_by_player.rows[0],function(a,c){b.move_widget_up(this,b.player_grid_data.size_y)})},i.on_stop_overlapping_row=function(a){this.set_player();var b=this,c=this.cells_occupied_by_player.cols;for(var d=0,e=c.length;d0&&this.move_widget_down(d,f)},this)),h.row=i,this.update_widget_position(h,b),b.attr("data-row",h.row),this.$changed=this.$changed.add(b),f.push(b)}},i.can_go_up_to_row=function(b,c,d){var e=this.gridmap,f=!0,g=[],h=b.row,i;this.for_each_column_occupied(b,function(a){var b=e[a];g[a]=[],i=h;while(i--)if(this.is_empty(a,i)&&!this.is_placeholder_in(a,i))g[a].push(i);else break;if(!g[a].length)return f=!1,!0});if(!f)return!1;i=d;for(i=1;i0?c:0},i.widgets_below=function(b){var c=a.isPlainObject(b)?b:b.coords().grid,d=this,e=this.gridmap,f=c.row+c.size_y-1,g=a([]);return this.for_each_column_occupied(c,function(b){d.for_each_widget_below(b,f,function(b,c){if(!d.is_player(this)&&a.inArray(this,g)===-1)return g=g.add(this),!0})}),this.sort_by_row_asc(g)},i.set_cells_player_occupies=function(a,b){return this.remove_from_gridmap(this.placeholder_grid_data),this.placeholder_grid_data.col=a,this.placeholder_grid_data.row=b,this.add_to_gridmap(this.placeholder_grid_data,this.$player),this},i.empty_cells_player_occupies=function(){return this.remove_from_gridmap(this.placeholder_grid_data),this},i.can_go_up=function(a){var b=a.coords().grid,c=b.row,d=c-1,e=this.gridmap,f=[],g=!0;return c===1?!1:(this.for_each_column_occupied(b,function(a){if(this.is_occupied(a,d)||this.is_player(a,d)||this.is_placeholder_in(a,d))return g=!1,!0}),g)},i.can_move_to=function(a,b,c){var d=this.gridmap,e=a.el,f={size_y:a.size_y,size_x:a.size_x,col:b,row:c},g=!0;return this.for_each_cell_occupied(f,function(b,c){var d=this.is_widget(b,c);d&&(!a.el||d.is(e))&&(g=!1)}),g},i.get_targeted_columns=function(a){var b=(a||this.player_grid_data.col)+(this.player_grid_data.size_x-1),c=[];for(var d=a;d<=b;d++)c.push(d);return c},i.get_targeted_rows=function(a){var b=(a||this.player_grid_data.row)+(this.player_grid_data.size_y-1),c=[];for(var d=a;d<=b;d++)c.push(d);return c},i.get_cells_occupied=function(a){var b={cols:[],rows:[]},c;arguments[1]instanceof jQuery&&(a=arguments[1].coords().grid);for(c=0;c0&&this.is_widget(d,m)&&a.inArray(g[d][m],l)===-1){h=f.call(g[d][m],d,m),l.push(g[d][m]);if(h)break}},"for_each/below":function(){for(m=e+1,i=g[d].length;m=1;e--)for(a=b[e].length-1;a>=1;a--)if(this.is_widget(e,a)){c.push(a),d[a]=e;break}var f=Math.max.apply(null,c);return this.highest_occupied_cell={col:d[f],row:f},this.highest_occupied_cell},i.set_dom_grid_height=function(){var a=this.get_highest_occupied_cell().row;return this.$el.css("height",a*this.min_widget_height),this},i.generate_stylesheet=function(a,b){var c="",d=10,e=6,f=6,g,h;for(g=b+d;g>=0;g--)c+='[data-col="'+(g+1)+'"] { left: '+g*this.min_widget_width+"px;} ";for(g=a+d;g>=0;g--)c+='[data-row="'+(g+1)+'"] { top: '+g*this.min_widget_height+"px;} ";for(var i=1;i0;d--){this.gridmap[d]=[];for(e=b;e>0;e--){var f=a({left:this.baseX+(d-1)*this.min_widget_width,top:this.baseY+(e-1)*this.min_widget_height,width:this.min_widget_width,height:this.min_widget_height,col:d,row:e,original_col:d,original_row:e}).coords();this.gridmap[d][e]=!1,this.faux_grid.push(f)}}return this},i.recalculate_faux_grid=function(){var c=this.$wrapper.width();return this.baseX=(a(b).width()-c)/2,this.baseY=this.$wrapper.offset().top,a.each(this.faux_grid,a.proxy(function(a,b){this.faux_grid[a]=b.update({left:this.baseX+(b.data.col-1)*this.min_widget_width,top:this.baseY+(b.data.row-1)*this.min_widget_height})},this)),this},i.get_widgets_from_DOM=function(){return this.$widgets.each(a.proxy(function(b,c){this.register_widget(a(c))},this)),this},i.generate_grid_and_stylesheet=function(){var c=this.$wrapper.width(),d=this.$wrapper.height(),e=Math.floor(c/this.min_widget_width)+this.options.extra_cols,f=Math.floor(d/this.min_widget_height)+this.options.extra_rows,g=this.$widgets.map(function(){return a(this).attr("data-col")}),h=this.$widgets.map(function(){return a(this).attr("data-row")}),i=Math.max.apply(null,g),j=Math.max.apply(null,h);return e=Math.max(i,e,this.options.min_cols),f=Math.max(j,f,this.options.min_rows),this.baseX=(a(b).width()-c)/2,this.baseY=this.$wrapper.offset().top,this.options.autogenerate_stylesheet&&this.generate_stylesheet(f,e),this.generate_faux_grid(f,e)},a.fn.gridster=function(b){return this.each(function(){a(this).data("gridster")||a(this).data("gridster",new h(this,b))})}}(jQuery,window,document); \ No newline at end of file diff --git a/docs/classes/Gridster.html b/docs/classes/Gridster.html index 707386ee79..fe4b5d5983 100644 --- a/docs/classes/Gridster.html +++ b/docs/classes/Gridster.html @@ -939,7 +939,7 @@ - src/jquery.gridster.js:1896 + src/jquery.gridster.js:1899

@@ -1317,7 +1317,7 @@ - src/jquery.gridster.js:991 + src/jquery.gridster.js:995

@@ -1435,7 +1435,7 @@ - src/jquery.gridster.js:1398 + src/jquery.gridster.js:1402

@@ -1572,7 +1572,7 @@ upper row possible.

- src/jquery.gridster.js:1040 + src/jquery.gridster.js:1044

@@ -1690,7 +1690,7 @@ upper row possible.

- src/jquery.gridster.js:1570 + src/jquery.gridster.js:1574

@@ -1888,7 +1888,7 @@ into account the dimensions (size_y and size_x attrs. - src/jquery.gridster.js:1533 + src/jquery.gridster.js:1537

@@ -1975,7 +1975,7 @@ into account the dimensions (size_y and size_x attrs. - src/jquery.gridster.js:1668 + src/jquery.gridster.js:1671

@@ -2103,7 +2103,7 @@ each one.

- src/jquery.gridster.js:1689 + src/jquery.gridster.js:1692

@@ -2231,7 +2231,7 @@ each one.

- src/jquery.gridster.js:1708 + src/jquery.gridster.js:1711

@@ -2364,7 +2364,7 @@ each one.

- src/jquery.gridster.js:1774 + src/jquery.gridster.js:1777

@@ -2511,7 +2511,7 @@ iteration. The value of this inside the function is the jQuery wrap - src/jquery.gridster.js:1790 + src/jquery.gridster.js:1793

@@ -2652,7 +2652,7 @@ iteration. The value of this inside the function is the jQuery wrap - src/jquery.gridster.js:1919 + src/jquery.gridster.js:1922

@@ -2762,7 +2762,7 @@ detect row or column that we want to go.

- src/jquery.gridster.js:1993 + src/jquery.gridster.js:1996

@@ -2850,7 +2850,7 @@ detect row or column that we want to go.

- src/jquery.gridster.js:1852 + src/jquery.gridster.js:1855

@@ -2969,7 +2969,7 @@ detect row or column that we want to go.

- src/jquery.gridster.js:1640 + src/jquery.gridster.js:1643

@@ -3063,7 +3063,7 @@ detect row or column that we want to go.

- src/jquery.gridster.js:1806 + src/jquery.gridster.js:1809

@@ -3144,7 +3144,7 @@ detect row or column that we want to go.

- src/jquery.gridster.js:1605 + src/jquery.gridster.js:1608

@@ -3249,7 +3249,7 @@ detect row or column that we want to go.

- src/jquery.gridster.js:1623 + src/jquery.gridster.js:1626

@@ -3366,7 +3366,7 @@ detect row or column that we want to go.

- src/jquery.gridster.js:1091 + src/jquery.gridster.js:1095

@@ -3494,7 +3494,7 @@ theupperrowsarray. Iteration starts from row specified insrc/jquery.gridster.js:1979 + src/jquery.gridster.js:1982

@@ -3565,7 +3565,7 @@ theupperrowsarray. Iteration starts from row specified insrc/jquery.gridster.js:1169 + src/jquery.gridster.js:1173

@@ -3636,7 +3636,7 @@ theupperrowsarray. Iteration starts from row specified insrc/jquery.gridster.js:927 + src/jquery.gridster.js:931

@@ -3723,7 +3723,7 @@ theupperrowsarray. Iteration starts from row specified insrc/jquery.gridster.js:846 + src/jquery.gridster.js:850

@@ -3848,7 +3848,7 @@ theupperrowsarray. Iteration starts from row specified insrc/jquery.gridster.js:865 + src/jquery.gridster.js:869

@@ -3973,7 +3973,7 @@ theupperrowsarray. Iteration starts from row specified insrc/jquery.gridster.js:820 + src/jquery.gridster.js:823

@@ -4092,7 +4092,7 @@ theupperrowsarray. Iteration starts from row specified insrc/jquery.gridster.js:834 + src/jquery.gridster.js:837

@@ -4202,7 +4202,7 @@ theupperrowsarray. Iteration starts from row specified insrc/jquery.gridster.js:788 + src/jquery.gridster.js:791

@@ -4330,7 +4330,7 @@ HTMLElements.

- src/jquery.gridster.js:805 + src/jquery.gridster.js:808

@@ -4456,7 +4456,7 @@ and col given.

- src/jquery.gridster.js:885 + src/jquery.gridster.js:889

@@ -4582,7 +4582,7 @@ else returns the jQuery HTMLElement - src/jquery.gridster.js:910 + src/jquery.gridster.js:914

@@ -4714,7 +4714,7 @@ params and if this is under the widget that is being dragged.

- src/jquery.gridster.js:742 + src/jquery.gridster.js:745

@@ -4856,7 +4856,7 @@ each widget) in descending way.

- src/jquery.gridster.js:1353 + src/jquery.gridster.js:1357

@@ -4975,7 +4975,7 @@ each widget) in descending way.

- src/jquery.gridster.js:1264 + src/jquery.gridster.js:1268

@@ -5087,7 +5087,7 @@ if they can.

- src/jquery.gridster.js:1307 + src/jquery.gridster.js:1311

@@ -5335,7 +5335,7 @@ if they can.

- src/jquery.gridster.js:441 + src/jquery.gridster.js:444

@@ -5448,7 +5448,7 @@ if they can.

- src/jquery.gridster.js:518 + src/jquery.gridster.js:521

@@ -5576,7 +5576,7 @@ overlapped or stops being overlapped.

- src/jquery.gridster.js:558 + src/jquery.gridster.js:561

@@ -5700,7 +5700,7 @@ overlapped or stops being overlapped.

- src/jquery.gridster.js:392 + src/jquery.gridster.js:395

@@ -5807,7 +5807,7 @@ overlapped or stops being overlapped.

- src/jquery.gridster.js:1202 + src/jquery.gridster.js:1206

@@ -5911,7 +5911,7 @@ overlapped or stops being overlapped.

- src/jquery.gridster.js:1214 + src/jquery.gridster.js:1218

@@ -6017,7 +6017,7 @@ overlapped or stops being overlapped.

- src/jquery.gridster.js:467 + src/jquery.gridster.js:470

@@ -6124,7 +6124,7 @@ overlapped or stops being overlapped.

- src/jquery.gridster.js:1226 + src/jquery.gridster.js:1230

@@ -6228,7 +6228,7 @@ overlapped or stops being overlapped.

- src/jquery.gridster.js:1244 + src/jquery.gridster.js:1248

@@ -6322,7 +6322,7 @@ overlapped or stops being overlapped.

- src/jquery.gridster.js:1955 + src/jquery.gridster.js:1958

@@ -6871,7 +6871,7 @@ mapped array of positions.

- src/jquery.gridster.js:1516 + src/jquery.gridster.js:1520

@@ -6980,7 +6980,7 @@ mapped array of positions.

- src/jquery.gridster.js:1838 + src/jquery.gridster.js:1841

@@ -7067,7 +7067,7 @@ mapped array of positions.

- src/jquery.gridster.js:949 + src/jquery.gridster.js:953

@@ -7194,7 +7194,7 @@ mapped array of positions.

- src/jquery.gridster.js:594 + src/jquery.gridster.js:597

@@ -7315,7 +7315,7 @@ mapped array of positions.

- src/jquery.gridster.js:683 + src/jquery.gridster.js:686

@@ -7420,7 +7420,7 @@ each widget) in ascending way.

- src/jquery.gridster.js:703 + src/jquery.gridster.js:706

@@ -7525,7 +7525,7 @@ coords of each widget) in ascending way.

- src/jquery.gridster.js:723 + src/jquery.gridster.js:726

@@ -7759,7 +7759,7 @@ the grid coords object passed in the grid_data param.

- src/jquery.gridster.js:1487 + src/jquery.gridster.js:1491

@@ -7863,7 +7863,7 @@ the grid coords object passed in the grid_data param.

- src/jquery.gridster.js:647 + src/jquery.gridster.js:650

diff --git a/docs/data.json b/docs/data.json index bbf6b37202..45ae5c0f72 100644 --- a/docs/data.json +++ b/docs/data.json @@ -410,7 +410,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 392, + "line": 395, "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": 441, + "line": 444, "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": 467, + "line": 470, "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": 518, + "line": 521, "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": 558, + "line": 561, "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": 594, + "line": 597, "description": "Sets the current position of the player", "params": [ { @@ -542,7 +542,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 647, + "line": 650, "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": 683, + "line": 686, "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,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 703, + "line": 706, "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", @@ -599,7 +599,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 723, + "line": 726, "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", @@ -618,7 +618,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 742, + "line": 745, "description": "Sorts an Array of grid coords objects (representing the grid coords of\neach widget) in descending way.", "itemtype": "method", "name": "manage_movements", @@ -647,7 +647,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 788, + "line": 791, "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", @@ -672,7 +672,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 805, + "line": 808, "description": "Determines if the widget that is being dragged is currently over the row\nand col given.", "itemtype": "method", "name": "is_player_in", @@ -696,7 +696,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 820, + "line": 823, "description": "Determines if the placeholder is currently over the row and col given.", "itemtype": "method", "name": "is_placeholder_in", @@ -720,7 +720,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 834, + "line": 837, "description": "Determines if the placeholder is currently over the column given.", "itemtype": "method", "name": "is_placeholder_in_col", @@ -739,7 +739,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 846, + "line": 850, "description": "Determines if the cell represented by col and row params is empty.", "itemtype": "method", "name": "is_empty", @@ -763,7 +763,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 865, + "line": 869, "description": "Determines if the cell represented by col and row params is occupied.", "itemtype": "method", "name": "is_occupied", @@ -787,7 +787,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 885, + "line": 889, "description": "Determines if there is a widget in the cell represented by col/row params.", "itemtype": "method", "name": "is_widget", @@ -811,7 +811,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 910, + "line": 914, "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", @@ -835,7 +835,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 927, + "line": 931, "description": "Get widgets overlapping with the player.", "itemtype": "method", "name": "get_widgets_under_player", @@ -847,7 +847,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 949, + "line": 953, "description": "Put placeholder at the row and column specified.", "itemtype": "method", "name": "set_placeholder", @@ -871,7 +871,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 991, + "line": 995, "description": "Determines whether the player can move to a position above.", "itemtype": "method", "name": "can_go_player_up", @@ -890,7 +890,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 1040, + "line": 1044, "description": "Determines whether a widget can move to a position above.", "itemtype": "method", "name": "can_go_widget_up", @@ -909,7 +909,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 1091, + "line": 1095, "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", @@ -938,7 +938,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 1169, + "line": 1173, "description": "Get widgets overlapping with the player.", "itemtype": "method", "name": "get_widgets_overlapped", @@ -950,7 +950,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 1202, + "line": 1206, "description": "This callback is executed when the player begins to collide with a column.", "itemtype": "method", "name": "on_start_overlapping_column", @@ -969,7 +969,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 1214, + "line": 1218, "description": "A callback executed when the player begins to collide with a row.", "itemtype": "method", "name": "on_start_overlapping_row", @@ -988,7 +988,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 1226, + "line": 1230, "description": "A callback executed when the the player ends to collide with a column.", "itemtype": "method", "name": "on_stop_overlapping_column", @@ -1007,7 +1007,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 1244, + "line": 1248, "description": "This callback is executed when the player ends to collide with a row.", "itemtype": "method", "name": "on_stop_overlapping_row", @@ -1026,7 +1026,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 1264, + "line": 1268, "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", @@ -1045,7 +1045,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 1307, + "line": 1311, "description": "Move up the specified widget and all below it.", "itemtype": "method", "name": "move_widget_up", @@ -1070,7 +1070,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 1353, + "line": 1357, "description": "Move down the specified widget and all below it.", "itemtype": "method", "name": "move_widget_down", @@ -1094,7 +1094,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 1398, + "line": 1402, "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", @@ -1123,7 +1123,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 1487, + "line": 1491, "description": "Get widgets below a widget.", "itemtype": "method", "name": "widgets_below", @@ -1142,7 +1142,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 1516, + "line": 1520, "description": "Update the array of mapped positions with the new player position.", "itemtype": "method", "name": "set_cells_player_occupies", @@ -1166,7 +1166,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 1533, + "line": 1537, "description": "Remove from the array of mapped positions the reference to the player.", "itemtype": "method", "name": "empty_cells_player_occupies", @@ -1178,7 +1178,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 1570, + "line": 1574, "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", @@ -1207,7 +1207,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 1605, + "line": 1608, "description": "Given the leftmost column returns all columns that are overlapping with the player.", "itemtype": "method", "name": "get_targeted_columns", @@ -1227,7 +1227,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 1623, + "line": 1626, "description": "Given the upper row returns all rows that are overlapping with the player.", "itemtype": "method", "name": "get_targeted_rows", @@ -1247,7 +1247,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 1640, + "line": 1643, "description": "Get all columns and rows that a widget occupies.", "itemtype": "method", "name": "get_cells_occupied", @@ -1266,7 +1266,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 1668, + "line": 1671, "description": "Iterate over the cells occupied by a widget executing a function for\neach one.", "itemtype": "method", "name": "for_each_cell_occupied", @@ -1290,7 +1290,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 1689, + "line": 1692, "description": "Iterate over the columns occupied by a widget executing a function for\neach one.", "itemtype": "method", "name": "for_each_column_occupied", @@ -1314,7 +1314,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 1708, + "line": 1711, "description": "Iterate over the rows occupied by a widget executing a function for\neach one.", "itemtype": "method", "name": "for_each_row_occupied", @@ -1338,7 +1338,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 1774, + "line": 1777, "description": "Iterate over each widget above the column and row specified.", "itemtype": "method", "name": "for_each_widget_above", @@ -1367,7 +1367,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 1790, + "line": 1793, "description": "Iterate over each widget below the column and row specified.", "itemtype": "method", "name": "for_each_widget_below", @@ -1396,7 +1396,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 1806, + "line": 1809, "description": "Returns the highest occupied cell in the grid.", "itemtype": "method", "name": "get_highest_occupied_cell", @@ -1408,7 +1408,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 1838, + "line": 1841, "description": "Set the current height of the parent grid.", "itemtype": "method", "name": "set_dom_grid_height", @@ -1420,7 +1420,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 1852, + "line": 1855, "description": "It generates the neccessary styles to position the widgets.", "itemtype": "method", "name": "generate_stylesheet", @@ -1444,7 +1444,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 1896, + "line": 1899, "description": "Injects the given CSS as string to the head of the document.", "itemtype": "method", "name": "add_style_tag", @@ -1463,7 +1463,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 1919, + "line": 1922, "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", @@ -1487,7 +1487,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 1955, + "line": 1958, "description": "Recalculates the offsets for the faux grid. You need to use it when\nthe browser is resized.", "itemtype": "method", "name": "recalculate_faux_grid", @@ -1499,7 +1499,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 1979, + "line": 1982, "description": "Get all widgets in the DOM and register them.", "itemtype": "method", "name": "get_widgets_from_DOM", @@ -1511,7 +1511,7 @@ }, { "file": "src/jquery.gridster.js", - "line": 1993, + "line": 1996, "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 a3e37323eb..4b865c9dcd 100644 --- a/docs/files/src_jquery.gridster.js.html +++ b/docs/files/src_jquery.gridster.js.html @@ -299,8 +299,8 @@ } if (valid_pos.length) { - var next_position = this.sort_by_row_asc(valid_pos); - next_position = this.sort_by_row_asc(next_position)[0]; + var next_position = this.sort_by_row_desc(valid_pos); + next_position = this.sort_by_col_asc(next_position)[0]; return next_position; } return false; @@ -467,16 +467,19 @@ $(ui.helper) : self.$player; self.on_start_drag.call(self, event, ui); + self.$el.trigger('gridster:dragstart'); }, stop: function(event, ui) { self.on_stop_drag.call(self, ui); + self.$el.trigger('gridster:dragstop'); }, drag: throttle(function(event, ui) { self.on_drag.call(self, event, ui); + self.$el.trigger('gridster:drag'); }, 100, true) }); - this.$widgets.draggable(draggable_options); + this.$widgets.draggable(draggable_options); return this; }; @@ -932,7 +935,8 @@ * @return {Boolean} Returns true or false. */ fn.is_placeholder_in_col = function(col) { - return $.inArray(col, this.cells_occupied_by_placeholder.cols) >= 0; + var c = this.cells_occupied_by_placeholder || []; + return $.inArray(col, c.cols) >= 0; }; @@ -1681,12 +1685,11 @@ col: col, row: row }; - var cells_occupied_by_w = this.get_cells_occupied(widget_grid_data); var result = true; this.for_each_cell_occupied(future_wd, function(tcol, trow){ var $tw = this.is_widget(tcol, trow); - if ($tw && !$tw.is($w)) { + if ($tw && (!widget_grid_data.el || $tw.is($w))) { result = false; } }); diff --git a/index.html b/index.html index 38fe155291..2486a21e55 100755 --- a/index.html +++ b/index.html @@ -367,7 +367,10 @@ widget_margins: [10, 10], widget_base_dimensions: [140, 140], min_cols: 6, - min_rows: 10 + min_rows: 10, + draggable: { + helper: "clone" + } }).data('gridster'); }); diff --git a/src/jquery.gridster.js b/src/jquery.gridster.js index fcee4facef..fdd1375bae 100644 --- a/src/jquery.gridster.js +++ b/src/jquery.gridster.js @@ -206,8 +206,8 @@ } if (valid_pos.length) { - var next_position = this.sort_by_row_asc(valid_pos); - next_position = this.sort_by_row_asc(next_position)[0]; + var next_position = this.sort_by_row_desc(valid_pos); + next_position = this.sort_by_col_asc(next_position)[0]; return next_position; } return false; @@ -842,7 +842,8 @@ * @return {Boolean} Returns true or false. */ fn.is_placeholder_in_col = function(col) { - return $.inArray(col, this.cells_occupied_by_placeholder.cols) >= 0; + var c = this.cells_occupied_by_placeholder || []; + return $.inArray(col, c.cols) >= 0; }; @@ -1591,12 +1592,11 @@ col: col, row: row }; - var cells_occupied_by_w = this.get_cells_occupied(widget_grid_data); var result = true; this.for_each_cell_occupied(future_wd, function(tcol, trow){ var $tw = this.is_widget(tcol, trow); - if ($tw && !$tw.is($w)) { + if ($tw && (!widget_grid_data.el || $tw.is($w))) { result = false; } });