{
    "componentChunkName": "component---src-templates-doc-page-jsx",
    "path": "/javascript-data-grid/client-side-row-stages/",
    "result": {"data":{"markdownRemark":{"htmlAst":{"type":"element","tagName":"div","properties":{},"children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"You do not need to know how the Client-Side Row Model works, however it can be helpful for those who are interested."}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"The Client-Side Row Model is responsible for working out how to display the rows inside the grid. It has a complex data structure, representing the data in different states. The states are as follows:"}]},{"type":"element","tagName":"h3","properties":{"id":"state-1-row-data","style":"position:relative;"},"children":[{"type":"text","value":"State 1: Row Data"},{"type":"element","tagName":"a","properties":{"href":"#state-1-row-data","ariaLabel":"state 1 row data permalink","className":["docs-header-icon","after"]},"children":[{"type":"element","tagName":"svg","properties":{"id":"icon","xmlns":"http://www.w3.org/2000/svg","viewBox":"0 0 32 32"},"children":[{"type":"element","tagName":"path","properties":{"d":"M29.25,6.76a6,6,0,0,0-8.5,0l1.42,1.42a4,4,0,1,1,5.67,5.67l-8,8a4,4,0,1,1-5.67-5.66l1.41-1.42-1.41-1.42-1.42,1.42a6,6,0,0,0,0,8.5A6,6,0,0,0,17,25a6,6,0,0,0,4.27-1.76l8-8A6,6,0,0,0,29.25,6.76Z"},"children":[]},{"type":"element","tagName":"path","properties":{"d":"M4.19,24.82a4,4,0,0,1,0-5.67l8-8a4,4,0,0,1,5.67,0A3.94,3.94,0,0,1,19,14a4,4,0,0,1-1.17,2.85L15.71,19l1.42,1.42,2.12-2.12a6,6,0,0,0-8.51-8.51l-8,8a6,6,0,0,0,0,8.51A6,6,0,0,0,7,28a6.07,6.07,0,0,0,4.28-1.76L9.86,24.82A4,4,0,0,1,4.19,24.82Z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"The data as provided by the application. The grid never modifies this array. It just takes the "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"rowData"}]},{"type":"text","value":" items from it. This example is of three data items."}]},{"type":"element","tagName":"image-caption","properties":{"src":"client-side-row-stages/resources/allData.jpg","alt":"Row Data","width":"22rem","centered":"true"},"children":[{"type":"text","value":"\n    Example: Row Data\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"API:"}]},{"type":"text","value":" There is no grid API to get this data. However it was provided by the application so you should already have it."}]},{"type":"element","tagName":"h3","properties":{"id":"state-2-all-rows","style":"position:relative;"},"children":[{"type":"text","value":"State 2: All Rows"},{"type":"element","tagName":"a","properties":{"href":"#state-2-all-rows","ariaLabel":"state 2 all rows permalink","className":["docs-header-icon","after"]},"children":[{"type":"element","tagName":"svg","properties":{"id":"icon","xmlns":"http://www.w3.org/2000/svg","viewBox":"0 0 32 32"},"children":[{"type":"element","tagName":"path","properties":{"d":"M29.25,6.76a6,6,0,0,0-8.5,0l1.42,1.42a4,4,0,1,1,5.67,5.67l-8,8a4,4,0,1,1-5.67-5.66l1.41-1.42-1.41-1.42-1.42,1.42a6,6,0,0,0,0,8.5A6,6,0,0,0,17,25a6,6,0,0,0,4.27-1.76l8-8A6,6,0,0,0,29.25,6.76Z"},"children":[]},{"type":"element","tagName":"path","properties":{"d":"M4.19,24.82a4,4,0,0,1,0-5.67l8-8a4,4,0,0,1,5.67,0A3.94,3.94,0,0,1,19,14a4,4,0,0,1-1.17,2.85L15.71,19l1.42,1.42,2.12-2.12a6,6,0,0,0-8.51-8.51l-8,8a6,6,0,0,0,0,8.51A6,6,0,0,0,7,28a6.07,6.07,0,0,0,4.28-1.76L9.86,24.82A4,4,0,0,1,4.19,24.82Z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"allRows"}]},{"type":"text","value":" is similar to "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"rowData"}]},{"type":"text","value":" except a new array is created which contains row nodes, with each row node pointing to exactly one data item. The length of the "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"allRows"}]},{"type":"text","value":" array is the same as the "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"rowData"}]},{"type":"text","value":" array."}]},{"type":"element","tagName":"image-caption","properties":{"src":"client-side-row-stages/resources/allRows.jpg","alt":"All Rows","width":"22rem","centered":"true"},"children":[{"type":"text","value":"\n    Example: All Rows\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"API:"}]},{"type":"text","value":" There is no API to get this data. However there is no benefit over the "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"rowsAfterGroup"}]},{"type":"text","value":" data."}]},{"type":"element","tagName":"h3","properties":{"id":"state-3-rows-after-group","style":"position:relative;"},"children":[{"type":"text","value":"State 3: Rows After Group"},{"type":"element","tagName":"a","properties":{"href":"#state-3-rows-after-group","ariaLabel":"state 3 rows after group permalink","className":["docs-header-icon","after"]},"children":[{"type":"element","tagName":"svg","properties":{"id":"icon","xmlns":"http://www.w3.org/2000/svg","viewBox":"0 0 32 32"},"children":[{"type":"element","tagName":"path","properties":{"d":"M29.25,6.76a6,6,0,0,0-8.5,0l1.42,1.42a4,4,0,1,1,5.67,5.67l-8,8a4,4,0,1,1-5.67-5.66l1.41-1.42-1.41-1.42-1.42,1.42a6,6,0,0,0,0,8.5A6,6,0,0,0,17,25a6,6,0,0,0,4.27-1.76l8-8A6,6,0,0,0,29.25,6.76Z"},"children":[]},{"type":"element","tagName":"path","properties":{"d":"M4.19,24.82a4,4,0,0,1,0-5.67l8-8a4,4,0,0,1,5.67,0A3.94,3.94,0,0,1,19,14a4,4,0,0,1-1.17,2.85L15.71,19l1.42,1.42,2.12-2.12a6,6,0,0,0-8.51-8.51l-8,8a6,6,0,0,0,0,8.51A6,6,0,0,0,7,28a6.07,6.07,0,0,0,4.28-1.76L9.86,24.82A4,4,0,0,1,4.19,24.82Z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"rowsAfterGroup"}]},{"type":"text","value":" takes "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"allRows"}]},{"type":"text","value":", and if grouping, groups the data. If no grouping is done, then "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"rowsAfterGroup"}]},{"type":"text","value":" will be identical to "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"allRows"}]},{"type":"text","value":". This example shows grouping on the colour field, creating two groups."}]},{"type":"element","tagName":"image-caption","properties":{"src":"client-side-row-stages/resources/rowsAfterGroup.jpg","alt":"Rows After Group","width":"22rem","centered":"true"},"children":[{"type":"text","value":"\n    Example: Rows After Group\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"API:"}]},{"type":"text","value":" Use "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"api.forEachNode()"}]},{"type":"text","value":" to access this structure."}]},{"type":"element","tagName":"h3","properties":{"id":"state-4-rows-after-filter","style":"position:relative;"},"children":[{"type":"text","value":"State 4: Rows After Filter"},{"type":"element","tagName":"a","properties":{"href":"#state-4-rows-after-filter","ariaLabel":"state 4 rows after filter permalink","className":["docs-header-icon","after"]},"children":[{"type":"element","tagName":"svg","properties":{"id":"icon","xmlns":"http://www.w3.org/2000/svg","viewBox":"0 0 32 32"},"children":[{"type":"element","tagName":"path","properties":{"d":"M29.25,6.76a6,6,0,0,0-8.5,0l1.42,1.42a4,4,0,1,1,5.67,5.67l-8,8a4,4,0,1,1-5.67-5.66l1.41-1.42-1.41-1.42-1.42,1.42a6,6,0,0,0,0,8.5A6,6,0,0,0,17,25a6,6,0,0,0,4.27-1.76l8-8A6,6,0,0,0,29.25,6.76Z"},"children":[]},{"type":"element","tagName":"path","properties":{"d":"M4.19,24.82a4,4,0,0,1,0-5.67l8-8a4,4,0,0,1,5.67,0A3.94,3.94,0,0,1,19,14a4,4,0,0,1-1.17,2.85L15.71,19l1.42,1.42,2.12-2.12a6,6,0,0,0-8.51-8.51l-8,8a6,6,0,0,0,0,8.51A6,6,0,0,0,7,28a6.07,6.07,0,0,0,4.28-1.76L9.86,24.82A4,4,0,0,1,4.19,24.82Z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"rowsAfterFilter"}]},{"type":"text","value":" goes through "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"rowsAfterGroup"}]},{"type":"text","value":" and filters the data. This example shows filtering on the colour black (thus removing the second group)."}]},{"type":"element","tagName":"image-caption","properties":{"src":"client-side-row-stages/resources/rowsAfterFilter.jpg","alt":"Rows After Filter","width":"22rem","centered":"true"},"children":[{"type":"text","value":"\n    Example: Rows After Filter\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"API:"}]},{"type":"text","value":" Use "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"api.forEachNodeAfterFilter()"}]},{"type":"text","value":" to access this structure."}]},{"type":"element","tagName":"h3","properties":{"id":"state-5-rows-after-sort","style":"position:relative;"},"children":[{"type":"text","value":"State 5: Rows After Sort"},{"type":"element","tagName":"a","properties":{"href":"#state-5-rows-after-sort","ariaLabel":"state 5 rows after sort permalink","className":["docs-header-icon","after"]},"children":[{"type":"element","tagName":"svg","properties":{"id":"icon","xmlns":"http://www.w3.org/2000/svg","viewBox":"0 0 32 32"},"children":[{"type":"element","tagName":"path","properties":{"d":"M29.25,6.76a6,6,0,0,0-8.5,0l1.42,1.42a4,4,0,1,1,5.67,5.67l-8,8a4,4,0,1,1-5.67-5.66l1.41-1.42-1.41-1.42-1.42,1.42a6,6,0,0,0,0,8.5A6,6,0,0,0,17,25a6,6,0,0,0,4.27-1.76l8-8A6,6,0,0,0,29.25,6.76Z"},"children":[]},{"type":"element","tagName":"path","properties":{"d":"M4.19,24.82a4,4,0,0,1,0-5.67l8-8a4,4,0,0,1,5.67,0A3.94,3.94,0,0,1,19,14a4,4,0,0,1-1.17,2.85L15.71,19l1.42,1.42,2.12-2.12a6,6,0,0,0-8.51-8.51l-8,8a6,6,0,0,0,0,8.51A6,6,0,0,0,7,28a6.07,6.07,0,0,0,4.28-1.76L9.86,24.82A4,4,0,0,1,4.19,24.82Z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"rowsAfterSort"}]},{"type":"text","value":" goes through "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"rowsAfterFilter"}]},{"type":"text","value":" and sorts the data. This example shows sorting on car make."}]},{"type":"element","tagName":"image-caption","properties":{"src":"client-side-row-stages/resources/rowsAfterSort.jpg","alt":"Rows After Sort","width":"22rem","centered":"true"},"children":[{"type":"text","value":"\n    Example: Rows After Sort\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"API:"}]},{"type":"text","value":" Use "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"api.forEachNodeAfterFilterAndSort()"}]},{"type":"text","value":" to access this structure."}]},{"type":"element","tagName":"h3","properties":{"id":"state-6-rows-after-map","style":"position:relative;"},"children":[{"type":"text","value":"State 6: Rows After Map"},{"type":"element","tagName":"a","properties":{"href":"#state-6-rows-after-map","ariaLabel":"state 6 rows after map permalink","className":["docs-header-icon","after"]},"children":[{"type":"element","tagName":"svg","properties":{"id":"icon","xmlns":"http://www.w3.org/2000/svg","viewBox":"0 0 32 32"},"children":[{"type":"element","tagName":"path","properties":{"d":"M29.25,6.76a6,6,0,0,0-8.5,0l1.42,1.42a4,4,0,1,1,5.67,5.67l-8,8a4,4,0,1,1-5.67-5.66l1.41-1.42-1.41-1.42-1.42,1.42a6,6,0,0,0,0,8.5A6,6,0,0,0,17,25a6,6,0,0,0,4.27-1.76l8-8A6,6,0,0,0,29.25,6.76Z"},"children":[]},{"type":"element","tagName":"path","properties":{"d":"M4.19,24.82a4,4,0,0,1,0-5.67l8-8a4,4,0,0,1,5.67,0A3.94,3.94,0,0,1,19,14a4,4,0,0,1-1.17,2.85L15.71,19l1.42,1.42,2.12-2.12a6,6,0,0,0-8.51-8.51l-8,8a6,6,0,0,0,0,8.51A6,6,0,0,0,7,28a6.07,6.07,0,0,0,4.28-1.76L9.86,24.82A4,4,0,0,1,4.19,24.82Z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"rowsAfterMap"}]},{"type":"text","value":" maps the data to what should be drawn inside the grid, taking into account what groups are open and closed. This list is what is iterated through when the grid draws the rows. Two examples are provided below, the first when open (so three rows in the grid, the group row plus two children), the second when closed (so one row in the grid, the closed group)."}]},{"type":"element","tagName":"image-caption","properties":{"src":"client-side-row-stages/resources/rowsAfterMapOpen.jpg","alt":"Rows After Map - Open Group","width":"22rem","centered":"true"},"children":[{"type":"text","value":"\n    Example: Rows After Map - Open Group\n"}]},{"type":"element","tagName":"image-caption","properties":{"src":"client-side-row-stages/resources/rowsAfterMapClosed.jpg","alt":"Rows After Map - Closed Group","width":"22rem","centered":"true"},"children":[{"type":"text","value":"\n    Example: Rows After Map - Closed Group\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"API:"}]},{"type":"text","value":" Use "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"api.getModel()"}]},{"type":"text","value":" and then "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"model.getDisplayedRowCount()"}]},{"type":"text","value":" and "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"getDisplayedRowAtIndex()"}]},{"type":"text","value":" to get the nodes."}]},{"type":"element","tagName":"h2","properties":{"id":"refreshing-the-client-side-model","style":"position:relative;"},"children":[{"type":"text","value":"Refreshing the Client-Side Model"},{"type":"element","tagName":"a","properties":{"href":"#refreshing-the-client-side-model","ariaLabel":"refreshing the client side model permalink","className":["docs-header-icon","after"]},"children":[{"type":"element","tagName":"svg","properties":{"id":"icon","xmlns":"http://www.w3.org/2000/svg","viewBox":"0 0 32 32"},"children":[{"type":"element","tagName":"path","properties":{"d":"M29.25,6.76a6,6,0,0,0-8.5,0l1.42,1.42a4,4,0,1,1,5.67,5.67l-8,8a4,4,0,1,1-5.67-5.66l1.41-1.42-1.41-1.42-1.42,1.42a6,6,0,0,0,0,8.5A6,6,0,0,0,17,25a6,6,0,0,0,4.27-1.76l8-8A6,6,0,0,0,29.25,6.76Z"},"children":[]},{"type":"element","tagName":"path","properties":{"d":"M4.19,24.82a4,4,0,0,1,0-5.67l8-8a4,4,0,0,1,5.67,0A3.94,3.94,0,0,1,19,14a4,4,0,0,1-1.17,2.85L15.71,19l1.42,1.42,2.12-2.12a6,6,0,0,0-8.51-8.51l-8,8a6,6,0,0,0,0,8.51A6,6,0,0,0,7,28a6.07,6.07,0,0,0,4.28-1.76L9.86,24.82A4,4,0,0,1,4.19,24.82Z"},"children":[]}]}]}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"If you do want to refresh the Client-Side Row Model, call "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"api.refreshClientSideRowModel(startingStage)"}]},{"type":"text","value":", where "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"startingStage"}]},{"type":"text","value":" can be one of the stages above, i.e.:"}]},{"type":"element","tagName":"ol","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"group"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"filter"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"pivot"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"aggregate"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"sort"}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"map"}]}]},{"type":"text","value":"\n"}]},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Because each stage depends on the stage before, refreshing any particular stage means that stage executes and then all the stages after it will also execute again. For example if you call "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"api.refreshClientSideRowModel('filter')"}]},{"type":"text","value":" it will execute the stages Filter, Pivot, Aggregate, Sort and Map."}]}]},"frontmatter":{"title":"Client-Side Row Model","version":null,"enterprise":null,"sideMenu":null,"description":null},"headings":[{"id":"state-1-row-data","depth":3,"value":"State 1: Row Data"},{"id":"state-2-all-rows","depth":3,"value":"State 2: All Rows"},{"id":"state-3-rows-after-group","depth":3,"value":"State 3: Rows After Group"},{"id":"state-4-rows-after-filter","depth":3,"value":"State 4: Rows After Filter"},{"id":"state-5-rows-after-sort","depth":3,"value":"State 5: Rows After Sort"},{"id":"state-6-rows-after-map","depth":3,"value":"State 6: Rows After Map"},{"id":"refreshing-the-client-side-model","depth":2,"value":"Refreshing the Client-Side Model"}]}},"pageContext":{"frameworks":["javascript","react","angular","vue"],"framework":"javascript","srcPath":"/client-side-row-stages","pageName":"client-side-row-stages"}},
    "staticQueryHashes": ["1766026005","699667431","940729948"]}