UNPKG

lemon-ngx-trend

Version:

ngx-trend Angular component for Lemoncloud

77 lines 9.49 kB
/* eslint-disable no-restricted-properties */ /** normalize * This lets us translate a value from one scale to another. * * @param value - Our initial value to translate * @param min - the current minimum value possible * @param max - the current maximum value possible * @param scaleMin - the min value of the scale we're translating to * @param scaleMax - the max value of the scale we're translating to * * @returns the value on its new scale */ export function normalize(value, min, max, scaleMin, scaleMax) { if (scaleMin === void 0) { scaleMin = 0; } if (scaleMax === void 0) { scaleMax = 1; } // If the `min` and `max` are the same value, it means our dataset is flat. // For now, let's assume that flat data should be aligned to the bottom. if (min === max) { return scaleMin; } return scaleMin + (value - min) * (scaleMax - scaleMin) / (max - min); } /** moveTo * the coordinate that lies at a midpoint between 2 lines, based on the radius * * @param to - Our initial point * @param to.x - The x value of our initial point * @param to.y - The y value of our initial point * @param from - Our final point * @param from.x - The x value of our final point * @param from.y - The y value of our final point * @param radius - The distance away from the final point * * @returns an object holding the x/y coordinates of the midpoint. */ export function moveTo(to, from, radius) { var length = Math.sqrt((to.x - from.x) * (to.x - from.x) + (to.y - from.y) * (to.y - from.y)); var unitVector = { x: (to.x - from.x) / length, y: (to.y - from.y) / length }; return { x: from.x + unitVector.x * radius, y: from.y + unitVector.y * radius, }; } /** getDistanceBetween * Simple formula derived from pythagoras to calculate the distance between * 2 points on a plane. * * @param p1 - Our initial point * @param p1.x - The x value of our initial point * @param p1.y - The y value of our initial point * @param p2 - Our final point * @param p2.x - The x value of our final point * @param p2.y - The y value of our final point * * @returns the distance between the points. */ export var getDistanceBetween = function (p1, p2) { return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2)); }; /** checkForCollinearPoints * Figure out if the midpoint fits perfectly on a line between the two others. * * @param p1 - Our initial point * @param p1.x - The x value of our initial point * @param p1.y - The y value of our initial point * @param p2 - Our mid-point * @param p2.x - The x value of our mid-point * @param p2.y - The y value of our mid-point * @param p3 - Our final point * @param p3.x - The x value of our final point * @param p3.y - The y value of our final point * @returns whether or not p2 sits on the line between p1 and p3. */ export var checkForCollinearPoints = function (p1, p2, p3) { return (p1.y - p2.y) * (p1.x - p3.x) === (p1.y - p3.y) * (p1.x - p2.x); }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0aC5oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbGVtb24tbmd4LXRyZW5kLyIsInNvdXJjZXMiOlsiaGVscGVycy9tYXRoLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkNBQTZDO0FBRTdDOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUN2QixLQUFhLEVBQ2IsR0FBVyxFQUNYLEdBQVcsRUFDWCxRQUFZLEVBQ1osUUFBWTtJQURaLHlCQUFBLEVBQUEsWUFBWTtJQUNaLHlCQUFBLEVBQUEsWUFBWTtJQUVaLDJFQUEyRTtJQUMzRSx3RUFBd0U7SUFDeEUsSUFBSSxHQUFHLEtBQUssR0FBRyxFQUFFO1FBQ2YsT0FBTyxRQUFRLENBQUM7S0FDakI7SUFFRCxPQUFPLFFBQVEsR0FBRyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztBQUN4RSxDQUFDO0FBT0Q7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxVQUFVLE1BQU0sQ0FBQyxFQUFTLEVBQUUsSUFBVyxFQUFFLE1BQWM7SUFDM0QsSUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEcsSUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUM7SUFFaEYsT0FBTztRQUNMLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLEdBQUcsTUFBTTtRQUNqQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxHQUFHLE1BQU07S0FDbEMsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFNLENBQUMsSUFBTSxrQkFBa0IsR0FBRyxVQUFDLEVBQVMsRUFBRSxFQUFTO0lBQ3JELE9BQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUE5RCxDQUE4RCxDQUFDO0FBRWpFOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLENBQUMsSUFBTSx1QkFBdUIsR0FBRyxVQUFDLEVBQVMsRUFBRSxFQUFTLEVBQUUsRUFBUztJQUNyRSxPQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQS9ELENBQStELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1yZXN0cmljdGVkLXByb3BlcnRpZXMgKi9cblxuLyoqIG5vcm1hbGl6ZVxuICogVGhpcyBsZXRzIHVzIHRyYW5zbGF0ZSBhIHZhbHVlIGZyb20gb25lIHNjYWxlIHRvIGFub3RoZXIuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gT3VyIGluaXRpYWwgdmFsdWUgdG8gdHJhbnNsYXRlXG4gKiBAcGFyYW0gbWluIC0gdGhlIGN1cnJlbnQgbWluaW11bSB2YWx1ZSBwb3NzaWJsZVxuICogQHBhcmFtIG1heCAtIHRoZSBjdXJyZW50IG1heGltdW0gdmFsdWUgcG9zc2libGVcbiAqIEBwYXJhbSBzY2FsZU1pbiAtIHRoZSBtaW4gdmFsdWUgb2YgdGhlIHNjYWxlIHdlJ3JlIHRyYW5zbGF0aW5nIHRvXG4gKiBAcGFyYW0gc2NhbGVNYXggLSB0aGUgbWF4IHZhbHVlIG9mIHRoZSBzY2FsZSB3ZSdyZSB0cmFuc2xhdGluZyB0b1xuICpcbiAqIEByZXR1cm5zIHRoZSB2YWx1ZSBvbiBpdHMgbmV3IHNjYWxlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemUoXG4gIHZhbHVlOiBudW1iZXIsXG4gIG1pbjogbnVtYmVyLFxuICBtYXg6IG51bWJlcixcbiAgc2NhbGVNaW4gPSAwLFxuICBzY2FsZU1heCA9IDEsXG4pIHtcbiAgLy8gSWYgdGhlIGBtaW5gIGFuZCBgbWF4YCBhcmUgdGhlIHNhbWUgdmFsdWUsIGl0IG1lYW5zIG91ciBkYXRhc2V0IGlzIGZsYXQuXG4gIC8vIEZvciBub3csIGxldCdzIGFzc3VtZSB0aGF0IGZsYXQgZGF0YSBzaG91bGQgYmUgYWxpZ25lZCB0byB0aGUgYm90dG9tLlxuICBpZiAobWluID09PSBtYXgpIHtcbiAgICByZXR1cm4gc2NhbGVNaW47XG4gIH1cblxuICByZXR1cm4gc2NhbGVNaW4gKyAodmFsdWUgLSBtaW4pICogKHNjYWxlTWF4IC0gc2NhbGVNaW4pIC8gKG1heCAtIG1pbik7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG9pbnQge1xuICB4OiBudW1iZXI7XG4gIHk6IG51bWJlcjtcbn1cblxuLyoqIG1vdmVUb1xuICogdGhlIGNvb3JkaW5hdGUgdGhhdCBsaWVzIGF0IGEgbWlkcG9pbnQgYmV0d2VlbiAyIGxpbmVzLCBiYXNlZCBvbiB0aGUgcmFkaXVzXG4gKlxuICogQHBhcmFtIHRvIC0gT3VyIGluaXRpYWwgcG9pbnRcbiAqIEBwYXJhbSB0by54IC0gVGhlIHggdmFsdWUgb2Ygb3VyIGluaXRpYWwgcG9pbnRcbiAqIEBwYXJhbSB0by55IC0gVGhlIHkgdmFsdWUgb2Ygb3VyIGluaXRpYWwgcG9pbnRcbiAqIEBwYXJhbSBmcm9tIC0gT3VyIGZpbmFsIHBvaW50XG4gKiBAcGFyYW0gZnJvbS54IC0gVGhlIHggdmFsdWUgb2Ygb3VyIGZpbmFsIHBvaW50XG4gKiBAcGFyYW0gZnJvbS55IC0gVGhlIHkgdmFsdWUgb2Ygb3VyIGZpbmFsIHBvaW50XG4gKiBAcGFyYW0gcmFkaXVzIC0gVGhlIGRpc3RhbmNlIGF3YXkgZnJvbSB0aGUgZmluYWwgcG9pbnRcbiAqXG4gKiBAcmV0dXJucyBhbiBvYmplY3QgaG9sZGluZyB0aGUgeC95IGNvb3JkaW5hdGVzIG9mIHRoZSBtaWRwb2ludC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1vdmVUbyh0bzogUG9pbnQsIGZyb206IFBvaW50LCByYWRpdXM6IG51bWJlcik6IFBvaW50IHtcbiAgY29uc3QgbGVuZ3RoID0gTWF0aC5zcXJ0KCh0by54IC0gZnJvbS54KSAqICh0by54IC0gZnJvbS54KSArICh0by55IC0gZnJvbS55KSAqICh0by55IC0gZnJvbS55KSk7XG4gIGNvbnN0IHVuaXRWZWN0b3IgPSB7IHg6ICh0by54IC0gZnJvbS54KSAvIGxlbmd0aCwgeTogKHRvLnkgLSBmcm9tLnkpIC8gbGVuZ3RoIH07XG5cbiAgcmV0dXJuIHtcbiAgICB4OiBmcm9tLnggKyB1bml0VmVjdG9yLnggKiByYWRpdXMsXG4gICAgeTogZnJvbS55ICsgdW5pdFZlY3Rvci55ICogcmFkaXVzLFxuICB9O1xufVxuXG4vKiogZ2V0RGlzdGFuY2VCZXR3ZWVuXG4gKiBTaW1wbGUgZm9ybXVsYSBkZXJpdmVkIGZyb20gcHl0aGFnb3JhcyB0byBjYWxjdWxhdGUgdGhlIGRpc3RhbmNlIGJldHdlZW5cbiAqIDIgcG9pbnRzIG9uIGEgcGxhbmUuXG4gKlxuICogQHBhcmFtIHAxIC0gT3VyIGluaXRpYWwgcG9pbnRcbiAqIEBwYXJhbSBwMS54IC0gVGhlIHggdmFsdWUgb2Ygb3VyIGluaXRpYWwgcG9pbnRcbiAqIEBwYXJhbSBwMS55IC0gVGhlIHkgdmFsdWUgb2Ygb3VyIGluaXRpYWwgcG9pbnRcbiAqIEBwYXJhbSBwMiAtIE91ciBmaW5hbCBwb2ludFxuICogQHBhcmFtIHAyLnggLSBUaGUgeCB2YWx1ZSBvZiBvdXIgZmluYWwgcG9pbnRcbiAqIEBwYXJhbSBwMi55IC0gVGhlIHkgdmFsdWUgb2Ygb3VyIGZpbmFsIHBvaW50XG4gKlxuICogQHJldHVybnMgdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIHBvaW50cy5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldERpc3RhbmNlQmV0d2VlbiA9IChwMTogUG9pbnQsIHAyOiBQb2ludCkgPT5cbiAgTWF0aC5zcXJ0KE1hdGgucG93KHAyLnggLSBwMS54LCAyKSArIE1hdGgucG93KHAyLnkgLSBwMS55LCAyKSk7XG5cbi8qKiBjaGVja0ZvckNvbGxpbmVhclBvaW50c1xuICogRmlndXJlIG91dCBpZiB0aGUgbWlkcG9pbnQgZml0cyBwZXJmZWN0bHkgb24gYSBsaW5lIGJldHdlZW4gdGhlIHR3byBvdGhlcnMuXG4gKlxuICogQHBhcmFtIHAxIC0gT3VyIGluaXRpYWwgcG9pbnRcbiAqIEBwYXJhbSBwMS54IC0gVGhlIHggdmFsdWUgb2Ygb3VyIGluaXRpYWwgcG9pbnRcbiAqIEBwYXJhbSBwMS55IC0gVGhlIHkgdmFsdWUgb2Ygb3VyIGluaXRpYWwgcG9pbnRcbiAqIEBwYXJhbSBwMiAtIE91ciBtaWQtcG9pbnRcbiAqIEBwYXJhbSBwMi54IC0gVGhlIHggdmFsdWUgb2Ygb3VyIG1pZC1wb2ludFxuICogQHBhcmFtIHAyLnkgLSBUaGUgeSB2YWx1ZSBvZiBvdXIgbWlkLXBvaW50XG4gKiBAcGFyYW0gcDMgLSBPdXIgZmluYWwgcG9pbnRcbiAqIEBwYXJhbSBwMy54IC0gVGhlIHggdmFsdWUgb2Ygb3VyIGZpbmFsIHBvaW50XG4gKiBAcGFyYW0gcDMueSAtIFRoZSB5IHZhbHVlIG9mIG91ciBmaW5hbCBwb2ludFxuICogQHJldHVybnMgd2hldGhlciBvciBub3QgcDIgc2l0cyBvbiB0aGUgbGluZSBiZXR3ZWVuIHAxIGFuZCBwMy5cbiAqL1xuZXhwb3J0IGNvbnN0IGNoZWNrRm9yQ29sbGluZWFyUG9pbnRzID0gKHAxOiBQb2ludCwgcDI6IFBvaW50LCBwMzogUG9pbnQpID0+XG4gIChwMS55IC0gcDIueSkgKiAocDEueCAtIHAzLngpID09PSAocDEueSAtIHAzLnkpICogKHAxLnggLSBwMi54KTtcbiJdfQ==