UNPKG

angular2-data-table

Version:

angular2-data-table is a Angular2 component for presenting large and complex data.

56 lines (46 loc) 1.4 kB
export function selectRows(selected: any[], row: any, comparefn: Function) { const selectedIndex = comparefn(row, selected); if(selectedIndex > -1) { selected.splice(selectedIndex, 1); } else { selected.push(row); } return selected; } export function selectRowsBetween(selected: any[], rows: any[], index: number, prevIndex: number, comparefn: Function) { const reverse = index < prevIndex; for(let i = 0, len = rows.length; i < len; i++) { const row = rows[i]; const greater = i >= prevIndex && i <= index; const lesser = i <= prevIndex && i >= index; let range = { start: 0, end: 0 }; if (reverse) { range = { start: index, end: (prevIndex - index) }; } else { range = { start: prevIndex, end: index + 1 }; } if((reverse && lesser) || (!reverse && greater)) { const idx = comparefn(row, selected); // if reverse shift selection (unselect) and the // row is already selected, remove it from selected if (reverse && idx > -1) { selected.splice(idx, 1); continue; } // if in the positive range to be added to `selected`, and // not already in the selected array, add it if( i >= range.start && i < range.end) { if (idx === -1) { selected.push(row); } } } } return selected; }