MCPcopy
hub / github.com/microsoft/SandDance / axisSelectionPolygons

Function axisSelectionPolygons

docs/tests/v2/es6/js/sanddance.js:148988–149031  ·  view source on GitHub ↗
(axis, vertical, axisSelectionType, column)

Source from the content-addressed store, hash-verified

148986}
148987
148988function axisSelectionPolygons(axis, vertical, axisSelectionType, column) {
148989 const polygons = [];
148990 const size = 50;
148991 const getSearch = axisSelectionType === 'exact' ? (a, c, i) => ({
148992 expressions: [(0, _expression.selectExactAxis)(a, c, i)]
148993 }) : _expression.selectBetweenAxis;
148994 const {
148995 domain,
148996 ticks
148997 } = axis;
148998
148999 if (ticks.length > 0 && domain) {
149000 const dim = vertical ? 1 : 0;
149001 const between = Math.abs(ticks[0].sourcePosition[dim] - domain.sourcePosition[dim]) > 1;
149002 let divisions;
149003
149004 if (between) {
149005 divisions = [];
149006
149007 for (let i = 1; i < ticks.length; i++) {
149008 divisions.push((ticks[i].sourcePosition[dim] + ticks[i - 1].sourcePosition[dim]) / 2);
149009 }
149010 } else {
149011 divisions = ticks.slice(1, -1).map(tick => tick.sourcePosition[dim]);
149012 }
149013
149014 const add = (p2, i) => {
149015 var coords = [[p1, q1], [p2, q1], [p2, q2], [p1, q2]];
149016 polygons.push({
149017 search: getSearch(axis, column, i),
149018 polygon: vertical ? coords.map(xy => xy.reverse()) : coords
149019 });
149020 p1 = p2;
149021 };
149022
149023 let p1 = domain.sourcePosition[dim];
149024 const q1 = domain.sourcePosition[vertical ? 0 : 1];
149025 const q2 = q1 - size;
149026 divisions.forEach(add);
149027 add(domain.targetPosition[dim], ticks.length - (between ? 1 : 2));
149028 }
149029
149030 return polygons;
149031}
149032
149033function facetSelectionPolygons(facetRects, facetColumn) {
149034 const polygons = [];

Callers 1

axisSelectionLayerFunction · 0.70

Calls 2

addFunction · 0.70
forEachMethod · 0.45

Tested by

no test coverage detected