ngx-beautiful-charts
Version:
A library to create charts in Angular
156 lines • 13.9 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
// @Injectable({
// providedIn: BeautifulChartsModule
// })
export class ClusteredBarChartService {
constructor() { }
/**
* @return {?}
*/
computeRectDimensions() {
this.rectHeight = this.height - this.yPadding * 4;
this.rectWidth = this.width * .7 - this.xPadding * 2;
}
/**
* @return {?}
*/
computeLegionDimensions() {
/** @type {?} */
const noOfLines = this.data.length;
this.legionWidth = this.width * .3 - this.xPadding * 2;
this.legionHeight = 60 + 30 * noOfLines - 19;
}
/**
* @param {?} y
* @return {?}
*/
transformY(y) {
return this.rectHeight * y / (this.maxY - this.minY);
}
/**
* @param {?} factor
* @param {?} num
* @return {?}
*/
closestMultipleLessThanEqualTo(factor, num) {
if (num % factor === 0)
return num;
else
return this.closestMultipleLessThanEqualTo(factor, num - 1);
}
/**
* @param {?} factor
* @param {?} num
* @return {?}
*/
closestMultipleMoreThanEqualTo(factor, num) {
if (num % factor === 0)
return num;
else
return this.closestMultipleMoreThanEqualTo(factor, num + 1);
}
/**
* @param {?} __0
* @return {?}
*/
setValues({ componentID: componentID, width: width, height: height, xPadding: xPadding, yPadding: yPadding, data: data }) {
this.componentID = componentID;
this.width = width;
this.height = height;
this.xPadding = xPadding;
this.yPadding = yPadding;
this.data = data;
// console.log('service color scheme: ' + this.colorScheme)
/** @type {?} */
let minVals = [];
/** @type {?} */
let maxVals = [];
minVals = [];
maxVals = [];
for (const bcD of this.data) {
/** @type {?} */
const min = Math.min(...bcD.data.map((/**
* @param {?} oneData
* @return {?}
*/
oneData => oneData.value)));
/** @type {?} */
const max = Math.max(...bcD.data.map((/**
* @param {?} oneData
* @return {?}
*/
oneData => oneData.value)));
minVals.push(min);
maxVals.push(max);
}
/** @type {?} */
const minVal = Math.min(...minVals);
/** @type {?} */
const maxVal = Math.max(...maxVals);
/** @type {?} */
const range = maxVal - minVal;
/** @type {?} */
const limInc = 10;
/** @type {?} */
let lim = 10;
this.diff = 1;
while (range > lim) {
this.diff++;
lim += limInc;
}
this.minY = this.closestMultipleLessThanEqualTo(this.diff, minVal);
this.minY = this.minY - this.diff * 2;
this.maxY = this.closestMultipleMoreThanEqualTo(this.diff, maxVal);
this.maxY = this.maxY + this.diff * 2;
this.computeRectDimensions();
this.computeLegionDimensions();
// this.printAll();
}
/**
* @return {?}
*/
printAll() {
console.log('line-graph-service');
console.log('component ID: ' + this.componentID);
console.log('width: ' + this.width);
console.log('height: ' + this.height);
console.log('minY: ' + this.minY);
console.log('maxY: ' + this.maxY);
console.log('xPadding: ' + this.xPadding);
console.log('yPadding: ' + this.yPadding);
console.log('rectWidth: ' + this.rectWidth);
console.log('rectHeight: ' + this.rectHeight);
}
}
if (false) {
/** @type {?} */
ClusteredBarChartService.prototype.width;
/** @type {?} */
ClusteredBarChartService.prototype.height;
/** @type {?} */
ClusteredBarChartService.prototype.minY;
/** @type {?} */
ClusteredBarChartService.prototype.maxY;
/** @type {?} */
ClusteredBarChartService.prototype.xPadding;
/** @type {?} */
ClusteredBarChartService.prototype.yPadding;
/** @type {?} */
ClusteredBarChartService.prototype.componentID;
/** @type {?} */
ClusteredBarChartService.prototype.data;
/** @type {?} */
ClusteredBarChartService.prototype.rectWidth;
/** @type {?} */
ClusteredBarChartService.prototype.rectHeight;
/** @type {?} */
ClusteredBarChartService.prototype.legionWidth;
/** @type {?} */
ClusteredBarChartService.prototype.legionHeight;
/** @type {?} */
ClusteredBarChartService.prototype.diff;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2x1c3RlcmVkLWJhci1jaGFydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWJlYXV0aWZ1bC1jaGFydHMvIiwic291cmNlcyI6WyJsaWIvY2x1c3RlcmVkLWJhci1jaGFydC9jbHVzdGVyZWQtYmFyLWNoYXJ0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQU9BLE1BQU0sT0FBTyx3QkFBd0I7SUFpQm5DLGdCQUFnQixDQUFDOzs7O0lBRWpCLHFCQUFxQjtRQUNuQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztJQUN2RCxDQUFDOzs7O0lBRUQsdUJBQXVCOztjQUNmLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07UUFDbEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUMvQyxDQUFDOzs7OztJQUVELFVBQVUsQ0FBQyxDQUFTO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2RCxDQUFDOzs7Ozs7SUFFRCw4QkFBOEIsQ0FBQyxNQUFNLEVBQUUsR0FBRztRQUN4QyxJQUFJLEdBQUcsR0FBRyxNQUFNLEtBQUssQ0FBQztZQUFFLE9BQU8sR0FBRyxDQUFDOztZQUM5QixPQUFPLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxNQUFN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QixDQUFDLENBQUM7UUFDbEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDakQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMxQyxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzVDLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoRCxDQUFDO0NBQ0Y7OztJQXJHQyx5Q0FBYzs7SUFDZCwwQ0FBZTs7SUFDZix3Q0FBYTs7SUFDYix3Q0FBYTs7SUFDYiw0Q0FBaUI7O0lBQ2pCLDRDQUFpQjs7SUFDakIsK0NBQW9COztJQUNwQix3Q0FBZ0Y7O0lBRWhGLDZDQUFrQjs7SUFDbEIsOENBQW1COztJQUNuQiwrQ0FBb0I7O0lBQ3BCLGdEQUFxQjs7SUFDckIsd0NBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWF1dGlmdWxDaGFydHNNb2R1bGUgfSBmcm9tICcuLi9iZWF1dGlmdWwtY2hhcnRzLm1vZHVsZSc7XG5pbXBvcnQgeyBjb2xvclNjaGVtZXMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvY29sb3Itc2NoZW1lcyc7XG5cbi8vIEBJbmplY3RhYmxlKHtcbi8vICAgcHJvdmlkZWRJbjogQmVhdXRpZnVsQ2hhcnRzTW9kdWxlXG4vLyB9KVxuZXhwb3J0IGNsYXNzIENsdXN0ZXJlZEJhckNoYXJ0U2VydmljZSB7XG5cbiAgd2lkdGg6IG51bWJlcjtcbiAgaGVpZ2h0OiBudW1iZXI7XG4gIG1pblk6IG51bWJlcjtcbiAgbWF4WTogbnVtYmVyO1xuICB4UGFkZGluZzogbnVtYmVyO1xuICB5UGFkZGluZzogbnVtYmVyO1xuICBjb21wb25lbnRJRDogbnVtYmVyO1xuICBkYXRhOiBbe3Nlcmllczogc3RyaW5nLCBjb2xvcjogc3RyaW5nLCBkYXRhOiBbe25hbWU6IHN0cmluZywgdmFsdWU6IG51bWJlciB9XX1dO1xuXG4gIHJlY3RXaWR0aDogbnVtYmVyO1xuICByZWN0SGVpZ2h0OiBudW1iZXI7XG4gIGxlZ2lvbldpZHRoOiBudW1iZXI7XG4gIGxlZ2lvbkhlaWdodDogbnVtYmVyO1xuICBkaWZmOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBjb21wdXRlUmVjdERpbWVuc2lvbnMoKSB7XG4gICAgdGhpcy5yZWN0SGVpZ2h0ID0gdGhpcy5oZWlnaHQgLSB0aGlzLnlQYWRkaW5nICogNDtcbiAgICB0aGlzLnJlY3RXaWR0aCA9IHRoaXMud2lkdGggKiAuNyAtIHRoaXMueFBhZGRpbmcgKiAyO1xuICB9XG5cbiAgY29tcHV0ZUxlZ2lvbkRpbWVuc2lvbnMoKSB7XG4gICAgY29uc3Qgbm9PZkxpbmVzID0gdGhpcy5kYXRhLmxlbmd0aDtcbiAgICB0aGlzLmxlZ2lvbldpZHRoID0gdGhpcy53aWR0aCAqIC4zIC0gdGhpcy54UGFkZGluZyAqIDI7XG4gICAgdGhpcy5sZWdpb25IZWlnaHQgPSA2MCArIDMwICogbm9PZkxpbmVzIC0gMTk7XG4gIH1cblxuICB0cmFuc2Zvcm1ZKHk6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLnJlY3RIZWlnaHQgKiB5IC8gKHRoaXMubWF4WSAtIHRoaXMubWluWSk7XG4gIH1cblxuICBjbG9zZXN0TXVsdGlwbGVMZXNzVGhhbkVxdWFsVG8oZmFjdG9yLCBudW0pIHtcbiAgICBpZiAobnVtICUgZmFjdG9yID09PSAwKSByZXR1cm4gbnVtO1xuICAgIGVsc2UgcmV0dXJuIHRoaXMuY2xvc2VzdE11bHRpcGxlTGVzc1RoYW5FcXVhbFRvKGZhY3RvciwgbnVtIC0gMSk7XG4gIH1cblxuICBjbG9zZXN0TXVsdGlwbGVNb3JlVGhhbkVxdWFsVG8oZmFjdG9yLCBudW0pIHtcbiAgICBpZiAobnVtICUgZmFjdG9yID09PSAwKSByZXR1cm4gbnVtO1xuICAgIGVsc2UgcmV0dXJuIHRoaXMuY2xvc2VzdE11bHRpcGxlTW9yZVRoYW5FcXVhbFRvKGZhY3RvciwgbnVtICsgMSk7XG4gIH1cblxuICBzZXRWYWx1ZXMoe1xuICAgIGNvbXBvbmVudElEOiBjb21wb25lbnRJRCxcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgeFBhZGRpbmc6IHhQYWRkaW5nLFxuICAgIHlQYWRkaW5nOiB5UGFkZGluZyxcbiAgICBkYXRhOiBkYXRhXG4gIH0pIHtcbiAgICB0aGlzLmNvbXBvbmVudElEID0gY29tcG9uZW50SUQ7XG4gICAgdGhpcy53aWR0aCA9IHdpZHRoO1xuICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgIHRoaXMueFBhZGRpbmcgPSB4UGFkZGluZztcbiAgICB0aGlzLnlQYWRkaW5nID0geVBhZGRpbmc7XG4gICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgICAvLyBjb25zb2xlLmxvZygnc2VydmljZSBjb2xvciBzY2hlbWU6ICcgKyB0aGlzLmNvbG9yU2NoZW1lKVxuXG4gICAgbGV0IG1pblZhbHMgPSBbXTtcbiAgICBsZXQgbWF4VmFscyA9IFtdO1xuICAgIG1pblZhbHMgPSBbXTtcbiAgICBtYXhWYWxzID0gW107XG4gICAgZm9yIChjb25zdCBiY0Qgb2YgdGhpcy5kYXRhKSB7XG4gICAgICBjb25zdCBtaW4gPSBNYXRoLm1pbiguLi5iY0QuZGF0YS5tYXAob25lRGF0YSA9PiBvbmVEYXRhLnZhbHVlKSk7XG4gICAgICBjb25zdCBtYXggPSBNYXRoLm1heCguLi5iY0QuZGF0YS5tYXAob25lRGF0YSA9PiBvbmVEYXRhLnZhbHVlKSk7XG4gICAgICBtaW5WYWxzLnB1c2gobWluKTtcbiAgICAgIG1heFZhbHMucHVzaChtYXgpO1xuICAgIH1cbiAgICBjb25zdCBtaW5WYWwgPSBNYXRoLm1pbiguLi5taW5WYWxzKTtcbiAgICBjb25zdCBtYXhWYWwgPSBNYXRoLm1heCguLi5tYXhWYWxzKTtcbiAgICBjb25zdCByYW5nZSA9IG1heFZhbCAtIG1pblZhbDtcblxuICAgIGNvbnN0IGxpbUluYyA9IDEwO1xuICAgIGxldCBsaW0gPSAxMDtcbiAgICB0aGlzLmRpZmYgPSAxO1xuICAgIHdoaWxlIChyYW5nZSA+IGxpbSkge1xuICAgICAgdGhpcy5kaWZmKys7XG4gICAgICBsaW0gKz0gbGltSW5jO1xuICAgIH1cbiAgICB0aGlzLm1pblkgPSB0aGlzLmNsb3Nlc3RNdWx0aXBsZUxlc3NUaGFuRXF1YWxUbyh0aGlzLmRpZmYsIG1pblZhbCk7XG4gICAgdGhpcy5taW5ZID0gdGhpcy5taW5ZIC0gdGhpcy5kaWZmICogMjtcbiAgICB0aGlzLm1heFkgPSB0aGlzLmNsb3Nlc3RNdWx0aXBsZU1vcmVUaGFuRXF1YWxUbyh0aGlzLmRpZmYsIG1heFZhbCk7XG4gICAgdGhpcy5tYXhZID0gdGhpcy5tYXhZICsgdGhpcy5kaWZmICogMjtcblxuICAgIHRoaXMuY29tcHV0ZVJlY3REaW1lbnNpb25zKCk7XG4gICAgdGhpcy5jb21wdXRlTGVnaW9uRGltZW5zaW9ucygpO1xuICAgIC8vIHRoaXMucHJpbnRBbGwoKTtcbiAgfVxuXG4gIHByaW50QWxsKCkge1xuICAgIGNvbnNvbGUubG9nKCdsaW5lLWdyYXBoLXNlcnZpY2UnKTtcbiAgICBjb25zb2xlLmxvZygnY29tcG9uZW50IElEOiAnICsgdGhpcy5jb21wb25lbnRJRCk7XG4gICAgY29uc29sZS5sb2coJ3dpZHRoOiAnICsgdGhpcy53aWR0aCk7XG4gICAgY29uc29sZS5sb2coJ2hlaWdodDogJyArIHRoaXMuaGVpZ2h0KTtcbiAgICBjb25zb2xlLmxvZygnbWluWTogJyArIHRoaXMubWluWSk7XG4gICAgY29uc29sZS5sb2coJ21heFk6ICcgKyB0aGlzLm1heFkpO1xuICAgIGNvbnNvbGUubG9nKCd4UGFkZGluZzogJyArIHRoaXMueFBhZGRpbmcpO1xuICAgIGNvbnNvbGUubG9nKCd5UGFkZGluZzogJyArIHRoaXMueVBhZGRpbmcpO1xuICAgIGNvbnNvbGUubG9nKCdyZWN0V2lkdGg6ICcgKyB0aGlzLnJlY3RXaWR0aCk7XG4gICAgY29uc29sZS5sb2coJ3JlY3RIZWlnaHQ6ICcgKyB0aGlzLnJlY3RIZWlnaHQpO1xuICB9XG59XG4iXX0=