GithubHelp home page GithubHelp logo

Comments (14)

dhobi avatar dhobi commented on July 18, 2024 1

A possible solution would be to temporarily disable the colReorder plugin while the resize is in progress.
You can do this in the available resize start / end hooks. Something like:

var table = $('#example').DataTable({
  colResize: {
    ...
    onResizeStart: function() { table.colReorder.enable(false); }
    onResizeEnd: function() { table.colReorder.enable(true); }
    ...
  }
});

from datatables.colresize.

akeni avatar akeni commented on July 18, 2024 1

Another note,

the ColResize library must be initialized before ColReorder, or else the event listener will call ColReorder first, thus the flag set does not work

from datatables.colresize.

zhihuishi-rain avatar zhihuishi-rain commented on July 18, 2024

I ran into the same problem,can someone please give me a solution for this?

from datatables.colresize.

porrey avatar porrey commented on July 18, 2024

Even after disabling column reorder, the column size resets after moving any column.

from datatables.colresize.

chbocca avatar chbocca commented on July 18, 2024

@porrey. I just ran in demo above and did not find that to be case. Column size stayed as adjusted after performing column reorder.

from datatables.colresize.

chbocca avatar chbocca commented on July 18, 2024

@dhobi. A belated thank you!

from datatables.colresize.

porrey avatar porrey commented on July 18, 2024

Is state saving on or off?

from datatables.colresize.

chbocca avatar chbocca commented on July 18, 2024

On, I believe. You can see the code just by right click / view source.

from datatables.colresize.

porrey avatar porrey commented on July 18, 2024

The issue occurs when a column width is set in columns[] or columnDefs[] during table initialization (width: 100px; for example). I am initializing the width of my columns.

This video demonstrates the behavoir: https://youtu.be/KOK81An73_0

from datatables.colresize.

chbocca avatar chbocca commented on July 18, 2024

ouch. that one will have to be for @dhobi. c

from datatables.colresize.

chbocca avatar chbocca commented on July 18, 2024

one thought. you might try setting column widths in style sheet instead of dt.

from datatables.colresize.

dhobi avatar dhobi commented on July 18, 2024

@porrey Do you have a minimal example to reproduce the issue?

As the plugin sets the column.width property and the dom (th).outerWidth() I have to see what exactly is going on. Is the table reinitialized on column drag?

from datatables.colresize.

porrey avatar porrey commented on July 18, 2024

Started working on extracting the example that mimics my actual application (it uses server side processing). I am unable to get the column resizing to work but here is the link. Work in progress...

http://live.datatables.net/porrey/4/edit

from datatables.colresize.

Talkabout avatar Talkabout commented on July 18, 2024

For those facing this problem:

In order to make sure that colResize is registered before colReorder we have to tweak the event logic slightly. Here is the part I added:

    // We need to make sure that colResize plugin is registered before colReorder plugin in preInit to be able
    // to prevent reorder being triggered when actually resize is expected.
    const oEvents = $._data(document, 'events');
    const iReorderIndex = oEvents.preInit.findIndex((oEvent) => oEvent.namespace == 'colReorder.dt');

    if (iReorderIndex > -1) {
      const iResizeIndex = oEvents.preInit.findIndex((oEvent) => oEvent.namespace == 'colResize.dt');

      if (iResizeIndex > -1 && iResizeIndex > iReorderIndex) {
        const aEvents = oEvents.preInit.splice(iResizeIndex, 1);
        oEvents.preInit.splice(iReorderIndex, 0, aEvents[0]);
      }
    }

It was added after the "preInit" event handler:

image

With this change I am able to disable "reorder" plugin in "onResizeStart" and enable it again in "onResizeEnd":

      colResize: {
        isEnabled: true,
        saveState: false,
        isResizable: (iColumn) => {
          return true;
        },
        onResizeStart: function() { $oTable.colReorder.disable(); },
        onResizeEnd: function() { $oTable.table().colReorder.enable(); }
      }

Dealing with the event queue of jquery is not the nicest solution but it works. Currently I don't see any other solution as the reorder plugin does not provide any functionality that would help.

from datatables.colresize.

Related Issues (19)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.