lemon-ngx-trend
Version:
ngx-trend Angular component for Lemoncloud
77 lines • 9.49 kB
JavaScript
/* 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==