-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Cannot move widget horizontally (Allow horizontal swapping without creating new rows) #149
Comments
👍 |
👍 |
👍 It's a bit unintuitive as well that when there are two widgets in a row you can't drop one in between them without them both moving down |
👍 |
In https://github.com/dustmoo/gridster.js the horizontal swap works with identical sized items. It's a little difficult to swap horizontally when the items are different sized, that way the grid must expand(because one item might be too big for the swappers spot) but cannot because it is at a fixed number of rows. |
👍 Has anyone found a solution to this? |
+1. It's too hard to simply move to the right a widget without messing up everything else... I have found that the current behavior is counter intuitive for the most of my users. If somebody --with more understanding of the gridstack internal code than me-- is willing to propose a solution, I'll be more than happy to help to develop it. :) |
it's already in the works ... i am currently refactoring the old collision detection code. |
@h-nazzal Thank you! I look forward to it. |
Cool! On Wed, Aug 5, 2015 at 9:23 PM, alan12111 [email protected] wrote:
|
Nice!! Just curious when do you plan to merge it? @h-nazzal |
soon enough maybe today or tomorrow! :) |
Wonderful! |
I am excited 👍 |
Hi @h-nazzal have you been able to merge it yet? just wondering |
sorry you guys .. i just had a problem with certain widget sizes not being moved correctly i have to fix that before i post the changes .. |
@h-nazzal Would it work if they were all the same size? |
yes it would .. but the current problem is that with different sizes you have to predict the width and the distance that each widget has to move (which is sort of solved by moving the widgets one block at a time) |
@h-nazzal could you please show what you have for the same size widgets? I would like to help. Thanks |
the code below is proven to be non-working. so with that in mind here it is. for now i will not work with this code any more .. im going to go for a full rewrite of the collision detection mechanism as working with it is seriously hard. GridStackEngine.prototype._fix_collisions = function(node) {
var self = this ,
block_dir = {left : false , right:false} ,
x;
this._sort_nodes(-1);
var nn = node, has_locked = Boolean(_.find(this.nodes, function(n) { return n.locked }));
if (!this.float && !has_locked) {
nn = {x: node.x, y: node.y, width: node.width, height: node.height};
}
var collision_nodes = _.filter(this.nodes, function(n) {
return n != node && Utils.is_intercepted(n, nn);
}, this);
if (_.isEmpty(collision_nodes) ) {
return;
}else{
_.each(collision_nodes,function(collision_node){
//detect horizontal collision if there are any collisions found
_.each(self.nodes, function(n) {
if(n.y === collision_node.y){
var collision_X = collision_node.x-1 < 0 ? 0 : collision_node.x - 1 ;
if(n.x === collision_X ){
block_dir.left = true;
return true;
}else if(n.x === collision_node.x + 1){
block_dir.right = true;
return true;
}
}
}, this);
if(!block_dir.left){
x = collision_node.x - 1 < 0 ? 0 : collision_node.x-1 ;
}else if(!block_dir.right){
x = collision_node.x+1;
}else{
x = collision_node.x;
}
self.move_node(collision_node, x , node.y + node.height,
collision_node.width, collision_node.height, true);
});
}
};
DO NOT USE IN PRODUCTION , USE IT AT YOUR OWN RISK :) |
I guess this is still in the works? Setting height: 1 does not allow me to swap or move items. |
That's correct. I believe it will be readied for |
Awesome, I'll play around with the patch above as it fits my use case and then wait for an official fix later on. Thanks for the quick reply. |
May i know when v1.0 will be release for this enhancement feature? |
@h-nazzal with what version does your code work ? I know it doesn't work with the latest one but I tried with v0.23 which was released last year and even with that it's not working. I am trying with equal size widgets. Any help would be appreciated. |
I am having the same issue. Can anyone let me know whether this is resolved. if yes, please let me know the version to take. |
@Shiva4393 @sailajachellu im not working on this anymore. |
Keen to see this feature too if someone else can develop a solution. |
@h-nazzal Can you please share your custom solution with an example which fixes this issue? |
+1 Do you have any news for this issue ? |
aaah... aaah :) |
Hi guys, is it still work in progress? Would be nice to have this maybe as a gridstackoption... |
I started looking at it last weekend and may have to re-write entire collision heuristics at some point... $$ donation would certainly help as this is a BIG task. Update: I should have some time during the holidays to look at this now that 3.x Html5 is out and solid. |
Update: I spent the weekend on this and have swapping on same sized items working in a private branch, which is now the default for top gravity Still need to prevent larger items from swapping unless they are 50% covered, doing collide on the most covered item (not first one) and lot more testing... Hopefully this 5y old most wanted feature will make it now... Horizontal swapping of different sized objects will need to wait for |
Behaviour like this is expected: |
@kevinlandsberg if you drag 1 over 9 in ^^ it reflows the list, which may or may not be what you want. I have it swap 1 <-> 9 instantly (in my swapping branch). Or course the example they give is VERY simple (all same size and full flowing grid). Gridstack can handle any size combination and empty space with items floating, which is a much harder problem... Anyway with my swapping code it behaves much better IMO, but the edge cases are hard to fix. I need to find time to finish it up. And donation are welcomed as always since I'm not getting any help on these... |
I will Donate some Money if this Feature Works...😂 |
yeah right... I already spent >20 hours on this and while I have it mostly working, there is still a lot of testing to make sure I didn't break something else. Already got burned fixing 3 issues for someone else and not getting even a thank you after 3 weeks. I've only gotten 1 donation for #1094 which is related and yet multiple people say they would donate... guess what ? it take a LOT of work to create this lib and I spent countless weekends and holidays on this. Because of that I'm actually thinking of turning my work into a licensed version. then people will actually have to pay to use it. |
@adumesny would you consider setting this up on https://opencollective.com ? It's much more transparent, and it would also get you exposure. I need to ask my team if they think your project works for us. And if the answer to both those questions is yes then I will definitely donate to the project. Cheers! |
@dahacouk would have to read more, but I'm not trying to open a charity per say... thanks. |
big overall of the collision dectection code - you can now: * swap items of same size vertically/horizontally when grid is full (maxRow) ***** this has been 5.5years in the making and the most asked question **** It is now also the default in float:false as it feels more natural than pushing new row (could add Alt-key to get either behavior of push vs swap ?) * moving items down or up behave the same way (used to have to push WAY past to insert after) * optimized the collision code to not do extra work multiple times and only check if change and not tried before * heuristics now checks for >50% past the grid mid point (taking margin into account)a TODO part II: handle mid point of dragged over items rather 50% of row/column and check for the most covered when multiple items collide. * fix gridstack#149 gridstack#1605 and partial gridstack#1094 (need better support for larger items mid point)
and donations are pouring in!!!! (I wish) 5.5y years in the making, in the next release v3.4 or v4.0 default 20210215_102443.mp4
20210215_103145.mp4
20210215_103416.mp4 |
I hear you. You don't have to set up a charity, by the way. In the main, it's about being transparent and open. It's working very well for a lot of open source projects (big and small). Great demos by the way. |
Woooooow thank you! Release it and i will donate! Cheers!!! |
@dahacouk I take it your team isn't using it then... v4 has been released. not sure why I need to be transparent about the peanut support I've been getting so far... |
@dahacouk and others, I've added github sponsor so you can see donations and hopefully make it easier to do... |
for example : i have a grid with fixed 4 columns and four rows When i was trying to move the widget Horizontally and no place for the other widgets to slide up or down , the end result is you will not be able to move that widget unless there is enough space for other widgets to slide up/down.
is there any way to make the other widgets to slide left/right? so i can move any widget when i have a fixed width and height grid with full capacity widgets.
The text was updated successfully, but these errors were encountered: