Skip to content

moveAll helper for dual-grid handling #1087

@drzraf

Description

@drzraf

Subject of the issue

When dealing with multiple grids, removeAll() is not suitable with widget-based grids.

Your environment

  • version of gridstack.js: 0.5
  • which browser and its version: FF 6x

Steps to reproduce

Multiple grids handling with widgets is good. But coupling with save/load we soon hit an issue if we want a reset. The two demo avoids because there is no such thing like "reference/default grid".
In my case, instead of removeAll() I'm looking into moving back all widgets to #grid1 so we can start filling grid2 again.

  • A pure "items" based version does not fit since it'd loose the individual DOM elements.
  • (side topic) I thought about doing that, but couldn't find an actual way to extends core GridStack methods.
    $(function () {
        GridStack.prototype.moveAll = function(new_grid) {
            this.grid.nodes.forEach(function(node) {
                new_grid.data('gridstack').addWidget(node.el);
                this.removeWidget(node.el, /* detachNode */ false);
            }, this);
            this.grid.nodes = [];
            this._updateContainerHeight();
        };
    });
  • I'm currently using removed event:
$("#grid2").data("gridstack").on('removed', function(event, items) {
   for (var o of items) {
       $('#grid1').data('gridstack').addWidget(o.el);
    }

The latest is somehow working but it's not very robust (the event is not fire under some conditions) and think API could ease that common use-case.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions