@adaptabletools/adaptable-cjs
Version:
Powerful data-agnostic HTML5 AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements
45 lines (44 loc) • 1.62 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.only = void 0;
function createOnlyResult(distinctValues) {
const value = distinctValues.size === 1 ? distinctValues.values().next().value : null;
return {
distinctValues,
value,
toString() {
return value != null ? String(value) : '';
},
};
}
/**
* AG Grid aggFunc that returns the column value only when all rows in the group
* share the same value. Returns null when values differ (or when there are no values).
*
* params.values already respects suppressAggFilteredOnly, containing either:
* - Raw cell values (string | number) for leaf children
* - OnlyAggResult objects for sub-group children (with pre-computed distinct values)
*
* Bails out early as soon as two distinct values are found.
*/
const only = (params) => {
const { values } = params;
const distinctValues = new Set();
for (let i = 0; i < values.length; i++) {
const value = values[i];
if (typeof value === 'number' || typeof value === 'string') {
distinctValues.add(value);
}
else if (value != null && typeof value === 'object' && 'distinctValues' in value) {
// sub-group: merge pre-computed distinct values (set has at most 2 elements)
for (const v of value.distinctValues) {
distinctValues.add(v);
}
}
if (distinctValues.size > 1) {
return createOnlyResult(distinctValues);
}
}
return createOnlyResult(distinctValues);
};
exports.only = only;