@@ -3,6 +3,7 @@ import { createAction, handleActions } from 'redux-actions';
33import { sortData } from '@cjdev/visual-stack/lib/components/Table/DataTable/sortingHelper' ;
44
55const defaultToEmpty = R . defaultTo ( { } ) ;
6+ const defaultToEmptyArray = R . defaultTo ( [ ] ) ;
67const collapse = R . set ( R . lensProp ( 'expanded' ) , false ) ;
78
89const OPEN_MODAL = '@cjdev/visual-stack-redux/OPEN_MODAL' ;
@@ -115,10 +116,13 @@ const findSortingIndex = (sortingOption, columns) =>
115116 R . findIndex ( R . propEq ( 'label' , sortingOption . label ) ) ( columns ) ;
116117
117118const getDataTableData = ( { columns, data, sortingOption } ) => {
118- if ( ! sortingOption ) return data ;
119+ const dataWithSelectedProp = defaultToEmptyArray ( data ) . map ( ( row , index ) => {
120+ return { id : index , row, selected : false } ;
121+ } ) ;
122+ if ( ! sortingOption ) return dataWithSelectedProp ;
119123
120124 const sortingIndex = findSortingIndex ( sortingOption , columns ) ;
121- return sortData ( sortingIndex , sortingOption . order , data ) ;
125+ return sortData ( sortingIndex , sortingOption . order , dataWithSelectedProp ) ;
122126} ;
123127
124128const INITIALIZE_DATA_TABLE = '@cjdev/visual-stack-redux/INITIALIZE_DATA_TABLE' ;
@@ -133,6 +137,9 @@ export const setDataTableSortingOption = createAction(
133137 SET_DATA_TABLE_SORTING_OPTION
134138) ;
135139
140+ const SET_DATA_TABLE_ROWS = '@cjdev/visual-stack-redux/SET_DATA_TABLE_ROWS' ;
141+ export const setDataTableRows = createAction ( SET_DATA_TABLE_ROWS ) ;
142+
136143export const selectDataTable = id => state => {
137144 const dataTable = R . view ( R . lensPath ( [ 'visualStack' , 'dataTable' , id ] ) ) ( state ) ;
138145 const defaultTable = { data : [ ] , pagination : { } } ;
@@ -211,7 +218,6 @@ export default handleActions(
211218 R . set ( R . lensPath ( [ 'slidingPanel' , filterLabel , 'expanded' ] ) , true , state ) ,
212219 [ SET_SLIDING_PANEL_ACTIVE_STATE ] : ( state , { payload : newActiveState } ) =>
213220 R . set ( R . lensPath ( [ 'slidingPanel' , 'active' ] ) , newActiveState , state ) ,
214-
215221 [ SELECT_TAB ] : ( state , { payload : { tabLayoutId, index } } ) => {
216222 return R . set (
217223 R . lensPath ( [ 'tabLayout' , tabLayoutId , 'index' ] ) ,
@@ -264,8 +270,8 @@ export default handleActions(
264270 ) ,
265271 [ RESET_CALENDAR_SELECTION ] : ( state , { payload : { datePickerId } } ) =>
266272 R . set ( R . lensPath ( [ 'datePicker' , datePickerId ] ) , { } , state ) ,
267- [ INITIALIZE_DATA_TABLE ] : ( state , { payload } ) =>
268- R . set (
273+ [ INITIALIZE_DATA_TABLE ] : ( state , { payload } ) => {
274+ return R . set (
269275 R . lensPath ( [ 'dataTable' , payload . id ] ) ,
270276 {
271277 data : getDataTableData ( payload ) ,
@@ -279,24 +285,22 @@ export default handleActions(
279285 ) ( payload ) ,
280286 } ,
281287 state
282- ) ,
288+ ) ;
289+ } ,
283290 [ SET_DATA_TABLE_PAGE ] : ( state , { payload : { id, pagination } } ) =>
284291 R . set ( R . lensPath ( [ 'dataTable' , id , 'pagination' ] ) , pagination , state ) ,
285292 [ SET_DATA_TABLE_SORTING_OPTION ] : (
286293 state ,
287- { payload : { id, data , sortingOption } }
294+ { payload : { id, sortingOption } }
288295 ) => {
289- const stateWithSortingOption = R . set (
296+ return R . set (
290297 R . lensPath ( [ 'dataTable' , id , 'sortingOption' ] ) ,
291298 sortingOption ,
292299 state
293300 ) ;
294-
295- return R . set (
296- R . lensPath ( [ 'dataTable' , id , 'data' ] ) ,
297- data ,
298- stateWithSortingOption
299- ) ;
301+ } ,
302+ [ SET_DATA_TABLE_ROWS ] : ( state , { payload : { id, data } } ) => {
303+ return R . set ( R . lensPath ( [ 'dataTable' , id , 'data' ] ) , data , state ) ;
300304 } ,
301305 } ,
302306 {
@@ -309,5 +313,6 @@ export default handleActions(
309313 tabLayout : { } ,
310314 pagination : { } ,
311315 datePicker : { } ,
316+ dataTable : { } ,
312317 }
313318) ;
0 commit comments