Skip to content
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

[V3] Refactor cell rendering engine #123

Closed
shlomiassaf opened this issue Oct 20, 2020 · 1 comment
Closed

[V3] Refactor cell rendering engine #123

shlomiassaf opened this issue Oct 20, 2020 · 1 comment
Assignees
Labels
Milestone

Comments

@shlomiassaf
Copy link
Owner

shlomiassaf commented Oct 20, 2020

To support most of the features in V3 we need to refactor the rendering engine of the cells.

Instead of having the cells rendered by the CDK table internally, the grid itself will render it inside the rows and control each cell.

In the CDK rendering a row (header, data, footer) requires a column list of string values that map to a list of templates identified with the same id.
The order of the column is based on the order of the column list of strings.
Any change to the list will redraw the entire row which might cause flickering of feature heavy rows, animation leftovers, etc...

nGrid has a dedicated column store ad column API that contains all the information about columns and rows. We don't really need the CDK to handle it for us. Since we know all of the columns we can easily react upon changes and also add/remove columns on the fly without having to trigger a complete rendering of the rows, just the columns that changed are taking action.

In addition, the column store will have to improve and support detailed notification of changes in column state such as visibility, movement, etc.. This is not complex since we will use angular's differ to compare changes and classify them (add/move/remove)

Each row will render it's own cells, containing a list of ComponentRef<PblNgridCell> which is ordered based on the DOM order. Upon change the row will update the order in the list as well as the order in the viewRef containing the cell.
No new rendering is required when reordering.

Same for removal, just remove it from the list and from the viewRef.

@shlomiassaf shlomiassaf added this to the 3.0.0 milestone Oct 20, 2020
@shlomiassaf shlomiassaf self-assigned this Oct 28, 2020
@shlomiassaf shlomiassaf changed the title Refactor cell rendering engine [V3] Refactor cell rendering engine Nov 2, 2020
@shlomiassaf
Copy link
Owner Author

Done

shlomiassaf added a commit that referenced this issue Nov 15, 2020
…group definitions

Closes #123
Closes #131

BREAKING CHANGE:
`prop` and `span` are deprecated from `PblColumnGroupDefinition` and will be removed from version 4.0.0

`prop` and `span` are removed from `PblColumnGroup` and instread columnIds list is used
shlomiassaf added a commit that referenced this issue Nov 15, 2020
…group definitions

Closes #123
Closes #131

BREAKING CHANGE:
`prop` and `span` are deprecated from `PblColumnGroupDefinition` and will be removed from version 4.0.0

`prop` and `span` are removed from `PblColumnGroup` and instread columnIds list is used
shlomiassaf added a commit that referenced this issue Nov 16, 2020
…group definitions

Closes #123
Closes #131

BREAKING CHANGE:
`prop` and `span` are deprecated from `PblColumnGroupDefinition` and will be removed from version 4.0.0

`prop` and `span` are removed from `PblColumnGroup` and instread columnIds list is used
shlomiassaf added a commit that referenced this issue Dec 3, 2020
…group definitions

Closes #123
Closes #131

BREAKING CHANGE:
`prop` and `span` are deprecated from `PblColumnGroupDefinition` and will be removed from version 4.0.0

`prop` and `span` are removed from `PblColumnGroup` and instread columnIds list is used
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant