@mui/x-charts
Version:
The community edition of MUI X Charts components.
52 lines (51 loc) • 2.07 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.createContinuousScaleGetAxisFilter = createContinuousScaleGetAxisFilter;
exports.createDiscreteScaleGetAxisFilter = createDiscreteScaleGetAxisFilter;
exports.createGetAxisFilters = void 0;
var _isDefined = require("../../../isDefined");
function createDiscreteScaleGetAxisFilter(axisData, zoomStart, zoomEnd, direction) {
const maxIndex = axisData?.length ?? 0;
const minVal = Math.floor(zoomStart * maxIndex / 100);
const maxVal = Math.ceil(zoomEnd * maxIndex / 100);
return function filterAxis(value, dataIndex) {
const val = value[direction] ?? axisData?.[dataIndex];
if (val == null) {
// If the value does not exist because of missing data point, or out of range index, we just ignore.
return true;
}
return dataIndex >= minVal && dataIndex < maxVal;
};
}
function createContinuousScaleGetAxisFilter(domain, zoomStart, zoomEnd, direction, axisData) {
const min = domain[0].valueOf();
const max = domain[1].valueOf();
const minVal = min + zoomStart * (max - min) / 100;
const maxVal = min + zoomEnd * (max - min) / 100;
return function filterAxis(value, dataIndex) {
const val = value[direction] ?? axisData?.[dataIndex];
if (val == null) {
// If the value does not exist because of missing data point, or out of range index, we just ignore.
return true;
}
return val >= minVal && val <= maxVal;
};
}
const createGetAxisFilters = filters => ({
currentAxisId,
seriesXAxisId,
seriesYAxisId,
isDefaultAxis
}) => {
return (value, dataIndex) => {
const axisId = currentAxisId === seriesXAxisId ? seriesYAxisId : seriesXAxisId;
if (!axisId || isDefaultAxis) {
return Object.values(filters ?? {})[0]?.(value, dataIndex) ?? true;
}
const data = [seriesYAxisId, seriesXAxisId].filter(id => id !== currentAxisId).map(id => filters[id ?? '']).filter(_isDefined.isDefined);
return data.every(f => f(value, dataIndex));
};
};
exports.createGetAxisFilters = createGetAxisFilters;