@lifeintelligencegroup/ngx-lig-ari
Version:
Life Intelligence Group Artificial Intelligence
182 lines • 40.6 kB
JavaScript
import { Component, ViewChild, Input, } from '@angular/core';
import { Chart, registerables } from 'chart.js';
import * as i0 from "@angular/core";
Chart.register(...registerables);
export class AriChartComponent {
constructor(cdRef, zone) {
this.cdRef = cdRef;
this.zone = zone;
this.myChart = [];
this.myChartData = {};
this.hideChart = true;
this.completionPct = 0;
this.doneTaskCount = 0;
}
ngOnInit() { }
ngAfterViewInit() {
setTimeout(() => {
this.loadChart();
}, 900);
this.cdRef.detectChanges();
}
loadChart() {
const vm = this;
if (this.canvasRef) {
this.ctx = this.canvasRef.nativeElement.getContext('2d');
const gradients = [];
// const gradient = this.ctx.createLinearGradient(0, 0, 80, 80);
let colorBackground = '';
if (this.goal) {
if (this.goal.GoalDetails) {
switch (this.goal.GoalDetails.Ari_Color) {
case 1:
// Red
colorBackground = '#F64D4B';
gradients.push(colorBackground);
break;
case 2:
// Blue
colorBackground = '#1D57A4';
gradients.push(colorBackground);
break;
case 3:
// Amber
colorBackground = '#FAC441';
gradients.push(colorBackground);
break;
case 4:
// Green
colorBackground = '#309DA6';
gradients.push(colorBackground);
break;
case 5:
// Gray
colorBackground = '#6E7E81';
gradients.push(colorBackground);
break;
default:
// life
colorBackground = '#1D57A4';
gradients.push(colorBackground);
}
}
else {
colorBackground = '#6E7E81';
gradients.push(colorBackground);
}
if (this.goal.GoalDetails) {
this.zone.run(() => {
const doneTaskCount = this.goal.GoalDetails.Tasks_Done;
this.doneTaskCount = isNaN(doneTaskCount) ? 0 : doneTaskCount;
const completionPct = this.goal.GoalDetails.PercentCompleted;
this.completionPct = isNaN(completionPct) ? 0 : completionPct;
});
const remainingPct = 100 - this.completionPct;
const config = {
type: 'doughnut',
data: {
datasets: [
{
data: [this.completionPct, remainingPct],
backgroundColor: [gradients[0], "#E5E5E5"],
hoverBackgroundColor: gradients,
borderWidth: [0, 0],
borderRadius: [this.completionPct > 99 ? 0 : 20, 0],
},
],
},
options: {
events: [],
responsive: true,
cutout: '65%',
tooltips: false,
legend: {
display: false,
},
animation: {
animateScale: true,
duration: 0,
animateRotate: false,
onComplete: () => {
vm.hideChart = false;
},
},
responsiveAnimationDuration: 0, // animation duration after a resize
},
plugins: [{
id: 'text',
beforeDraw: (chart, a, b) => {
var width = chart.width, height = chart.height, ctx = chart.ctx;
ctx.restore();
ctx.fontSize = 12;
ctx.fontFamily = "'Helvetica', sans-serif";
ctx.textBaseline = "top";
ctx.fillStyle = this.completionPct > 0 ? gradients[0] : "#6E7E81";
ctx.fontWeight = 500;
var text = this.completionPct + '%', textX = Math.round((width - ctx.measureText(text).width) / 2), textY = height / 2;
ctx.fillText(text, textX, textY);
ctx.save();
}
}]
};
this.myChart = new Chart(this.ctx, config);
this.myChart.update();
}
}
}
}
getGoalPercentage(category) {
switch (category) {
case 1:
return 'fill-text-red';
break;
case 2:
return 'fill-text-blue';
break;
case 3:
return 'fill-text-amber';
break;
case 4:
return 'fill-text-green';
break;
case 5:
return 'fill-text-grey';
break;
default:
return 'fill-text-grey';
}
}
getGoalPercentageColor(category) {
switch (category) {
case 1:
return '#F64D4B';
break;
case 2:
return '#1D57A4';
break;
case 3:
return '#FAC441';
break;
case 4:
return '#309DA6';
break;
case 5:
return '#6E7E81';
break;
default:
return '#6E7E81';
}
}
}
AriChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: AriChartComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
AriChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.4", type: AriChartComponent, selector: "lib-ari-chart", inputs: { goal: "goal" }, viewQueries: [{ propertyName: "canvasRef", first: true, predicate: ["myChart"], descendants: true }], ngImport: i0, template: "<div class=\"chart-panel\" [hidden]=\"hideChart\">\n <canvas #myChart height=\"80\" width=\"80\"></canvas>\n</div>", styles: [":root{--ion-color-white: #ffffff;--ion-color-white-rgb: 255, 255, 255;--ion-color-white-contrast: #000000;--ion-color-white-contrast-rgb: 0, 104, 217;--ion-color-white-shade: #e0e0e0;--ion-color-white-tint: #ffffff;--ion-color-blue: #1d57a4;--ion-color-blue-rgb: 0, 102, 216;--ion-color-blue-contrast: #ffffff;--ion-color-blue-contrast-rgb: 255, 255, 255;--ion-color-blue-shade: #1d57a4;--ion-color-blue-tint: #1d57a4;--ion-color-lightgray: #f2f6fc;--ion-color-lightgray-rgb: 242, 246, 252;--ion-color-lightgray-contrast: #1d57a4;--ion-color-lightgray-contrast-rgb: 0, 0, 0;--ion-color-lightgray-shade: #d5d8de;--ion-color-lightgray-tint: #f3f7fc;--ion-color-ts-red: #ff6060;--ion-color-ts-red-rgb: 255, 96, 96;--ion-color-ts-red-contrast: #ffffff;--ion-color-ts-red-contrast-rgb: 0, 0, 0;--ion-color-ts-red-shade: #e05454;--ion-color-ts-red-tint: #ff7070;--ion-color-ts-blue: #1d57a4;--ion-color-ts-blue-rgb: 2, 153, 255;--ion-color-ts-blue-contrast: #ffffff;--ion-color-ts-blue-contrast-rgb: 255, 255, 255;--ion-color-ts-blue-shade: #1d57a4;--ion-color-ts-blue-tint: #1d57a4;--ion-color-ts-amber: #ffcc66;--ion-color-ts-amber-rgb: 255, 204, 102;--ion-color-ts-amber-contrast: #000000;--ion-color-ts-amber-contrast-rgb: 0, 0, 0;--ion-color-ts-amber-shade: #e0b45a;--ion-color-ts-amber-tint: #ffd175;--ion-color-ts-green: #99cb67;--ion-color-ts-green-rgb: 153, 203, 103;--ion-color-ts-green-contrast: #ffffff;--ion-color-ts-green-contrast-rgb: 0, 0, 0;--ion-color-ts-green-shade: #87b35b;--ion-color-ts-green-tint: #a3d076;--ion-color-ts-grey: #a3a3a3;--ion-color-ts-grey-rgb: 163, 163, 163;--ion-color-ts-grey-contrast: #000000;--ion-color-ts-grey-contrast-rgb: 0, 0, 0;--ion-color-ts-grey-shade: #8f8f8f;--ion-color-ts-grey-tint: #acacac;--ion-color-light-grey: #e1e7f0;--ion-color-light-grey-rgb: 225, 231, 240;--ion-color-light-grey-contrast: #000000;--ion-color-light-grey-contrast-rgb: 0, 0, 0;--ion-color-light-grey-shade: #c6cbd3;--ion-color-light-grey-tint: #e4e9f2;--ion-color-0058ff: #0058ff;--ion-color-0058ff-rgb: 0, 88, 255;--ion-color-0058ff-contrast: #ffffff;--ion-color-0058ff-contrast-rgb: 255, 255, 255;--ion-color-0058ff-shade: #004de0;--ion-color-0058ff-tint: #1a69ff;--ion-color-0099ff: #0099ff;--ion-color-0099ff-rgb: 0, 153, 255;--ion-color-0099ff-contrast: #ffffff;--ion-color-0099ff-contrast-rgb: 255, 255, 255;--ion-color-0099ff-shade: #0087e0;--ion-color-0099ff-tint: #1aa3ff;--bodyfont-default: #151515;--icons-colors: #d3dcdb;--bodyfont-light: #6e7e81;--bodyfont-emptyviews: #343434;--bodyfont-secondary: #2f2f2f;--background-default: #f7f7f7;--background-teal: #d3dcdb;--background-lightgrey: #f4f4f4;--background-white: #ffffff;--background-offwhite: #fafafa;--background-tasks: #ebebeb;--background-emptyview: #f2f2f2;--taskspur-blue: #1d57a4;--taskspur-teal: #309da6;--taskspur-red: #f64d4b;--taskspur-amber: #fac441;--taskspur-darkblue: #184b90;--taskspur-darkteal: #309da6;--taskspur-darkred: #e3413f;--taskspur-darkamber: #e6b53b;--theme-font: \"Helvetica\", sans-serif;--background-tertiary-shadow: 0px 1px 0px #0000000d;--background-card-shadow: 0px 3px 6px #00000014;--background-overlaypanel-shadow: 0px 4px 16px #00000029}.ion-color-white{--ion-color-base: var(--ion-color-white) !important;--ion-color-base-rgb: var(--ion-color-white-rgb) !important;--ion-color-contrast: var(--ion-color-white-contrast) !important;--ion-color-contrast-rgb: var(--ion-color-white-contrast-rgb) !important;--ion-color-shade: var(--ion-color-white-shade) !important;--ion-color-tint: var(--ion-color-white-tint) !important;--ion-toolbar-background: var(--ion-color-white) !important}.ion-color-blue{--ion-color-base: var(--ion-color-blue) !important;--ion-color-base-rgb: var(--ion-color-blue-rgb) !important;--ion-color-contrast: var(--ion-color-blue-contrast) !important;--ion-color-contrast-rgb: var(--ion-color-blue-contrast-rgb) !important;--ion-color-shade: var(--ion-color-blue-shade) !important;--ion-color-tint: var(--ion-color-blue-tint) !important;--ion-toolbar-background: var(--ion-color-blue) !important}.ion-color-lightgray{--ion-color-base: var(--ion-color-lightgray) !important;--ion-color-base-rgb: var(--ion-color-lightgray-rgb) !important;--ion-color-contrast: var(--ion-color-lightgray-contrast) !important;--ion-color-contrast-rgb: var(--ion-color-lightgray-contrast-rgb) !important;--ion-color-shade: var(--ion-color-lightgray-shade) !important;--ion-color-tint: var(--ion-color-lightgray-tint) !important;--ion-toolbar-background: var(--ion-color-lightgray) !important}.ion-color-ts-red{--ion-color-base: var(--ion-color-ts-red) !important;--ion-color-base-rgb: var(--ion-color-ts-red-rgb) !important;--ion-color-contrast: var(--ion-color-ts-red-contrast) !important;--ion-color-contrast-rgb: var(--ion-color-ts-red-contrast-rgb) !important;--ion-color-shade: var(--ion-color-ts-red-shade) !important;--ion-color-tint: var(--ion-color-ts-red-tint) !important;--ion-toolbar-background: var(--ion-color-ts-red) !important}.ion-color-ts-blue{--ion-color-base: var(--ion-color-ts-blue) !important;--ion-color-base-rgb: var(--ion-color-ts-blue-rgb) !important;--ion-color-contrast: var(--ion-color-ts-blue-contrast) !important;--ion-color-contrast-rgb: var(--ion-color-ts-blue-contrast-rgb) !important;--ion-color-shade: var(--ion-color-ts-blue-shade) !important;--ion-color-tint: var(--ion-color-ts-blue-tint) !important;--ion-toolbar-background: var(--ion-color-ts-blue) !important}.ion-color-ts-amber{--ion-color-base: var(--ion-color-ts-amber) !important;--ion-color-base-rgb: var(--ion-color-ts-amber-rgb) !important;--ion-color-contrast: var(--ion-color-ts-amber-contrast) !important;--ion-color-contrast-rgb: var(--ion-color-ts-amber-contrast-rgb) !important;--ion-color-shade: var(--ion-color-ts-amber-shade) !important;--ion-color-tint: var(--ion-color-ts-amber-tint) !important;--ion-toolbar-background: var(--ion-color-ts-amber) !important}.ion-color-ts-green{--ion-color-base: var(--ion-color-ts-green) !important;--ion-color-base-rgb: var(--ion-color-ts-green-rgb) !important;--ion-color-contrast: var(--ion-color-ts-green-contrast) !important;--ion-color-contrast-rgb: var(--ion-color-ts-green-contrast-rgb) !important;--ion-color-shade: var(--ion-color-ts-green-shade) !important;--ion-color-tint: var(--ion-color-ts-green-tint) !important;--ion-toolbar-background: var(--ion-color-ts-green) !important}.ion-color-ts-grey{--ion-color-base: var(--ion-color-ts-grey) !important;--ion-color-base-rgb: var(--ion-color-ts-grey-rgb) !important;--ion-color-contrast: var(--ion-color-ts-grey-contrast) !important;--ion-color-contrast-rgb: var(--ion-color-ts-grey-contrast-rgb) !important;--ion-color-shade: var(--ion-color-ts-grey-shade) !important;--ion-color-tint: var(--ion-color-ts-grey-tint) !important;--ion-toolbar-background: var(--ion-color-ts-grey) !important}.ion-color-light-grey{--ion-color-base: var(--ion-color-light-grey) !important;--ion-color-base-rgb: var(--ion-color-light-grey-rgb) !important;--ion-color-contrast: var(--ion-color-light-grey-contrast) !important;--ion-color-contrast-rgb: var(--ion-color-light-grey-contrast-rgb) !important;--ion-color-shade: var(--ion-color-light-grey-shade) !important;--ion-color-tint: var(--ion-color-light-grey-tint) !important;--ion-toolbar-background: var(--ion-color-light-grey) !important}.ion-color-0058FF{--ion-color-base: var(--ion-color-0058FF) !important;--ion-color-base-rgb: var(--ion-color-0058FF-rgb) !important;--ion-color-contrast: var(--ion-color-0058FF-contrast) !important;--ion-color-contrast-rgb: var(--ion-color-0058FF-contrast-rgb) !important;--ion-color-shade: var(--ion-color-0058FF-shade) !important;--ion-color-tint: var(--ion-color-0058FF-tint) !important;--ion-toolbar-background: var(--ion-color-0058FF) !important}.ion-color-0099FF{--ion-color-base: var(--ion-color-0099FF) !important;--ion-color-base-rgb: var(--ion-color-0099FF-rgb) !important;--ion-color-contrast: var(--ion-color-0099FF-contrast) !important;--ion-color-contrast-rgb: var(--ion-color-0099FF-contrast-rgb) !important;--ion-color-shade: var(--ion-color-0099FF-shade) !important;--ion-color-tint: var(--ion-color-0099FF-tint) !important;--ion-toolbar-background: var(--ion-color-0099FF) !important}::-webkit-scrollbar{width:3px}::-webkit-scrollbar-track{background:#f1f1f1}::-webkit-scrollbar-thumb{background:#373737}::-webkit-scrollbar-thumb:hover{background:#37373780}:host{animation:fadein 2s}:host .chart-panel{width:70px;height:70px}:host .circle-chart{width:60px;height:60px;background:var(--background-teal);border-radius:70px}:host .chart-fill-text{position:relative;top:-50px;left:30px;font-family:var(--theme-font);font-weight:600;font-size:17px}:host .chart-fill-text.fill-text-blue{color:var(--taskspur-blue)}:host .chart-fill-text.fill-text-red{color:var(--taskspur-red)}:host .chart-fill-text.fill-text-amber{color:var(--taskspur-amber)}:host .chart-fill-text.fill-text-green{color:var(--taskspur-teal)}:host .chart-fill-text.fill-text-grey{color:var(--bodyfont-light)}@keyframes fadein{0%{opacity:0}to{opacity:1}}\n"] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: AriChartComponent, decorators: [{
type: Component,
args: [{ selector: 'lib-ari-chart', template: "<div class=\"chart-panel\" [hidden]=\"hideChart\">\n <canvas #myChart height=\"80\" width=\"80\"></canvas>\n</div>", styles: [":root{--ion-color-white: #ffffff;--ion-color-white-rgb: 255, 255, 255;--ion-color-white-contrast: #000000;--ion-color-white-contrast-rgb: 0, 104, 217;--ion-color-white-shade: #e0e0e0;--ion-color-white-tint: #ffffff;--ion-color-blue: #1d57a4;--ion-color-blue-rgb: 0, 102, 216;--ion-color-blue-contrast: #ffffff;--ion-color-blue-contrast-rgb: 255, 255, 255;--ion-color-blue-shade: #1d57a4;--ion-color-blue-tint: #1d57a4;--ion-color-lightgray: #f2f6fc;--ion-color-lightgray-rgb: 242, 246, 252;--ion-color-lightgray-contrast: #1d57a4;--ion-color-lightgray-contrast-rgb: 0, 0, 0;--ion-color-lightgray-shade: #d5d8de;--ion-color-lightgray-tint: #f3f7fc;--ion-color-ts-red: #ff6060;--ion-color-ts-red-rgb: 255, 96, 96;--ion-color-ts-red-contrast: #ffffff;--ion-color-ts-red-contrast-rgb: 0, 0, 0;--ion-color-ts-red-shade: #e05454;--ion-color-ts-red-tint: #ff7070;--ion-color-ts-blue: #1d57a4;--ion-color-ts-blue-rgb: 2, 153, 255;--ion-color-ts-blue-contrast: #ffffff;--ion-color-ts-blue-contrast-rgb: 255, 255, 255;--ion-color-ts-blue-shade: #1d57a4;--ion-color-ts-blue-tint: #1d57a4;--ion-color-ts-amber: #ffcc66;--ion-color-ts-amber-rgb: 255, 204, 102;--ion-color-ts-amber-contrast: #000000;--ion-color-ts-amber-contrast-rgb: 0, 0, 0;--ion-color-ts-amber-shade: #e0b45a;--ion-color-ts-amber-tint: #ffd175;--ion-color-ts-green: #99cb67;--ion-color-ts-green-rgb: 153, 203, 103;--ion-color-ts-green-contrast: #ffffff;--ion-color-ts-green-contrast-rgb: 0, 0, 0;--ion-color-ts-green-shade: #87b35b;--ion-color-ts-green-tint: #a3d076;--ion-color-ts-grey: #a3a3a3;--ion-color-ts-grey-rgb: 163, 163, 163;--ion-color-ts-grey-contrast: #000000;--ion-color-ts-grey-contrast-rgb: 0, 0, 0;--ion-color-ts-grey-shade: #8f8f8f;--ion-color-ts-grey-tint: #acacac;--ion-color-light-grey: #e1e7f0;--ion-color-light-grey-rgb: 225, 231, 240;--ion-color-light-grey-contrast: #000000;--ion-color-light-grey-contrast-rgb: 0, 0, 0;--ion-color-light-grey-shade: #c6cbd3;--ion-color-light-grey-tint: #e4e9f2;--ion-color-0058ff: #0058ff;--ion-color-0058ff-rgb: 0, 88, 255;--ion-color-0058ff-contrast: #ffffff;--ion-color-0058ff-contrast-rgb: 255, 255, 255;--ion-color-0058ff-shade: #004de0;--ion-color-0058ff-tint: #1a69ff;--ion-color-0099ff: #0099ff;--ion-color-0099ff-rgb: 0, 153, 255;--ion-color-0099ff-contrast: #ffffff;--ion-color-0099ff-contrast-rgb: 255, 255, 255;--ion-color-0099ff-shade: #0087e0;--ion-color-0099ff-tint: #1aa3ff;--bodyfont-default: #151515;--icons-colors: #d3dcdb;--bodyfont-light: #6e7e81;--bodyfont-emptyviews: #343434;--bodyfont-secondary: #2f2f2f;--background-default: #f7f7f7;--background-teal: #d3dcdb;--background-lightgrey: #f4f4f4;--background-white: #ffffff;--background-offwhite: #fafafa;--background-tasks: #ebebeb;--background-emptyview: #f2f2f2;--taskspur-blue: #1d57a4;--taskspur-teal: #309da6;--taskspur-red: #f64d4b;--taskspur-amber: #fac441;--taskspur-darkblue: #184b90;--taskspur-darkteal: #309da6;--taskspur-darkred: #e3413f;--taskspur-darkamber: #e6b53b;--theme-font: \"Helvetica\", sans-serif;--background-tertiary-shadow: 0px 1px 0px #0000000d;--background-card-shadow: 0px 3px 6px #00000014;--background-overlaypanel-shadow: 0px 4px 16px #00000029}.ion-color-white{--ion-color-base: var(--ion-color-white) !important;--ion-color-base-rgb: var(--ion-color-white-rgb) !important;--ion-color-contrast: var(--ion-color-white-contrast) !important;--ion-color-contrast-rgb: var(--ion-color-white-contrast-rgb) !important;--ion-color-shade: var(--ion-color-white-shade) !important;--ion-color-tint: var(--ion-color-white-tint) !important;--ion-toolbar-background: var(--ion-color-white) !important}.ion-color-blue{--ion-color-base: var(--ion-color-blue) !important;--ion-color-base-rgb: var(--ion-color-blue-rgb) !important;--ion-color-contrast: var(--ion-color-blue-contrast) !important;--ion-color-contrast-rgb: var(--ion-color-blue-contrast-rgb) !important;--ion-color-shade: var(--ion-color-blue-shade) !important;--ion-color-tint: var(--ion-color-blue-tint) !important;--ion-toolbar-background: var(--ion-color-blue) !important}.ion-color-lightgray{--ion-color-base: var(--ion-color-lightgray) !important;--ion-color-base-rgb: var(--ion-color-lightgray-rgb) !important;--ion-color-contrast: var(--ion-color-lightgray-contrast) !important;--ion-color-contrast-rgb: var(--ion-color-lightgray-contrast-rgb) !important;--ion-color-shade: var(--ion-color-lightgray-shade) !important;--ion-color-tint: var(--ion-color-lightgray-tint) !important;--ion-toolbar-background: var(--ion-color-lightgray) !important}.ion-color-ts-red{--ion-color-base: var(--ion-color-ts-red) !important;--ion-color-base-rgb: var(--ion-color-ts-red-rgb) !important;--ion-color-contrast: var(--ion-color-ts-red-contrast) !important;--ion-color-contrast-rgb: var(--ion-color-ts-red-contrast-rgb) !important;--ion-color-shade: var(--ion-color-ts-red-shade) !important;--ion-color-tint: var(--ion-color-ts-red-tint) !important;--ion-toolbar-background: var(--ion-color-ts-red) !important}.ion-color-ts-blue{--ion-color-base: var(--ion-color-ts-blue) !important;--ion-color-base-rgb: var(--ion-color-ts-blue-rgb) !important;--ion-color-contrast: var(--ion-color-ts-blue-contrast) !important;--ion-color-contrast-rgb: var(--ion-color-ts-blue-contrast-rgb) !important;--ion-color-shade: var(--ion-color-ts-blue-shade) !important;--ion-color-tint: var(--ion-color-ts-blue-tint) !important;--ion-toolbar-background: var(--ion-color-ts-blue) !important}.ion-color-ts-amber{--ion-color-base: var(--ion-color-ts-amber) !important;--ion-color-base-rgb: var(--ion-color-ts-amber-rgb) !important;--ion-color-contrast: var(--ion-color-ts-amber-contrast) !important;--ion-color-contrast-rgb: var(--ion-color-ts-amber-contrast-rgb) !important;--ion-color-shade: var(--ion-color-ts-amber-shade) !important;--ion-color-tint: var(--ion-color-ts-amber-tint) !important;--ion-toolbar-background: var(--ion-color-ts-amber) !important}.ion-color-ts-green{--ion-color-base: var(--ion-color-ts-green) !important;--ion-color-base-rgb: var(--ion-color-ts-green-rgb) !important;--ion-color-contrast: var(--ion-color-ts-green-contrast) !important;--ion-color-contrast-rgb: var(--ion-color-ts-green-contrast-rgb) !important;--ion-color-shade: var(--ion-color-ts-green-shade) !important;--ion-color-tint: var(--ion-color-ts-green-tint) !important;--ion-toolbar-background: var(--ion-color-ts-green) !important}.ion-color-ts-grey{--ion-color-base: var(--ion-color-ts-grey) !important;--ion-color-base-rgb: var(--ion-color-ts-grey-rgb) !important;--ion-color-contrast: var(--ion-color-ts-grey-contrast) !important;--ion-color-contrast-rgb: var(--ion-color-ts-grey-contrast-rgb) !important;--ion-color-shade: var(--ion-color-ts-grey-shade) !important;--ion-color-tint: var(--ion-color-ts-grey-tint) !important;--ion-toolbar-background: var(--ion-color-ts-grey) !important}.ion-color-light-grey{--ion-color-base: var(--ion-color-light-grey) !important;--ion-color-base-rgb: var(--ion-color-light-grey-rgb) !important;--ion-color-contrast: var(--ion-color-light-grey-contrast) !important;--ion-color-contrast-rgb: var(--ion-color-light-grey-contrast-rgb) !important;--ion-color-shade: var(--ion-color-light-grey-shade) !important;--ion-color-tint: var(--ion-color-light-grey-tint) !important;--ion-toolbar-background: var(--ion-color-light-grey) !important}.ion-color-0058FF{--ion-color-base: var(--ion-color-0058FF) !important;--ion-color-base-rgb: var(--ion-color-0058FF-rgb) !important;--ion-color-contrast: var(--ion-color-0058FF-contrast) !important;--ion-color-contrast-rgb: var(--ion-color-0058FF-contrast-rgb) !important;--ion-color-shade: var(--ion-color-0058FF-shade) !important;--ion-color-tint: var(--ion-color-0058FF-tint) !important;--ion-toolbar-background: var(--ion-color-0058FF) !important}.ion-color-0099FF{--ion-color-base: var(--ion-color-0099FF) !important;--ion-color-base-rgb: var(--ion-color-0099FF-rgb) !important;--ion-color-contrast: var(--ion-color-0099FF-contrast) !important;--ion-color-contrast-rgb: var(--ion-color-0099FF-contrast-rgb) !important;--ion-color-shade: var(--ion-color-0099FF-shade) !important;--ion-color-tint: var(--ion-color-0099FF-tint) !important;--ion-toolbar-background: var(--ion-color-0099FF) !important}::-webkit-scrollbar{width:3px}::-webkit-scrollbar-track{background:#f1f1f1}::-webkit-scrollbar-thumb{background:#373737}::-webkit-scrollbar-thumb:hover{background:#37373780}:host{animation:fadein 2s}:host .chart-panel{width:70px;height:70px}:host .circle-chart{width:60px;height:60px;background:var(--background-teal);border-radius:70px}:host .chart-fill-text{position:relative;top:-50px;left:30px;font-family:var(--theme-font);font-weight:600;font-size:17px}:host .chart-fill-text.fill-text-blue{color:var(--taskspur-blue)}:host .chart-fill-text.fill-text-red{color:var(--taskspur-red)}:host .chart-fill-text.fill-text-amber{color:var(--taskspur-amber)}:host .chart-fill-text.fill-text-green{color:var(--taskspur-teal)}:host .chart-fill-text.fill-text-grey{color:var(--bodyfont-light)}@keyframes fadein{0%{opacity:0}to{opacity:1}}\n"] }]
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }]; }, propDecorators: { goal: [{
type: Input
}], canvasRef: [{
type: ViewChild,
args: ['myChart']
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJpLWNoYXJ0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWctYXJpL3NyYy9saWIvY29tcG9uZW50cy9hcmktY2hhcnQvYXJpLWNoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWctYXJpL3NyYy9saWIvY29tcG9uZW50cy9hcmktY2hhcnQvYXJpLWNoYXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBR1QsU0FBUyxFQUNULEtBQUssR0FHTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7QUFFaEQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFBO0FBT2hDLE1BQU0sT0FBTyxpQkFBaUI7SUFjNUIsWUFBb0IsS0FBd0IsRUFBVSxJQUFZO1FBQTlDLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUhsRSxZQUFPLEdBQVEsRUFBRSxDQUFDO1FBQ2xCLGdCQUFXLEdBQVEsRUFBRSxDQUFDO1FBR3BCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxRQUFRLEtBQUssQ0FBQztJQUVkLGVBQWU7UUFDYixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ25CLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNSLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVPLFNBQVM7UUFDZixN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QUFDO2dCQUNKLE9BQU8sU0FBUyxDQUFDO2dCQUNqQixNQUFNO1lBQ1IsS0FBSyxDQUFDO2dCQUNKLE9BQU8sU0FBUyxDQUFDO2dCQUNqQixNQUFNO1lBQ1IsS0FBSyxDQUFDO2dCQUNKLE9BQU8sU0FBUyxDQUFDO2dCQUNqQixNQUFNO1lBQ1IsS0FBSyxDQUFDO2dCQUNKLE9BQU8sU0FBUyxDQUFDO2dCQUNqQixNQUFNO1lBQ1IsS0FBSyxDQUFDO2dCQUNKLE9BQU8sU0FBUyxDQUFDO2dCQUNqQixNQUFNO1lBQ1I7Z0JBQ0UsT0FBTyxTQUFTLENBQUM7U0FDcEI7SUFDSCxDQUFDOzs4R0ExTFUsaUJBQWlCO2tHQUFqQixpQkFBaUIscUxDbEI5QixxSEFFTTsyRkRnQk8saUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLGVBQWU7NkhBS2hCLElBQUk7c0JBQVosS0FBSztnQkFDZ0IsU0FBUztzQkFBOUIsU0FBUzt1QkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBPbkluaXQsXG4gIEVsZW1lbnRSZWYsXG4gIFZpZXdDaGlsZCxcbiAgSW5wdXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBOZ1pvbmUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2hhcnQsIHJlZ2lzdGVyYWJsZXMgfSBmcm9tICdjaGFydC5qcyc7XG5cbkNoYXJ0LnJlZ2lzdGVyKC4uLnJlZ2lzdGVyYWJsZXMpXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1hcmktY2hhcnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vYXJpLWNoYXJ0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXJpLWNoYXJ0LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEFyaUNoYXJ0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgZ29hbDogYW55O1xuICBAVmlld0NoaWxkKCdteUNoYXJ0JykgY2FudmFzUmVmOiBFbGVtZW50UmVmO1xuXG4gIGRvbmVUYXNrQ291bnQ6IG51bWJlcjtcbiAgY29tcGxldGlvblBjdDogbnVtYmVyO1xuICBoaWRlQ2hhcnQ6IGJvb2xlYW47XG5cbiAgY2FudmFzOiBhbnk7XG4gIGN0eDogYW55O1xuXG4gIG15Q2hhcnQ6IGFueSA9IFtdO1xuICBteUNoYXJ0RGF0YTogYW55ID0ge307XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgem9uZTogTmdab25lKSB7XG4gICAgdGhpcy5oaWRlQ2hhcnQgPSB0cnVlO1xuICAgIHRoaXMuY29tcGxldGlvblBjdCA9IDA7XG4gICAgdGhpcy5kb25lVGFza0NvdW50ID0gMDtcbiAgfVxuXG4gIG5nT25Jbml0KCkgeyB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5sb2FkQ2hhcnQoKTtcbiAgICB9LCA5MDApO1xuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkQ2hhcnQoKTogdm9pZCB7XG4gICAgY29uc3Qgdm0gPSB0aGlzO1xuICAgIGlmICh0aGlzLmNhbnZhc1JlZikge1xuICAgICAgdGhpcy5jdHggPSB0aGlzLmNhbnZhc1JlZi5uYXRpdmVFbGVtZW50LmdldENvbnRleHQoJzJkJyk7XG4gICAgICBjb25zdCBncmFkaWVudHMgPSBbXTtcbiAgICAgIC8vIGNvbnN0IGdyYWRpZW50ID0gdGhpcy5jdHguY3JlYXRlTGluZWFyR3JhZGllbnQoMCwgMCwgODAsIDgwKTtcbiAgICAgIGxldCBjb2xvckJhY2tncm91bmQgPSAnJztcbiAgICAgIGlmICh0aGlzLmdvYWwpIHtcbiAgICAgICAgaWYgKHRoaXMuZ29hbC5Hb2FsRGV0YWlscykge1xuICAgICAgICAgIHN3aXRjaCAodGhpcy5nb2FsLkdvYWxEZXRhaWxzLkFyaV9Db2xvcikge1xuICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAvLyBSZWRcbiAgICAgICAgICAgICAgY29sb3JCYWNrZ3JvdW5kID0gJyNGNjRENEInO1xuICAgICAgICAgICAgICBncmFkaWVudHMucHVzaChjb2xvckJhY2tncm91bmQpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgLy8gQmx1ZVxuICAgICAgICAgICAgICBjb2xvckJhY2tncm91bmQgPSAnIzFENTdBNCc7XG4gICAgICAgICAgICAgIGdyYWRpZW50cy5wdXNoKGNvbG9yQmFja2dyb3VuZCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAvLyBBbWJlclxuICAgICAgICAgICAgICBjb2xvckJhY2tncm91bmQgPSAnI0ZBQzQ0MSc7XG4gICAgICAgICAgICAgIGdyYWRpZW50cy5wdXNoKGNvbG9yQmFja2dyb3VuZCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAvLyBHcmVlblxuICAgICAgICAgICAgICBjb2xvckJhY2tncm91bmQgPSAnIzMwOURBNic7XG4gICAgICAgICAgICAgIGdyYWRpZW50cy5wdXNoKGNvbG9yQmFja2dyb3VuZCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAvLyBHcmF5XG4gICAgICAgICAgICAgIGNvbG9yQmFja2dyb3VuZCA9ICcjNkU3RTgxJztcbiAgICAgICAgICAgICAgZ3JhZGllbnRzLnB1c2goY29sb3JCYWNrZ3JvdW5kKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAvLyBsaWZlXG4gICAgICAgICAgICAgIGNvbG9yQmFja2dyb3VuZCA9ICcjMUQ1N0E0JztcbiAgICAgICAgICAgICAgZ3JhZGllbnRzLnB1c2goY29sb3JCYWNrZ3JvdW5kKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29sb3JCYWNrZ3JvdW5kID0gJyM2RTdFODEnO1xuICAgICAgICAgIGdyYWRpZW50cy5wdXNoKGNvbG9yQmFja2dyb3VuZCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5nb2FsLkdvYWxEZXRhaWxzKSB7XG4gICAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkb25lVGFza0NvdW50ID0gdGhpcy5nb2FsLkdvYWxEZXRhaWxzLlRhc2tzX0RvbmU7XG4gICAgICAgICAgICB0aGlzLmRvbmVUYXNrQ291bnQgPSBpc05hTihkb25lVGFza0NvdW50KSA/IDAgOiBkb25lVGFza0NvdW50O1xuXG4gICAgICAgICAgICBjb25zdCBjb21wbGV0aW9uUGN0ID0gdGhpcy5nb2FsLkdvYWxEZXRhaWxzLlBlcmNlbnRDb21wbGV0ZWQ7XG4gICAgICAgICAgICB0aGlzLmNvbXBsZXRpb25QY3QgPSBpc05hTihjb21wbGV0aW9uUGN0KSA/IDAgOiBjb21wbGV0aW9uUGN0O1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnN0IHJlbWFpbmluZ1BjdCA9IDEwMCAtIHRoaXMuY29tcGxldGlvblBjdDtcblxuICAgICAgICAgIGNvbnN0IGNvbmZpZzogYW55ID0ge1xuICAgICAgICAgICAgdHlwZTogJ2RvdWdobnV0JyxcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgZGF0YXNldHM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBkYXRhOiBbdGhpcy5jb21wbGV0aW9uUGN0LCByZW1haW5pbmdQY3RdLFxuICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBbZ3JhZGllbnRzWzBdLCBcIiNFNUU1RTVcIl0sXG4gICAgICAgICAgICAgICAgICBob3ZlckJhY2tncm91bmRDb2xvcjogZ3JhZGllbnRzLFxuICAgICAgICAgICAgICAgICAgYm9yZGVyV2lkdGg6IFswLCAwXSxcbiAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogW3RoaXMuY29tcGxldGlvblBjdCA+IDk5ID8gMCA6IDIwLCAwXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgZXZlbnRzOiBbXSxcbiAgICAgICAgICAgICAgcmVzcG9uc2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgY3V0b3V0OiAnNjUlJyxcbiAgICAgICAgICAgICAgdG9vbHRpcHM6IGZhbHNlLFxuICAgICAgICAgICAgICBsZWdlbmQ6IHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmYWxzZSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgYW5pbWF0aW9uOiB7XG4gICAgICAgICAgICAgICAgYW5pbWF0ZVNjYWxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAwLCAvLyBnZW5lcmFsIGFuaW1hdGlvbiB0aW1lXG4gICAgICAgICAgICAgICAgYW5pbWF0ZVJvdGF0ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgb25Db21wbGV0ZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgdm0uaGlkZUNoYXJ0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgcmVzcG9uc2l2ZUFuaW1hdGlvbkR1cmF0aW9uOiAwLCAvLyBhbmltYXRpb24gZHVyYXRpb24gYWZ0ZXIgYSByZXNpemVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwbHVnaW5zOiBbe1xuICAgICAgICAgICAgICBpZDogJ3RleHQnLFxuICAgICAgICAgICAgICBiZWZvcmVEcmF3OiAoY2hhcnQsIGEsIGIpID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgd2lkdGggPSBjaGFydC53aWR0aCxcbiAgICAgICAgICAgICAgICAgIGhlaWdodCA9IGNoYXJ0LmhlaWdodCxcbiAgICAgICAgICAgICAgICAgIGN0eCA9IGNoYXJ0LmN0eDtcblxuICAgICAgICAgICAgICAgIGN0eC5yZXN0b3JlKCk7XG4gICAgICAgICAgICAgICAgY3R4LmZvbnRTaXplID0gMTI7XG4gICAgICAgICAgICAgICAgY3R4LmZvbnRGYW1pbHkgPSBcIidIZWx2ZXRpY2EnLCBzYW5zLXNlcmlmXCI7XG4gICAgICAgICAgICAgICAgY3R4LnRleHRCYXNlbGluZSA9IFwidG9wXCI7XG4gICAgICAgICAgICAgICAgY3R4LmZpbGxTdHlsZSA9IHRoaXMuY29tcGxldGlvblBjdCA+IDAgPyBncmFkaWVudHNbMF0gOiBcIiM2RTdFODFcIjtcbiAgICAgICAgICAgICAgICBjdHguZm9udFdlaWdodCA9IDUwMDtcbiAgICAgICAgICAgICAgICB2YXIgdGV4dCA9IHRoaXMuY29tcGxldGlvblBjdCArICclJyxcbiAgICAgICAgICAgICAgICAgIHRleHRYID0gTWF0aC5yb3VuZCgod2lkdGggLSBjdHgubWVhc3VyZVRleHQodGV4dCkud2lkdGgpIC8gMiksXG4gICAgICAgICAgICAgICAgICB0ZXh0WSA9IGhlaWdodCAvIDI7XG5cbiAgICAgICAgICAgICAgICBjdHguZmlsbFRleHQodGV4dCwgdGV4dFgsIHRleHRZKTtcbiAgICAgICAgICAgICAgICBjdHguc2F2ZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XVxuICAgICAgICAgIH07XG4gICAgICAgICAgdGhpcy5teUNoYXJ0ID0gbmV3IENoYXJ0KHRoaXMuY3R4LCBjb25maWcpO1xuICAgICAgICAgIHRoaXMubXlDaGFydC51cGRhdGUoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldEdvYWxQZXJjZW50YWdlKGNhdGVnb3J5OiBudW1iZXIpIHtcbiAgICBzd2l0Y2ggKGNhdGVnb3J5KSB7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIHJldHVybiAnZmlsbC10ZXh0LXJlZCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICByZXR1cm4gJ2ZpbGwtdGV4dC1ibHVlJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM6XG4gICAgICAgIHJldHVybiAnZmlsbC10ZXh0LWFtYmVyJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDQ6XG4gICAgICAgIHJldHVybiAnZmlsbC10ZXh0LWdyZWVuJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDU6XG4gICAgICAgIHJldHVybiAnZmlsbC10ZXh0LWdyZXknO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmlsbC10ZXh0LWdyZXknO1xuICAgIH1cbiAgfVxuXG4gIGdldEdvYWxQZXJjZW50YWdlQ29sb3IoY2F0ZWdvcnk6IG51bWJlcikge1xuICAgIHN3aXRjaCAoY2F0ZWdvcnkpIHtcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgcmV0dXJuICcjRjY0RDRCJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI6XG4gICAgICAgIHJldHVybiAnIzFENTdBNCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzOlxuICAgICAgICByZXR1cm4gJyNGQUM0NDEnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNDpcbiAgICAgICAgcmV0dXJuICcjMzA5REE2JztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDU6XG4gICAgICAgIHJldHVybiAnIzZFN0U4MSc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICcjNkU3RTgxJztcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjaGFydC1wYW5lbFwiIFtoaWRkZW5dPVwiaGlkZUNoYXJ0XCI+XG4gIDxjYW52YXMgI215Q2hhcnQgaGVpZ2h0PVwiODBcIiB3aWR0aD1cIjgwXCI+PC9jYW52YXM+XG48L2Rpdj4iXX0=