adazzle / react-data-grid

Feature-rich and customizable data grid React component
https://adazzle.github.io/react-data-grid/
Other
6.95k stars 2.18k forks source link

(abandoned) Feature proposals #772

Closed jpdriver closed 6 years ago

jpdriver commented 7 years ago

Hey everyone,

Bit of background first — I’m JP, one of the original maintainers of React Data Grid.

I’m opening this issue as a place to track and discuss a set of potential new features for the next version of the Grid project.

Below is a list of notable features I personally want to explore for V3; beyond a bunch of bug-fixes and stability improvements.

If you have any additional features / comments / suggestions / can help, please leave a comment below.


⚠️ ☢️

DISCLAIMER: This is not an official announcement of new features. I'm trying to gather feedback / gauge interest on this proposed feature set.

⚠️ ☢️


Core

Columns

Rows

resizable-rows

Cells

Editors

Functions

Theming

Tooling

smorin commented 7 years ago

Definitely looking for expandable rows which I believe is the same things as Nested Grids. Like this example: http://allenfang.github.io/react-bootstrap-table/example.html#expand "Custom Expand Row Indicator"

jpdriver commented 7 years ago

hey @smorin -- so that's actually two features

the first is the functional ability to expand a row. we refer to that as a tree view, and it's currently being implemented in this PR https://github.com/adazzle/react-data-grid/pull/664

the second (which i believe is beyond the scope of tree view in it's current form) is the nested Grids

smorin commented 7 years ago

@jpdriver I guess I am not understanding clearly what the difference between functionality in a tree view would be vs a nested grid. For example is a tree view just extra canvas space that opens under a row, while a nested grid is extra rows that get expanded?

jpdriver commented 7 years ago

So by Tree View we mean something like this -- where you can expand one or more child rows that have the same structure as the parent grid.

img_0512

Nested Grids on the other hand involve rendering a whole separate Grid, essentially instead of a Row on a parent Grid.

img_0513

That Nested Grid could have it's own structure, columns, rows, etc.

Make sense?

smorin commented 7 years ago

Much clearer now, makes sense.

Would it make sense then as a step on to allow basically a arbitrary "area"/"canvas" to be opened up like that so that any component could be put in the expanded space? One implementation of that would be a "Nested Grid".

hkjpotato commented 7 years ago

Hi everyone, the version I am using now cannot disable the "drag and drop" function. It seems when I made the cell editable, it will automatically trigger the "drag and drop to copy" function. I am trying to read the github source code to modify the function myself. I wish in the next version it will have a better documentation of every single element, from Cell, Editor to Canvas, Viewport. Besides, the current version uses a lot of of "mixin", not sure if they will be replaced by the 'composition pattern', or 'presentational and container ' components, in the future.

smorin commented 7 years ago

Is there a slack channel for this project? I saw a reference to that in the contributing page.

jpdriver commented 7 years ago

@hkjpotato -- better documentation is something several people are asking for, and something that i'm hoping to include as part of the V3 improvements.

jpdriver commented 7 years ago

@smorin you can join the Slack channel at https://react-data-grid.herokuapp.com/

dzwiedziu-nkg commented 7 years ago

Feature request: easy way to implement custom cell theme (i.e. background color) according to data value, for example:

mattknoxca commented 7 years ago

While on the topic of next versions... can someone explaining the version numbering for this project? There seems to be a version bump with literally every single commit. Why is that? Should the stuff on the 'releases' section of the project be considered the 'official' release, and the version bumps in the commit history are not actually 'official' releases and people should ignore the versions in the commit history?

jpdriver commented 7 years ago

hey @mattknoxca -- we follow semver, which dictates that any patch releases to fix bugs should bump the version number. Because of this, we have an automated script that bumps the version number after every merge commit into the master branch.

As for why GitHub Releases shows a different "latest version", that's because we adopted Lerna -- which lets you split your source code into multiple NPM packages within one repository. We actually have two version numbers. If you look at the package.json file in the root, it says the version for the repository is 2.0.1. But the latest version of the packages within it is 2.0.33.

So both are official -- but we'll only publish a new Github Release when we need to bump the repository version. Let me know if that all makes sense 😄

lord-xeon commented 7 years ago

One feature I think would be nice, though possibly difficult to implement, and only necessary on the most advanced grids would be virtual columns.

I have grids where the user can include up to 50 different columns, with the first 3 of them locked. Most of those columns are simple render the value from the DB, though others need complex formatting that depends on other values and things. This makes horizontal scrolling laggy in some instances. If there were a way to only render the X columns visible, that would be great!

jpdriver commented 7 years ago

hey @lord-xeon -- as things are right now, the Grid already has "virtualised columns" in that if a cell is within a column which is outside the currently viewable <Viewport /> bounds, it will render as an <OverflowCell />.

These are empty divs that have the same dimensions as their fully-rendered counterparts, so they provide a slight performance boost while maintaining Grid structure.

But you still get something rendered for every Column, visible or otherwise.


V3 on the other hand silently unmounts non-visible Rows and Columns components from the DOM.

We needed to adopt that pattern to make the performance as fast as it is now, and that's actually also how I solved a tricky bug whereby the 1,000,000 rows example has never fully worked before because we hit the maximum px height limit for the DOM.

(Go to the example and scroll all the way to the final row. It's not 1,000,000 and the styling is all over the place!)

So don't worry -- it's coming! 😄

talcohen100 commented 7 years ago

@jpdriver We're using this component as part of a production system and looking forward to future releases and improvements!

Great work!

yarnball commented 7 years ago

Formula's are crucial IMO- otherwise this really just an excel like table. In saying that0 it's still amazing work.

This one does it nicely- but there is no mobile/touch support. https://github.com/nadbm/react-datasheet

milkersarac commented 7 years ago

What about an 'Undo' feature? If some values are changed, sort happens, columns re-ordered on the data grid then an undo mechanism would be great to roll-back the changes.

akkie commented 7 years ago

Is there a plan to support Footable like responsiveness?

jpdriver commented 7 years ago

hey @akkie -- i'm not familiar with Footable, but is the idea that you hide certain columns at certain breakpoints? Because if so then the answer is yes!

akkie commented 7 years ago

Yes, this is the idea! They can then be opened with the plus icon at the beginning of the row.

jpdriver commented 7 years ago

Cool -- that's already included in the draft spec as "Hide Order" for Columns at certain breakpoints.

You have to set a minimum column width for it to work, but if you try and resize below this V3 will now start removing columns one by one according to an order you specify.

sjain-mi9 commented 7 years ago

I'm looking for this amazing feature in your Library "File Import & Exports (.json & .csv)", can we have an expected date for this functionality to be implemented?

jpdriver commented 7 years ago

hey @sjain-mi9 -- there's no expected date, and i won't be able to give you one. V3 will ship when it's ready.

jpdriver commented 7 years ago

ps -- issue updated with some new V3 teaser screenshots / GIFs

tibuurcio commented 7 years ago

Hey @jpdriver, I'm planning to use react-data-grid soon in a project! I'm new to open-source, but would love to help somehow, mostly in the Functions section. Is there anyone working on those? Could I pick one and try to implement it?

Thanks for the great work!

leimd commented 7 years ago

Hey @jpdriver , I was wondering if Copy / Paste Continuous Cell Ranges has already been implemented or not? I have had a solution to the problem that's running in production shown here https://github.com/adazzle/react-data-grid/issues/293, I said I will be making a PR but didn't get the time to do it, if it's not been implemented yet, I can take it on and submit a PR soon.

jpdriver commented 7 years ago

hey @leimd -- no that hasn't been implemented yet! if you already have a working solution, i'd love to see it in action 😄

leimd commented 7 years ago

@jpdriver nice! I will let you know when I put up the PR

sirajtechy commented 7 years ago

@jpdriver Hey , I had a hard stop when i was coding data-grid React. to my surprise there is no hide/show columns feature integrated which is very essential for users perspective . Any alternative to achieve this feature in react data-grid , if so pls help me out . I am badly in need of it. Thanks in advance. :-)

lord-xeon commented 7 years ago

Some additional functionality regarding the contextmenu would be really great:

supamanda commented 7 years ago

This sounds really conservative but I would like to see the 177 open issues addressed.

jpdriver commented 7 years ago

hey @supamanda -- first of all, thank you for your continued support by opening many of those issues yourself.

One of the primary aims of these changes is not only to address the majority of open issues right now, but also to provide a more stable and performant base for continued future development.

The motivation behind the changes was driven by metrics like # of issues open for longer than 1 month / 2 months / 3 months, as well as the rate the community opens issues at.

Getting the project core in better shape should help reduce the support cost a lot; and in turn as a community we'll be able to better focus on fewer issues.

I should also note that the list above relates solely to the "New and Noteworthy" features. When the V3 update is ready, the Release Notes will include a full list of Issues addressed.

HTH.

Michael-Tajmajer-Emrsn commented 7 years ago

I like this component so far, but run-time customization is difficult to achieve, needing stylesheet and ref to achieve.

One small enhancement would be to allow inline styling and adding classes to the different parts: table, header-row, header-cell, table-body, table-row, table-cell.

Second, allowing custom props to be passed through into the RowRenderer.

csvan commented 7 years ago

RowSpan would be amazing.

csvan commented 7 years ago

@jpdriver in the same vein, would it be possible to have expandable rows which do not have the same structure as their parent row? E.g. if I want to show (say) 6 columns of data, and then expand the row to see a full-length chart (spanning all 6 columns) which plots all 6?

praveenvasya commented 7 years ago

@jpdriver could you please help or suggest me with below features in tree view structure:

  1. Need to display tree view structure by default in expanded mode?
  2. Is it possible to have tree view with two parent - children set of structure? I mean in a row I can column 1 as 1st parent, once clicked I got 3 subrows and then 4th column as 2nd parent and once clicked got 4 subrows?

Please help me with this features?

DanHarman commented 7 years ago

re the nested grid suggestion above I agree it would be better if it was just a panel we could put whatever we want into. I'm not sure why it would be better to explicitly make it a grid only, unless I'm missing something.

jpdriver commented 7 years ago

@DanHarman "Nested Grids" as a feature is only referred to as such because we got a bunch of similar requests for it. In practice, we'd want Cell contents to be as agnostic as possible so you could render a Grid, a Chart, a Sub-row, etc.

KevinMongiello commented 7 years ago

Is there currently a way to expand column width to fit the largest cell content? Similar to in Excel by double-clicking on the column boundary.

kamaldlk commented 6 years ago

Copy / Paste Continuous Cell Ranges (finally!!) Copy / Paste Random Cell Sequences I'm looking for this features any update on this @jpdriver

Thanks

aakarsrivastava commented 6 years ago

is there any feature for limiting the row count or pagination so data we show only limited data at once?

devarshi89 commented 6 years ago

@jpdriver any update on V3? I am eagerly waiting for SSR.......

jpdriver commented 6 years ago

Hey everyone,

It looks like Adazzle are getting ready to release v3.0.0 -- which is a major version bump required to address breaking changes that were merged in anyway; even after I flagged they would cause script errors directly to one of the core maintainers (see https://github.com/adazzle/react-data-grid/pull/1027).

Subsequently I proposed that we spin this project off as a truly open-source repo outside Adazzle. I would have liked the internal team to support the initiative as they had nothing to lose in doing so, but that plea has apparently fallen on deaf ears.


So TL:DR; the version 3 update about to be released contains none of the above features, and I'll rename this PR to clear up any confusion.

I'm also personally stepping away from this library. There are too many issues, too many bugs, and the internal team ignores any contributions and efforts to help outside of their own.

In my own opinion, that -- coupled with the state this project is in -- makes it unsuitable for use in any production environment.

Based on my time spent working with this project (since the initial public release in 2014) I can only assume the project state and the way it's managed are unlikely to change. I've poured hours of effort into this project and only got sleepless nights to show for it -- so I'm out.


To conclude, the work that was done and the ideas that were explored as part of this issue will never appear as part of this project.

My personal stance is that there is clearly appetite for a proper open-source Grid project with similar functionality to this one, as evidenced by the community and you (if you're still reading) -- so maybe there's something else out there, or a new library we could create to house these features. But this project is not that, and nor will it ever be.

If you choose to keep using it, I wish you the best of luck.

csvan commented 6 years ago

@jpdriver I'm very sorry to hear that is the kind of treatment you got from Adazzle. You have done a tremendous amount of work on this lib, I believe I speak for the whole userbase when I say that you have my sincere thanks for all your efforts.

pgn-vole commented 6 years ago

@jpdriver are you abandoning the idea of setting up a fork? This library is a gem, but it also became useless now that React 16 is out. That would be a shame to let dies because of the lack of openess of the current maintainers.

malonecj commented 6 years ago

OK lets get a few things straight. First of all the proposals created in this issue all look like excellent additions to the library. Just because they did not get included in version 3 of the grid does not mean that they are not worthwhile ideas. Furthermore, it does not mean that they will not be considered for development in the future either.

Once again, I will admit some shortcomings on the management of this project in the last year, but that is something that is actively being tackled right now, and we are committed to making this project the best open source data grid for React.

Now to address the above comments. As none of these features are currently high priority for us right now (except for more performant rendering) , it means that for one of them to get released, an external contributor needs to work on them. We never saw a single idea here presented as a pull request. It is clear there is a demand for these features. However, the work that can be seen in the attached screenshots only ever lived on the commenters local machine or on his fork.

As for you being upset with the features not being included in version 3.0, I'm afraid that is not how our release process works. If something introduces a breaking change, then we will bump the major version, just like we did in v3.0 to fix a more pressing issue, which moves us one step closer to being React 16 compatible. I agree that this could be better communicated, and that we can do a better job of managing expectations.

We are sorry @jpdriver that you feel so bitter, but we thank you for all your previous hard work. Best of luck in maintaining your fork, and if you ever feel like contributing again, you are more than welcome to.

avrpaduru commented 4 years ago

Is there a way we can implement copying outside the context of this data grid and paste the text in the data grid cells? Like copy texts from cells in an excel sheet and paste them in the data grid.