MCPcopy Create free account
hub / github.com/plotly/plotly.js / getInterval

Function getInterval

src/traces/parcoords/axisbrush.js:132–200  ·  view source on GitHub ↗
(d, y)

Source from the content-addressed store, hash-verified

130}
131
132function getInterval(d, y) {
133 var b = d.brush;
134 var active = b.filterSpecified;
135 var closestInterval = NaN;
136 var out = {};
137 var i;
138
139 if(active) {
140 var height = d.height;
141 var intervals = b.filter.getConsolidated();
142 var pixIntervals = unitToPx(intervals, height);
143 var hoveredInterval = NaN;
144 var previousInterval = NaN;
145 var nextInterval = NaN;
146 for(i = 0; i <= pixIntervals.length; i++) {
147 var p = pixIntervals[i];
148 if(p && p[0] <= y && y <= p[1]) {
149 // over a bar
150 hoveredInterval = i;
151 break;
152 } else {
153 // between bars, or before/after the first/last bar
154 previousInterval = i ? i - 1 : NaN;
155 if(p && p[0] > y) {
156 nextInterval = i;
157 break; // no point continuing as intervals are non-overlapping and sorted; could use log search
158 }
159 }
160 }
161
162 closestInterval = hoveredInterval;
163 if(isNaN(closestInterval)) {
164 if(isNaN(previousInterval) || isNaN(nextInterval)) {
165 closestInterval = isNaN(previousInterval) ? nextInterval : previousInterval;
166 } else {
167 closestInterval = (y - pixIntervals[previousInterval][1] < pixIntervals[nextInterval][0] - y) ?
168 previousInterval : nextInterval;
169 }
170 }
171
172 if(!isNaN(closestInterval)) {
173 var fPix = pixIntervals[closestInterval];
174 var region = getRegion(fPix, y);
175
176 if(region) {
177 out.interval = intervals[closestInterval];
178 out.intervalPix = fPix;
179 out.region = region;
180 }
181 }
182 }
183
184 if(d.ordinal && !out.region) {
185 var a = d.unitTickvals;
186 var unitLocation = d.unitToPaddedPx.invert(y);
187 for(i = 0; i < a.length; i++) {
188 var rangei = [
189 a[Math.max(i - 1, 0)] * 0.25 + a[i] * 0.75,

Callers 2

dragstartFunction · 0.85
mousemoveFunction · 0.85

Calls 2

unitToPxFunction · 0.85
getRegionFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…