MCPcopy Index your code
hub / github.com/leeoniya/uPlot / _rangeNum

Function _rangeNum

src/utils.js:202–267  ·  view source on GitHub ↗
(_min, _max, cfg)

Source from the content-addressed store, hash-verified

200}
201
202function _rangeNum(_min, _max, cfg) {
203 let cmin = cfg.min;
204 let cmax = cfg.max;
205
206 let padMin = ifNull(cmin.pad, 0);
207 let padMax = ifNull(cmax.pad, 0);
208
209 let hardMin = ifNull(cmin.hard, -inf);
210 let hardMax = ifNull(cmax.hard, inf);
211
212 let softMin = ifNull(cmin.soft, inf);
213 let softMax = ifNull(cmax.soft, -inf);
214
215 let softMinMode = ifNull(cmin.mode, 0);
216 let softMaxMode = ifNull(cmax.mode, 0);
217
218 let delta = _max - _min;
219 let deltaMag = log10(delta);
220
221 let scalarMax = max(abs(_min), abs(_max));
222 let scalarMag = log10(scalarMax);
223
224 let scalarMagDelta = abs(scalarMag - deltaMag);
225
226 // this handles situations like 89.7, 89.69999999999999
227 // by assuming 0.001x deltas are precision errors
228// if (delta > 0 && delta < abs(_max) / 1e3)
229// delta = 0;
230
231 // treat data as flat if delta is less than 1e-24
232 // or range is 11+ orders of magnitude below raw values, e.g. 99999999.99999996 - 100000000.00000004
233 if (delta < 1e-24 || scalarMagDelta > 10) {
234 delta = 0;
235
236 // if soft mode is 2 and all vals are flat at 0, avoid the 0.1 * 1e3 fallback
237 // this prevents 0,0,0 from ranging to -100,100 when softMin/softMax are -1,1
238 if (_min == 0 || _max == 0) {
239 delta = 1e-24;
240
241 if (softMinMode == 2 && softMin != inf)
242 padMin = 0;
243
244 if (softMaxMode == 2 && softMax != -inf)
245 padMax = 0;
246 }
247 }
248
249 let nonZeroDelta = delta || scalarMax || 1e3;
250 let mag = log10(nonZeroDelta);
251 let base = pow(10, floor(mag));
252
253 let _padMin = nonZeroDelta * (delta == 0 ? (_min == 0 ? .1 : 1) : padMin);
254 let _newMin = roundDec(incrRoundDn(_min - _padMin, base/10), 24);
255 let _softMin = _min >= softMin && (softMinMode == 1 || softMinMode == 3 && _newMin <= softMin || softMinMode == 2 && _newMin >= softMin) ? softMin : inf;
256 let minLim = max(hardMin, _newMin < _softMin && _min >= _softMin ? _softMin : min(_softMin, _newMin));
257
258 let _padMax = nonZeroDelta * (delta == 0 ? (_max == 0 ? .1 : 1) : padMax);
259 let _newMax = roundDec(incrRoundUp(_max + _padMax, base/10), 24);

Callers 1

rangeNumFunction · 0.85

Calls 4

ifNullFunction · 0.85
incrRoundDnFunction · 0.85
incrRoundUpFunction · 0.85
roundDecFunction · 0.70

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…