UNPKG

lemon-ngx-trend

Version:

ngx-trend Angular component for Lemoncloud

29 lines 5.25 kB
import * as tslib_1 from "tslib"; import { normalize } from '../helpers/math.helpers'; export function normalizeDataset(data, minX, maxX, minY, maxY, minValue, maxValue) { // For the X axis, we want to normalize it based on its index in the array. // For the Y axis, we want to normalize it based on the element's value. // // X axis is easy: just evenly-space each item in the array. // For the Y axis, we first need to find the min and max of our array, // and then normalize those values between 0 and 1. var boundariesX = { min: 0, max: data.length - 1 }; var boundariesY = { min: minValue || Math.min.apply(Math, tslib_1.__spread(data)), max: maxValue || Math.max.apply(Math, tslib_1.__spread(data)) }; var normalizedData = data.map(function (point, index) { return ({ x: normalize(index, boundariesX.min, boundariesX.max, minX, maxX), y: normalize(point, boundariesY.min, boundariesY.max, minY, maxY), }); }); // According to the SVG spec, paths with a height/width of `0` can't have // linear gradients applied. This means that our lines are invisible when // the dataset is flat (eg. [0, 0, 0, 0]). // // The hacky solution is to apply a very slight offset to the first point of // the dataset. As ugly as it is, it's the best solution we can find (there // are ways within the SVG spec of changing it, but not without causing // breaking changes). if (boundariesY.min === boundariesY.max) { normalizedData[0].y += 0.0001; } return normalizedData; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlbmQuaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2xlbW9uLW5neC10cmVuZC8iLCJzb3VyY2VzIjpbInRyZW5kL3RyZW5kLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVwRCxNQUFNLFVBQVUsZ0JBQWdCLENBQzlCLElBQWMsRUFDZCxJQUFZLEVBQ1osSUFBWSxFQUNaLElBQVksRUFDWixJQUFZLEVBQ1osUUFBNEIsRUFDNUIsUUFBNEI7SUFFNUIsMkVBQTJFO0lBQzNFLHdFQUF3RTtJQUN4RSxFQUFFO0lBQ0YsNERBQTREO0lBQzVELHNFQUFzRTtJQUN0RSxtREFBbUQ7SUFDbkQsSUFBTSxXQUFXLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ3JELElBQU0sV0FBVyxHQUFHLEVBQUUsR0FBRyxFQUFFLFFBQVEsSUFBSSxJQUFJLENBQUMsR0FBRyxPQUFSLElBQUksbUJBQVEsSUFBSSxFQUFDLEVBQUUsR0FBRyxFQUFFLFFBQVEsSUFBSSxJQUFJLENBQUMsR0FBRyxPQUFSLElBQUksbUJBQVEsSUFBSSxFQUFDLEVBQUUsQ0FBQztJQUUvRixJQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQUMsS0FBSyxFQUFFLEtBQUssSUFBSyxPQUFBLENBQUM7UUFDakQsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7UUFDakUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7S0FDbEUsQ0FBQyxFQUhnRCxDQUdoRCxDQUFDLENBQUM7SUFFSix5RUFBeUU7SUFDekUseUVBQXlFO0lBQ3pFLDBDQUEwQztJQUMxQyxFQUFFO0lBQ0YsNEVBQTRFO0lBQzVFLDJFQUEyRTtJQUMzRSx1RUFBdUU7SUFDdkUscUJBQXFCO0lBQ3JCLElBQUksV0FBVyxDQUFDLEdBQUcsS0FBSyxXQUFXLENBQUMsR0FBRyxFQUFFO1FBQ3ZDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDO0tBQy9CO0lBRUQsT0FBTyxjQUFjLENBQUM7QUFDeEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gJy4uL2hlbHBlcnMvbWF0aC5oZWxwZXJzJztcblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZURhdGFzZXQoXG4gIGRhdGE6IG51bWJlcltdLFxuICBtaW5YOiBudW1iZXIsXG4gIG1heFg6IG51bWJlcixcbiAgbWluWTogbnVtYmVyLFxuICBtYXhZOiBudW1iZXIsXG4gIG1pblZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQsXG4gIG1heFZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQsXG4pIHtcbiAgLy8gRm9yIHRoZSBYIGF4aXMsIHdlIHdhbnQgdG8gbm9ybWFsaXplIGl0IGJhc2VkIG9uIGl0cyBpbmRleCBpbiB0aGUgYXJyYXkuXG4gIC8vIEZvciB0aGUgWSBheGlzLCB3ZSB3YW50IHRvIG5vcm1hbGl6ZSBpdCBiYXNlZCBvbiB0aGUgZWxlbWVudCdzIHZhbHVlLlxuICAvL1xuICAvLyBYIGF4aXMgaXMgZWFzeToganVzdCBldmVubHktc3BhY2UgZWFjaCBpdGVtIGluIHRoZSBhcnJheS5cbiAgLy8gRm9yIHRoZSBZIGF4aXMsIHdlIGZpcnN0IG5lZWQgdG8gZmluZCB0aGUgbWluIGFuZCBtYXggb2Ygb3VyIGFycmF5LFxuICAvLyBhbmQgdGhlbiBub3JtYWxpemUgdGhvc2UgdmFsdWVzIGJldHdlZW4gMCBhbmQgMS5cbiAgY29uc3QgYm91bmRhcmllc1ggPSB7IG1pbjogMCwgbWF4OiBkYXRhLmxlbmd0aCAtIDEgfTtcbiAgY29uc3QgYm91bmRhcmllc1kgPSB7IG1pbjogbWluVmFsdWUgfHwgTWF0aC5taW4oLi4uZGF0YSksIG1heDogbWF4VmFsdWUgfHwgTWF0aC5tYXgoLi4uZGF0YSkgfTtcblxuICBjb25zdCBub3JtYWxpemVkRGF0YSA9IGRhdGEubWFwKChwb2ludCwgaW5kZXgpID0+ICh7XG4gICAgeDogbm9ybWFsaXplKGluZGV4LCBib3VuZGFyaWVzWC5taW4sIGJvdW5kYXJpZXNYLm1heCwgbWluWCwgbWF4WCksXG4gICAgeTogbm9ybWFsaXplKHBvaW50LCBib3VuZGFyaWVzWS5taW4sIGJvdW5kYXJpZXNZLm1heCwgbWluWSwgbWF4WSksXG4gIH0pKTtcblxuICAvLyBBY2NvcmRpbmcgdG8gdGhlIFNWRyBzcGVjLCBwYXRocyB3aXRoIGEgaGVpZ2h0L3dpZHRoIG9mIGAwYCBjYW4ndCBoYXZlXG4gIC8vIGxpbmVhciBncmFkaWVudHMgYXBwbGllZC4gVGhpcyBtZWFucyB0aGF0IG91ciBsaW5lcyBhcmUgaW52aXNpYmxlIHdoZW5cbiAgLy8gdGhlIGRhdGFzZXQgaXMgZmxhdCAoZWcuIFswLCAwLCAwLCAwXSkuXG4gIC8vXG4gIC8vIFRoZSBoYWNreSBzb2x1dGlvbiBpcyB0byBhcHBseSBhIHZlcnkgc2xpZ2h0IG9mZnNldCB0byB0aGUgZmlyc3QgcG9pbnQgb2ZcbiAgLy8gdGhlIGRhdGFzZXQuIEFzIHVnbHkgYXMgaXQgaXMsIGl0J3MgdGhlIGJlc3Qgc29sdXRpb24gd2UgY2FuIGZpbmQgKHRoZXJlXG4gIC8vIGFyZSB3YXlzIHdpdGhpbiB0aGUgU1ZHIHNwZWMgb2YgY2hhbmdpbmcgaXQsIGJ1dCBub3Qgd2l0aG91dCBjYXVzaW5nXG4gIC8vIGJyZWFraW5nIGNoYW5nZXMpLlxuICBpZiAoYm91bmRhcmllc1kubWluID09PSBib3VuZGFyaWVzWS5tYXgpIHtcbiAgICBub3JtYWxpemVkRGF0YVswXS55ICs9IDAuMDAwMTtcbiAgfVxuXG4gIHJldHVybiBub3JtYWxpemVkRGF0YTtcbn1cbiJdfQ==