MCPcopy Create free account
hub / github.com/microsoft/SandDance / axisSelectionPolygons

Function axisSelectionPolygons

docs/app/js/sanddance-app.js:10158–10207  ·  view source on GitHub ↗
(axis, vertical, axisSelectionType, column)

Source from the content-addressed store, hash-verified

10156 return polygonLayer;
10157}
10158function axisSelectionPolygons(axis, vertical, axisSelectionType, column) {
10159 const polygons = [];
10160 const size = 50;
10161 const getSearch = axisSelectionType === "exact" ? (a, c, i)=>({
10162 expressions: [
10163 (0, _expression.selectExactAxis)(a, c, i)
10164 ]
10165 }) : (0, _expression.selectBetweenAxis);
10166 const { domain , ticks } = axis;
10167 if (ticks.length > 0 && domain) {
10168 const dim = vertical ? 1 : 0;
10169 const between = Math.abs(ticks[0].sourcePosition[dim] - domain.sourcePosition[dim]) > 1;
10170 let divisions;
10171 if (between) {
10172 divisions = [];
10173 for(let i = 1; i < ticks.length; i++)divisions.push((ticks[i].sourcePosition[dim] + ticks[i - 1].sourcePosition[dim]) / 2);
10174 } else divisions = ticks.slice(1, -1).map((tick)=>tick.sourcePosition[dim]);
10175 const add = (p2, i)=>{
10176 const coords = [
10177 [
10178 p1,
10179 q1
10180 ],
10181 [
10182 p2,
10183 q1
10184 ],
10185 [
10186 p2,
10187 q2
10188 ],
10189 [
10190 p1,
10191 q2
10192 ]
10193 ];
10194 polygons.push({
10195 search: getSearch(axis, column, i),
10196 polygon: vertical ? coords.map((xy)=>xy.reverse()) : coords
10197 });
10198 p1 = p2;
10199 };
10200 let p1 = domain.sourcePosition[dim];
10201 const q1 = domain.sourcePosition[vertical ? 0 : 1];
10202 const q2 = q1 - size;
10203 divisions.forEach(add);
10204 add(domain.targetPosition[dim], ticks.length - (between ? 1 : 2));
10205 }
10206 return polygons;
10207}
10208function facetSelectionPolygons(facetRects) {
10209 const polygons = [];
10210 const linesAndSearches = facetRects.map(({ datum , lines }, i)=>{

Callers 1

axisSelectionLayerFunction · 0.70

Calls 2

addFunction · 0.70
forEachMethod · 0.45

Tested by

no test coverage detected