@almaobservatory/ngx-datatable
Version:
ngx-datatable is an Angular table grid component for presenting large and complex data.
40 lines • 4.74 kB
JavaScript
export function selectRows(selected, row, comparefn) {
const selectedIndex = comparefn(row, selected);
if (selectedIndex > -1) {
selected.splice(selectedIndex, 1);
}
else {
selected.push(row);
}
return selected;
}
export function selectRowsBetween(selected, rows, index, prevIndex, comparefn) {
const reverse = index < prevIndex;
for (let i = 0; i < rows.length; 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
};
}
else {
range = {
start: prevIndex,
end: index + 1
};
}
if ((reverse && lesser) || (!reverse && greater)) {
// 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) {
selected.push(row);
}
}
}
return selected;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3dpbWxhbmUvbmd4LWRhdGF0YWJsZS9zcmMvbGliL3V0aWxzL3NlbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFVBQVUsVUFBVSxDQUFDLFFBQWUsRUFBRSxHQUFRLEVBQUUsU0FBYztJQUNsRSxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBRS9DLElBQUksYUFBYSxHQUFHLENBQUMsQ0FBQyxFQUFFO1FBQ3RCLFFBQVEsQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDO0tBQ25DO1NBQU07UUFDTCxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ3BCO0lBRUQsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FDL0IsUUFBZSxFQUNmLElBQVcsRUFDWCxLQUFhLEVBQ2IsU0FBaUIsRUFDakIsU0FBYztJQUVkLE1BQU0sT0FBTyxHQUFHLEtBQUssR0FBRyxTQUFTLENBQUM7SUFFbEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDcEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLE1BQU0sT0FBTyxHQUFHLENBQUMsSUFBSSxTQUFTLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQztRQUM3QyxNQUFNLE1BQU0sR0FBRyxDQUFDLElBQUksU0FBUyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUM7UUFFNUMsSUFBSSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNqQyxJQUFJLE9BQU8sRUFBRTtZQUNYLEtBQUssR0FBRztnQkFDTixLQUFLLEVBQUUsS0FBSztnQkFDWixHQUFHLEVBQUUsU0FBUzthQUNmLENBQUM7U0FDSDthQUFNO1lBQ0wsS0FBSyxHQUFHO2dCQUNOLEtBQUssRUFBRSxTQUFTO2dCQUNoQixHQUFHLEVBQUUsS0FBSyxHQUFHLENBQUM7YUFDZixDQUFDO1NBQ0g7UUFFRCxJQUFJLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLEVBQUU7WUFDaEQsMERBQTBEO1lBQzFELDRDQUE0QztZQUM1QyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsR0FBRyxFQUFFO2dCQUN0QyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3BCO1NBQ0Y7S0FDRjtJQUVELE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gc2VsZWN0Um93cyhzZWxlY3RlZDogYW55W10sIHJvdzogYW55LCBjb21wYXJlZm46IGFueSkge1xyXG4gIGNvbnN0IHNlbGVjdGVkSW5kZXggPSBjb21wYXJlZm4ocm93LCBzZWxlY3RlZCk7XHJcblxyXG4gIGlmIChzZWxlY3RlZEluZGV4ID4gLTEpIHtcclxuICAgIHNlbGVjdGVkLnNwbGljZShzZWxlY3RlZEluZGV4LCAxKTtcclxuICB9IGVsc2Uge1xyXG4gICAgc2VsZWN0ZWQucHVzaChyb3cpO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHNlbGVjdGVkO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc2VsZWN0Um93c0JldHdlZW4oXHJcbiAgc2VsZWN0ZWQ6IGFueVtdLFxyXG4gIHJvd3M6IGFueVtdLFxyXG4gIGluZGV4OiBudW1iZXIsXHJcbiAgcHJldkluZGV4OiBudW1iZXIsXHJcbiAgY29tcGFyZWZuOiBhbnlcclxuKTogYW55W10ge1xyXG4gIGNvbnN0IHJldmVyc2UgPSBpbmRleCA8IHByZXZJbmRleDtcclxuXHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBjb25zdCByb3cgPSByb3dzW2ldO1xyXG4gICAgY29uc3QgZ3JlYXRlciA9IGkgPj0gcHJldkluZGV4ICYmIGkgPD0gaW5kZXg7XHJcbiAgICBjb25zdCBsZXNzZXIgPSBpIDw9IHByZXZJbmRleCAmJiBpID49IGluZGV4O1xyXG5cclxuICAgIGxldCByYW5nZSA9IHsgc3RhcnQ6IDAsIGVuZDogMCB9O1xyXG4gICAgaWYgKHJldmVyc2UpIHtcclxuICAgICAgcmFuZ2UgPSB7XHJcbiAgICAgICAgc3RhcnQ6IGluZGV4LFxyXG4gICAgICAgIGVuZDogcHJldkluZGV4XHJcbiAgICAgIH07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByYW5nZSA9IHtcclxuICAgICAgICBzdGFydDogcHJldkluZGV4LFxyXG4gICAgICAgIGVuZDogaW5kZXggKyAxXHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKChyZXZlcnNlICYmIGxlc3NlcikgfHwgKCFyZXZlcnNlICYmIGdyZWF0ZXIpKSB7XHJcbiAgICAgIC8vIGlmIGluIHRoZSBwb3NpdGl2ZSByYW5nZSB0byBiZSBhZGRlZCB0byBgc2VsZWN0ZWRgLCBhbmRcclxuICAgICAgLy8gbm90IGFscmVhZHkgaW4gdGhlIHNlbGVjdGVkIGFycmF5LCBhZGQgaXRcclxuICAgICAgaWYgKGkgPj0gcmFuZ2Uuc3RhcnQgJiYgaSA8PSByYW5nZS5lbmQpIHtcclxuICAgICAgICBzZWxlY3RlZC5wdXNoKHJvdyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldHVybiBzZWxlY3RlZDtcclxufVxyXG4iXX0=